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
  • Hallo leute, ich habe mal ein paar Fragen übrig.


    Da ich nicht nur so ein normales langweiliges Tanksystem möchte, dachte ich mir dass ich mehrere Tankarten zur verfügung stelle.
    Meine Frage ist es jetzt, wie weise ich die verschiedenen Fahrzeuge den verschiedenen Tankarten zu?
    Es soll:
    Benzin, Diesel, Kerosin und Gas vorhanden sein.
    Das nächste wäre, wie ich die Zeit für die jeweiligen Tankart bestimme, indem sie ihre Literzahl verlieren.
    Bsp: Diesel brauch 20 Sekunden bis ein Liter weg geht oder 20 Meter je nachdem,
    Benzin 15 Sekunden/Meter


    Versteht ihr? Logischerweise sollen sie dann auch unterschiedlich viel kosten.
    Und jedes Auto hat seine vorgegebene Tankmenge also bsp. Sultan 50liter Tank und Infernus nur 43 Liter.


    Bis jetzt habe ich mein Tanksystem so:


    Defines:

    Spoiler anzeigen
    #define VERLUST 10000
    #define BENZINPREIS 3

    Spoiler anzeigen
    forward BenzinVerlust();
    forward Auftanken(playerid);
    #define MAX_GAS 17
    new Tank[MAX_VEHICLES], bool:TanktGerade[MAX_VEHICLES]=false, tanktimer[MAX_PLAYERS];


    Timer:

    Spoiler anzeigen
    SetTimer("BenzinVerlust", VERLUST, true);
    for (new i=0; i< MAX_VEHICLES; i++)
    {
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    Tank[i] = 100;
    }


    Tanken:

    Spoiler anzeigen
    //____________Tanken ____________//
    if(newkeys & KEY_LOOK_BEHIND) {
    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)!");
    else 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!"); {
    new ZuTanken = 100-Tank[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;
    tanktimer[playerid] = SetTimerEx("Auftanken",5000,true,"i",playerid); }
    }
    }


    Public's


    Spoiler anzeigen
    //_______MOTOR&TANK____//
    public BenzinVerlust()
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if (Motor[i] == true)
    {
    Tank[i] = Tank[i]-1;
    if (Tank[i]<1)
    {
    Tank[i] = 0;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    }
    }
    }
    return 1;
    }

    Spoiler anzeigen
    public Auftanken(playerid)
    {
    new car = GetPlayerVehicleID(playerid);
    Tank[car] = Tank[car] +1;
    if(Tank[car] >= 100)
    {
    TanktGerade[car] = false;
    Tank[car] = 100;
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde für %i€ vollgetankt.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    return 1;
    }


    Das war der Code.
    Ich hoffe ihr könnt mir auf die Sprünge helfen, wäre echt sehr Dankbar dafür :)


    Mit freundlichen Grüßen


    TVPikachu :thumbup:

    Jeffry:



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


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

  • Ich hoffe ihr könnt mir auf die Sprünge helfen, wäre echt sehr Dankbar dafür


    Du musst ein Array verwenden (oder eine Datenbank) und dann jeder Modelid, die Werte zuweisen:


    stock const VehData[][2] = {
    {0, 50},
    {1, 43},
    {0, 50}
    };


    #define GetVehicleTankArt(%0) VehData[(%0)-400][0]
    #define GetVehicleMaxTank(%0) VehData[(%0)-400][1]


    new veh = GetPlayerVehicleID(playerid);
    new m = GetVehicleModel(veh); //Angenommen modelid == 400
    switch(GetVehicleTankArt(m)) {
    case 0: print("Dieses Auto tankt Diesel!"); //<< das wird geprintet
    case 1: print("Dieses Auto tankt Benzin!");
    //usw..
    }


    printf("Max Tank: %dL",GetVehicleMaxTank(m)); //Output: Max Tank: 50


    switch(GetVehicleTankArt(m)) {
    case 0: Tank[veh] -= 20; //da Diesel -= 20
    case 1: Tank[veh] -= 15; //Da Benzin -= 15
    //usw
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • stock const VehData[][2] = { {0, 50}, {1, 43}, {0, 50} };



    Wie wäre das jetzt aufgebaut?
    0,50//0 ist jetzt benzin und 50 die liter Zahl und das Auto Landstalker?



    Ich check grad voll nicht durch :/



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


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

  • Ich habe jetzt jedem Fahrzeug seinen Tank zugewiesen, aber wenn ich


    [pwn=284]new v;
    v = GetPlayerVehicleID(playerid);
    new m;
    m = GetVehicleModel(v);
    switch(GetVehicleTankArt(m)) {
    case 0: print("Dieses Auto tankt Diesel!"); //<< das wird geprintet
    case 1: print("Dieses Auto tankt Benzin!");
    }


    switch(GetVehicleTankArt(m)) {
    case 0: Tank[veh] -= 20; //da Diesel -= 20
    case 1: Tank[veh] -= 15; //Da Benzin -= 15 //usw
    }[/pwn]


    Einfüge bekomme ich Errors/Warnings

    Spoiler anzeigen
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(285) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(287) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(288) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(289) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(290) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(293) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(294) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(295) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(3485) : warning 203: symbol is never used: "m"
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(3485) : warning 203: symbol is never used: "v"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Spoiler anzeigen
    8 Errors.


    Und ich bin noch ein ziemlicher Anfänger im Scripten, sorry


    Ich füge das switch ja alles oben ins GM ein gell?


    Kann ich ein Command machen, oder du mir an dem ich mich Orientieren kann..


    bsp: mit einer SendClientMessage "Tankart, Kraftstoff und Zeit"
    Zeit = Die zeit in der das Auto 1 Liter benzin verliert, mit abfragen halt daran könnt ich mich orientieren..


    Sorry wenns zu umständlich für dich ist oder so ...



    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)

  • Ich füge das switch ja alles oben ins GM ein gell?


    Nein..


    Das sind doch Beispiele, wie du das nutzen kannst...


    Lies dir das doch einmal durch, Zeichen für Zeichen, dann findest du doch auch schon Beispiele, wo ich Tank abziehe, wenn das Fahrzeug Diesel ist...etc :whistling:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Okey ein bisschen habe ich jetzt gecheckt.
    Zum beispiel im Textdraw es anzeigen zu lassen klappt, aber nur ohne mein System


    Mein System:
    100 % Tank ist er Grün
    50% Tank ist er Gelb
    25% Tank ist er Rot..


    ich musste es jetzt so machen weil ich es anders nicht gerafft hab:


    new v = GetPlayerVehicleID(playerid);
    new m = GetVehicleModel(v);
    new string[125];
    switch(GetVehicleTankArt(m)) {
    case 0: format(string,sizeof string,"Tankart: ~g~Diesel~n~~w~Tank: ~g~%i ~w~liter~n~Km: 0000012~g~%d ~w~",Tank[vehicleid]);
    case 1: format(string,sizeof string,"Tankart: ~g~Benzin~n~~w~Tank: ~g~%i ~w~liter~n~Km: 0000012~g~%d ~w~",Tank[vehicleid]);
    }
    PlayerTextDrawSetString(playerid,CarTankart[playerid],string);


    Kann ich es aber nicht einfach so machen und bei den Case irgendwie schreiben
    case 0: "Diesel"
    und dann :
    if(Tank[vehicleid] < 25)format(string,sizeof string,"Tankart: %i~n~~w~Tank: ~r~%i ~w~liter~n~Km: 0000012~g~%d ~w~",GetVehicleTankArt(m),Tank[vehicleid]);
    else if(Tank[vehicleid] < 50)format(string,sizeof string,"Tankart: %i~n~~w~Tank: ~y~%i ~w~liter~n~Km: 0000012~g~%d ~w~",GetVehicleTankArt(m),Tank[vehicleid]);
    else if(Tank[vehicleid] <= 100)format(string,sizeof string,"Tankart: %i~n~~w~Tank: ~g~%i ~w~liter~n~Km: 0000012~g~%d ~w~",GetVehicleTankArt(m),Tank[vehicleid]);


    Wenn du bei dem helfen kannst, wär ich dir schon dankbar


    //Edit: Habs selbst geschafft :D



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


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

    Einmal editiert, zuletzt von ENEF ()

  • Doch, klar. ;)


    Kannst es so machen:
    new v = GetPlayerVehicleID(playerid);
    new m = GetVehicleModel(v);
    new string[125];
    switch(GetVehicleTankArt(m))
    {
    case 0: string = "Diesel";
    case 1: string = "Benzin";
    }
    format(string,sizeof string,"Tankart: ~g~%s~n~~w~Tank: ~g~%i ~w~liter~n~Km: 0000012~g~%d ~w~",string,Tank[vehicleid]);
    PlayerTextDrawSetString(playerid,CarTankart[playerid],string);

  • Hi,


    Ich hab jetzt bisschen weiter angepasst, da alle Autos ja mit 100 Tank gespawnt werden aber ja nur bestimmte Anzahl an Tank haben.
    Deswegen hab ich jetzt es so gemacht, dass jedes Auto mit seiner MAximalen Tankfüllung spawnt...


    for (new i=0; i< MAX_VEHICLES; i++)
    {
    for(new p; p<MAX_PLAYERS; p++) {
    new v = GetPlayerVehicleID(p);
    new m = GetVehicleModel(v);
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    Tank[i] = GetVehicleMaxTank(m); }
    }


    Keine Errors aber wenn ich Motor ingame anmachen möchte sagt er mir ich habe kein Tank :/



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


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

  • Sollte so passen:
    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));
    }

  • Leider immer noch nicht, komischerweise wird die Tankfarbe (ID 402 mit Tank max. 50) auch in Rot angezeigt :o?
    mein Motor starten befehl ist ja korrekt?


    Spoiler anzeigen
    if(newkeys & KEY_ANALOG_DOWN) {
    if(GetPlayerVehicleSeat(playerid) == 0)
    {
    new car = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(car) == 509 || GetVehicleModel(car) == 481 || GetVehicleModel(car) == 510)
    {
    SendClientMessage(playerid, error, "Du sitzt auf einem Fahrrad. Das hat keinen Motor!");
    }

    Spoiler anzeigen
    else if (Tank[car] < 1)
    {
    SendClientMessage(playerid, error, "Der Tank ist leer. Du musst erst /tanken.");
    }

    Spoiler anzeigen
    else if (Motor[car] == false )
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = true; // Setzt den Bool Motor auf true
    }

    Spoiler anzeigen
    else
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = false; // Setzt den Bool wieder auf falsch zurück.
    }
    }
    return 1;
    }


    MfG



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


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

  • Schreib das mal so:


    //unter OnGameModeInit
    ManualVehicleEngineAndLights();
    SetTimer("@idle",1000,0);


    //Außerhalb davon
    @idle();@idle() {
    for(new v,m; v<MAX_VEHICLES; v++) {
    m = GetVehicleModel(v);
    if(!m) continue;
    Tank[v] = GetVehicleMaxTank(m);
    }
    }


    Sollte so passen:


    Da kann es zu Fehlern kommen, z.B. wenn er darunter noch Autos erstellt, oder m (was so kommen wird) eine ungültige vehicleid hat...dann greift er auf einen ungütligen Index im Array zu.


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Geht auch nicht.


    Ich schick jetzt einfach mal mein Tanksystem vielleicht hackt es irgendwo..


    Spoiler anzeigen
    #define VERLUST 10000
    #define BENZINPREIS 3
    #define GetVehicleTankArt(%0) VehData[(%0)-400][0]
    #define GetVehicleMaxTank(%0) VehData[(%0)-400][1]
    forward BenzinVerlust();
    forward Auftanken(playerid);
    #define MAX_GAS 18
    new Tank[MAX_VEHICLES], bool:TanktGerade[MAX_VEHICLES]=false, tanktimer[MAX_PLAYERS];
    new bool:licht[MAX_VEHICLES];


    Spoiler anzeigen
    //____Tank&Motor______//
    for (new i=0; i< MAX_VEHICLES; i++)
    {
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    }
    SetTimer("BenzinVerlust", VERLUST, true);
    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));
    }


    Spoiler anzeigen
    public BenzinVerlust()
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if (Motor[i] == true)
    {
    Tank[i] = Tank[i]-1;
    if (Tank[i]<1)
    {
    Tank[i] = 0;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    }
    }
    }
    return 1;
    }

    Spoiler anzeigen
    public Auftanken(playerid)
    {
    new car = GetPlayerVehicleID(playerid);
    Tank[car] = Tank[car] +1;
    if(Tank[car] >= 100)
    {
    TanktGerade[car] = false;
    Tank[car] = 100;
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde für %i€ vollgetankt.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    return 1;
    }


    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)

  • Da kann es zu Fehlern kommen, z.B. wenn er darunter noch Autos erstellt, oder m (was so kommen wird) eine ungültige vehicleid hat...dann greift er auf einen ungütligen Index im Array zu.


    Stimmt, du fragst es in deinem define nicht ab. Wäre besser das in der Funktion entsprechend abzufragen, dann muss man es nicht überall nochmal hinschreiben, wo man die Funktion verwendet.
    stock GetVehicleTankArt(model)
    {
    if(model < 400 || model > 611) return -1;
    return VehData[model-400][0];
    }
    stock GetVehicleTankArt(model)
    {
    if(model < 400 || model > 611) return -1;
    return VehData[model-400][1];
    }


    Oder eben in den define klatschen, davon bin ich aber kein Freund, da viele das dann nicht mehr verstehen, vor allem wenn es länger wird. Ein Code sollte ja auch noch lesbar sein.

  • Hi,


    Habe den Stock jetzt eingefügt, muss ich jetzt bei den anderen Codes noch irgendwas beachten?


    [pwn=2814]
    stock GetVehicleTankArt(model)
    {
    if(model < 400 || model > 611) return -1;
    return VehData[model-400][0];
    }
    stock GetVehicleTankArt(model)
    {
    if(model < 400 || model > 611) return -1;
    return VehData[model-400][1];
    }[/pwn]


    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(2814) : error 017: undefined symbol "model"
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(2816) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(2817) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(2819) : error 017: undefined symbol "model"
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(2821) : error 010: invalid function or declaration
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrl.pwn(2822) : error 010: invalid function or declaration
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    6 Errors.


    Und soll ich jetzt den Code von Kaliber behalten?


    Verstehe grad nicht mehr so alles.. :D


    MfG



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


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

  • Okey, hab ich und keine Errors.
    Doch jetzt geht es trotzdem noch nicht :/


    Hab jetzt so wie ihr es gesagt habt gemacht ..


    //Edit;


    Habe mal eins an der Tankstelle hingeschoben und getankt, selbst da sagt er mir ich hätte kein Tank ?

    Spoiler anzeigen
    //____________Motor ____________//
    if(newkeys & KEY_ANALOG_DOWN) {
    if(GetPlayerVehicleSeat(playerid) == 0)
    {
    new car = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(car) == 509 || GetVehicleModel(car) == 481 || GetVehicleModel(car) == 510)
    {
    SendClientMessage(playerid, error, "Du sitzt auf einem Fahrrad. Das hat keinen Motor!");
    }

    Spoiler anzeigen
    else if (GetVehicleMaxTank(car) < 1)
    {
    SendClientMessage(playerid, error, "Der Tank ist leer. Du musst erst /tanken.");
    }

    Spoiler anzeigen
    else if (Motor[car] == false )
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = true; // Setzt den Bool Motor auf true
    }

    Spoiler anzeigen
    else
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = false; // Setzt den Bool wieder auf falsch zurück.
    }
    }
    return 1;
    }

    Jeffry:
    MfG



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


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

    2 Mal editiert, zuletzt von ENEF ()

  • Du hast keinen Tank? Die Nachricht sehe ich nicht.


    Aber ändere mal:
    else if (GetVehicleMaxTank(car) < 1)
    zu:
    else if(Tank[car] < 1)


    Dann zeige nochmal wie du die Fahrzeuge lädst und den Tank auf voll setzt.
    Und zeige den Tanken Befehlt.

  • Doch hier :


    else if (Tank[car] < 1)
    {
    SendClientMessage(playerid, error, "Der Tank ist leer. Du musst erst /tanken.");
    }


    Das erscheint beim Versuch meinen Motor zu starten..


    Es gibt keinen Befehl, ich habe es mit der Taste 2 gemacht:


    Spoiler anzeigen
    //____________Tanken ____________//
    if(newkeys & KEY_LOOK_BEHIND) {
    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!"); {
    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;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid); }
    }
    }


    Hier wird es auf Maximal gestellt:
    SetTimer("BenzinVerlust", VERLUST, true);
    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));
    }


    Hier mal meine Publics:

    Spoiler anzeigen
    public BenzinVerlust()
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if (Motor[i] == true)
    {
    Tank[i] = GetVehicleMaxTank(i)-1;
    if (Tank[i]<1)
    {
    Tank[i] = 0;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    }
    }
    }
    return 1;
    }

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


    Soll ja auch nicht über den max. Tank getankt werden und am besten verschieden abgezogen werden(nach 20 Metern bei diesel - 1 und bei 15 Metern Benzin - 1) wenn es geht..


    Falls du noch was brauchst, schreib es mir :)
    Danke dir Jeffry: (und auch dir Kaliber)


    Mit freundlichen Grüßen


    TV :thumbup:



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


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

  • Schreibe die Callbacks auf jeden Fall mal so:
    public BenzinVerlust()
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if (Motor[i] == true)
    {
    Tank[i]-=1;
    if (Tank[i]<1)
    {
    Tank[i] = 0;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    }
    }
    }
    return 1;
    }


    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);
    SendClientMessage(playerid, erfolg, "Dein Fahrzeug wurde %i€ vollgetankt.");
    TogglePlayerControllable(playerid,1);
    KillTimer(tanktimer[playerid]);
    }
    return 1;
    }


    Das mit den unterschiedlichen Tanks schauen wir an, wenn es erst mal so funktioniert.


    Kannst du so das Fahrzeug auftanken?
    Kannst du den Motor starten?
    Hast du das setzen des vollen Tanks am Anfang vor oder nach dem erstellen der Fahrzeuge?