AHK

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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?


    Quellcode

    1. SetTimer, TEST, 100
    2. TEST:
    3. if(IsPlayerDriver() == 1 || GetVehicleModelId() == 428)
    4. {
    5. SendChat("/startjob")
    6. }
    7. return
  • PHP-Quellcode

    1. global startjob := true
    2. SetTimer, TEST, 100
    3. TEST:
    4. if (startjob && IsPlayerDriver() == 1 && GetVehicleModelId() == 428)
    5. {
    6. startjob := false
    7. SendChat("/startjob")
    8. }
    9. else if (IsPlayerDriver() == 0)
    10. startjob := true
    11. return
    Alles anzeigen
    So in der Art, je nachdem wann du die Variable dann resetten willst.
  • Quellcode

    1. global jobStarted := false
    2. SetTimer, Test, 100
    3. Test:
    4. {
    5. if (IsPlayerInAnyVehicle()) {
    6. if (IsPlayerDriver()) {
    7. if (GetVehicleModelId() == 428) {
    8. if (!jobStarted) {
    9. SendChat("/startjob")
    10. jobStarted := true
    11. }
    12. } else {
    13. if (jobStarted) {
    14. jobStarted := false
    15. }
    16. }
    17. } else {
    18. if (jobStarted) {
    19. jobStarted := false
    20. }
    21. }
    22. } else {
    23. if (jobStarted) {
    24. jobStarted := false
    25. }
    26. }
    27. }
    28. return
    Alles anzeigen
  • So unnötig verschachtelt braucht man es nicht.

    eLias_ schrieb:

    Quellcode

    1. global jobStarted := false
    2. SetTimer, Test, 100
    3. Test:
    4. {
    5. if (IsPlayerInAnyVehicle()) {
    6. if (IsPlayerDriver()) {
    7. if (GetVehicleModelId() == 428) {
    8. if (!jobStarted) {
    9. SendChat("/startjob")
    10. jobStarted := true
    11. }
    12. } else {
    13. if (jobStarted) {
    14. jobStarted := false
    15. }
    16. }
    17. } else {
    18. if (jobStarted) {
    19. jobStarted := false
    20. }
    21. }
    22. } else {
    23. if (jobStarted) {
    24. jobStarted := false
    25. }
    26. }
    27. }
    28. return
    Alles anzeigen
    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.
  • Madd92 schrieb:

    PHP-Quellcode

    1. global startjob := true
    2. SetTimer, TEST, 100
    3. TEST:
    4. if (startjob && IsPlayerDriver() == 1 && GetVehicleModelId() == 428)
    5. {
    6. startjob := false
    7. SendChat("/startjob")
    8. }
    9. else if (IsPlayerDriver() == 0)
    10. startjob := true
    11. return
    Alles anzeigen
    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:

    PHP-Quellcode

    1. global startjob := true
    2. SetTimer, TEST, 500
    3. TEST:
    4. if (startjob && GetVehicleModelId() == 428)
    5. {
    6. startjob := false
    7. SendChat("/startjob")
    8. }
    9. else if (!startjob && IsPlayerDriver() == 0)
    10. startjob := true
    11. return
    Alles anzeigen