Hello there, i used the function GetVehicleComponentInSlot(vehicleid, slotid), in pawno it not give errors, but it give me a bug in game: if i tune my car and i do this funcion, it give me ever the car component id "0"... why? help me :C
pawn Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
#define FILTERSCRIPT
#include <a_samp>
#include <sscanf2>
#include <Dini>
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOR_ROSSO 0xFF0000FF
#define COLOR_FUCSIA 0x9900FFFF
#define COLOR_BLU 0x0000FFFF
#define COLOR_CELESTE 0x00BFFFFF
#define COLOR_VERDE 0x00FF00FF
#define COLOR_VERDEACQUA 0x00FF99FF
#define COLOR_GIALLO 0xFFFF00FF
#define COLOR_ARANCIONE 0xFF9900FF
#define COLOR_MARRONE 0x663300FF
#define COLOR_ROSA 0xFF6666FF
#define COLOR_SALMONE 0xFF9966FF
#define COLOR_NERO 0x000000FF
#define COLOR_GRIGIO 0x4F5152FF
#define COLOR_BIANCO 0xFFFFFFFF
#define DIALOG_BUYCAR 66
#define DIALOG_VMENU 67
#define DIALOG_VPLATE 68
#define CarFileSave "M3_Server/PrivateCar/Cars/%d.ini"
#define DealFileSave "M3_Server/PrivateCar/Dealers/%d.ini"
#define MAX_PCARS 100
#define MAX_DEALERS 5
#define MAX_PLAYER_PCARS 10
#define MAX_COMPONENT_SLOTS 14
#define INVALID_PRIVATEVID -1
#if defined FILTERSCRIPT
enum Deal
{
Float: PosX,
Float: PosY,
Float: PosZ,
Float: PosAng
}
new DealerInfo[MAX_DEALERS][Deal];
enum pCar
{
bool: Vetrina,
DealerID,
bool: Esiste,
Owner[255],
PrivCarID,
Model,
Float: PosX,
Float: PosY,
Float: PosZ,
Float: PosAng,
Color1,
Color2,
Targa[255],
Valore,
Text3D: ValoreText,
bool: Locked,
mod0,
mod1,
mod2,
mod3,
mod4,
mod5,
mod6,
mod7,
mod8,
mod9,
mod10,
mod11,
mod12,
mod13,
mod14,
mod15,
mod16
}
new CarInfo[MAX_PCARS][pCar];
new tuned;
new VehicleNames[][] =
{
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
"Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
"Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
"Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
"Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
"Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
"Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster A", "Admiral",
"Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
"Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
"Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
"Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
"Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
"Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
"Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring A", "Sandking",
"Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
"Hotring B", "Hotring C", "Bloodring Banger", "Rancher", "Super GT",
"Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
"Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
"FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
"Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
"Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
"Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
"Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
"Windsor", "Monster B", "Monster C", "Uranus", "Jester", "Sultan", "Stratium",
"Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
"Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
"Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
"News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
"Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
"Police LS", "Police SF", "Police LV", "Picador", "SWAT", "Alpha",
"Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
"Tiller", "Utility Trailer"
};
forward SaveComponent(vehicleid, slotid, componentid);
public SaveComponent(vehicleid, slotid, componentid)
{
new VehicleStr1[255],VehicleStr2[255];
format(VehicleStr1, sizeof(VehicleStr2), CarFileSave, vehicleid);
format(VehicleStr2, sizeof(VehicleStr2), "Mod%d", slotid);
dini_IntSet(VehicleStr1, VehicleStr2, componentid);
switch(slotid)
{
case 0: CarInfo[vehicleid][mod0] = dini_Int(VehicleStr1, VehicleStr2);
case 1: CarInfo[vehicleid][mod1] = dini_Int(VehicleStr1, VehicleStr2);
case 2: CarInfo[vehicleid][mod2] = dini_Int(VehicleStr1, VehicleStr2);
case 3: CarInfo[vehicleid][mod3] = dini_Int(VehicleStr1, VehicleStr2);
case 4: CarInfo[vehicleid][mod4] = dini_Int(VehicleStr1, VehicleStr2);
case 5: CarInfo[vehicleid][mod5] = dini_Int(VehicleStr1, VehicleStr2);
case 6: CarInfo[vehicleid][mod6] = dini_Int(VehicleStr1, VehicleStr2);
case 7: CarInfo[vehicleid][mod7] = dini_Int(VehicleStr1, VehicleStr2);
case 8: CarInfo[vehicleid][mod8] = dini_Int(VehicleStr1, VehicleStr2);
case 9: CarInfo[vehicleid][mod9] = dini_Int(VehicleStr1, VehicleStr2);
case 10: CarInfo[vehicleid][mod10] = dini_Int(VehicleStr1, VehicleStr2);
case 11: CarInfo[vehicleid][mod11] = dini_Int(VehicleStr1, VehicleStr2);
case 12: CarInfo[vehicleid][mod12] = dini_Int(VehicleStr1, VehicleStr2);
case 13: CarInfo[vehicleid][mod13] = dini_Int(VehicleStr1, VehicleStr2);
}
}
stock ModVehicle(vehicleid)
{
new tuned2 = 0;
if(CarInfo[vehicleid][mod0] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod0]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod1] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod1]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod2] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod2]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod3] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod3]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod4] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod4]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod5] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod5]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod6] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod6]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod7] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod7]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod8] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod8]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod9] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod9]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod10] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod10]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod11] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod11]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod12] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod12]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod13] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod13]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod14] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod14]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod15] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod15]);
tuned2 = 1;
}
if(CarInfo[vehicleid][mod16] != 0) {
AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod16]);
tuned2 = 1;
}
if(tuned2 == 1) {
tuned++;
}
}
public OnFilterScriptInit()
{
new DealFile[255];
for(new dealerid = 0; dealerid < MAX_PCARS; dealerid++)
{
format(DealFile, sizeof(DealFile), DealFileSave, dealerid);
if(dini_Exists(DealFile))
{
DealerInfo[dealerid][PosX] = dini_Float(DealFile, "PosX");
DealerInfo[dealerid][PosY] = dini_Float(DealFile, "PosY");
DealerInfo[dealerid][PosZ] = dini_Float(DealFile, "PosZ");
DealerInfo[dealerid][PosAng] = dini_Float(DealFile, "PosAng");
}
}
new CarFile[255];
for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
{
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
if(dini_Exists(CarFile))
{
CarInfo[vehicleid][Esiste] = true;
CarInfo[vehicleid][Vetrina] = dini_Bool(CarFile, "Vetrina");
CarInfo[vehicleid][DealerID] = dini_Int(CarFile, "DealerID");
CarInfo[vehicleid][Owner] = dini_Int(CarFile, "Owner");
CarInfo[vehicleid][Model] = dini_Int(CarFile, "Model");
CarInfo[vehicleid][PosX] = dini_Float(CarFile, "PosX");
CarInfo[vehicleid][PosY] = dini_Float(CarFile, "PosY");
CarInfo[vehicleid][PosZ] = dini_Float(CarFile, "PosZ");
CarInfo[vehicleid][PosAng] = dini_Float(CarFile, "PosAng");
CarInfo[vehicleid][Color1] = dini_Int(CarFile, "Color1");
CarInfo[vehicleid][Color2] = dini_Int(CarFile, "Color2");
CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
CarInfo[vehicleid][Valore] = dini_Int(CarFile, "Valore");
CarInfo[vehicleid][Locked] = dini_Bool(CarFile, "Locked");
CarInfo[vehicleid][mod0] = dini_Int(CarFile, "Mod0");
CarInfo[vehicleid][mod1] = dini_Int(CarFile, "Mod1");
CarInfo[vehicleid][mod2] = dini_Int(CarFile, "Mod2");
CarInfo[vehicleid][mod3] = dini_Int(CarFile, "Mod3");
CarInfo[vehicleid][mod4] = dini_Int(CarFile, "Mod4");
CarInfo[vehicleid][mod5] = dini_Int(CarFile, "Mod5");
CarInfo[vehicleid][mod6] = dini_Int(CarFile, "Mod6");
CarInfo[vehicleid][mod7] = dini_Int(CarFile, "Mod7");
CarInfo[vehicleid][mod8] = dini_Int(CarFile, "Mod8");
CarInfo[vehicleid][mod9] = dini_Int(CarFile, "Mod9");
CarInfo[vehicleid][mod10] = dini_Int(CarFile, "Mod10");
CarInfo[vehicleid][mod11] = dini_Int(CarFile, "Mod11");
CarInfo[vehicleid][mod12] = dini_Int(CarFile, "Mod12");
CarInfo[vehicleid][mod13] = dini_Int(CarFile, "Mod13");
CarInfo[vehicleid][mod14] = dini_Int(CarFile, "Mod14");
CarInfo[vehicleid][mod15] = dini_Int(CarFile, "Mod15");
CarInfo[vehicleid][mod16] = dini_Int(CarFile, "Mod16");
CarInfo[vehicleid][PrivCarID] = CreateVehicle(CarInfo[vehicleid][Model], CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], CarInfo[vehicleid][PosAng], CarInfo[vehicleid][Color1], CarInfo[vehicleid][Color2], -1);
if(CarInfo[vehicleid][Vetrina] == true)
{
new CarStr[30];
format(CarStr, sizeof(CarStr), "Value: %d $\nDealer: %d", CarInfo[vehicleid][Valore], CarInfo[vehicleid][DealerID]);
CarInfo[vehicleid][ValoreText] = Create3DTextLabel(CarStr, COLOR_ARANCIONE, CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], 10, 0, 0);
Attach3DTextLabelToVehicle(CarInfo[vehicleid][ValoreText], CarInfo[vehicleid][PrivCarID], 0, 0, 0);
}
if(CarInfo[vehicleid][Locked] == true)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(CarInfo[vehicleid][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
doors = 1;
SetVehicleParamsEx(CarInfo[vehicleid][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
}
SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
}
}
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
{
if(CarInfo[vehicleid][PrivCarID] != 0)
{
DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
Delete3DTextLabel(CarInfo[vehicleid][ValoreText]);
}
}
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
ModVehicle(vehicleid);
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/adddealer", true, 10) == 0)
{
new DealerFile[255];
for(new dealerid = 0; dealerid < MAX_DEALERS; dealerid++)
{
format(DealerFile, sizeof(DealerFile), DealFileSave, dealerid);
if(!dini_Exists(DealerFile))
{
new Float: Pos[3], Float: Angle;
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle);
else GetPlayerFacingAngle(playerid, Angle);
dini_Create(DealerFile);
dini_FloatSet(DealerFile, "PosX", Pos[0]);
dini_FloatSet(DealerFile, "PosY", Pos[1]);
dini_FloatSet(DealerFile, "PosZ", Pos[2]);
dini_FloatSet(DealerFile, "PosAng", Angle);
DealerInfo[dealerid][PosX] = dini_Float(DealerFile, "PosX");
DealerInfo[dealerid][PosY] = dini_Float(DealerFile, "PosY");
DealerInfo[dealerid][PosZ] = dini_Float(DealerFile, "PosZ");
DealerInfo[dealerid][PosAng] = dini_Float(DealerFile, "PosAng");
new strDeal[128];
format(strDeal, sizeof(strDeal), "Hai creato il dealerid %d | PosX: %0.002f | PosY: %0.002f | PosZ: %0.002f | Angolo: %0.002f", dealerid, DealerInfo[dealerid][PosX], DealerInfo[dealerid][PosY], DealerInfo[dealerid][PosZ], DealerInfo[dealerid][PosAng]);
SendClientMessage(playerid, COLOR_VERDE, strDeal);
dealerid = MAX_DEALERS;
}
}
return 1;
}
if(strcmp(cmdtext, "/v", true, 6) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "Non sei in nessun veicolo");
new vehicleid = GetPlayerPersonalVehicleID(playerid);
if(vehicleid == INVALID_PRIVATEVID) return SendClientMessage(playerid, COLOR_ROSSO, "Non sei in nessun veicolo privato");
if(!IsPersonalVehicleOfPlayer(playerid, vehicleid) && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "Non sei in un tuo veicolo privato");
new strVinfo[64];
format(strVinfo, sizeof(strVinfo), "ID Veicolo: %d", vehicleid);
ShowPlayerDialog(playerid, DIALOG_VMENU, DIALOG_STYLE_LIST, strVinfo, "Parcheggia\nModifica Targa\nRottama", "Ok", "Esci");
return 1;
}
if(strcmp(cmdtext, "/vlock", true, 6) == 0)
{
if(GetVehicleIDInRangeOfPlayer(playerid) == INVALID_PRIVATEVID) return SendClientMessage(playerid, COLOR_ROSSO, "Nessun veicolo nelle vicinanze");
new vehicleidex = GetVehicleIDInRangeOfPlayer(playerid);
for(new vehicleid = 0; vehicleid < MAX_VEHICLES; vehicleid++)
{
if(vehicleid == CarInfo[vehicleidex][PrivCarID])
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
if(CarInfo[vehicleidex][Vetrina] == true && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "Non hai le chiavi di questo veicolo 'Non sei admin e non и di nessuno'");
else if((strlen(pName) != strlen(CarInfo[vehicleidex][Owner]) || strcmp(CarInfo[vehicleidex][Owner], pName, false, MAX_PLAYER_NAME) != 0) && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "Non hai le chiavi di questo veicolo 'Non sei admin ed и di un'altro");
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(CarInfo[vehicleidex][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
new CarFile[255];
format(CarFile, sizeof(CarFile), CarFileSave, vehicleidex);
if(doors == 0)
{
dini_BoolSet(CarFile, "Locked", true);
doors = 1;
SetVehicleParamsEx(CarInfo[vehicleidex][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
GameTextForPlayer(playerid, "~r~Porte Chiuse", 2000, 6);
}
else
{
dini_BoolSet(CarFile, "Locked", false);
doors = 0;
SetVehicleParamsEx(CarInfo[vehicleidex][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
GameTextForPlayer(playerid, "~g~Porte Aperte", 2000, 6);
}
vehicleidex = MAX_VEHICLES;
return 1;
}
}
return 1;
}
dcmd(addvetrina, 10, cmdtext);
dcmd(sellv, 5, cmdtext);
return 0;
}
dcmd_addvetrina(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "Devi essere admin RCon");
new dealerid, modello[32], color1, color2, valore;
if(sscanf(params, "ds[32]ddd", dealerid, modello, color1, color2, valore)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Usa: /addvetrina <dealerid> <Modello> <Colore 1> <Colore 2> <Valore>");
new modelid;
if(IsNumeric(modello)) modelid = strval(modello);
else modelid = GetVehicleNameToModel(modello);
if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_ROSSO, "Veicolo ID inesistente");
new Float: Pos[3], Float: Angle, CarFile[255];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Angle);
for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
{
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
if(!dini_Exists(CarFile))
{
CarInfo[vehicleid][Esiste] = true;
dini_Create(CarFile);
dini_BoolSet(CarFile, "Vetrina", true);
dini_IntSet(CarFile, "DealerID", dealerid);
dini_IntSet(CarFile, "Model", modelid);
dini_FloatSet(CarFile, "PosX", Pos[0]);
dini_FloatSet(CarFile, "PosY", Pos[1] + 2);
dini_FloatSet(CarFile, "PosZ", Pos[2]);
dini_FloatSet(CarFile, "PosAng", Angle);
dini_IntSet(CarFile, "Color1", color1);
dini_IntSet(CarFile, "Color2", color2);
dini_Set(CarFile, "Targa", "Cars for Sale");
dini_IntSet(CarFile, "Valore", valore);
CarInfo[vehicleid][Vetrina] = dini_Bool(CarFile, "Vetrina");
CarInfo[vehicleid][DealerID] = dini_Int(CarFile, "DealerID");
CarInfo[vehicleid][Model] = dini_Int(CarFile, "Model");
CarInfo[vehicleid][PosX] = dini_Float(CarFile, "PosX");
CarInfo[vehicleid][PosY] = dini_Float(CarFile, "PosY");
CarInfo[vehicleid][PosZ] = dini_Float(CarFile, "PosZ");
CarInfo[vehicleid][PosAng] = dini_Float(CarFile, "PosAng");
CarInfo[vehicleid][Color1] = dini_Int(CarFile, "Color1");
CarInfo[vehicleid][Color2] = dini_Int(CarFile, "Color2");
CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
CarInfo[vehicleid][Valore] = dini_Int(CarFile, "Valore");
CarInfo[vehicleid][PrivCarID] = CreateVehicle(CarInfo[vehicleid][Model], CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], CarInfo[vehicleid][PosAng], CarInfo[vehicleid][Color1], CarInfo[vehicleid][Color2], -1);
SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
new CarStr[30];
format(CarStr, sizeof(CarStr), "Value: %d $\nDealer: %d", CarInfo[vehicleid][Valore], CarInfo[vehicleid][DealerID]);
CarInfo[vehicleid][ValoreText] = Create3DTextLabel(CarStr, COLOR_ARANCIONE, CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], 10, 0, 0);
Attach3DTextLabelToVehicle(CarInfo[vehicleid][ValoreText], CarInfo[vehicleid][PrivCarID], 0, 0, 0);
vehicleid = MAX_PCARS;
}
}
return 1;
}
dcmd_sellv(playerid, params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_ROSSO, "Devi essere in un veicolo");
new vehicleid = GetPlayerPersonalVehicleID(playerid);
if(vehicleid == INVALID_PRIVATEVID) return SendClientMessage(playerid, COLOR_ROSSO, "Questo veicolo non и privato!");
if(!IsPersonalVehicleOfPlayer(playerid, vehicleid)) return SendClientMessage(playerid, COLOR_ROSSO, "Questo veicolo non и di tua proprietа");
new sellingid;
if(sscanf(params, "d", sellingid)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Usa: /sellv <playerid>");
if(sellingid == playerid) return SendClientMessage(playerid, COLOR_ROSSO, "Non puoi dare il veicolo a te stesso");
new CarFile[255], pName1[MAX_PLAYER_NAME], pName2[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName1, sizeof(pName1));
GetPlayerName(sellingid, pName2, sizeof(pName2));
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
dini_Set(CarFile, "Owner", pName2);
CarInfo[vehicleid][Owner] = dini_Get(CarFile, "Owner");
new str[128];
format(str, sizeof(str), "Hai ceduto il veicolo privato con ID \"%d\" a \"%s\" (ID: %d)", vehicleid, pName2, sellingid);
SendClientMessage(playerid, COLOR_VERDE, str);
format(str, sizeof(str), "Hai ricevuto il veicolo privato con ID \"%d\" da \"%s\" (ID: %d)", vehicleid, pName1, playerid);
SendClientMessage(sellingid, COLOR_VERDE, str);
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new PlayerCar = GetPlayerVehicleID(playerid);
for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
{
if(PlayerCar == CarInfo[vehicleid][PrivCarID] && CarInfo[vehicleid][Vetrina] == true)
{
new str[128];
format(str, sizeof(str), "Questo veicolo и in vendita dal concessionario, vuoi comprarlo?\nCosto: %d $", CarInfo[vehicleid][Valore]);
ShowPlayerDialog(playerid, DIALOG_BUYCAR, DIALOG_STYLE_MSGBOX, "Concessionario", str, "Si", "No");
}
}
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
for(new vid = 0; vid < MAX_PCARS; vid++)
{
if(vehicleid == CarInfo[vid][PrivCarID])
{
new CarFile[255];
format(CarFile, sizeof(CarFile), CarFileSave, vid);
dini_IntSet(CarFile, "Color1", color1);
dini_IntSet(CarFile, "Color2", color2);
CarInfo[vid][Color1] = dini_Int(CarFile, "Color1");
CarInfo[vid][Color2] = dini_Int(CarFile, "Color2");
}
}
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_BUYCAR)
{
if(response)
{
new CarFile[255], pName[MAX_PLAYER_NAME], PlayerCar = GetPlayerVehicleID(playerid);
GetPlayerName(playerid, pName, sizeof(pName));
for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
{
if(CarInfo[vehicleid][PrivCarID] == PlayerCar)
{
if(GetPlayerMoney(playerid) < CarInfo[vehicleid][Valore])
{
RemovePlayerFromVehicle(playerid);
return SendClientMessage(playerid, COLOR_ROSSO, "Non puoi permetterti questo veicolo con i soldi che hai in mano");
}
for(new myvehicleid = 0; myvehicleid < MAX_PCARS; myvehicleid++)
{
format(CarFile, sizeof(CarFile), CarFileSave, myvehicleid);
if(!dini_Exists(CarFile))
{
GivePlayerMoney(playerid, - CarInfo[vehicleid][Valore]);
dini_Create(CarFile);
CarInfo[vehicleid][Esiste] = true;
dini_BoolSet(CarFile, "Vetrina", false);
dini_Set(CarFile, "Owner", pName);
dini_IntSet(CarFile, "Model", GetVehicleModel(PlayerCar));
dini_FloatSet(CarFile, "PosX", DealerInfo[CarInfo[vehicleid][DealerID]][PosX]);
dini_FloatSet(CarFile, "PosY", DealerInfo[CarInfo[vehicleid][DealerID]][PosY]);
dini_FloatSet(CarFile, "PosZ", DealerInfo[CarInfo[vehicleid][DealerID]][PosZ]);
dini_FloatSet(CarFile, "PosAng", DealerInfo[CarInfo[vehicleid][DealerID]][PosAng]);
dini_IntSet(CarFile, "Color1", CarInfo[vehicleid][Color1]);
dini_IntSet(CarFile, "Color2", CarInfo[vehicleid][Color2]);
dini_Set(CarFile, "Targa", "Car Bought");
dini_IntSet(CarFile, "Valore", CarInfo[vehicleid][Valore] / 2);
CarInfo[myvehicleid][Vetrina] = dini_Bool(CarFile, "Vetrina");
CarInfo[myvehicleid][DealerID] = dini_Int(CarFile, "DealerID");
CarInfo[myvehicleid][Owner] = dini_Int(CarFile, "Owner");
CarInfo[myvehicleid][Model] = dini_Int(CarFile, "Model");
CarInfo[myvehicleid][PosX] = dini_Float(CarFile, "PosX");
CarInfo[myvehicleid][PosY] = dini_Float(CarFile, "PosY");
CarInfo[myvehicleid][PosZ] = dini_Float(CarFile, "PosZ");
CarInfo[myvehicleid][PosAng] = dini_Float(CarFile, "PosAng");
CarInfo[myvehicleid][Color1] = dini_Int(CarFile, "Color1");
CarInfo[myvehicleid][Color2] = dini_Int(CarFile, "Color2");
CarInfo[myvehicleid][Targa] = dini_Get(CarFile, "Targa");
CarInfo[myvehicleid][Valore] = dini_Int(CarFile, "Valore");
CarInfo[myvehicleid][PrivCarID] = CreateVehicle(CarInfo[myvehicleid][Model], CarInfo[myvehicleid][PosX], CarInfo[myvehicleid][PosY], CarInfo[myvehicleid][PosZ], CarInfo[myvehicleid][PosAng], CarInfo[myvehicleid][Color1], CarInfo[myvehicleid][Color2], -1);
SetVehicleNumberPlate(CarInfo[myvehicleid][PrivCarID], CarInfo[myvehicleid][Targa]);
PutPlayerInVehicle(playerid, CarInfo[myvehicleid][PrivCarID], 0);
vehicleid = MAX_PCARS;
myvehicleid = MAX_PCARS;
}
}
}
}
}
else if(!IsPlayerAdmin(playerid)) RemovePlayerFromVehicle(playerid);
return 1;
}
if(dialogid == DIALOG_VMENU && response)
{
switch(listitem)
{
case 0:
{
new CarFile[255], Float: vPos[3], Float: vFace, vehicleid = GetPlayerPersonalVehicleID(playerid);
if(!IsPersonalVehicleOfPlayer(playerid, vehicleid)) return SendClientMessage(playerid, COLOR_ROSSO, "Questo non и un tuo veicolo!");
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
GetVehiclePos(CarInfo[vehicleid][PrivCarID], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(CarInfo[vehicleid][PrivCarID], vFace);
dini_FloatSet(CarFile, "PosX", vPos[0]);
dini_FloatSet(CarFile, "PosY", vPos[1]);
dini_FloatSet(CarFile, "PosZ", vPos[2]);
dini_FloatSet(CarFile, "PosAng", vFace);
CarInfo[vehicleid][PosX] = dini_Float(CarFile, "PosX");
CarInfo[vehicleid][PosY] = dini_Float(CarFile, "PosY");
CarInfo[vehicleid][PosZ] = dini_Float(CarFile, "PosZ");
CarInfo[vehicleid][PosAng] = dini_Float(CarFile, "PosAng");
DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
new componentid = -1, MSG[128];
for(new slotid = 0; slotid < MAX_COMPONENT_SLOTS; slotid++)
{
componentid = GetVehicleComponentInSlot(vehicleid, slotid);
format(MSG, sizeof(MSG), "Componente dell'auto in salvataggio (Componentid: %d)", componentid);
SendClientMessage(playerid, COLOR_VERDE, MSG);
SaveComponent(vehicleid, slotid, componentid);
format(MSG, sizeof(MSG), "Componente dell'auto salvato (Componentid: %d)", componentid);
SendClientMessage(playerid, COLOR_VERDE, MSG);
}
CarInfo[vehicleid][PrivCarID] = CreateVehicle(CarInfo[vehicleid][Model], CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], CarInfo[vehicleid][PosAng], CarInfo[vehicleid][Color1], CarInfo[vehicleid][Color2], -1);
ModVehicle(CarInfo[vehicleid][PrivCarID]);
SendClientMessage(playerid, COLOR_VERDE, "Auto parcheggiata");
}
case 1: ShowPlayerDialog(playerid, DIALOG_VPLATE, DIALOG_STYLE_INPUT, "Modifica Targa", "Inserisci la targa per il veicolo", "Ok", "Annulla");
case 2:
{
new CarFile[255], vehicleid = GetPlayerPersonalVehicleID(playerid);
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
if(CarInfo[vehicleid][Esiste] == true)
{
dini_Remove(CarFile);
if(CarInfo[vehicleid][Vetrina] == false) GivePlayerMoney(playerid, CarInfo[vehicleid][Valore]);
CarInfo[vehicleid][Esiste] = false;
DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
CarInfo[vehicleid][Vetrina] = false;
CarInfo[vehicleid][DealerID] = -1;
CarInfo[vehicleid][Owner] = 0;
CarInfo[vehicleid][Model] = -1;
CarInfo[vehicleid][PosX] = 0.0;
CarInfo[vehicleid][PosY] = 0.0;
CarInfo[vehicleid][PosZ] = 0.0;
CarInfo[vehicleid][PosAng] = 0.0;
CarInfo[vehicleid][Color1] = -1;
CarInfo[vehicleid][Color2] = -1;
CarInfo[vehicleid][Targa] = 0;
CarInfo[vehicleid][Valore] = 0;
CarInfo[vehicleid][Locked] = false;
SendClientMessage(playerid, COLOR_VERDE, "Veicolo privato distrutto");
}
}
}
return 1;
}
if(dialogid == DIALOG_VPLATE && response)
{
new CarFile[255], vehicleid = GetPlayerPersonalVehicleID(playerid);
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
dini_Set(CarFile, "Targa", inputtext);
CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
SetVehicleToRespawn(CarInfo[vehicleid][PrivCarID]);
new str[128];
format(str, sizeof(str), "Targa del veicolo modificata, targa attuale: %s", CarInfo[vehicleid][Targa]);
SendClientMessage(playerid, COLOR_VERDE, str);
return 1;
}
return 0;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
forward SetPersonalVehiclePlate(vehicleid, plate[]);
public SetPersonalVehiclePlate(vehicleid, plate[])
{
new CarFile[255];
format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
dini_Set(CarFile, "Targa", plate);
CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
}
stock GetVehicleIDInRangeOfPlayer(playerid)
{
new vehicleid = INVALID_PRIVATEVID, Float: Pos[3];
for(new vehicleidex = 0; vehicleidex < MAX_PCARS; vehicleidex++)
{
GetVehiclePos(CarInfo[vehicleidex][PrivCarID], Pos[0], Pos[1], Pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 2.25, Pos[0], Pos[1], Pos[2]))
{
vehicleid = vehicleidex;
vehicleidex = MAX_VEHICLES;
}
}
return vehicleid;
}
stock IsPersonalVehicle(vehicleid)
{
new bool: PersonalV;
for(new vehicleidex = 0; vehicleidex < MAX_PCARS; vehicleidex++) if(CarInfo[vehicleidex][PrivCarID] == vehicleid) PersonalV = true;
return PersonalV;
}
stock GetPlayerPersonalVehicleID(playerid)
{
new vehicleid = INVALID_PRIVATEVID;
new myvehicleid = GetPlayerVehicleID(playerid);
if(IsPersonalVehicle(myvehicleid))
{
for(new vehicleidex = 0; vehicleidex < MAX_PCARS; vehicleidex++)
{
if(CarInfo[vehicleidex][PrivCarID] == myvehicleid) vehicleid = vehicleidex;
}
}
return vehicleid;
}
stock IsPersonalVehicleOfPlayer(playerid, vehicleid)
{
new bool: PlayerVehicle, pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
if(strcmp(pName, CarInfo[vehicleid][Owner], false, strlen(CarInfo[vehicleid][Owner])) == 0) PlayerVehicle = true;
return PlayerVehicle;
}
stock GetVehicleNameToModel(vname[])
{
new vehiclemodel = -1;
for(new i = 0; i < 211; i++)
{
if(strfind(VehicleNames[i], vname, true) != -1)
vehiclemodel = i + 400;
}
return vehiclemodel;
}
stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}