Hallo,
ich wollte fragen, wie ich das mit OnPlayerDeath realisieren kann, dass bei einem Textdraw für einen Player ( playerid ) der Textdraw um eines erhöht wird.
Liebe Grüße
Hallo,
ich wollte fragen, wie ich das mit OnPlayerDeath realisieren kann, dass bei einem Textdraw für einen Player ( playerid ) der Textdraw um eines erhöht wird.
Liebe Grüße
[ SCRIPTING ] Score Anzeige mit einem Textdraw
Kills: %d formatieren und die Kills abfragen und in ein Textdrawstring setzen, und durch ein Timer Updaten lassen (so mach ichs)
Schritte zur Realisierung:
Ein Timer ist hier überflüssig, da der Callback OnPlayerDeath() vorhanden ist.
Ja, wie soll ich das updaten.
Habe einen Textdraw extra für die Zahl.
Kann ich das so machen, z.B. wie bei Visual Basic TextDrawSetString("+=1", Kills2);
Also, es muss ja nur +1 gerechnet werden, aber wie?
Im Tutorial steht alles, denn ich dir GEschickt habe.
unter OnPlayerDeath den Kills ganz normal eins dazu geben (bei mir bspw. so: Spieler[playerid][Kills] ++;
ich hab dann ein public namens update() und darin:
public update()
{
for(new playerid = 0; playerid < GetMaxPlayers(); playerid++)
{
if(IsPlayerConnected(playerid))
{
new str[16];
format(str,sizeof(str),"Kills: %d",Spieler[playerid][Kills]);
TextDrawSetString(kills[playerid],str);
}
}
return 1;
}
Es ist nicht möglich einer Zahl in einem String zu rechnen. Was dennoch möglich ist ist folgendes:
new deaths[MAX_PLAYERS];
new kills[MAX_PLAYERS];
new PlayerText:deathcounter;
new PlayerText:killcounter;
public OnPlayerDeath(playerid, killerid, reason) {
new deathstr[5],
killstr[5];
PlayerTextDrawHide(playerid, deathcounter);
PlayerTextDrawHide(killerid, killcounter);
deaths[playerid]++;
kills[killerid]++;
valstr(deathstr, deaths[playerid]);
valstr(killstr, kills[killerid]);
PlayerTextDrawSetString(playerid, deathcounter, deathstr);
PlayerTextDrawSetString(killerid, killcounter, killstr);
PlayerTextDrawShow(playerid, deathcounter);
PlayerTextDrawShow(killerid, killcounter);
}
Hier einmal Tag mismatch
PlayerTextDrawHide(playerid, Death2);
PlayerTextDrawHide(killerid, Kills2);
undefined symbol varlstr
varlstr(deathstr, deaths[playerid]);
1, Es muss natürlich valstr() heißen und nicht varlstr().
2, Es könnte sein, dass du mit normalen Textdraws arbeitest. In diesem Fall habe ich im Beispiel Player-Textdraws verwendet, da diese hier viel Sinn ergeben würden. Dein bzw. der Quellcode des Beispiels müsste natürlich vor Verwendung angepasst werden.
Es ist nicht möglich einer Zahl in einem String zu rechnen. Was dennoch möglich ist ist folgendes:
Willst du damit sagen, meine Methode funktioniert nicht? Wenn ja, doch funktionierts, wenn nicht, ignorieren
Willst du damit sagen, meine Methode funktioniert nicht? Wenn ja, doch funktionierts, wenn nicht, ignorieren
Deine Variante habe ich mir nicht angesehen. Meine Bemerkung hat sich lediglich auf das Beispiel des Thread-Erstellers bezogen:
TextDrawSetString("+=1", Kills2);
Wie kann ich meine Textdraws umformen?
Death2 = TextDrawCreate(401.000000, 391.000000, "0"); // Tode Anzahl
TextDrawBackgroundColor(Death2, 255);
TextDrawFont(Death2, 3);
TextDrawLetterSize(Death2, 0.659999, 1.600000);
TextDrawColor(Death2, 7864575);
TextDrawSetOutline(Death2, 0);
TextDrawSetProportional(Death2, 1);
TextDrawSetShadow(Death2, 1);
Kills2 = TextDrawCreate(221.000000, 391.000000, "0"); // Morde Anzahl
PlayerTextDrawCreate
TextDrawBackgroundColor(Kills2, 255);
TextDrawFont(Kills2, 3);
TextDrawLetterSize(Kills2, 0.569999, 1.700000);
TextDrawColor(Kills2, -1358954241);
TextDrawSetOutline(Kills2, 0);
TextDrawSetProportional(Kills2, 1);
TextDrawSetShadow(Kills2, 1);
Zu was möchtest du sie denn umformen? Zu Player-Textdraws?
Genau
Meist entspricht es immer dem gleichen Format. Player am Anfang der Funktion hinzufügen und die PlayerID als ersten Parameter ergänzen (Ausnahme: CreatePlayerTextDraw(playerid, ...)). Ebenfalls muss das Ganze unter OnPlayerConnect() verwendet werden. Demnach:
new PlayerText:Death2;
new PlayerText:Kills2;
public OnPlayerConnect(playerid) {
Death2 = CreatePlayerTextDraw(playerid, 401.000000, 391.000000, "0"); // Tode Anzahl
PlayerTextDrawBackgroundColor(playerid, Death2, 255);
PlayerTextDrawFont(playerid, Death2, 3);
PlayerTextDrawLetterSize(playerid, Death2, 0.659999, 1.600000);
PlayerTextDrawColor(playerid, Death2, 7864575);
PlayerTextDrawSetOutline(playerid, Death2, 0);
PlayerTextDrawSetProportional(playerid, Death2, 1);
PlayerTextDrawSetShadow(playerid, Death2, 1);
Kills2 = CreatePlayerTextDraw(playerid, 221.000000, 391.000000, "0"); // Morde Anzahl
PlayerTextDrawBackgroundColor(playerid, Kills2, 255);
PlayerTextDrawFont(playerid, Kills2, 3);
PlayerTextDrawLetterSize(playerid, Kills2, 0.569999, 1.700000);
PlayerTextDrawColor(playerid, Kills2, -1358954241);
PlayerTextDrawSetOutline(playerid, Kills2, 0);
PlayerTextDrawSetProportional(playerid, Kills2, 1);
PlayerTextDrawSetShadow(playerid, Kills2, 1);
}
Ja, das geht leider nicht.
Ich bekomme Error in den ganzen Zeilen:
warning 213: tag mismatch
LG
// Für Textdraws:
new Text:Deaths2;
new Text:Kills2;
// Für Player-Textdraws (siehe auch Quellcode oben):
new PlayerText:Deaths2;
new PlayerText:Kills2;
Danke!
So, wie zeige ich die TextDraws an?
( Bei OnPlayerSpawn )
TextDrawShowForPlayer(playerid, Death, Death2);
TextDrawShowForPlayer(playerid, Death2, Death2);
TextDrawShowForPlayer(playerid, Kills, Death2);
TextDrawShowForPlayer(playerid, Kills2, Death2);
LG
Hier sind alle benötigten Funktionen aufgelistet: http://wiki.sa-mp.com/wiki/TextDraws