[Frage] Score anzeigen mit TextDraw

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
  • new scores[32];
    format(scores,sizeof(scores),"TeamA %d : %d TeamB",scoreA,scoreB);
    TextDrawSetString(ScoreText,scores);
    TextDrawShowForAll(ScoreText);


    Du solltest das dann für dich ändern, also wie das Textdraw heisst etc.


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Thanks Maercell für die Antwort, nur leider funktioniert es nicht richtig, oder ich hab was falsch gemacht(was ich eher glaube ;) ).


    Was könnte daran falsch sein?


    new DNBScore;
    new WScore;
    new Text:Textdraw0;
    new Text:Textdraw1;
    new Text:Textdraw2;
    new Text:Textdraw3;
    new Text:Textdraw4;




    DNBScore = 0;
    WScore = 0;
    //Text
    new score1[32];
    format(score1,sizeof(score1),"%d",WScore);
    TextDrawSetString(Textdraw2,score1);
    Textdraw2 = TextDrawCreate(578.000000,128.000000,score1);
    new score2[32];
    format(score2,sizeof(score2),"%d",DNBScore);
    TextDrawSetString(Textdraw4,score2);
    Textdraw4 = TextDrawCreate(578.000000,148.000000,score2);
    Textdraw0 = TextDrawCreate(499.000000,103.000000,"Punktestand:");
    Textdraw1 = TextDrawCreate(499.000000,127.000000,"Arbeiter:");
    Textdraw3 = TextDrawCreate(499.000000,149.000000,"Da Nang Boys:");



    Mfg. Marc_307

    Einmal editiert, zuletzt von DuffMan ()

  • Du musst den Textdraw auch anzeigen lassen.
    public OnPlayerSpawn(playerid)
    {
    TextDrawShowForPlayer(playerid, Textdraw0);
    TextDrawShowForPlayer(playerid, Textdraw1);
    TextDrawShowForPlayer(playerid, Textdraw2);
    TextDrawShowForPlayer(playerid, Textdraw3);
    TextDrawShowForPlayer(playerid, Textdraw4);
    return 1;
    }

  • Hab ich ja:


    public OnPlayerConnect(playerid)
    {
    TextDrawShowForPlayer(playerid,Text:Textdraw0);
    TextDrawShowForPlayer(playerid,Text:Textdraw1);
    TextDrawShowForPlayer(playerid,Text:Textdraw2);
    TextDrawShowForPlayer(playerid,Text:Textdraw3);
    TextDrawShowForPlayer(playerid,Text:Textdraw4);
    return 1;
    }

  • Das stimmt schon so, nur wird das eben nicht aktualisiert.
    Füge dann das in einen Timer ein:


    new score1[32];
    format(score1,sizeof(score1),"%d",WScore);
    TextDrawSetString(Textdraw2,score1);
    TextDrawShowForAll(Textdraw2);
    new score2[32];
    format(score2,sizeof(score2),"%d",DNBScore);
    TextDrawSetString(Textdraw4,score2);
    TextDrawShowFolAll(Textdraw4);


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • in OnGameModeInit:
    SetTimer("UpdateScoreText",5000,1);


    unten ins Script:
    forward UpdateScoreText();
    public UpdateScoreText()
    {
    new score1[32];
    format(score1,sizeof(score1),"%d",WScore);
    TextDrawSetString(Textdraw2,score1);
    TextDrawShowForAll(Textdraw2);
    new score2[32];
    format(score2,sizeof(score2),"%d",DNBScore);
    TextDrawSetString(Textdraw4,score2);
    TextDrawShowForAll(Textdraw4);
    return 1;
    }


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Thanks, jetzt geht's, nur die Zahlen legen sich übereinander. Also so, dass der alte Score unten und der neue direkt dadrüber steht.
    Oder ist die "kleine" Veränderung dran schuld, denn ohne sie, kann man keinen Score mehr sehen:
    forward UpdateScoreText();
    public UpdateScoreText()
    {
    new score1[32];
    format(score1,sizeof(score1),"%d",WScore);
    TextDrawSetString(Textdraw2,score1);
    Textdraw2 = TextDrawCreate(578.000000,128.000000,score1); //<-
    TextDrawShowForAll(Textdraw2);
    new score2[32];
    format(score2,sizeof(score2),"%d",DNBScore);
    TextDrawSetString(Textdraw4,score2);
    Textdraw4 = TextDrawCreate(578.000000,148.000000,score2); //<-
    TextDrawShowForAll(Textdraw4);
    return 1;
    }

  • Ja, du solltest auch das benutzen was ich dir hinschreibe, weil dort das mit TextDrawSetString drin ist


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Textdraw2 = TextDrawCreate(578.000000,128.000000,score1);
    Textdraw4 = TextDrawCreate(578.000000,148.000000,score2);
    Textdraw0 = TextDrawCreate(499.000000,103.000000,"Punktestand:");
    Textdraw1 = TextDrawCreate(499.000000,127.000000,"Arbeiter:");
    Textdraw3 = TextDrawCreate(499.000000,149.000000,"Da Nang Boys:");
    Das steht schon in OnGameModeInit. Das brauchst du nur dort und nicht wenn du den Text davon aktualisieren willst.


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Wo kommen jetzt die Errors??
    Du solltest das jetzt nicht auch noch einfügen.... Wollte nur zeigen, dass die Positionen da schon festgelegt werden und nicht beim aktualisieren nochmal vorkommen müssen


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Ok. Bei mir steht der Score aber nun unten rechts am Bildschirmran. Was kann man da tun?
    //Edit: Ich hab's schon. Ich hab einfachTextdraw2 = TextDrawCreate(578.000000,128.000000,"score1");
    Textdraw4 = TextDrawCreate(578.000000,148.000000,"score2"); unter GameModeInit gesetzt. :D
    Thanks, thanks and thanks again. :thumbup:

    4 Mal editiert, zuletzt von DuffMan ()