Sistema de dano causado em text label.
#1

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.

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]; 
ela irб servir para guardar os text labels dos danos.

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=0100 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(playeridfHitPos[0], fHitPos[1], fHitPos[2], fHitPos[0], fHitPos[1], fHitPos[2]); //Pegando a colisгo do tiro.
            
textoDano[playerid][i] = CreateDynamic3DTextLabel(danoTexto0xFFFFFFFFfHitPos[0], fHitPos[1], fHitPos[2], 100.0INVALID_PLAYER_IDINVALID_VEHICLE_ID0); //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"1500false"ii"playeridi);//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(playeriddamagedidFloat:amountweaponidbodypart)
{
     
MostrarTextoDano(playerid,damagedid,amount);

Exemplo 2:
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloat:amountweaponidbodypart)
{
     
MostrarTextoDano(issuerid,playerid,amount);

Exemplo 3:
PHP Code:
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)
{
     
MostrarTextoDano(playerid,hitid,amount);

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)