SA-MP Forums Archive
[Ajuda] Detectar se player estб segurando espaзo - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Detectar se player estб segurando espaзo (/showthread.php?tid=649282)



Detectar se player estб segurando espaзo - gmstrikker - 06.02.2018

Estou tentnado detectar se o player estб correndo...
Qnd o player aperta espaзo detecta, mas segurando o espaзo nгo, queria que quando estivesse segudano espaзo tambйm ficasse:
PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    
// cansando
    
if((newkeys KEY_SPRINT) || HOLDING(KEY_SPRINT))
    {
        if(!
IsPlayerInAnyVehicle(playerid)) {
            
PlayerCorrendo(playerid);
        }
    }
    else
    { 
//if((oldkeys & KEY_SPRINT))
        
ContadorParandoCorrer[playerid] = SetTimerEx("PlayerNaoEstaCorrendo"1000"i"playerid);
    }




Re: Detectar se player estб segurando espaзo - PT - 06.02.2018

Usa isso https://sampwiki.blast.hk/wiki/GetPlayerAnimationIndex

Ai depois fica mais facil


Re: Detectar se player estб segurando espaзo - gmstrikker - 06.02.2018

Quote:
Originally Posted by PT
Посмотреть сообщение
Jб pensei em fazer por anim, mas nгo rola...
printa 1231 andando com w sem espaзo e com espaзo continua 1231


Re: Detectar se player estб segurando espaзo - JohnBlack - 07.02.2018

A public OnPlayerKeyStateChange й usada apenas quando um player altera o estado de suas teclas, ou seja, ou aperta ou solta. Para verificar se o player persiste segurando uma tecla, use um Timer com a funзгo GetPlayerKeys.


Re: Detectar se player estб segurando espaзo - Ermanhaut - 07.02.2018

Quote:
Originally Posted by JohnBlack
Посмотреть сообщение
A public OnPlayerKeyStateChange й usada apenas quando um player altera o estado de suas teclas, ou seja, ou aperta ou solta. Para verificar se o player persiste segurando uma tecla, use um Timer com a funзгo GetPlayerKeys.
Isto funcionarб bem, mas tem uma funзгo na SAMP Wiki para isto:
Код:
#define HOLDING(%0) \
	((newkeys & (%0)) == (%0))

//Uso

if(HOLDING(KEY_SPRINT)){//Se o player estiver segurando 'espaзo'
    
    //bla bla bla
}



Re: Detectar se player estб segurando espaзo - JohnBlack - 07.02.2018

Quote:
Originally Posted by Ermanhaut
Посмотреть сообщение
Isto funcionarб bem, mas tem uma funзгo na SAMP Wiki para isto:
Код:
#define HOLDING(%0) \
	((newkeys & (%0)) == (%0))

//Uso

if(HOLDING(KEY_SPRINT)){//Se o player estiver segurando 'espaзo'
    
    //bla bla bla
}
A funзгo HOLDING sу funcionarб dentro da public OnPlayerKeyStateChange, ou seja, quando o player apertar ou soltar uma tecla, o que faz essa funзгo HOLDING nгo ser tгo ъtil quanto simplesmente colocar
Код:
if(newkeys & KEY_SPRINT) { /**/ }
Para verificar se o player persiste segurando a tecla espaзo, terб que usar ou um Timer com GetPlayerKeys dentro ou a public OnPlayerUpdate.


Re: Detectar se player estб segurando espaзo - Ermanhaut - 07.02.2018

Quote:
Originally Posted by JohnBlack
Посмотреть сообщение
A funзгo HOLDING sу funcionarб dentro da public OnPlayerKeyStateChange, ou seja, quando o player apertar ou soltar uma tecla, o que faz essa funзгo HOLDING nгo ser tгo ъtil quanto simplesmente colocar
Код:
if(newkeys & KEY_SPRINT) { /**/ }
Para verificar se o player persiste segurando a tecla espaзo, terб que usar ou um Timer com GetPlayerKeys dentro ou a public OnPlayerUpdate.
Vocк tem razгo, ele tem que fazer o timer mesmo. Erro meu.


Re: Detectar se player estб segurando espaзo - gmstrikker - 07.02.2018

Por que nгo ta detectando o espaзo pressionado?
PHP код:
        new Keys,ud,lr;
        
GetPlayerKeys(i,Keys,ud,lr);
        
// cansando
        
if(ud == KEY_SPRINT) {
            if(!
IsPlayerInAnyVehicle(i)) { PlayerCorrendo(i); }
        }
        else { 
// parou de correr
            
ContadorParandoCorrer[i] = SetTimerEx("PlayerNaoEstaCorrendo"1000"i"i);
        } 



Re: Detectar se player estб segurando espaзo - JohnBlack - 07.02.2018

Quote:
Originally Posted by gmstrikker
Посмотреть сообщение
Por que nгo ta detectando o espaзo pressionado?
PHP код:
        new Keys,ud,lr;
        
GetPlayerKeys(i,Keys,ud,lr);
        
// cansando
        
if(ud == KEY_SPRINT) {
            if(!
IsPlayerInAnyVehicle(i)) { PlayerCorrendo(i); }
        }
        else { 
// parou de correr
            
ContadorParandoCorrer[i] = SetTimerEx("PlayerNaoEstaCorrendo"1000"i"i);
        } 
Vocк tб comparando as teclas cima/baixo com espaзo, isso nгo faz muito sentido.
Para dar certo vocк teria que comparar a sua variбvel Keys com KEY_SPRINT, aн sim.


Re: Detectar se player estб segurando espaзo - gmstrikker - 08.02.2018

Quote:
Originally Posted by JohnBlack
Посмотреть сообщение
Vocк tб comparando as teclas cima/baixo com espaзo, isso nгo faz muito sentido.
Para dar certo vocк teria que comparar a sua variбvel Keys com KEY_SPRINT, aн sim.
Muito obrigado! +rep