Jump to content
  • 0

pomoc Property a Vehicles


Totalka

Dotaz

Zdravím,mám od QWERa stahle Property a Vehicle,je to system který vytvoří firmu k prodeji s auta,ammo apod...
Chtěl bych poradit jak do toho udělat to že když si hráč koupí auto,tak jiny do toho nemuže nastoupit.
Prosim LAJCKY :d
Dekuji.

 

/*
 *  © by Denis 'QWER' Granec
 *  "Prišiel som, Videl som, Vyhral som..."
 *  "Najvačší okamžik života je úspech"
 *
 * 	Vehicle System
 * 		- Jednoduché spracovanie
 * 		- Možnosť mať viac áut
 * 		- Jednoduché zmenenie počtu áut pre hráča
 *      - Ukladanie pozície
 *      - Zmena ŠPZ-tky
 *      - Kupovanie áut cez Property System
 *      - Ukladanie tuningu
 *
 *  Property System
 *      - Jednoduché vytvorenie nehnuteľnosti
 *      - Viac typov nehnutelností (10)
 *      - Jednoduché pridanie nehnuteľnosti
 *      - Nastavenie ceny za tovar/vstup
 *      - Zmenenie typu firmy
 *      - Predaj automobilov, jedla, zbraní, kolies, farby, oprava auta
 *      - Ukladanie majiteľa, zisku, nastavejen ceny, názvu
 *      - Zmena názvu firmy
 *      - Vybratie zisku firmy
 */
 
 
#include <a_samp>
//#include "streamer" // Streamer Plugin
#include "CpStreamer.pwn"
#define ForPlayers ForPlayersCp
#include "icons_streamer.pwn"

////////////////////////////////////////////////////////////////////////////////////
//                      			START VARIABLES                               //
////////////////////////////////////////////////////////////////////////////////////

//================================= Vehicles System ==============================//
#define MAX_PLAYER_CARS 3
#define SCM SendClientMessage
#define DIALOG_MENU 1326
#define DIALOG_BUY 1327
#define DIALOG_CONFIG 1328
#define DIALOG_SETINGS 1329
#define DIALOG_SPZ 1330
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",
    "Boxvillde", "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", "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", "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", "Police Car", "Police Car", "Police Car",
    "Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
    "Boxville", "Tiller", "Utility Trailer"
};

new Float:Pos[MAX_PLAYERS][MAX_PLAYER_CARS][4];
new Model[MAX_PLAYERS][MAX_PLAYER_CARS];
new ID[MAX_PLAYERS][MAX_PLAYER_CARS];
new Color[MAX_PLAYERS][MAX_PLAYER_CARS][2];
new Mod[MAX_PLAYERS][MAX_PLAYER_CARS][14];
new Float:Health[MAX_PLAYERS][MAX_PLAYER_CARS];
new Paintjob[MAX_PLAYERS][MAX_PLAYER_CARS];
new VehicleParams[MAX_PLAYERS][MAX_PLAYER_CARS][4];

forward TunePlayerCar(playerid,slot,panels,doors,lights,tires);

//================================= Property System ==============================//
#define MAX_PROPERTY 50
#define MAX_PROPERTY_TYPE 10
#define MAX_PROPERTY_NAME 45
#define PROPERTY_DEFAULT_PRICE 300
#define PROPERTY_DEFAULT_OWNER "Nikdo"
#define PROPERTY_LABEL_COLOR 0xFF0000FF
#define MAX_DEFAULT_CENA 2500
#define MIN_DEFAULT_NAME 3

#define DIALOG_PROPERTY_BUY 1300

#define DIALOG_FARBA_OWNER 1301
#define DIALOG_KOLESA_OWNER 1302
#define DIALOG_OPRAVA_OWNER 1303
#define DIALOG_AMMO_OWNER 1304
#define DIALOG_JEDLO_OWNER 1305

#define DIALOG_FARBA_SHOP 1306
#define DIALOG_KOLESA_SHOP 1307
#define DIALOG_OPRAVA_SHOP 1308
#define DIALOG_AMMO_SHOP 1309
#define DIALOG_JEDLO_SHOP 1310

#define DIALOG_TYP_CHANGE 1311
#define DIALOG_PRICE_CHANGE 1312
#define DIALOG_NAME_CHANGE 1313
#define DIALOG_PROPERTY_SELL 1314

#define DIALOG_KABRIOLET_OWNER 1315
#define DIALOG_MOTO_OWNER 1316
#define DIALOG_LOWRIDER_OWNER 1317
#define DIALOG_OFFROAD_OWNER 1318
#define DIALOG_FAST_OWNER 1319

#define DIALOG_KABRIOLET_SHOP 1320
#define DIALOG_MOTO_SHOP 1321
#define DIALOG_LOWRIDER_SHOP 1322
#define DIALOG_OFFROAD_SHOP 1323
#define DIALOG_FAST_SHOP 1324

#define DIALOG_TYP_CHANGE2 1325

#define DAYS 86400*4
// Pri prvom vytvorení - aby tam bol niaky názov (majiteľ si ho potom zmení, len tam musí byť názov)
new DefaultName[MAX_PROPERTY_TYPE][MAX_PROPERTY_NAME] = {
"Pay and Spray",
"Wheels Servis",
"Repair Servis",
"Ammo Nation",
"Burger Shoot",
"Kabriolet Store",
"Bike Store",
"Lowrider car Store",
"OffRoad car Store",
"Sport Store"
};

/*
0 - FARBA
1 - KOLESA
2 - OPRAVA
3 - AMMO
4 - JEDLO
5 - KABRILOET
6 - MOTO
7 - LOWRIDER
8 - OFFROAD
9 - FAST

*/
#define FARBA 0
#define KOLESA 1
#define OPRAVA 2
#define AMMO 3
#define JEDLO 4
#define KABRIOLET 5
#define MOTO 6
#define LOWRIDER 7
#define OFFROAD 8
#define FAST 9
// Premenne
new Float:PropertyPos[MAX_PROPERTY][3]; // Pozície (x,y,z) nehnuteľnosti
new PropertyType[MAX_PROPERTY]; // Typ nehnuteľnosti
new PropertyCost[MAX_PROPERTY]; // Cena nehnuteľnosti
new PropertyPrice[MAX_PROPERTY] = {PROPERTY_DEFAULT_PRICE,...}; // Vlastná cena tovaru
new Text3D:PropertyLabel[MAX_PROPERTY]; // 3D Text Label
new PropertyOwner[MAX_PROPERTY][MAX_PLAYER_NAME]; // Majiteľ
new PropertyName[MAX_PROPERTY][MAX_PROPERTY_NAME]; // Názov
new PropertyProfit[MAX_PROPERTY]; // Tržba
new PropertyPC[MAX_PROPERTY];

new PropertyConnect[MAX_PROPERTY];

new PlayerCP[MAX_PLAYERS] = {-1,...};
new PlayerIN[MAX_PLAYERS] = {-1,...};
new PC = -1;

forward PropertySaveAll();
////////////////////////////////////////////////////////////////////////////////////
//                      			START FUNCTIONS                               //
////////////////////////////////////////////////////////////////////////////////////

//================================= Vehicles System ==============================//

stock CreatePlayerVehicle(playerid,slot,model){
new str[100];
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),slot);
fcreate(str);
new Float:pos[4];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
GetPlayerFacingAngle(playerid, pos[3]);
InfrontOf(playerid,pos[0],pos[1],4);
ID[playerid][slot] = CreateVehicle(model,pos[0],pos[1],pos[2],pos[3],0,0,-1);
Model[playerid][slot] = model;
Pos[playerid][slot][0] = pos[0];
Pos[playerid][slot][1] = pos[1];
Pos[playerid][slot][2] = pos[2];
Pos[playerid][slot][3] = pos[3];
return true;
}

stock DeletePlayerVehicle(playerid,slot){
if(ID[playerid][slot] == -1) return 0;
new str[100];
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),slot);
if(fexist(str))
fremove(str);
DestroyVehicle(ID[playerid][slot]);
ID[playerid][slot] = -1;
return true;
}

stock SavePlayerVehicles(playerid){
for(new i; i < MAX_PLAYER_CARS;i++){
if(ID[playerid][i] != -1){
new str[100],bigstr[798],Float:health;
new panels,doors,lights,tires;
GetVehicleDamageStatus(ID[playerid][i],panels,doors,lights,tires);
GetVehicleHealth(ID[playerid][i],health);
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),i);
if(!fexist(str)) continue;
new File:file = fopen(str, io_write);
format(bigstr,798,"%d %0.3f %0.3f %0.3f %0.3f %0.3f %d %d %d %d\r\n",Model[playerid][i],Pos[playerid][i][0],Pos[playerid][i][1],Pos[playerid][i][2],Pos[playerid][i][3],health,panels,doors,lights,tires);
//              model   x     y     z     a   health panels doors lights tires
fwrite(file,bigstr);
format(bigstr,798,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",	GetVehicleComponentInSlot(ID[playerid][i],0),
/*                 1  2  3  4  5  6  7  8  9  10 11 12 13 c1 c2 pj*/	GetVehicleComponentInSlot(ID[playerid][i],1),
																		GetVehicleComponentInSlot(ID[playerid][i],2),
																		GetVehicleComponentInSlot(ID[playerid][i],3),
																		GetVehicleComponentInSlot(ID[playerid][i],4),
																		GetVehicleComponentInSlot(ID[playerid][i],5),
																		GetVehicleComponentInSlot(ID[playerid][i],6),
																		GetVehicleComponentInSlot(ID[playerid][i],7),
																		GetVehicleComponentInSlot(ID[playerid][i],8),
																		GetVehicleComponentInSlot(ID[playerid][i],9),
																		GetVehicleComponentInSlot(ID[playerid][i],10),
																		GetVehicleComponentInSlot(ID[playerid][i],11),
																		GetVehicleComponentInSlot(ID[playerid][i],12),
																		GetVehicleComponentInSlot(ID[playerid][i],13),
																		Color[playerid][i][0],
																		Color[playerid][i][1],
																		Paintjob[playerid][i]);
fwrite(file,bigstr);
fclose(file);
DestroyVehicle(ID[playerid][i]);

ID[playerid][i] = -1;
}
}
}

stock LoadPlayerVehicles(playerid){
for(new i; i < MAX_PLAYER_CARS;i++){
new str[100];
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),i);
if(fexist(str)){
new bigstr[798];
new File:file = fopen(str,io_read);
fread(file,bigstr);
DelChar(bigstr);
new panels,doors,lights,tires;
sscanf(bigstr, "dfffffdddd", Model[playerid][i],Pos[playerid][i][0],Pos[playerid][i][1],Pos[playerid][i][2],Pos[playerid][i][3],Health[playerid][i],panels,doors,lights,tires);
fread(file,bigstr);
DelChar(bigstr);
sscanf(bigstr, "dddddddddddddddd",Mod[playerid][i][0],Mod[playerid][i][1],Mod[playerid][i][2],Mod[playerid][i][3],Mod[playerid][i][4],Mod[playerid][i][5],Mod[playerid][i][6],Mod[playerid][i][7],Mod[playerid][i][8],Mod[playerid][i][9],Mod[playerid][i][10],Mod[playerid][i][11],Mod[playerid][i][12],Mod[playerid][i][13],Color[playerid][i][0],Color[playerid][i][1],Paintjob[playerid][i]);
fclose(file);
ID[playerid][i] = CreateVehicle(Model[playerid][i],Pos[playerid][i][0],Pos[playerid][i][1],Pos[playerid][i][2],Pos[playerid][i][3],Color[playerid][i][0],Color[playerid][i][1],-1);
SetTimerEx("TunePlayerCar",150,false,"iiiiii",playerid,i,panels,doors,lights,tires);
}
}
}


stock BuyCar(playerid,model,cena,type = 1,id = -1){
if(GetPlayerMoney(playerid) < cena) return SCM(playerid,-1,"{6EF83C} Nemáš na to dostatek peněz");
GivePlayerMoney(playerid,-cena);
new slot = -1;
if(type == 1){
slot = GetPVarInt(playerid,"VehiclesSelected");
SCM(playerid,-1,"{FFAF00} Zakoupil sis vozidlo /vozidla");
}else{
for(new i; i < MAX_PLAYER_CARS;i++){
if(ID[playerid][i] == -1){
slot = i;
break;
}
}
}
if(slot == -1) return SCM(playerid,-1,"Nemas volny SLOT na auto,musis nejake prodat (/vozidla)");
if(id > -1){
PropertyProfit[id] += cena/100;
}
CreatePlayerVehicle(playerid,slot,model);
return true;
}

public TunePlayerCar(playerid,slot,panels,doors,lights,tires){
//print("TunePlayerCar");
for(new i; i < 14;i++){
AddVehicleComponent(ID[playerid][slot], Mod[playerid][slot][i]);
}
SetVehicleHealth(ID[playerid][slot],Health[playerid][slot]);
UpdateVehicleDamageStatus(ID[playerid][slot],panels,doors,lights,tires);
ChangeVehiclePaintjob(ID[playerid][slot], Paintjob[playerid][slot]);
return true;
}


//================================= Property System ==============================//

stock CreateProperty(typ,Float:x,Float:y,Float:z,cost){
PC++;
if(PC < MAX_PROPERTY){
PropertyPos[PC][0] = x;
PropertyPos[PC][1] = y;
PropertyPos[PC][2] = z;
if(typ < 0 || typ >= MAX_PROPERTY_TYPE) return printf("(%d/%d) Nehnutelnosť má zlý typ !",PC,MAX_PROPERTY_TYPE);
PropertyType[PC] = typ;
PropertyCost[PC] = cost;
new str[256];
format(str,100,"Property/%d.txt",PC);
if(!fexist(str)){
new File:file = fopen(str,io_write);
format(str,256,"%s %d %d %d %d %s",PROPERTY_DEFAULT_OWNER,-1,PROPERTY_DEFAULT_PRICE,0,typ,DefaultName[typ]);
/*              O  C  P  Z  N  */
// O - Owner    P - Price	Z - Zisk (profit)  N - Name (property)
fwrite(file,str);
fclose(file);
PropertyPrice[PC] = PROPERTY_DEFAULT_PRICE;
format(PropertyName[PC],MAX_PROPERTY_NAME,"%s",DefaultName[typ]);
format(PropertyOwner[PC],MAX_PLAYER_NAME,"%s",PROPERTY_DEFAULT_OWNER);
}else{
new File:file = fopen(str,io_read);
fread(file,str);
DelChar(str);
sscanf(str,"siiiiz",PropertyOwner[PC],PropertyConnect[PC],PropertyPrice[PC],PropertyProfit[PC],PropertyType[PC],PropertyName[PC]);
//printf("|%s|%d|%d|%d|%d|%s|",PropertyOwner[PC],PropertyConnect[PC],PropertyPrice[PC],PropertyProfit[PC],PropertyType[PC],PropertyName[PC]);
}
PropertyPC[PC] = CreateStreamCp(x, y, z, 2.5); //
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",PC,PropertyName[PC],PropertyOwner[PC]);
PropertyLabel[PC] =  Create3DTextLabel(str,PROPERTY_LABEL_COLOR,x,y,z+1, 80, 0, 1);
CreateMapIcon(8, -1, x, y, z);
//CreateDynamicMapIcon(x, y, z, 8, -1, -1, -1, -1, 100.0);
}else printf("(%d/%d) Na servery je moc nehnutelností ! ",PC,MAX_PROPERTY);
return true;
}

stock PropertySave(id){
new str[256];
format(str,100,"Property/%d.txt",id);
new File:file = fopen(str,io_write);
if(PropertyConnect[id]+DAYS > gettime()){
format(str,256,"%s %d %d %d %d %s",PropertyOwner[id],PropertyConnect[id],PropertyPrice[id],PropertyProfit[id],PropertyType[id],PropertyName[id]);
}else{
format(str,256,"%s %d %d %d %d %s",PROPERTY_DEFAULT_OWNER,-1,PROPERTY_DEFAULT_PRICE,0,PropertyType[id],DefaultName[PropertyType[id]]);
}
/*              O  P  Z  N  */
// O - Owner    P - Price	Z - Zisk (profit)  N - Name (property)
fwrite(file,str);
fclose(file);
}

public PropertySaveAll(){
for(new id; id <= PC;id++){
new str[256];
format(str,100,"Property/%d.txt",id);
new File:file = fopen(str,io_write);
if(PropertyConnect[id]+DAYS > gettime()){
format(str,256,"%s %d %d %d %d %s",PropertyOwner[id],PropertyConnect[id],PropertyPrice[id],PropertyProfit[id],PropertyType[id],PropertyName[id]);
}else{
format(str,256,"%s %d %d %d %d %s",PROPERTY_DEFAULT_OWNER,-1,PROPERTY_DEFAULT_PRICE,0,PropertyType[id],DefaultName[PropertyType[id]]);
}
/*              O  C P  Z  N  */
// O - Owner    P - Price	Z - Zisk (profit)  N - Name (property) C - Connect (last)
fwrite(file,str);
fclose(file);
}
}

stock GetPlayerPropertyID(playerid){
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
for(new i; i <= PC;i++){
if(!strcmp(name,PropertyOwner[i],false)){
return i;
}
}
return -1;
}

stock IsPlayerPropertyOwner(playerid,id){
if(!strcmp(PlayerName(playerid),PropertyOwner[id],false)) return true;
return false;
}

stock GetPropertyOwner(playerid,id){
return PropertyName[id];
}

stock IsPropertyForSale(id){
if(!strcmp(PROPERTY_DEFAULT_OWNER,PropertyOwner[id],false)) return true;
return false;
}

////////////////////////////////////////////////////////////////////////////////////
//                      			OnFilterScriptInit                            //
////////////////////////////////////////////////////////////////////////////////////

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" START");
	print("--------------------------------------\n");
// Vehicle
for(new i; i < MAX_PLAYERS; i++){
for(new x; x < MAX_PLAYER_CARS;x++){
ID[i][x] = -1;
Paintjob[i][x] = -999;
}
}

// Property
new Float:pos,id;
for(new i; i < MAX_PROPERTY_TYPE;i++){
id++;
//printf("%d",5-id); pos: 2044.85, 1174.78, 10.67
	CreateProperty(MAX_PROPERTY_TYPE-id,2044.85, 1174.78+pos, 10.67,100);
pos += 50;
}
SetTimer("PropertySaveAll",3600000,true);

	return 1;
}

public OnPlayerConnect(playerid){
// Vehicle
OnPlayerConnectCp(playerid);
LoadPlayerVehicles(playerid);

// Property
PlayerCP[playerid] = -1;
PlayerIN[playerid] = -1;
new slot = GetPlayerPropertyID(playerid);
if(slot > -1){
PropertyConnect[slot] = gettime();
}

return true;
}

public OnPlayerDisconnect(playerid){
// Vehicle
OnPlayerDisconnectCp(playerid);

SavePlayerVehicles(playerid);

//Property
new slot = GetPlayerPropertyID(playerid);
if(slot > -1){
PropertyConnect[slot] = gettime();
PropertySave(slot);
}

return true;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext,"/1")){
SetPlayerName(playerid,"k***t");
return true;
}
if(!strcmp(cmdtext,"/2")){
SetPlayerName(playerid,"QWER");
return true;
}
if(!strcmp(cmdtext,"/3")){
SetPlayerName(playerid,"QWER1");
return true;
}

if(!strcmp(cmdtext,"/park")){
	new vehicleid = GetPlayerVehicleID(playerid);
	if(vehicleid == 0) return SCM(playerid,-1,"Niesi v aute !");
	new vlastne = -1;
	for(new i; i < MAX_PLAYER_CARS;i++){
	if(ID[playerid][i] == vehicleid){
 	vlastne = i;
	break;
	}
	}
	if(vlastne == -1) return SCM(playerid,-1,"Nesedíš vo vlastnom aute !");
	GetVehiclePos(vehicleid,Pos[playerid][vlastne][0],Pos[playerid][vlastne][1],Pos[playerid][vlastne][2]);
	GetVehicleZAngle(vehicleid, Pos[playerid][vlastne][3]);
	SCM(playerid,-1,"Auto úspešne odparkované");
return true;
}

if(!strcmp(cmdtext,"/vehicle")){
	new string1[700],string2[100];
	for(new i;i<MAX_PLAYER_CARS;i++){
		if(ID[playerid][i]==-1){
	 		format(string2,100,"- Žiadne Vozidlo -\n");
		}else{
	 		format(string2,100,"%s\n",vehName[GetVehicleModel(ID[playerid][i])-400]);
		}
	format(string1,256,"%s%s",string1,string2);
	}
	ShowPlayerDialog(playerid,DIALOG_MENU,DIALOG_STYLE_LIST,"Vehicles",string1,"Vybrať","Zrušiť");
return true;
}

if(!strcmp(cmdtext,"/0")){
PropertySaveAll();
return true;
}

	return 0;
}

public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
if(PlayerIN[playerid] > -1){
new id = PlayerIN[playerid];
if(PropertyType[id] == AMMO){
SetPlayerShopName(playerid,"AMMUN1");
}else{
SetPlayerShopName(playerid,"FDPIZA");
}
}
    return 1;
}


public OnPlayerEnterCp(playerid, checkpointid){
if(PlayerCP[playerid] == -1){
	for(new i; i <= PC;i++){
		if(checkpointid == PropertyPC[i]){
			PlayerCP[playerid] = i;
		}
	}
if(PlayerCP[playerid] != -1){
//(playerid, dialogid, style, caption[], info[], button1[], button2[])
new id = PlayerCP[playerid],str[75],string[150];
format(str,75,"{FFFFFF}Property {FF0000}%s",PropertyName[id]);
if(IsPropertyForSale(id)){
format(string,150,"{FFFFFF}Prajete si kúpiť {FF0000}%s{FFFFFF} za {FF0000}%d{00FF00}${FFFFFF} ?",PropertyName[id],PropertyCost[id]);
ShowPlayerDialog(playerid,DIALOG_PROPERTY_BUY,0,str,string,"Áno","Nie");
}else{
if(IsPlayerPropertyOwner(playerid,id)){
switch(PropertyType[id]){
case FARBA: ShowPlayerDialog(playerid,DIALOG_FARBA_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case KOLESA: ShowPlayerDialog(playerid,DIALOG_KOLESA_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case OPRAVA: ShowPlayerDialog(playerid,DIALOG_OPRAVA_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case AMMO: ShowPlayerDialog(playerid,DIALOG_AMMO_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case JEDLO: ShowPlayerDialog(playerid,DIALOG_JEDLO_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
/*
5 - KABRILOET
6 - MOTO
7 - LOWRIDER
8 - OFFROAD
9 - FAST
*/
case KABRIOLET: ShowPlayerDialog(playerid,DIALOG_KABRIOLET_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case MOTO: ShowPlayerDialog(playerid,DIALOG_MOTO_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case LOWRIDER: ShowPlayerDialog(playerid,DIALOG_LOWRIDER_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case OFFROAD: ShowPlayerDialog(playerid,DIALOG_OFFROAD_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case FAST: ShowPlayerDialog(playerid,DIALOG_FAST_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
}
}else{
switch(PropertyType[id]){
case FARBA:{
//Černá Bílá Červená Zelená Modrá Oranžová Žlutá Růžová Šedá
ShowPlayerDialog(playerid,DIALOG_FARBA_SHOP,2,str,"{FFFFFF}Náhodná\nČierna\nBiela\nČervená\nZelená\nModrá\nŽltá\nRužová\nŠedá\nFialová\nAzúrová","Áno","Nie");
}
case KOLESA:{
ShowPlayerDialog(playerid,DIALOG_KOLESA_SHOP,2,str,"{FFFFFF}Shadow\nMega\nRamshine\nWires\nClassic\nTwist\nCutter\nSwitch\nGrove\nImport\nDollar\nTrance\nAtomic","Áno","Nie");
}
case OPRAVA:{
ShowPlayerDialog(playerid,DIALOG_OPRAVA_SHOP,2,str,"{FFFFFF}Opraviť Motor\nOpraviť Karosériu","Áno","Nie");
}
case AMMO:{
format(string,150,"{FFFFFF}Chceš vstúpiť do {FF0000}%s {FFFFFF}?\nCena za vstup je {FF0000}%d{00FF00}$",PropertyName[id],PropertyPrice[id]);
ShowPlayerDialog(playerid,DIALOG_AMMO_SHOP,0,str,string,"Áno","Nie");
}
case JEDLO:{
format(string,150,"{FFFFFF}Chceš vstúpiť do {FF0000}%s {FFFFFF}?\nCena za vstup je {FF0000}%d{00FF00}$",PropertyName[id],PropertyPrice[id]);
ShowPlayerDialog(playerid,DIALOG_JEDLO_SHOP,0,str,string,"Áno","Nie");
}
case KABRIOLET:{
ShowPlayerDialog(playerid,DIALOG_KABRIOLET_SHOP,2,str,"{FFFFFF}Comet\t\t75 000\
														\nFeltzer\t100 000\
														\nStallion\t125 000\
														\nWindsor\t115 000","Áno","Nie");
}
case MOTO:{
ShowPlayerDialog(playerid,DIALOG_MOTO_SHOP,2,str,"{FFFFFF}BMX\t\t45 000\
													\nMountian Bike\t35 000\
													\nFaggio\t\t10 000\
													\nBF-400\t\t80 000\
													\nNRG-500\t130 000\
													\nPCJ-600\t100 000\
													\nFCR-900\t95 000\
													\nFreeway\t110 000\
													\nSanchez\t115 000\
													\nQuad\t\t125 000","Áno","Nie");
}
case LOWRIDER:{
ShowPlayerDialog(playerid,DIALOG_LOWRIDER_SHOP,2,str,"{FFFFFF}Blade\t\t155 000\
														\nBroadway\t100 000\
														\nRemington\t75 000\
														\nSavanna\t140 000\
														\nSlamvan\t150 000\
														\nTornado\t135 000\
														\nVoodoo\t\t80 000","Áno","Nie");

}
case OFFROAD:{
ShowPlayerDialog(playerid,DIALOG_OFFROAD_SHOP,2,str,"{FFFFFF}Bandito\t100 000\
														\nBF Injection\t125 000\
														\nHuntley\t79 000\
														\nLandstalker\t65 000\
														\nMesa\t\t55 000\
														\nMonster\t175 000\
														\nRancher\t140 000\
														\nSandking\t110 000","Áno","Nie");
}
case FAST:{
ShowPlayerDialog(playerid,DIALOG_FAST_SHOP,2,str,"{FFFFFF}Alpha\t\t80 000\
														\nBanshee\t85 000\
														\nBuffalo\t93 000\
														\nBullet\t\t100 000\
														\nCheath\t\t99 000\
														\nClub\t\t45 000\
														\nEuros\t\t75 000\
														\nFlash\t\t50 000\
														\nHotring Racer\t170 000\
														\nInfernus\t165 000\
														\nJester\t\t150 000\
														\nPhoenix\t135 000\
														\nSabre\t\t90 000\
														\nSuper GT\t120 000\
														\nTurismo\t163 000","Áno","Nie");
}
}

}
}
}

}
return true;
}

public OnPlayerLeaveCp(playerid, checkpointid){
PlayerCP[playerid] = -1;
return true;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//========================================== VEHICLE SYSTEM =======================================//
if(dialogid == DIALOG_MENU){
if(response){
SetPVarInt(playerid,"VehiclesSelected",listitem);
if(ID[playerid][listitem] == -1){
// prázdne auto
ShowPlayerDialog(playerid,DIALOG_BUY,0,"Vehicles","Auto si môžeš kúpiť pri niakej nehnuteľnosti s predajom áut !","Vybrať","Zrušiť");
}else{
// plne auto
ShowPlayerDialog(playerid,DIALOG_CONFIG,DIALOG_STYLE_LIST,"Vehicles","Respawn\nNastavenia\nPredať","Vybrať","Zrušiť");
}
}
return true;
}

if(dialogid == DIALOG_BUY){
if(response){
// Sem nič netreba...
}
return true;
}

if(dialogid == DIALOG_CONFIG){
if(response){
new slot = GetPVarInt(playerid,"VehiclesSelected");
switch(listitem){
case 0:{
SetVehiclePos(ID[playerid][slot],Pos[playerid][slot][0],Pos[playerid][slot][1],Pos[playerid][slot][2]);
SetVehicleZAngle(ID[playerid][slot], Pos[playerid][slot][3]);
}

case 1:{
ShowPlayerDialog(playerid,DIALOG_SETINGS,DIALOG_STYLE_LIST,"Vehicles","Motor\nSvetla\nKapota\nKufor\nŠPZ","Vybrať","Zrušiť");
//DIALOG_SETINGS
}

case 2:{
DeletePlayerVehicle(playerid,slot);
SCM(playerid,-1,"Predal si svoje auto, dostal 20 000 ako šrotovné");
GivePlayerMoney(playerid,20000);
}

}
}
return true;
}

if(dialogid == DIALOG_SETINGS){
if(response){
new slot = GetPVarInt(playerid,"VehiclesSelected");
if(GetPlayerVehicleID(playerid) != ID[playerid][slot]) return SCM(playerid,-1,"Musíš sedieť vo svojom aute !");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
switch(listitem){
case 0:{
if(VehicleParams[playerid][slot][0] == 0){
SetVehicleParamsEx(ID[playerid][slot],VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][0] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][0] = 1;
}
}

case 1:{
if(VehicleParams[playerid][slot][1] == 0){
SetVehicleParamsEx(ID[playerid][slot],engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][1] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][1] = 0;
}}

case 2:{
if(VehicleParams[playerid][slot][2] == 0){
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
VehicleParams[playerid][slot][2] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
VehicleParams[playerid][slot][2] = 0;
}}

case 3:{
if(VehicleParams[playerid][slot][3] == 0){
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
VehicleParams[playerid][slot][3] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
VehicleParams[playerid][slot][3] = 0;
}}
case 4:{
ShowPlayerDialog(playerid,DIALOG_SPZ,1,"Vehicle","Zadaj text, ktorý chceš na ŠPZ-tke","Ano","Nie");
}
}

}
return true;
}

if(dialogid == DIALOG_SPZ){
if(response){
new slot = GetPVarInt(playerid,"VehiclesSelected");
if(strlen(inputtext) >30 || strlen(inputtext) < 1) return ShowPlayerDialog(playerid,DIALOG_SPZ,1,"Vehicle","Rozmedzie textu od 0 do 29\nZadaj text, ktorý chceš na ŠPZ-tke","Ano","Nie");
//if(GetPlayerVehicleID(playerid) == ID[playerid][slot]) return SCM(playerid,-1,"Nemôžeš sedieť v aute !");
RemovePlayerFromVehicle(playerid,GetPlayerVehicleID(playerid));
SetVehicleNumberPlate(ID[playerid][slot],inputtext);
new Float:x,Float:y,Float:z;
GetVehiclePos( ID[playerid][slot],x,y,z);
SetVehicleToRespawn(ID[playerid][slot]);
SetVehiclePos(ID[playerid][slot],x,y,z);
}
return true;
}
//========================================== PROPERTY SYSTEM =======================================//
if(dialogid == DIALOG_PROPERTY_BUY){
if(response){
new id = PlayerCP[playerid];
if(GetPlayerMoney(playerid) < PropertyCost[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí, na kúpenie tejto nehnuteľnosti !");
if(GetPlayerPropertyID(playerid) > -1) return SendClientMessage(playerid,-1,"Už jednu nehnuteľnosť máš !");
GivePlayerMoney(playerid,-PropertyCost[id]);
format(PropertyOwner[id],MAX_PLAYER_NAME,"%s",PlayerName(playerid));
PropertyConnect[id] = gettime();
new str[256];
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",id,PropertyName[id],PropertyOwner[id]);
Update3DTextLabelText(PropertyLabel[id], PROPERTY_LABEL_COLOR, str);
SendClientMessage(playerid,-1,"Kúpil si si novú nehnuteľnosť !");
}
return true;
}

if(dialogid == DIALOG_FARBA_OWNER || dialogid == DIALOG_KOLESA_OWNER || dialogid == DIALOG_OPRAVA_OWNER){
if(response){
new id = PlayerCP[playerid];
//ShowPlayerDialog(playerid,DIALOG_FARBA_OWNER,2,str,"{FFFFFF}Zmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
switch(listitem){
case 0:{
new str[128];
format(str,128,"Zisk firmy činil %d$",PropertyProfit[id]);
GivePlayerMoney(playerid,PropertyProfit[id]);
SendClientMessage(playerid,-1,str);
PropertyProfit[id] = 0;
}
case 1: ShowPlayerDialog(playerid,DIALOG_TYP_CHANGE,2,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Lakovňa\nPneuservis\nOpravovňa","Áno","Nie");
case 2: ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj novú cenu !","Áno","Nie");
case 3: ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
case 4: ShowPlayerDialog(playerid,DIALOG_PROPERTY_SELL,0,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Naozaj chceš {FF0000}Predať {FFFFFF}firmu ?","Áno","Nie");
}
}
return true;
}

if(dialogid == DIALOG_AMMO_OWNER || dialogid == DIALOG_JEDLO_OWNER){
if(response){
new id = PlayerCP[playerid];
//ShowPlayerDialog(playerid,DIALOG_JEDLO_OWNER,2,str,"{FFFFFF}Zmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
switch(listitem){
case 0:{
new str[128];
format(str,128,"Zisk firmy činil %d$",PropertyProfit[id]);
GivePlayerMoney(playerid,PropertyProfit[id]);
SendClientMessage(playerid,-1,str);
PropertyProfit[id] = 0;
}
case 1: ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj novú cenu !","Áno","Nie");
case 2: ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
case 3: ShowPlayerDialog(playerid,DIALOG_PROPERTY_SELL,0,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Naozaj chceš {FF0000}Predať {FFFFFF}firmu ?","Áno","Nie");
}
}
return true;
}

if(dialogid == DIALOG_TYP_CHANGE){
if(response){
new id = PlayerCP[playerid];
PropertyType[id] = listitem;
new str[128];
format(str,128,"Zmenil si typ nehnuteľnosti na %s",DefaultName[listitem]);
SendClientMessage(playerid,-1,str);
}
return true;
}

if(dialogid == DIALOG_PRICE_CHANGE){
if(response){
new id = PlayerCP[playerid];
if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{ff0000}Cena musí byť číselná !\n{FFFFFF}Zadaj novú cenu !","Áno","Nie");
new cena = strval(inputtext);
new str[128];
if(cena < 0 || cena > MAX_DEFAULT_CENA){
format(str,128,"{ff0000}Cena musí byť od 1 do %d !\n{FFFFFF}Zadaj novú cenu !",MAX_DEFAULT_CENA);
ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config",str,"Áno","Nie");
return true;
}
PropertyPrice[id] = cena;
format(str,128,"Cenu za tovar v nehnuteľnosti si nastavil na %d",cena);
SendClientMessage(playerid,-1,str);
}
return true;
}

if(dialogid == DIALOG_NAME_CHANGE){
if(response){
new id = PlayerCP[playerid];
new len = strlen(inputtext);
if(len < MIN_DEFAULT_NAME || len > MAX_PROPERTY_NAME) return ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zlá dĺžka názvu !\n{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
format(PropertyName[id],MAX_PROPERTY_NAME,"%s",inputtext);
new str[256];
format(str,128,"Názov nehnuteľnosti zmenený na %s",inputtext);
SendClientMessage(playerid,-1,str);
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",id,PropertyName[id],PropertyOwner[id]);
Update3DTextLabelText(PropertyLabel[id], PROPERTY_LABEL_COLOR, str);
}
return true;
}

if(dialogid == DIALOG_PROPERTY_SELL){
if(response){
new id = PlayerCP[playerid];
format(PropertyName[id],MAX_PROPERTY_NAME,"%s",DefaultName[PropertyType[id]]);
format(PropertyOwner[id],MAX_PLAYER_NAME,"%s",PROPERTY_DEFAULT_OWNER);
new str[256];
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",id,PropertyName[id],PropertyOwner[id]);
Update3DTextLabelText(PropertyLabel[id], PROPERTY_LABEL_COLOR, str);
SendClientMessage(playerid,-1,"Predal si svoju nehnuteľnosť !");
}
return true;
}

if(dialogid == DIALOG_FARBA_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) return SendClientMessage(playerid,-1,"Musíš  byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
//Čierna\nBiela\nČervená\nZelená\nModrá\nŽltá\nRužová\nŠedá\nFialová\nAzúrová
switch(listitem){
case 0: ChangeVehicleColor(vehicleid, random(127), random(127));
case 1: ChangeVehicleColor(vehicleid, 0,0);
case 2: ChangeVehicleColor(vehicleid, 1,1);
case 3: ChangeVehicleColor(vehicleid, 151,151);
case 4: ChangeVehicleColor(vehicleid, 86,86);
case 5: ChangeVehicleColor(vehicleid, 2,2);
case 6: ChangeVehicleColor(vehicleid, 6,6);
case 7: ChangeVehicleColor(vehicleid, 146,146);
case 8: ChangeVehicleColor(vehicleid, 118,118);
case 9: ChangeVehicleColor(vehicleid, 149,149);
case 10:ChangeVehicleColor(vehicleid, 146,146);
}
}
return true;
}

if(dialogid == DIALOG_KOLESA_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) return SendClientMessage(playerid,-1,"Musíš  byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
AddVehicleComponent(vehicleid, 1073+listitem);
}
return true;
}

if(dialogid == DIALOG_OPRAVA_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) return SendClientMessage(playerid,-1,"Musíš  byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
//Opraviť Motor\nOpraviť Karosériu
if(listitem == 0) SetVehicleHealth(vehicleid,1000);
else RepairVehicle(vehicleid);
}
return true;
}

// AMMO NATIONS
// POS: 285.75, -38.40, 1001.52 INT: 1
if(dialogid == DIALOG_AMMO_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
PlayerIN[playerid] = id;
SetPlayerPos(playerid,285.75,-38.40,1001.52);
SetPlayerInterior(playerid,1);
SetPlayerVirtualWorld(playerid,id);
SendClientMessage(playerid,-1,"Pre opustenie budovy stlač klávesu 'N' pri vchode !");
}
return true;
}


// PIZZA STACK
//POS: 372.37, -130.13, 1001.49 INT: 5
if(dialogid == DIALOG_JEDLO_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
PlayerIN[playerid] = id;
SetPlayerPos(playerid,372.37, -130.13, 1001.49);
SetPlayerInterior(playerid,5);
SetPlayerVirtualWorld(playerid,id);
SendClientMessage(playerid,-1,"Pre opustenie budovy stlač klávesu 'N' pri vchode !");
}
return true;
}

if(dialogid == DIALOG_KABRIOLET_OWNER || dialogid == DIALOG_MOTO_OWNER || dialogid == DIALOG_LOWRIDER_OWNER || dialogid == DIALOG_OFFROAD_OWNER || dialogid == DIALOG_FAST_OWNER){
if(response){
new id = PlayerCP[playerid];
//ShowPlayerDialog(playerid,DIALOG_FARBA_OWNER,2,str,"{FFFFFF}Zmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
switch(listitem){
case 0:{
new str[128];
format(str,128,"Zisk firmy činil %d$",PropertyProfit[id]);
GivePlayerMoney(playerid,PropertyProfit[id]);
SendClientMessage(playerid,-1,str);
PropertyProfit[id] = 0;
}
case 1: ShowPlayerDialog(playerid,DIALOG_TYP_CHANGE2,2,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Kabriolet\nMoto\nLowrider\nOffroad\nSport","Áno","Nie");
case 2: ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj novú cenu !","Áno","Nie");
case 3: ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
case 4: ShowPlayerDialog(playerid,DIALOG_PROPERTY_SELL,0,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Naozaj chceš {FF0000}Predať {FFFFFF}firmu ?","Áno","Nie");
}
}
return true;
}

if(dialogid == DIALOG_TYP_CHANGE2){
if(response){
new id = PlayerCP[playerid];
PropertyType[id] = listitem+5;
new str[128];
format(str,128,"Zmenil si typ nehnuteľnosti na %s",DefaultName[listitem+5]);
SendClientMessage(playerid,-1,str);
}
return true;
}

if(dialogid == DIALOG_KABRIOLET_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"{FFAF00} Vystup z auta");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,480,75000,0,id);
case 1: BuyCar(playerid,533,100000,0,id);
case 2: BuyCar(playerid,439,125000,0,id);
case 3: BuyCar(playerid,555,115000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_MOTO_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,481,45000,0,id);
case 1: BuyCar(playerid,510,35000,0,id);
case 2: BuyCar(playerid,462,10000,0,id);
case 3: BuyCar(playerid,581,80000,0,id);
case 4: BuyCar(playerid,522,130000,0,id);
case 5: BuyCar(playerid,461,100000,0,id);
case 6: BuyCar(playerid,521,95000,0,id);
case 7: BuyCar(playerid,463,110000,0,id);
case 8: BuyCar(playerid,468,115000,0,id);
case 9: BuyCar(playerid,471,125000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_LOWRIDER_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,536,155000,0,id);
case 1: BuyCar(playerid,575,100000,0,id);
case 2: BuyCar(playerid,534,75000,0,id);
case 3: BuyCar(playerid,567,140000,0,id);
case 4: BuyCar(playerid,535,150000,0,id);
case 5: BuyCar(playerid,576,135000,0,id);
case 6: BuyCar(playerid,412,80000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_OFFROAD_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,568,100000,0,id);
case 1: BuyCar(playerid,424,125000,0,id);
case 2: BuyCar(playerid,579,79000,0,id);
case 3: BuyCar(playerid,400,65000,0,id);
case 4: BuyCar(playerid,500,55000,0,id);
case 5: BuyCar(playerid,557,175000,0,id);
case 6: BuyCar(playerid,505,140000,0,id);
case 7: BuyCar(playerid,495,110000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_FAST_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,602,80000,0,id);
case 1: BuyCar(playerid,429,85000,0,id);
case 2: BuyCar(playerid,402,93000,0,id);
case 4: BuyCar(playerid,541,100000,0,id);
case 5: BuyCar(playerid,589,45000,0,id);
case 6: BuyCar(playerid,587,75000,0,id);
case 7: BuyCar(playerid,565,50000,0,id);
case 8: BuyCar(playerid,494,170000,0,id);
case 9: BuyCar(playerid,411,165000,0,id);
case 10:BuyCar(playerid,559,150000,0,id);
case 11:BuyCar(playerid,603,135000,0,id);
case 12:BuyCar(playerid,475,90000,0,id);
case 13:BuyCar(playerid,506,120000,0,id);
case 14:BuyCar(playerid,451,163000,0,id);
}
}
return true;
}


/*
#define DIALOG_KABRIOLET_SHOP 1320
#define DIALOG_MOTO_SHOP 1321
#define DIALOG_LOWRIDER_SHOP 1322
#define DIALOG_OFFROAD_SHOP 1323
#define DIALOG_FAST_SHOP 1324
*/
	return 1;
}//PlayerCP[playerid] = -1;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
if(newkeys == KEY_NO){
if(PlayerIN[playerid] != -1){
if(IsPlayerInRangeOfPoint(playerid,5,372.37, -130.13, 1001.49) || IsPlayerInRangeOfPoint(playerid,5,285.75,-38.40,1001.52)){
new id = PlayerIN[playerid];
PlayerIN[playerid] = -1;
PlayerCP[playerid] = id;
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerPos(playerid,PropertyPos[id][0],PropertyPos[id][1],PropertyPos[id][2]);
}
}
}
return true;
}


public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
for(new i; i < MAX_PLAYER_CARS;i++){
if(vehicleid == ID[playerid][i]){
Color[playerid][i][0] = color1;
Color[playerid][i][1] = color2;
break;
}
}
	return 1;
}

forward Float:InfrontOf(playerid,&Float:x,&Float:y,Float:vzd);
Float:InfrontOf(playerid,&Float:x,&Float:y,Float:vzd)// by Y_Less
{
   new Float:a;
   new vehicleid = GetPlayerVehicleID(playerid);
   GetPlayerPos(playerid,x,y,a);
   if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(vehicleid,a);
   else GetPlayerFacingAngle(playerid,a);
   x += (vzd * floatsin(-a,degrees));
   y += (vzd * floatcos(-a,degrees));
   return a;
}

stock IsNumeric(const string[])
{
   new length=strlen(string);
   if (length==0) return false;
   for (new i = 0; i < length; i++)
   {
      if ((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')|| (string[i]=='-' && i!=0)|| (string[i]=='+' && i!=0)) return false;
   }
   if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
   return true;
}

stock DelChar(tstring[])
{
new ln = strlen(tstring);
if(tstring[ln-2] == '\r')tstring[ln-2] = '\0';
if(tstring[ln-1] == '\n')tstring[ln-1] = '\0';
}

stock fcreate(filename[])
{
    if (fexist(filename)){return false;}
    new File:fhandle = fopen(filename,io_write);
    fclose(fhandle);
    return true;
}

stock PlayerName(playerid){
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
return name;
}

stock sscanf(string[], format[], {Float,_}:...) // by Y_Less
{
	#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;
}/*
 *  © by Denis 'QWER' Granec
 *  "Prišiel som, Videl som, Vyhral som..."
 *  "Najvačší okamžik života je úspech"
 *
 * 	Vehicle System
 * 		- Jednoduché spracovanie
 * 		- Možnosť mať viac áut
 * 		- Jednoduché zmenenie počtu áut pre hráča
 *      - Ukladanie pozície
 *      - Zmena ŠPZ-tky
 *      - Kupovanie áut cez Property System
 *      - Ukladanie tuningu
 *
 *  Property System
 *      - Jednoduché vytvorenie nehnuteľnosti
 *      - Viac typov nehnutelností (10)
 *      - Jednoduché pridanie nehnuteľnosti
 *      - Nastavenie ceny za tovar/vstup
 *      - Zmenenie typu firmy
 *      - Predaj automobilov, jedla, zbraní, kolies, farby, oprava auta
 *      - Ukladanie majiteľa, zisku, nastavejen ceny, názvu
 *      - Zmena názvu firmy
 *      - Vybratie zisku firmy
 */
 
 
#include <a_samp>
//#include "streamer" // Streamer Plugin
#include "CpStreamer.pwn"
#define ForPlayers ForPlayersCp
#include "icons_streamer.pwn"

////////////////////////////////////////////////////////////////////////////////////
//                      			START VARIABLES                               //
////////////////////////////////////////////////////////////////////////////////////

//================================= Vehicles System ==============================//
#define MAX_PLAYER_CARS 3
#define SCM SendClientMessage
#define DIALOG_MENU 1326
#define DIALOG_BUY 1327
#define DIALOG_CONFIG 1328
#define DIALOG_SETINGS 1329
#define DIALOG_SPZ 1330
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",
    "Boxvillde", "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", "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", "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", "Police Car", "Police Car", "Police Car",
    "Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
    "Boxville", "Tiller", "Utility Trailer"
};

new Float:Pos[MAX_PLAYERS][MAX_PLAYER_CARS][4];
new Model[MAX_PLAYERS][MAX_PLAYER_CARS];
new ID[MAX_PLAYERS][MAX_PLAYER_CARS];
new Color[MAX_PLAYERS][MAX_PLAYER_CARS][2];
new Mod[MAX_PLAYERS][MAX_PLAYER_CARS][14];
new Float:Health[MAX_PLAYERS][MAX_PLAYER_CARS];
new Paintjob[MAX_PLAYERS][MAX_PLAYER_CARS];
new VehicleParams[MAX_PLAYERS][MAX_PLAYER_CARS][4];

forward TunePlayerCar(playerid,slot,panels,doors,lights,tires);

//================================= Property System ==============================//
#define MAX_PROPERTY 50
#define MAX_PROPERTY_TYPE 10
#define MAX_PROPERTY_NAME 45
#define PROPERTY_DEFAULT_PRICE 300
#define PROPERTY_DEFAULT_OWNER "Nikdo"
#define PROPERTY_LABEL_COLOR 0xFF0000FF
#define MAX_DEFAULT_CENA 2500
#define MIN_DEFAULT_NAME 3

#define DIALOG_PROPERTY_BUY 1300

#define DIALOG_FARBA_OWNER 1301
#define DIALOG_KOLESA_OWNER 1302
#define DIALOG_OPRAVA_OWNER 1303
#define DIALOG_AMMO_OWNER 1304
#define DIALOG_JEDLO_OWNER 1305

#define DIALOG_FARBA_SHOP 1306
#define DIALOG_KOLESA_SHOP 1307
#define DIALOG_OPRAVA_SHOP 1308
#define DIALOG_AMMO_SHOP 1309
#define DIALOG_JEDLO_SHOP 1310

#define DIALOG_TYP_CHANGE 1311
#define DIALOG_PRICE_CHANGE 1312
#define DIALOG_NAME_CHANGE 1313
#define DIALOG_PROPERTY_SELL 1314

#define DIALOG_KABRIOLET_OWNER 1315
#define DIALOG_MOTO_OWNER 1316
#define DIALOG_LOWRIDER_OWNER 1317
#define DIALOG_OFFROAD_OWNER 1318
#define DIALOG_FAST_OWNER 1319

#define DIALOG_KABRIOLET_SHOP 1320
#define DIALOG_MOTO_SHOP 1321
#define DIALOG_LOWRIDER_SHOP 1322
#define DIALOG_OFFROAD_SHOP 1323
#define DIALOG_FAST_SHOP 1324

#define DIALOG_TYP_CHANGE2 1325

#define DAYS 86400*4
// Pri prvom vytvorení - aby tam bol niaky názov (majiteľ si ho potom zmení, len tam musí byť názov)
new DefaultName[MAX_PROPERTY_TYPE][MAX_PROPERTY_NAME] = {
"Pay and Spray",
"Wheels Servis",
"Repair Servis",
"Ammo Nation",
"Burger Shoot",
"Kabriolet Store",
"Bike Store",
"Lowrider car Store",
"OffRoad car Store",
"Sport Store"
};

/*
0 - FARBA
1 - KOLESA
2 - OPRAVA
3 - AMMO
4 - JEDLO
5 - KABRILOET
6 - MOTO
7 - LOWRIDER
8 - OFFROAD
9 - FAST

*/
#define FARBA 0
#define KOLESA 1
#define OPRAVA 2
#define AMMO 3
#define JEDLO 4
#define KABRIOLET 5
#define MOTO 6
#define LOWRIDER 7
#define OFFROAD 8
#define FAST 9
// Premenne
new Float:PropertyPos[MAX_PROPERTY][3]; // Pozície (x,y,z) nehnuteľnosti
new PropertyType[MAX_PROPERTY]; // Typ nehnuteľnosti
new PropertyCost[MAX_PROPERTY]; // Cena nehnuteľnosti
new PropertyPrice[MAX_PROPERTY] = {PROPERTY_DEFAULT_PRICE,...}; // Vlastná cena tovaru
new Text3D:PropertyLabel[MAX_PROPERTY]; // 3D Text Label
new PropertyOwner[MAX_PROPERTY][MAX_PLAYER_NAME]; // Majiteľ
new PropertyName[MAX_PROPERTY][MAX_PROPERTY_NAME]; // Názov
new PropertyProfit[MAX_PROPERTY]; // Tržba
new PropertyPC[MAX_PROPERTY];

new PropertyConnect[MAX_PROPERTY];

new PlayerCP[MAX_PLAYERS] = {-1,...};
new PlayerIN[MAX_PLAYERS] = {-1,...};
new PC = -1;

forward PropertySaveAll();
////////////////////////////////////////////////////////////////////////////////////
//                      			START FUNCTIONS                               //
////////////////////////////////////////////////////////////////////////////////////

//================================= Vehicles System ==============================//

stock CreatePlayerVehicle(playerid,slot,model){
new str[100];
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),slot);
fcreate(str);
new Float:pos[4];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
GetPlayerFacingAngle(playerid, pos[3]);
InfrontOf(playerid,pos[0],pos[1],4);
ID[playerid][slot] = CreateVehicle(model,pos[0],pos[1],pos[2],pos[3],0,0,-1);
Model[playerid][slot] = model;
Pos[playerid][slot][0] = pos[0];
Pos[playerid][slot][1] = pos[1];
Pos[playerid][slot][2] = pos[2];
Pos[playerid][slot][3] = pos[3];
return true;
}

stock DeletePlayerVehicle(playerid,slot){
if(ID[playerid][slot] == -1) return 0;
new str[100];
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),slot);
if(fexist(str))
fremove(str);
DestroyVehicle(ID[playerid][slot]);
ID[playerid][slot] = -1;
return true;
}

stock SavePlayerVehicles(playerid){
for(new i; i < MAX_PLAYER_CARS;i++){
if(ID[playerid][i] != -1){
new str[100],bigstr[798],Float:health;
new panels,doors,lights,tires;
GetVehicleDamageStatus(ID[playerid][i],panels,doors,lights,tires);
GetVehicleHealth(ID[playerid][i],health);
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),i);
if(!fexist(str)) continue;
new File:file = fopen(str, io_write);
format(bigstr,798,"%d %0.3f %0.3f %0.3f %0.3f %0.3f %d %d %d %d\r\n",Model[playerid][i],Pos[playerid][i][0],Pos[playerid][i][1],Pos[playerid][i][2],Pos[playerid][i][3],health,panels,doors,lights,tires);
//              model   x     y     z     a   health panels doors lights tires
fwrite(file,bigstr);
format(bigstr,798,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",	GetVehicleComponentInSlot(ID[playerid][i],0),
/*                 1  2  3  4  5  6  7  8  9  10 11 12 13 c1 c2 pj*/	GetVehicleComponentInSlot(ID[playerid][i],1),
																		GetVehicleComponentInSlot(ID[playerid][i],2),
																		GetVehicleComponentInSlot(ID[playerid][i],3),
																		GetVehicleComponentInSlot(ID[playerid][i],4),
																		GetVehicleComponentInSlot(ID[playerid][i],5),
																		GetVehicleComponentInSlot(ID[playerid][i],6),
																		GetVehicleComponentInSlot(ID[playerid][i],7),
																		GetVehicleComponentInSlot(ID[playerid][i],8),
																		GetVehicleComponentInSlot(ID[playerid][i],9),
																		GetVehicleComponentInSlot(ID[playerid][i],10),
																		GetVehicleComponentInSlot(ID[playerid][i],11),
																		GetVehicleComponentInSlot(ID[playerid][i],12),
																		GetVehicleComponentInSlot(ID[playerid][i],13),
																		Color[playerid][i][0],
																		Color[playerid][i][1],
																		Paintjob[playerid][i]);
fwrite(file,bigstr);
fclose(file);
DestroyVehicle(ID[playerid][i]);

ID[playerid][i] = -1;
}
}
}

stock LoadPlayerVehicles(playerid){
for(new i; i < MAX_PLAYER_CARS;i++){
new str[100];
format(str,100,"Cars/%s.%d.txt",PlayerName(playerid),i);
if(fexist(str)){
new bigstr[798];
new File:file = fopen(str,io_read);
fread(file,bigstr);
DelChar(bigstr);
new panels,doors,lights,tires;
sscanf(bigstr, "dfffffdddd", Model[playerid][i],Pos[playerid][i][0],Pos[playerid][i][1],Pos[playerid][i][2],Pos[playerid][i][3],Health[playerid][i],panels,doors,lights,tires);
fread(file,bigstr);
DelChar(bigstr);
sscanf(bigstr, "dddddddddddddddd",Mod[playerid][i][0],Mod[playerid][i][1],Mod[playerid][i][2],Mod[playerid][i][3],Mod[playerid][i][4],Mod[playerid][i][5],Mod[playerid][i][6],Mod[playerid][i][7],Mod[playerid][i][8],Mod[playerid][i][9],Mod[playerid][i][10],Mod[playerid][i][11],Mod[playerid][i][12],Mod[playerid][i][13],Color[playerid][i][0],Color[playerid][i][1],Paintjob[playerid][i]);
fclose(file);
ID[playerid][i] = CreateVehicle(Model[playerid][i],Pos[playerid][i][0],Pos[playerid][i][1],Pos[playerid][i][2],Pos[playerid][i][3],Color[playerid][i][0],Color[playerid][i][1],-1);
SetTimerEx("TunePlayerCar",150,false,"iiiiii",playerid,i,panels,doors,lights,tires);
}
}
}


stock BuyCar(playerid,model,cena,type = 1,id = -1){
if(GetPlayerMoney(playerid) < cena) return SCM(playerid,-1,"{6EF83C} Nemáš na to dostatek peněz");
GivePlayerMoney(playerid,-cena);
new slot = -1;
if(type == 1){
slot = GetPVarInt(playerid,"VehiclesSelected");
SCM(playerid,-1,"{FFAF00} Zakoupil sis vozidlo /vozidla");
}else{
for(new i; i < MAX_PLAYER_CARS;i++){
if(ID[playerid][i] == -1){
slot = i;
break;
}
}
}
if(slot == -1) return SCM(playerid,-1,"Nemas volny SLOT na auto,musis nejake prodat (/vozidla)");
if(id > -1){
PropertyProfit[id] += cena/100;
}
CreatePlayerVehicle(playerid,slot,model);
return true;
}

public TunePlayerCar(playerid,slot,panels,doors,lights,tires){
//print("TunePlayerCar");
for(new i; i < 14;i++){
AddVehicleComponent(ID[playerid][slot], Mod[playerid][slot][i]);
}
SetVehicleHealth(ID[playerid][slot],Health[playerid][slot]);
UpdateVehicleDamageStatus(ID[playerid][slot],panels,doors,lights,tires);
ChangeVehiclePaintjob(ID[playerid][slot], Paintjob[playerid][slot]);
return true;
}


//================================= Property System ==============================//

stock CreateProperty(typ,Float:x,Float:y,Float:z,cost){
PC++;
if(PC < MAX_PROPERTY){
PropertyPos[PC][0] = x;
PropertyPos[PC][1] = y;
PropertyPos[PC][2] = z;
if(typ < 0 || typ >= MAX_PROPERTY_TYPE) return printf("(%d/%d) Nehnutelnosť má zlý typ !",PC,MAX_PROPERTY_TYPE);
PropertyType[PC] = typ;
PropertyCost[PC] = cost;
new str[256];
format(str,100,"Property/%d.txt",PC);
if(!fexist(str)){
new File:file = fopen(str,io_write);
format(str,256,"%s %d %d %d %d %s",PROPERTY_DEFAULT_OWNER,-1,PROPERTY_DEFAULT_PRICE,0,typ,DefaultName[typ]);
/*              O  C  P  Z  N  */
// O - Owner    P - Price	Z - Zisk (profit)  N - Name (property)
fwrite(file,str);
fclose(file);
PropertyPrice[PC] = PROPERTY_DEFAULT_PRICE;
format(PropertyName[PC],MAX_PROPERTY_NAME,"%s",DefaultName[typ]);
format(PropertyOwner[PC],MAX_PLAYER_NAME,"%s",PROPERTY_DEFAULT_OWNER);
}else{
new File:file = fopen(str,io_read);
fread(file,str);
DelChar(str);
sscanf(str,"siiiiz",PropertyOwner[PC],PropertyConnect[PC],PropertyPrice[PC],PropertyProfit[PC],PropertyType[PC],PropertyName[PC]);
//printf("|%s|%d|%d|%d|%d|%s|",PropertyOwner[PC],PropertyConnect[PC],PropertyPrice[PC],PropertyProfit[PC],PropertyType[PC],PropertyName[PC]);
}
PropertyPC[PC] = CreateStreamCp(x, y, z, 2.5); //
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",PC,PropertyName[PC],PropertyOwner[PC]);
PropertyLabel[PC] =  Create3DTextLabel(str,PROPERTY_LABEL_COLOR,x,y,z+1, 80, 0, 1);
CreateMapIcon(8, -1, x, y, z);
//CreateDynamicMapIcon(x, y, z, 8, -1, -1, -1, -1, 100.0);
}else printf("(%d/%d) Na servery je moc nehnutelností ! ",PC,MAX_PROPERTY);
return true;
}

stock PropertySave(id){
new str[256];
format(str,100,"Property/%d.txt",id);
new File:file = fopen(str,io_write);
if(PropertyConnect[id]+DAYS > gettime()){
format(str,256,"%s %d %d %d %d %s",PropertyOwner[id],PropertyConnect[id],PropertyPrice[id],PropertyProfit[id],PropertyType[id],PropertyName[id]);
}else{
format(str,256,"%s %d %d %d %d %s",PROPERTY_DEFAULT_OWNER,-1,PROPERTY_DEFAULT_PRICE,0,PropertyType[id],DefaultName[PropertyType[id]]);
}
/*              O  P  Z  N  */
// O - Owner    P - Price	Z - Zisk (profit)  N - Name (property)
fwrite(file,str);
fclose(file);
}

public PropertySaveAll(){
for(new id; id <= PC;id++){
new str[256];
format(str,100,"Property/%d.txt",id);
new File:file = fopen(str,io_write);
if(PropertyConnect[id]+DAYS > gettime()){
format(str,256,"%s %d %d %d %d %s",PropertyOwner[id],PropertyConnect[id],PropertyPrice[id],PropertyProfit[id],PropertyType[id],PropertyName[id]);
}else{
format(str,256,"%s %d %d %d %d %s",PROPERTY_DEFAULT_OWNER,-1,PROPERTY_DEFAULT_PRICE,0,PropertyType[id],DefaultName[PropertyType[id]]);
}
/*              O  C P  Z  N  */
// O - Owner    P - Price	Z - Zisk (profit)  N - Name (property) C - Connect (last)
fwrite(file,str);
fclose(file);
}
}

stock GetPlayerPropertyID(playerid){
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
for(new i; i <= PC;i++){
if(!strcmp(name,PropertyOwner[i],false)){
return i;
}
}
return -1;
}

stock IsPlayerPropertyOwner(playerid,id){
if(!strcmp(PlayerName(playerid),PropertyOwner[id],false)) return true;
return false;
}

stock GetPropertyOwner(playerid,id){
return PropertyName[id];
}

stock IsPropertyForSale(id){
if(!strcmp(PROPERTY_DEFAULT_OWNER,PropertyOwner[id],false)) return true;
return false;
}

////////////////////////////////////////////////////////////////////////////////////
//                      			OnFilterScriptInit                            //
////////////////////////////////////////////////////////////////////////////////////

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" START");
	print("--------------------------------------\n");
// Vehicle
for(new i; i < MAX_PLAYERS; i++){
for(new x; x < MAX_PLAYER_CARS;x++){
ID[i][x] = -1;
Paintjob[i][x] = -999;
}
}

// Property
new Float:pos,id;
for(new i; i < MAX_PROPERTY_TYPE;i++){
id++;
//printf("%d",5-id); pos: 2044.85, 1174.78, 10.67
	CreateProperty(MAX_PROPERTY_TYPE-id,2044.85, 1174.78+pos, 10.67,100);
pos += 50;
}
SetTimer("PropertySaveAll",3600000,true);

	return 1;
}

public OnPlayerConnect(playerid){
// Vehicle
OnPlayerConnectCp(playerid);
LoadPlayerVehicles(playerid);

// Property
PlayerCP[playerid] = -1;
PlayerIN[playerid] = -1;
new slot = GetPlayerPropertyID(playerid);
if(slot > -1){
PropertyConnect[slot] = gettime();
}

return true;
}

public OnPlayerDisconnect(playerid){
// Vehicle
OnPlayerDisconnectCp(playerid);

SavePlayerVehicles(playerid);

//Property
new slot = GetPlayerPropertyID(playerid);
if(slot > -1){
PropertyConnect[slot] = gettime();
PropertySave(slot);
}

return true;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext,"/1")){
SetPlayerName(playerid,"k***t");
return true;
}
if(!strcmp(cmdtext,"/2")){
SetPlayerName(playerid,"QWER");
return true;
}
if(!strcmp(cmdtext,"/3")){
SetPlayerName(playerid,"QWER1");
return true;
}

if(!strcmp(cmdtext,"/park")){
	new vehicleid = GetPlayerVehicleID(playerid);
	if(vehicleid == 0) return SCM(playerid,-1,"Niesi v aute !");
	new vlastne = -1;
	for(new i; i < MAX_PLAYER_CARS;i++){
	if(ID[playerid][i] == vehicleid){
 	vlastne = i;
	break;
	}
	}
	if(vlastne == -1) return SCM(playerid,-1,"Nesedíš vo vlastnom aute !");
	GetVehiclePos(vehicleid,Pos[playerid][vlastne][0],Pos[playerid][vlastne][1],Pos[playerid][vlastne][2]);
	GetVehicleZAngle(vehicleid, Pos[playerid][vlastne][3]);
	SCM(playerid,-1,"Auto úspešne odparkované");
return true;
}

if(!strcmp(cmdtext,"/vehicle")){
	new string1[700],string2[100];
	for(new i;i<MAX_PLAYER_CARS;i++){
		if(ID[playerid][i]==-1){
	 		format(string2,100,"- Žiadne Vozidlo -\n");
		}else{
	 		format(string2,100,"%s\n",vehName[GetVehicleModel(ID[playerid][i])-400]);
		}
	format(string1,256,"%s%s",string1,string2);
	}
	ShowPlayerDialog(playerid,DIALOG_MENU,DIALOG_STYLE_LIST,"Vehicles",string1,"Vybrať","Zrušiť");
return true;
}

if(!strcmp(cmdtext,"/0")){
PropertySaveAll();
return true;
}

	return 0;
}

public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
if(PlayerIN[playerid] > -1){
new id = PlayerIN[playerid];
if(PropertyType[id] == AMMO){
SetPlayerShopName(playerid,"AMMUN1");
}else{
SetPlayerShopName(playerid,"FDPIZA");
}
}
    return 1;
}


public OnPlayerEnterCp(playerid, checkpointid){
if(PlayerCP[playerid] == -1){
	for(new i; i <= PC;i++){
		if(checkpointid == PropertyPC[i]){
			PlayerCP[playerid] = i;
		}
	}
if(PlayerCP[playerid] != -1){
//(playerid, dialogid, style, caption[], info[], button1[], button2[])
new id = PlayerCP[playerid],str[75],string[150];
format(str,75,"{FFFFFF}Property {FF0000}%s",PropertyName[id]);
if(IsPropertyForSale(id)){
format(string,150,"{FFFFFF}Prajete si kúpiť {FF0000}%s{FFFFFF} za {FF0000}%d{00FF00}${FFFFFF} ?",PropertyName[id],PropertyCost[id]);
ShowPlayerDialog(playerid,DIALOG_PROPERTY_BUY,0,str,string,"Áno","Nie");
}else{
if(IsPlayerPropertyOwner(playerid,id)){
switch(PropertyType[id]){
case FARBA: ShowPlayerDialog(playerid,DIALOG_FARBA_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case KOLESA: ShowPlayerDialog(playerid,DIALOG_KOLESA_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case OPRAVA: ShowPlayerDialog(playerid,DIALOG_OPRAVA_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case AMMO: ShowPlayerDialog(playerid,DIALOG_AMMO_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case JEDLO: ShowPlayerDialog(playerid,DIALOG_JEDLO_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
/*
5 - KABRILOET
6 - MOTO
7 - LOWRIDER
8 - OFFROAD
9 - FAST
*/
case KABRIOLET: ShowPlayerDialog(playerid,DIALOG_KABRIOLET_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case MOTO: ShowPlayerDialog(playerid,DIALOG_MOTO_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case LOWRIDER: ShowPlayerDialog(playerid,DIALOG_LOWRIDER_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case OFFROAD: ShowPlayerDialog(playerid,DIALOG_OFFROAD_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
case FAST: ShowPlayerDialog(playerid,DIALOG_FAST_OWNER,2,str,"{FFFFFF}Vybrať kasu\nZmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
}
}else{
switch(PropertyType[id]){
case FARBA:{
//Černá Bílá Červená Zelená Modrá Oranžová Žlutá Růžová Šedá
ShowPlayerDialog(playerid,DIALOG_FARBA_SHOP,2,str,"{FFFFFF}Náhodná\nČierna\nBiela\nČervená\nZelená\nModrá\nŽltá\nRužová\nŠedá\nFialová\nAzúrová","Áno","Nie");
}
case KOLESA:{
ShowPlayerDialog(playerid,DIALOG_KOLESA_SHOP,2,str,"{FFFFFF}Shadow\nMega\nRamshine\nWires\nClassic\nTwist\nCutter\nSwitch\nGrove\nImport\nDollar\nTrance\nAtomic","Áno","Nie");
}
case OPRAVA:{
ShowPlayerDialog(playerid,DIALOG_OPRAVA_SHOP,2,str,"{FFFFFF}Opraviť Motor\nOpraviť Karosériu","Áno","Nie");
}
case AMMO:{
format(string,150,"{FFFFFF}Chceš vstúpiť do {FF0000}%s {FFFFFF}?\nCena za vstup je {FF0000}%d{00FF00}$",PropertyName[id],PropertyPrice[id]);
ShowPlayerDialog(playerid,DIALOG_AMMO_SHOP,0,str,string,"Áno","Nie");
}
case JEDLO:{
format(string,150,"{FFFFFF}Chceš vstúpiť do {FF0000}%s {FFFFFF}?\nCena za vstup je {FF0000}%d{00FF00}$",PropertyName[id],PropertyPrice[id]);
ShowPlayerDialog(playerid,DIALOG_JEDLO_SHOP,0,str,string,"Áno","Nie");
}
case KABRIOLET:{
ShowPlayerDialog(playerid,DIALOG_KABRIOLET_SHOP,2,str,"{FFFFFF}Comet\t\t75 000\
														\nFeltzer\t100 000\
														\nStallion\t125 000\
														\nWindsor\t115 000","Áno","Nie");
}
case MOTO:{
ShowPlayerDialog(playerid,DIALOG_MOTO_SHOP,2,str,"{FFFFFF}BMX\t\t45 000\
													\nMountian Bike\t35 000\
													\nFaggio\t\t10 000\
													\nBF-400\t\t80 000\
													\nNRG-500\t130 000\
													\nPCJ-600\t100 000\
													\nFCR-900\t95 000\
													\nFreeway\t110 000\
													\nSanchez\t115 000\
													\nQuad\t\t125 000","Áno","Nie");
}
case LOWRIDER:{
ShowPlayerDialog(playerid,DIALOG_LOWRIDER_SHOP,2,str,"{FFFFFF}Blade\t\t155 000\
														\nBroadway\t100 000\
														\nRemington\t75 000\
														\nSavanna\t140 000\
														\nSlamvan\t150 000\
														\nTornado\t135 000\
														\nVoodoo\t\t80 000","Áno","Nie");

}
case OFFROAD:{
ShowPlayerDialog(playerid,DIALOG_OFFROAD_SHOP,2,str,"{FFFFFF}Bandito\t100 000\
														\nBF Injection\t125 000\
														\nHuntley\t79 000\
														\nLandstalker\t65 000\
														\nMesa\t\t55 000\
														\nMonster\t175 000\
														\nRancher\t140 000\
														\nSandking\t110 000","Áno","Nie");
}
case FAST:{
ShowPlayerDialog(playerid,DIALOG_FAST_SHOP,2,str,"{FFFFFF}Alpha\t\t80 000\
														\nBanshee\t85 000\
														\nBuffalo\t93 000\
														\nBullet\t\t100 000\
														\nCheath\t\t99 000\
														\nClub\t\t45 000\
														\nEuros\t\t75 000\
														\nFlash\t\t50 000\
														\nHotring Racer\t170 000\
														\nInfernus\t165 000\
														\nJester\t\t150 000\
														\nPhoenix\t135 000\
														\nSabre\t\t90 000\
														\nSuper GT\t120 000\
														\nTurismo\t163 000","Áno","Nie");
}
}

}
}
}

}
return true;
}

public OnPlayerLeaveCp(playerid, checkpointid){
PlayerCP[playerid] = -1;
return true;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//========================================== VEHICLE SYSTEM =======================================//
if(dialogid == DIALOG_MENU){
if(response){
SetPVarInt(playerid,"VehiclesSelected",listitem);
if(ID[playerid][listitem] == -1){
// prázdne auto
ShowPlayerDialog(playerid,DIALOG_BUY,0,"Vehicles","Auto si môžeš kúpiť pri niakej nehnuteľnosti s predajom áut !","Vybrať","Zrušiť");
}else{
// plne auto
ShowPlayerDialog(playerid,DIALOG_CONFIG,DIALOG_STYLE_LIST,"Vehicles","Respawn\nNastavenia\nPredať","Vybrať","Zrušiť");
}
}
return true;
}

if(dialogid == DIALOG_BUY){
if(response){
// Sem nič netreba...
}
return true;
}

if(dialogid == DIALOG_CONFIG){
if(response){
new slot = GetPVarInt(playerid,"VehiclesSelected");
switch(listitem){
case 0:{
SetVehiclePos(ID[playerid][slot],Pos[playerid][slot][0],Pos[playerid][slot][1],Pos[playerid][slot][2]);
SetVehicleZAngle(ID[playerid][slot], Pos[playerid][slot][3]);
}

case 1:{
ShowPlayerDialog(playerid,DIALOG_SETINGS,DIALOG_STYLE_LIST,"Vehicles","Motor\nSvetla\nKapota\nKufor\nŠPZ","Vybrať","Zrušiť");
//DIALOG_SETINGS
}

case 2:{
DeletePlayerVehicle(playerid,slot);
SCM(playerid,-1,"Predal si svoje auto, dostal 20 000 ako šrotovné");
GivePlayerMoney(playerid,20000);
}

}
}
return true;
}

if(dialogid == DIALOG_SETINGS){
if(response){
new slot = GetPVarInt(playerid,"VehiclesSelected");
if(GetPlayerVehicleID(playerid) != ID[playerid][slot]) return SCM(playerid,-1,"Musíš sedieť vo svojom aute !");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
switch(listitem){
case 0:{
if(VehicleParams[playerid][slot][0] == 0){
SetVehicleParamsEx(ID[playerid][slot],VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][0] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][0] = 1;
}
}

case 1:{
if(VehicleParams[playerid][slot][1] == 0){
SetVehicleParamsEx(ID[playerid][slot],engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][1] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
VehicleParams[playerid][slot][1] = 0;
}}

case 2:{
if(VehicleParams[playerid][slot][2] == 0){
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
VehicleParams[playerid][slot][2] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
VehicleParams[playerid][slot][2] = 0;
}}

case 3:{
if(VehicleParams[playerid][slot][3] == 0){
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
VehicleParams[playerid][slot][3] = 1;
}else{
SetVehicleParamsEx(ID[playerid][slot],engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
VehicleParams[playerid][slot][3] = 0;
}}
case 4:{
ShowPlayerDialog(playerid,DIALOG_SPZ,1,"Vehicle","Zadaj text, ktorý chceš na ŠPZ-tke","Ano","Nie");
}
}

}
return true;
}

if(dialogid == DIALOG_SPZ){
if(response){
new slot = GetPVarInt(playerid,"VehiclesSelected");
if(strlen(inputtext) >30 || strlen(inputtext) < 1) return ShowPlayerDialog(playerid,DIALOG_SPZ,1,"Vehicle","Rozmedzie textu od 0 do 29\nZadaj text, ktorý chceš na ŠPZ-tke","Ano","Nie");
//if(GetPlayerVehicleID(playerid) == ID[playerid][slot]) return SCM(playerid,-1,"Nemôžeš sedieť v aute !");
RemovePlayerFromVehicle(playerid,GetPlayerVehicleID(playerid));
SetVehicleNumberPlate(ID[playerid][slot],inputtext);
new Float:x,Float:y,Float:z;
GetVehiclePos( ID[playerid][slot],x,y,z);
SetVehicleToRespawn(ID[playerid][slot]);
SetVehiclePos(ID[playerid][slot],x,y,z);
}
return true;
}
//========================================== PROPERTY SYSTEM =======================================//
if(dialogid == DIALOG_PROPERTY_BUY){
if(response){
new id = PlayerCP[playerid];
if(GetPlayerMoney(playerid) < PropertyCost[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí, na kúpenie tejto nehnuteľnosti !");
if(GetPlayerPropertyID(playerid) > -1) return SendClientMessage(playerid,-1,"Už jednu nehnuteľnosť máš !");
GivePlayerMoney(playerid,-PropertyCost[id]);
format(PropertyOwner[id],MAX_PLAYER_NAME,"%s",PlayerName(playerid));
PropertyConnect[id] = gettime();
new str[256];
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",id,PropertyName[id],PropertyOwner[id]);
Update3DTextLabelText(PropertyLabel[id], PROPERTY_LABEL_COLOR, str);
SendClientMessage(playerid,-1,"Kúpil si si novú nehnuteľnosť !");
}
return true;
}

if(dialogid == DIALOG_FARBA_OWNER || dialogid == DIALOG_KOLESA_OWNER || dialogid == DIALOG_OPRAVA_OWNER){
if(response){
new id = PlayerCP[playerid];
//ShowPlayerDialog(playerid,DIALOG_FARBA_OWNER,2,str,"{FFFFFF}Zmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
switch(listitem){
case 0:{
new str[128];
format(str,128,"Zisk firmy činil %d$",PropertyProfit[id]);
GivePlayerMoney(playerid,PropertyProfit[id]);
SendClientMessage(playerid,-1,str);
PropertyProfit[id] = 0;
}
case 1: ShowPlayerDialog(playerid,DIALOG_TYP_CHANGE,2,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Lakovňa\nPneuservis\nOpravovňa","Áno","Nie");
case 2: ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj novú cenu !","Áno","Nie");
case 3: ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
case 4: ShowPlayerDialog(playerid,DIALOG_PROPERTY_SELL,0,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Naozaj chceš {FF0000}Predať {FFFFFF}firmu ?","Áno","Nie");
}
}
return true;
}

if(dialogid == DIALOG_AMMO_OWNER || dialogid == DIALOG_JEDLO_OWNER){
if(response){
new id = PlayerCP[playerid];
//ShowPlayerDialog(playerid,DIALOG_JEDLO_OWNER,2,str,"{FFFFFF}Zmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
switch(listitem){
case 0:{
new str[128];
format(str,128,"Zisk firmy činil %d$",PropertyProfit[id]);
GivePlayerMoney(playerid,PropertyProfit[id]);
SendClientMessage(playerid,-1,str);
PropertyProfit[id] = 0;
}
case 1: ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj novú cenu !","Áno","Nie");
case 2: ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
case 3: ShowPlayerDialog(playerid,DIALOG_PROPERTY_SELL,0,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Naozaj chceš {FF0000}Predať {FFFFFF}firmu ?","Áno","Nie");
}
}
return true;
}

if(dialogid == DIALOG_TYP_CHANGE){
if(response){
new id = PlayerCP[playerid];
PropertyType[id] = listitem;
new str[128];
format(str,128,"Zmenil si typ nehnuteľnosti na %s",DefaultName[listitem]);
SendClientMessage(playerid,-1,str);
}
return true;
}

if(dialogid == DIALOG_PRICE_CHANGE){
if(response){
new id = PlayerCP[playerid];
if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{ff0000}Cena musí byť číselná !\n{FFFFFF}Zadaj novú cenu !","Áno","Nie");
new cena = strval(inputtext);
new str[128];
if(cena < 0 || cena > MAX_DEFAULT_CENA){
format(str,128,"{ff0000}Cena musí byť od 1 do %d !\n{FFFFFF}Zadaj novú cenu !",MAX_DEFAULT_CENA);
ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config",str,"Áno","Nie");
return true;
}
PropertyPrice[id] = cena;
format(str,128,"Cenu za tovar v nehnuteľnosti si nastavil na %d",cena);
SendClientMessage(playerid,-1,str);
}
return true;
}

if(dialogid == DIALOG_NAME_CHANGE){
if(response){
new id = PlayerCP[playerid];
new len = strlen(inputtext);
if(len < MIN_DEFAULT_NAME || len > MAX_PROPERTY_NAME) return ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zlá dĺžka názvu !\n{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
format(PropertyName[id],MAX_PROPERTY_NAME,"%s",inputtext);
new str[256];
format(str,128,"Názov nehnuteľnosti zmenený na %s",inputtext);
SendClientMessage(playerid,-1,str);
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",id,PropertyName[id],PropertyOwner[id]);
Update3DTextLabelText(PropertyLabel[id], PROPERTY_LABEL_COLOR, str);
}
return true;
}

if(dialogid == DIALOG_PROPERTY_SELL){
if(response){
new id = PlayerCP[playerid];
format(PropertyName[id],MAX_PROPERTY_NAME,"%s",DefaultName[PropertyType[id]]);
format(PropertyOwner[id],MAX_PLAYER_NAME,"%s",PROPERTY_DEFAULT_OWNER);
new str[256];
format(str,256,"Nehnuteľnosť č.{FFFFFF}%d\n{FFFFFF}%s\n{FF0000}Owner: {FFFFFF}%s",id,PropertyName[id],PropertyOwner[id]);
Update3DTextLabelText(PropertyLabel[id], PROPERTY_LABEL_COLOR, str);
SendClientMessage(playerid,-1,"Predal si svoju nehnuteľnosť !");
}
return true;
}

if(dialogid == DIALOG_FARBA_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) return SendClientMessage(playerid,-1,"Musíš  byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
//Čierna\nBiela\nČervená\nZelená\nModrá\nŽltá\nRužová\nŠedá\nFialová\nAzúrová
switch(listitem){
case 0: ChangeVehicleColor(vehicleid, random(127), random(127));
case 1: ChangeVehicleColor(vehicleid, 0,0);
case 2: ChangeVehicleColor(vehicleid, 1,1);
case 3: ChangeVehicleColor(vehicleid, 151,151);
case 4: ChangeVehicleColor(vehicleid, 86,86);
case 5: ChangeVehicleColor(vehicleid, 2,2);
case 6: ChangeVehicleColor(vehicleid, 6,6);
case 7: ChangeVehicleColor(vehicleid, 146,146);
case 8: ChangeVehicleColor(vehicleid, 118,118);
case 9: ChangeVehicleColor(vehicleid, 149,149);
case 10:ChangeVehicleColor(vehicleid, 146,146);
}
}
return true;
}

if(dialogid == DIALOG_KOLESA_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) return SendClientMessage(playerid,-1,"Musíš  byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
AddVehicleComponent(vehicleid, 1073+listitem);
}
return true;
}

if(dialogid == DIALOG_OPRAVA_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) return SendClientMessage(playerid,-1,"Musíš  byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
//Opraviť Motor\nOpraviť Karosériu
if(listitem == 0) SetVehicleHealth(vehicleid,1000);
else RepairVehicle(vehicleid);
}
return true;
}

// AMMO NATIONS
// POS: 285.75, -38.40, 1001.52 INT: 1
if(dialogid == DIALOG_AMMO_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
PlayerIN[playerid] = id;
SetPlayerPos(playerid,285.75,-38.40,1001.52);
SetPlayerInterior(playerid,1);
SetPlayerVirtualWorld(playerid,id);
SendClientMessage(playerid,-1,"Pre opustenie budovy stlač klávesu 'N' pri vchode !");
}
return true;
}


// PIZZA STACK
//POS: 372.37, -130.13, 1001.49 INT: 5
if(dialogid == DIALOG_JEDLO_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
if(GetPlayerMoney(playerid) < PropertyPrice[id]) return SendClientMessage(playerid,-1,"Nemáš dostatok peňazí !");
GivePlayerMoney(playerid,-PropertyPrice[id]);
PropertyProfit[id] += PropertyPrice[id];
PlayerIN[playerid] = id;
SetPlayerPos(playerid,372.37, -130.13, 1001.49);
SetPlayerInterior(playerid,5);
SetPlayerVirtualWorld(playerid,id);
SendClientMessage(playerid,-1,"Pre opustenie budovy stlač klávesu 'N' pri vchode !");
}
return true;
}

if(dialogid == DIALOG_KABRIOLET_OWNER || dialogid == DIALOG_MOTO_OWNER || dialogid == DIALOG_LOWRIDER_OWNER || dialogid == DIALOG_OFFROAD_OWNER || dialogid == DIALOG_FAST_OWNER){
if(response){
new id = PlayerCP[playerid];
//ShowPlayerDialog(playerid,DIALOG_FARBA_OWNER,2,str,"{FFFFFF}Zmeniť typ\nZmeniť Cenu\nZmeniť Názov\nPredať firmu","Áno","Nie");
switch(listitem){
case 0:{
new str[128];
format(str,128,"Zisk firmy činil %d$",PropertyProfit[id]);
GivePlayerMoney(playerid,PropertyProfit[id]);
SendClientMessage(playerid,-1,str);
PropertyProfit[id] = 0;
}
case 1: ShowPlayerDialog(playerid,DIALOG_TYP_CHANGE2,2,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Kabriolet\nMoto\nLowrider\nOffroad\nSport","Áno","Nie");
case 2: ShowPlayerDialog(playerid,DIALOG_PRICE_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj novú cenu !","Áno","Nie");
case 3: ShowPlayerDialog(playerid,DIALOG_NAME_CHANGE,1,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Zadaj nový názov nehnuteľnosti !","Áno","Nie");
case 4: ShowPlayerDialog(playerid,DIALOG_PROPERTY_SELL,0,"{FFFFFF}Property {FF0000}Config","{FFFFFF}Naozaj chceš {FF0000}Predať {FFFFFF}firmu ?","Áno","Nie");
}
}
return true;
}

if(dialogid == DIALOG_TYP_CHANGE2){
if(response){
new id = PlayerCP[playerid];
PropertyType[id] = listitem+5;
new str[128];
format(str,128,"Zmenil si typ nehnuteľnosti na %s",DefaultName[listitem+5]);
SendClientMessage(playerid,-1,str);
}
return true;
}

if(dialogid == DIALOG_KABRIOLET_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"{FFAF00} Vystup z auta");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,480,75000,0,id);
case 1: BuyCar(playerid,533,100000,0,id);
case 2: BuyCar(playerid,439,125000,0,id);
case 3: BuyCar(playerid,555,115000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_MOTO_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,481,45000,0,id);
case 1: BuyCar(playerid,510,35000,0,id);
case 2: BuyCar(playerid,462,10000,0,id);
case 3: BuyCar(playerid,581,80000,0,id);
case 4: BuyCar(playerid,522,130000,0,id);
case 5: BuyCar(playerid,461,100000,0,id);
case 6: BuyCar(playerid,521,95000,0,id);
case 7: BuyCar(playerid,463,110000,0,id);
case 8: BuyCar(playerid,468,115000,0,id);
case 9: BuyCar(playerid,471,125000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_LOWRIDER_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,536,155000,0,id);
case 1: BuyCar(playerid,575,100000,0,id);
case 2: BuyCar(playerid,534,75000,0,id);
case 3: BuyCar(playerid,567,140000,0,id);
case 4: BuyCar(playerid,535,150000,0,id);
case 5: BuyCar(playerid,576,135000,0,id);
case 6: BuyCar(playerid,412,80000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_OFFROAD_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,568,100000,0,id);
case 1: BuyCar(playerid,424,125000,0,id);
case 2: BuyCar(playerid,579,79000,0,id);
case 3: BuyCar(playerid,400,65000,0,id);
case 4: BuyCar(playerid,500,55000,0,id);
case 5: BuyCar(playerid,557,175000,0,id);
case 6: BuyCar(playerid,505,140000,0,id);
case 7: BuyCar(playerid,495,110000,0,id);
}
}
return true;
}

if(dialogid == DIALOG_FAST_SHOP){
if(response){
new id = PlayerCP[playerid];
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid > 0) return SendClientMessage(playerid,-1,"Nemôžeš byť v aute !");
//BuyCar(playerid,model,cena,type = 1)
switch(listitem){
case 0: BuyCar(playerid,602,80000,0,id);
case 1: BuyCar(playerid,429,85000,0,id);
case 2: BuyCar(playerid,402,93000,0,id);
case 4: BuyCar(playerid,541,100000,0,id);
case 5: BuyCar(playerid,589,45000,0,id);
case 6: BuyCar(playerid,587,75000,0,id);
case 7: BuyCar(playerid,565,50000,0,id);
case 8: BuyCar(playerid,494,170000,0,id);
case 9: BuyCar(playerid,411,165000,0,id);
case 10:BuyCar(playerid,559,150000,0,id);
case 11:BuyCar(playerid,603,135000,0,id);
case 12:BuyCar(playerid,475,90000,0,id);
case 13:BuyCar(playerid,506,120000,0,id);
case 14:BuyCar(playerid,451,163000,0,id);
}
}
return true;
}


/*
#define DIALOG_KABRIOLET_SHOP 1320
#define DIALOG_MOTO_SHOP 1321
#define DIALOG_LOWRIDER_SHOP 1322
#define DIALOG_OFFROAD_SHOP 1323
#define DIALOG_FAST_SHOP 1324
*/
	return 1;
}//PlayerCP[playerid] = -1;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
if(newkeys == KEY_NO){
if(PlayerIN[playerid] != -1){
if(IsPlayerInRangeOfPoint(playerid,5,372.37, -130.13, 1001.49) || IsPlayerInRangeOfPoint(playerid,5,285.75,-38.40,1001.52)){
new id = PlayerIN[playerid];
PlayerIN[playerid] = -1;
PlayerCP[playerid] = id;
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPlayerPos(playerid,PropertyPos[id][0],PropertyPos[id][1],PropertyPos[id][2]);
}
}
}
return true;
}


public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
for(new i; i < MAX_PLAYER_CARS;i++){
if(vehicleid == ID[playerid][i]){
Color[playerid][i][0] = color1;
Color[playerid][i][1] = color2;
break;
}
}
	return 1;
}

forward Float:InfrontOf(playerid,&Float:x,&Float:y,Float:vzd);
Float:InfrontOf(playerid,&Float:x,&Float:y,Float:vzd)// by Y_Less
{
   new Float:a;
   new vehicleid = GetPlayerVehicleID(playerid);
   GetPlayerPos(playerid,x,y,a);
   if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(vehicleid,a);
   else GetPlayerFacingAngle(playerid,a);
   x += (vzd * floatsin(-a,degrees));
   y += (vzd * floatcos(-a,degrees));
   return a;
}

stock IsNumeric(const string[])
{
   new length=strlen(string);
   if (length==0) return false;
   for (new i = 0; i < length; i++)
   {
      if ((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')|| (string[i]=='-' && i!=0)|| (string[i]=='+' && i!=0)) return false;
   }
   if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
   return true;
}

stock DelChar(tstring[])
{
new ln = strlen(tstring);
if(tstring[ln-2] == '\r')tstring[ln-2] = '\0';
if(tstring[ln-1] == '\n')tstring[ln-1] = '\0';
}

stock fcreate(filename[])
{
    if (fexist(filename)){return false;}
    new File:fhandle = fopen(filename,io_write);
    fclose(fhandle);
    return true;
}

stock PlayerName(playerid){
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
return name;
}

stock sscanf(string[], format[], {Float,_}:...) // by Y_Less
{
	#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;
}
Edited by Totalka
Link to comment
Share on other sites

0 odpovědí na tuto otázku

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...