17.07.2017, 00:38
Como faзo para verificar se o player tб parado, e se estiver ele ir recuperando colete й possivel?
stock Velocidade(playerid)
{
static Float: Ppos[ 3 ] ;
GetPlayerVelocity(playerid , Ppos [0] , Ppos [1] , Ppos [2] ) ;
return floatround(floatmul(floatsqroot(floatadd(floatpower(Ppos[0],2 ) ,floatpower(Ppos [1],2))), 170.0));
}
if(Velocidade(playerid) > 1)
return SendClientMessage(playerid, -1, "Vocк precisa estar parado!");{
else
}
GetPlayerVelocity
PHP код:
|
if(Velocidade(playerid) > 0)
SetPlayerArmour(playerid, 100);
else
if(Velocidade(playerid) > 3) return SendClientMessage(playerid, -1, "Vocк precisa estar parado");
}
SetTimer
#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(playerid, Colete);//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", 10000, false, "i", playerid); //10000 = 10 segundos
}
}
return 1;
}
public GanhandoColete(playerid)
{
SetPlayerArmour(playerid, 100.0);
Mensagem(playerid, -1, "Vocк nгo se mexeu e ganhou colete cheio!");
parado[playerid]=0;//
return 1;
}
stock Velocidade(playerid)
{
static Float: Ppos[ 3 ] ;
GetPlayerVelocity(playerid , Ppos [0] , Ppos [1] , Ppos [2] ) ;
return floatround(floatmul(floatsqroot(floatadd(floatpower(Ppos[0],2 ) ,floatpower(Ppos [1],2))), 170.0));
}
public OnGameModeInit()
{
SetTimer("DarColete", 1000, true);
return 1;
}
forward DarColete();
public DarColete()
{
new Float:colete;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_ONFOOT && GetPlayerSpeed(i, true) == 0)
{
GetPlayerArmour(i, colete);
if(colete < 100)
{
colete += 10;
if(colete > 100) colete = 100;
SetPlayerArmour(i, colete);
}
}
}
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);
}