12.11.2013, 12:01 | #1 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Trigger Aktion deaktivieren
Hi zusammen,
ich rufe in einem Trigger ein Script auf welches ausgeführt wird sobalt ein Spieler in den Bereich rein läuft. Was ich jetzt möchte ist einfach das, wenn der Spieler aus dem Bereich raus läuft, oder ebn drin erschossen wird, dass das Script abgebrochen wird. Ich habe es schon über die Einstellung "Zeitüberschreitung" (10sek.) im Trigger selbst Probiert. Dann unterbricht zwar der Trigger wenn ich raus laufe. Nur dann ist es ja so, dass das Script erst in den eingestellten (10sek.) ausgeführt wird. Ich möchte aber das Script sofort ausführen lassen sobalt ich den Trigger betrette, aber ebn auch stoppen sobalt ich raus bin. Was müsste ich bei Deakt. im Trigger reinschreiben? Oder besser noch, wie kann ich ein Trigger aus einem Script heraus deaktivieren? |
12.11.2013, 15:18 | #2 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Hi JeeperCreeper,
hast du die Möglichkeit im Script bzw. während dessen das Script läuft eine Variable abzufragen? Wenn ja, könntest du ja bei Deaktivierung eine Variable definieren, die dann bei Zutreffen dein Script beendet. Genausogut könntest du ja im Script selbst fragen, ob der Spieler noch im Trigger ist oder noch lebt. Wenn ja läuft es weiter, bei nein exitwith ... Das Ganze dürfte aber nur im MP schwierig werden, da sich ja theoretisch mehrere Spieler im selben Trigger befinden können. |
12.11.2013, 17:27 | #3 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Vielleicht erklär ich grob was ich vor habe.
Ich möchte bis auf 5m an ein Objekt (auto, laptop usw... egal was) ran laufen und dann soll es ein paar Sek. (10 z.B.) dauern bis dann etwas passiert (marker färbt sich, oder auto spawnt ect...). Das alles kann ich mit einem einzigen Trigger und der Einstellung Zeitüberschreitung tun. Auch wenn ich den Trigger verlasse und wieder rein laufe funzt alles super. Problem ist aber, ich möchte diese 10 Sek. die es ebn dauert bis dann die eigentliche Aktion passiert angezeigt bekommen. Und dafür habe ich halt gedacht baue ich mir nen Script das mir anzeigt, mit ladebalken, Prozentzahlen egal was, wie lange die 10 Sek. noch dauern. So, das Problem ist ja aber jetzt, wenn ich in den Trigger laufe und das Script (ladebalken) startet, ich aber dann sterbe oder aus dem Trigger wieder raus laufe, läuft das Script (ladebalken) ja immer noch weiter. Und ich möchte das jetzt beides irgendwie mit einander synchronisieren, nur wie? |
12.11.2013, 19:02 | #4 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Ja eben, du kannst doch im Script jede Sekunde überprüfen ob die Variable, die der Trigger beim Deaktivieren auf true setzt falsch oder wahr ist.
Wenn du noch drin bist oder tot bist dann ist die Variable false und das Script zählt die nächste Sekunde in der while-Schleife runter. Bist du rausgelaufen wird die Variable auf true gesetzt und das Script bricht ab und das Herunterzählen des Counters endet ... LG Geändert von JanIs (12.11.2013 um 19:04 Uhr). |
12.11.2013, 20:06 | #6 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
JanIs ich danke Dir
Ich hab da schon an mehrere Trigger gedacht und bla bla, keine Ahnung wieso ich immer so kompliziert denke. Macht jetzt genau das was es soll. Aber wofür setzt man jetzt die Variable noch in der init.sqf auf false? Das geschieht doch alles im Trigger. |
12.11.2013, 20:22 | #7 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Stimmt, ist in diesem Falle für die Katz weil sie vor Ausführen des Scriptes keine Rolle spielt und direkt im Trigger noch vor dem Start des Scriptes auf true gesetzt wird.
Allerdings habe ich mir das bei "wichtigen" Variablen, grade im MP so angewöhnt, da sonst oftmals eine Fehlermeldung kommt weil die Variable sozusagen unbekannt ist wenn deren Status zuvor nicht definiert wurde. |
12.11.2013, 20:46 | #8 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Ja da hast du Recht, das sollte ich mir auch mal lieber angewöhnen
Dank Dir nochmal für Denkanstoß durch das Beispiel, da hätte ich sonst wieder mehrere Tage dran gesessen und mir alles mögliche ausgedacht nur nicht dass es so einfach sein kann. |
18.11.2013, 00:53 | #10 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Habe wieder das selbe Problem und verstehe es einfach nicht. Mit deinem Beispiel klappt es, aber sobalt ich es ohne diesen Counter verwenden will klappt es einfach nicht.
bei Akt. "im_Trigger = true" bei Deak. "im_Trigger = false" der Code Code:
while {im_Trigger} do {hint "123"; sleep 3; hint "456"; sleep 3; hint "789"; sleep 1; hint ""}; if (!im_Trigger) then {hint ""; exit}; Wie muss der Code aussehen damit der hint mir nur angezeigt wird bis zum schluss, solange ich im Trigger-Bereich bin? Das Script soll abbrechen sobalt ich den Bereich verlasse. Ist das so überhaupt möglich? |
18.11.2013, 08:09 | #11 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Hi du,
das ist aber schon nachvollziehbar, weil, sobald du reinläufst ja die ganze Codezeile auf true gesetzt und dementsprechend abgearbeitet wird. Und abarbeiten heisst in diesem Fall, dass das Script die ganzen 7 Sekunden durchläuft und dementsprechend ja auch die vier Hint-Meldungen ausgibt. Unabhängig davon ob du zwischenzeitlich den Trigger verlässt oder nicht. Im Falle meines Beispieles wird das Zutreffen ja jede Sekunde abgefragt und dementsprechend entweder abgebrochen oder das Zutreffen durch herunterzählen um eine Sekunde "bestätigt". Wenn du es so wie oben angeführt haben möchtest, dann müsstest du wohl mit einer zusätzlichen if-Schleife innerhalb der while-Anweisung arbeiten. Solltest du überhaupt nicht zurecht kommen, dann melde dich nochmal und ich werde versuchen, dir das Script entsprechend anzupassen. Habe gerade kein ArmA zur Verfügung. BTW, warum willst du überhaupt im 3-Sekundentakt die Meldung ausgeben? In dem Falle bleibt immer das Problem, dass die Schleife für ganze 3 Sekunden durchläuft in der du zwischenzeitlich den Trigger ja schon zweimal verlassen hättest können? Greetz Jan |
18.11.2013, 08:28 | #12 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Warum ich das so mache? Ich hab mir halt eine HUD einblendung erstellt, heißt mehrere Bilder die nacheinander angezeigt werden sollen. Ist wie der Counter nur als Grafik halt und das soll natürlich dann unterbrochen werden sobalt man rausläuft, stirbt. Das kann man bestimmt auch eleganter lösen, aber das Thema " Dialoge erstellen" ist nochmal ein komplexeres Thema als das Scripting selber.
Als simples Beispiel vielleicht nochmal Code:
while {im_Trigger} do {cutRsc ["JCBackground","PLAIN"]; titleRsc ["JC0","PLAIN"]; sleep 5; titleRsc ["JC5","PLAIN"]; sleep 5; titleRsc ["JC10","PLAIN"]; sleep 5; titleRsc ["JC15","PLAIN"]; sleep 5; titleRsc ["JC20","PLAIN"]; sleep 5;}; if (!im_Trigger) then {exit}; Edit: Das es in dem Beispiel ständig von vorne anfangen würde ist mir bewußt, soll nur nen Beispiel sein. Geändert von JeeperCreeper (18.11.2013 um 08:30 Uhr). |
18.11.2013, 08:59 | #13 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Schick mir doch wenn möglich einfach eine Beispielmap mit diesen Einblendungen und ich versuche dir das so hinzuflicken wie du es gerne hättest.
So würden wir nicht aneinander vorbei "arbeiten" ... Greetz Jan janis.11@gmx.net |
18.11.2013, 13:57 | #15 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Sag mal, wie kriegst du das eigentlich immer so schnell hin? Bist du Programmierer oder so? Ich hab allein für den HUD jetzt fast ne Woche gebraucht.
Ich habs mir schon gedacht, dass Du es mit dem Counter umsetzen würdest. Geniale Idee! Vielen Dank für die ganze Mühe die du hier aufbringst um mir zu helfen |
18.11.2013, 15:34 | #18 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
LOL,
nun, bin weder Programmierer noch sonst in der Richtung tätig. Ich versuche einfach irgendwie logisch an die Sache ranzugehen. Wenn es nicht zu sehr ins Detail geht, komme ich meist irgendwie zurecht. Ich habe wieder den Counter gewählt weil das Script ja im Prinzip jede Sekunde den Status braucht, andernfalls das Ganze ja ziemlich durcheinander kommen könnte da in einem Zeitfenster von 5 Sekunden ja einiges passieren kann. Bestimmt gibts für deinen Zweck auch andere Scriptmöglichkeiten, vielleicht sogar vie raffiniertere. Ich kann aber nicht mehr als in obigem Beispiel. Wie auch immer funktionieren tut es. Wenn du noch was brauchst, weisst ja wie du mich an die Strippe kriegst |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Trigger aktivieren | mo0504 | Technische Fragen & Probleme | 6 | 21.09.2013 20:56 |
Trigger aktivieren | mo0504 | Editing | 1 | 21.09.2013 20:08 |
Deaktivierte Trigger wieder aktivieren? | TheR0cK | Editing & Scripting | 3 | 15.08.2013 17:07 |
Aktion - Waffe & Munition geben | MagicStyle | Editing & Scripting | 3 | 13.08.2013 17:11 |
Soldaten in einem Trigger von einer anderen Gruppe eliminieren | M4X1 | Editing & Scripting | 2 | 15.06.2011 15:35 |