Tank-System 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
  • Hallo :)
    ich habe auch heute mal wieder ein Problem. :/
    Ich habe das Problem, dass das Tank-System nicht funktioniert, die Fahrzeuge haben alle nur 1 Liter im Tank. Beim Tanken erhöht sich der Wert aber auch nicht.
    Ganz oben steht:
    new Gas[MAX_VEHICLES];
    new gGas[MAX_PLAYERS];
    new checkgastimer;
    new Refueling[MAX_PLAYERS];

    bei OnGamemodeInit:
    checkgastimer = SetTimer("CheckGas", RunOutTime, 1);
    for(new c=0;c<MAX_VEHICLES;c++)
    {
    Gas[c] = GetGasMax(GetVehicleModel(c));
    }


    stock GetGasMax(vehmodel)
    {
    if(vehmodel >= 400 && vehmodel <= 611)
    {
    return GasMax[(vehmodel-400)];
    }
    return 1;
    }


    public CheckGas()
    {
    new string[256];
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    new vehicle = GetPlayerVehicleID(i);
    //new Model = GetVehicleModel(GetPlayerVehicleID(i));
    new vid = GetPlayerVehicleID(i);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(Gas[vehicle] >= 1)
    {
    if(Gas[vehicle] <= 10) { PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0); }
    if(gGas[i] == 1) {
    format(string, sizeof(string), "~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Benzin:~w~ %d%",Gas[vehicle]);
    GameTextForPlayer(i,string,15500,3); }
    /*if(IsAPlane(vehicle) || IsABoat(vehicle) || Model == 462 || Model == 481)
    {
    Gas[vehicle]++;
    }*/
    if(vid != INVALID_VEHICLE_ID)
    {
    if(engine == VEHICLE_PARAMS_ON)
    {
    Gas[vehicle]--;
    }
    }
    }
    else
    {
    NoFuel[i] = 1;
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(i,"~w~~n~~n~~n~~n~~n~~n~~n~~n~Kein Benzin mehr~n~Gib /exit zum ausgestiegen ein",1500,5);
    }
    if(Gas[vehicle] > GetGasMax(GetVehicleModel(vehicle)))
    {
    Gas[vehicle] = GetGasMax(GetVehicleModel(vehicle));
    }
    }
    }
    }
    return 1;
    }


    public Fillup()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new VID;
    new FillUp;
    new string[256];
    VID = GetPlayerVehicleID(i);
    FillUp = GetGasMax(GetVehicleModel(VID)) - Gas[VID];
    if(Refueling[i] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+1)
    {
    Gas[VID] += FillUp;
    FillUp = FillUp*10;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: $%d)",FillUp,2);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, - FillUp);
    SBizzInfo[3][sbTill] += FillUp;
    ExtortionSBiz(3, FillUp);
    Refueling[i] = 0;
    UnfreezePlayer(i);
    }
    else
    {
    format(string,sizeof(string),"* Du hast nicht genug Geld zum Tanken, Kosten: $%d / Liter.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    }
    }
    }
    return 1;
    }


    Ich hoffe ihr wisst woran es liegt. :/
    Ich habe schon versucht die Variablen hinter Gas zu entfernen, hat nicht funktionert. Es gab Errors.

  • So ich hab mich nochmal auf der suche begeben und hab festgestellt, dass wenn der server gestartet wird ist der Tank auf 1 (anstatt auf den maximalen Tankwert) gesetzt
    bei OnGamemodeInit steht:

    for(new c=0;c<MAX_VEHICLES;c++)
    {
    Gas[c] = GetGasMax(GetVehicleModel(c));
    }

    und wenn ich dann Tanke wird der Wert aber auch nicht auf den maximalen Wert gesetzt, sondern bleibt bei 1.
    der Dialog von der Tanke:

    if(dialogid == DIALOG_TANKE)
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(!IsPlayerInAnyVehicle(playerid)) return ShowInfoDialog(playerid,"Tankstelle"," Du musst dazu in einem Fahrzeug sitzen!");
    SetTimer("Fillup",RefuelWait,0);
    Refueling[playerid] = 1;
    FreezePlayer(playerid);
    ShowInfoDialog(playerid,"GER | Tankstelle","{FFFFFF}Dein Fahrzeug wird betankt, bitte warten....");
    }
    if(listitem == 1)
    {
    new price = 20 * SPRITPREIS;
    format(string, sizeof(string), "* Du hast dir einen Benzinkanister für $%d gekauft (20 Liter). Du kannst ihn mit /auftanken verwenden",price);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    PlayerInfo[playerid][pFuel] += 20;
    GivePlayerMoney(playerid, - price);
    return 1;
    }
    if(listitem == 2)
    {
    new Float:health;
    GetPlayerHealth(playerid,health);
    SetPlayerHealth(playerid, health+15);
    GivePlayerMoney(playerid,-8);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Du hast dir erfolgreich einen Snack für $8 gekauft!");
    }
    }
    }


    wisst ihr woran es liegt? ;(

  • Beitrag von Svenny ()

    Dieser Beitrag wurde von shoxinat0r gelöscht ().