Beiträge von Jeffry

    1.) Ist FillUp ein Float? Wenn nicht, mach es dazu.


    2.)
    ForAllPlayers(i){if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i))


    3.)
    self_mysql_get_field("AH_Meter", data); Kilometer[Carlist[playerid][h][h]] = floatstr(data);
    Falls Kilometer ein Float ist.

    Öh :wacko:


    Debugge beides mal so, dann sollte auf jeden Fall was kommen:
    if(newkeys & KEY_LOOK_BEHIND)
    {
    pHoldingTime[playerid] = gettime();
    new car = GetPlayerVehicleID(playerid);
    if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,error,"Du bist in keinem Fahrzeug (oder kein Fahrer)!");
    if(TanktGerade[car]) return SendClientMessage(playerid,error,"Du bist bereits dabei dein Auto aufzutanken!");
    else if(Motor[car] == true) return SendClientMessage(playerid,error,"Du musst vor dem Tanken den Motor ausschalten!");
    for(new g;g<MAX_GAS;g++)
    {
    if(IsPlayerInRangeOfPoint(playerid,Gasstation[g][Gasradius], Gasstation[g][Gasx],Gasstation[g][Gasy],Gasstation[g][Gasz]))
    {
    if(GetVehicleTankArt(GetVehicleModel(car)) == 0)
    {
    new ZuTanken = 100-GetVehicleMaxTank(GetVehicleModel(car));
    new preis = ZuTanken * BENZINPREIS;
    if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
    printf("Tanken für %d gestartet", playerid);
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    dsl = 1;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    }
    else if(GetVehicleTankArt(GetVehicleModel(car)) == 1)
    {
    new ZuTanken = 100-GetVehicleMaxTank(GetVehicleModel(car));
    new preis = ZuTanken * DIESELPREIS;
    if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
    printf("Tanken für %d gestartet", playerid);
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    bnz = 1;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    }
    return 1;
    }
    }
    return SendClientMessage(playerid,error,"Du bist an keiner Tankstelle!");
    }
    if(RELEASED(KEY_LOOK_BEHIND))
    {
    new string[32];
    format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
    SendClientMessage(playerid, -1, string);
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }


    Und:
    public Auftanken(playerid)
    {
    printf("Auftanken: %d", playerid);
    new car = GetPlayerVehicleID(playerid);
    new m = GetVehicleModel(car);
    Tank[car]+=1;
    printf("Auftanken: %d mit car %d: %d Liter", playerid, car, Tank[car]);
    if(Tank[car] >= GetVehicleMaxTank(m))
    {
    printf("voll");
    TanktGerade[car] = false;
    Tank[car] = GetVehicleMaxTank(m);
    if(GetVehicleTankArt(m) == 1)
    {
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt BENZIN.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    else if(GetVehicleTankArt(m) == 0)
    {
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt DIESEL.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    }
    return 1;
    }

    Schreibe den Timer so:
    public Auftanken(playerid)
    {
    new car = GetPlayerVehicleID(playerid);
    new m = GetVehicleModel(car);
    Tank[car]+=1;
    printf("Auftanken: %d mit car %d: %d Liter", playerid, car, Tank[car]);
    if(Tank[car] >= GetVehicleMaxTank(m))
    {
    printf("voll");
    TanktGerade[car] = false;
    Tank[car] = GetVehicleMaxTank(m);
    if(GetVehicleTankArt(m) == 1)
    {
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt BENZIN.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    else if(GetVehicleTankArt(m) == 0)
    {
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde vollgetankt DIESEL.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    }
    return 1;
    }
    Dann schau nach was im Server Log steht, wenn du die Taste hältst.

    Du hast mit den Klammern nicht aufgepasst, die RELEASED Abfrage stand innerhalb der anderen Key Abfrage.
    if(newkeys & KEY_LOOK_BEHIND)
    {
    pHoldingTime[playerid] = gettime();
    new car = GetPlayerVehicleID(playerid);
    if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,error,"Du bist in keinem Fahrzeug (oder kein Fahrer)!");
    if(TanktGerade[car]) return SendClientMessage(playerid,error,"Du bist bereits dabei dein Auto aufzutanken!");
    else if(Motor[car] == true) return SendClientMessage(playerid,error,"Du musst vor dem Tanken den Motor ausschalten!");
    for(new g;g<MAX_GAS;g++)
    {
    if(IsPlayerInRangeOfPoint(playerid,Gasstation[g][Gasradius], Gasstation[g][Gasx],Gasstation[g][Gasy],Gasstation[g][Gasz]))
    {
    if(GetVehicleTankArt(GetVehicleModel(car)) == 0)
    {
    new ZuTanken = 100-GetVehicleMaxTank(car);
    new preis = ZuTanken * BENZINPREIS;
    if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    dsl = 1;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    }
    else if(GetVehicleTankArt(GetVehicleModel(car)) == 1)
    {
    new ZuTanken = 100-GetVehicleMaxTank(car);
    new preis = ZuTanken * DIESELPREIS;
    if(GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,error,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid, info, "Tankvorgang wird gestartet...");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    bnz = 1;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    }
    return 1;
    }
    }
    return SendClientMessage(playerid,error,"Du bist an keiner Tankstelle!");
    }
    if(RELEASED(KEY_LOOK_BEHIND))
    {
    new string[32];
    format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
    SendClientMessage(playerid, -1, string);
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }


    Zwecks dem, dass er nur an der einen Tanke geht, das habe ich dir auch gleich behoben.
    Der Code ist an manchen Stellen doppelt, ich habe das mal so gelassen, da ich nicht weiß, was du noch vor hast (zum Beispiel das SetCameraBehindPlayer ist ja in beiden Abfragen, man könnte es auch einfach nach den beiden einmal hin schreiben, anstatt in beide).

    Du hast den Server Log vergessen ...


    Lese doch bitte meine Posts richtig und mache alles was ich darin sage, und nicht immer nur ein drittel, dann geht es auch schneller und ich muss nicht 100 mal nachfragen.




    EDIT:
    Laut Denis_Denovski hat er den Fehler behoben, es funktioniert nun.
    @Denis_Denovski: Kannst du den Thread bitte auf erledigt setzen? Danke :)

    Zeigt er es dir an, wenn du es so schreibst? Sollte es eigentlich:
    if(newkeys & KEY_YES)
    {
    pHoldingTime[playerid] = gettime();
    }
    if(RELEASED(KEY_YES))
    {
    new string[32];
    format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
    SendClientMessage(playerid, -1, string);
    }


    Einfügen kannst du das dann, indem du das ganze Zeug von deinem Tanken Code Teil den du gepostet hast bei obiger ersten if-Abfrage einfügst (KEY_YES) und bei RELEASED einfach den Timer killst.

    Dann wird der Timer doch ausgeführt, naja, schmeiß den Timer raus, den brauchen wir nicht mehr.
    SetTimer("SetMaxTank", 3000, false);
    und
    forward SetMaxTank();
    public SetMaxTank()
    {
    for (new v=0; v< MAX_VEHICLES; v++)
    {
    GetVehicleParamsEx(v,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(v,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[v] = false;
    Tank[v] = GetVehicleMaxTank(GetVehicleModel(v));
    }
    return 0;
    }


    Kannst du löschen. Dann sollte es aber wirklich klappen.