11.01.2019, 18:29
(
Last edited by PedroH; 12/01/2019 at 04:38 AM.
)
Eai pessoal, vim compartilhar um sistema simples.
Ideia
De primeira eu vi o sistema no topico do xtrrrr. link
Ele postou um video do servidor russo "GDM". la tem um sistema que se jogador atirar em outro jogador um texto do dano causado aparece no jogador atingido, eu achei o sistema muito interessante e como o meu passa tempo й programar decidir criar o meu propio e compartilha com vocкs.
Ao vocк atirar em um jogador ira mostrar o dano em textLabel no mesmo local onde vocк atirou.
ela irб servir para guardar os text labels dos danos.
Coloque isso fora das callbacks:
Exemplos de uso
para usar й facil, basta seguir o prototipo da funзгo.
Exemplo 1:
Exemplo 2:
Exemplo 3:
Imagens
Agradeзo ao usuбrio do forum 1sbedx por me ajudar no tуpico link, onde eu estava com um pequeno probleminha na criaзгo desse sistema.
И isso pessoal. й um sistema simples, ele pode ser inъtil para alguns servidores mas para outros ele pode ser muito importante.
Criticas construtivas serгo bem-vindas.
Obrigado.
Ideia
De primeira eu vi o sistema no topico do xtrrrr. link
Ele postou um video do servidor russo "GDM". la tem um sistema que se jogador atirar em outro jogador um texto do dano causado aparece no jogador atingido, eu achei o sistema muito interessante e como o meu passa tempo й programar decidir criar o meu propio e compartilha com vocкs.
Requisitos
O sistema vai precisar do plugin streamer para funcionar.Como funciona
Ao vocк atirar em um jogador ira mostrar o dano em textLabel no mesmo local onde vocк atirou.
Sistema
No topo do gamemode vocк cria essa variavel:PHP Code:
new Text3D:textoDano[MAX_PLAYERS][100];
Coloque isso fora das callbacks:
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.
}
Exemplos de uso
para usar й facil, basta seguir o prototipo da funзгo.
Exemplo 1:
PHP Code:
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
MostrarTextoDano(playerid,damagedid,amount);
}
PHP Code:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
MostrarTextoDano(issuerid,playerid,amount);
}
PHP Code:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
MostrarTextoDano(playerid,hitid,amount);
}
Agradeзo ao usuбrio do forum 1sbedx por me ajudar no tуpico link, onde eu estava com um pequeno probleminha na criaзгo desse sistema.
И isso pessoal. й um sistema simples, ele pode ser inъtil para alguns servidores mas para outros ele pode ser muito importante.
Criticas construtivas serгo bem-vindas.
Obrigado.