-
Kurzzeitiger Spielerwechsel?
Hallo Community,
ich habe folgende Frage:
Ist es möglich, dass der Spieler für eine bestimmte Zeit einen anderen Charakter spielen kann und dann später wieder in den Körper des Helden zurückkehrt?
Bsp:
Man spielt den Helden und taucht dann in den Körper von Lord Hagen ein und erledigt eine Quest. Nach beendigung der Quest taucht der Spieler wieder in den Körper des Helden ein.
Mfg
-
Du kannst das Aussehen zwischenzeitlich verändern, dürfte einfacher sein, als tatsächlich die Instanz zu wechseln.
-
Mh.. daran habe ich noch garnicht gedacht. Problem dabei dürfte aber sein, dass die Atribute und Ausrüstungsgegenstände sich nicht verändern lassen, ohne einen Verlust zu haben.
-
Icebox hatte mal ein Bild von seinem Feature präsentiert, bei dem man "aus dem Körper des Heros" in dessen Geist schlüpfen kann und dann als Geist des Heros rum laufen kann. Vielleicht kannst du ihn mal fragen,wie er das geregelt hat.
-
Mit _TRIA_Copy(int npc1Ptr, int npc2Ptr) in der Trialoge.d von LeGo solltest du die Visuals von zwei NPCs nahtlos vertauschen können.
-
Du kannst mit Ikarus auch das 'O' im Marvin-Mode (= Kontrolle des Fokus-Npc) scriptseitig einbauen.
Das sieht ungefähr so aus:
Code:
const int oCNpc__SetAsPlayer = 7612064; //0x007426A0
func void oCNpc_SetAsPlayer(var int ptr) {
CALL__thiscall(ptr, oCNpc__SetAsPlayer);
};
Wenn du nun möchtest dass Lord Hagen zum Spieler wird brauchst du nur folgendes aufzurufen:
oCNpc_SetAsPlayer(_@(PAL_200_Hagen));
Ob nun das Tauschen des Visuals oder der direkte Tausch sinnvoller ist weiß ich nicht.
MfG Gottfried
-
Mit per 'o' übernommen NPCs kann man z.B. keine Mobs benutzen (wenn ich mich nicht irre), da die Instanz nicht stimmt (vermutlich). Es hat auf jedenfall ungewollte Nebeneffekte.
-
Zitat von Lehona
Mit per 'o' übernommen NPCs kann man z.B. keine Mobs benutzen (wenn ich mich nicht irre), da die Instanz nicht stimmt (vermutlich). Es hat auf jedenfall ungewollte Nebeneffekte.
Nur die "Dialoge" mit den Mobs funktionieren nicht. Man muss
Code:
var C_NPC her; her = Hlp_GetNpc(PC_Hero);
if (Hlp_GetINSTANCEID(self)==Hlp_GetINSTANCEID(her))
durch ersetzen. Vielleicht wird es noch andere Kleinigkeiten geben, aber die kann man dann überarbeiten, wenn man Probleme bekommt.
-
Gabs bei "o" nicht das Problem, dass der Held, wenn er ausserhalb der aktiven AI-Zone ist, gelöscht wird? (Oder wird er nur woanders hinteleportiert?)
-
Zitat von mainclain
Gabs bei "o" nicht das Problem, dass der Held, wenn er ausserhalb der aktiven AI-Zone ist, gelöscht wird? (Oder wird er nur woanders hinteleportiert?)
Das gibt es bei jedem NPC, nur beim Held ist der Unterschied, dass er keinen Waypoint hat und irgendwie verschwindet. Das kann man wahrscheinlich einfach beheben, indem man einen einfachen TA oder ZS hinzufügt.
-
Ich Würde dieses Problem auch gern gelöst haben!
Meine Idee dazu war es, einfach einen versteckten Spielstand vom Spiel anlegen zu lassen. und gleichzeitig einen anderen versteckten Spielstand zu laden. Und nach Abhandlung der mini-Mod in der Mod wieder zurück zum angelegten versteckten spielstand (nur für story erzähl Elemente geignet nicht allgemeingültig).
Wenn das mit Ikarus machbar wäre müsste mann sich dann um keine der vielen logischen Probleme kümmern müssen die entstünden wenn man beispielsweise einen zeitlich versetzten Story-Strang in ein und der selben Zen spielen lassen würde.
Wie lässt man aus dem Skript heraus also mehr als einen versteckten Spielstand anlegen und wie lässt man davon wiederum gezielt einen laden?
Lg by Lmoere
"aber eins ist sicher, alles wird gut,"
---------------------------------Ich, auf der Esmeralda nahe Irdorath
Geändert von Lmoere (02.09.2013 um 20:53 Uhr)
-
Wenn es wirklich darum geht, etwas zu einer anderen Zeit spielen zu lassen, dann gibt es doch keinen Grund, das versteckt zu handhaben. Da würde ich lieber einfach einen Weltenwechsel machen. Dann hat man auch keine Schwierigkeiten mit Speicherständen, etc.
Es lässt sich ja sogar anstellen, dass man in eine "andere" zen kommt, in der nicht nur das Weltenmesh, sondern auch Truheninhalte identisch sind.
-
Ok das ist irgendwie auch naheliegend
Also wären dann die Schritte:
1. skriptseitiges Weltengewechsel (müsste ich irgendwo finden wie das geht)
2. Visual des Helden umwechseln (eigentlich kein Problem)
3. Ausrüstung um equippen (das ist schwierig)
4. inventar blockieren oder zeitweilig austauschen (habe ich bisher nichts zu finden können)
Das sind vier Schritte statt einem, wobei ich bei Nummer 3. und 4. ziemlich schwarz sehe wenn das ganze ohne
Schwierigkeiten ablaufen soll...
Lg by Lmoere
"aber eins ist sicher, alles wird gut,"
---------------------------------Ich, auf der Esmeralda nahe Irdorath
-
Im Forum dürfte eigentlich ein Script rumfliegen, um das Inventar des Spielers z.B. in eine Truhe zu legen (ein anderer NPC funktioniert natürlich genauso gut). Dann musst du halt danach ein neues Inventar erzeugen, je nachdem was der "neue" Held halt haben sollte...
-
Hab folgende Funktionen auf meiner Platte gefunden, die dir dabei weiterhelfen können.
Code:
///////////////////////////////////////////////////////////////////////
// B_TransverNPCTOMOBInventory.d
///////////////////////////////////////////////////////////////////////
FUNC void B_TransverNPCTOMOBInventory(var C_Npc npc, var String mob)
{
if (Npc_GetInvItemBySlot (npc, 0, 0) > 0)
{
var int itemid;
itemid = Hlp_GetInstanceID (item);
Mob_CreateItems (mob, itemid, NPC_HasItems (npc, itemid));
NPC_RemoveInvItems (npc, itemid, NPC_HasItems (npc, itemid));
B_TransverNPCTOMOBInventory(npc,mob);
};
};
Code:
FUNC void B_TransverInventory(var C_Npc victm, var C_Npc plunder)
{
if (Npc_GetInvItemBySlot (victm, 0, 0) > 0)
{
var int itemid;
itemid = Hlp_GetInstanceID (item);
CreateInvItems (plunder, itemid, NPC_HasItems (victm, itemid));
NPC_RemoveInvItems (victm, itemid, NPC_HasItems (victm, itemid));
B_TransverInventory(victm,plunder);
};
};
-
Hast du das Skript eigentlich in den Bin getan? Ist verdammt praktisch!
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|