oCTriggerScript
1. TimeLoop
Wir beginnen mit einer ganz gewöhnlichen Zeitschleife. Wozu dient eine Zeitschleife?:
In der Zeitschleife kann zum Beispiel abgefragt werden, ob der Spieler ein bestimmtes Item besitzt, da die Zeitschleife in wiederkehrenden Abständen, (Intervall einstellbar) durchliest, was in diesem Script alles eingetragen ist oder abgefragt werden soll.
Kenntnisse, wie man im Spacer z.B Vobs in die Welt setzt. →
Vobs erzeugen.
-
wären von Vorteil!
1.1 Einsetzen TriggerScript
1.2 Einstellen TriggerScript
Dieser ocTriggerScript benötigt weder ein Visual, noch Kollision. Also belassen wir nachfolgende 4 Einträge unverändert
visual:(ohne Eintag)
cdStatic:FALSE (Kollision gegen statische Vobs)
cdDyn:FALSE (Kollision gegen dynamische Vobs)
staticVob:FALSE (ob das Objekt in die Lichtberechnung einbezogen wird)
Hier das komplette Objektfenster mit den Einstellungen für einen funktionierenden TimeLoop
1.3 TimeLoop Test
Wld_SendTrigger("TS_TIMELOOP_05");
func void MY_TIMELOOP() // Scriptfunc des oCTriggerScript
{
PRINT("TEST SCHLEIFE");
Wld_SendTrigger("TS_TIMELOOP_05"); // Am Ende des TimeLoop ruft die
}; // Zeitschleife sich selbst wieder auf
2. Trigger Touch
Wie schon der Name sagt, ist das der oCTriggerScript, der berührt werden muss,
-
oder ein NPC/PC muss den oCTriggerScript berühren.
var int aufruf;
func void MY_TIMELOOP() // Scriptfunc des oCTriggerScript
{
if (Npc_GetDistToWP (PC_Hero, "WP_FALLE")< 800) // kleiner 8m
&& (aufruf == 0)
{
Wld_SendTrigger("NAME");
aufruf = 1;
};
Wld_SendTrigger("TS_TIMELOOP_05");// Am Ende des TimeLoop ruft die
}; // Zeitschleife sich selbst wieder auf
2.6 Da ich weiss, dass mein Flur 4,8m breit ist gebe ich für „X“ 480 ein. Ihr müsst halt probieren, bis dass die BoundingBox des oCTriggerScript die Breite eures Raumes einnimmt. Für die Höhe „Y“ habe ich 150cm gewählt, damit der Hero nicht darüber springen kann und die Tiefe „Z“ 50cm. Wenn die Boundingbox zu dünn ist, löst sie unter Umständen nicht aus.
Jetzt gibt es nur noch das Problem, dass an solch einer TriggerBox Pfeile und Bolzen abprallen. Ein Problem das wir lösen könnten, wenn wir die Triggerbox breitflächig anlegen, so dass man ebenfalls nicht drüber springen kann und extrem flach, ca 20 cm, was dem Bogenschiessen ja keinen Abbruch tut.
… oder aber ihr strebt eine Lösung mit Ikarus an → http://forum.worldofplayers.de/forum/threads/1299679-Skriptpaket-Ikarus-4
2.10 Fassen wir mal zusammen. Damit ein oCTriggerScript reagiert, wenn der Hero in die BoundingBox läuft, die BoundinBox berührt oder von einer sich bewegenden BoundingBox berührt wird, müssen folgende Voraussetzungen erfüllt sein: Das sind jetzt nur die Einstellungen die verändert werden müssen
VobName:NAME_TRIGGER
cdDyn:TRUE
respondToPC:TRUE (so belassen)
respondToNPC:FALSE (es sei denn, der Trigger soll auch auf alle anderen NPC reagieren)
numCanBeActivated:alles ausser Null
fireDelaySec:Verzögerung kann man einstellen wenn man das benötigt
scriptFunc:Um ein Script aufzurufen, wo dann reguliert wird, was geschehen soll.
triggerTarget: könnt ihr nutzen, wenn ihr im Spacer direkt auf ein anderes Objekt, wie z.B. Mover, TriggerList, MoverControler usw. verlinken wollt. Ihr erhaltet dann im Spacer immer eine„Blaue Linie“ zwischen den verlinkten Objekten.
2.A Mobiler Schadenstrigger
Für unsere Pendelbeilfalle → Mover Level 2 benötigen wir jetzt noch die Auslösung, damit ein NPC/PC, der von der Beilklinge berührt wird einen Schaden erleidet.
Wir klicken im Objektfenster auf „Create“ und wählen dort den Eintrag „oCTriggerScript“
Wir klicken auf eine leere Stelle im Spacer Hauptfenster (linke Maustaste)
Anschliessend auf unsere Beilklinge mit der rechten Maustaste und wir ehalten das Vobfenster mit der Option einen oCTriggerScript als Child of Mover einzusetzen.
Wir editieren die BoundingBox des Triggers und vollziehen die Schritte 2.2 → 2.5, oberhalb beschrieben nach
und stellen jetzt die Boundingbox des Schadentriggers von der Grösse her so ein, dass die BoundingBox die Beilklinge umschliesst.
Das wiederholen wir jetzt mit den 3 anderen Beilklingen.
Wir stellen den Schadenstrigger so ein, dass er Berührung reagiert (siehe oben 2.10)
Beispiel scriptFunc:DAMAGE_D
Und jetzt benötigen wir noch ein Script um den Schaden zu erzeugen: Beispiel Schaden Hero
func void damage_d()
{
if (Npc_IsPlayer(PC_Hero))
{
PRINT("AUA!"); //TESTPRINT
Npc_ChangeAttribute(hero, ATR_HITPOINTS, -50);
};
};
Dieses Script ebenfalls noch 3x schreiben, für die anderen Klingen.
Dazu könnt ihr noch den Sound eintragen wenn ihr wollt, dass das Opfer schreit bei einem Treffer (DUMMY_WOUND)
und/oder Blut spritzen lassen….. wie es euch gefällt.
2016/02/22(dlz)