Tank System macht Ärger

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 ein Tanksystem, was beim einsteigen in ein veh. die Rest-tank Menge aus der Veh Datei ausliest,
    Und beim verlassen die restmenge speichert.
    Funktioniert mit einem Spieler an sich auch gut.
    (Mit mehreren Vehs)
    Wenn jetz aber ein zweiter Spieler kommt, dann streikt das System.
    Mal ein Beispiel:
    Spieler 1 fährt Veh1 bis auf 90 Liter (von 100) leer.
    Wenn er in ein anderes steigt, zeigt der Tacho die richtige Restmenge des anderen Vehs.
    Wenn er wieder zurück in das erste steigt, werden wieder die 90 Liter von vorhin angezeigt.
    Jetzt steigt Spieler 2 in das erste, und plötzlich hat der Tank 100 O.o
    Der Code:
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    new string[256];
    new tmp[256];



    format(string, sizeof(string),"vehicle_%d.sav",vehicleid);
    tmp = dini_Get(string,"Tank");
    AUTOX[vehicleid][tank] = strval(tmp);


    SetTimer("Tank",90000,1);




    return 1;
    }
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    new string[256];
    new kmsav[256];
    new Float:x,Float:y,Float:z,Float:a;
    GetVehiclePos(vehicleid,x,y,z);
    GetVehicleZAngle(vehicleid,a);
    new Vi;
    Vi=GetPlayerVehicleID(playerid);
    GetVehicleHealth(Vi, health);
    format(string, sizeof(string),"vehicle_%d.sav",vehicleid);
    if(dini_Exists(string)){
    dini_FloatSet(string,"x",x);
    dini_FloatSet(string,"y",y);
    dini_FloatSet(string,"z",z);
    dini_FloatSet(string,"a",a);
    dini_FloatSet(string,"health",health);
    dini_FloatSet(string,"Tank",AUTOX[vehicleid][tank]);
    format(kmsav,sizeof(kmsav),"%f",kmstand[vehicleid]);
    dini_Set(string,"kmstand",kmsav);
    }
    return 1;
    }

    Was mache ich falsch?

  • Korregier mich wenn ich mich irre, aber wie hast du "Tank" in der Variable gespeichert? Wenn da nur ne 90 steht musst dus mit dini_Int abrufen weil dini_Get für strings ist.
    /edit


    dini_FloatSet(string,"Tank",AUTOX[vehicleid][tank]);

    Wtf?:D Jetzt ists n Float?oO

  • 123 = Integer, wird mit dini_Int geladen und dini_IntSet gespeichert (dazu müsste auch deine Tankladung gehören)
    Blubb = String, wird mit dini_Get geladen und mit dini_Set gespeichert
    3,241 = Float, wird mit dini_Float geladen und mit dini_FloatSet gespeichert( so speicherst du die verbleibende Tankladung)


    Ich deeenke mal dass es bei deinen Tankladungen keine Kommazahlen gibt, daher wirst du nur dini_Int / dini_IntSet brauchen - kein Float oder Get :!:

  • tmp = dini_Int(string,"Tank");
    AUTOX[vehicleid][tank] = strval(tmp);
    array must be indexed (variable "tmp")
    Das lustige is ja eigentlich, das dass funktionierte.
    Zumindest bei einem User :D