Problema con comando -
M@ty - 15.03.2015
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.
Respuesta: Problema con comando -
alexus - 16.03.2015
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.
Respuesta: Problema con comando -
jotajeda - 16.03.2015
En sscanf aumentale una opcion entera y esa opcion entera le metes en playerid de йstas variables
PHP код:
PlayerVehicleInfo[nuevoentero][GetPlayerVehicle(playerid, car)][pvColor1] = iColors[0];
PlayerVehicleInfo[nuevoentero][GetPlayerVehicle(playerid, car)][pvColor2] = iColors[1];
en donde el nuevo entero serб el nuevo parametro del sscanf.
Respuesta: Problema con comando -
alexus - 16.03.2015
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.
Respuesta: Problema con comando -
M@ty - 17.03.2015
Tampoco entiendo lo de jotajeta, voy a probar lo de alexus pero se me complicarб tambien, luego comento
Respuesta: Problema con comando -
alexus - 17.03.2015
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)