[Ajuda] Verificar
#1

Como faзo para verificar se o player tб parado, e se estiver ele ir recuperando colete й possivel?
Reply
#2

GetPlayerVelocity




PHP код:
stock Velocidade(playerid)
{
    static 
FloatPpos] ;
    
GetPlayerVelocity(playerid Ppos [0] , Ppos [1] , Ppos [2] ) ;
    return 
floatround(floatmul(floatsqroot(floatadd(floatpower(Ppos[0],) ,floatpower(Ppos [1],2))), 170.0));
}
if(
Velocidade(playerid) > 1)
        return 
SendClientMessage(playerid, -1"Vocк precisa estar parado!");{
else

nгo testei
Reply
#3

Quote:
Originally Posted by DarkBr
Посмотреть сообщение
GetPlayerVelocity




PHP код:
stock Velocidade(playerid)
{
    static 
FloatPpos] ;
    
GetPlayerVelocity(playerid Ppos [0] , Ppos [1] , Ppos [2] ) ;
    return 
floatround(floatmul(floatsqroot(floatadd(floatpower(Ppos[0],) ,floatpower(Ppos [1],2))), 170.0));
}
if(
Velocidade(playerid) > 1)
        return 
SendClientMessage(playerid, -1"Vocк precisa estar parado!");{
else

nгo testei
entendi, mais como recupera colete?
Reply
#4

SetPlayerHealth
SetPlayerArmour

exemplo de uso

SetPlayerArmour(playerid, 100);
SetPlayerHealth(playerid, 100);

100 й a contidade ..
Reply
#5

Quote:
Originally Posted by GuilhermeNunes
Посмотреть сообщение
SetPlayerHealth
SetPlayerArmour

exemplo de uso

SetPlayerArmour(playerid, 100);
SetPlayerHealth(playerid, 100);

100 й a contidade ..
eu sei filho, mais quero saber onde implantar e pra subir de pouco em pouco
Reply
#6

PHP код:
if(Velocidade(playerid) > 0
    
SetPlayerArmour(playerid100);
else 
   if(
Velocidade(playerid) > 3) return SendClientMessage(playerid, -1"Vocк precisa estar parado");

Ta ai a base sу fazer do seu jeito.
Reply
#7

Tu pode criar um
pawn Код:
SetTimer
e chamar a uma callback com a base do Guilherme...
Reply
#8

Se o COLETE do jogador for ABAIXO DE 100%, um timer de 10 segundos serб criado, caso o player ficar parado os 10 segundos ele ganha o colete, caso ele se mexa o timer serб cancelado.

PHP код:
#define Mensagem SendClientMessage
new parado[MAX_PLAYERS];//verificar se ele estб parado
new Float:Colete;//pegar o colete
new TimerArmour//irб guardar o settimer
forward GanhandoColete(playerid); //public criada para dar o colete
public OnPlayerUpdate(playerid)//callback que atualiza 
{
    if(
parado[playerid]==1)//caso ele estiver recebendo o colete
    
{
        if(
Velocidade(playerid)> 1)// se ele NГO estiver parado irб cancelar tudo
        
KillTimer(TimerArmour);//cancelando
        
parado[playerid]=0;//dizemos que ele NГO estб parado
        
Mensagem(playerid, -1"Vocк se mexeu e o sistema foi cancelado");
    }
    if(
parado[playerid]==0)
    {
        
GetPlayerArmour(playeridColete);//pegar o colete do jogador
        
if(Colete 100)//abaixo de 100
        
if(Velocidade(playerid) < 1)// abaixo de 1 ou seja igual 0
        
{
            
parado[playerid]=1;//dizemos que ele estб parado
            
TimerArmour SetTimerEx("GanhandoColete"10000false"i"playerid); //10000 = 10 segundos
        
}
    }
    return 
1;
}
public 
GanhandoColete(playerid)
{
    
SetPlayerArmour(playerid100.0);
    
Mensagem(playerid, -1"Vocк nгo se mexeu e ganhou colete cheio!");
    
parado[playerid]=0;//
    
return 1;

PHP код:
stock Velocidade(playerid

    static 
FloatPpos] ; 
    
GetPlayerVelocity(playerid Ppos [0] , Ppos [1] , Ppos [2] ) ; 
    return 
floatround(floatmul(floatsqroot(floatadd(floatpower(Ppos[0],) ,floatpower(Ppos [1],2))), 170.0)); 

isso й apenas um exemplo simples, deve haver um limite de colete por vida entre outras coisas por causa o player nгo ficar abusando do sistema, mas tipo cara da uma estudada no wiki samp
Reply
#9

Pela callback OnPlayerUpdate que й chamada a cada aзгo do player (creio eu)
Reply
#10

O cуdigo abaixo verifica a cada segundo se o jogador estб apй e parado, caso sim aumenta +10 de colete.
PHP код:
public OnGameModeInit()
{
    
SetTimer("DarColete"1000true);
    return 
1;
}
forward DarColete();
public 
DarColete()
{
    new 
Float:colete;
    for(new 
0MAX_PLAYERSi++)
    {
        if(
IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_ONFOOT && GetPlayerSpeed(itrue) == 0)
        {
            
GetPlayerArmour(icolete);
            if(
colete 100)
            {
                
colete += 10;
                if(
colete 100colete 100;
                
SetPlayerArmour(icolete);
            }
        }
    }
    return 
1;
}
stock GetPlayerSpeed(playerid,bool:kmh)
{
    new 
Float:Vx,Float:Vy,Float:Vz,Float:rtn;
    if(
IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
    
rtn floatsqroot(Vx*Vx Vy*Vy Vz*Vz);
    return 
kmh?floatround(rtn 100 1.63):floatround(rtn 100);

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)