Desaparecer el coche -
JavAndroid - 26.12.2014
Bueno, me he dado cuenta que los autos de los users quedan esparcidos por todo el mapa, hay algo para hacer que desaparezcan al salir de ellos o algo asн.
Mi server es freeroam, debo reiniciar para que se quiten esos coches de donde estan :P
Respuesta: Desaparecer el coche -
[DOG]irinel1996 - 26.12.2014
Podrнas destruir el vehнculo pasado cierto tiempo desde que el jugador sale de el.
Re: Desaparecer el coche -
JavAndroid - 26.12.2014
es con el destroyvehicle їno?
Se pondrнa esto:
Код:
DestroyVehicle(vehicleid);
en el public onplayerexitvehicle
lo malo que no se implementar algunas cosas en pawno, por lo que necesitaria un poquitin de ayuda.
Respuesta: Desaparecer el coche -
[DOG]irinel1996 - 26.12.2014
Claro, eso lo destruirнa al abandonarlo.
Re: Desaparecer el coche -
JavAndroid - 26.12.2014
їcomo se harнa el timer para esto?
no se hacer timers
Respuesta: Desaparecer el coche -
[DOG]irinel1996 - 26.12.2014
pawn Код:
new gDestroyVehicle[MAX_VEHICLES];
public OnPlayerExitVehicle(playerid, vehicleid) {
gDestroyVehicle[vehicleid] = SetTimerEx("EliminarVehiculo", 5000, "i", vehicleid);
return 1;
}
forward EliminarVehiculo(vehicleid);
public EliminarVehiculo(vehicleid) {
DestroyVehicle(vehicleid);
return 1;
}
PD: podrнas poner un KillTimer cuando vuelve a subirse, y asн no lo borra.
Re: Desaparecer el coche -
Su37Erich - 26.12.2014
Hola JavAndroid,
No te recomiendo usar OnPlayerExitVehicle por lo siguiente:
Not called if the player falls off a bike or is removed from a vehicle by other means such as using SetPlayerPos.
You must use OnPlayerStateChange and check if their old state is PLAYER_STATE_DRIVER or PLAYER_STATE_PASSENGER.
Ese es el problema con OnPlayerExitVehicle
Yo preferirнa usar un timer que se llame cada 30 minutos y borre los autos que no estбn siendo utilizados, yo lo harнa de la siguiente forma:
pawn Код:
#include <a_samp>
public OnGameModeInit()//Cuando el modo de juego se inicie
SetTimer("Borrar_Autos", 1800000, true);//Iniciar un temporizador que llamarб a la funciуn Borrar_Autos cada 30 minutos
forward Borrar_Autos();
public Borrar_Autos()//Funciуn borrar autos
{
new bool:vehicleused[MAX_VEHICLES char];//Vamos a crear un arreglo para ver si el vehнculo estб en uso o no
for(new i = 0; i<MAX_PLAYERS; i++)//Lo cambias si tienes foreach, loop para todos los jugadores
{
if(!IsPlayerConnected(i))//Si no esta conectado el jugador con el ID i
continue;//Saltar
if(IsPlayerInAnyVehicle(i))//Si el jugador estб en cualquier auto
vehicleused{GetPlayerVehicleID(i)} = true;//El vehнculo estб ocupado, asignar a la variable vehicleused true, el valor del нndice es el valor del ID de auto en el que esta el jugador
}//Fin del loop
for(new i=0; i<MAX_VEHICLES; i++)//Loop para todos los autos
{
if(!IsValidVehicle(i))//Si el vehнculo es invбlido, saltar (Nota: si da error con estб funciуn aсadir 'native IsValidVehicle(vehicleid);' al principio)
continue;//Saltar
if(!vehicleused{i})//Si no estб en uso el vehнculo,
DestroyVehicle(i);//Borrarlo
}//Fin del loop
}//Fin de la funciуn
Ocupa menos CPU/Memoria ya que solo requiere un temporizador y se llaman esas instrucciones cada 30 minutos para limpiar todo
Saludos
Re: Desaparecer el coche -
JavAndroid - 27.12.2014
Quote:
Originally Posted by Su37Erich
Hola JavAndroid,
No te recomiendo usar OnPlayerExitVehicle por lo siguiente:
Not called if the player falls off a bike or is removed from a vehicle by other means such as using SetPlayerPos.
You must use OnPlayerStateChange and check if their old state is PLAYER_STATE_DRIVER or PLAYER_STATE_PASSENGER.
Ese es el problema con OnPlayerExitVehicle
Yo preferirнa usar un timer que se llame cada 30 minutos y borre los autos que no estбn siendo utilizados, yo lo harнa de la siguiente forma:
pawn Код:
#include <a_samp> public OnGameModeInit()//Cuando el modo de juego se inicie SetTimer("Borrar_Autos", 1800000, true);//Iniciar un temporizador que llamarб a la funciуn Borrar_Autos cada 30 minutos forward Borrar_Autos(); public Borrar_Autos()//Funciуn borrar autos { new bool:vehicleused[MAX_VEHICLES char];//Vamos a crear un arreglo para ver si el vehнculo estб en uso o no for(new i = 0; i<MAX_PLAYERS; i++)//Lo cambias si tienes foreach, loop para todos los jugadores { if(!IsPlayerConnected(i))//Si no esta conectado el jugador con el ID i continue;//Saltar if(IsPlayerInAnyVehicle(i))//Si el jugador estб en cualquier auto vehicleused{GetPlayerVehicleID(i)} = true;//El vehнculo estб ocupado, asignar a la variable vehicleused true, el valor del нndice es el valor del ID de auto en el que esta el jugador }//Fin del loop for(new i=0; i<MAX_VEHICLES; i++)//Loop para todos los autos { if(!IsValidVehicle(i))//Si el vehнculo es invбlido, saltar (Nota: si da error con estб funciуn aсadir 'native IsValidVehicle(vehicleid);' al principio) continue;//Saltar if(!vehicleused{i})//Si no estб en uso el vehнculo, DestroyVehicle(i);//Borrarlo }//Fin del loop }//Fin de la funciуn
Ocupa menos CPU/Memoria ya que solo requiere un temporizador y se llaman esas instrucciones cada 30 minutos para limpiar todo
Saludos
|
Gracias Su37Erich por explicar detalladamente cada funcion, una cosa, їen cuanto quedarнa el timer para 15 minutos? en 900000 їno?
Respuesta: Re: Desaparecer el coche -
Malganys - 27.12.2014
Quote:
Originally Posted by JavAndroid
їen cuanto quedarнa el timer para 15 minutos? en 900000 їno?
|
Exacto. Acб te dejo una pбgina donde hay una tabla de minutos a milisegundos:
http://www.convertidorunidades.com/mins-a-milisegundos
Respuesta: Desaparecer el coche -
OTACON - 27.12.2014
utiliza AddStaticVehicleEx para crear los vehнculos, tiene un parбmetro llamado respawn_delay, ahн se coloca el tiempo que se respawneara el vehнculo. (empieza a contar desde que el vehнculo esta desocupado).
https://sampwiki.blast.hk/wiki/AddStaticVehicleEx
saludos.
EXTRA: el tiempo de respawn de los vehнculos desocupado es en minisegundos.
pawn Код:
1 * 1000 // 1 segundo
1 * 60000 // 1 minuto
1 * 3600000 // 1 hora
//NOTA: cambia el 1 por el tiempo que prefieras.