Hi,
ich wollte mal fragen, wie man mit Textdraw eine Variable anzeigt? Damit wollte ich den Score von zwei Teams anzeigen lassen.
Mfg. Marc_307
Hi,
ich wollte mal fragen, wie man mit Textdraw eine Variable anzeigt? Damit wollte ich den Score von zwei Teams anzeigen lassen.
Mfg. Marc_307
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.
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
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);
ZitatFüge dann das in einen Timer ein:
Wie denn in einen Timer einfügen?
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;
}
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
Ok, sorry, mein Fehler, aber wo muss jetzt stehen, wo das TextDraw positioniert werden soll?
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.
Ok,das hab ich auch schon versucht, aber es kommen dann zwei Fehlermeldungen:
error 017: undefined symbol "score1"
error 017: undefined symbol "score2"
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
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.
Thanks, thanks and thanks again.