PHP Code:
#define RandomEx(%0,%1) (random(%1 - %0 + 1) + %0)
enum vInfo
{
vID,
vPatente,
vDueno[32],
vLlave,
vPatentaza,
vModelo,
Float: vVida,
Float: vPosicionX,
Float: vPosicionY,
Float: vPosicionZ,
Float: vPosicionR,
vVirtualWorld,
vInterior,
vPrecio,
vGuantera[6],
vGuanteraCantidad[6],
vMaletero[15],
vMaleteroCantidad[15],
vMaxMaletero,
vUSeguro,
vPaintJob,
vColor_1,
vColor_2,
vStereo,
vNeon,
vGasolina,
vEnDeposito,
vMulta,
vDanioSuperficie,
vDanioPuertas,
vDanioLuces,
vDanioRuedas,
vModificaciones[MAX_MODVEHICULOS],
vSpawned,
v_Guantera,
v_reload,
//
v_timer,
v_robo,
};
########################################
stock save_vehiculo(vid, todo = 1)
{
new vehd[64];
format(vehd, 64, DATOS_VEHICULOS, vid);
new INI: File = INI_Open(vehd);
INI_SetTag(File, "Informacion");
if (todo == 0)
{
INI_WriteInt(File, "VirtualWorld", i_Vehiculo[vid][vVirtualWorld]);
INI_WriteInt(File, "Interior", i_Vehiculo[vid][vInterior]);
}
if (todo == 1)
{
INI_WriteInt(File, "Patente", i_Vehiculo[vid][vPatente]);
INI_WriteString(File, "Dueño", i_Vehiculo[vid][vDueno]);
INI_WriteInt(File, "Llave", i_Vehiculo[vid][vLlave]);
INI_WriteInt(File, "Patentaza", i_Vehiculo[vid][vPatentaza]);
INI_WriteInt(File, "Modelo", i_Vehiculo[vid][vModelo]);
INI_WriteFloat(File, "Vida", i_Vehiculo[vid][vVida]);
INI_WriteFloat(File, "PosicionX", i_Vehiculo[vid][vPosicionX]);
INI_WriteFloat(File, "PosicionY", i_Vehiculo[vid][vPosicionY]);
INI_WriteFloat(File, "PosicionZ", i_Vehiculo[vid][vPosicionZ]);
INI_WriteFloat(File, "PosicionR", i_Vehiculo[vid][vPosicionR]);
INI_WriteInt(File, "VirtualWorld", i_Vehiculo[vid][vVirtualWorld]);
INI_WriteInt(File, "Interior", i_Vehiculo[vid][vInterior]);
INI_WriteInt(File, "Precio", i_Vehiculo[vid][vPrecio]);
INI_WriteInt(File, "Guantera_1", i_Vehiculo[vid][vGuantera][0]);
INI_WriteInt(File, "Guantera_2", i_Vehiculo[vid][vGuantera][1]);
INI_WriteInt(File, "Guantera_3", i_Vehiculo[vid][vGuantera][2]);
INI_WriteInt(File, "Guantera_4", i_Vehiculo[vid][vGuantera][3]);
INI_WriteInt(File, "Guantera_5", i_Vehiculo[vid][vGuantera][4]);
INI_WriteInt(File, "Guantera_6", i_Vehiculo[vid][vGuantera][5]);
INI_WriteInt(File, "Guantera_Cantidad_1", i_Vehiculo[vid][vGuanteraCantidad][0]);
INI_WriteInt(File, "Guantera_Cantidad_2", i_Vehiculo[vid][vGuanteraCantidad][1]);
INI_WriteInt(File, "Guantera_Cantidad_3", i_Vehiculo[vid][vGuanteraCantidad][2]);
INI_WriteInt(File, "Guantera_Cantidad_4", i_Vehiculo[vid][vGuanteraCantidad][3]);
INI_WriteInt(File, "Guantera_Cantidad_5", i_Vehiculo[vid][vGuanteraCantidad][4]);
INI_WriteInt(File, "Guantera_Cantidad_6", i_Vehiculo[vid][vGuanteraCantidad][5]);
INI_WriteInt(File, "Maletero_1", i_Vehiculo[vid][vMaletero][0]);
INI_WriteInt(File, "Maletero_2", i_Vehiculo[vid][vMaletero][1]);
INI_WriteInt(File, "Maletero_3", i_Vehiculo[vid][vMaletero][2]);
INI_WriteInt(File, "Maletero_4", i_Vehiculo[vid][vMaletero][3]);
INI_WriteInt(File, "Maletero_5", i_Vehiculo[vid][vMaletero][4]);
INI_WriteInt(File, "Maletero_6", i_Vehiculo[vid][vMaletero][5]);
INI_WriteInt(File, "Maletero_7", i_Vehiculo[vid][vMaletero][6]);
INI_WriteInt(File, "Maletero_8", i_Vehiculo[vid][vMaletero][7]);
INI_WriteInt(File, "Maletero_9", i_Vehiculo[vid][vMaletero][8]);
INI_WriteInt(File, "Maletero_10", i_Vehiculo[vid][vMaletero][9]);
INI_WriteInt(File, "Maletero_11", i_Vehiculo[vid][vMaletero][10]);
INI_WriteInt(File, "Maletero_12", i_Vehiculo[vid][vMaletero][11]);
INI_WriteInt(File, "Maletero_13", i_Vehiculo[vid][vMaletero][12]);
INI_WriteInt(File, "Maletero_14", i_Vehiculo[vid][vMaletero][13]);
INI_WriteInt(File, "Maletero_15", i_Vehiculo[vid][vMaletero][14]);
INI_WriteInt(File, "Maletero_Cantidad_1", i_Vehiculo[vid][vMaleteroCantidad][0]);
INI_WriteInt(File, "Maletero_Cantidad_2", i_Vehiculo[vid][vMaleteroCantidad][1]);
INI_WriteInt(File, "Maletero_Cantidad_3", i_Vehiculo[vid][vMaleteroCantidad][2]);
INI_WriteInt(File, "Maletero_Cantidad_4", i_Vehiculo[vid][vMaleteroCantidad][3]);
INI_WriteInt(File, "Maletero_Cantidad_5", i_Vehiculo[vid][vMaleteroCantidad][4]);
INI_WriteInt(File, "Maletero_Cantidad_6", i_Vehiculo[vid][vMaleteroCantidad][5]);
INI_WriteInt(File, "Maletero_Cantidad_7", i_Vehiculo[vid][vMaleteroCantidad][6]);
INI_WriteInt(File, "Maletero_Cantidad_8", i_Vehiculo[vid][vMaleteroCantidad][7]);
INI_WriteInt(File, "Maletero_Cantidad_9", i_Vehiculo[vid][vMaleteroCantidad][8]);
INI_WriteInt(File, "Maletero_Cantidad_10", i_Vehiculo[vid][vMaleteroCantidad][9]);
INI_WriteInt(File, "Maletero_Cantidad_11", i_Vehiculo[vid][vMaleteroCantidad][10]);
INI_WriteInt(File, "Maletero_Cantidad_12", i_Vehiculo[vid][vMaleteroCantidad][11]);
INI_WriteInt(File, "Maletero_Cantidad_13", i_Vehiculo[vid][vMaleteroCantidad][12]);
INI_WriteInt(File, "Maletero_Cantidad_14", i_Vehiculo[vid][vMaleteroCantidad][13]);
INI_WriteInt(File, "Maletero_Cantidad_15", i_Vehiculo[vid][vMaleteroCantidad][14]);
INI_WriteInt(File, "USeguro", i_Vehiculo[vid][vUSeguro]);
INI_WriteInt(File, "PaintJob", i_Vehiculo[vid][vPaintJob]);
INI_WriteInt(File, "Color_1", i_Vehiculo[vid][vColor_1]);
INI_WriteInt(File, "Color_2", i_Vehiculo[vid][vColor_2]);
INI_WriteInt(File, "Stereo", i_Vehiculo[vid][vStereo]);
INI_WriteInt(File, "Neon", i_Vehiculo[vid][vNeon]);
INI_WriteInt(File, "Gasolina", i_Vehiculo[vid][vGasolina]);
INI_WriteInt(File, "EnDeposito", i_Vehiculo[vid][vEnDeposito]);
INI_WriteInt(File, "Multa", i_Vehiculo[vid][vMulta]);
INI_WriteInt(File, "DañoSuperficie", i_Vehiculo[vid][vDanioSuperficie]);
INI_WriteInt(File, "DañoPuertas", i_Vehiculo[vid][vDanioPuertas]);
INI_WriteInt(File, "DañoLuces", i_Vehiculo[vid][vDanioLuces]);
INI_WriteInt(File, "DañoRuedas", i_Vehiculo[vid][vDanioRuedas]);
for(new m = 0; m < MAX_MODVEHICULOS; m++)
{
new key[64];
format(key, 64, "Modificacion_%d", m);
INI_WriteInt(File, key, i_Vehiculo[vid][vModificaciones][m]);
}
INI_WriteInt(File, "v_reload", i_Vehiculo[vid][v_reload]);
}
INI_Close(File);
return 1;
}
##########################################
// this one loads the vehicle data
funcion CargarVehiculos_data(vid, name[], value[])
{
INI_Int("Patente", i_Vehiculo[vid][vPatente]);
INI_String("Dueño", i_Vehiculo[vid][vDueno], 32);
INI_Int("Llave", i_Vehiculo[vid][vLlave]);
INI_Int("Patentaza", i_Vehiculo[vid][vPatentaza]);
INI_Int("Modelo", i_Vehiculo[vid][vModelo]);
INI_Float("Vida", i_Vehiculo[vid][vVida]);
INI_Float("PosicionX", i_Vehiculo[vid][vPosicionX]);
INI_Float("PosicionY", i_Vehiculo[vid][vPosicionY]);
INI_Float("PosicionZ", i_Vehiculo[vid][vPosicionZ]);
INI_Float("PosicionR", i_Vehiculo[vid][vPosicionR]);
INI_Int("VirtualWorld", i_Vehiculo[vid][vVirtualWorld]);
INI_Int("Interior", i_Vehiculo[vid][vInterior]);
INI_Int("Precio", i_Vehiculo[vid][vPrecio]);
INI_Int("Guantera_1", i_Vehiculo[vid][vGuantera][0]);
INI_Int("Guantera_2", i_Vehiculo[vid][vGuantera][1]);
INI_Int("Guantera_3", i_Vehiculo[vid][vGuantera][2]);
INI_Int("Guantera_4", i_Vehiculo[vid][vGuantera][3]);
INI_Int("Guantera_5", i_Vehiculo[vid][vGuantera][4]);
INI_Int("Guantera_6", i_Vehiculo[vid][vGuantera][5]);
INI_Int("Guantera_Cantidad_1", i_Vehiculo[vid][vGuanteraCantidad][0]);
INI_Int("Guantera_Cantidad_2", i_Vehiculo[vid][vGuanteraCantidad][1]);
INI_Int("Guantera_Cantidad_3", i_Vehiculo[vid][vGuanteraCantidad][2]);
INI_Int("Guantera_Cantidad_4", i_Vehiculo[vid][vGuanteraCantidad][3]);
INI_Int("Guantera_Cantidad_5", i_Vehiculo[vid][vGuanteraCantidad][4]);
INI_Int("Guantera_Cantidad_6", i_Vehiculo[vid][vGuanteraCantidad][5]);
INI_Int("Maletero_1", i_Vehiculo[vid][vMaletero][0]);
INI_Int("Maletero_2", i_Vehiculo[vid][vMaletero][1]);
INI_Int("Maletero_3", i_Vehiculo[vid][vMaletero][2]);
INI_Int("Maletero_4", i_Vehiculo[vid][vMaletero][3]);
INI_Int("Maletero_5", i_Vehiculo[vid][vMaletero][4]);
INI_Int("Maletero_6", i_Vehiculo[vid][vMaletero][5]);
INI_Int("Maletero_7", i_Vehiculo[vid][vMaletero][6]);
INI_Int("Maletero_8", i_Vehiculo[vid][vMaletero][7]);
INI_Int("Maletero_9", i_Vehiculo[vid][vMaletero][8]);
INI_Int("Maletero_10", i_Vehiculo[vid][vMaletero][9]);
INI_Int("Maletero_11", i_Vehiculo[vid][vMaletero][10]);
INI_Int("Maletero_12", i_Vehiculo[vid][vMaletero][11]);
INI_Int("Maletero_13", i_Vehiculo[vid][vMaletero][12]);
INI_Int("Maletero_14", i_Vehiculo[vid][vMaletero][13]);
INI_Int("Maletero_15", i_Vehiculo[vid][vMaletero][14]);
INI_Int("Maletero_Cantidad_1", i_Vehiculo[vid][vMaleteroCantidad][0]);
INI_Int("Maletero_Cantidad_2", i_Vehiculo[vid][vMaleteroCantidad][1]);
INI_Int("Maletero_Cantidad_3", i_Vehiculo[vid][vMaleteroCantidad][2]);
INI_Int("Maletero_Cantidad_4", i_Vehiculo[vid][vMaleteroCantidad][3]);
INI_Int("Maletero_Cantidad_5", i_Vehiculo[vid][vMaleteroCantidad][4]);
INI_Int("Maletero_Cantidad_6", i_Vehiculo[vid][vMaleteroCantidad][5]);
INI_Int("Maletero_Cantidad_7", i_Vehiculo[vid][vMaleteroCantidad][6]);
INI_Int("Maletero_Cantidad_8", i_Vehiculo[vid][vMaleteroCantidad][7]);
INI_Int("Maletero_Cantidad_9", i_Vehiculo[vid][vMaleteroCantidad][8]);
INI_Int("Maletero_Cantidad_10", i_Vehiculo[vid][vMaleteroCantidad][9]);
INI_Int("Maletero_Cantidad_11", i_Vehiculo[vid][vMaleteroCantidad][10]);
INI_Int("Maletero_Cantidad_12", i_Vehiculo[vid][vMaleteroCantidad][11]);
INI_Int("Maletero_Cantidad_13", i_Vehiculo[vid][vMaleteroCantidad][12]);
INI_Int("Maletero_Cantidad_14", i_Vehiculo[vid][vMaleteroCantidad][13]);
INI_Int("Maletero_Cantidad_15", i_Vehiculo[vid][vMaleteroCantidad][14]);
INI_Int("USeguro", i_Vehiculo[vid][vUSeguro]);
INI_Int("PaintJob", i_Vehiculo[vid][vPaintJob]);
INI_Int("Color_1", i_Vehiculo[vid][vColor_1]);
INI_Int("Color_2", i_Vehiculo[vid][vColor_2]);
INI_Int("Stereo", i_Vehiculo[vid][vStereo]);
INI_Int("Neon", i_Vehiculo[vid][vNeon]);
INI_Int("Gasolina", i_Vehiculo[vid][vGasolina]);
INI_Int("EnDeposito", i_Vehiculo[vid][vEnDeposito]);
INI_Int("Multa", i_Vehiculo[vid][vMulta]);
INI_Int("DañoSuperficie", i_Vehiculo[vid][vDanioSuperficie]);
INI_Int("DañoPuertas", i_Vehiculo[vid][vDanioPuertas]);
INI_Int("DañoLuces", i_Vehiculo[vid][vDanioLuces]);
INI_Int("DañoRuedas", i_Vehiculo[vid][vDanioRuedas]);
for(new m = 0; m < MAX_MODVEHICULOS; m++)
{
new key[64];
format(key, 64, "Modificacion_%d", m);
INI_Int(key, i_Vehiculo[vid][vModificaciones][m]);
}
INI_Int("v_reload", i_Vehiculo[vid][v_reload]);
return 1;
}
##########################################################
//this one spawns the car.
funcion CargarCoche(playerid, vid, Float: newx, Float: newy, Float: newz, Float: newangle, Float: health)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
if(i_Vehiculo[vid][vID] != INVALID_PLAYER_VEHICLE_ID)
{
new Float: oldx,Float: oldy,Float: oldz,oldfuel;
oldx = i_Vehiculo[vid][vPosicionX];
oldy = i_Vehiculo[vid][vPosicionY];
oldz = i_Vehiculo[vid][vPosicionZ];
if(oldx == newx && oldy == newy && oldz == newz) return 0;
i_Vehiculo[vid][vPosicionX] = newx;
i_Vehiculo[vid][vPosicionY] = newy;
i_Vehiculo[vid][vPosicionZ] = newz;
i_Vehiculo[vid][vPosicionR] = newangle;
i_Vehiculo[vid][vVirtualWorld] = GetPlayerVirtualWorld(playerid);
i_Vehiculo[vid][vInterior] = GetPlayerInterior(playerid);
oldfuel = veh_gasolina[i_Vehiculo[vid][vID]];
ActualizarMods(i_Vehiculo[vid][vID]);
DestroyVehicle(i_Vehiculo[vid][vID]);
random_veh[i_Vehiculo[vid][vID]] = 0;
new Coche = CreateVehicle(i_Vehiculo[vid][vModelo], i_Vehiculo[vid][vPosicionX], i_Vehiculo[vid][vPosicionY], i_Vehiculo[vid][vPosicionZ],
i_Vehiculo[vid][vPosicionR], i_Vehiculo[vid][vColor_1], i_Vehiculo[vid][vColor_2], -1);
random_veh[Coche] = Coche + random(899999);
SetVehicleVirtualWorld(Coche, i_Vehiculo[vid][vVirtualWorld]);
LinkVehicleToInterior(Coche, i_Vehiculo[vid][vInterior]);
i_Vehiculo[vid][vID] = Coche;
veh_gasolina[Coche] = oldfuel;
SetExVehicleHealth(Coche, health);
i_Vehiculo[vid][vGasolina] = oldfuel;
ColocarMods(Coche, vid);
DarMatricula(Coche, i_Vehiculo[vid][vPatentaza]);
return 1;
}
return 0; //causa error
}
##################################
// ↓ the problematic zone is located between the 2 "//define lic random" lines.
funcion CrearCoche(jugador, modelo, Float: x, Float: y, Float: z, Float: angle, color1, color2, precio)
{
for (new vid = 0; vid < MAX_VEHICULOS; vid++)
{
if (!i_Vehiculo[vid][vModelo])
{
new EspacioLibre;
for(new xd = 0; xd < 6; xd++)
{
if(user[jugador][jLlaveCoche][xd] == 0)
{
EspacioLibre = 1;
break;
}
}
if(EspacioLibre == 0) { _Mensaje(jugador, 0, "0", "Posees todas las ranuras de llaves propias ocupadas."); return 1; }
for(new xd; xd < 6; xd++)
{
if(user[jugador][jLlaveCoche][xd] == 0)
{
user[jugador][jLlaveCoche][xd] = vid+1000;
break;
}
}
i_Vehiculo[vid][vPatente] = vid+Random(-400000, 999999); //
strmid(i_Vehiculo[vid][vDueno], nombre_sin(jugador), 0, strlen(nombre_sin(jugador)), 32);
i_Vehiculo[vid][vLlave] = vid+1000;
//define lic random
new numberplate[25];
format(numberplate, sizeof(numberplate), "%c%c%c%c %c%c%c", RandomEx('A','Z'), RandomEx('A','Z'), RandomEx('1','9'), RandomEx('1','9'), RandomEx('1','9'), RandomEx('A','Z'), RandomEx('A','Z'));
//define lic random
i_Vehiculo[vid][vPatentaza] = numberplate;
i_Vehiculo[vid][vModelo] = modelo;
i_Vehiculo[vid][vPosicionX] = x;
i_Vehiculo[vid][vPosicionY] = y;
i_Vehiculo[vid][vPosicionZ] = z;
i_Vehiculo[vid][vSpawned] = 1;
i_Vehiculo[vid][vPaintJob] = -1;
i_Vehiculo[vid][v_reload] = 1;
i_Vehiculo[vid][vPosicionR] = angle;
i_Vehiculo[vid][vVirtualWorld] = GetPlayerVirtualWorld(jugador);
i_Vehiculo[vid][vInterior] = GetPlayerInterior(jugador);
i_Vehiculo[vid][vColor_1] = color1;
i_Vehiculo[vid][vColor_2] = color2;
i_Vehiculo[vid][vStereo] = 0;
i_Vehiculo[vid][vNeon] = 0;
i_Vehiculo[vid][vPrecio] = precio;
i_Vehiculo[vid][vGasolina] = 200;
i_Vehiculo[vid][vEnDeposito] = 0;
i_Vehiculo[vid][v_Guantera] = 0;
i_Vehiculo[vid][v_timer] = 0;
i_Vehiculo[vid][vVida] = 1000.0;
for(new m = 0; m < MAX_MODVEHICULOS; m++) { i_Vehiculo[vid][vModificaciones][m] = 0; }
new Coche = CreateVehicle(modelo, x, y, z, angle, color1, color2, -1);
random_veh[Coche] = Coche + random(899999);
i_Vehiculo[vid][vID] = Coche;
SetVehicleVirtualWorld(Coche, i_Vehiculo[vid][vVirtualWorld]);
LinkVehicleToInterior(Coche, i_Vehiculo[vid][vInterior]);
DarMatricula(Coche, i_Vehiculo[vid][vPatentaza]);
veh_gasolina[Coche] = 100;
SetPlayerPos(jugador, x, y, z);
PutPlayerInVehicle(jugador, i_Vehiculo[vid][vID], 0);
save_vehiculo(vid);
vid = MAX_VEHICULOS;
}
}
return 1;
}