Tank zieht nicht ab

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
  • Hallo ich bin an einem Tanksystem dabei. Jetzt habe ich aber das problem wen ein spieler id 1 ist einsteigt und den Motor startet dan zieht er ab wie er es soll aber wen jetzt noch ein spieler mit Id 0 einsteigt bleibt er bei der Id 1 stehen und mcht nur id0 warum ?
    Hier der script


    public Tankcheck()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerVehicleSeat(i) == 0)
    {
    new string[50];
    new vehicle = GetPlayerVehicleID(i);
    new Cardatei[64];
    new car=GetVehicleModel(GetPlayerVehicleID(i));
    format(Cardatei,sizeof(Cardatei),"/cars/%i.txt",car);
    if (Motorcar[vehicle] == true)
    {
    if(tank[vehicle] >= 1)
    {
    tank[vehicle]--;
    format(string,sizeof(string),"%i/%i L",tank[vehicle],dini_Int(Cardatei,"tank"));
    TextDrawSetString(Tankanzahl[i],string);
    if(tank[vehicle] <= 10)
    {
    format(string,sizeof(string),"~r~%i~w~/%i L",tank[vehicle],dini_Int(Cardatei,"tank"));
    TextDrawSetString(Tankanzahl[i],string);
    }
    if(tank[vehicle] == 0)
    {
    Motorcar[vehicle] = false;
    GetVehicleParamsEx(vehicle,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicle,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(i,"~r~Tank leer",5000,3);
    TextDrawColor(Motor, 0xC50000FF);
    TextDrawShowForPlayer(i, Motor);
    }
    if(tank[vehicle] >= 1||tank[vehicle] <= 10)return PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0);
    }
    }
    }
    }
    }
    return 1;
    }

  • if(tank[vehicle] > 0)
    {
    tank[vehicle] --;
    }
    else
    {
    SendClientMessage(playerid,-1,"Dein Tank ist leer");
    }


    //E: Hast du MAX_PLAYERS evtl. neu defined?
    Zudem solltest du mal lieber mit else if
    abfragen ob der Tank leer ist.
    Wenn du es bis heute Abend noch nicht hast, kannste dich gerne per PN melden, schaue denn mal drüber.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • wie meinst du das


    #undef MAX_PLAYERS
    #define MAX_PLAYERS 2?


    Sagtest ja er zählt nur ID 0/1?


    Zudem sind deine If Abfragen ein wenig unübersichtlich gestaltet...


    http://wiki.sa-mp.com/wiki/Scripting_Basics_DE#If.2FElse


    Evtl. kann dir das ja weiterhelfen.


    //E1:if(tank[vehicle] >= 1)


    Wie gesagt, der Tank wird immer auf 1 stehen bleiben, wenn du es so machst.


    //E2:
    Mein letztes Wort dazu, schau dir mal ganz genau deine {} klammern an.


    //E3:
    Sorry aber, das ist ein globaler Timer, kann garnicht nur für einen Spieler gehen.
    http://wiki.sa-mp.com/wiki/SetTimerEx


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

    2 Mal editiert, zuletzt von BOMBER ()

  • ID 0 hat immernoch vorrang ist der Timer vllt Falsch ?
    SetTimer("Tankcheck", 10000, 1);


    Zitat

    Sagtest ja er zählt nur ID 0/1?


    ne wen id 1 drin sitzt geht ja alles sobald id 0 einsteigt und motor anmacht hört 1 auf zu zählen !? und anderrum zieht er trotdem nur bei Id0 ab

  • ID 0 hat immernoch vorrang ist der Timer vllt Falsch ?
    SetTimer("Tankcheck", 10000, 1);



    ne wen id 1 drin sitzt geht ja alles sobald id 0 einsteigt und motor anmacht hört 1 auf zu zählen !? und anderrum zieht er trotdem nur bei Id0 ab


    Sorry aber, das ist ein globaler Timer, kann garnicht nur für einen Spieler gehen.
    http://wiki.sa-mp.com/wiki/SetTimerEx


    Verwendung so:



    SetTimerEx("Tankcheck",10000,true,"i",playerid); //Timer für den Spieler setzen,wiederholen: ja,i für integer (playerid);
    public TankCheck(playerid)
    {
    //Codeblock...
    return 1;
    }


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • also kann ich jetzt im Public auch playerid nutzen ?oder soll ich es bei MAXPLAYERS belassen ?


    achja ne ich kann ja in OnGameModeInit kein playerid nutzen also soll ich den Timer in einer schleife setzten ?

  • achja ne ich kann ja in OnGameModeInit kein playerid nutzen also soll ich den Timer in einer schleife setzten ?


    Den Timer startet man normalerweiße bei OnPlayerEnterVehicle und beendet ihn dementspreched auch im OnPlayerExitVehicle...


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • also timer definieren bei enter vehicle erstellen und bei exit vehicle killen


    ich hatte erst vor das der Tank auch abzieht wen keiner drin sitz und der Motor an ist aber das ist ein bissen Fail gelaufen mal schauen vllt werde ich das den updaten wen ich es hin kriege :)