їComo veo que coche estб cerca?
#1

Buenas, quisiera que me ayudasen, ya que estoy haciendo un sistema de seguro para vehнculos pero no logrу hacer para verificar que vehнculos estбn cerca de mi.
їUna ayuda? Desde ya muchas gracias.
Reply
#2

Aver si te sirve.
pawn Код:
new pool = GetVehiclePoolSize();
for(new i = 1; i <= pool; i ++)
{
    if(IsPlayerCloseToVehicle(playerid, i, 10.0))
    {
        // Estas cercas de un vehiculo, su id es "i".
        break;
    }
}

stock IsPlayerCloseToVehicle(playerid, vehicleid, Float:distance)
{
    new Float:x, Float:y, Float:z;
    GetVehiclePos(vehicleid, x, y, z);

    if(IsPlayerInRangeOfPoint(playerid, distance, x, y, z) && GetPlayerInterior(playerid) == GetVehicleInterior(vehicleid) && GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid) && \
    GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) return true;
    return false;
}
Reply
#3

PHP код:
native IsValidVehicle(vehicleid);

CocheCercano(playerid)
{
    new
        
Float:fPos[3];

    for (new 
0!= MAX_VEHICLES++) if (IsValidVehicle(i)) {
        
GetVehiclePos(ifXfYfZ);
        
        if (
IsPlayerInRangeOfPoint(playerid3.5fPos[0], fPos[1], fPos[2])) {
            return 
i;
        }
    }
    return -
1;

puedes usarla asi por ejemplo ->

PHP код:
COMMAND:seguro(playeridparams[])
{
    new
        
car_id = -1;

    if((
car_id CocheCercano(playerid)) == -1)
        return 
0// no hay ninguno
        
    // lo que haya aca es por que si se encontro un coche, obtienes el id del coche en la variable car_id, se almacena ahi!
    
return 1;

Reply
#4

Quote:
Originally Posted by _Zume
Посмотреть сообщение
PHP код:
native IsValidVehicle(vehicleid);
CocheCercano(playerid)
{
    new
        
Float:fPos[3];
    for (new 
0!= MAX_VEHICLES++) if (IsValidVehicle(i)) {
        
GetVehiclePos(ifXfYfZ);
        
        if (
IsPlayerInRangeOfPoint(playerid3.5fPos[0], fPos[1], fPos[2])) {
            return 
i;
        }
    }
    return -
1;

puedes usarla asi por ejemplo ->

PHP код:
COMMAND:seguro(playeridparams[])
{
    new
        
car_id = -1;
    if((
car_id CocheCercano(playerid)) == -1)
        return 
0// no hay ninguno
        
    // lo que haya aca es por que si se encontro un coche, obtienes el id del coche en la variable car_id, se almacena ahi!
    
return 1;

En 0.3.7 se cambiaron los ciclos:

Код:
new pool = GetVehiclePoolSize();
for(new i = 1; i <= pool; i ++)
Los ids de los vehiculos empiezan desde 1, se agrego "GetVehiclePoolSize();" para obtener la cantidad de vehiculos y los signos ahora son "<=".
Reply
#5

Quote:
Originally Posted by _Zume
Посмотреть сообщение
PHP код:
native IsValidVehicle(vehicleid);
CocheCercano(playerid)
{
    new
        
Float:fPos[3];
    for (new 
0!= MAX_VEHICLES++) if (IsValidVehicle(i)) {
        
GetVehiclePos(ifXfYfZ);
        
        if (
IsPlayerInRangeOfPoint(playerid3.5fPos[0], fPos[1], fPos[2])) {
            return 
i;
        }
    }
    return -
1;

puedes usarla asi por ejemplo ->

PHP код:
COMMAND:seguro(playeridparams[])
{
    new
        
car_id = -1;
    if((
car_id CocheCercano(playerid)) == -1)
        return 
0// no hay ninguno
        
    // lo que haya aca es por que si se encontro un coche, obtienes el id del coche en la variable car_id, se almacena ahi!
    
return 1;

Supongo que este me funcionara, buscare en el foro a ver si encuentro la funciуn de IsValidVehicle.
Gracias.
Reply
#6

Quote:
Originally Posted by Ghost112397
Посмотреть сообщение
Supongo que este me funcionara, buscare en el foro a ver si encuentro la funciуn de IsValidVehicle.
Gracias.
Si utilizas eso en un virtual world o interior diferente pero estas cercas de el o incluso en modo espectador, te dirб que si estas cercas de el. Entonces agrйgale las verificaciones:

pawn Код:
if(GetPlayerInterior(playerid) == GetVehicleInterior(vehicleid) && GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid) && GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
Y ya se cambio los ciclos, ya no tienes que usar MAX_VEHICLES, la funciуn GetVehiclePoolSize() te da el numero de vehiculos y los ids de los vehiculos empiezan desde 1, no 0...:
pawn Код:
new pool = GetVehiclePoolSize();
for(new i = 1; i <= pool; i ++)
Reply
#7

IsValidVehicle es una funcion "olvidada", basta con aсadir la nativa y usarla creo yo
Reply
#8

Pasare la versiуn del GM a la 0.3.7, їalguien me puede explicar eso del nuevo ciclo? No lo entendн bien, muchas gracias.
Reply
#9

se refiere a que ahora hay funcion para hacer lo que haciamos con la constante MAX_VEHICLES que creaba un ciclo (LOOP) a todos los autos existentes, ahora se puede obtener la ID mas alta y evitar que corra por coches que no existen
Reply
#10

Quote:
Originally Posted by _Zume
Посмотреть сообщение
se refiere a que ahora hay funcion para hacer lo que haciamos con la constante MAX_VEHICLES que creaba un ciclo (LOOP) a todos los autos existentes, ahora se puede obtener la ID mas alta y evitar que corra por coches que no existen
Ahora sн, muchas gracias :3
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)