PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit trigger


invert
10.07.2015, 09:38
Moin.
Ich versuche ne mission zu teilen mittels Trigger.
Das problem daran ist aber je nachdem ob vorher ein bestimmter trigger ausgelöst wurde, soll die mission einen anderen verlauf nehmen.
Als bedingung trigger1 and trigger2; dann löst trigger 3
trigger 4 (der die mission in einer andere richtung lenkt) löst aber nur aus wenn trigger 1 ausgelöst und trigger 2 nicht ausgelöst.
wie scheibe ich das in den bedingungen das trigger 2 nicht ausgelöst haben darf.?

Buliwyf
10.07.2015, 12:50
Grandios... :D:daumen:

invert
10.07.2015, 13:09
sehr hilfreich^^

Buliwyf
10.07.2015, 14:20
Exakt so hilfreich wie Deine Angaben.

invert
10.07.2015, 14:41
das waren 2 posts umsonst. hättest du gleich schreiben können^^
also versuch ich es nochmal.

trigger1 löst aus wenn z.b. soldat a1 tod ist.
Bedingung: not alive a1

mit trigger2 ist eine einheit verknüpft, trigger2 löst nur aus wenn die einheit spawnt, chance 50%

Trigger 3 lässt die folgende aufgabe erscheinen: die einheit die mit trigger2 verknüpft ist zu zerstören: bedingungen: trigger1 and trigger2

trigger4 soll bei nicht erscheinen der einheit aus trigger 2 die mission beenden
was muss ich da in die bedingungen schreiben?

so verständlicher?

Buliwyf
10.07.2015, 15:36
Wesentlich verständlicher und somit waren nicht 2, sondern 4 Posts umsonst, wenn Du das gleich so reingeschrieben hättest. Ich meine, wie soll jemals jemand aus Deinem ersten Post erkennen, wo es hängt?! Gut, zugegebenermaßen hatte ich schon eine grobe Ahnung, aber das wäre mehr ins Blaue geraten gewesen. Das nächste Mal also besser gleich so viel Info und so genau wie möglich. Darfst nicht vergessen, dass niemand Deine Gedanken lesen kann und lediglich mit Deinem Niederergeschriebenen in ein Szenario geworfen wird...

So und nun btt...

Du hast einen Trigger (trigger4) der die Mission beendet, wenn die Einheit, die mit 50% Wahrscheinlichkeit spawnt, nicht auf der Map ist?! Verstehe ich das richtig? Ich deute das so, dass die Mission garnicht erst starten soll, wenn Einheit 2 nicht da ist... verwirrt mich grad ein wenig.. macht so keinen Sinn.. warum hat die dann überhaupt eine Wahrscheinlichkeit von 50%?

invert
10.07.2015, 15:55
du hast es richtig verstanden^^ es hat schon wenig sinn wenn die mission startet obwohl die gegner nicht da sind^^ nicht das wir uns falsch verstehen, es gibt vorher noch andere aufgaben. diese 50% wahrscheinlichkeit ist einfach nur deshalb: mal hat es eine nachfolgeaufgabe und mal nicht.

im grunde müsste die bedingung im trigger 4 lauten: trigger1 = true; trigger2 = false aber das funktioniert irgendwie nicht.

burns
10.07.2015, 16:59
-In Trigger 1 ne Aktivierung hinzufügen obj1 = true; (falls nicht bereits vorhanden).
-Bei der Gespawnten Einheit folgende init Einträge hinzufügen missionnichtbeenden = true; publicvariable "missionnichtbeenden";
-In Trigger 4 als Kondition obj1 && !missionnichtbeenden


Das am Ende mit !missionichtbeenden ist geraten, kann gut sein das das gar nicht klappt, hab sowas lange nicht mehr angeguckt. Könnte ebenfalls gut sein das meine Logik krumm ist :D

Drunken Officer
10.07.2015, 18:07
Warum die Varibale Public machen, wenn sie in der Init steht? Es lädt sie doch eh jeder, wenn er die Mission lädt.
Das Objekt ist mit der Variable auf der Karte, und somit kennt der Server und die Clienten diese Variable.

Ich glaube es hängt, da du die Bedingung eines Triggers an ein Objekt hängst, was eventuell nicht da ist.

Noch mal für Nachtschichtgeschädigte:
Trigger löst aus, wenn A1 tot ist
Trigger2 löst aus, wenn eine Einheit MisterX gespawnt ist
Trigger3 löst aus, erstellt eine Aufgabe
Trigger4 löst aus, wenn MisterX tot ist.

Ohne Trigger:

[] spawn
{
if (isServer) then
{
[west, "tsk1", ["Töten sie mit ihren Leuten den Anführer der Rebellen. Er befindet sich im markierten Lager","Kmd umpusten", "Kmd umpusten"],getpos a1,"ASSIGNED",1,true] call BIS_fnc_taskCreate;
//--- wartet bis a1 tot
waituntil {sleep 2; !alive a1};
["tsk1", "SUCCEEDED", true] call BIS_fnc_taskSetState;
//--- check, ob zweites Objekt da ist. Wenn nicht, Script beenden
if (isNull Misterx) exitWith {};
//--- erstellt zweiten Task
[west, "tsk2", ["MisterX töten","MisterX umpusten", "MisterX umpusten"],[],"ASSIGNED",1,true] call BIS_fnc_taskCreate;
//-- wartet bis MisterX tot ist
waituntil {sleep 2; !alive MisterX};
["tsk2", "SUCCEEDED", true] call BIS_fnc_taskSetState;
//---- beendet die Mission
sleep 4;
[{"Geschaft" call BIS_fnc_endMission;},"BIS_fnc_spawn",true,true] call BIS_fnc_MP;
};
}

invert
10.07.2015, 18:21
@ Drunken Officer fast richtig. Trigger 4 löst nach aufgabe 1 aus und beendet die mission falls misterx nicht gespawnt ist.
not alive misterx ist in dem fall erst trigger5^^

aber mit ner kleinen änderung auf meine bedürfnisse funktioniert das script.

danke^^

Drunken Officer
10.07.2015, 19:39
[] spawn
{
if (isServer) then
{
[west, "tsk1", ["Töten sie mit ihren Leuten den Anführer der Rebellen. Er befindet sich im markierten Lager","Kmd umpusten", "Kmd umpusten"],getpos a1,"ASSIGNED",1,true] call BIS_fnc_taskCreate;
//--- wartet bis a1 tot
waituntil {sleep 2; !alive a1};
["tsk1", "SUCCEEDED", true] call BIS_fnc_taskSetState;
//--- check, ob zweites Objekt da ist. Wenn nicht, Script beenden
if (isNull Misterx) exitWith { [{"Geschaft" call BIS_fnc_endMission;},"BIS_fnc_spawn",true,true] call BIS_fnc_MP;};
//--- erstellt zweiten Task
[west, "tsk2", ["MisterX töten","MisterX umpusten", "MisterX umpusten"],[],"ASSIGNED",1,true] call BIS_fnc_taskCreate;
//-- wartet bis MisterX tot ist
waituntil {sleep 2; !alive MisterX};
["tsk2", "SUCCEEDED", true] call BIS_fnc_taskSetState;
//---- beendet die Mission
sleep 4;
[{"Geschaft" call BIS_fnc_endMission;},"BIS_fnc_spawn",true,true] call BIS_fnc_MP;
};

invert
10.07.2015, 19:52
für die änderung hats bei mir gerade noch so gereicht^^ trotzdem danke