World of Gothic Archiv > Editing
Wld_SendTrigger & Schleife
Seite 1 von 1  1 
01.04.2004, 21:58 #1
Black Daemon
Beiträge: 218
Wld_SendTrigger & Schleife
Habe mir mal direkt im Wiki den Trick zur Schleife angeschaut und wollte das dann natürlich auch direkt ausprobieren, versteht sich ja von selbst. Doch habe ich irgendwie das gefühl, dass "Wld_SendTrigger"
den Scripttrigger oCTriggerScript nicht triggert. Ich habe noch nichtmal mehr ne if abfrage im Script. Der Scripttrigger selbst geht auch, da er bei berührung das Script startet, aber leider nur ein mal.
Hier mal das Script
code\:

FUNC VOID TESTSCHLEIFE ()
{
Wld_InsertNpc (Mod_9999_Mud,"TF4");
B_GiveXP (500);
PrintScreen ("WOW du hast einen Superstunt geschafft!!!!!!!", -1,_YPOS_MESSAGE_GIVEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_GIVEN);
Wld_SendTrigger ("SCHLEIFE");
};


Schleife ist der Vobname des oCTriggerScript. Ich sehen keinen Grund warum es nicht funktionieren soll. Ich habe auch alle Sachen zum Trigger, die im Wiki noch standen beachtet. Also wie gesagt, mir ist das Suspekt aber vielleicht wisst ihr weiter.
02.04.2004, 15:52 #2
Cool Moe Di
Beiträge: 120

Wie hast du die Schleife gestartet?
02.04.2004, 18:57 #3
Black Daemon
Beiträge: 218

Einmal hab ich durch OoTouch einfach den ScriptTrigger gestartet, dann führt er das Script aus und sollte dann eigentlich wieder triggern.
Das andere mal habe ich es in init Function in der Startup gesetzt, zuerst wollte ich dort mit Wld_SendTrigger ("SCHLEIFE"); starten, dann habe ich einfach
TESTSCHLEIFE(); starten lassen, aber nichts hat eine Schlöeife erzeugt.
Da es aber Wld_SendTrigger ("SCHLEIFE"); gar nicht gestartet hat denke ich das es daran liegt. Aber warum, dass raff ich nicht.

------------------------------------------------------
Nur mal Theoretische Frage.
Wäre es nicht auch möglich an Anfang des Schleifenscripts
Wld_SetObjectRoutine (00, 24, Schleife, 0);
und am Ende
Wld_SetObjectRoutine (00, 24, Schleife, 1);
Einzutragen, wodurch der oCTriggerscript wodurch dann das ganze auch gestartet wird. Aber wahrscheinlcih ist es doch Quatsch, da damit nur die generelle funktionalität des Vobs auf enabeld oder disabeld gesetzt wird. Ach ich sollte lieber in Bett gehen sonst verwirre ich mich noch selber .....
03.04.2004, 15:42 #4
Cool Moe Di
Beiträge: 120

Du hast auch an beim Trigger daran gedacht, dass der Funktionsnahme groß geschrieben werden muss?
ciao
Moe
03.04.2004, 17:06 #5
Black Daemon
Beiträge: 218

Ja habe es extra per Copy & Paste gemacht. Und wenn ich ihn durch berührung auslöse gehts ja auch.
Hier mal die Einstellungen des Triggers.
vobname: SCHLEIFE
visual:
showVisual: False
cdStatic: False
cdDyn: True
staticVob: False
dynShadow: DS_None
visual:
ai:
triggertarget:

reacttoontrigger: True
reacttoontouch: True
reacttoonDamage: False
respondtoObjekt: False
respondtoPC: True
respondtoNPC: False
startenabled: True
respondToVobName:
numCanBeActivated: -1
retriggerWaitSec: 0
damageThreshold: 0

fireDelaySec: 0
sendUntrigger: True
scriptFunc: TESTSCHLEIFE


Tjo denke nicht, dass daran was falsch ist aber ich hoffe es ;).
Da mit OnTouch ist zum testen, ob der das Script auslösen würde.
04.04.2004, 00:29 #6
Cool Moe Di
Beiträge: 120

stell mal
staticVob: true
und
respondtoObjekt: True
respondtoPC: True
respondtoNPC: True
ein
04.04.2004, 08:28 #7
Harri
Beiträge: 214

probiers mal damit
fireDelaySec: 1

der trigger triggert sonst schneller als das script reagiert.
04.04.2004, 09:05 #8
Black Daemon
Beiträge: 218

:D :D :D :D :D
Es geht, endlich dann werd ich jetzt mal ein Ermüdungsystem nachbauen ;)
Echt das war echt gute Hilfe. Danke nochmal für dieses Erfolgserlebnis :)
04.04.2004, 14:45 #9
Black Daemon
Beiträge: 218

Will ja nicht nerven, aber kann es sein, dass
quote:
var int x;
func void TestSchleife ()
{
PrintScreen (x, -1, x,"font_old_10_white.tga",_TIME_MESSAGE_XPGAINED);
x++;
if (x <= 10) //Schleifenbedingung formulieren, kann nach Bedarf auch wo anders in der Funktion stehen
{
Wld_SendTrigger ("SCHLEIFE"); //Funktion erneut aufrufen lassen => Schleife entsteht
};
};

gar nicht funktionieren kann? X ist hier ja als integer definiert, und soweit ich den Fehler beim parsen richtig verstanden habe kann man nen integer nicht printen lassen, sondern der müsste zuerst in einen String umgewandelt werden.

Mein vorschlag wäre
quote:
var int x;
var string msg;
func void TestSchleife ()
{
msg = INTTOSTRING(x);
PrintScreen (msg, -1, x,"font_old_10_white.tga",_TIME_MESSAGE_XPGAINED);
x++;
if (x <= 10) //Schleifenbedingung formulieren, kann nach Bedarf auch wo anders in der Funktion stehen
{
Wld_SendTrigger ("SCHLEIFE"); //Funktion erneut aufrufen lassen => Schleife entsteht
};
};

04.04.2004, 15:09 #10
Cool Moe Di
Beiträge: 120

Hast recht...ich update das Wiki :)
04.04.2004, 17:29 #11
Black Daemon
Beiträge: 218

hattest vergessen msg zu deklarieren war mal so frei und habs geadded
Seite 1 von 1  1