TextDraw Problem bei < ID 0 Anzeige geht nicht :SSS Fail

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
  • Soo jetzt aber


    Ich hab ne Kill Death etc. Anzeige soo nun geht das alles auch perfekt nur das Problem:
    Man sieht nur die Stats von Spielerid 0 ??!!


    Hier:


    public Anzeige()
    {
    for new (i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping,killsvonplayer,Money,lebenvonplayer);
    TextDrawDestroy(anzeige);
    anzeige = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige, 0.5, 2.5);
    TextDrawShowForPlayer(i,anzeige);
    }
    }
    }

  • Das mit TextDrawShowForAll wird nix da er ja schon angezeigt wird desweiteren wird er das gleiche Problem weiterhaben


    Denn er hat seine Arrays vergessen


    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);


    So sollte das funktionerien

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • ich mache meine Textdraws immer so versuch mal diese Variante.


    new anzeige[MAX_PLAYERS];
    public Anzeige()
    {
    for new (i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping,killsvonplayer,Money,lebenvonplayer);
    anzeige[i] = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige[i], 0.5, 2.5);
    TextDrawShowForPlayer(i,anzeige[i]);
    }
    }
    }

  • Ui ich Idiot :wacko:


    Hast recht. Hätte ich genauer lesen sollen :rolleyes:



    Maddin is my Lord and Master :D
    Musel my one and only b0wm
    Bisafloah is the pokemon that pwns a lot of goddamn ponys.

  • er hätte sonst was angezeigt auch wenn er die vergessen hätte

  • AC/DC unser beides ist nicht ganz richtig.
    Ich hab übersehen, das er den Textdraw nicht für alle Spieler einzeln erstellt und du hast über sehen, dass er seine Arrays im TextDrawSetString vergessen hat, also packen wir beides zusammen und schon stimmt ;)
    //oben
    new Text:anzeige[MAX_PLAYERS];


    public Anzeige()
    {
    for new (i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);
    anzeige[i] = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige[i], 0.5, 2.5);
    TextDrawShowForPlayer(i,anzeige[i]);
    }
    }
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Hab das jetzt so:
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer[i]);


    Bekomme aber Error o.O:
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2603) : error 028: invalid subscript (not an array or too many subscripts): "lebenvonplayer"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2603) : warning 215: expression has no effect
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2603) : error 001: expected token: ";", but found "]"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2603) : error 029: invalid expression, assumed zero
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2603) : fatal error 107: too many error messages on one line

  • Jetzt hab ich Errors:
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2604) : error 001: expected token: ";", but found "]"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2604) : error 029: invalid expression, assumed zero


    bei: TextDrawDestroy(anzeige[i]);

  • entferne sie du willst den zerstören aber wieder erstellen ? mach das unter onplayerdisconnect

  • Solltest du lieber so lassen, denn du musst den Textdraw für jeden EINZELEN Spieler erstellen, sonst hast du das Problem, dass alle den zuletzt erstelten Textdraw sehen können

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • so


    new Text:anzeige[MAX_PLAYERS];


    public Anzeige()
    {
    for new (i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);
    anzeige[i] = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige[i], 0.5, 2.5);
    TextDrawShowForPlayer(i,anzeige[i]);
    }
    }

  • Aber da istn Timer drin. Der ändert jede Sekunde die Stats deswegen muss das doch dahin damit er es sofort wieder neu erstellt. ?


    Da lautet die Lösung TextDrawSetString


    Du brauchst also nur bei OnplayerSpawn/OnPlayerConnect den Textdraw erstellen updatest den Textdraw per Timer und TextdrawSetString und löscht ihn wieder bei OnPlayerDisconnect und OnGameModeExit

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • einfach nur löschen bei onplayerdisconnect dann gehts :D

  • Habs jetzt so aber bekomme die Errors:


    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2596) : error 029: invalid expression, assumed zero
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2596) : error 029: invalid expression, assumed zero
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2599) : error 017: undefined symbol "i"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2600) : error 017: undefined symbol "i"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2601) : error 017: undefined symbol "i"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2602) : error 017: undefined symbol "i"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2604) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2605) : error 017: undefined symbol "i"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : error 028: invalid subscript (not an array or too many subscripts): "anzeige"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : error 017: undefined symbol "i"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : error 029: invalid expression, assumed zero
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : fatal error 107: too many error messages on one line


    //Edit das war ne völlig falsche Schleife xDD


    Hier die neuen Errors: C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2590) : error 021: symbol already defined: "anzeige"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2604) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : error 028: invalid subscript (not an array or too many subscripts): "anzeige"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : warning 215: expression has no effect
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : error 001: expected token: ";", but found "]"
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : error 029: invalid expression, assumed zero
    C:\Users\Dennis Fritsch\Desktop\Server\gamemodes\Free'n'Fun.pwn(2606) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.

  • so^^



    new Text:anzeige[MAX_PLAYERS];


    public Anzeige()
    {
    for (new i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);
    anzeige[i] = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige[i], 0.5, 2.5);
    TextDrawShowForPlayer(i,anzeige[i]);
    }
    }