SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 13 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Criando uma arma de choque (taser) Jonorusc

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11644
    Moedas : 1032955
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    [Tutorial] Criando uma arma de choque (taser) Jonorusc  Empty [Tutorial] Criando uma arma de choque (taser) Jonorusc

    Mensagem por Weslley_Script Sex 24 Mar 2023 - 19:24

    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 код:

    Código:
    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(x != 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 код:

    Código:
    #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 код:

    Código:
    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(playerid, 0); //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(playerid, 0, 18642, 6, 0.06, 0.01, 0.08, 180.0, 0.0, 0.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 код:

    Código:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
        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 код:

    Código:
    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.0, 1, 0, 0, 0, 0); //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(vitima, vida); //getamos
            SetPlayerHealth(vitima, vida - 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 код:

    Código:
    //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(x != p1)
                {
                    dis2 = GetDistanceBetweenPlayers2(x,p1);
                    if(dis2 < dis && dis2 != -1.00)
                    {
                        dis = dis2;
                        player = x;
                    }
                }
            }
        }
        return player;


    PHP код:

    Código:
    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 код:

    Código:
    //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));

    Creditos: Jonorusc 



    [Tutorial] Criando uma arma de choque (taser) Jonorusc  D07Xwqb
    [Tutorial] Criando uma arma de choque (taser) Jonorusc  Yjab9HN

      Data/hora atual: Qua 27 Nov 2024 - 5:34