Textdraw für jeden Spieler seperat

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
  • Hallo Breadfisher,


    Wie kann ich es mache, dass jeder Spieler einen eigenen Textdraw hat.
    Ich habe das momentan so. Allerdings funktioniert es nicht


    Ganz oben
    new Text:ladenzeit[MAX_PLAYERS];
    new ladenzeitstring[MAX_PLAYERS];
    new playerladenzeit[MAX_PLAYERS];


    GameModeInit


    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    ladenzeit[i] = TextDrawCreate(486.000000,422.000000,ladenzeitstring[i]);
    TextDrawAlignment(ladenzeit[i],0);
    TextDrawBackgroundColor(ladenzeit[i],0x000000ff);
    TextDrawFont(ladenzeit[i],3);
    TextDrawLetterSize(ladenzeit[i],0.399999,1.100000);
    TextDrawColor(ladenzeit[i],0xffffffff);
    TextDrawSetOutline(ladenzeit[i],1);
    TextDrawSetProportional(ladenzeit[i],1);
    TextDrawSetShadow(ladenzeit[i],1);
    }


    OnPlayerConnect


    TextDrawShowForPlayer(playerid,ladenzeit[playerid]);


    OnPlayerDisconnect


    TextDrawHideForPlayer(playerid,ladenzeit[playerid]);


    und ein forward


    public somecheck() // Diverse Updates auf 1 Sekunde
    {
    // Ladenzeit
    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    if(playerladenzeit[i] >= 0)
    {
    format(ladenzeitstring[i],sizeof(ladenzeitstring),"Ladenzeit: %d",playerladenzeit[i]);
    TextDrawSetString(ladenzeit[i],ladenzeitstring[i]);


    playerladenzeit[i] --;
    }
    }
    }


    Hoffentlich weiß jemand hilfe, wie jeder Spieler seine eigene Zeit bekommt:


    PS: Der Ladenzeit Textdraw ersetzt komischerweise mein Versionstextdraw, obwohl das eine ganz andere position hat.
    Sprich da von Version sein sollte, ist die Ladenzeit

  • Wie kann ich den Fehler für das zweite Problem beheben ?


    @dit


    Wenn ich das unter OnPlayerConnect mache, sag der Compiler mir, dass dies


    ladenzeit[playerid] = TextDrawCreate(486.000000,422.000000,ladenzeitstring[playerid]);


    ein unreachable code ist

    Einmal editiert, zuletzt von Hagi ()

  • ja aber jeder spieler soll ja einen anderen text ( zahl ) bekommen.
    Diese wird in ladenzeitstring gespeichert. Darum auch /ladenzeitstring[MAX_PLAYERS]


    Dieser Ladenzeitstring wird hier immer aktualisiert mit der variable playerladenzeit[MAX_PLAYERS]


    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    if(playerladenzeit[i] >= 0)
    {
    format(ladenzeitstring[i],sizeof(ladenzeitstring),"Ladenzeit: %d",playerladenzeit[i]);
    TextDrawSetString(ladenzeit[i],ladenzeitstring[i]);


    playerladenzeit[i] --;
    }
    }


    demnach muss ich doch als "Text" den ladenzeitstring angeben


    definiert habe ich diese ja so


    new ladenzeitstring[MAX_PLAYERS];
    new playerladenzeit[MAX_PLAYERS];


    nur ich bin mir nicht sicher ob da nicht so was [256] fehlt

    Einmal editiert, zuletzt von Hagi ()

  • OOOh ja ich hasse diesen Bug, da kommt bei mir der Tacho von ID 0 zur Uhr -.-
    Lösung: Erst den Tacho updaten, dann die Uhr(Selbst wenn die gar keine Änderung braucht)

  • Also das zweite Problem habe ich dank kleinerOpa gelöst


    Nun hab ich nochmal ein bisschen durchprobiert


    Der Textdraw funktioniert wenn man anstatt des ladenzeitstring einfach "test" oder so macht.


    Sobald man den ladenzeitstring mit rein nimmt, beendet sich die server exe, wenn ein spieler connected


    @dit:


    Also das hat doch nicht funktioniert
    Der 2te Textdraw Ladenzeit ersetzt den 1sten Textdraw Verision, obwohl ich Version vor Ladenzeit aktualisiere.
    Desweiteren bekommen alle Spieler immer den gleichen Textdraw.


    Weiß keiner weiter ?


    Hier nochmal der public wo der ladenzeitstring erstellt wird und geupdatet wird


    public somecheck() // Diverse Updates auf 1 Sekunde
    {
    // Version

    TextDrawSetString(Version,"Version 5 BETA");


    // Ladenzeit


    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    if(playerladenzeit[i] >= 0)
    {
    format(ladenzeitstring[i],sizeof(ladenzeitstring),"Ladenzeit: %d",playerladenzeit[i]);
    TextDrawSetString(ladenzeit[i],ladenzeitstring[i]);


    playerladenzeit[i] --;
    }
    else
    {
    TextDrawSetString(ladenzeit[i],"Ladeneit: ---");
    }
    }
    }


    @dit


    Wenn ich den Textdraw unter OnPlayerConnect erstelle, sprich das hier mache, crasht die server exe



    public OnPlayerConnect (playerid)
    {
    ladenzeit[playerid] = TextDrawCreate(486.000000,422.000000,ladenzeitstring[playerid]);
    TextDrawAlignment(ladenzeit[playerid],0);
    TextDrawBackgroundColor(ladenzeit[playerid],0x000000ff);
    TextDrawFont(ladenzeit[playerid],3);
    TextDrawLetterSize(ladenzeit[playerid],0.399999,1.100000);
    TextDrawColor(ladenzeit[playerid],0xffffffff);
    TextDrawSetOutline(ladenzeit[playerid],1);
    TextDrawSetProportional(ladenzeit[playerid],1);
    TextDrawSetShadow(ladenzeit[playerid],1);


    TextDrawShowForPlayer(playerid,ladenzeit[playerid]);
    }

    2 Mal editiert, zuletzt von Hagi ()