[Ajuda] Detectar se o jogador atirou
#1

Fala galera, tranquilo ?

Tava precisando da ajuda de vocкs no seguinte:

Estou com uma ideia aqui, mas preciso medir quantos tiros o player deu..

Tentei da seguinte forma, mas nгo obtive sucesso:

pawn Код:
#define     PRESSED(%0)         (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // by Wiki

new Tiros;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if (PRESSED(KEY_FIRE))
    {
        if(GetPlayerWeapon(playerid) == 24 || GetPlayerWeapon(playerid) == 25 || GetPlayerWeapon(playerid) == 33 || GetPlayerWeapon(playerid) == 34) Tiros++;
    }
    return 1;
}
Ele aumenta a variбvel quando atira ? Sim, mas caso eu pressione a Key Fire e alguma outra tecla que anule, digamos assim, o anim (como "C" [agachar]), ele interrompe o anim, o player nгo atira, porйm a variбvel й aumentada..

Pensei em fazer uma verificaзгo em relaзгo a muniзгo, mas para o modo que preciso, acredito ser a forma mais trabalhosa e que tambйm nгo й 100% funcional...

Enfim, alguйm conhece um mйtodo eficiente em relaзгo a isso ?

Grato !
Reply
#2

Cara, como eu te disse via Skype, acho que sу checando muniзгo..
Reply
#3

Checar se ele atirou em outro player:https://sampwiki.blast.hk/wiki/OnPlayerGiveDamage


Se ele atirou no vбcuo sу usar o nъmero de balas.
Reply
#4

Quote:
Originally Posted by iCasTiel
Посмотреть сообщение
Checar se ele atirou em outro player:https://sampwiki.blast.hk/wiki/OnPlayerGiveDamage


Se ele atirou no vбcuo sу usar o nъmero de balas.
Й, queria fazer uma variбvel para saber quantos tiros ele deu e outra para saber quantos ele acertou..

Pelo visto vou ter que fazer pelo nъmero de balas mesmo..

Obrigado a todos.
Reply
#5

Quote:
Originally Posted by [THs]ShadoW
Посмотреть сообщение
Й, queria fazer uma variбvel para saber quantos tiros ele deu e outra para saber quantos ele acertou..

Pelo visto vou ter que fazer pelo nъmero de balas mesmo..

Obrigado a todos.
https://sampforum.blast.hk/showthread.php?tid=328964
Reply
#6

Quote:
Originally Posted by iCasTiel
Посмотреть сообщение
Na verdade, eu consegui:

Й o seguinte: Tenho um Timer de 1 em 1 segundo para atualizar as Texts do jogador (Incluindo a de Shots/Hits)..

Coloquei o seguinte cуdigo:

pawn Код:
for (new i = 0; i < 13; i++)
    {
        GetPlayerWeaponData(playerid, i, Weapons[playerid][i][0], Weapons[playerid][i][1]);
        if(Weapons1[playerid][i][1] > Weapons[playerid][i][1]) PlayerInfo[playerid][pShots] += Weapons1[playerid][i][1] - Weapons[playerid][i][1];
        GetPlayerWeaponData(playerid, i, Weapons1[playerid][i][0], Weapons1[playerid][i][1]);
    }
Ele compara o quanto ele tinha de balas no ъltimo segundo com o que ele tem agora, se o nъmero de agora for menor que o de antes, ele pega a diferenзa e adiciona aos Shots..

Antes, quando eu nгo fazia a verificaзгo de se o de agora estava menor, quando eu dava uma arma, com 800 balas, por exemplo, ele contava como 800 tiros.. Esse cуdigo como estб deve resolver, certo ?

Fiz alguns testes e nгo encontrei nenhum erro..
Reply
#7

pawn Код:
new Tiros[MAX_PLAYERS] = 0;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
    if(newkeys & KEY_FIRE) Tiros[playerid] ++;
    return true;
}
Acho que seja assim :/
Reply
#8

Quote:
Originally Posted by Input
Посмотреть сообщение
pawn Код:
new Tiros[MAX_PLAYERS] = 0;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
    if(newkeys & KEY_FIRE) Tiros[playerid] ++;
    return true;
}
Acho que seja assim :/
Й como eu disse..

Ele aumenta a variбvel quando atira ? Sim, mas caso eu pressione a Key Fire e alguma outra tecla que anule, digamos assim, o anim (como "C" [agachar]), ele interrompe o anim, o player nгo atira, porйm a variбvel й aumentada..
Reply
#9

Quote:
Originally Posted by [THs]ShadoW
Посмотреть сообщение
Й como eu disse..

Ele aumenta a variбvel quando atira ? Sim, mas caso eu pressione a Key Fire e alguma outra tecla que anule, digamos assim, o anim (como "C" [agachar]), ele interrompe o anim, o player nгo atira, porйm a variбvel й aumentada..
creio eu que usando esse operador bitwise, quando o jogador precionar a tecla de atirar sozinha ou com qualquer outra tecla irб fazer a contagem..

Se eu tiver errado me corrija :/

Teste ai
Reply
#10

Quote:
Originally Posted by Input
Посмотреть сообщение
creio eu que usando esse operador bitwise, quando o jogador precionar a tecla de atirar sozinha ou com qualquer outra tecla irб fazer a contagem..

Se eu tiver errado me corrija :/

Teste ai
Aн que estб o problema..

Supondo que eu estou com uma Desert Eagle, certo ?

Vocк deve saber que existe um "tempo de reaзгo" ao clicar a "KEY_FIRE", suponha que eu nгo estou mirando e aperto a "KEY_FIRE", certo ? O meu "boneco" vai demorar alguns segundo (muito poucos, 2 talvez) para empunhar a arma (como se estivesse mirando).. Sу depois destes 2 segundos ele vai de fato atirar.. Se neste intervalo de 2 segundos eu apertar a tecla "KEY_CROUCH" (por padrгo "C" = agachamento), ele interromperб a animaзгo de empunhar a arma, e eu nгo atirarei..

Em outras palavras: Eu nгo vou perder muniзгo, nгo vou dar o tiro, mas a variбvel vai aumentar..

Mesma coisa se eu apertar a KEY_FIRE repetidas vezes em um curto espaзo de tempo, ele nгo vai atirar, mas a variбvel vai subir..

Compreendeste ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)