Warum bekomme ich die Nachricht 4 mal?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • So sieht der Code aus:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    for(new i = 0; i<sizeof(PolizeiFahrzeuge); i++)
    if(!isPlayerInFrakt(playerid,1))
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    }
    return 1;
    }


    Ich bekomme 4 mal Du bist kein Polizist aber warum

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    for(new i = 0; i<sizeof(PolizeiFahrzeuge); i++)
    if(!isPlayerInFrakt(i,1))
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(i,GRAU,"Du bist kein Polizist");
    }
    return 1;
    }


  • Schmarrrn!
    Hau das SendClientMessage aus der Schleife raus

  • Hau das SendClientMessage aus der Schleife raus


    Besser wäre einfach so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER) {
    for(new i = 0; i<sizeof(PolizeiFahrzeuge); i++) {
    if(GetPlayerVehicleID(playerid) != PolizeiFahrzeuge[i]) continue;
    if(isPlayerInFrakt(i,1)) break;
    RemovePlayerFromVehicle(playerid),SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    break;
    }
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Die Antwort ist doch ganz klar... :)
    die for schleife ist unnötig, mach das ganze mit 'playerid' und rücke die Klammern :)


    lg

  • Oh Sorry, habe mich verlesen :)


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i = 0; i<sizeof(PolizeiFahrzeuge); i++)
    {
    if(vehicleid == i && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    if(isPlayerInFrakt(playerid,1))continue;
    else {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    }
    }
    return 1;
    }
    [/pwn]


    Versuchs so :)


    //Edit bearbeitet.


    Versuchs bei OnPlayerEnterVehicle , bei onplayerstatechange kann man die vehicleid nicht aut. rausfinden, außer mit noch einer abfrage

    Einmal editiert, zuletzt von [IRP]AyKut ()


  • Danke Funktionier aber für die Verständnis was bedeutet das && GetPlayerVehicleID(playerid) == i)


    beziehungweise warum muss ich das nochmal abfragen?

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • Es wird überprüft ob der Spieler nicht in der Fraktion ( 1 ) ist UND (&&) ob die Fahrzeug ID gleich einem Fahrzeug aus dem PolizeitFahrzeuge Array ist.



    Edit: Du soltest mach der SendClientMessage ein break; setzen damit die schleife nicht unnötig weiterläuft wenn das Fahrzeug ID bereits gefunden wurde

  • Es wird überprüft ob der Spieler nicht in der Fraktion ( 1 ) ist UND (&&) ob die Fahrzeug ID gleich einem Fahrzeug aus dem PolizeitFahrzeuge Array ist


    Okay aber das wird doch schon einmal abgefragt warum nochmal?


    //EDIT achso okay also ich kann mit break; eine Schleife stoppen

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • Beispielsweise PolizeiFahrzeuge[0] hat den wert 425 da wird überprüft ob das aktuelle fahrzeug die fahrzeug id 425 hat wenn dem so ist und der spieler nicht in der fraktion ist wird er rausgeworfen

  • Beispielsweise PolizeiFahrzeuge[0] hat den wert 425 da wird überprüft ob das aktuelle fahrzeug die fahrzeug id 425 hat wenn dem so ist und der spieler nicht in der fraktion ist wird er rausgeworfen


    Achso okay dankeschön :love:

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • Das Break ist meiner Meinung nach unnötig, weil er automatisch vom System vom Fahrzeug 'entfernt' wird, dann hat er ja den PLAYER_STATE_ONFOOT und die Nachricht sollte nur einmal gesendet werden.
    Wenn er es dann nocheinmal versucht bekommt er die Nachricht nocheinmal angezeigt und er wird vom Fahrzeug wieder entfernt.