[Ajuda] Anti Furto
#1

Estou tentando fazer um anti furto, que quando F ou ENTER й pressionado(tentando entrar em um veiculo ocupado) o player que pressionou essa tecla й posicionado longe do veiculo que tenta roubar e recebe a mensagem "anti furto".

Estou comeзando certo? Estб dando o erro de que playerid2 nгo estб definido, alguem sabe o motivo?

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    // PRESSED(keys)
#define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
   
    if (PRESSED( KEY_SECONDARY_ATTACK )){
    new distancia = GetDistanceBetweenPlayers(playerid,playerid2);
        if (IsPlayerInAnyVehicle(playerid2) && distancia <= 100){
            SendClientMessage(playerid,-1, "teste");
            return 1;
            }
    }  
    return 1;
}

stock GetDistanceBetweenPlayers(playerid,playerid2){
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    new Float:dis;
    GetPlayerPos(playerid,x1,y1,z1);
    GetPlayerPos(playerid2,x2,y2,z2);
    dis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
    return floatround(dis);
}
Reply
#2

Quando usamos os parвmetros em uma callback, nesse caso em uma stock, os parвmetros playerid e playerid2 ficam como uma variбvel LOCAL, ou seja, sу vamos usar nessa stock. Por isso estб dando o erro. Vocк estб usando ela fora da stock e estб dando indefinido. Nгo й atoa se vocк criar uma variбvel global com nome playerid2, vai dar erro, pois jб existe uma variбvel local com o mesmo nome.

Por isso estб dando erro . O playerid pegou pois estб definido no OnPlayerKeyStateChange.
Reply
#3

Obrigado Jonathan, entendi o que devia ser feito, acho que vou postar aqui como fs =D
Quote:

rep++

Reply
#4

Aqui estб a soluзгo, espero ter ajudado!

PHP код:
public OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    if(!
ispassenger)
    {
        for(new 
0MAX_PLAYERSi++)
        {
            if(
IsPlayerInVehicle(ivehicleid) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
            {
                if(
!= playerid)
                {
                    
SendClientMessage(playerid0xAA3333AA" Vocк nгo pode roubar um veнculo de um player!");
                    
RemovePlayerFromVehicle(playerid);
                    return 
1;
                }
            }
        }
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)