Hilfe bei Benzin Script ;)

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
  • Kann mir wer sagen wieso dies nicht funktioniert?
    Testern zufolge, steigt man in ein Vehikel ein, der Tank geht auf 100 und dann auf 'Tank leer!" :(
    Bitte um Hilfe ^^
    EDIT: Ich habe es verbessert, es geht nun teilweise.
    Neuer Fehler - wenn du ein Bullet spawnst..
    ..du steigst ein..fährst den Tank auf 95 Liter runter..
    ..nun steigst du aus..spawnst einen neuen Bullet..
    ..und du steigst ein und :(..der neue Bullet hat auch nurnoch 95 Liter im Tank ;(
    Bitte helft mir...es ist nicht leicht so ein Benzin Script ;)

    #include <a_samp>
    new Fuel[MAX_VEHICLES];
    new Text:Anzeige;
    new fuelstr[50];
    forward UpdateAnzeige(playerid);
    new timer;
    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Benzin Script by Monti|Spearrow (www.sampfish.de)");
    print("--------------------------------------\n");
    Anzeige = TextDrawCreate(0.0,434.0,"Benzin: 100");
    for (new i; i<MAX_VEHICLES; i++)
    {
    Fuel[i] = 100;
    }
    return 1;
    }


    public UpdateAnzeige(playerid)
    {
    new veh = GetPlayerVehicleID(playerid);
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(Fuel[veh] > 0)
    {
    Fuel[veh] = Fuel[veh] - 1;
    format(fuelstr,sizeof fuelstr,"Benzin: %d",Fuel[veh]);
    TextDrawSetString(Anzeige,fuelstr);
    }
    else
    {
    format(fuelstr,sizeof fuelstr,"Benzin leer!");
    TextDrawSetString(Anzeige,fuelstr);
    }
    }
    return 1;
    }


    public OnPlayerStateChange(playerid,newstate,oldstate)
    {
    if(newstate == 2 && IsPlayerInAnyVehicle(playerid))
    {
    timer = SetTimerEx("UpdateAnzeige",2500,1,"i",playerid);
    TextDrawShowForPlayer(playerid,Anzeige);
    }
    return 1;
    }


    public OnPlayerExitVehicle(playerid,vehicleid)
    {
    KillTimer(timer);
    TextDrawHideForPlayer(playerid,Anzeige);
    return 1;
    }

    Einmal editiert, zuletzt von Monte ()

  • Du brauchst eine Variable pro Spieler,nicht eine Variable für alle.
    new Text:drawAnzeige[MAX_PLAYERS];
    new t_FuelTimer[MAX_PLAYERS];

    Dann natürlich alle Variablen umändern
    public OnPlayerConnect(playerid) {
    drawAnzeige[playerid] = TextDrawCreate(0.0,434.0,"Benzin: 100");
    //...
    return 1;
    }

    Noch bessere wäre es du benutzt nur einen Timer für alle.

    /* OnGameModeInit() */
    SetTimer("FuelCheck",3*1000,true);
    /* forward */
    forward FuelCheck();
    /* public */
    public FuelCheck() {
    for(new i;i<MAX_PLAYERS;i++) {
    if(IsPlayerConnected(i)) {
    if(IsPlayerInAnyVehicle(i)) {
    //Update Draw Kram...
    }
    }
    }
    return 1;
    }