їComo veo que coche estб cerca? -
Ghost112397 - 17.05.2015
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.
Re: їComo veo que coche estб cerca? -
SickAttack - 17.05.2015
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;
}
Respuesta: їComo veo que coche estб cerca? -
Zume - 17.05.2015
PHP код:
native IsValidVehicle(vehicleid);
CocheCercano(playerid)
{
new
Float:fPos[3];
for (new i = 0; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i)) {
GetVehiclePos(i, fX, fY, fZ);
if (IsPlayerInRangeOfPoint(playerid, 3.5, fPos[0], fPos[1], fPos[2])) {
return i;
}
}
return -1;
}
puedes usarla asi por ejemplo ->
PHP код:
COMMAND:seguro(playerid, params[])
{
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;
}
Re: Respuesta: їComo veo que coche estб cerca? -
SickAttack - 17.05.2015
Quote:
Originally Posted by _Zume
PHP код:
native IsValidVehicle(vehicleid);
CocheCercano(playerid)
{
new
Float:fPos[3];
for (new i = 0; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i)) {
GetVehiclePos(i, fX, fY, fZ);
if (IsPlayerInRangeOfPoint(playerid, 3.5, fPos[0], fPos[1], fPos[2])) {
return i;
}
}
return -1;
}
puedes usarla asi por ejemplo ->
PHP код:
COMMAND:seguro(playerid, params[])
{
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 "<=".
Respuesta: їComo veo que coche estб cerca? -
Ghost112397 - 17.05.2015
Quote:
Originally Posted by _Zume
PHP код:
native IsValidVehicle(vehicleid);
CocheCercano(playerid)
{
new
Float:fPos[3];
for (new i = 0; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i)) {
GetVehiclePos(i, fX, fY, fZ);
if (IsPlayerInRangeOfPoint(playerid, 3.5, fPos[0], fPos[1], fPos[2])) {
return i;
}
}
return -1;
}
puedes usarla asi por ejemplo ->
PHP код:
COMMAND:seguro(playerid, params[])
{
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.
Re: Respuesta: їComo veo que coche estб cerca? -
SickAttack - 17.05.2015
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 ++)
Respuesta: їComo veo que coche estб cerca? -
Zume - 17.05.2015
IsValidVehicle es una funcion "olvidada", basta con aсadir la nativa y usarla creo yo
Respuesta: їComo veo que coche estб cerca? -
Ghost112397 - 18.05.2015
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.
Respuesta: їComo veo que coche estб cerca? -
Zume - 18.05.2015
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
Respuesta: їComo veo que coche estб cerca? -
Ghost112397 - 18.05.2015
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