PHP Code:
MostrarTextoDano(playerid,hitid,Float:dano){
new danoTexto[6]; //Variavel que sera formatada armazenando o dano.
format(danoTexto,sizeof(danoTexto),"-%.0f",dano); //Formatando a variavel danoTexto.
for(new i=0; i < 100 ; i++) //Loop para verificar qual posiзгo esta livre pra ser usada.
{
if(!IsValidDynamic3DTextLabel(textoDano[playerid][i])) //O loop vai parar quando encontrar uma posiзгo da variavel textoDano[playerid] que esteja vazia.
{
new Float:fHitPos[3]; //Variavel que irб armazenar a posiзгo em que o tiro colidio (nesse caso a parte do corpo).
GetPlayerLastShotVectors(playerid, fHitPos[0], fHitPos[1], fHitPos[2], fHitPos[0], fHitPos[1], fHitPos[2]); //Pegando a colisгo do tiro.
textoDano[playerid][i] = CreateDynamic3DTextLabel(danoTexto, 0xFFFFFFFF, fHitPos[0], fHitPos[1], fHitPos[2], 100.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0); //Criando a text labe.
Streamer_Update(playerid, -1); //Isso vai servi para que a tela do player atualize. pois, normalmente a text label so aparece quando o player se meche (ou se auto-atualize), esse funcao faz com que a tela do player atualize.
Streamer_Update(hitid, -1); //ja explicado.
SetTimerEx("ApagarTextoDano", 1500, false, "ii", playerid, i);//Um timer para apagar as text labels depois de 1.5 segundos.
return; //retorna.
}
}
}
PHP Code:
forward ApagarTextoDano(playerid,index);
public ApagarTextoDano(playerid,index)
{
DestroyDynamic3DTextLabel(textoDano[playerid][index]); //Destroi a text label.
Delete3DTextLabel(textoDano[playerid][index]); //Apagar conteudo da variavel.
}
PHP Code:
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
MostrarTextoDano(playerid,damagedid,amount);
}
Exemplo 2:
PHP Code:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
MostrarTextoDano(issuerid,playerid,amount);
}
Exemplo 3:
PHP Code:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
MostrarTextoDano(playerid,hitid,amount);
}