Detectar cuando un jugador deja un pickup.
#1

Buenas amigos de SA-MP me dirijo hacia todos ustedes para pedirles una simple ayuda.

їComo detecto cuando un jugador sale de un determinado pickup?

Bueno hago esta pregunta porque no he visto alguna funciуn para detectar si un jugador saliу de un determinado pickup y quisiera saber si ustedes saben de alguna forma de detectar si un jugador sale de un pickup.

PD: Se que con un timer puedo hacer que detecte cuando un jugador sale del pickup determinado pero quiero saber si ustedes saben alguna forma mбs rapida y que consuma menos recursos, un timer ejecutandose cada X ms consume muchos recursos.

Muchas gracias por sus respuestas.

Un saludo.
Reply
#2

La verdad que no tengo ni idea y nunca vi algo asн. No sй pregunta por los foros ingleses.
Reply
#3

Quote:
Originally Posted by JustBored
Посмотреть сообщение
La verdad que no tengo ni idea y nunca vi algo asн. No sй pregunta por los foros ingleses.
Entiendo, para que usted entienda mejor, lo que deseo saber es como detectar cuando un jugador abandona un pickup como se hace con los CP en el plugin streamer de incognito.

Muchas gracias por su respuesta.

Un saludo.
Reply
#4

Dudo que algo asi sea posible.
Reply
#5

Si usas el plugin streamer de incognito, puedes usar бreas, creando cнrculos en la posiciуn del pickup y usar el callback cuando un jugador sale de un бrea.

pawn Код:
native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
forward OnPlayerLeaveDynamicArea(playerid, areaid);
Saludos!
Reply
#6

Quote:
Originally Posted by Vladeksh
Посмотреть сообщение
Si usas el plugin streamer de incognito, puedes usar бreas, creando cнrculos en la posiciуn del pickup y usar el callback cuando un jugador sale de un бrea.

pawn Код:
native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
forward OnPlayerLeaveDynamicArea(playerid, areaid);
Saludos!
Muchas gracias me funcionу, la verdad no habia pensado en eso.

Un saludo.
Reply
#7

pawn Код:
new
    PlayerPickupID[MAX_PLAYERS] = {-1, ...},
    Float:PICKUP_POS[MAX_PICKUPS][3];

#define GetPlayerPickup(%0)      (PlayerPickupID[%0])


stock CreatePickup2(model, type, Float:x, Float:y, Float:z, vw)
{
    new PickupID = CreatePickup(model, type, x, y, z, vw);
    PICKUP_POS[PickupID][0] = x;
    PICKUP_POS[PickupID][1] = y;
    PICKUP_POS[PickupID][2] = z;
    return PickupID;
}

#define CreatePickup CreatePickup2
#define AddStaticPickup CreatePickup2

forward OnPlayerLeavePickup(playerid, pickupid);

public OnPlayerEnterPickup(playerid, pickupid)
{
    PlayerPickupID[playerid] = pickupid;
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerPickupID[playerid] = -1;
    return 1;
}

public OnPlayerUpdate(playerid)
{
    if(PlayerPickupID[playerid] != -1)// FASTER
    {
        new i = GetPlayerPickup(playerid);
        if( !IsPlayerInRangeOfPoint(playerid, 2.0, PICKUP_POS[i][0], PICKUP_POS[i][1], PICKUP_POS[i][2]) )
        {
             CallLocalFunction("OnPlayerLeavePickup", "ii", playerid, i);
             PlayerPickupID[playerid] = -1;
        }
    }
    return 1;
}

public OnPlayerLeavePickup(playerid, pickupid)
{
    return 1;
}
Ya se que lo resolviste, pero tenia ganas de hacer este codigo :c
Reply
#8

Quote:
Originally Posted by spell
Посмотреть сообщение
pawn Код:
new
    PlayerPickupID[MAX_PLAYERS] = {-1, ...},
    Float:PICKUP_POS[MAX_PICKUPS][3];

#define GetPlayerPickup(%0)      (PlayerPickupID[%0])


stock CreatePickup2(model, type, Float:x, Float:y, Float:z, vw)
{
    new PickupID = CreatePickup(model, type, x, y, z, vw);
    PICKUP_POS[PickupID][0] = x;
    PICKUP_POS[PickupID][1] = y;
    PICKUP_POS[PickupID][2] = z;
    return PickupID;
}

#define CreatePickup CreatePickup2
#define AddStaticPickup CreatePickup2

forward OnPlayerLeavePickup(playerid, pickupid);

public OnPlayerEnterPickup(playerid, pickupid)
{
    PlayerPickupID[playerid] = pickupid;
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerPickupID[playerid] = -1;
    return 1;
}

public OnPlayerUpdate(playerid)
{
    if(PlayerPickupID[playerid] != -1)// FASTER
    {
        new i = GetPlayerPickup(playerid);
        if( !IsPlayerInRangeOfPoint(playerid, 2.0, PICKUP_POS[i][0], PICKUP_POS[i][1], PICKUP_POS[i][2]) )
        {
             CallLocalFunction("OnPlayerLeavePickup", "ii", playerid, i);
             PlayerPickupID[playerid] = -1;
        }
    }
    return 1;
}

public OnPlayerLeavePickup(playerid, pickupid)
{
    return 1;
}
Ya se que lo resolviste, pero tenia ganas de hacer este codigo :c
Muchas gracias, me ha facilitado todo.

PD: Ahora mismo le hago un ALS y lo convierto a CreateDynamic.

Muchas gracias.

Un saludo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)