Textdraw 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
  • Hi,


    mit einem Timer lass ich meinen Textdraw aufrufen und Updaten.
    Aber beim 2. Spieler der den Server Joint funktioniert das nicht mehr.
    Hier mal ein kurzer Code ausschnitt:

    Zitat

    SetTimerEx("DurstCheck", 60000, true, "i", i);









    Bitte um Hilfe.
    Lg Pascal.

    2 Mal editiert, zuletzt von Pαsćαℓ №1 ()

  • Das Return 1 kann ich nich raus machen.
    Ich hab nicht die ganze Funktion gepostet.
    So sieht alles aus:

    public DurstCheck()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new DurstString[MAX_PLAYERS];
    if(PlayerInfo[i][pDurst] >= 100)
    {
    format(DurstString, sizeof(DurstString), "~r~----------");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 90)
    {
    format(DurstString, sizeof(DurstString), "~r~---------~g~-");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 80)
    {
    format(DurstString, sizeof(DurstString), "~r~--------~g~--");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 70)
    {
    format(DurstString, sizeof(DurstString), "~r~-------~g~---");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 60)
    {
    format(DurstString, sizeof(DurstString), "~r~------~g~----");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 50)
    {
    format(DurstString, sizeof(DurstString), "~r~-----~g~-----");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 40)
    {
    format(DurstString, sizeof(DurstString), "~r~----~g~------");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 30)
    {
    format(DurstString, sizeof(DurstString), "~r~---~g~-------");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 20)
    {
    format(DurstString, sizeof(DurstString), "~r~--~g~--------");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] >= 10)
    {
    format(DurstString, sizeof(DurstString), "~r~-~g~---------");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    if(PlayerInfo[i][pDurst] <= 3)
    {
    format(DurstString, sizeof(DurstString), "~g~----------");
    TextDrawSetString(Durst[i], DurstString);
    return 1;
    }
    }
    return 1;
    }

    Wie gesagt bei mir als 1. Spieler Funktioniert alles.

  • Return bricht die Funktion im Normalfall ganz ab sprich würde es beim ersten Durchlauf immer abbrechen


    public DurstCheck()
    {
    new DurstString[20];
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(PlayerInfo[i][pDurst] >= 100)
    {
    format(DurstString, sizeof(DurstString), "~r~----------");
    TextDrawSetString(Durst[i], DurstString);
    }
    else else if(PlayerInfo[i][pDurst] >= 90)
    {
    format(DurstString, sizeof(DurstString), "~r~---------~g~-");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 80)
    {
    format(DurstString, sizeof(DurstString), "~r~--------~g~--");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 70)
    {
    format(DurstString, sizeof(DurstString), "~r~-------~g~---");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 60)
    {
    format(DurstString, sizeof(DurstString), "~r~------~g~----");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 50)
    {
    format(DurstString, sizeof(DurstString), "~r~-----~g~-----");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 40)
    {
    format(DurstString, sizeof(DurstString), "~r~----~g~------");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 30)
    {
    format(DurstString, sizeof(DurstString), "~r~---~g~-------");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 20)
    {
    format(DurstString, sizeof(DurstString), "~r~--~g~--------");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] >= 10)
    {
    format(DurstString, sizeof(DurstString), "~r~-~g~---------");
    TextDrawSetString(Durst[i], DurstString);
    }
    else if(PlayerInfo[i][pDurst] <= 3)
    {
    format(DurstString, sizeof(DurstString), "~g~----------");
    TextDrawSetString(Durst[i], DurstString);
    }
    }
    return 1;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Wenn ich es Ohne Return mache klappt, aber mein System nicht mehr.
    Da er die Abfrage ab dann beenden soll wenn er da angekommen ist wo er ankommen soll.


    Beispiel:
    Spieler hat noch 50Hp.
    Dann soll er auch bei der Funktion mit 50HP abbrechenund dann anzeigen.
    Ohne Return macht der einfach garnix und zeigt 0 an !.

  • mir fällt es gerade auf ^^


    else if(PlayerInfo[i][pDurst] >= 30)


    du bräuchtest eine Abfrage die Abfragt ob der Wert Exakt in diesem Bereich liegt


    else if(PlayerInfo[i][pDurst] >= 30 && PlayerInfo[i][pDurst] <= 40)

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ok ich werde es gleich testen^^.
    Danke schonmal.
    Black
    Immer noch das selbe.
    Bei mir Funktioniert alles und sobald jemand anders drauf kommt geht bei dem nix.
    also zeigt nix an.

    Einmal editiert, zuletzt von Pαsćαℓ №1 ()

  • Hast du jede Abfrage extra geändert ?
    ansonsten geht es auch so

    if(PlayerInfo[i][pDurst] <= 100)
    ...
    if(PlayerInfo[i][pDurst] <= 90)
    ... usw.


    aber nur kleiner gleich keine andere Abfrage dann sollte es auch gehen

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Liegt es vieleicht am Timer?
    Ich hab den bei OnGameModeinit drinn.
    So sieht er aus:
    SetTimerEx("DurstCheck", 60000, true, "i", i);

  • Wenn du des mit einer Schleife regelst brauchst du keinen Timer mit Extra Parameter sondern nur einmal beim Gamemode Laden SetTimer setzen und das wars,
    für den Spieler wäre es ohne Schleife & ein Parameter der die Zahl für die ID des Spielers wiedergibt

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Meinst du so?


    for(new i=0; i<MAX_PLAYERS; i++)
    {
    SetTimer("DurstCheck", 5000, 1);
    }


    ?

  • Nein du verstehst nicht, wenn ein Timer gesetzt wird, wird dieser für den Globalen Skript Bereich gesetzt sofern die Funktion registriert ist ^^
    Musst nicht extra für jeden Spieler einen Timer setzen die Schleife geht bereits alle 500 Spieler durch & um die nicht vorhandenen zu überspringen.


    z.b. Unter OnGameModeInit...
    SetTimer("test",MS,WIEDERHOLEN);
    Beispiel Funktion
    public test(){
    for(new i = 0;i<MAX_PLAYERS;i++){
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue; // wird übersprungen sobald nicht da oder Bot
    // Aktionen
    }
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion