World of Gothic Archiv
> NWN-Hilfe Variable setzen ohne Gespräch |
|
04.08.2002, 11:54 | #1 | ||
Spheres Beiträge: 4 |
Variable setzen ohne Gespräch
Hallo Nach einem Tag vergebens probieren, gebe ich auf. Kann mir jemand sagen ob ich eine bezw. mehrere Variable(n) ausserhalb von einem Gespräch setzen kann? Mein Problem ist folgendes: Nachdem der PC ein Feuer gelegt hat, rennen die Wachen zum Feuer um es zu löschen. Sobald das Feuer gelegt ist, sollte eine Variable gesetzt werden, damit ich diese bei einem Gespräch mit den Wachen abfragen kann um zu verhindern, dass mich diese freundlich grüssen, wärend sie dabei sind das Feuer zu löschen. Ebenso sollte ich diese Variable auch in einer anderen Locatin noch zur verfügung haben, damit ich dort ein anderes WP Ziel setzen kann. Folgenden Befehl habe ich schon probiert, funktioniert aber nicht. Vermute dass diesr nur in einem Gespräch funktioniert? SetLocalInt(GetNextPC(), "iFireQuest", 1); |
||
04.08.2002, 12:30 | #2 | ||
GuradonHellsing Beiträge: 232 |
wie legt der pc das feuer? |
||
04.08.2002, 17:03 | #3 | ||
Spheres Beiträge: 4 |
so lege ich das Feuer...
Bei onUse des Objects (z.B. Kiste oder Heuballen) einfügen: void main() { object oArea = GetArea(OBJECT_SELF); object oPC = GetLastUsedBy(); string sTorchTag = "NW_IT_TORCH001"; if (GetLocalInt(GetPCSpeaker(), "iSoldierQuest") == 0) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, SpeakString("Wie unvorsichtig einen Heuballen in einem Raum mit Schwarzpulver zu lagern!", TALKVOLUME_TALK)); if (GetTag(GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC)) == sTorchTag || GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC)) == sTorchTag ) { // Animation Feuer entfachen AssignCommand(oPC,ClearAllActions()); AssignCommand(oPC,ActionMoveToObject(OBJECT_SELF,FALSE,0.5)); AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW)); // Rauch effect eSmoke = EffectVisualEffect(VFX_FNF_SMOKE_PUFF); DelayCommand(0.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,eSmoke,OBJECT_SELF)); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, SpeakString("Jetzt aber nichts wie weg!", TALKVOLUME_TALK)); // Erstes Feuer entzuenden DelayCommand(1.0,ExecuteScript("sdtarmor_f01", oArea)); // Zweites und Drittes Feuer entzuenden DelayCommand(2.0,ExecuteScript("sdtarmor_f02", oArea)); // Viertes Feuer entzuenden DelayCommand(4.0,ExecuteScript("sdtarmor_f03", oArea)); // Fuenftes Feuer entzuenden DelayCommand(5.0,ExecuteScript("sdtarmor_f04", oArea)); // Sechstes Feuer entzuenden und Explosion DelayCommand(6.0,ExecuteScript("sdtarmor_f05", oArea)); // Explosionsspuren DelayCommand(8.5,ExecuteScript("sdtarmor_f06", oArea)); // Wachen gehen loeschen DelayCommand(10.0,ExecuteScript("sdtarmor_f07", oArea)); } } } Beispiel für Script sdtarmor_f01: void main() { location FireLoc = GetLocation (GetObjectByTag ("Feuer01")); CreateObject (OBJECT_TYPE_PLACEABLE, "plc_flamemedium", FireLoc); } Dadurch wird am Platz wo das Object in diesem Falle die Kiste steht ein Feuer-Object erstellt. Man kann so verzögert z.B nach einer Explosion auch Brandspuren positionieren. Irgendwo im Forum gibt es auch noch ein Script mit einem explodierenden Pulverfass, das man gut kombinieren kann. Um Feuer, Brandspuren oder Schutt an einem freien Platz zu positionieren, muss man einfach einen Wegpunkt anstelle eines Objectes als Position dafür benutzen. Ich hoffe das ganze ist einigermassen verständlich... Und wer kann mir jetzt MEINE Frage beantworten? |
||
04.08.2002, 17:25 | #4 | ||
GuradonHellsing Beiträge: 232 |
unter onperception (wo ich annehme das gespräch drin ist) ne if anweisung die abfragt ob die var auf 1 steht, die du vor her bei onuse dem pc zuweist. SetLocalInt(GetLastUsedBy(), "iFireQuest", 1); |
||
|