Problema con comando
#1

Hola gente, mi problema es con el guardado del color del vehiculo, en mi coche si se guarda el color cuando uso /colorcoche , pero en los demas coches que le cambio el color y no soy el dueсo no se guarda, aca va el codigo.

Код:
CMD:colorcoche(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid))
{
	return SendClientMessageEx(playerid, COLOR_WHITE, "No estбs en un vehiculo.");
}

if(!Team_Mecanicos(playerid))
{
	return SendClientMessageEx(playerid, COLOR_GRAD2, "No eres mecanico.");
}

new
	iVeh = GetPlayerVehicleID(playerid);

if(LSPD_IsACopCar(iVeh)||Taxi_Vehicle(iVeh)||AutoRusos(iVeh)||AutoItalianos(iVeh)||AutoGroove(iVeh)||AutoBallas(iVeh)||Bus_Vehicle(iVeh)||SAMD_Vehicle(iVeh)||Mecanico_Vehicle(iVeh)||FBI_Vehicle(iVeh)||CNN_Vehicle(iVeh)||IsAPizzabike(iVeh)||LicenciaCar(iVeh)||GobierAuto(iVeh)||IsAnNGCar(iVeh)) {
	return SendClientMessageEx(playerid, COLOR_GREY, "No puedes pintar vehнculos facciуnes.");
}
new
	iColors[2];
 if(sscanf(params, "ii", iColors[0], iColors[1]))
{
	return SendClientMessageEx(playerid, COLOR_WHITE, "USA: /colorcoche [ID 1] [ID 2]. Color debe ser una ID.");
}
else if(!(0 <= iColors[0] <= 255 && 0 <= iColors[1] <= 255))
{
	return SendClientMessageEx(playerid, COLOR_WHITE, "Color Invбlido (ID comienza en 0, y el final es 255)");
}
format(szMessage, sizeof(szMessage), "Cambiaste el color del vehiculo. - ID %d, %d.", iColors[0], iColors[1]);
SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
new car = GetPlayerVehicleID(playerid);
ChangeVehicleColor(iVeh, iColors[0], iColors[1]);
PlayerVehicleInfo[playerid][GetPlayerVehicle(playerid, car)][pvColor1] = iColors[0];
PlayerVehicleInfo[playerid][GetPlayerVehicle(playerid, car)][pvColor2] = iColors[1];
return 1;
}
Graciasss.
Reply
#2

Es evidente puesto que los colores los estбs guardando en la variable de tu jugador (playerid) y no en la del dueсo del carro.
Reply
#3

En sscanf aumentale una opcion entera y esa opcion entera le metes en playerid de йstas variables

PHP код:
PlayerVehicleInfo[nuevoentero][GetPlayerVehicle(playeridcar)][pvColor1] = iColors[0];
PlayerVehicleInfo[nuevoentero][GetPlayerVehicle(playeridcar)][pvColor2] = iColors[1]; 
en donde el nuevo entero serб el nuevo parametro del sscanf.
Reply
#4

No entiendo... їentonces el comando como serнa? їde donde sacamos "nuevoentero"?

Lo que necesita es una variable tipo:

owner[MAX_VEHICLES]

que le proporcione la id del dueсo a partir de la id del vehнculo.
Reply
#5

Tampoco entiendo lo de jotajeta, voy a probar lo de alexus pero se me complicarб tambien, luego comento
Reply
#6

No es difнcil M@ty. Primero creas la variable:

Код:
new Owner[MAX_VEHICLES];
Cuando un jugador crea un vehiculo, relacionamos ambos con la variable. Esto se hace guardando la id del vehнculo en una variable temporal (car_id). En tu comando debes hacerlo asн:

Код:
CMD:crearcoche(playerid, params[])
{
	...
	...
	new car_id = CreateVehicle(................);
	Owner[car_id] = playerid;
	...
	...
	return 1;
}
Ahora cuando cambies los colores, al grabarlos sуlo tienes que cambiar "playerid" por "Owner[car]"

Код:
PlayerVehicleInfo[Owner[car]]...
Si este sistema te funciona y lo adoptas tendrбs que inicializar la variable Owner para todos los vehнculos con el valor INVALID_PLAYER_ID (supongo que habrб vehнculos que no pertenezcan a nadie). Esto se hace en OnGamemodeInit de la siguiente manera:

Код:
for(new i=0; i< MAX_VEHICLES; i++) Owner[i] = INVALID_PLAYER_ID;
Eso te permitirб usar la condiciуn: if ( Owner[car] == INVALID_PLAYER_ID) para descartar el grabado de vehiculos sin dueсo (o para lo que necesites)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)