IDs de vehiculos dinбmicos?
#1

Hola,
Hoy me puse a analizar un fallo en mi sistema de casas, el cual afectaba a los autos. Cuando usaba el comando /traerauto y seleccionaba un coche me traнa otro auto que no era el mнo o no me traнa nada, bien entonces decidн revisar todo el cуdigo, no encontrй error de nada, hice pruebas de escritorio y todo deberнa funcionar correctamente...
Hasta que me encontrй con el posible error, y este es que los IDs de autos cambian dinбmicamente, bueno tal vez.

1. Supongamos que yo al entrar al servidor se crea mi auto que comprй, entonces a una variable 'X' le pongo el ID de este auto que se creo para despuйs saber que ese auto es mнo conforme a su ID de auto.
El ID es 1200
2. 5 minutos despuйs en el servidor hay un usuario2 que explota su auto (ID 1998 ) y lo pierde (el sistema lo borra con DestroyVehicle(vehicleid); )
3. 1 minuto despuйs el Administrador del servidor usa /respawnveh, que respawnea todos los autos
4. Mi auto segъn los IDs de autos del SA-MP se le asigna ahora el ID 1998 que fue el del auto que explotу del usuario2 o tal vez el id 1199 o sea uno menos.
5. 5 segundos despuйs quiero usar mi auto, uso el comando /traerauto y selecciono mi auto. La variable que almacenaba el ID de mi auto tiene el valor 1200, asн que me va a traer el ID de auto 1200 mas no el 1998 o 1199 que se cambiу que es mi auto, entonces si no existe no me trae nada y ahн el problema.

їEsto que digo en verdad es cierto?
Si es cierto, por favor alguien me pueda ayudar, ya que en OnVehicleSpawn no tiene los parбmetros newid, oldid
Reply
#2

Seteale una id propia al auto
Reply
#3

crear la variable del vehнculo con MAX_VEHICLES(vehicleid) .
Reply
#4

Claro, la solucion es que al crear el vehiculo crees una variable que guarde el ID del vehiculo del juego y otra el ID del vehiculo que usas.

Por ej el vehiculo que tienes guardado tiene ID 7, pero al cargarlo se carga el numer 32 en el juego, pues tu coche ID7 en el juego es ID 32.

Salu2

Ranslsad
Reply
#5

Gracias por responder
Mmmm, їpero como hago referencia en el juego a eso?, їcomo se que al re-spawnearlo serб el ID 32?
Como se esto:
Quote:

pero al cargarlo se carga el numer 32

A la hora de respawnearlo їcomo se que mi ID de auto antiguo se cambiу al ID 32?
Reply
#6

їPara quй destruirlo? Cambiale el interior a uno que no uses y listo. Luego lo devuelves a 0 cuando lo quieras "crear" de nuevo.
Reply
#7

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Gracias por responder
Mmmm, їpero como hago referencia en el juego a eso?, їcomo se que al re-spawnearlo serб el ID 32?
Como se esto:

A la hora de respawnearlo їcomo se que mi ID de auto antiguo se cambiу al ID 32?
Que yo entienda bien, lo que quieres que identificar un coche en el juego para saber quien es el dueсo al usarlo?.

Salu2

Ranslsad
Reply
#8

ese problema es rompe cabeza pero yo lo solucione mira este es la solucion por ejemplo en la parte de crear el coche osea cunado lo comprar debes poner esto mas o menos guiate no pongas igual
Код:
 

#define MAX_VEHGM 50 //esto es una definicion de los vehiculos del gm osea si tu gm tiene x vehiculos pertenecientes a facciones y jobs pon ese numero aqui 
#define MAX_VEHICLESVT  200// y este es el numero de vehiculos que estan en stock osea para comprar aqui pones el numero que quieras me imagino que tu gm ya tiene este define solo guiate es el numero de creaciones dinamicas puede estar definido como MAX_DVEHICLES me imagino 


//esto va en el dialogo o menu de creacion de tus coches 
new freeid;//no se como estara en tu gm pero esto identifica una id libre para crear un coche
			
for(new i=MAX_VEHGM+1; i < MAX_VEHICLESVT; i++) //y esto es lo que debes poner
			{
				if(!VehicleCreated[i])
				{
					freeid = i; break;
				}
			}

//esta parte la has de tener asi mas o menos

for(new i=0; i < MAX_VEHICLESVT; i++) //esto es lo que impide cargar las id de los coches 


//esto debe de estar en el dialogo de compra no se como estara en tu gm pero talvez este debajo de esto
	if(dialogid == DIALOG_VEHICLE_BUY)
//ahora en gamemodeini pones esto

for(new i=MAX_VEHGM+1; i < MAX_VEHICLESVT; i++)
	{
		UpdateVehicle(i, 0);
	}
//y ojo con esto en el mismo gamemodeini fijate que el forward que carga tus coches que seria algo como esto

LoadVehicles();

//este debajo de todos los coches del gm osea debajo del ultimo coche de facciones y jobs mas o menos asi
// Mecбnicos LS (67 - 77)
	AddStaticVehicleEx(525,2299.4011,-2002.2642,13.2817,3.7060,-1,103,60000); //Tow Truck    	63
	AddStaticVehicleEx(525,2293.8254,-2001.5095,13.2808,359.3708,-1,103,60000); //Tow Truck    	64
	AddStaticVehicleEx(525,2289.4182,-2001.1570,13.2774,0.8536,-1,103,60000); //Tow Truck    	65
	AddStaticVehicleEx(525,2258.1384,-1997.0146,13.2694,355.9609,-1,103,60000); //Tow Truck     66
LoadVehicles();
Espero haberte ayudado si algo no entendistes me lo haces saber
Reply
#9

Hola,
Me ayudado mucho con una idea, me he propuesto una soluciуn con freeid, voy a probarlo y edito este mensaje maсana, para que te informe de los resultados.
Gracias por la explicaciуn, aunque algunas cosas estuvieron confusas o faltaban cosas
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)