Compatibilidad de componentes con vehнculos. -
Zume - 13.09.2015
Basicamente es un include que toquй para mejorar (
https://sampforum.blast.hk/showthread.php?tid=281906) y me ha resultado bastante ъtil, he creado un sistema de tuning bastante dinбmico y sencillo, pasй de los switch a un array, retirй y aсadн nuevos componentes que no habнan sido aсadidos.
Aъn asн tengo pensado aсadir nuevas funciones.
Descargas.
Pastebin:
http://pastebin.com/bL6vtQc1
Ejemplos.
IsValidComponent.
Comprueba si el componente es valido, si estб en el rango de los componentes.
PHP код:
if(IsValidComponent(1014))
{
printf("El componente %d es valido.", 1014);
}
else{
printf("El componente %d no es valido.", 1014);
}
GetComponentName.
Obtiene el nombre del componente.
PHP код:
new
name[32];
format(name, sizeof name, "%s", GetComponentName(1014));
print(name);
IsModelComponentCompatible.
Comprueba si un componente es vбlido con un vehнculo.
PHP код:
new
vehicleid = GetPlayerVehicleID(playerid),
veh_model = GetVehicleModel(vehicleid);
if(IsModelComponentCompatible(veh_model, 1014))
{
AddVehicleComponent(vehicle, 1014);
}
else{
printf("El componente %s no es compatible con el vehiculo %d", GetComponentName(1014), veh_model);
}
IsModelComponentCompatibleEx.
Obtiene el componente "count" del modelo del vehнculo almacenбndolo en "componentid" o la variable. El mбximo "count" es 35, y el mнnimo 1.
Ejemplo 1.
PHP код:
new
componentid = IsModelComponentCompatibleEx(562, 1);
/*
componentid == Ahora posee el componente 1 de los componentes validos del vehiculo 562. */
Ejemplo 2.
PHP код:
new
componentid;
IsModelComponentCompatibleEx(562, 1, component);
/*
componentid == Ahora posee el componente 1 de los componentes validos del vehiculo 562. */
Ejemplo 3.
PHP код:
for(new vehiclemodel = 400; vehiclemodel < 611; vehiclemodel++)
{
new
component, count = 1;
while(IsModelComponentCompatibleEx(vehiclemodel, count, component))
{
printf("El vehiculo %d es compatible con el componente %s [%d].", vehiclemodel, GetComponentName(component), component);
count++;
}
}
Re: Compatibilidad de componentes con vehнculos. -
Jastak - 13.09.2015
Muy bueno _Zume! justo estaba buscando algo asн para mi sistema de Tuneado hace tiempo y me daba pereza hacerlo, +rep para ti.
Respuesta: Compatibilidad de componentes con vehнculos. -
Swedky - 13.09.2015
Se ve bien, buen trabajo
Re: Compatibilidad de componentes con vehнculos. -
PedroMojica0715 - 15.09.2015
Necesitaba esto
Gracias!
Re: Compatibilidad de componentes con vehнculos. -
Jpew - 15.09.2015
Curioso inc. lo tacarй un rato a ver si sale algo (y)
Respuesta: Compatibilidad de componentes con vehнculos. -
leon44 - 18.09.2015
Buen trabajo compaсero
Respuesta: Compatibilidad de componentes con vehнculos. -
Juand - 18.09.2015
Buen trabajo zume, lo necesitaba para seguir con mi gm, saludos.
Respuesta: Compatibilidad de componentes con vehнculos. -
Zume - 18.09.2015
El primer dнa que lo publiquй el cуdigo contenнa un error, por lo que si lo descargaron remplacen por el actual.
Aquн hay un ejemplo de un sistema de tuneo.
PHP код:
new
PlayerTuningShow[MAX_PLAYERS][TOTAL_MODS];
COMMAND:tuning(playerid,params[])
{
if(sscanf(params, "d", params[0]))
return SendClientMessage(playerid, -1, "/tuning [0 - 13]");
PlayerShowMenuFrom(playerid, GetVehicleModel(GetPlayerVehicleID(playerid)), ((params[0] == -1) ? (false) : (true)), params[0]);
return 1;
}
stock PlayerShowMenuFrom(playerid, vehiclemodel, specific = false, component_type = 0)
{
if (vehiclemodel < 400 || vehiclemodel > 611)
return 0;
new
str[1024];
new
component,
count = 1,
conteo = 0;
while(IsModelComponentCompatibleEx(vehiclemodel, count, component))
{
if(specific)
{
if(GetVehicleComponentType(component) != component_type)
{
count ++;
continue;
}
}
if(component != 0)
{
format(str, sizeof str, "%s%s [%d]\n", str, GetComponentName(component), component);
PlayerTuningShow[playerid][conteo] = component;
conteo++;
}
count ++;
}
if(isnull(str))
return SendClientMessage(playerid, -1, "Este vehiculo no admite dichos componentes.");
Dialog_Show(playerid, DialogoTuneo, DIALOG_STYLE_LIST, "Componentes", str, "Aceptar", "Cancelar");
return 1;
}
Dialog:DialogoTuneo(playerid, response, listitem, inputtext[])
{
if(!response)
return 0;
new
componentid = PlayerTuningShow[playerid][listitem],
vehicleid = Vehicle_GetID(GetPlayerVehicleID(playerid));
AddVehicleComponent(vehicleid, componentid);
SendClientMessageEx(playerid, -1, "%s - %d", GetComponentName(componentid), componentid);
return 1;
}
En el comando se utiliza /tuning 0 - 13, el parбmetro depende el slot que quieran tocar con los componentes del vehнculos
PHP код:
0 - CARMODTYPE_SPOILER
1 - CARMODTYPE_HOOD
2 - CARMODTYPE_ROOF
3 - CARMODTYPE_SIDESKIRT
4 - CARMODTYPE_LAMPS
5 - CARMODTYPE_NITRO
6 - CARMODTYPE_EXHAUST
7 - CARMODTYPE_WHEELS
8 - CARMODTYPE_STEREO
9 - CARMODTYPE_HYDRAULICS
10 - CARMODTYPE_FRONT_BUMPER
11 - CARMODTYPE_REAR_BUMPER
12 - CARMODTYPE_VENT_RIGHT
13 - CARMODTYPE_VENT_LEFT
Con esto es posible aсadir los componentes a cualquier vehнculo que los permita, de lo contrario dirб que no, ejemplo, la mayorнa aceptan nitro (5) y otros no toleran el bumper (un Savanna, o Remington, o sultan) por lo que si utilizan /tuning 0 y no se aceptan los componentes es porque no los permite, no porque no funcione.
--
Cuando el while no encuentra un componente, retorna 0 y se detiene el loop, cuando encuentra todos al llegar al valor mбximo del array (que contiene los componentes compatibles, se detiene).
Si en el comando quieren ver todos los componentes que permite un coche para aсadнrselo, y no verlo por slot es /tuning -1