Neues "Dynamisches" Tank System funktioniert nur bedingt

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
  • Hey,
    ich habe in mein Selfmade Script ein mehr oder weniger dynamisches Tanksystem eingebaut. Dessen Array sieht so aus:
    new Fahrzeugtank[212][0] = {
    {"60"}, {"40"}, {"40"}, {"120"}, {"40"}, {"50"}, {"80"}, {"80"}, {"80"}, {"60"}, {"50"}, {"60"}, {"50"}, {"50"}, {"50"}, {"60"},
    {"120"},{"150"}, {"50"}, {"40"}, {"40"}, {"40"}, {"50"}, {"30"}, {"80"}, {"120"}, {"50"}, {"120"}, {"90"}, {"60"}, {"90"}, {"60"}, {"40"}, {"70"}, {"60"}, {"0"},
    {"50"}, {"60"}, {"40"}, {"50"}, {"40"}, {"0"}, {"40"}, {"80"}, {"30"}, {"50"}, {"100"}, {"150"}, {"20"}, {"0"}, {"0"}, {"60"}, {"120"}, {"80"}, {"200"}, {"80"}, {"80"},
    {"20"}, {"50"}, {"40"}, {"90"}, {"40"}, {"30"}, {"45"}, {"0"}, {"0"}, {"50"}, {"50"}, {"40"}, {"120"}, {"80"}, {"40"}, {"100"}, {"20"}, {"50"}, {"40"}, {"90"}, {"60"}, {"40"}, {"40"}, {"80"}, {"0"},
    {"40"}, {"40"}, {"180"}, {"10"}, {"30"}, {"150"}, {"120"}, {"80"}, {"80"}, {"50"}, {"40"}, {"120"}, {"150"}, {"40"}, {"30"},
    {"150"}, {"40"}, {"40"}, {"40"}, {"0"}, {"60"}, {"60"}, {"40"}, {"50"}, {"60"}, {"40"}, {"40"},
    {"0"}, {"0"}, {"200"}, {"100"}, {"80"}, {"120"}, {"100"}, {"40"}, {"40"}, {"40"}, {"250"}, {"80"}, {"30"}, {"30"}, {"30"}, {"40"}, {"50"}, {"40"}, {"40"}, {"80"}, {"40"},
    {"10"}, {"20"}, {"40"}, {"50"}, {"40"}, {"40"}, {"40"}, {"0"}, {"0"}, {"40"}, {"40"}, {"60"}, {"45"}, {"40"}, {"80"}, {"40"}, {"40"}, {"40"}, {"180"},
    {"40"}, {"40"}, {"40"}, {"50"}, {"120"}, {"50"}, {"45"}, {"20"}, {"20"}, {"50"}, {"50"}, {"50"}, {"50"}, {"50"}, {"120"}, {"0"}, {"40"}, {"40"}, {"50"}, {"0"}, {"0"},
    {"0"}, {"10"}, {"20"}, {"40"}, {"20"}, {"40"}, {"30"}, {"400"}, {"70"}, {"40"}, {"40"}, {"30"}, {"40"}, {"15"}, {"0"}, {"40"},
    {"30"}, {"40"}, {"30"}, {"30"}, {"0"}, {"0"}, {"600"}, {"100"}, {"0"}, {"90"}, {"80"}, {"80"}, {"80"}, {"60"}, {"40"}, {"80"}, {"50"},
    {"40"}, {"0"}, {"0"}, {"0"}, {"0"}, {"0"}, {"50"}, {"0"}, {"0"}
    };
    Und der Stock zum abfragen:
    stock GetVehicleTank(vehicleid) {
    return strval(Fahrzeugtank[GetVehicleModel(vehicleid)-400]);
    }
    Das funktioniert soweit auch ganz gut. Allerdings werden die Fahrzeuge beim Spawnen nicht betankt. Unter OnVehicleSpawn habe ich folgendes:
    Tank[vehicleid] = GetVehicleTank(vehicleid);
    Die Tanks bleiben leer. Die gleiche Zeile habe ich jedoch auch in /afill (Also Fahrzeuge in denen man sitzt als Admin betanken) und da funktioniert es...
    Ebenfalls habe ich das auch bei OnPlayerEnterVehicle, aber auch da tut sich nichts... Unter /veh zum spawnen auch: Fehlanzeige... Sogar unter OnGamemodeInit gehts nicht (Ok, da kann ich das teils nachvollziehen. Mit i (Definiert in der Max Vehicles For schleife) kann ich aber andere sachen der Fahrzeuge festlegen)


    Weiß wer wieso?


    Lg

  • Ich bin mal so freundlich, schreib das alles doch einfach so:


    static const Fahrzeugtank[212] = {
    60,40,40,120,40,50,80,80,80,60,50,60,50,50,50,60,120,150,50,40,40,40,50,30,80,120,50,120,90,60,90,60,40,70,60,0,
    50,60,40,50,40,0,40,80,30,50,100,150,20,0,0,60,120,80,200,80,80,20,50,40,90,40,30,45,0,0,50,50,40,120,80,40,100,20,50,40,90,60,40,40,80,0,40,40,180,10,30,150,120,80,80,50,40,
    120,150,40,30,150,40,40,40,0,60,60,40,50,60,40,40,0,0,200,100,80,120,100,40,40,40,250,80,30,30,30,40,50,40,40,80,40,10,20,40,50,40,40,40,0,0,40,40,60,45,40,80,40,40,40,180,
    40,40,40,50,120,50,45,20,20,50,50,50,50,50,120,0,40,40,50,0,0,0,10,20,40,20,40,30,400,70,40,40,30,40,15,0,40,30,40,30,30,0,0,600,100,0,90,80,80,80,60,40,80,50,40,0,0,0,0,0,50,0,0
    };


    #define GetVehicleTank(%0) Fahrzeugtank[GetVehicleModel(%0)-400]


    //kannst es aber genauso nutzen:
    Tank[vehicleid] = GetVehicleTank(vehicleid);


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Bluescreen
    Ja, bei z.B. /afill und dann in der Tankanzeige oder bei Enter vehicle (nachdem es mit /afill aufgefüllt wurde) wird alles richtig angezeigt


    Kaliber
    Werd es mal ausprobieren.
    Danke :)


    #Edit:
    Ich habe jetzt unter OnGameModeInit:
    SetTimer("tank_verlust", 10000, true);


    Und der Public:
    public tank_verlust()
    {
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(Motor[i] == true)
    {
    Tank[i] = Tank[i] -1; // Ich weiß, änder ich noch, will überhaupt erstmal wissen wann das geht undso ^^
    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;
    }
    Aber es wird nichts abgezogen an Tank. Tank[...] bleibt dennoch immer auf dem wert in "Fahrzeugtank"... :/
    Wird aber nirgendwo sonst gesetzt was das aufheben könnte. Nur beim spawnen und beim einsteigen direkt.. :/


    lg

    2 Mal editiert, zuletzt von doge_ ()

  • Dann debugge doch mal tank_verlust().


    So viele Möglichkeiten gibt es ja nicht,wieso es nicht funktioniert.
    1. tank_verlust() wird nicht aufgerufen.
    2. In tank_verlust() klappt die Motor[] == false Abfrage nie ( Motor[] ist nicht true )


    Du bist dir auch ganz sicher,dass du die Variable Motor[] auf true / 1 setzt ? Zeig doch mal das Abschnitt dazu.
    Trotzdem würde ich dir empfehlen,dir debugge mal genauer anzusehen.


    Zitat

    Aber es wird nichts abgezogen an Tank. Tank[...] bleibt dennoch immer auf dem wert in "Fahrzeugtank"... :/


    Das weisst du woher ? Vllt stimmt nur die Anzeige nicht.


    //Edit: Blödes [i]

  • Goldkiller
    Wenn "die" Anzeige nicht stimmt, müssten ganz schön viele anzeigen nicht stimmen. Ich habe, um halt zu, setzen wir es in Anführungszeichen, "prüfen" ob sich überhaupt was ändert es im Tacho und bei OnPlayerEnterVehicle. Ich werd das mit den Debug Nodes mal machen :)
    Und das Motor[] gesetzt wird, weiß ich am /motor befehl. Da wird ja geprüft ob der Motor an ist, wenn ja ausmachen. Auch mit Motor[] und da wirds dann auch dementsprechend auf True und False gesetzt


    Lg


    #edit: Funktioniert jetzt :D Danke!

    2 Mal editiert, zuletzt von doge_ ()