This is the case...i downloaded this script and i bought 3 cars thats the limit,i locked and unlocked them for couple of times,and i tryed again lock the car then message comes up "You are not near any of your vehicles !"
It cant be hard to fix,it must be a small problem...but i cant find it. I would be pleased if you might find the solution
Код:
#include <a_samp>
#include <SII>
#define color_white 0xFFFFFFFF
#define color_grey 0xAFAFAFFF
#define color_yellow 0xFFFF00FF
#define color_lightblue 0x33CCFFFF
#define color_orange 0xFF8300FF
#define MAX_DEALERSHIPS 50 // Limit of dealerships. The higher the more lag
#define MAX_OWNABLE_CARS 3 // Limit of cars a player can own. The higher the more lag
#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
enum dealership_enum
{
dealership_name[32],
dealership_owner[24],
dealership_price,
dealership_id,
dealership_owned,
Text3D:dealership_label,
Float:dealership_x,
Float:dealership_y,
Float:dealership_z,
Float:dealership_radius,
dealership_earnings
};
enum vehicle_stats
{
vehicle_dealership,
vehicle_model,
vehicle_price,
Float:vehicle_position[5],
Text3D:vehicle_label,
vehicle_onsale
};
new VehicleStatistics[MAX_VEHICLES][vehicle_stats];
new DealershipStatistics[MAX_DEALERSHIPS][dealership_enum];
new bool:dealership_taken[MAX_DEALERSHIPS];
new bool:locked[MAX_VEHICLES];
new owner[MAX_VEHICLES][MAX_PLAYER_NAME];
new spoiler[20][0] = {1000, 1001, 1002, 1003, 1014, 1015, 1016, 1023, 1058, 1060, 1049, 1050, 1138, 1139, 1146, 1147, 1158, 1162, 1163, 1164};
new nitro[3][0] = {1008, 1009, 1010};
new front_bumper[23][0] = {1117, 1152, 1153, 1155, 1157, 1160, 1165, 1167, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1179, 1181, 1182, 1185, 1188, 1189, 1192, 1193};
new rear_bumper[22][0] = {1140, 1141, 1148, 1149, 1150, 1151, 1154, 1156, 1159, 1161, 1166, 1168, 1176, 1177, 1178, 1180, 1183, 1184, 1186, 1187, 1190, 1191};
new exhaust[28][0] = {1018, 1019, 1020, 1021, 1022, 1028, 1029, 1037, 1043, 1044, 1045, 1046, 1059, 1064, 1065, 1066, 1089, 1092, 1104, 1105, 1113, 1114, 1126, 1127, 1129, 1132, 1135, 1136};
new bventr[2][0] = {1042, 1044};
new bventl[2][0] = {1043, 1045};
new bscoop[4][0] = {1004, 1005, 1011, 1012};
new rscoop[13][0] = {1006, 1032, 1033, 1035, 1038, 1053, 1054, 1055, 1061, 1067, 1068, 1088, 1091};
new left_sideskirt[21][0] = {1007, 1026, 1031, 1036, 1039, 1042, 1047, 1048, 1056, 1057, 1069, 1070, 1090, 1093, 1106, 1108, 1118, 1119, 1133, 1122, 1134};
new right_sideskirt[21][0] = {1017, 1027, 1030, 1040, 1041, 1051, 1052, 1062, 1063, 1071, 1072, 1094, 1095, 1099, 1101, 1102, 1107, 1120, 1121, 1124, 1137};
new hydraulics[1][0] = {1087};
new bass[1][0] = {1086};
new rbbars[2][0] = {1109, 1110};
new fbbars[2][0] = {1115, 1116};
new wheels[17][0] = {1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1096, 1097, 1098};
new lights[2][0] = {1013, 1024};
forward LoadFilterscript();
forward CheckCarAmount();
forward OnCarStreamIn();
new vehName[][] =
{
"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", "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", "Sandking", "Blista Compact", "Police Maverick",
"Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "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", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
"Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
"Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
"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", "LSPD Car", "SFPD Car", "LVPD Car",
"Police Rancher", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
"Boxville", "Tiller", "Utility Trailer"
};
public OnCarStreamIn()
{
for(new forplayerid = 0; forplayerid < MAX_PLAYERS; forplayerid++)
{
if(IsPlayerConnected(forplayerid))
{
for(new vehicleid = 0; vehicleid < MAX_VEHICLES; vehicleid++)
{
if(vehicleid > 0)
{
if(IsPlayerNearVehicle(forplayerid, vehicleid, 30.0))
{
switch(locked[vehicleid])
{
case false: SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
case true: SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
}
}
}
}
}
}
return 0;
}
public CheckCarAmount()
{
new
cars,
playername[24],
var[32];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GetPVarInt(i, "AmountOfCars") < 0)
{
GetPlayerName(i, playername, sizeof(playername));
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Carkey_%d", s);
if(GetPVarInt(i, var) > 0) { cars++; }
}
SetPVarInt(i, "AmountOfCars", cars);
}
}
}
return 1;
}
public LoadFilterscript()
{
LoadDealerships();
LoadDealershipCars();
for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { LoadPlayerVehicleData(i); } }
return 1;
}
stock frename(oldname[], newname[])
{
if(!fexist(oldname)) return 0;
new string[255], File:oldfile, File:newfile;
oldfile = fopen(oldname, io_read);
newfile = fopen(newname, io_write);
while(fread(oldfile, string))
{
format(string,sizeof(string), "%s", string);
fwrite(newfile, string);
}
fclose(oldfile);
fclose(newfile);
fremove(oldname);
return 1;
}
stock CheckForFile(file[])
{
if(!fexist(file)) return printf("WARNING: Missing %s in scriptfiles folder.\nYour server may NOT function properly without the file.\n", file);
return 1;
}
public OnFilterScriptInit()
{
CheckForFile("dealerships/vehicles/");
CheckForFile("ownedcars/");
SetTimer("LoadFilterscript", 2000, false);
SetTimer("CheckCarAmount", 2000, true);
SetTimer("OnCarStreamIn", 200, true);
return 1;
}
public OnFilterScriptExit()
{
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(dealership_taken[i] == true)
{
SaveDealership(i);
for(new v = 1; v < MAX_VEHICLES; v++)
{
if(VehicleStatistics[v][vehicle_dealership] == i)
{
VehicleStatistics[v][vehicle_dealership] = 0;
VehicleStatistics[v][vehicle_model] = 0;
VehicleStatistics[v][vehicle_price] = 0;
VehicleStatistics[v][vehicle_position][1] = 0.0;
VehicleStatistics[v][vehicle_position][2] = 0.0;
VehicleStatistics[v][vehicle_position][3] = 0.0;
VehicleStatistics[v][vehicle_position][4] = 0.0;
VehicleStatistics[v][vehicle_onsale] = 0;
Delete3DTextLabel(VehicleStatistics[v][vehicle_label]);
DestroyVehicle(v);
}
}
strmid(DealershipStatistics[i][dealership_name], "None", 0, strlen("None"), 255);
strmid(DealershipStatistics[i][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[i][dealership_price] = 0;
DealershipStatistics[i][dealership_owned] = 0;
DealershipStatistics[i][dealership_x] = 0.0;
DealershipStatistics[i][dealership_y] = 0.0;
DealershipStatistics[i][dealership_z] = 0.0;
DealershipStatistics[i][dealership_radius] = 0.0;
DealershipStatistics[i][dealership_earnings] = 0;
dealership_taken[i] = false;
Delete3DTextLabel(DealershipStatistics[i][dealership_label]);
DestroyPickup(DealershipStatistics[i][dealership_id]);
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
SavePlayerVehicleData(i);
UnloadVehicles(i);
}
}
return 1;
}
public OnPlayerSpawn(playerid)
{
new
playername[24];
if(GetPVarInt(playerid, "CarsLoaded") == 0) LoadPlayerVehicleData(playerid);
GetPlayerName(playerid, playername, sizeof(playername));
if(strcmp(DealershipStatistics[GetPVarInt(playerid, "HasDealership")][dealership_owner], playername, true) == 0) { }
else { SetPVarInt(playerid, "HasDealership", 0); }
return 1;
}
public OnPlayerDisconnect(playerid)
{
SavePlayerVehicleData(playerid);
UnloadVehicles(playerid);
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
new
var[32],
componentslot = InitComponents(componentid);
format(var, sizeof(var), "Component%d_%d", componentslot, ReturnVehicleSlot(playerid));
SetPVarInt(playerid, var, componentid);
SavePlayerVehicleData(playerid);
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
new
var[32];
format(var, sizeof(var), "Paintjob_%d", ReturnVehicleSlot(playerid));
SetPVarInt(playerid, var, paintjobid);
SavePlayerVehicleData(playerid);
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
new
var[32];
format(var, sizeof(var), "Color1_%d", ReturnVehicleSlot(playerid));
SetPVarInt(playerid, var, color1);
format(var, sizeof(var), "Color2_%d", ReturnVehicleSlot(playerid));
SetPVarInt(playerid, var, color2);
SavePlayerVehicleData(playerid);
return 1;
}
stock InitComponents(componentid)
{
new
i = 0;
for(i = 0; i < 20; i ++) { if(spoiler[i][0] == componentid) { return 1; } }
for(i = 0; i < 3; i ++) { if(nitro[i][0] == componentid) { return 2; } }
for(i = 0; i < 23; i ++) { if(front_bumper[i][0] == componentid) { return 3; } }
for(i = 0; i < 22; i ++) { if(rear_bumper[i][0] == componentid) { return 4; } }
for(i = 0; i < 28; i ++) { if(exhaust[i][0] == componentid) { return 5; } }
for(i = 0; i < 2; i ++) { if(bventr[i][0] == componentid) { return 6; } }
for(i = 0; i < 2; i ++) { if(bventl[i][0] == componentid) { return 7; } }
for(i = 0; i < 4; i ++) { if(bscoop[i][0] == componentid) { return 8; } }
for(i = 0; i < 13; i ++) { if(rscoop[i][0] == componentid) { return 9; } }
for(i = 0; i < 21; i ++) { if(left_sideskirt[i][0] == componentid) { return 10; } }
for(i = 0; i < 21; i ++) { if(right_sideskirt[i][0] == componentid) { return 11; } }
if(hydraulics[0][0] == componentid) { return 12; }
if(bass[0][0] == componentid) { return 13; }
for(i = 0; i < 2; i ++) { if(rbbars[i][0] == componentid) { return 14; } }
for(i = 0; i < 2; i ++) { if(fbbars[i][0] == componentid) { return 15; } }
for(i = 0; i < 17; i ++) { if(wheels[i][0] == componentid) { return 16; } }
for(i = 0; i < 2; i ++) { if(lights[i][0] == componentid) { return 17; } }
return 0;
}
stock LoadDealershipCars()
{
new
file[100],
file2[100],
string[128],
vehicle;
for(new i = 1; i < MAX_VEHICLES; i++)
{
format(file, sizeof(file), "dealerships/vehicles/%d.cfg", i);
if(!fexist(file)) continue;
if(fexist(file) && INI_Open(file))
{
if(GetVehicleModel(i) > 399)
{
for (new v = 1; v < MAX_VEHICLES; v ++)
{
if (GetVehicleModel(v) == 0)
{
i = v;
break;
}
}
format(file2, sizeof(file2), "dealerships/vehicles/%d.cfg", i);
frename(file, file2);
}
VehicleStatistics[i][vehicle_dealership] = INI_ReadInt("vehicle_dealership");
VehicleStatistics[i][vehicle_model] = INI_ReadInt("vehicle_model");
VehicleStatistics[i][vehicle_price] = INI_ReadInt("vehicle_price");
VehicleStatistics[i][vehicle_position][1] = INI_ReadFloat("vehicle_x");
VehicleStatistics[i][vehicle_position][2] = INI_ReadFloat("vehicle_y");
VehicleStatistics[i][vehicle_position][3] = INI_ReadFloat("vehicle_z");
VehicleStatistics[i][vehicle_position][4] = INI_ReadFloat("vehicle_angle");
VehicleStatistics[i][vehicle_onsale] = INI_ReadInt("vehicle_onsale");
vehicle = CreateVehicle(VehicleStatistics[i][vehicle_model], VehicleStatistics[i][vehicle_position][1], VehicleStatistics[i][vehicle_position][2], VehicleStatistics[i][vehicle_position][3], VehicleStatistics[i][vehicle_position][4], 0, 0, -1);
format(string, sizeof(string), "{00C3FF}%s On Sale - Price: $%d{00C3FF}", GetVehicleName(vehicle), VehicleStatistics[i][vehicle_price]);
VehicleStatistics[i][vehicle_label] = Create3DTextLabel(string, color_orange, VehicleStatistics[i][vehicle_position][1], VehicleStatistics[i][vehicle_position][2], VehicleStatistics[i][vehicle_position][3], 10.0, 0);
INI_Close();
}
}
return 1;
}
stock LoadDealerships()
{
new file[100], string[256], name[32], ownr[24];
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
format(file, sizeof(file), "dealerships/%d.cfg", i);
if(fexist(file) && INI_Open(file))
{
INI_ReadString(name, "dealership_name");
INI_ReadString(ownr, "dealership_owner");
strmid(DealershipStatistics[i][dealership_name], name, 0, strlen(name), 255);
strmid(DealershipStatistics[i][dealership_owner], ownr, 0, strlen(ownr), 255);
DealershipStatistics[i][dealership_price] = INI_ReadInt("dealership_price");
DealershipStatistics[i][dealership_owned] = INI_ReadInt("dealership_owned");
DealershipStatistics[i][dealership_x] = INI_ReadFloat("dealership_x");
DealershipStatistics[i][dealership_y] = INI_ReadFloat("dealership_y");
DealershipStatistics[i][dealership_z] = INI_ReadFloat("dealership_z");
DealershipStatistics[i][dealership_radius] = INI_ReadFloat("dealership_radius");
DealershipStatistics[i][dealership_earnings] = INI_ReadInt("dealership_earnings");
switch(DealershipStatistics[i][dealership_owned])
{
case 0: { format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", DealershipStatistics[i][dealership_name], DealershipStatistics[i][dealership_price]); }
case 1: { format(string, sizeof(string), "{FFF700}%s{FFF700}", DealershipStatistics[i][dealership_name]); }
}
DealershipStatistics[i][dealership_label] = Create3DTextLabel(string, color_white, DealershipStatistics[i][dealership_x], DealershipStatistics[i][dealership_y], DealershipStatistics[i][dealership_z], 10.0, 0);
CreatePickup(1239, 1, DealershipStatistics[i][dealership_x], DealershipStatistics[i][dealership_y], DealershipStatistics[i][dealership_z]);
dealership_taken[i] = true;
INI_Close();
}
}
return 1;
}
stock SaveDealership(dealershipid)
{
new file[100];
if(dealership_taken[dealershipid] == true)
{
format(file, sizeof(file), "dealerships/%d.cfg", dealershipid);
if(INI_Open(file))
{
INI_WriteString("dealership_name", DealershipStatistics[dealershipid][dealership_name]);
INI_WriteString("dealership_owner", DealershipStatistics[dealershipid][dealership_owner]);
INI_WriteInt("dealership_price", DealershipStatistics[dealershipid][dealership_price]);
INI_WriteInt("dealership_owned", DealershipStatistics[dealershipid][dealership_owned]);
INI_WriteFloat("dealership_x", DealershipStatistics[dealershipid][dealership_x]);
INI_WriteFloat("dealership_y", DealershipStatistics[dealershipid][dealership_y]);
INI_WriteFloat("dealership_z", DealershipStatistics[dealershipid][dealership_z]);
INI_WriteFloat("dealership_radius", DealershipStatistics[dealershipid][dealership_radius]);
INI_WriteInt("dealership_earnings", DealershipStatistics[dealershipid][dealership_earnings]);
INI_Save();
INI_Close();
}
}
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(VehicleStatistics[i][vehicle_dealership] == dealershipid)
{
format(file, sizeof(file), "dealerships/vehicles/%d.cfg", i);
if(INI_Open(file))
{
INI_WriteInt("vehicle_dealership", VehicleStatistics[i][vehicle_dealership]);
INI_WriteInt("vehicle_model", VehicleStatistics[i][vehicle_model]);
INI_WriteInt("vehicle_price", VehicleStatistics[i][vehicle_price]);
INI_WriteFloat("vehicle_x", VehicleStatistics[i][vehicle_position][1]);
INI_WriteFloat("vehicle_y", VehicleStatistics[i][vehicle_position][2]);
INI_WriteFloat("vehicle_z", VehicleStatistics[i][vehicle_position][3]);
INI_WriteFloat("vehicle_angle", VehicleStatistics[i][vehicle_position][4]);
INI_WriteInt("vehicle_onsale", VehicleStatistics[i][vehicle_onsale]);
INI_Save();
INI_Close();
}
}
}
return 1;
}
dcmd_createdealer(playerid, params[])
{
new
price,
dealername[32],
Float:radius,
dealershipid = -1,
bool:assigned = false,
string[256],
Float:x,
Float:y,
Float:z;
GetPlayerPos(playerid, x, y, z);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, color_grey, " You are not authorized to use this command !");
if(sscanf(params, "dfs", price, radius, dealername))
return SendClientMessage(playerid, color_white, "* [Usage]: /createdealer [price] [radius] [name of dealership]");
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(dealership_taken[i] == false)
{
dealershipid = i;
assigned = true;
break;
}
}
if(assigned == false) return SendClientMessage(playerid, color_grey, " Something went wrong while creating the dealership !");
strmid(DealershipStatistics[dealershipid][dealership_name], dealername, 0, strlen(dealername), 255);
strmid(DealershipStatistics[dealershipid][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[dealershipid][dealership_price] = price;
DealershipStatistics[dealershipid][dealership_owned] = 0;
DealershipStatistics[dealershipid][dealership_x] = x;
DealershipStatistics[dealershipid][dealership_y] = y;
DealershipStatistics[dealershipid][dealership_z] = z;
DealershipStatistics[dealershipid][dealership_radius] = radius;
DealershipStatistics[dealershipid][dealership_id] = CreatePickup(1274, 23, x, y, z);
format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", dealername, price);
DealershipStatistics[dealershipid][dealership_label] = Create3DTextLabel(string, color_white, x, y, z, 10.0, 0);
format(string, sizeof(string), " Dealership %d created.", dealershipid);
SendClientMessage(playerid, color_grey, string);
dealership_taken[dealershipid] = true;
SaveDealership(dealershipid);
return 1;
}
dcmd_destroydealer(playerid, params[])
{
new
id,
file[100];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, color_grey, " You are not authorized to use this command !");
if(sscanf(params, "d", id))
return SendClientMessage(playerid, color_white, "* [Usage]: /destroydealer [dealershipid]");
if(id < 1 || id > MAX_DEALERSHIPS) return SendClientMessage(playerid, color_grey, " Invalid dealership ID !");
if(dealership_taken[id] == true)
{
format(file, sizeof(file), "dealerships/%d.cfg", id);
if(fexist(file)) { fremove(file); }
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(VehicleStatistics[i][vehicle_dealership] == id)
{
format(file, sizeof(file), "dealerships/vehicles/%d.cfg", i);
if(fexist(file)) { fremove(file); }
VehicleStatistics[i][vehicle_dealership] = 0;
VehicleStatistics[i][vehicle_model] = 0;
VehicleStatistics[i][vehicle_price] = 0;
VehicleStatistics[i][vehicle_position][1] = 0.0;
VehicleStatistics[i][vehicle_position][2] = 0.0;
VehicleStatistics[i][vehicle_position][3] = 0.0;
VehicleStatistics[i][vehicle_position][4] = 0.0;
VehicleStatistics[i][vehicle_onsale] = 0;
Delete3DTextLabel(VehicleStatistics[i][vehicle_label]);
DestroyVehicle(i);
}
}
strmid(DealershipStatistics[id][dealership_name], "None", 0, strlen("None"), 255);
strmid(DealershipStatistics[id][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[id][dealership_price] = 0;
DealershipStatistics[id][dealership_owned] = 0;
DealershipStatistics[id][dealership_x] = 0.0;
DealershipStatistics[id][dealership_y] = 0.0;
DealershipStatistics[id][dealership_z] = 0.0;
DealershipStatistics[id][dealership_radius] = 0.0;
DealershipStatistics[id][dealership_earnings] = 0;
dealership_taken[id] = false;
Delete3DTextLabel(DealershipStatistics[id][dealership_label]);
DestroyPickup(DealershipStatistics[id][dealership_id]);
return 1;
}
else { SendClientMessage(playerid, color_grey, " Dealership ID not taken !"); }
return 1;
}
dcmd_buydealer(playerid, params[])
{
params[0] = 0;
new
dealershipid = -1,
string[256],
playername[24],
bool:isnear = false;
GetPlayerName(playerid, playername, sizeof(playername));
if(GetPVarInt(playerid, "HasDealership") != 0) return SendClientMessage(playerid, color_grey, " You already have a dealership !");
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, DealershipStatistics[i][dealership_x], DealershipStatistics[i][dealership_y], DealershipStatistics[i][dealership_z]))
{
dealershipid = i;
isnear = true;
break;
}
}
if(isnear == false) return SendClientMessage(playerid, color_grey, " You are not near a dealership!");
if(DealershipStatistics[dealershipid][dealership_owned] == 0)
{
if(GetPlayerMoney(playerid) >= DealershipStatistics[dealershipid][dealership_price])
{
format(string, sizeof(string), "{FFF700}[%s]{FFF700}", DealershipStatistics[dealershipid][dealership_name]);
Delete3DTextLabel(DealershipStatistics[dealershipid][dealership_label]);
DealershipStatistics[dealershipid][dealership_label] = Create3DTextLabel(string, color_white, DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y], DealershipStatistics[dealershipid][dealership_z], 10.0, 0);
DealershipStatistics[dealershipid][dealership_owned] = 1;
strmid(DealershipStatistics[dealershipid][dealership_owner], playername, 0, strlen(playername), 255);
GivePlayerMoney(playerid, -DealershipStatistics[dealershipid][dealership_price]);
format(string, sizeof(string), "Congratulations, you've purchased %s for $%d.", DealershipStatistics[dealershipid][dealership_name], DealershipStatistics[dealershipid][dealership_price]);
SendClientMessage(playerid, color_yellow, string);
SetPVarInt(playerid, "HasDealership", dealershipid);
SaveDealership(dealershipid);
return 1;
}
else return SendClientMessage(playerid, color_grey, " You can't afford this !");
}
else { SendClientMessage(playerid, color_grey, " This dealership is already owned !"); }
return 1;
}
dcmd_createcar(playerid, params[])
{
new
model,
price,
dealershipid = GetPVarInt(playerid, "HasDealership");
if(GetPVarInt(playerid, "HasDealership") != 0)
{
if(!IsPlayerInRangeOfPoint(playerid, DealershipStatistics[dealershipid][dealership_radius], DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y], DealershipStatistics[dealershipid][dealership_z]))
return SendClientMessage(playerid, color_grey, " You are not near your dealership !");
new Float:x, Float:y, Float:z, Float:angle;
GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle);
if(sscanf(params, "dd", model, price)) return SendClientMessage(playerid, color_white, "* [Usage]: /createcar [model] [price]");
CreateDealershipVehicle(playerid, model, price, x, y, z, angle);
return 1;
}
else { SendClientMessage(playerid, color_grey, " You don't own a dealership !"); }
return 1;
}
dcmd_earnings(playerid, params[])
{
params[0] = 0;
new
dealershipid = GetPVarInt(playerid, "HasDealership"),
string[64];
if(GetPVarInt(playerid, "HasDealership") != 0)
{
format(string, sizeof(string), "{FF8300}Earnings:{FFFFFF} $%d", DealershipStatistics[dealershipid][dealership_earnings]);
SendClientMessage(playerid, color_white, string);
return 1;
}
else { SendClientMessage(playerid, color_grey, " You don't own a dealership !"); }
return 1;
}
dcmd_collectearnings(playerid, params[])
{
params[0] = 0;
new
string[128],
dealershipid = GetPVarInt(playerid, "HasDealership");
if(GetPVarInt(playerid, "HasDealership") != 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 2.0, DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y], DealershipStatistics[dealershipid][dealership_z]))
return SendClientMessage(playerid, color_grey, " You are not near your dealership !");
if(!DealershipStatistics[dealershipid][dealership_earnings])
return SendClientMessage(playerid, color_grey, " You have no earnings to collect !");
format(string, sizeof(string), "* You've collected $%d from your dealership's earnings.", DealershipStatistics[dealershipid][dealership_earnings]);
SendClientMessage(playerid, color_lightblue, string);
GivePlayerMoney(playerid, DealershipStatistics[dealershipid][dealership_earnings]);
DealershipStatistics[dealershipid][dealership_earnings] = 0;
return 1;
}
else { SendClientMessage(playerid, color_grey, " You don't own a dealership !"); }
return 1;
}
dcmd_selldealership(playerid, params[])
{
new
dealershipid = GetPVarInt(playerid, "HasDealership"),
string[128];
if(GetPVarInt(playerid, "HasDealership") != 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 2.0, DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y], DealershipStatistics[dealershipid][dealership_z]))
return SendClientMessage(playerid, color_grey, " You are not near your dealership !");
if(!params[0])
return SendClientMessage(playerid, color_white, "* [Usage]: /selldealership [confirm] - Sell your dealership back for half price.");
if(strcmp(params, "confirm", true) == 0)
{
new
price = (DealershipStatistics[dealershipid][dealership_price] / 2);
GivePlayerMoney(playerid, price);
format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", DealershipStatistics[dealershipid][dealership_name], DealershipStatistics[dealershipid][dealership_price]);
Delete3DTextLabel(DealershipStatistics[dealershipid][dealership_label]);
DealershipStatistics[dealershipid][dealership_label] = Create3DTextLabel(string, color_white, DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y], DealershipStatistics[dealershipid][dealership_z], 10.0, 0);
DealershipStatistics[dealershipid][dealership_owned] = 0;
strmid(DealershipStatistics[dealershipid][dealership_owner], "No-one", 0, strlen("No-one"), 255);
format(string, sizeof(string), "You've sold your dealership back to the market for $%d.", DealershipStatistics[dealershipid][dealership_price]);
SendClientMessage(playerid, color_yellow, string);
SetPVarInt(playerid, "HasDealership", 0);
SaveDealership(dealershipid);
return 1;
}
}
else { SendClientMessage(playerid, color_grey, " You don't own a dealership !"); }
return 1;
}
dcmd_park(playerid, params[])
{
params[0] = 0;
if(IsPlayerInAnyVehicle(playerid))
{
if(DoesPlayerOwnThisVehicle(playerid))
return ParkVehicle(playerid, ReturnVehicleSlot(playerid));
else return SendClientMessage(playerid, color_grey, " You don't own this vehicle !");
}
else { SendClientMessage(playerid, color_grey, " You are not in a vehicle !"); }
return 1;
}
dcmd_delete(playerid, params[])
{
new
slot;
if(GetPVarInt(playerid, "AmountOfCars") <= 0)
return SendClientMessage(playerid, color_grey, " You don't own any vehicles !");
if(sscanf(params, "d", slot))
return SendClientMessage(playerid, color_white, "* [Usage]: /delete [1/2]");
DeleteVehicle(playerid, slot);
return 1;
}
dcmd_lock(playerid, params[])
{
new
vehicleid,
status[15],
Float:position[4],
var[64];
params[0] = 0;
GetPlayerPos(playerid, position[1], position[2], position[3]);
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Carkey_%d", s);
if(IsPlayerNearVehicle(playerid, GetPVarInt(playerid, var), 3.5))
{
vehicleid = GetPVarInt(playerid, var);
switch(locked[vehicleid])
{
case false:
{
for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { SetVehicleParamsForPlayer(vehicleid, i, 0, 1); } }
locked[vehicleid] = true;
status = "~r~Locked";
format(var, sizeof(var), "Locked_%d", s);
SetPVarInt(playerid, var, 1);
}
case true:
{
for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { SetVehicleParamsForPlayer(vehicleid, i, 0, 0); } }
locked[vehicleid] = false;
status = "~g~Unlocked";
format(var, sizeof(var), "Locked_%d", s);
SetPVarInt(playerid, var, 0);
}
}
GameTextForPlayer(playerid, status, 2000, 6);
PlaySoundAtPoint(1145, 3.0, position[1], position[2], position[3]);
break;
}
else { SendClientMessage(playerid, color_grey, " You are not near any of your vehicles !"); break; }
}
return 1;
}
stock PlaySoundAtPoint(soundid, Float:radius, Float:pos_x, Float:pos_y, Float:pos_z)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i, radius, pos_x, pos_y, pos_z))
return PlayerPlaySound(i, soundid, 0.0, 0.0, 0.0);
}
return 1;
}
stock IsPlayerNearVehicle(playerid, vehicleid, Float:radius)
{
new
Float:x,
Float:y,
Float:z;
GetVehiclePos(vehicleid, x, y, z);
if(IsPlayerInRangeOfPoint(playerid, radius, x, y, z)) return 1;
return 0;
}
stock DoesPlayerOwnThisVehicle(playerid)
{
new
vehicleid = GetPlayerVehicleID(playerid),
var[32];
if(vehicleid > 0)
{
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Carkey_%d", s);
if(GetPVarInt(playerid, var) == vehicleid) return 1;
}
}
return 0;
}
stock CreateDealershipVehicle(creator, model, price, Float:carx, Float:cary, Float:carz, Float:carangle)
{
new
vehicleid,
string[256];
vehicleid = CreateVehicle(model, carx, cary, carz, carangle, 0, 0, -1);
if(vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(creator, color_grey, " The car couldn't be created !");
VehicleStatistics[vehicleid][vehicle_dealership] = GetPVarInt(creator, "HasDealership");
VehicleStatistics[vehicleid][vehicle_model] = model;
VehicleStatistics[vehicleid][vehicle_price] = price;
VehicleStatistics[vehicleid][vehicle_position][1] = carx;
VehicleStatistics[vehicleid][vehicle_position][2] = cary;
VehicleStatistics[vehicleid][vehicle_position][3] = carz;
VehicleStatistics[vehicleid][vehicle_position][4] = carangle;
VehicleStatistics[vehicleid][vehicle_onsale] = 1;
format(string, sizeof(string), "%s For Sale - Price: $%d", GetVehicleName(vehicleid), price);
VehicleStatistics[vehicleid][vehicle_label] = Create3DTextLabel(string, color_orange, carx, cary, carz, 10.0, 0);
SaveDealership(GetPVarInt(creator, "HasDealership"));
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new
vehicleid = GetPlayerVehicleID(playerid),
dialog_string[128];
if(VehicleStatistics[vehicleid][vehicle_onsale] == 1)
{
format(dialog_string, sizeof(dialog_string), "Would you like to buy this %s costing $%d?", GetVehicleName(vehicleid), VehicleStatistics[vehicleid][vehicle_price]);
ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_MSGBOX, "Car Purchase", dialog_string, "Yes", "No");
return 1;
}
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1337)
{
if(response)
{
new
vehicleid = GetPlayerVehicleID(playerid),
model = GetVehicleModel(vehicleid),
price = VehicleStatistics[vehicleid][vehicle_price],
Float:position[5],
string[128],
dealershipid = -1,
var[32],
playername[24];
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, position[1], position[2], position[3]);
GetPlayerFacingAngle(playerid, position[4]);
if(GetPVarInt(playerid, "AmountOfCars") >= MAX_OWNABLE_CARS)
return SendClientMessage(playerid, color_grey, " You already own the maximum amount of vehicles !"), RemovePlayerFromVehicle(playerid);
if(GetPlayerMoney(playerid) < price)
return SendClientMessage(playerid, color_grey, " You can't afford that !"), RemovePlayerFromVehicle(playerid);
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(IsPlayerInRangeOfPoint(playerid, DealershipStatistics[i][dealership_radius], DealershipStatistics[i][dealership_x], DealershipStatistics[i][dealership_y], DealershipStatistics[i][dealership_z]))
{
dealershipid = i;
break;
}
}
DealershipStatistics[dealershipid][dealership_earnings] += (price / 4);
GivePlayerMoney(playerid, -price);
RemovePlayerFromVehicle(playerid);
vehicleid = CreateVehicle(model, (position[1] + (7.5 * floatsin(-position[4], degrees))), (position[2] + (7.5 * floatcos(position[4], degrees))), position[3], position[4], 0, 0, -1);
format(string, sizeof(string), "Thank you for purchasing at %s, we hope to see you again!", DealershipStatistics[dealershipid][dealership_name]);
SendClientMessage(playerid, color_white, string);
SendClientMessage(playerid, color_white, "Your vehicle has been spawned in front of you.");
SetPVarInt(playerid, "AmountOfCars", GetPVarInt(playerid, "AmountOfCars") + 1);
format(var, sizeof(var), "Model_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarInt(playerid, var, model);
format(var, sizeof(var), "X_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarFloat(playerid, var, (position[1] + (7.5 * floatsin(-position[4], degrees))));
format(var, sizeof(var), "Y_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarFloat(playerid, var, (position[2] + (7.5 * floatcos(position[4], degrees))));
format(var, sizeof(var), "Z_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarFloat(playerid, var, position[3]);
format(var, sizeof(var), "Angle_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarFloat(playerid, var, position[4]);
format(var, sizeof(var), "Carkey_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarInt(playerid, var, vehicleid);
format(var, sizeof(var), "Paintjob_%d", GetPVarInt(playerid, "AmountOfCars"));
SetPVarInt(playerid, var, -1);
strmid(owner[vehicleid], playername, 0, strlen(playername), 255);
SavePlayerVehicleData(playerid);
return 0;
}
else return RemovePlayerFromVehicle(playerid);
}
return 0;
}
stock SavePlayerVehicleData(playerid)
{
new file[100], playername[24], var[32];
GetPlayerName(playerid, playername, sizeof(playername));
format(file, sizeof(file), "ownedcars/%s.vehicle", playername);
if(INI_Open(file))
{
INI_WriteInt("AmountOfCars", GetPVarInt(playerid, "AmountOfCars"));
INI_WriteInt("HasDealership", GetPVarInt(playerid, "HasDealership"));
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Model_%d", s);
INI_WriteInt(var, GetPVarInt(playerid, var));
format(var, sizeof(var), "X_%d", s);
INI_WriteFloat(var, GetPVarFloat(playerid, var));
format(var, sizeof(var), "Y_%d", s);
INI_WriteFloat(var, GetPVarFloat(playerid, var));
format(var, sizeof(var), "Z_%d", s);
INI_WriteFloat(var, GetPVarFloat(playerid, var));
format(var, sizeof(var), "Angle_%d", s);
INI_WriteFloat(var, GetPVarFloat(playerid, var));
format(var, sizeof(var), "Paintjob_%d", s);
INI_WriteInt(var, GetPVarInt(playerid, var));
for(new i = 1; i <= 17; i++)
{
format(var, sizeof(var), "Component%d_%d", i, s);
INI_WriteInt(var, GetPVarInt(playerid, var));
}
format(var, sizeof(var), "Color1_%d", s);
INI_WriteInt(var, GetPVarInt(playerid, var));
format(var, sizeof(var), "Color2_%d", s);
INI_WriteInt(var, GetPVarInt(playerid, var));
format(var, sizeof(var), "Locked_%d", s);
INI_WriteInt(var, GetPVarInt(playerid, var));
}
INI_Save();
INI_Close();
}
return 1;
}
stock LoadPlayerVehicleData(playerid)
{
new file[100], playername[24], var[32];
GetPlayerName(playerid, playername, sizeof(playername));
format(file, sizeof(file), "ownedcars/%s.vehicle", playername);
if(fexist(file) && INI_Open(file))
{
SetPVarInt(playerid, "AmountOfCars", INI_ReadInt("AmountOfCars"));
SetPVarInt(playerid, "HasDealership", INI_ReadInt("HasDealership"));
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Model_%d", s);
SetPVarInt(playerid, var, INI_ReadInt(var));
format(var, sizeof(var), "X_%d", s);
SetPVarFloat(playerid, var, INI_ReadFloat(var));
format(var, sizeof(var), "Y_%d", s);
SetPVarFloat(playerid, var, INI_ReadFloat(var));
format(var, sizeof(var), "Z_%d", s);
SetPVarFloat(playerid, var, INI_ReadFloat(var));
format(var, sizeof(var), "Angle_%d", s);
SetPVarFloat(playerid, var, INI_ReadFloat(var));
format(var, sizeof(var), "Paintjob_%d", s);
SetPVarInt(playerid, var, INI_ReadInt(var));
for(new i = 1; i <= 17; i++)
{
format(var, sizeof(var), "Component%d_%d", i, s);
SetPVarInt(playerid, var, INI_ReadInt(var));
}
format(var, sizeof(var), "Color1_%d", s);
SetPVarInt(playerid, var, INI_ReadInt(var));
format(var, sizeof(var), "Color2_%d", s);
SetPVarInt(playerid, var, INI_ReadInt(var));
format(var, sizeof(var), "Locked_%d", s);
SetPVarInt(playerid, var, INI_ReadInt(var));
}
INI_Close();
}
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
new model, Float:Floats[5], carid;
format(var, sizeof(var), "Model_%d", s);
model = GetPVarInt(playerid, var);
format(var, sizeof(var), "X_%d", s);
Floats[1] = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Y_%d", s);
Floats[2] = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Z_%d", s);
Floats[3] = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Angle_%d", s);
Floats[4] = GetPVarFloat(playerid, var);
carid = CreateVehicle(model, Floats[1], Floats[2], Floats[3], Floats[4], 0, 0, -1);
if(carid != INVALID_VEHICLE_ID)
{
format(var, sizeof(var), "Carkey_%d", s);
SetPVarInt(playerid, var, carid);
}
format(var, sizeof(var), "Locked_%d", s);
switch(GetPVarInt(playerid, var))
{
case false: { locked[carid] = false; }
case true: { locked[carid] = true; }
}
strmid(owner[carid], playername, 0, strlen(playername), 255);
}
SetPVarInt(playerid, "CarsLoaded", 1);
ModifyVehicles(playerid);
return 1;
}
stock ParkVehicle(playerid, slot)
{
new
var[32],
Float:v_hp,
string[64],
vehicleid,
Float:v_pos[4],
Float:v_rot,
tmp_model,
Float:tmp_pos[4],
Float:tmp_rot,
playername[24],
Float:ply_pos[4],
islocked;
GetPlayerName(playerid, playername, sizeof(playername));
format(var, sizeof(var), "Carkey_%d", slot);
vehicleid = GetPVarInt(playerid, var);
if(vehicleid > 0)
{
locked[vehicleid] = false;
GetVehicleHealth(vehicleid, v_hp);
GetVehiclePos(vehicleid, v_pos[1], v_pos[2], v_pos[3]);
GetVehicleZAngle(vehicleid, v_rot);
format(var, sizeof(var), "X_%d", slot);
SetPVarFloat(playerid, var, v_pos[1]);
format(var, sizeof(var), "Y_%d", slot);
SetPVarFloat(playerid, var, v_pos[2]);
format(var, sizeof(var), "Z_%d", slot);
SetPVarFloat(playerid, var, v_pos[3]);
format(var, sizeof(var), "Angle_%d", slot);
SetPVarFloat(playerid, var, v_rot);
DestroyVehicle(vehicleid);
format(var, sizeof(var), "Model_%d", slot);
tmp_model = GetPVarInt(playerid, var);
format(var, sizeof(var), "X_%d", slot);
tmp_pos[1] = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Y_%d", slot);
tmp_pos[2] = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Z_%d", slot);
tmp_pos[3] = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Angle_%d", slot);
tmp_rot = GetPVarFloat(playerid, var);
format(var, sizeof(var), "Locked_%d", slot);
islocked = GetPVarInt(playerid, var);
vehicleid = CreateVehicle(tmp_model, tmp_pos[1], tmp_pos[2], tmp_pos[3], tmp_rot, 1, 1, -1);
ModifyVehicles(playerid);
SetVehicleHealth(vehicleid, v_hp);
format(string, sizeof(string), "%s has parked their vehicle.", playername);
GetPlayerPos(playerid, ply_pos[1], ply_pos[2], ply_pos[3]);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i, 20.0, ply_pos[1], ply_pos[2], ply_pos[3]))
{
SendClientMessage(i, 0xC2A2DAAA, string);
}
}
switch(islocked)
{
case false: { locked[vehicleid] = false; }
case true: { locked[vehicleid] = true; }
}
strmid(owner[vehicleid], playername, 0, strlen(playername), 255);
PutPlayerInVehicle(playerid, vehicleid, 0);
SavePlayerVehicleData(playerid);
return 1;
}
return 1;
}
stock ReturnVehicleSlot(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
new
vehicleid = GetPlayerVehicleID(playerid),
var[32];
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Carkey_%d", s);
if(vehicleid == GetPVarInt(playerid, var)) return s;
}
}
return 0;
}
stock ModifyVehicles(playerid)
{
new vehicleid, var[32], colors[3];
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Carkey_%d", s);
vehicleid = GetPVarInt(playerid, var);
if(vehicleid > 0)
{
format(var, sizeof(var), "Paintjob_%d", s);
if(GetPVarInt(playerid, var) != -1)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component1_%d", s);
if(GetPVarInt(playerid, var) != 0)
AddVehicleComponent(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component2_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component3_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component4_%d", s);
if(GetPVarInt(playerid, var) != 0)
AddVehicleComponent(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component5_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component6_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component7_%d", s);
if(GetPVarInt(playerid, var) != 0)
AddVehicleComponent(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component8_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component9_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component10_%d", s);
if(GetPVarInt(playerid, var) != 0)
AddVehicleComponent(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component11_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component12_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component13_%d", s);
if(GetPVarInt(playerid, var) != 0)
AddVehicleComponent(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component14_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component15_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component16_%d", s);
if(GetPVarInt(playerid, var) != 0)
AddVehicleComponent(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Component17_%d", s);
if(GetPVarInt(playerid, var) != 0)
ChangeVehiclePaintjob(vehicleid, GetPVarInt(playerid, var));
format(var, sizeof(var), "Color1_%d", s);
colors[1] = GetPVarInt(playerid, var);
format(var, sizeof(var), "Color2_%d", s);
colors[2] = GetPVarInt(playerid, var);
ChangeVehicleColor(vehicleid, colors[1], colors[2]);
}
}
return 1;
}
stock UnloadVehicles(playerid)
{
new
playername[24],
var[32];
GetPlayerName(playerid, playername, sizeof(playername));
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(strcmp(owner[i], playername, true) == 0)
{
for(new s = 1; s <= MAX_OWNABLE_CARS; s++)
{
format(var, sizeof(var), "Carkey_%d", s);
if(GetPVarInt(playerid, var) == i)
{
DestroyVehicle(i);
}
}
}
}
return 1;
}
stock DeleteVehicle(playerid, slot)
{
new
var[32],
string[64],
slotstring[10],
vehicleid;
format(var, sizeof(var), "Carkey_%d", slot);
vehicleid = GetPVarInt(playerid, var);
format(var, sizeof(var), "Model_%d", slot);
SetPVarInt(playerid, var, 0);
format(var, sizeof(var), "X_%d", slot);
SetPVarFloat(playerid, var, 0.0);
format(var, sizeof(var), "Y_%d", slot);
SetPVarFloat(playerid, var, 0.0);
format(var, sizeof(var), "Z_%d", slot);
SetPVarFloat(playerid, var, 0.0);
format(var, sizeof(var), "Angle_%d", slot);
SetPVarFloat(playerid, var, 0.0);
format(var, sizeof(var), "Paintjob_%d", slot);
SetPVarInt(playerid, var, 0);
for(new i = 1; i <= 17; i++)
{
format(var, sizeof(var), "Component%d_%d", i, slot);
SetPVarInt(playerid, var, 0);
}
format(var, sizeof(var), "Color1_%d", slot);
SetPVarInt(playerid, var, 0);
format(var, sizeof(var), "Color2_%d", slot);
SetPVarInt(playerid, var, 0);
SetPVarInt(playerid, var, 0);
switch(slot)
{
case 1: slotstring = "one";
case 2: slotstring = "two";
}
format(string, sizeof(string), "You have deleted your vehicle in slot %s.", slotstring);
SendClientMessage(playerid, color_white, string);
if(vehicleid > 0) { SetPVarInt(playerid, "AmountOfCars", GetPVarInt(playerid, "AmountOfCars") - 1); }
DestroyVehicle(vehicleid);
SavePlayerVehicleData(playerid);
return 1;
}
GetVehicleName(vehicleid)
{
new
vehiclename[64] = "None";
if(!vehicleid) return vehiclename;
format(vehiclename, sizeof(vehiclename), "%s", vehName[( GetVehicleModel(vehicleid) - 400 )]);
return vehiclename;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(createdealer, 12, cmdtext);
dcmd(destroydealer, 13, cmdtext);
dcmd(buydealer, 9, cmdtext);
dcmd(createcar, 9, cmdtext);
dcmd(earnings, 8, cmdtext);
dcmd(collectearnings, 15, cmdtext);
dcmd(selldealership, 14, cmdtext);
dcmd(park, 4, cmdtext);
dcmd(delete, 6, cmdtext);
dcmd(lock, 4, cmdtext);
return 0;
}
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{
new changestr[16], changepos = 0, strpos = stringPos;
while(changepos < 16 && string[strpos] && string[strpos] != delim)
{
changestr[changepos++] = string[strpos++];
}
changestr[changepos] = '\0';
setarg(paramPos,0,_:floatstr(changestr));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}