Verschiedene Tankarten Scripten

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
  • Okay, Test hat funktionier.


    Spoiler anzeigen
    if(newkeys & KEY_LOOK_BEHIND)
    {
    pHoldingTime[playerid] = gettime();
    for(new g;g<MAX_GAS;g++) {
    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!");
    else if(!IsPlayerInRangeOfPoint(playerid,Gasstation[g][Gasradius], Gasstation[g][Gasx],Gasstation[g][Gasy],Gasstation[g][Gasz])) return SendClientMessage(playerid,error,"Du bist an keiner Tankstelle!"); {
    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); }
    {
    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); }
    }
    }
    }
    if(RELEASED(KEY_LOOK_BEHIND))
    {
    new string[32];
    format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
    SendClientMessage(playerid, -1, string);
    KillTimer(tanktimer[playerid]);
    }
    }


    Nur hört er jetzt nicht mehr auf zu Tanken :D?
    also hat es irgendwie noch kein Unterschied..


    Mein Auftank Timer:


    Spoiler anzeigen
    public Auftanken(playerid)
    {
    new car = GetPlayerVehicleID(playerid);
    new m = GetVehicleModel(car);
    Tank[car]+=1;
    if(Tank[car] >= GetVehicleMaxTank(m))
    {
    TanktGerade[car] = false;
    Tank[car] = GetVehicleMaxTank(m);
    if(bnz == 1) {
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde %i€ vollgetankt BENZIN.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    else if(dsl == 1) {
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde %i€ vollgetankt DIESEL.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    }
    return 1;
    }


    Wenn ich von Auftanken den KillTimer weg nehme hört er irgendwie nicht auf zu Spammen "Dein Fahrzeug wurde vollgetankt"


    Achja und irgendwie kann ich nur an der ersten Tankstelle Tanken, bei den anderen sagt er mir ich bin nicht an der Tanke..


    Spoiler anzeigen
    new Gasstation[MAX_GAS][GasEnum] = {

    Spoiler anzeigen
    {20.0, -2026.5264,156.2846,29.0391, "SF BHF"},
    {20.0, 1944.3260,-1772.9254,13.3906, "Test"},
    {20.0, -90.5515,-1169.4578,2.4079, "Test"},
    {20.0, -1609.7958,-2718.2048,48.5391, "Test"},
    {20.0, -2029.4968,156.4366,28.9498, "Test"},
    {20.0, -2408.7590,976.0934,45.4175, "Test"},
    {20.0, -2243.9629,-2560.6477,31.8841, "Test"},
    {20.0, -1676.6323,414.0262,6.9484, "Test"},
    {20.0, 2202.2349,2474.3494,10.5258, "Test"},
    {20.0, 614.9333,1689.7418,6.6968, "Test"},
    {20.0, -1328.8250,2677.2173,49.7665, "Test"},
    {20.0, 70.3882,1218.6783,18.5165, "Test"},
    {20.0, 2113.7390,920.1079,10.5255, "Test"},
    {20.0, -1327.7218,2678.8723,50.0625, "Test"},
    {20.0, 2146.6143,2748.4758,10.3852, "Test"},
    {20.0, 2639.0022,1108.0353,10.3852, "Test"},
    {20.0, 1598.2035,2198.6448,10.3856, "Test"},
    {20.0, 1004.0070,-939.3102,42.1797, "Test"}
    };



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • 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).

  • Hi Jeffry, danke für deine Hilfe.


    Leider geht es noch nicht richtig, es wird angezeigt "Dein fahrzeug wird getankt"
    Dann bleib ich drauf nichts passiert, dann geh ich runter und wieder drauf dann kommt "Dein Fahrzeug wird bereits getankt"
    Und die Sekunden wielange ich drauf bleibe kommen auch, aber kein Tank füllt sich leider :/



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • 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.

  • Irgendwie garnichts :D?

    Code
    ----------------------------------
    [16:40:40]  San Francisco Reallife
    [16:40:40] ----------------------------------
    
    
    [16:40:40] Number of vehicle models: 0
    [16:41:03] [part] niddo_189 has left the server (0:0)
    [16:41:51] Incoming connection: 127.0.0.1:65282 id: 0
    [16:41:51] [join] niddo_189 has joined the server (0:127.0.0.1)



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Beitrag von Bäng_Drägn ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ö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;
    }

  • Jo habe jetzt Versucht zu Tanken und am Anfang kommt ja auch immer "Tank vorgang gestartet"
    bekomme dann Geld abgezogen, und nichts passiert :D
    Log:


    Code
    ----------------------------------
    [17:01:37]  San Francisco Reallife
    [17:01:37] ----------------------------------
    
    
    [17:01:37] Number of vehicle models: 0
    [17:02:11] Tanken für 0 gestartet


    Mit freundlichen Grüßen^^



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Code
    ----------------------------------
    [17:35:40]  San Francisco Reallife
    [17:35:40] ----------------------------------
    
    
    [17:35:40] Number of vehicle models: 0
    [17:36:11] Tanken für 0 gestartet
    [17:36:11] sizeof: 2000  |  car: 74


    Hier ein kleiner Screen :p



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)