OnPlayerStateChange

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
  • Hey,
    ich habe in OnPlayerStateChange eine Abfrage drin, ob ein Spieler in einem Mähdrescher sitzt (Job: Bauer). Dies funktioniert auch. Nun will ich das selbe mit Trucker machen. Leider funktioniert das aber dann nicht mehr.
    Mein Code:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    if(newstate==PLAYER_STATE_DRIVER)
    {
    for(new i=0;i<sizeof(Bauernhof);i++)
    {
    for(new x=0;x<sizeof(Trucker);x++)
    {
    if(GetVehicleModel(vehicleid)==Bauernhof[i])
    {
    if(GetPVarInt(playerid,"Job")==1)
    {
    CheckpointTimer[playerid] = SetTimerEx("TimerCheckpoint",1000,true,"i",playerid);
    SendClientMessage(playerid,Color_Orange,"Du sitzt nun in einem Mähdrescher! Fahre die Checkpoints ab, um Geld zu verdienen!");
    for(new y=0;y<MAX_PLAYERS;y++)TextDrawShowForPlayer(y,BauerCheckpoint[y]);
    SetPlayerRandomCheckpoints(playerid);
    }
    }
    else if(GetVehicleModel(vehicleid)==Trucker[x])
    {
    if(GetPVarInt(playerid,"Job")==3)
    {
    CheckpointTimer[playerid] = SetTimerEx("TimerCheckpoint",1000,true,"i",playerid);
    SendClientMessage(playerid,Color_Orange,"Du sitzt nun in einem Truck! Fahre die Checkpoints ab, um Geld zu verdienen!");
    SendClientMessage(playerid,Color_Orange,"Hole aber zuerst einen Anhänger am Checkpoint ab!");
    for(new y=0;y<MAX_PLAYERS;y++)TextDrawShowForPlayer(y,BauerCheckpoint[y]);
    SetPlayerCheckpoint(playerid,-540.3525,-482.1971,25.5178,4);
    }
    }
    }
    }
    }
    }



    "Trucker[x]" und "Bauernhof[i]" sind Fahrzeuge, die oben im Script definiert sind.


    Ich hoffe, ihr könnt mir helfen.


    Mfg Maksimo007^^

  • Warum baust du die Schleifen ineinander, wenn es zwei Paar Schuhe sind?

  • stimmt, hätte es dann so:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    if(newstate==PLAYER_STATE_DRIVER)
    {
    for(new i=0;i<sizeof(Bauernhof);i++)
    {
    if(GetVehicleModel(vehicleid)==Bauernhof[i])
    {
    if(GetPVarInt(playerid,"Job")==1)
    {
    CheckpointTimer[playerid] = SetTimerEx("TimerCheckpoint",1000,true,"i",playerid);
    SendClientMessage(playerid,Color_Orange,"Du sitzt nun in einem Mähdrescher! Fahre die Checkpoints ab, um Geld zu verdienen!");
    for(new y=0;y<MAX_PLAYERS;y++)TextDrawShowForPlayer(y,BauerCheckpoint[y]);
    SetPlayerRandomCheckpoints(playerid);
    }
    }
    }
    for(new x=0;x<sizeof(Trucker);x++)
    {
    if(GetVehicleModel(vehicleid)==Trucker[x])
    {
    if(GetPVarInt(playerid,"Job")==3)
    {
    CheckpointTimer[playerid] = SetTimerEx("TimerCheckpoint",1000,true,"i",playerid);
    SendClientMessage(playerid,Color_Orange,"Du sitzt nun in einem Truck! Fahre die Checkpoints ab, um Geld zu verdienen!");
    SendClientMessage(playerid,Color_Orange,"Hole aber zuerst einen Anhänger am Checkpoint ab!");
    for(new y=0;y<MAX_PLAYERS;y++)TextDrawShowForPlayer(y,BauerCheckpoint[y]);
    SetPlayerCheckpoint(playerid,-540.3525,-482.1971,25.5178,4);
    }
    }
    }
    }
    }



    Geht leider aber immer noch nicht.
    Vielleicht hier mal die Definition von "Trucker[x]":
    Trucker[0] = AddStaticVehicleEx(514, -472.5311, -558.2252, 26.1908, 70.1471, 1, 1, -1);
    Trucker[1] = AddStaticVehicleEx(514, -472.4021, -549.5810, 25.9378, 67.3382, 1, 1, -1);
    Trucker[2] = AddStaticVehicleEx(514, -472.1642, -541.7617, 26.1160, 66.4862, 1, 1, -1);
    Trucker[3] = AddStaticVehicleEx(514, -472.0919, -533.6116, 26.2163, 67.4641, 1, 1, -1);
    Trucker[4] = AddStaticVehicleEx(514, -471.6837, -526.1721, 25.9727, 66.9705, 1, 1, -1);
    Trucker[5] = AddStaticVehicleEx(514, -471.5477, -518.5737, 25.9297, 66.0082, 1, 1, -1);
    Trucker[6] = AddStaticVehicleEx(514, -471.3982, -511.3883, 25.7935, 64.1563, 1, 1, -1);



    So hier. Was ist daran noch falsch?
    //Edit: Jetzt geht auch der Job Bauer nicht mehr.


    Mfg Maksimo007 :)

  • Wieso denn GetVehicleModel()? im Array Trucker[] stehen doch die VehicleIDs (= Rückgabewerte von AddStaticVehicleEx()). Demnach solltest du GetPlayerVehicleID() verwenden.