Ayuda con 3dTextLabel
#1

Bueno, tengo un 3DTextLabel que esta arriba de la cabeza del player que le muestra el .

Tengo asi:

pawn Код:
//arriba de todo:
new Text3D:TriDi[MAX_PLAYERS];

//en OnPlayerSpawn:
SetTimerEx("TresDe",1000,0,"d",playerid);

//en cualquier lugar:
forward TresDe(playerid);
public TresDe(playerid)
{
 Delete3DTextLabel(TriDi[playerid]);
 new Speach = GetPlayerScore(playerid);
 new string[256];
 format(string, sizeof(string),"[Score:%d]", Speach);
 TriDi[playerid] = Create3DTextLabel(string,COLOR_WHITE,0,0,0,20.0,0);
 Attach3DTextLabelToPlayer(TriDi[playerid],playerid,0.0,0.0,0.4);
 return 1;
}
El problema es que eso se le muestra solo a un player conectado, por lo general al ultimo que se le spawnea, osea se le ve solo a un player, no a todos. Help
Reply
#2

Bueno lo que yo creo es que , el problema biene en que tienes "SetTimerEx" que su funcion es solo aparecer solo una vez , y el SetTimer es siempre constante

Bueno espero haberte ayudado
Reply
#3

Pero es que no entiendo como ponerlo, aver si alguien puede ayudarme
Reply
#4

їQuй quieres que se muestre? їEl score?
Reply
#5

Si.. el score.
Reply
#6

Quote:
Originally Posted by [TBB
Darkness ]
Bueno lo que yo creo es que , el problema biene en que tienes "SetTimerEx" que su funcion es solo aparecer solo una vez , y el SetTimer es siempre constante

Bueno espero haberte ayudado
Wrong answer

El "SetTimerEx" es para timers con parametros (tipo playerid, float, etc), y el timer es uno sin parametros generalmente de uso al inicio

Te recomiendo hacerlo asi:

pawn Код:
// Variable
new Text3D:TriDi[MAX_PLAYERS];
new PlayerTimer[MAX_PLAYERS];

// OnPlayerSpawn
public OnPlayerSpawn(playerid)
{
   
   new string[255];
   new Speach = GetPlayerScore(playerid);
   format(string, sizeof(string),"[Score:%d]", Speach);
   TriDi[playerid] = Create3DTextLabel(string,COLOR_WHITE,0,0,0,20.0,0);
   Attach3DTextLabelToPlayer(TriDi[playerid],playerid,0.0,0.0,0.4);
   PlayerTimer[playerid] = SetTimerEx("Upds", 1000, 1, "d", playerid);
   return 1;
}

// OnPlayerDeath(playerid)
public OnPlayerDeath(playerid, killerid, reason)
{
   Delete3DTextLabel(TriDi[playerid]);
   KillTimer(PlayerTimer[playerid]);
   return 1;
}

// Callback
forward TresDe(playerid);
public TresDe(playerid)
{
   new Speach = GetPlayerScore(playerid);
   new string[256];
   format(string, sizeof(string),"[Score:%d]", Speach);
   Update3DTextLabelText(TriDi[playerid], COLOR_WHITE, string)
   return 1;
}
No lo he testeado, pero deberia funcionar.
Reply
#7

Muchas gracias chri, funciona, me has ayudado de nuevo
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)