Warum wird daas Textdraw nicht agnezeigt?

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
  • Wie im Thema...
    Das "Tank" Textdraw (Textdraw8) wird icht angezeigt...
    Und kann vlt. jmd es so machen das der tank gespeichert wird...
    Aber hier ersmal alle funktionen wo das textdraw vorkommt.


    Ganz Oben:

    new PlayerText:Textdraw8[MAX_PLAYERS]; //tank
    new tank[2000];


    BeiOnGameModeInit:



    for(new playerid=0; playerid < MAX_PLAYERS; playerid++)
    {
    Textdraw8[playerid] = CreatePlayerTextDraw(playerid, 140.000000, 390.000000, "Tank: 100 %");
    PlayerTextDrawBackgroundColor(playerid ,Textdraw8 [playerid], 255);
    PlayerTextDrawFont(playerid ,Textdraw8 [playerid], 3);
    PlayerTextDrawLetterSize(playerid ,Textdraw8 [playerid], 0.320000, 0.899999);
    PlayerTextDrawColor(playerid ,Textdraw8 [playerid], -1);
    PlayerTextDrawSetOutline(playerid ,Textdraw8 [playerid], 0);
    PlayerTextDrawSetProportional(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetShadow(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetSelectable(playerid ,Textdraw8 [playerid], 0);
    }


    Das public:
    new tanktimer = 0;
    public sekunde()
    {
    new string[128];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new vID = GetPlayerVehicleID(i);
    format(string, sizeof(string), "Tank: %i%%", tank[vID]);
    PlayerTextDrawSetString(i, Textdraw8[i], string);
    }


    tanktimer++;
    if(tanktimer == 1)
    {
    tanktimer = 0;
    //Tanks reduzieren
    for(new i=1; i<sizeof(tank); i++)
    {
    if(!hatAutoMotor(i))continue;
    if(!isMotorOn(i))continue;
    tank[i]--;
    if(tank[i]>0)continue;
    stopMotor(i);
    }
    }
    }


    Beim OnplayerStateChange (oder wie das auch genau heisst xD)
    if(oldstate==PLAYER_STATE_DRIVER)
    {
    PlayerTextDrawHide(playerid, Textdraw8[playerid]);
    }


    Auch das ist drin:
    if(newstate == PLAYER_STATE_DRIVER)
    {
    PlayerTextDrawShow(playerid, Textdraw8[playerid]);
    return 1;
    }


    Hoffe jmd kann das problem beheben :/ Wie gesagt es wird nicht angezeigt....
    Und wenns geht vlt. eine funktion wie der tank auch gespeichert wird, weil jz ist das so das immer wenn der server restartet jeder tank wieder voll ist

  • Lass die PlayerTextdraws bei OnPlayerConnected laden, und dort kannst du die auch direkt wieder schließen.
    Also PlayerTextdraws bei OnPLayerConnected laden ohne eine schleife weil dort playerid schon bereits gibt.
    Und dann wieder bei OnPlayerConnected
    PlayerTextDrawHide(playerid,textdraw);


    Und dann mal sehen ob es Funktioniert :)


    //EDIT:
    Du musst den Tank einfach in einer Variable abspeichern und diese variable beim vehicle-speicher speichern lassen.

  • Ah Hilfe!!
    PlayerTextDraws NIE in OnGameModeInit erstellen.


    Nutze dafür OnPlayerConnect, da kannst du auch die for Schleife weglassen.


    Das ist jz so bei ongamemodeini



    for(new playerid=0; playerid < MAX_PLAYERS; playerid++)
    Textdraw8[playerid] = CreatePlayerTextDraw(playerid, 140.000000, 390.000000, "Tank: 100 %");
    PlayerTextDrawBackgroundColor(playerid ,Textdraw8 [playerid], 255);
    PlayerTextDrawFont(playerid ,Textdraw8 [playerid], 3);
    PlayerTextDrawLetterSize(playerid ,Textdraw8 [playerid], 0.320000, 0.899999);
    PlayerTextDrawColor(playerid ,Textdraw8 [playerid], -1);
    PlayerTextDrawSetOutline(playerid ,Textdraw8 [playerid], 0);
    PlayerTextDrawSetProportional(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetShadow(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetSelectable(playerid ,Textdraw8 [playerid], 0);


    und jz bekomm ich diesen warning
    C:\Users\Spiele\Desktop\Server Ordner\Server Projekt\gamemodes\ServerProjekt.pwn(1330) : warning 219: local variable "playerid" shadows a variable at a preceding level

  • Textdraw8[playerid] = CreatePlayerTextDraw(playerid, 140.000000, 390.000000, "Tank: 100 %");
    PlayerTextDrawBackgroundColor(playerid ,Textdraw8 [playerid], 255);
    PlayerTextDrawFont(playerid ,Textdraw8 [playerid], 3);
    PlayerTextDrawLetterSize(playerid ,Textdraw8 [playerid], 0.320000, 0.899999);
    PlayerTextDrawColor(playerid ,Textdraw8 [playerid], -1);
    PlayerTextDrawSetOutline(playerid ,Textdraw8 [playerid], 0);
    PlayerTextDrawSetProportional(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetShadow(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetSelectable(playerid ,Textdraw8 [playerid], 0);


    Nur das unter OnPlayerConnect

  • new tanktimer = 0;
    public sekunde()
    {
    new string[128];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new vID = GetPlayerVehicleID(i);
    format(string, sizeof(string), "Tank: %i%%", tank[vID]);
    PlayerTextDrawSetString(i, Textdraw8[i], string);
    }


    tanktimer++;
    if(tanktimer == 1)
    {
    tanktimer = 0;
    //Tanks reduzieren
    for(new i=1; i<sizeof(tank); i++)
    {
    if(!hatAutoMotor(i))continue;
    if(!isMotorOn(i))continue;
    tank[i]--;
    if(tank[i]>0)continue;
    stopMotor(i);
    }
    }
    }


    Hier, allerdings hast du es ja drinnen D:
    Hmm


    SetTimer("sekunde",1000,true);


    Das muss unter OnGameModeInt


  • Genau und wie füge ich die oben genannte funktion bei deisem textdraw ein:

    Textdraw8[playerid] = CreatePlayerTextDraw(playerid, 140.000000, 390.000000, "Tank: 100 %");
    PlayerTextDrawBackgroundColor(playerid ,Textdraw8 [playerid], 255);
    PlayerTextDrawFont(playerid ,Textdraw8 [playerid], 3);
    PlayerTextDrawLetterSize(playerid ,Textdraw8 [playerid], 0.320000, 0.899999);
    PlayerTextDrawColor(playerid ,Textdraw8 [playerid], -1);
    PlayerTextDrawSetOutline(playerid ,Textdraw8 [playerid], 0);
    PlayerTextDrawSetProportional(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetShadow(playerid ,Textdraw8 [playerid], 1);
    PlayerTextDrawSetSelectable(playerid ,Textdraw8 [playerid], 0);

  • Habs verstanden, mit dem timer stell ich ein alle wv milisekunden der tank 1% runter geht :)
    hab den jz auf 180000 gesetzt, das heisst alle 3min get der 1% runter :)


    Aber wenn du mir vlt. helfen könntest... hab nen textdraw edtor und ich möchte um das tacho eine kleine durchsichtigere box machen.... welchen textdraw editor sollte ich da nehmen? und wie füge ich eine box ein?