TextDraws verschwinden immer!

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
  • Also folgendes:


    Fahrzeuganzeige[playerid][1] wird geprintet funtkioniert auch alles.
    Output: Fahrzeuganzeige[playerid][1] = 1


    Fahrzeuganzeige[playerid][2] da wird garnichts geprintet bzw. es kommt nichtmal ne Meldung in der .exe


    Warum geht die nicht an??

  • Kommt denn eine Meldung in der .exe wenn du den print direkt um die Erstellung setzt?


    printf("Vor Fahrzeuganzeige[playerid][2] = %d", _:Fahrzeuganzeige[playerid][2]);
    Fahrzeuganzeige[playerid][2] = CreatePlayerTextDraw(playerid,500.000000, 416.000000, "Ladevorgang...~n~");
    printf("Nach Fahrzeuganzeige[playerid][2] = %d", _:Fahrzeuganzeige[playerid][2]);

  • Ok, dann poste bitte mal alles was da dazu gehört:
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);


    Am besten das ganze public.



    Du hast nicht zufällig im Compiler ganz viele Zahlen stehen, oder?

  • Bitteschön: :D


    public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, maxliter, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    maxliter = VehicleInfo[vehicleid][MaxTank];
    maxliter /= 100;
    GetVehicleHealth(vehicleid,health);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    format(string,sizeof(string),"Fahrzeugname: ~w~%s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h~",GetVehicleSpeed(vehicleid));
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    return 1;
    }

  • public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, maxliter, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    maxliter = VehicleInfo[vehicleid][MaxTank] / 100;
    GetVehicleHealth(vehicleid,health);
    printf("playerid: %d | vehicleid: %d", playerid, vehicleid);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    format(string,sizeof(string),"Fahrzeugname: ~w~%s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    print("Fahrzeuganzeige[playerid][0] gesetzt");
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h~",GetVehicleSpeed(vehicleid));
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    print("Fahrzeuganzeige[playerid][1] gesetzt");
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    print("Fahrzeuganzeige[playerid][2] gesetzt");
    return 1;
    }


    Was wird geprintet?


    Das hier nennt sich übrigens "debuggen".

  • Es wird alles gesetzt bis auf die 2.
    Der Wert entspricht dem gewünschten.
    Was mir auffällt, ist, dass der Timer nicht wie gewünscht gekillt wird??
    Vielleciht entstehen dadurch die Bug, denn obwohl ich ausgesteiegen bin, printet er ordentlich


    "playerid: 0 | vehicleid: 0
    Fahrzeuganzeige[playerid][0] gesetzt"


    das kommt in einer sekunde mehrmals..


    Mir ist auch aufgefallen, dass er manchmal die playerid 1 manchmal 0 nimmt.
    (Beide sind connectet aber keiner in diesem Fahrzeug??)


    Hier nochmal der Code:


    public IsPlayerDriverTextDrawCheck()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"ImFahrzeug")==0)
    {
    if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    SetPVarInt(i,"ImFahrzeug",1);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    updatevehicleanzeigetimer[i] = SetTimerEx("UpdateVehicleAnzeigeTimer",250,true,"i",i);
    PlayerTextDrawShow(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    PlayerTextDrawShow(i,Vehicleanzeigetext[i][s]);
    }
    }
    }
    else if(GetPVarInt(i,"ImFahrzeug")==1)
    {
    if(!IsPlayerInAnyVehicle(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER && GetVehicleDriver(i) != i)
    {
    SetPVarInt(i,"ImFahrzeug",0);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    PlayerTextDrawHide(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    PlayerTextDrawHide(i,Vehicleanzeigetext[i][s]);
    }
    KillTimer(updatevehicleanzeigetimer[i]);
    }
    }
    }
    return 1;
    }

  • public IsPlayerDriverTextDrawCheck()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"ImFahrzeug")==0)
    {
    if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    SetPVarInt(i,"ImFahrzeug",1);
    updatevehicleanzeigetimer[i] = SetTimerEx("UpdateVehicleAnzeigeTimer",250,true,"i",i); //HIER ist außerhalb der "r"-Schleife
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    PlayerTextDrawShow(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    PlayerTextDrawShow(i,Vehicleanzeigetext[i][s]);
    }
    }
    }
    else if(GetPVarInt(i,"ImFahrzeug")==1)
    {
    if(!IsPlayerInAnyVehicle(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER && GetVehicleDriver(i) != i)
    {
    SetPVarInt(i,"ImFahrzeug",0);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    PlayerTextDrawHide(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    PlayerTextDrawHide(i,Vehicleanzeigetext[i][s]);
    }
    KillTimer(updatevehicleanzeigetimer[i]);
    }
    }
    }
    return 1;
    }


    Der Timer gehört nicht in die Schleife.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Es kommen immer diese Zeilen:


    Code
    playerid: 0 | vehicleid: 1
    Fahrzeuganzeige[playerid][0] gesetzt
     Fahrzeugname: ~w~Infernus~n~n
     Fahrzeuganzeige[playerid][1] gesetzt
     Geschwindigkeit: ~r~0 ~y~km/h~
     playerid: 0 | vehicleid: 0 // Sobald ich aussteige kommt diese Zeile und dann wird das Script beendet
     Fahrzeuganzeige[playerid][0] gesetzt


    Das kommt immer

  • Wie sieht es so aus?
    public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid == 0) return 1;
    GetVehicleHealth(vehicleid,health);
    printf("playerid: %d | vehicleid: %d", playerid, vehicleid);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    format(string,sizeof(string),"Fahrzeugname: ~w~%s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    print("Fahrzeuganzeige[playerid][0] gesetzt");
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h~",GetVehicleSpeed(vehicleid));
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    print("Fahrzeuganzeige[playerid][1] gesetzt");
    printf("Tank: %d / %d", VehicleInfo[vehicleid][Tank],VehicleInfo[vehicleid][MaxTank]);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/VehicleInfo[vehicleid][MaxTank]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    print("Fahrzeuganzeige[playerid][2] gesetzt");
    return 1;
    }

  • public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, maxliter, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    maxliter = VehicleInfo[vehicleid][MaxTank];
    maxliter /= 100;
    GetVehicleHealth(vehicleid,health);

    printf("playerid: %d | vehicleid: %d", playerid, vehicleid);


    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    print("Fahrzeuganzeige[playerid][0] gesetzt");
    format(string,sizeof(string),"Fahrzeugname: %s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    print("Fahrzeuganzeige[playerid][1] gesetzt");
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h",GetVehicleSpeed(vehicleid));
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter); // DAS IST DER VERBUGGTE TEXTDRAW
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    print("Fahrzeuganzeige[playerid][2] gesetzt");
    return 1;
    }

  • Sorry, ich hatte nicht ganz verstanden.


    Im Server Log erscheint wieder folgendes:


    Code
    playerid: 0 | vehicleid: 1
    Fahrzeuganzeige[playerid][0] gesetzt
    Fahrzeugname: ~w~Infernus~n~ Fahrzeuganzeige[playerid][1] gesetzt
    Geschwindigkeit: ~r~0 ~y~km/h


    Funktionieren tuts trotzdem nicht :| ;(

  • Kannst du bitte den Log so posten, wie es im Log steht, und nicht daran rumspielen? Jetzt fehlt nämlich plötzlich ein Print der vorhin noch da war. Und zwei Zeilen hast du zu einer gemacht.


    Kopiere einfach das was im Log steht, und poste es, ohne irgendwas wegzumachen. Die Zeiten sind wichtig, also lass die dran. Einfach 1:1 posten.

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