Array Problem

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
  • Ich versuche zurzeit das Scripten zu lernen und habe einen Fehler, denn ich nicht lösen kann.
    Fehler:
    error 033: array must be indexed (veriable "PKW")


    Code:

    //Fahrzeuge
    new PKW[9];



    public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    if(vehicleid == PKW)
    {
    if(GetPVarInt(playerid,"kleinbetrieb")==0)
    {
    SendClientMessage(playerid,COLOR_ROT,"Du kannst dieses Fahrzeug nicht fahren, da du nicht mehr beim Kleinbetrieb arbeitest!");
    }
    }
    return 1;
    }


    Danke schonmal im Vorraus! :)

  • versuchs mal so:
    new PKW[9];



    public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    for(new i=0; i<sizeof(PKW); i++){
    if(vehicleid == PKW[i])
    {
    if(GetPVarInt(playerid,"kleinbetrieb")==0)
    {
    SendClientMessage(playerid,COLOR_ROT,"Du kannst dieses Fahrzeug nicht fahren, da du nicht mehr beim Kleinbetrieb arbeitest!");
    }
    }
    }
    return 1;
    }

    //Edit: Habe gerade kb das ganze einzurücken ^^

  • Jetzt müsstest Du ihm nurnoch erklären, was genau er nicht beachtet hat, damit er diesen Fehler nicht nochmal begeht.

  • Funktioniert soweit. Über eine Erklärung des ganzen würde ich mich auch freuen, damit ich mir das einprägen kann :)
    Ich habe nun das ganze erweitert und abgefragt, ob der Spieler als Fahrer einsteigt. Ebenso wird der Spieler aus dem Auto geworfen.


    Jedoch funktioniert das ganze nicht, wenn ich if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER) einfüge.
    Liegt es an der falschen Position?


    Source:
    public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    for(new i=0; i<sizeof(PKW); i++){
    if(vehicleid == PKW)
    {
    if(GetPVarInt(playerid,"kleinbetrieb")==0)
    {
    SendClientMessage(playerid,COLOR_ROT,"Du kannst dieses Fahrzeug nicht fahren, da du nicht mehr beim Kleinbetrieb arbeitest!");
    TogglePlayerControllable(playerid,1);
    RemovePlayerFromVehicle(playerid);
    }
    }
    }
    }
    return 1;
    }

  • Nein, am falschen Callback.
    Der Callback "OnPlayerEnterVehicle" wird dann aufgerufen, wenn der Spieler die "F/Enter" Taste drückt um ein Auto zu betreten.
    Also sogar während er sich zu Fuß noch auf den Weg zum Auto macht.


    Deshalb kannst Du damit relativ schlecht arbeiten und den Spieler auch aus keinem Auto entfernen, wenn er noch nichtmal drinnen sitzt.
    Benutze dafür den Callback "OnPlayerStateChange"


    Auf dieser Seite eine kleine Erklärung (In Englisch):
    http://wiki.sa-mp.com/wiki/OnPlayerStateChange