Abend Brotfische,
in diesem Tutorial möchte ich euch erklären, wie man eine genau Lebensanzeige in dem Lebensbalken scriptet.
Schritt 1. - TextDraw definierung.
Erst einmal müssen wir das Textdraw für jeden Spieler definieren. Einfach Im Script oben unter den restlichen News einfügen.
new Text:lebensanzeige[MAX_PLAYERS];
Damit haben wir nun den Text für jeden Spieler definiert, da wir das Max_Players in Klammern dahinter gesetzt haben.
Schritt 2. - TextDraw erstellen.
Nun kommen wir zum erstellen des TextDraws.
Wichtig ist es, dass ihr es unter "OnPlayerConnect" erstellt und nicht unter "OnGameModeInit", da wir ja für jeden Spieler ein eigenes brauchen.
public OnPlayerConnect(playerid)
{
lebensanzeige[playerid] = TextDrawCreate(563.000000,67.000000,"100"); // Das ist die genaue Position in dem Lebensbalken.
TextDrawSetShadow(lebensanzeige[playerid],0); // Damit die Schrift keinen Schatten hat.
TextDrawFont(lebensanzeige[playerid],1); // Die Schriftart, finde ich meiner Meinung nach am besten.
TextDrawLetterSize(lebensanzeige[playerid],0.410000,0.799999); // Die Schriftgröße, passt somit genau in den Lebensbalken.
SetTimerEx("hpanzeige",1000*10,true,"i",playerid); // Einen Timer, damit die Lebensanzeige nachher geupdatet werden kann.
return 1;
}
Nun haben wir das TextDraw für jeden Spieler, der Connected, erstellt.
Schritt 3. - TextDraw zeigen / verstecken
Damit diese Lebensanzeige im Lebensbalken auch sichtbar wird, müssen wir nun unter "OnPlayerSpawn" den TextDraw sichtbar machen.
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid,lebensanzeige[playerid]);
return 1;
}
beim Tod soll dieser für den Spieler unsichtbar gemacht werden, deshalb unter "OnPlayerDeath":
public OnPlayerDeath(playerid, killerid, reason)
{
TextDrawHideForPlayer(playerid,lebensanzeige[playerid]);
return 1;
}
Dann hätten wir schon mal das TextDraw für jeden Spieler erstellt, dass es beim Spawnen erscheint und beim Tod verschwindet. Jetzt bearbeiten wir die Funktion des Timers, damit die Lebensanzeige auch mit dem aktuellen Leben des Spielers übereinstimmt.
Schritt 4. - Timer
Den Timer haben wir als
SetTimerEx("hpanzeige",1000*10,true,"i",playerid); // 10 Sekunden, damit das alles möglichst schnell geupdatet wird.
unter "OnPlayerConnect" definiert.
Dann gehen wir ganz runter ins Script und fügen folgendes ein:
forward hpanzeige(playerid);
public hpanzeige(playerid)
{
new hptext[64]; // Der String für die Zahlen die geupdatet werden.
new Float:HP; // Eine neue Float, damit wir das Leben des Spielers auslesen können.
GetPlayerHealth(playerid,HP); // Das Leben des Spielers herausfinden.
format(hptext, sizeof(hptext),"%d",floatround(HP)); // Hier wird das herausgelesene Leben in einen String gepackt.
TextDrawSetString(lebensanzeige[playerid],hptext); // Und hiermit wird der String im TextDraw geupdatet.
}
Damit hätten wir in vier einfachen Schritten, eine genaue Serverseitige Lebensanzeige.
Dies kann man natürlich auch mit der Rüstung des Spielers machen.
Ich hoffe ich konnte es euch so leicht wie möglich erklären, falls noch Fragen offen sein sollten, könnt ihr diese ruhig stellen
Mit freundlichem Gruß,
coVer