[AJUDA]Continuando a arrumar meu sistema de head shot...
#1

Precisei fazer outro tуpico,porque o outro jб foi atй esquecido,eu tava ausente aqui,e nгo deu pra eu responder no outro,por isso venho a fazer outro topico,pedindo a ajuda novamente.
Para os que tinham visto meu sistema,eu atй disse que tava dando muitos erros,mas foi por causa de um "return" que colocaram no cуdigo.
era o sistema de setar as armas que podem dar head shot
aki ta o vodigo,que faz dar erros,se coloca o return nele
se eu coloco o return,igual o shickcard,o the knight,etc fizeram,da erro no gm inteiro,se colcoa o return.
por isso preciso de um codigo que sete as armas que podem dar head shot
os que estavam acompanhando meu outro topico podem continuar a me ajudar?
obrigadolembram-se do meu codigo de head shot?
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(GetPVarInt(playerid, "Headshotted") == 1)
    {
        SetPVarInt(playerid, "Headshotted", 0);
        new string[256];
        new pname[MAX_PLAYER_NAME];
        GetPlayerName(killerid, pname, MAX_PLAYER_NAME);
        format(string, sizeof(string), " O(A) jogador(a) %s acertou sua cabeзa! Vocк morreu na hora!", pname);
        SendClientMessage(playerid,COLOR_BRIGHTRED, string);
        GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
        format(string, sizeof(string), " Vocк acertou a cabeзa do(a) jogador(a) %s! Matou ele(a) na hora!", pname);
        SendClientMessage(killerid,COLOR_HEADGREEN, string);
    }
return 1;
}

public OnGameModeInit()
{
SetTimer("CheckHeadShot", TIMER_INTERVAL, 1);
return 1;
}

forward CheckHeadShot();
public CheckHeadShot()
{
    new index;
    for(new playerid; playerid < maxPlayers; playerid++)
    {
        if(IsPlayerConnected(playerid))
        {
        index = GetPlayerAnimationIndex(playerid);
        if(index == 1173 || index == 1175 || index == 1177 || index == 1178)
        {
                SetPVarInt(playerid, "Headshotted", 1);
                SetPlayerHealth(playerid, 0);
            }
        }
    }
    return 1;
}
lembram-se?
eu queria saber selecionar as armas que da pra dar um head shot.
Eu queria que somente as armas que "atiram" podem dar head shot.
Por exemplo,o cara no server pegou uma faca e acertou minha cabeзa,e eu morri,isso naum pode acontecer,tem que ser so se der um tiro na cabeзa,com astao,faca,katana,etc,armas "brancas" nгo pode dar pra matar aacertando a cabeзa.
entendem?
podem acabar de me ajudar?
Como setar apenas as armas de fogo para dar head shot?
aguardo ajuda
Reply
#2

Isto deve resolver o seu problema .


Na sua public CheckHeadShot, coloque bem acima dessa linha:


pawn Код:
SetPVarInt(playerid, "Headshotted", 1);

Este cуdigo:


pawn Код:
new armaID = GetPlayerWeapon(playerid);
if(armaID == 16 || armaID == 12 || armaID == 17 || armaID == 18) return true; //Coloque dentro dos parкnteses do if, o ID darmas "brancas", como o taco :D

Para aumentar o tamanho do cуdigo dentro dos parкnteses do if, acrescentando como no exemplo abaixo (inspirado no cуdigo postado acima) :


Код:
if(armaID == 16 || armaID == 12 || armaID == 17 || armaID == 18  || armaID == 20)

Espero ter ajudado
Reply
#3

pawn Код:
new armaID = GetPlayerWeapon(playerid);
isso vai verificar a arma que o jogador que vai sofrer o headshot estб e nгo quem atirou rjj... o cуdigo dele nгo verifica quem atirou no jogador por tanto nгo tem como fazer isso. Como jб te falei mais de 5 vezes cara, vocк tem que mudar o seu sistema de headshots, jб й seu terceiro tуpico meu amigo.
Reply
#4

jeito eu tenho certeza que tem,e o rjj,ta dando tipo um "bug" no seu codigo,nenhuma arma esta dando head shot,apenas a desert eagle,e tambem,as armas brancas continuam dando head shot,alem de que nao esta aparecendo no canto direito da tela,quem matou quem,sabe? akeles icones das armas,ate que mostra quem matou quem,pararam de aparecer! este codigo nao funcionou,jeito de fazer eu tenho certeza que tem,preciso de ajuda
desde ja obrigado.
Reply
#5

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
pawn Код:
new armaID = GetPlayerWeapon(playerid);
isso vai verificar a arma que o jogador que vai sofrer o headshot estб e nгo quem atirou rjj... o cуdigo dele nгo verifica quem atirou no jogador por tanto nгo tem como fazer isso. Como jб te falei mais de 5 vezes cara, vocк tem que mudar o seu sistema de headshots, jб й seu terceiro tуpico meu amigo.

Ih, й mesmo , nгo percebi esse detalhe .



Obrigado por me avisar , e desculpas ao criador do tуpico .




Quote:
Originally Posted by Detonador
Посмотреть сообщение
jeito eu tenho certeza que tem,e o rjj,ta dando tipo um "bug" no seu codigo,nenhuma arma esta dando head shot,apenas a desert eagle,e tambem,as armas brancas continuam dando head shot,alem de que nao esta aparecendo no canto direito da tela,quem matou quem,sabe? akeles icones das armas,ate que mostra quem matou quem,pararam de aparecer! este codigo nao funcionou,jeito de fazer eu tenho certeza que tem,preciso de ajuda
desde ja obrigado.

Bem, realmente й possнvel mas, como disse o [S]trong, seria necessбrio trocar o seu sistema de HeadShot, ou reformб-lo, pois ele apenas checa se determinado jogador foi ferido e jб o mata, em outras palavras, ele nгo envolve o atirador .



Whatever, reformei o seu sistema por completo , leia os comentбrios (em verde).



pawn Код:
//Coloque no Topo do GM:


new Float:VidaAtual[MAX_PLAYERS];
new Float:VidaAntiga[MAX_PLAYERS];
new Float:Dano[MAX_PLAYERS];
new ArmasBrancas[8] = {20,21,22,23,24,25};  //Troque os nъmeros daqui pelos IDs das armas "proibidas". Adapte o tamanho do vetor de acordo com a quantidade de IDs.
#define Espaco_Radial 50.0   //Aumente este para aumentar a distancia minima entre atirador e vitima, para que o sistema seja acionado



//No OnPlayerUpdate ficarб assim:



public OnPlayerUpdate(playerid)
{
    GetPlayerHealth(playerid, VidaAtual[playerid]);
    if(VidaAtual[playerid] < VidaAntiga[playerid])
    {
        Dano[playerid] = (VidaAntiga[playerid] - VidaAtual[playerid]);
        new Float:AroudPos[3],y;
        GetPlayerPos(playerid,AroudPos[0],AroudPos[1],AroudPos[2]);
        switch(GetPlayerAnimationIndex(playerid))
        {
            case 1173,1175,1177,1178:
            {
                for(new z; z != MAX_PLAYERS; z++)
                {
                    if(IsPlayerInRangeOfPoint(z, Espaco_Radial, AroudPos[0],AroudPos[1],AroudPos[2]) && GetPlayerWeapon(z) > 0)
                    {
                        while(y < sizeof(ArmasBrancas))
                        {
                            if(GetPlayerWeapon(z) != ArmasBrancas[y])
                            {
                                y++;
                                if(y == (sizeof(ArmasBrancas) - 1))
                                {
                                    SetPVarInt(playerid, "Headshotted", 1),SetPlayerHealth(playerid, 0);
                                    goto Finalizar;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    Finalizar:
    GetPlayerHealth(playerid, VidaAntiga[playerid]);
    return 1;
}


Espero ter ajudado .
Reply
#6

mas eu preciso que apareзa a mensagem,como estб no meu sistema,para quem matou(killerid) e para quem morreu(playerid).
entendem?
eu preciso que de a mensagem,e isso so e possivel se for no on player death
Reply
#7

Usa o OnPlayerShootPlayer e IsPlayerAiming(playerid, aimid) ou a funcгo BodyPart mais fбcil.
pawn Код:
public OnPlayerShootPlayer(shooter,target,Float:damage)
{
   if(GetPlayerWeapon(shooter) == 34)
   {
        SetPlayerHealth(target, 0);
   }
   return 1;
}
Reply
#8

pode me passar todo o codigo por favor? de dar o head shot e incrementa o oplayershooter ricopp?
Reply
#9

pawn Код:
public OnPlayerShootPlayer(shooter,target,Float:damage)
{
    new Wep = GetPlayerWeapon(shooter),Anim = GetPlayerAnimationIndex(target);
    if(Wep == 24 || Wep == 34 || Wep == 29 || Wep == 31) {
        if(Anim == 1173 || Anim == 1175 || Anim == 1177 || Anim == 1178) {
            new Name[24],Nome[24],wpname[32],Msg[126];
            GetPlayerName(shooter,Name,sizeof(Name));
            GetPlayerName(target,Nome,sizeof(Nome));
            GetWeaponName(Wep,wpname,sizeof(wpname));
            SetPlayerHealth(target,0);
            format(Msg,sizeof(Msg),"(HS) \"%s\" deu um headshot em \"%s\" || Weapon %s.",Name,Nome,wpname);
            SendClientMessageToAll(-1,Msg);
        }
    }
    return true;
}
Reply
#10

naum pode se assim,tem que ser do outro jeito,com o killerid e o playerid
pode me ajudar ricopp?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)