Ich will das der Script nur 1x ausgeführt wird wenn meine beiden If anfragen übereinstimmen
aber leider schickt er mir das durchgehen ab bis ich wieder aussteige. Gibt es da eine Möglichkeit
das es nur 1x ausgeführt wird?
AHK
- iBase
- Geschlossen
- Erledigt
-
-
Timer ausstellen oder eine Variable setzen.
-
Timer ausstellen oder eine Variable setzen.
wenn ich den timer ausstelle macht er das aber nicht wenn ich in einem Auto sitze oder?
Und wie meinst du das eine Variable erstellen?
-
PHP
Alles anzeigenglobal startjob := true SetTimer, TEST, 100 TEST: if (startjob && IsPlayerDriver() == 1 && GetVehicleModelId() == 428) { startjob := false SendChat("/startjob") } else if (IsPlayerDriver() == 0) startjob := true return
So in der Art, je nachdem wann du die Variable dann resetten willst.
-
Code
Alles anzeigenglobal jobStarted := false SetTimer, Test, 100 Test: { if (IsPlayerInAnyVehicle()) { if (IsPlayerDriver()) { if (GetVehicleModelId() == 428) { if (!jobStarted) { SendChat("/startjob") jobStarted := true } } else { if (jobStarted) { jobStarted := false } } } else { if (jobStarted) { jobStarted := false } } } else { if (jobStarted) { jobStarted := false } } } return
-
So unnötig verschachtelt braucht man es nicht.
Code
Alles anzeigenglobal jobStarted := false SetTimer, Test, 100 Test: { if (IsPlayerInAnyVehicle()) { if (IsPlayerDriver()) { if (GetVehicleModelId() == 428) { if (!jobStarted) { SendChat("/startjob") jobStarted := true } } else { if (jobStarted) { jobStarted := false } } } else { if (jobStarted) { jobStarted := false } } } else { if (jobStarted) { jobStarted := false } } } return
Du hast 3 mal den gleichen Codeblock. Zudem braucht man IsPlayerInAnyVehicle nicht, da IsPlayerDriver das schon impliziert. Und If-Abfragen unterstützen nicht umsonst Expressions, in denen man den &&-Operator nutzen kann.
-
PHP
Alles anzeigenglobal startjob := true SetTimer, TEST, 100 TEST: if (startjob && IsPlayerDriver() == 1 && GetVehicleModelId() == 428) { startjob := false SendChat("/startjob") } else if (IsPlayerDriver() == 0) startjob := true return
So in der Art, je nachdem wann du die Variable dann resetten willst.
Sorry für die späte Antwort. Aber es funktioniert wunderbar jetzt verstehe ich das auch mit der Variable. Vielen Dank
-
Mir ist gerade noch aufgefallen, dass man bei der ersten Bedingung IsPlayerDriver auch nicht braucht, da GetVehicleModelId sowieso 0 zurückgibt, wenn man in keinem Fahrzeug sitzt.
Bei der zweiten Bedingung könnte man noch !startjob mit einfügen, damit IsPlayerDriver nicht unnötig häufig aufgerufen wird. Zudem würde ich ebenfalls aus Performance Gründen den Timer eher auf 500 setzen oder ansonsten 300 wenn einem das zu lange dauert: -
Okay danke schön für deine Hilfe!
Werde es gleich nach Feierabend ausprobieren. -
breadfish.de
Hat das Thema geschlossen.