http://fs2.directupload.net/images/150118/h7llyksz.png
Wie kann man sowas erstellen?
ich weis nicht mal wie man den namen und alte lebensanzeige entfernen kann^^
http://fs2.directupload.net/images/150118/h7llyksz.png
Wie kann man sowas erstellen?
ich weis nicht mal wie man den namen und alte lebensanzeige entfernen kann^^
Mit
http://wiki.sa-mp.com/wiki/ShowNameTags
kannst du Name, HP und Armour entfernen.
Mit
http://wiki.sa-mp.com/wiki/Create3DTextLabel
kannst du ein Label erstellen und mit http://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer
an einen Spieler setzen und mit http://wiki.sa-mp.com/wiki/Update3DTextLabelText verändern.
Folgendes brauchst du um den Namen eines Spieler auszulesen
http://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer
für das Leben
http://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer
und für die Rüstung
http://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer
Wie kann ich jetzt z.B.
name bei dem ersten %s auslesen lassen? bei einem 3dlabel?
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new Text3D:label = Create3DTextLabel("%s (%d)\n%d", 0x008080FF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.7);
new str[128];
format(str, sizeof(str), "%s (%d)\n%d", name, playerid, 1); //Die 1 ersetzen mit der Variable die du da haben willst.
new Text3D:label = Create3DTextLabel(str, 0x008080FF, 30.0, 40.0, 50.0, 40.0, 0);
Habe das ja jetzt so
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new str[128];
format(str, sizeof(str), "%s (%d)\n%d", name, playerid, 1); //Die 1 ersetzen mit der Variable die du da haben willst.
new Text3D:label = Create3DTextLabel(str, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.2);
Jetzt ist die Frage wie kann ich das aktuelle leben anzeigen lassen :o
new Float:pHP;
GetPlayerHealth(playerid,pHP);
format(str, sizeof(str), "%s (%d)\n%0.2f", name, playerid, pHP);
new name[MAX_PLAYER_NAME], Float:pHP;
GetPlayerName(playerid, name, sizeof(name));
GetPlayerHealth(playerid,pHP);
new str[128];
format(str, sizeof(str), "%s (%d)\n%0.2f", name, playerid, pHP); //Die 1 ersetzen mit der Variable die du da haben willst.
new Text3D:label = Create3DTextLabel(str, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.2);
Habe das jetzt so
aber InGame steht 0.00 hp
debugge das mal:
füger unter format folgende Zeile ein:
printf("pHP: %f", pHP);
Und schau was in der Serverlog steht.
In welchem Callback (public) hast du diesen Code?
Eventuell hat der Spieler da noch keine HP.
Alles anzeigendebugge das mal:
füger unter format folgende Zeile ein:
printf("pHP: %f", pHP);
Und schau was in der Serverlog steht.
In welchem Callback (public) hast du diesen Code?
Eventuell hat der Spieler da noch keine HP.
OnPlayerConnect ist das alles
mir wird geprintet:
[16:23:24] pHP: 0.000000
vil weil
Update3DTextLabelText(mylabel, 0xFFFFFFFF, "New text.");
sowas eingefügt werden muss für pHP da es ja ein 3dlabel ist aber wie mache ich das dann ..
Ok, das passt soweit schon, nur musst du das aktualisieren. (in OnPlayerConnect hat der Spieler noch keine HP).
Entweder du updatest es in einem Sekundentimer,
oder du updatest beim Login und bei OnPlayerTakeDamage (würde ich empfehlen)
e
Ok, das passt soweit schon, nur musst du das aktualisieren. (in OnPlayerConnect hat der Spieler noch keine HP).
Entweder du updatest es in einem Sekundentimer,
oder du updatest beim Login und bei OnPlayerTakeDamage (würde ich empfehlen)
Ich will es in OnPlayerTakeDamage und Login haben ..
aber ich weis nicht genau wie ich das schreiben muss
sowas eingefügt werden muss für pHP da es ja ein 3dlabel ist aber wie mache ich das dann ..
Du machst einen Timer (OnPlayerTakeDamage ist schlecht, da es dann 0 ist, bis du einen Schaden bekommst) von einer Sekunde bei OnGameModeInit:
SetTimer("updateTimer", 1000, 1);
Das Label erstellst du als Array unter den Includes:
new Text3D:label[MAX_PLAYERS];
Und das schreibst du ganz unten in den Gamemode.
forward updateTimer();
public updateTimer()
{
new str[128];
new name[MAX_PLAYER_NAME], Float:pHP;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
GetPlayerName(i, name, sizeof(name));
GetPlayerHealth(i,pHP);
format(str, sizeof(str), "%s (%d)\n%0.2f", name, i, pHP);
Update3DTextLabelText(label[i],0xFFFFFFFF,str);
}
return 1;
}
Außerdem musst du "label" zu "label[playerid]" bei OnPlayerConnect ändern, und das Label auch bei OnPlayerDisconnect wieder löschen.
Es wäre eigentlich besser, wenn man das Label von grundauf auf 100 setzt & es dann bei OnPlayerTakeDamage updatet.
Hab das jetzt alles eingefügt.
Wenn ich das einfüge,
public OnPlayerDisconnect(playerid)
{
DeletePlayer3DTextLabel(playerid, label);
}
Kriege ich einen error
Und was genau muss ich hier machen :o
new name[MAX_PLAYER_NAME], Float:pHP;
GetPlayerName(playerid, name, sizeof(name));
GetPlayerHealth(playerid,pHP);
new str[128];
format(str, sizeof(str), "%s (%d)\n%0.2f", name, playerid, pHP); //Die 1 ersetzen mit der Variable die du da haben willst.
printf("pHP: %f", pHP);
new Text3D:label = Create3DTextLabel(str, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0); //WARNING ZEILE
Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.2);
wenn ich hinter label[playerid] mache kriege ich ebenso auch einen error
und habe einen warning C:\Users\Heiko\Desktop\Script\gamemodes\grandlarc.pwn(59) : warning 219: local variable "label" shadows a variable at a preceding level
public OnPlayerDisconnect(playerid)
{
DeletePlayer3DTextLabel(playerid, label[playerid]);
return 1;
}
new name[MAX_PLAYER_NAME], Float:pHP;
GetPlayerName(playerid, name, sizeof(name));
GetPlayerHealth(playerid,pHP);
new str[128];
format(str, sizeof(str), "%s (%d)\n%0.2f", name, playerid, pHP); //Die 1 ersetzen mit der Variable die du da haben willst.
printf("pHP: %f", pHP);
label[playerid] = Create3DTextLabel(str, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0); //WARNING ZEILE
Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.2);
Alles anzeigenpublic OnPlayerDisconnect(playerid)
{
DeletePlayer3DTextLabel(playerid, label[playerid]);
return 1;
}
new name[MAX_PLAYER_NAME], Float:pHP;
GetPlayerName(playerid, name, sizeof(name));
GetPlayerHealth(playerid,pHP);
new str[128];
format(str, sizeof(str), "%s (%d)\n%0.2f", name, playerid, pHP); //Die 1 ersetzen mit der Variable die du da haben willst.
printf("pHP: %f", pHP);
label[playerid] = Create3DTextLabel(str, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0); //WARNING ZEILE
Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.2);
Klappt danke an alle für die Hilfe.
- > Habe es nun auch für rüstung gemacht^^
screen:
habe das gleiche problem
wie macht man das nochmal mit else
forward updateTimer();
public updateTimer()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new str[128];
new name[MAX_PLAYER_NAME], Float:pHP, Float:armour;
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
{
GetPlayerName(i, name, sizeof(name));
GetPlayerHealth(i,pHP);
GetPlayerArmour(i,armour);
format(str, sizeof(str), "%s (%d)\n%0.2f HP | %0.2f R", name, i, pHP, armour);
Update3DTextLabelText(label[i],0xFFFFFFFF,str);
}
else
556 {
if(IsPlayerOnDesktop(i))
GetPlayerName(i, name, sizeof(name));
GetPlayerHealth(i,pHP);
GetPlayerArmour(i,armour);
format(str, sizeof(str), "AFK/Desktop/%s (%d)\n%0.2f HP | %0.2f R", name, i, pHP, armour);
Update3DTextLabelText(label[i],0xFFFFFFFF,str);
}
return 1;
}
errorcode
gamemodes\grandlarc.pwn(95) : warning 213: tag mismatch
gamemodes\grandlarc.pwn(104) : warning 204: symbol is assigned a value that is never used: "randSpawn"
gamemodes\grandlarc.pwn(556) : error 029: invalid expression, assumed zero
gamemodes\grandlarc.pwn(567) : error 030: compound statement not closed at the end of file (started at line 544)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.