[Include] Compatibilidad de componentes con vehнculos.
#1

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(namesizeof 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_model1014))
{
    
AddVehicleComponent(vehicle1014);
}
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(5621);
/*
    componentid == Ahora posee el componente 1 de los componentes validos del vehiculo 562. */ 
Ejemplo 2.

PHP код:
new
    
componentid;
    
IsModelComponentCompatibleEx(5621component);
/*
    componentid == Ahora posee el componente 1 de los componentes validos del vehiculo 562. */ 
Ejemplo 3.

PHP код:
for(new vehiclemodel 400vehiclemodel 611vehiclemodel++)
{
    new
        
componentcount 1;
        
    while(
IsModelComponentCompatibleEx(vehiclemodelcountcomponent))
    {
        
printf("El vehiculo %d es compatible con el componente %s [%d]."vehiclemodelGetComponentName(component), component);
        
count++;
    }

Reply
#2

Muy bueno _Zume! justo estaba buscando algo asн para mi sistema de Tuneado hace tiempo y me daba pereza hacerlo, +rep para ti.
Reply
#3

Se ve bien, buen trabajo
Reply
#4

Necesitaba esto
Gracias!
Reply
#5

Curioso inc. lo tacarй un rato a ver si sale algo (y)
Reply
#6

Buen trabajo compaсero
Reply
#7

Buen trabajo zume, lo necesitaba para seguir con mi gm, saludos.
Reply
#8

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(playeridGetVehicleModel(GetPlayerVehicleID(playerid)), ((params[0] == -1) ? (false) : (true)), params[0]);
    return 
1;
}
stock PlayerShowMenuFrom(playeridvehiclemodelspecific falsecomponent_type 0)
{
    if (
vehiclemodel 400 || vehiclemodel 611)
        return 
0;
    new
        
str[1024];
    new
        
component,
        
count 1,
        
conteo 0;
    while(
IsModelComponentCompatibleEx(vehiclemodelcountcomponent))
    {
        if(
specific)
        {
            if(
GetVehicleComponentType(component) != component_type)
            {
                
count ++;
                continue;
            }
        }
        if(
component != 0)
        {
            
format(strsizeof str"%s%s [%d]\n"strGetComponentName(component), component);
            
PlayerTuningShow[playerid][conteo] = component;
            
conteo++;
        }
        
count ++;
    }
    
    if(
isnull(str))
        return 
SendClientMessage(playerid, -1"Este vehiculo no admite dichos componentes.");
        
    
Dialog_Show(playeridDialogoTuneoDIALOG_STYLE_LIST"Componentes"str"Aceptar""Cancelar");
    return 
1;
}
Dialog:DialogoTuneo(playeridresponselistiteminputtext[])
{
    if(!
response)
        return 
0;
    new
        
componentid PlayerTuningShow[playerid][listitem],
        
vehicleid Vehicle_GetID(GetPlayerVehicleID(playerid));
        
    
AddVehicleComponent(vehicleidcomponentid);
    
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 код:
CARMODTYPE_SPOILER
CARMODTYPE_HOOD
CARMODTYPE_ROOF
CARMODTYPE_SIDESKIRT
CARMODTYPE_LAMPS
CARMODTYPE_NITRO
CARMODTYPE_EXHAUST
CARMODTYPE_WHEELS
CARMODTYPE_STEREO
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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)