Tankanzeige wird nicht angezeigt.

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
  • Guten Abend.
    Ich habe folgendes Problem das bei mir zum ersten mal auftritt.
    Wenn ich ein Auto einsteige wird das Tacho angezeigt doch nicht vollständig >_<. Meine Benzin Anzeige fehlt ich müsste eigentlich alles richtig gemacht haben aber anscheinend ja nicht. Hier ist mein Code :
    public UpdateSpeed(playerid)
    {
    new Float:x,Float:y,Float:z;
    new Float:distance,value,string[256];
    new Float:health;
    new vehicleid = GetPlayerVehicleID(playerid);
    for(new i=0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    TextDrawDestroy(Speedo[i]);
    }
    }


    for(new i=0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    GetPlayerPos(i, x, y, z);
    GetVehicleHealth(GetPlayerVehicleID(i), health);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
    value = floatround(distance * 5000);
    if(UpdateSeconds > 1)
    {
    value = floatround(value / UpdateSeconds);
    }
    format(string,sizeof(string),"Fahrzeug : %s~n~KM/H : %d~n~Tank : %d ",CarName[GetVehicleModel(GetPlayerVehicleID(i))-400],floatround(value/1600),Benzin[vehicleid]);
    Speedo[i] = TextDrawCreate(250.000000, 350.000000, string);
    TextDrawSetOutline(Speedo[i], 1);
    TextDrawFont(Speedo[i], 3);
    TextDrawSetProportional(Speedo[i], 2);
    TextDrawAlignment(Speedo[i], 2);
    TextDrawShowForPlayer (i, Speedo[i]);
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }


    Vielen Dank im Vorraus.


    mfg SiriiuzZ

  • Wie ist die Definition von
    Benzin[MAX_VEHICLES];
    ?

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • //EDIT 2: Also könntest du bitte ein Screenshot vom Tacho InGame machen ?

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ups, nicht weiter gelesen, wird ja nochmal erstellt X(


    public UpdateSpeed(playerid)
    {
    new Float:x,Float:y,Float:z;
    new Float:distance,value,string[256];
    new Float:health;
    new vehicleid = GetPlayerVehicleID(playerid);
    for(new i=0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    TextDrawDestroy(Speedo[i]);
    }
    }


    for(new i=0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    GetPlayerPos(i, x, y, z);
    GetVehicleHealth(GetPlayerVehicleID(i), health);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
    value = floatround(distance * 5000);
    if(UpdateSeconds > 1)
    {
    value = floatround(value / UpdateSeconds);
    }
    format(string,sizeof(string),"Fahrzeug : %s~n~KM/H : %d~n~Tank : %d ",CarName[GetVehicleModel(GetPlayerVehicleID(i))-400],floatround(value/1600),Benzin[vehicleid]);
    Speedo[i] = TextDrawCreate(250.000000, 350.000000, string);
    TextDrawSetOutline(Speedo[i], 1);
    TextDrawFont(Speedo[i], 3);
    TextDrawSetProportional(Speedo[i], 2);
    TextDrawAlignment(Speedo[i], 2);
    TextDrawShowForPlayer (i, Speedo[i]);
    printf("%s",string);
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }


    Schau mal, ob das Print noch den richtigen String ausgibt, bisschen Debuggen kann nich schaden.

  • haha, hab den Fehler gefunden, welcher sehr lustig ist und ich nicht erklären kann xD


    ersetze die Zeile:

    format(string,sizeof(string),"Fahrzeug : %s~n~KM/H : %d~n~Tank : %d ",CarName[GetVehicleModel(GetPlayerVehicleID(i))-400],floatround(value/1600),Benzin[vehicleid]);


    mit


    format(string,sizeof(string),"Fahrzeug: %s~n~KM/H: %d~n~Tank: %d",CarName[GetVehicleModel(GetPlayerVehicleID(i))-400],floatround(value/1600),Benzin[vehicleid]);

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ich versteh es auch ned, aber pass auf:


    Du hast ja vorher es so ca gehabt:
    "Geschwindigkeit : %d ~n~ Tacho : %d",
    nun anscheinend erkennt PAWN das mit dem : anders, wenn du vorher und nacher ein Leerzeichen hast, also bei Textdraws. Ich hab also nur ein Leer von einer Seite vom : gelöscht und dann sieht es so aus:
    "Geschwindigkeit: %d ~n~ Tacho: %d",


    Also, no comment xD

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • lol was für ein fehler >_<.
    //EDIT
    Ich habe nun ein neues Problem wenn ich in mein Auto einsteige und aussteige läuft mein Timer trotzdem weiter X( und ich kann ihn ja schlecht killen weil sich sonst der Timer wieder wiederholt.
    Hier habe ich mein Timer
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    SetTimer("Benzintank",2000,1);
    return 1;
    }
    und hier mein Public
    public Benzintank(vehicleid,playerid)
    {
    vehicleid = GetPlayerVehicleID(playerid);

    Benzin[vehicleid] -= 1;
    if(Benzin[vehicleid] == 0)
    {
    GameTextForPlayer(playerid,"Dein Tank ist leer",500,1);
    TogglePlayerControllable(playerid,0);
    }
    return 1;
    }


    mfg SiriiuzZ

    Einmal editiert, zuletzt von CyronZ ()

  • Nein du verstehst was falsch, die Funktion KillTimer killt den Timer vollständig, auch wenn du ihn so eingestellt hast, dass er sich wiederholt!


    Hier dein Beispiel mit korrekter Ausführung!


    new BenzinTimer[MAX_PLAYERS];


    public OnPlayerDisconnect(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid)) KillTimer(BenzinTimer[playerid]);
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    switch(newstate)
    {
    case PLAYER_STATE_DRIVER,PLAYER_STATE_PASSENGER: BenzinTimer[playerid] = SetTimerEx("Benzintank",2000,1,"ud",playerid,vehicleid);
    case PLAYER_STATE_ONFOOT: KillTimer(BenzinTimer[playerid]);
    }
    return 1;
    }


    public Benzintank(vehicleid,playerid)
    {
    vehicleid = GetPlayerVehicleID(playerid);
    Benzin[vehicleid] -= 1;
    if(Benzin[vehicleid] == 0)
    {
    GameTextForPlayer(playerid,"Dein Tank ist leer",500,1);
    TogglePlayerControllable(playerid,0);
    }
    return 1;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ersetze mal bitte die beiden Sachen und teste es nochmals


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    switch(newstate)
    {
    case PLAYER_STATE_DRIVER,PLAYER_STATE_PASSENGER: BenzinTimer[playerid] = SetTimerEx("Benzintank",2000,1,"dd",playerid,vehicleid);
    case PLAYER_STATE_ONFOOT: KillTimer(BenzinTimer[playerid]);
    }
    return 1;
    }


    public Benzintank(vehicleid,playerid)
    {
    Benzin[vehicleid] -= 1;
    if(Benzin[vehicleid] == 0)
    {
    GameTextForPlayer(playerid,"Dein Tank ist leer",500,1);
    TogglePlayerControllable(playerid,0);
    }
    return 1;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ok, weißte was ich mach es dir nun ganz anders, weil so wie ich es im Pfusch geschrieben habe sowieso nur Ressourcenverschwendung ist...


    Also zunächst löscht du mal diese Teile heraus aus deinem Script:


    switch(newstate)
    {
    case PLAYER_STATE_DRIVER,PLAYER_STATE_PASSENGER: BenzinTimer[playerid] = SetTimerEx("Benzintank",2000,1,"dd",playerid,vehicleid);
    case PLAYER_STATE_ONFOOT: KillTimer(BenzinTimer[playerid]);
    }


    if(IsPlayerInAnyVehicle(playerid)) KillTimer(BenzinTimer[playerid]);


    new BenzinTimer[MAX_PLAYERS];


    Danach ändern wir das Tank Public um:


    forward Benzintank();


    public Benzintank()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(IsPlayerConnected(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    Benzin[vehicleid] -= 1;
    if(Benzin[vehicleid] == 0)
    {
    GameTextForPlayer(playerid,"Dein Tank ist leer",500,1);
    TogglePlayerControllable(playerid,0);
    }
    return 1;
    }
    }
    }


    und setzen dann unter OnGameModeInit folgende Zeile ein...


    SetTimer("Benzintank", 2000, 1);


    und Ruhe ist... xD

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen