gibt es keine möglichkeit dies umzusetzen
Doch natürlich, nur dachte so wäre es deutlich leichter, weil diese Funktion genau dafür ist...und kp, inwiefern da ein TextLabel überhaupt den Unterschied macht...
Naja, du könntest folgendes machen:
C
//Oben im Skript
new Text3D:dmgLabel[MAX_PLAYERS] = {Text3D:-1, ...};
new dmgTimer[MAX_PLAYERS];
//Und dann unter OnPlayerTakeDamage
new string[32];
format(string,sizeof(string),"DMG: %.02f",amount);
if(dmgLabel[playerid] != Text3D:-1) Update3DTextLabelText(dmgLabel[playerid], 0xFF0000FF, string),KillTimer(dmgTimer[playerid]);
else dmgLabel[playerid] = Create3DTextLabel(string, 0xFF0000FF, 0,0,0, 20.0, GetPlayerVirtualWorld(playerid), 0),Attach3DTextLabelToPlayer(dmgLabel[playerid],playerid, 0,0,0.4);
dmgTimer[playerid] = SetTimerEx("@DeleteDmgDraw",1000*3,0,"i",playerid); //1000*3 = 3 Sekunden
//Und dann außerhalb:
@DeleteDmgDraw(i);@DeleteDmgDraw(i) {
Delete3DTextLabel(dmgLabel[i]);
dmgTimer[i] = -1;
dmgLabel[i] = Text3D:-1;
}
Alles anzeigen