World of Gothic Archiv > NWN-Hilfe
Variable setzen ohne Gespräch
Seite 1 von 1  1 
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);
Seite 1 von 1  1