[Tutorial] Criando uma arma de choque (taser)
#1

TLG QUE VOCКS SABE QUE TEM UM TASER NO GTA SAN ANDRES. RESOLVI CRIAR UM JEITO DE DБ CHOQUE EM VAGABUNDO SE O TEU SERVIDOR TIVER POLICIA.
PRIMEIRAMENTE.
USEI 2 FUNЗХES:
PHP код:
forward GetClosestPlayer(playerid);
public 
GetClosestPlayer(p1)
{
    new 
x,Float:dis,Float:dis2,player;
    
player = -1;
    
dis 99999.99;
    for (
x=0;x<MAX_PLAYERS;x++)
    {
        if(
IsPlayerConnected(x))
        {
            if(
!= p1)
            {
                
dis2 GetDistanceBetweenPlayers2(x,p1);
                if(
dis2 dis && dis2 != -1.00)
                {
                    
dis dis2;
                    
player x;
                }
            }
        }
    }
    return 
player;
}
stock GetDistanceBetweenPlayers(playerid,playerid2
{
    new 
Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    new 
Float:tmpdis;
    
GetPlayerPos(playerid,x1,y1,z1);
    
GetPlayerPos(playerid2,x2,y2,z2);
    
tmpdis floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
    return 
floatround(tmpdis);

E O TUTORIAL EU CRIEI NO SUBLIME (CRIANDO E COMENTANDO, ENTГO EU GARANTO QUE VOCКS ENTENDERAM OQUE ESTБ COMENTADO).

PHP код:
#include "a_samp"
#include "ZMCD"
//usaremos no timer (macros)
#define minutos(%0) (1000 * %0 * 60)
#define horas(%0) (1000 * %0 * 60 * 60)
#define segundos(%0) (1000 * %0)
new PlayerComTaser[MAX_PLAYERS]; //variavel para mostrar se o jogador estб com o taser ou nгo!
new SofrendoChoque[MAX_PLAYERS]; //variavel que contaremos 10 segundos, para a vitima volta a conciкncia;
new TimerEstribuchando[MAX_PLAYERS]; 
PHP код:
CMD:equipartaser(playerid,params[]) //comando criado com o processador de comandos "ZCMD"
{
    if(
PlayerComTaser[playerid] == 1//checagem para ver se o jogador estб com taser, se true, o taser ira ser destruido
    
{
        
RemovePlayerAttachedObject(playerid0); //retiramos o taser da mгo do jogador!
        
PlayerComTaser[playerid] = 0// retornamos 0 a variavel, para quando ele for usar o comando, a checagem de quipado nгo o detectar
        
SendClientMessage(playerid, -1"[TASER] Vocк desequipou o taser /equipartaser");
    }
    else 
//se nao estiver equipado, o jogador irб equipar-lo
    
{
        
SetPlayerAttachedObject(playerid01864260.060.010.08180.00.00.0); //colocamos o taser na mгo do jogador
        
PlayerComTaser[playerid] = 1//retornamos 1 para quando a checagem de equipado checar, detectar que o jogador estб com taser
        
SendClientMessage(playerid, -1"[TASER] Vocк equipou seu taser aperte botгo esquerdo do mouse, perto de algъem!");
    }
    return 
1;

PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
newkeys KEY_FIRE//se ele clicar o botгo esquerdo do mause!
    
{
        if(
PlayerComTaser[playerid] == 1//e se ele aperta o botгo direito do mouse, e estiver com o taser equipado ira retorna verdadeiro
        
{
           
//usaremos uma funзгo chamada: GetClosestPlayer para verificar se o jogador estб perto de outro jogador, (para usar o taser, assim como usa a faca);
            
new vitima GetClosestPlayer(playerid); //comentada na public
            
if(GetDistanceBetweenPlayers(playerid,vitima) < 2
            { 
                
//nesse intervalo de tempo, o processsador ja verificou se tem player perto do playerid, se tiver acontecerб o "choque"
                //if(GetDistanceBetweenPlayers(playerid,vitima) < 2) se o playerid, estiver em uma distancai menor que 2 da vitima o choque irб de acontecer
                //ent se a distancia estiver correta retornamos verdeiro
                
ApplyAnimation(playerid,"KNIFE","knife_3",4.1,0,1,1,0,0,1); //o playerid, vai da o efeito que ele meteu o taser no pescoзo da vitima, (podem muda para 2 ou 1 (tasezada no bucho));
                //agora vamos tentar coloca uma animaзгo para a vitimar fica estribuchando...
                //Vamos Criar um timerEx, para deixa a vitima estribuchando por 10 segundos;
                
TimerEstribuchando[vitima] = SetTimerEx("Estribuchando"segundos(1), true"i"vitima); //1000*1 = 1 segundos, true, pra fica repetindo, quadno chegar a 10, vms para de deixa ele estribuchando
PlayAudioStreamForPlayer(vitima"https://dl.dropboxusercontent.com/s/ajblgj77pjw7wvl/10convert.com_Som-De-Eletricidade-Audio-Enegia-Eletrica_04EnHH5G2qc.mp3");
            }
        }
        else
        {
            return 
0// se n tiver com o taser nada acontece, (vc pode optar por nгo usar esse else);
        
}
    }
    return 
1;

PHP код:
stock Estribuchando(vitima//aqui e a funзгo chamada pelo o timerex: SetTimerEx("Estribuchando", 1000*10, false, "i", vitima); 
{
    
SofrendoChoque[vitima]++; //+1 a cada 1 segundo.
    
if(SofrendoChoque[vitima] == 18//se a cada 1 segundo, ira chamar essa stock e a cada segundo ela criara mais um valor, ent se chega a 10, se passaram 10 segundos
        //aumentei para 18 pq achei um audio de 18 segundos, um audio de choque, 18 segundos levando choque.
    
{
         
SendClientMessage(vitima, -1"[TASER] De volta а conciкncia");
         
ClearAnimations(vitima,1); //tiramos a animaзгo da vitima.
         
StopAudioStreamForPlayer(vitima); //retirar o som de choque, mas ele ira para automaticamente, pq e 18 segundos...
KillTimer(TimerEstribuchando[vitima]);
SofrendoChoque[vitima] = 0;
    }
    else 
//se nгo ele vai ficar se estribuchando...
    
{
        
//nгo echei uma animaзгo de estribuchando, (quem achar e somente substituir)
        
ApplyAnimation(vitima"CRACK""crckdeth2"4.010000); //overdose
        //http://www.samp-vicio.tk/2014/07/tut-animacoes.html
        
new Float:vida//criamos uma variavel com o valor float, para getar a vida da vitima
        
GetPlayerHealth(vitimavida); //getamos
        
SetPlayerHealth(vitimavida 1.0); //aplicamos a vida da vitima em - 10
        //a cada 1 segungo ele perderб vida, ao total perderб 18 de life. 
        //som que upei no dropbox:
        //https://www.dropbox.com/home?preview=10convert.com_Som-De-Eletricidade-Audio-Enegia-Eletrica_04EnHH5G2qc.
    
}
    return 
1;

PHP код:
//a funзгo getclosetplayer, ela verifica o player que estб perto do playerid, e retorna ele!
forward GetClosestPlayer(playerid);
public 
GetClosestPlayer(p1)
{
    new 
x,Float:dis,Float:dis2,player;
    
player = -1;
    
dis 99999.99;
    for (
x=0;x<MAX_PLAYERS;x++)
    {
        if(
IsPlayerConnected(x))
        {
            if(
!= p1)
            {
                
dis2 GetDistanceBetweenPlayers2(x,p1);
                if(
dis2 dis && dis2 != -1.00)
                {
                    
dis dis2;
                    
player x;
                }
            }
        }
    }
    return 
player;

PHP код:
stock GetDistanceBetweenPlayers(playerid,playerid2//verifica a distancia entre os players escolhidos e retorna algo
{
    new 
Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    new 
Float:tmpdis;
    
GetPlayerPos(playerid,x1,y1,z1);
    
GetPlayerPos(playerid2,x2,y2,z2);
    
tmpdis floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
    return 
floatround(tmpdis);

PHP код:
//FAZ PARTE DA CHECAGEM
forward Float:GetDistanceBetweenPlayers2(p1,p2);
public 
Float:GetDistanceBetweenPlayers2(p1,p2)
{
    new 
Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    if(!
IsPlayerConnected(p1) || !IsPlayerConnected(p2))
    {
        return -
1.00;
    }
    
GetPlayerPos(p1,x1,y1,z1);
    
GetPlayerPos(p2,x2,y2,z2);
    return 
floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));

Reply


Messages In This Thread
Criando uma arma de choque (taser) - by Jonorusc - 14.09.2017, 23:32
Re: Criando uma arma de choque (taser) - by SerjaumBerranteiro - 14.09.2017, 23:40
Re: Criando uma arma de choque (taser) - by SerjaumBerranteiro - 14.09.2017, 23:42
Re: Criando uma arma de choque (taser) - by Jonorusc - 14.09.2017, 23:45
Re: Criando uma arma de choque (taser) - by IlanZ - 15.09.2017, 00:11
Re: Criando uma arma de choque (taser) - by IlanSilva - 15.09.2017, 00:13
Re: Criando uma arma de choque (taser) - by C4rtm4n - 15.09.2017, 00:43
Re: Criando uma arma de choque (taser) - by ThiagoMikael - 15.09.2017, 02:18
Re: Criando uma arma de choque (taser) - by C4rtm4n - 15.09.2017, 02:28
Re: Criando uma arma de choque (taser) - by Jonorusc - 15.09.2017, 02:49

Forum Jump:


Users browsing this thread: 1 Guest(s)