Detectar se o jogador atirou -
[THs]ShadoW - 19.12.2013
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 !
Re: Detectar se o jogador atirou -
Ph0ton - 20.12.2013
Cara, como eu te disse via Skype, acho que sу checando muniзгo..
Re: Detectar se o jogador atirou -
Gii - 20.12.2013
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.
Re: Detectar se o jogador atirou -
[THs]ShadoW - 20.12.2013
Quote:
Originally Posted by iCasTiel
|
Й, 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.
Re: Detectar se o jogador atirou -
Gii - 20.12.2013
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
Re: Detectar se o jogador atirou -
[THs]ShadoW - 20.12.2013
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..
Re: Detectar se o jogador atirou -
Input - 20.12.2013
pawn Код:
new Tiros[MAX_PLAYERS] = 0;
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(newkeys & KEY_FIRE) Tiros[playerid] ++;
return true;
}
Acho que seja assim :/
Re: Detectar se o jogador atirou -
[THs]ShadoW - 20.12.2013
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..
Re: Detectar se o jogador atirou -
Input - 20.12.2013
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
Re: Detectar se o jogador atirou -
[THs]ShadoW - 20.12.2013
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 ![Smiley](images/smilies/smile.png)
|
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 ?