SA-MP Forums Archive
Problem With PPC_Business And JLAdmin - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Problem With PPC_Business And JLAdmin (/showthread.php?tid=522382)



Problem With PPC_Business And JLAdmin - TheRaGeLord - 27.06.2014

Hey Friends I Am Having Problem With PPC_Business And JLAdmin…..
And The Problem Is That After Typing /createbusiness When I Click On Any Business Type Like Bar, Disco, etc….
Then The Dialog Box Of JLAdmin Appears Which Says:-
“Please enter a another nick….Unacceptable NickName. Please only use (0-9, a-z, [], (), $, @, ., _ and=”
I When It Changed the JLDialogs Default Value From 2000 To 1000 or 5000
Then PPC_Business Dialogs Are Not Working I Mean Then When I select A Business Type Then Nothing Appears Nor Even Business Get Created…
I Need Your Help Friends…
JL Admin On DialogResponse Code:-
Code:
#define JDIALOGS 2000
Code:
if(dialogid == DIALOG_REGISTER)
	{
       if(response)
	   {
		      new Jfile[100],pIP[16],string[40],str[60],buf[145],year,month,day,hour,mins,sec;
		      new seconds = gettime() - pInfo[playerid][ConnectedTime] + pInfo[playerid][TotalSecs];
			  if(strlen(inputtext) < 3 || strlen(inputtext) > 20)
			  {
			  if(MustRegister == 1) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registration Error", "Enter the password:\n{FF0000}*Password length must be between 3 - 20 characters", "Register", "Kick");
			  else return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registration Error", "Enter the password:\n{FF0000}*Password length must be between 3 - 20 characters", "Register", "No Thanks");
			  }
		      getdate(year, month, day);
		      gettime(hour,mins,sec);
		      GetPlayerIp(playerid,pIP,16);
		      format(string, 40,"%d/%d/%d at %d:%d:%d", day,month,year,hour,mins,sec);
		      format(str, 60,"%d/%d/%d at %d:%d:%d", day,month,year,hour,mins,sec);
			  format(Jfile, 100, ACCOUNTS_PATH, GetName(playerid));
			  WP_Hash(buf, sizeof(buf),inputtext);
			  new INI:ACCOUNT = INI_Open(Jfile);
			  INI_WriteString(ACCOUNT, "RegisteredOn", string);
			  INI_WriteString(ACCOUNT, "RegisteredIP", pIP);
			  INI_WriteString(ACCOUNT, "LastLoggedIP", pIP);
			  INI_WriteString(ACCOUNT, "Password",buf);
			  INI_WriteInt(ACCOUNT, "Level", 0);
			  INI_WriteInt(ACCOUNT, "Banned", 0);
			  INI_WriteInt(ACCOUNT, "Donator", 0);
			  INI_WriteInt(ACCOUNT, "Score", START_SCORE);
			  INI_WriteInt(ACCOUNT, "Cash", START_CASH);
			  INI_WriteInt(ACCOUNT, "Kills", 0);
			  INI_WriteInt(ACCOUNT, "Deaths", 0);
			  INI_WriteInt(ACCOUNT, "Skin", 0);
			  INI_WriteInt(ACCOUNT, "Muted", 0);
			  INI_WriteInt(ACCOUNT, "Autologin", 1);
			  INI_WriteInt(ACCOUNT, "TotalSeconds", seconds);
			  INI_WriteString(ACCOUNT, "TotalSpentTime", ConvertTime(seconds,mins,hour,day));
			  INI_WriteString(ACCOUNT, "LastSeen", str);
			  INI_Close(ACCOUNT);
			  pInfo[playerid][Registered] = 1;
			  pInfo[playerid][Logged] = 1;
			  #if LoginTextDraw == true
			  TextDrawHideForPlayer(playerid, TEXT_PASSWORD);
			  TextDrawHideForPlayer(playerid, TEXT_REGISTER);
			  TextDrawHideForPlayer(playerid, TEXT_REGISTERED);
			  CancelSelectTextDraw(playerid);
			  #endif
			  format(Jstring, 125, "Your nickname has been successfully registered!  |  Account: \"%s\"  |  Password: %s", GetName(playerid), inputtext);
			  return SendClientMessage(playerid,0x008000C8,Jstring);
	   }
	   else if(MustRegister == 1)
	   {
	   		ShowPlayerDialog(playerid, JDIALOGS+45, DIALOG_STYLE_MSGBOX,"     {FB0404}You must register an account", "You must register an account if you wish to play on this server!", "Ok", "");
	  		SetTimerEx("KickPlayer",200,false,"d", playerid);
	   }
	}
	if(dialogid == DIALOG_LOGIN)
	{
       if(response)
	   {
		      new Jfile[100],pIP[16],buf[145];
			  format(Jfile, 60, ACCOUNTS_PATH, GetName(playerid));
			  INI_ParseFile(Jfile, "GetPassword", .bExtra = true, .extra = playerid);
			  WP_Hash(buf, sizeof(buf),inputtext);
			  if(strcmp(pInfo[playerid][Password], buf, false) == 0)
			  {
                   format(Jfile, 100, ACCOUNTS_PATH, GetName(playerid));
                   INI_ParseFile(Jfile, "LoginPlayer", .bExtra = true, .extra = playerid);
			       SendClientMessage(playerid,green,"You have been succesfully logged In!");
			       SetPlayerScore(playerid, pInfo[playerid][Score]);
			       GivePlayerMoney(playerid, pInfo[playerid][Cash]);
			       pInfo[playerid][Logged] = 1;
			       GetPlayerIp(playerid,pIP,16);
			       format(Jfile, 100, ACCOUNTS_PATH, GetName(playerid));
				   new INI:ACCOUNT = INI_Open(Jfile);
				   INI_WriteString(ACCOUNT, "LastLoggedIP", pIP);
				   INI_Close(ACCOUNT);
				   #if LoginTextDraw == true
				   TextDrawHideForPlayer(playerid, TEXT_PASSWORD);
				   TextDrawHideForPlayer(playerid, TEXT_REGISTER);
				   TextDrawHideForPlayer(playerid, TEXT_REGISTERED);
				   CancelSelectTextDraw(playerid);
				   #endif
              }
              else
			  {
	              pInfo[playerid][LoginAttempts]++;
				  if(pInfo[playerid][LoginAttempts] >= MAX_LOGIN_ATTEMPTS)
				  {
	                  format(Jstring, sizeof(Jstring),"%s has been automatically kicked | Reason: 'Incorrect password'", GetName(playerid));
	                  SendToAdmins(orange,Jstring);
	                  ShowPlayerDialog(playerid, JDIALOGS+45, DIALOG_STYLE_MSGBOX, "WARRING","You have been automatically kicked | Reason: 'Incorrect password'", "Ok", "");
				      SetTimerEx("KickPlayer",100,false,"d",playerid);
				      return 1;
				  }
				  format(Jstring, sizeof(Jstring),"Account \"%s\"\nEnter your password to login\n{FF0000}*Incorrect password", GetName(playerid));
				  ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Account Login error",Jstring, "Login", "Quit");
			  }
	   }
	   #if LoginTextDraw == false
	   else SetTimerEx("KickPlayer",100,false,"d",playerid);
	   #endif
	}
	if (dialogid == DIALOG_PRIVATE_MESSAGE)
	{
 		if(response)
	    {
            new id;
            id = pInfo[playerid][Clicked];
     		if (strlen(inputtext) < 1) return ShowPlayerDialog(playerid,DIALOG_PRIVATE_MESSAGE,DIALOG_STYLE_INPUT,"Private Message","Type your message:\n{FF0000}*Message can NOT be empty","Send","Cancel");
            return OnPrivateMessage(playerid, id, inputtext);
		}
		return 1;
	}
	if(dialogid == JDIALOGS+201)
	{
       if(response)
	   {
            new string[128];
            GetPVarString(playerid, "SpamMsg", string, 128);
            CommandToAdmins(playerid,"Spam");
            switch(listitem)
            {
               case 0: for(new msg; msg < 50; msg++) SendClientMessageToAll(yellow,string);
               case 1: for(new msg; msg < 50; msg++) SendClientMessageToAll(white,string);
               case 2: for(new msg; msg < 50; msg++) SendClientMessageToAll(blue,string);
               case 3: for(new msg; msg < 50; msg++) SendClientMessageToAll(red,string);
               case 4: for(new msg; msg < 50; msg++) SendClientMessageToAll(green,string);
               case 5: for(new msg; msg < 50; msg++) SendClientMessageToAll(orange,string);
               case 6: for(new msg; msg < 50; msg++) SendClientMessageToAll(purple,string);
               case 7: for(new msg; msg < 50; msg++) SendClientMessageToAll(pink,string);
               case 8: for(new msg; msg < 50; msg++) SendClientMessageToAll(brown,string);
               case 9: for(new msg; msg < 50; msg++) SendClientMessageToAll(black,string);
            }
	   }
	}
	if(dialogid == JDIALOGS+202)
	{
       if(response)
	   {
            new string[128];
            GetPVarString(playerid, "SpamMsg", string, 128);
            CommandToAdmins(playerid,"Write");
            switch(listitem)
            {
               case 0: SendClientMessageToAll(yellow,string);
               case 1: SendClientMessageToAll(white,string);
               case 2: SendClientMessageToAll(blue,string);
               case 3: SendClientMessageToAll(red,string);
               case 4: SendClientMessageToAll(green,string);
               case 5: SendClientMessageToAll(orange,string);
               case 6: SendClientMessageToAll(purple,string);
               case 7: SendClientMessageToAll(pink,string);
               case 8: SendClientMessageToAll(brown,string);
               case 9:SendClientMessageToAll(black,string);
            }
	   }
	}
	if(dialogid == JDIALOGS+203)
	{
       if(response)
	   {
          switch(listitem)
          {
	            case 0:
	            {
	               SetPlayerFightingStyle (GetPVarInt(playerid,"player"), FIGHT_STYLE_NORMAL);
	               format(Jstring,sizeof(Jstring),"You have set %s's fighting style to Nomal fighting style",GetName(GetPVarInt(playerid,"player")));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your fighting style to Nomal fighting style",GetName(playerid));
	               if(playerid != GetPVarInt(playerid,"player"))SendClientMessage(GetPVarInt(playerid,"player"),orange,Jstring);
	            }
	            case 1:
	            {
	               SetPlayerFightingStyle (GetPVarInt(playerid,"player"), FIGHT_STYLE_BOXING);
	               format(Jstring,sizeof(Jstring),"You have set %s's fighting style to Boxing fighting style",GetName(GetPVarInt(playerid,"player")));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your fighting style to Boxing fighting style",GetName(playerid));
	               if(playerid != GetPVarInt(playerid,"player"))SendClientMessage(GetPVarInt(playerid,"player"),orange,Jstring);
	            }
	            case 2:
	            {
	               SetPlayerFightingStyle (GetPVarInt(playerid,"player"), FIGHT_STYLE_KUNGFU);
	               format(Jstring,sizeof(Jstring),"You have set %s's fighting style to KungFu fighting style",GetName(GetPVarInt(playerid,"player")));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your fighting style to KungFu fighting style",GetName(playerid));
	               if(playerid != GetPVarInt(playerid,"player"))SendClientMessage(GetPVarInt(playerid,"player"),orange,Jstring);
	            }
	            case 3:
	            {
	               SetPlayerFightingStyle (GetPVarInt(playerid,"player"), FIGHT_STYLE_KNEEHEAD);
	               format(Jstring,sizeof(Jstring),"You have set %s's fighting style to Kneehead fighting style",GetName(GetPVarInt(playerid,"player")));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your fighting style to Kneehead fighting style",GetName(GetPVarInt(playerid,"player")));
	               if(playerid != GetPVarInt(playerid,"player"))SendClientMessage(GetPVarInt(playerid,"player"),orange,Jstring);
	            }
	            case 4:
				{
	               SetPlayerFightingStyle (GetPVarInt(playerid,"player"), FIGHT_STYLE_GRABKICK);
	               format(Jstring,sizeof(Jstring),"You have set '%s' fighting style to Grabkick fighting style",GetName(playerid));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your fighting style to Grabkick fighting style",GetName(GetPVarInt(playerid,"player")));
	               if(playerid != GetPVarInt(playerid,"player"))SendClientMessage(GetPVarInt(playerid,"player"),orange,Jstring);
				}
				case 5:
				{
				   SetPlayerFightingStyle (GetPVarInt(playerid,"player"), FIGHT_STYLE_ELBOW);
				   format(Jstring,sizeof(Jstring),"You have set %s's fighting style to Elbow fighting style",GetName(GetPVarInt(playerid,"player")));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin %s's has set your fighting style to Elbow fighting style",GetName(playerid));
	               if(playerid != GetPVarInt(playerid,"player"))SendClientMessage(GetPVarInt(playerid,"player"),orange,Jstring);
				}
		   }
	   }
	}
	if(dialogid == JDIALOGS+205)
	{
       if(response)
	   {
           new id = GetPVarInt(playerid, "TargetID");
           switch(listitem)
           {
	            case 0:
	            {
	               SetPlayerColor(id,yellow);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'YELLOW'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'YELLOW'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 1:
	            {
	               SetPlayerColor(id,white);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'WHITE'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'WHITE'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 2:
	            {
	               SetPlayerColor(id,blue);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'BLUE'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'BLUE'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 3:
	            {
	               SetPlayerColor(id,red);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'RED'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'RED'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 4:
	            {
	               SetPlayerColor(id,green);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'GREEN'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'GREEN'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 5:
	            {
	               SetPlayerColor(id,orange);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'ORANGE'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'ORANGE'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 6:
	            {
	               SetPlayerColor(id,purple);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'PURPLE'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'PURPLE'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 7:
	            {
	               SetPlayerColor(id,pink);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'PINK'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'PINK'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 8:
	            {
	               SetPlayerColor(id,brown);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'BROWN'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'BROWN'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
	            case 9:
	            {
	               SetPlayerColor(id,black);
	               format(Jstring,sizeof(Jstring),"You have set %s' colour to 'BLACK'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               format(Jstring,sizeof(Jstring),"Admin '%s' has set your colour to 'BLACK'",GetName(playerid));
	               if(playerid != id)SendClientMessage(id,orange,Jstring);
	            }
		   }
	   }
	}
	if(dialogid == JDIALOGS+1)
	{
       if(response)
	   {
         new file[256],pIP[16];
         if(InvalidNick(inputtext)) return ShowPlayerDialog(playerid, JDIALOGS+1, DIALOG_STYLE_INPUT,"Registration error", "Please enter a another nick\n{FF0000}*Unacceptable NickName. Please only use (0-9, a-z, [], (), $, @, ., _ and =)", "Next", "No Thanks");
         format(file, 128, ACCOUNTS_PATH, inputtext);
         if(!fexist(file))
		 {
            SetPlayerName(playerid,inputtext);
            ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Register an account!", "Enter password:", "Register", "No Thanks");
            GetPlayerIp(playerid,pIP,16);
            format(file,sizeof(file),"JLadmin/Logs/aka.ini");
			INI_ParseFile(file,"GetAkaLog");
			if(strfind(aka, GetName(playerid), true) == -1)
			{
                    format(file,sizeof(file),"JLadmin/Logs/aka.ini");
					format(Jstring,sizeof(Jstring),"%s,%s", aka, GetName(playerid));
					new INI:AKA = INI_Open(file);
					INI_WriteString(AKA, pIP, Jstring);
					INI_Close(AKA);
		    }
		 }
		 else return ShowPlayerDialog(playerid, JDIALOGS+1, DIALOG_STYLE_INPUT,"Registration error", "Please enter a another nick\n{FF0000}*You entered nick name is already using someone else", "Next", "No Thanks");
	   }
	}
	if(dialogid == JDIALOGS+4)
	{
       if(response)
	   {
         new file[128];
         format(file, 128, ACCOUNTS_PATH, GetName(playerid));
         if(fexist(file))
		 {
            switch(listitem)
			{
	            case 0:
	            {
	                new INI:ACCOUNT = INI_Open(file);
		            INI_WriteInt(ACCOUNT, "Autologin", 1);
				    INI_Close(ACCOUNT);
				    return ShowPlayerDialog(playerid, JDIALOGS+204, DIALOG_STYLE_MSGBOX,"Auto login enabled!", "{00FFFF}You have successfully enabled your account auto login system by IP!", "Ok", "");
				}
				case 1:
	            {
	                new INI:ACCOUNT = INI_Open(file);
		            INI_WriteInt(ACCOUNT, "Autologin", 0);
				    INI_Close(ACCOUNT);
				    return ShowPlayerDialog(playerid, JDIALOGS+204, DIALOG_STYLE_MSGBOX,"Auto login disabled!", "{00FFFF}You have disabled your account auto login system!", "Ok", "");
				}
			}
		 }
		 else return ShowPlayerDialog(playerid, JDIALOGS+204, DIALOG_STYLE_MSGBOX,"Error", "{FF0000}You are not registered", "Ok", "");
	   }
	}
	if(dialogid == JDIALOGS+5)
	{
       if(response)
	   {
            switch(listitem)
			{
	            case 0:
	            {
			        new id;
			        id = pInfo[playerid][Clicked];
					if(IsPlayerConnected(id))
					{
					     format(Jstring,sizeof(Jstring),"PM To %s(ID: %d) Type your message:", GetName(id), id);
			             return ShowPlayerDialog(playerid,DIALOG_PRIVATE_MESSAGE,DIALOG_STYLE_INPUT,"Private Message",Jstring,"Send","Cancel");
					}
					else return ShowMessage(playerid, red, 2);
	            }
	            case 1:
	            {
	                new id, h, m, d;
	                id = pInfo[playerid][Clicked];
					if(IsPlayerConnected(id))
					{
	                     new seconds = gettime() - pInfo[id][ConnectedTime] + pInfo[id][TotalSecs];
			             format(Jstring, sizeof(Jstring), "_Statistics for '%s'_",GetName(id));
						 SendClientMessage(playerid, green, Jstring);
			             format(Jstring, sizeof(Jstring), "Score: %d | Money: $%d | Kills: %d | Deaths: %d | Ratio: %0.2f | Total spent Time: %s", GetPlayerScore(id), GetPlayerMoney(id), pInfo[id][Kills], pInfo[id][Deaths], Float:pInfo[id][Kills]/Float:pInfo[id][Deaths], ConvertTime(seconds,m,h,d));
						 return SendClientMessage(playerid, yellow, Jstring);
				    }
		            else return ShowMessage(playerid, red, 2);
	            }
	            case 2:
	            {
	               new id, WeapName[32], slot, weap, ammo, model , Float:Health , Float:Armour,Float:Vheath,Count = 0;
	               id = pInfo[playerid][Clicked];
	               if(IsPlayerConnected(id))
				   {
	                    GetPlayerArmour(id,Armour);
						GetPlayerHealth(id,Health);
						format(Jstring, sizeof(Jstring), "__Informations for: %s(%d)__",GetName(id) ,id);
						SendClientMessage(playerid, green, Jstring);
						if(IsPlayerInAnyVehicle(id))
						{
						GetVehicleHealth(GetPlayerVehicleID(id), Vheath);
						model = GetVehicleModel(GetPlayerVehicleID(id));
						format(Jstring, sizeof(Jstring), "Health: %0.1f | Armour: %0.1f | Ratio: %0.2f | Ping: %d | Current vehicle: %s(Model: %d) | Vehicle health: %0.1f", Health , Armour,   Float:pInfo[id][Kills]/Float:pInfo[id][Deaths],GetPlayerPing(id),VehicleNames[model-400],model,Vheath);
						}
						else
						format(Jstring, sizeof(Jstring), "Health: %0.1f | Armour: %0.1f | Kills: %d | Deaths: %d |Ratio: %0.2f | Ping: %d", Health , Armour, pInfo[id][Kills],pInfo[id][Deaths], Float:pInfo[id][Kills]/Float:pInfo[id][Deaths],GetPlayerPing(id));
						SendClientMessage(playerid, orange, Jstring);
						for(slot = 0; slot < 13; slot++)
						{
				            GetPlayerWeaponData(id, slot, weap, ammo);
							if( ammo != 0 && weap != 0)
							Count++;
						}
						if(Count == 0)
						{
							format(Jstring, sizeof(Jstring), "%s has no weapons!",GetName(id));
							return SendClientMessage(playerid,green,Jstring);
						}
						else
						{
							format(Jstring, sizeof(Jstring), "__%s's weapons__",GetName(id));
							SendClientMessage(playerid,red,Jstring);
						}
						if(Count >= 1)
						{
						   for (slot = 0; slot < 13; slot++)
						   {
						       GetPlayerWeaponData(id, slot, weap, ammo);
							   if( ammo != 0 && weap != 0)
							   {
					               GetWeaponName(weap, WeapName, sizeof(WeapName));
								   format(Jstring,sizeof(Jstring),"%s (%d)", WeapName, ammo);
								   SendClientMessage(playerid, orange, Jstring);
							   }
						   }
			            }
						return 1;
			       }
			       else return ShowMessage(playerid, red, 2);
	            }
	            case 3:
	            {
	               ShowPlayerDialog(playerid,JDIALOGS+46,DIALOG_STYLE_INPUT,"Report","Enter the reason:","Report","Close");
	            }
	            case 4:
				{
	               if(pInfo[playerid][pLevel] >= 1)
				   {
	                   new id,Float:P[3],Float:H,Float:A;
	                   id = pInfo[playerid][Clicked];
					   if(!IsPlayerConnected(id) || playerid == id) return ShowMessage(playerid, red, 3);
					   #if SpecTextDraw == true
					   TextDrawShowForPlayer(playerid, SpecGTD);
					   PlayerTextDrawShow(playerid, SpecPTD);
					   UpdteSpecTD(playerid,id);
					   #endif
					   if (pInfo[playerid][Spec] == 0)
					   {
					       GetPlayerHealth(playerid, H);
						   GetPlayerArmour(playerid,A);
						   SetPVarInt(playerid,"Int",GetPlayerInterior(playerid));
						   SetPVarInt(playerid,"vworld",GetPlayerVirtualWorld(playerid));
						   GetPlayerPos(playerid,P[0],P[1],P[2]);
						   SetPVarFloat(playerid,"JX",P[0]);
						   SetPVarFloat(playerid,"JY",P[1]);
						   SetPVarFloat(playerid,"JZ",P[2]);
						   SetPVarFloat(playerid,"Health",H);
						   SetPVarFloat(playerid,"Armour",A);
						   StoreWeaponsData(playerid);
			           }
					   pInfo[playerid][Spec] = 1;
					   Specid[playerid] = id;
					   SetPlayerInterior(playerid,GetPlayerInterior(id));
					   SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(id));
					   if (IsPlayerInAnyVehicle(id))
					   {
					      TogglePlayerSpectating(playerid, 1);
						  PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
					   }
					   else
					   {
					      TogglePlayerSpectating(playerid, 1);
						  PlayerSpectatePlayer(playerid, id);
					   }
			           SendClientMessage(playerid,lighterblue,"You are now spectating!");
	               }
	            }
				case 5:
				{
				   new id,Float:Pos[3];
				   id = pInfo[playerid][Clicked];
		           if(IsPlayerConnected(id) && id != playerid)
		           {
				         GetPlayerPos(id,Pos[0],Pos[1],Pos[2]);
						 SetPlayerInterior(playerid,GetPlayerInterior(id));
						 SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
						 if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
						 {
						    SetVehiclePos(GetPlayerVehicleID(playerid),Pos[0]+3,Pos[1],Pos[2]);
							LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(id));
							SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(id));
					     }
					     else SetPlayerPos(playerid,Pos[0]+3,Pos[1],Pos[2]);
					     format(Jstring,sizeof(Jstring),"You have been Teleported to '%s'", GetName(id));
					     SendClientMessage(playerid,yellow,Jstring);
						 return 1;
				   }
				   else return ShowMessage(playerid, red, 3);
				}
				case 6:
				{
			        new id,Ffile[128],string[128];
			        id = pInfo[playerid][Clicked];
				 	if(IsPlayerConnected(id))
				    {
			            strdel(aka,0,256);
	            		CommandToAdmins(playerid,"aka");
			  		  	GetPlayerIp(id,playerIP,16);
			  		  	format(Ffile,sizeof(Ffile),"JLadmin/Logs/aka.ini");
			  		  	INI_ParseFile(Ffile,"GetAkaLog");
						format(Jstring,sizeof(Jstring),"__Player %s(ID: %d)'s Nick names__", GetName(id), id);
			   	        SendClientMessage(playerid,green,Jstring);
					    if(strlen(aka) > 70)
						{
					        strmid(string,aka,0,75);
					        format(Jstring,sizeof(Jstring),"IP: %s - Nicks: %s", playerIP , string);
							SendClientMessage(playerid,yellow,Jstring);
							strmid(string,aka,75,sizeof(aka));
							format(Jstring, sizeof(Jstring),"%s", string);
							SendClientMessage(playerid,yellow,Jstring);
						}
						else
						{
						    format(string,sizeof(string),"IP: %s - Nicks: %s", playerIP, aka);
							SendClientMessage(playerid,yellow,string);
					    }
				        return 1;
					}
					else return ShowMessage(playerid, red, 2);
				}
				case 7:
				{
			        new id;
			        id = pInfo[playerid][Clicked];
			        if(IsPlayerConnected(id) && id != playerid)
			        {
			            if(pInfo[id][Muted] == 1) return SendClientMessage(playerid,red,"This player is already muted. see /muted");
			            if(pInfo[playerid][pLevel] <= pInfo[id][pLevel]) return ShowMessage(playerid, red, 6);
						format(Jstring,sizeof(Jstring),"Administrator %s has muted '%s'",GetName(playerid),GetName(id));
					    SendClientMessageToAll(red,Jstring);
					    pInfo[id][Muted] = 1;
						return 1;
					}
					else return ShowMessage(playerid, red, 3);
				}
				case 8:
				{
			        new id;
			        id = pInfo[playerid][Clicked];
			        if(IsPlayerConnected(id))
			        {
			            if(pInfo[id][Muted] == 0) return SendClientMessage(playerid,red,"This player is not muted muted");
			            format(Jstring,sizeof(Jstring),"You have unmuted '%s'",GetName(id));
						SendClientMessage(playerid,yellow,Jstring);
						format(Jstring,sizeof(Jstring),"Administrator %s has unmuted you!",GetName(playerid));
						SendClientMessage(id,yellow,Jstring);
					    pInfo[id][Muted] = 0;
						KillTimer(Mtimer[id]);
						CommandToAdmins(playerid,"unmute");
						return 1;
					}
					else return ShowMessage(playerid, red, 3);
				}
				case 9:
				{
			        new id,ip[16], WeapName[32], slot, weap, ammo, model , seconds, Float:x,Float:y,Float:z, Float:Health ,Float:Ratio, Float:Armour,Float:Vheath,Count,Logg[5],Reg[5],pMuted[5],pJailed[5],pFrozen[5],Jfile[100],PlayerState[40],Seat[25];
			        id = pInfo[playerid][Clicked];
				 	if(IsPlayerConnected(id))
				    {
			            GetPlayerArmour(id,Armour);
						GetPlayerHealth(id,Health);
						GetPlayerIp(id, ip, sizeof(ip));
						GetPlayerPos(id,x,y,z);
						seconds = gettime() - pInfo[playerid][ConnectedTime] + pInfo[playerid][TotalSecs];
						format(Jfile, sizeof(Jfile), ACCOUNTS_PATH, GetName(id));
			            if(fexist(Jfile))
			            INI_ParseFile(Jfile,"AccountsEditor");
			            else
						{
			            	RegisteredDate = "None"; RegisteredIP = "None"; LastSeen = "None";
			            }
						if(pInfo[playerid][Deaths] > 0)
						{
							Ratio = Float:pInfo[id][Kills]/ Float:pInfo[id][Deaths];
						}
						else
						{
							Ratio = Float:pInfo[id][Kills]/ Float:pInfo[id][Deaths]+1;
						}
						if(pInfo[id][Registered] == 1) Reg = "Yes"; else Reg = "No";
						if(pInfo[id][Logged] == 1) Logg = "Yes"; else Logg = "No";
						if(pInfo[id][Muted] == 1) pMuted = "Yes"; else pMuted = "No";
						if(pInfo[id][Jailed] == 1) pJailed = "Yes"; else pJailed = "No";
						if(pInfo[id][Frozen] == 1) pFrozen = "Yes"; else pFrozen = "No";
						if (IsPlayerConnected(id))
				        {
				        switch(pInfo[id][pLevel])
			              {
			                  case 0: {
							  LevelName = "Player Stauts";
							  LevelColor = "{FFFFFF}";
							  }
						      case 1: {
							  LevelName = ADMIN_LEVEL_1;
							  LevelColor = LEVEL_1_COLOR;
							  }
							  case 2: {
							  LevelName = ADMIN_LEVEL_2;
							  LevelColor = LEVEL_2_COLOR;
							  }
							  case 3: {
							  LevelName = ADMIN_LEVEL_4;
							  LevelColor = LEVEL_3_COLOR;
							  }
							  case 4: {
							  LevelName = ADMIN_LEVEL_3;
							  LevelColor = LEVEL_4_COLOR;
							  }
							  case 5: {
							  LevelName = ADMIN_LEVEL_5;
							  LevelColor = LEVEL_5_COLOR;
							  }
							  default: {
							  LevelName = ADMIN_LEVEL_6;
							  LevelColor = LEVEL_6_COLOR;
							  }
				          }
				          switch(GetPlayerState(id))
			              {
			                  case 0: {
							  PlayerState = "Empty (while initializing)";
							  }
						      case 1: {
							  PlayerState = "Player is on foot";
							  }
							  case 2: {
							  PlayerState = "Player is driver of a vehicle";
							  }
							  case 3: {
							  PlayerState = "Player is passenger of a vehicle";
							  }
							  case 4: {
							  PlayerState = "Player exits a vehicle";
							  }
							  case 5: {
							  PlayerState = "Player enters a vehicle as driver";
							  }
							  case 6: {
							  PlayerState = "Player enters a vehicle as passenger";
							  }
							  case 7: {
							  PlayerState = "Player is wasted or on class selection";
							  }
							  case 8: {
							  PlayerState = "Player is spawned";
							  }
							  case 9: {
							  PlayerState = "Player is spectating";
							  }
				          }
				          switch(GetPlayerVehicleSeat(id))
			              {
			                  case 0: {
							  Seat = "Driver";
							  }
						      case 1: {
							  Seat = "Front Passenger";
							  }
							  case 2: {
							  Seat = "Back left passenger";
							  }
							  case 3: {
							  Seat = "Back right passenger";
							  }
							  case 4: {
							  Seat = "Passenger seats";
							  }
				          }
					    }
						strdel(VLstring,0,850);
			            format(Jstring, sizeof(Jstring), "{0000FF}Nick name: %s (ID: %d) | IP: %s | Score: %d | Cash: $ %d | Kills: %d | Deaths: %d | Ratio: %0.1f\n\n",GetName(id) ,id,ip,GetPlayerScore(id),GetPlayerMoney(id),pInfo[id][Kills], pInfo[id][Deaths],Ratio);
			            strcat(VLstring, Jstring, sizeof(VLstring));
			            format(Jstring, sizeof(Jstring), "{0DF224}Health: %0.1f | Armour: %0.1f | Ping: %d | Admin level:%s %s (%d) | Donator Level(V.I.P): %d\n\n",Health ,Armour,GetPlayerPing(id),LevelColor,LevelName,pInfo[id][pLevel],pInfo[id][Donator],GetPlayerWantedLevel(id));
						strcat(VLstring, Jstring, sizeof(VLstring));
						format(Jstring, sizeof(Jstring), "{C837B9}Interior: %d | Virtual World: %d | Position: X = %0.3f, Y = %0.3f, Z = %0.3f | Skin: %d | Wanted Level: %d\n\n",GetPlayerInterior(id) ,GetPlayerVirtualWorld(id),x,y,z,GetPlayerSkin(id),GetPlayerWantedLevel(id));
						strcat(VLstring, Jstring, sizeof(VLstring));
						format(Jstring, sizeof(Jstring), "{F79709}Registered: %s | Logged: %s | Muted: %s | Jailed: %s | Frozen: %s | Last seen: %s\n\n",Reg ,Logg,pMuted,pJailed,pFrozen,LastSeen);
						strcat(VLstring, Jstring, sizeof(VLstring));
						format(Jstring, sizeof(Jstring), "{59A661}Registered Date: %s | Registered IP: %s | Time spent: %s\n\n",RegisteredDate ,RegisteredIP,ConvertTime(seconds,slot,weap,ammo));
			            strcat(VLstring, Jstring, sizeof(VLstring));
			            if(IsPlayerInAnyVehicle(id))
						{
							GetVehicleHealth(GetPlayerVehicleID(id), Vheath);
							model = GetVehicleModel(GetPlayerVehicleID(id));
							format(Jstring, sizeof(Jstring), "{FFFF80}Current vehicle: %s (Model ID: %d) | Vehicle health: %0.1f | Seat: %s\n\n", VehicleNames[model-400],model,Vheath,Seat);
							strcat(VLstring, Jstring, sizeof(VLstring));
						}
						for(slot = 0; slot < 13; slot++)
						{
						   GetPlayerWeaponData(id, slot, weap, ammo);
						   if( ammo != 0 && weap != 0)
						   Count++;
						}
				        if(Count >= 1)
					    {
			                format(Jstring, sizeof(Jstring), "{FF0000}Player weapons: ",GetName(id));
			                strcat(VLstring, Jstring, sizeof(VLstring));
							for (slot = 0; slot < 13; slot++)
							{
							     GetPlayerWeaponData(id, slot, weap, ammo);
							     if( ammo != 0 && weap != 0)
							     {
							        GetWeaponName(weap, WeapName, sizeof(WeapName));
							        format(Jstring,sizeof(Jstring),"| %s (%d) ", WeapName, ammo);
							        strcat(VLstring, Jstring, sizeof(VLstring));
				                 }
			                }
			            }
			            format(Jstring, sizeof(Jstring), "\n\nPlayer state: %s", PlayerState);
						strcat(VLstring, Jstring, sizeof(VLstring));
						ShowPlayerDialog(playerid, JDIALOGS+45, DIALOG_STYLE_MSGBOX,"     {FB0404}Player Informations", VLstring, "Ok", "");
						strdel(VLstring,0,850);
			            return 1;
					}
					else return ShowMessage(playerid, red, 2);
				}
				case 10:
				{
			        return ShowPlayerDialog(playerid,JDIALOGS+117,DIALOG_STYLE_INPUT,"Warn","Enter the reason:","Kick","Cancel");
				}
				case 11:
				{
			        return ShowPlayerDialog(playerid,JDIALOGS+47,DIALOG_STYLE_INPUT,"Kick Player","Enter the reason:","Kick","Cancel");
				}
				case 12:
				{
			        return ShowPlayerDialog(playerid,JDIALOGS+48,DIALOG_STYLE_INPUT,"Ban Player","Enter the reason:","Ban","Cancel");
				}
			}
	   }
	}
	new string[128],NickName[24],Jfile[100];
	if(dialogid == JDIALOGS+7)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Rename", NickName);
	                 ShowPlayerDialog(playerid,JDIALOGS+110,DIALOG_STYLE_INPUT,"Rename Account","Enter the new nick name:","Change","Back");
	            }
	            case 1:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Registered Date", NickName);
					 format(string, 128, "Player Registered on %s", RegisteredDate);
		  			 ShowPlayerDialog(playerid,JDIALOGS+9,DIALOG_STYLE_MSGBOX,Jstring,string,"Back","");
				}
				case 2:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Registered IP", NickName);
					 format(string, 128, "Player Registered with IP: %s", RegisteredIP);
		  			 ShowPlayerDialog(playerid,JDIALOGS+10,DIALOG_STYLE_MSGBOX,Jstring,string,"Back","");
				}
				case 3:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Last logged IP", NickName);
					 format(string, 128, "Player last time used(logged in) IP: %s", LastLoggedIP);
		  			 ShowPlayerDialog(playerid,JDIALOGS+11,DIALOG_STYLE_MSGBOX,Jstring,string,"Back","");
				}
				case 4:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Change level", NickName);
		  			 ShowPlayerDialog(playerid,JDIALOGS+12,DIALOG_STYLE_LIST,Jstring,"Level 0\n"LEVEL_1_COLOR"Level 1\n"LEVEL_2_COLOR"Level 2\n"LEVEL_3_COLOR"Level 3\n"LEVEL_4_COLOR"Level 4\n"LEVEL_5_COLOR"Level 5\n{FF0000}>>Enter level","Select","Back");
				}
				case 5:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Donator level", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+13,DIALOG_STYLE_LIST,Jstring,"Donator(V.I.P) Level 0\nDonator(V.I.P) Level 1\nDonator(V.I.P) Level 2\nDonator(V.I.P) Level 3","Select","Back");
				}
				case 6:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Ban/Unban", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+14,DIALOG_STYLE_LIST,Jstring,"{0000FF}UNBAN\n{FF0000}BAN","Select","Back");
				}
				case 7:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Mute/Unmute level", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+15,DIALOG_STYLE_LIST,Jstring,"{0000FF}Unmute\n{FF0000}Mute","Select","Back");
				}
				case 8:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Score", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+16,DIALOG_STYLE_INPUT,Jstring,"Enter new Score:","Done","Back");
				}
				case 9:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Cash", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+17,DIALOG_STYLE_INPUT,Jstring,"Enter new Cash:","Done","Back");
				}
				case 10:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Kills", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+18,DIALOG_STYLE_INPUT,Jstring,"Enter new Kills:","Done","Back");
				}
				case 11:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Kills", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+19,DIALOG_STYLE_INPUT,Jstring,"Enter new Deaths:","Done","Back");
				}
				case 12:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Ratio", NickName);
					 format(string, 128, "Player Kills: %d\nPlayer deaths: %d\nPlayer Ratio: %0.2f", AccKills,AccDeaths,Float:AccKills/Float:AccDeaths);
		  			 ShowPlayerDialog(playerid,JDIALOGS+20,DIALOG_STYLE_MSGBOX,Jstring,string,"Back","");
				}
				case 13:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Favorite skin", NickName);
					 format(string, 128, "Player favorite Skin is %d", AccSkin);
		  			 ShowPlayerDialog(playerid,JDIALOGS+21,DIALOG_STYLE_MSGBOX,Jstring,string,"Edit","Back");
				}
				case 14:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Auto login", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+22,DIALOG_STYLE_LIST,Jstring,"{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 15:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: total played secs", NickName);
					 format(string, 128, "Player total played seconds: %d\n{FF0000}*Not recommend to edit.", AccTotalSecs);
		  			 ShowPlayerDialog(playerid,JDIALOGS+23,DIALOG_STYLE_MSGBOX,Jstring,string,"Edit","Back");
				}
				case 16:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Last seen", NickName);
					 format(string, 128, "Last seen on %s", LastSeen);
		  			 ShowPlayerDialog(playerid,JDIALOGS+24,DIALOG_STYLE_MSGBOX,Jstring,string,"Back","");
				}
				case 17:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 INI_ParseFile(Jfile,"AccountsEditor");
					 format(Jstring, 128, "%s: Total Spent time", NickName);
					 format(string, 128, "Player Total ingame spent time: %s", AccPlayedTime);
		  			 ShowPlayerDialog(playerid,JDIALOGS+25,DIALOG_STYLE_MSGBOX,Jstring,string,"Back","");
				}
				case 18:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: PassWord", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+109,DIALOG_STYLE_INPUT,Jstring,"Enter the new password:","Change","Back");
				}
			}
   		}
	}
	if(dialogid == JDIALOGS+9)
	{
		if(response)
		{
           return AccountEditor(playerid);
		}
	}
	if(dialogid == JDIALOGS+10)
	{
		if(response)
		{
           return AccountEditor(playerid);
		}
	}
	if(dialogid == JDIALOGS+11)
	{
		if(response)
		{
           return AccountEditor(playerid);
		}
	}
	if(dialogid == JDIALOGS+12)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Level", 0);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
	            }
	            case 1:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Level", 1);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 2:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Level", 2);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 3:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Level", 3);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 4:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Level", 4);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 5:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Level", 5);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 6:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jstring, 128, "%s: Change level", NickName);
					 ShowPlayerDialog(playerid,JDIALOGS+26,DIALOG_STYLE_INPUT,Jstring,"{FF0000}Enter new level:","Change","Back");
				}
			}
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+13)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Donator", 0);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
	            }
	            case 1:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Donator", 1);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 2:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Donator", 2);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
				case 3:
				{
					 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Donator", 3);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
		    }
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+14)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Banned", 0);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
	            }
	            case 1:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Banned", 1);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
		    }
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+15)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Muted", 0);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
	            }
	            case 1:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Muted", 1);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
			}
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+16)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Score", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+16,DIALOG_STYLE_INPUT,Jstring,"Enter new Score:\n{FF0000}*Score must be a nemeric value","Save","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "Score", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+17)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Cash", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+17,DIALOG_STYLE_INPUT,Jstring,"Enter new Cash:\n{FF0000}*Cash must be a nemeric value","Save","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "Cash", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+18)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Kills", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+18,DIALOG_STYLE_INPUT,Jstring,"Enter new Kills:\n{FF0000}*Kills must be a nemeric value","Save","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "Kills", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+19)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Death", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+19,DIALOG_STYLE_INPUT,Jstring,"Enter new Deaths:\n{FF0000}*Deaths must be a nemeric value","Save","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "Deaths", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+20)
	{
		if(response)
		{
			return AccountEditor(playerid);
		}
	}
	if(dialogid == JDIALOGS+21)
	{
		if(response)
		{
            GetPVarString(playerid, "AccountName", NickName, 24);
            format(Jstring, 128, "%s: Change skin", NickName);
			return ShowPlayerDialog(playerid,JDIALOGS+27,DIALOG_STYLE_INPUT,Jstring,"Enter new skinID:","Save","Back");
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+27)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0 || strval(inputtext) < 0 || strval(inputtext) > 299)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Change skin", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+27,DIALOG_STYLE_INPUT,Jstring,"Enter new skinID:\n{FF0000}*Please enter a valid SkinID (0 - 299)","Save","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "Skin", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+22)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
	                 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Autologin", 1);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
	            }
	            case 1:
				{
	                 GetPVarString(playerid, "AccountName", NickName, 24);
					 format(Jfile, 100, ACCOUNTS_PATH, NickName);
					 new INI:ACCOUNT = INI_Open(Jfile);
					 INI_WriteInt(ACCOUNT, "Autologin", 0);
					 INI_Close(ACCOUNT);
					 return AccountEditor(playerid);
				}
			}
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+23)
	{
		if(response)
		{
            GetPVarString(playerid, "AccountName", NickName, 24);
            format(Jstring, 128, "%s: Total Played Seconds", NickName);
			return ShowPlayerDialog(playerid,JDIALOGS+28,DIALOG_STYLE_INPUT,Jstring,"Enter new played seconds:","Save","Back");
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+28)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Total Played Seconds", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+28,DIALOG_STYLE_INPUT,Jstring,"Enter new played seconds:\n{FF0000}Seconds must be a nemeric value","Save","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "TotalSeconds", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+109)
	{
		if(response)
		{
            if(strlen(inputtext) < 3)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: PassWord", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+109,DIALOG_STYLE_INPUT,Jstring,"Enter the new Password:\n{FF0000}*Password lenght must be between 3 - 20 chracters","Change","Back");
	        }
	        new buf[145];
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			WP_Hash(buf, sizeof(buf), inputtext);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteString(ACCOUNT, "Password", buf);
			INI_Close(ACCOUNT);
			format(Jstring, sizeof(Jstring),"You have changed %s's password to '%s'",NickName,inputtext);
			SendClientMessage(playerid,yellow,Jstring);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+110)
	{
		if(response)
		{
            if(strlen(inputtext) < 3 || strlen(inputtext) > MAX_PLAYER_NAME)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: PassWord", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+110,DIALOG_STYLE_INPUT,"Rename Account","Enter the new nick name:\n{FF0000}*Name lenght must be between 3 - 20 chracters","Change","Back");
	        }
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, inputtext);
			if(fexist(Jfile)) return SendClientMessage(playerid,red,"Error: You entered nick name is already in use, please try something else!");
            if(InvalidNick(inputtext)) return SendClientMessage(playerid,red,"Unacceptable NickName. Please only use (0-9, a-z, [], (), $, @, ., _ and =)");
            format(Jstring, sizeof(Jstring),"You have changed Account %s name to '%s'",NickName,inputtext);
			SendClientMessage(playerid,yellow,Jstring);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			JLrename(Jfile,inputtext);
			SetPVarString(playerid,"AccountName",inputtext);
            foreach(Player, i)
            {
	            if(strcmp(NickName,GetName(i),true) == 0)
				{
		            format(Jstring, sizeof(Jstring),"Admin '%s' has renamed your account name to '%s'",GetName(playerid),inputtext);
		            SendClientMessage(i,yellow,Jstring);
		            SetPlayerName(i,inputtext);
	            }
            }
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+24)
	{
		if(response)
		{
           return AccountEditor(playerid);
		}
	}
	if(dialogid == JDIALOGS+25)
	{
		if(response)
		{
           return AccountEditor(playerid);
		}
	}
	if(dialogid == JDIALOGS+26)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0)
			{
                 GetPVarString(playerid, "AccountName", NickName, 24);
                 format(Jstring, 128, "%s: Change level", NickName);
				 return ShowPlayerDialog(playerid,JDIALOGS+26,DIALOG_STYLE_INPUT,Jstring,"Enter new Level:\n{FF0000}*Level must be a nemeric value","Save","Back");
	        }
	        format(Jstring, 128, "%s: Change level", NickName);
	        format(string, 128, "Enter new Level:\n{FF0000}*Error: Server maximum admin level is %d", MaxAdminLevel);
	        if(strval(inputtext) > MaxAdminLevel) return ShowPlayerDialog(playerid,JDIALOGS+26,DIALOG_STYLE_INPUT,Jstring,string,"Save","Back");
		    GetPVarString(playerid, "AccountName", NickName, 24);
			format(Jfile, 100, ACCOUNTS_PATH, NickName);
			new INI:ACCOUNT = INI_Open(Jfile);
			INI_WriteInt(ACCOUNT, "Level", strval(inputtext));
			INI_Close(ACCOUNT);
			return AccountEditor(playerid);
		}
		else return AccountEditor(playerid);
	}
	if(dialogid == JDIALOGS+38)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                return ShowPlayerDialog(playerid,JDIALOGS+39,DIALOG_STYLE_MSGBOX,"Clear ban log","Are you sure you want to clear the ban log ?","Yes","No");
	            }
	            case 1:
				{
				    return ShowPlayerDialog(playerid,JDIALOGS+40,DIALOG_STYLE_MSGBOX,"Clear kick log","Are you sure you want to clear the kick log ?","Yes","No");
				}
				case 2:
				{
					 return ShowPlayerDialog(playerid,JDIALOGS+41,DIALOG_STYLE_MSGBOX,"Clear AC log","Are you sure you want to clear the anti cheats records ?","Yes","No");
				}
				case 3:
				{
					 return ShowPlayerDialog(playerid,JDIALOGS+42,DIALOG_STYLE_MSGBOX,"Clear PM(s) log","Are you sure you want to clear the private messages log ?","Yes","No");
				}
				case 4:
				{
					 return ShowPlayerDialog(playerid,JDIALOGS+43,DIALOG_STYLE_MSGBOX,"Clear Crash log","Are you sure you want to clear the crash log ?","Yes","No");
				}
			}
		}
	}
	if(dialogid == JDIALOGS+39)
	{
		if(response)
		{
            format(Jfile, 100, LOGS_PATH, "Bans");
            if(!fexist(Jfile)) return ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Error","{FF0000}Could not clear the ban log (Could not find the file)","Ok","");
            fremove(Jfile);
            ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Ban log cleared","You have successfully cleared the ban log","Ok","");
		}
	}
	if(dialogid == JDIALOGS+40)
	{
		if(response)
		{
            format(Jfile, 100, LOGS_PATH, "KickLog");
            if(!fexist(Jfile)) return ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Error","{FF0000}Could not clear the kick log(Could not find the file)","Ok","");
            fremove(Jfile);
            ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Kick log cleared","You have successfully cleared the kick log","Ok","");
		}
	}
	if(dialogid == JDIALOGS+41)
	{
		if(response)
		{
            format(Jfile, 100, LOGS_PATH, "AntiCheatLog");
            if(!fexist(Jfile)) return ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Error","{FF0000}Could not clear the anti cheat log(Could not find the file)","Ok","");
            fremove(Jfile);
            ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"AC log cleared","You have successfully cleared the anti cheat log","Ok","");
		}
	}
	if(dialogid == JDIALOGS+42)
	{
		if(response)
		{
            format(Jfile, 100, LOGS_PATH, "PrivateMessages");
            if(!fexist(Jfile)) return ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Error","{FF0000}Could not clear the private messages log(Could not find the file)","Ok","");
            fremove(Jfile);
            ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"PM(s) log cleared","You have successfully cleared the private message log","Ok","");
		}
	}
	if(dialogid == JDIALOGS+43)
	{
		if(response)
		{
            format(Jfile, 100, LOGS_PATH, "Crash");
            if(!fexist(Jfile)) return ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Error","{FF0000}Could not clear the crash log(Could not find the file)","Ok","");
            fremove(Jfile);
            ShowPlayerDialog(playerid,JDIALOGS+44,DIALOG_STYLE_MSGBOX,"Crash log cleared","You have successfully cleared the crash log","Ok","");
		}
	}
	if(dialogid == JDIALOGS+46)
	{
		if(response)
		{
               new id = pInfo[playerid][Clicked];
               if(!IsPlayerConnected(id)) return ShowMessage(playerid, red, 2);
               if(strlen(inputtext) < 2 || strlen(inputtext) > 80) return ShowPlayerDialog(playerid,JDIALOGS+46,DIALOG_STYLE_INPUT,"Report","Enter the reason:\n{FF0000}*Please enter a valid reason","Report","Close");
			   format(Jstring,sizeof(Jstring),"{FF0000}[REPORT:]{FFFFFF} %s(ID: %d) Reported %s(ID: %d) |{FF0000} REASON: %s",GetName(playerid),playerid,GetName(id),id,inputtext);
			   SendToAdmins(-1,Jstring);
			   format(Jstring,sizeof(Jstring),"%s Has Reported %s | REASON: %s",GetName(playerid),GetName(id),inputtext);
			   WriteToLog(Jstring,"Reports");
			   StoreReport(playerid,id,inputtext);
		}
	}
	if(dialogid == JDIALOGS+47)
	{
		if(response)
		{
		        if(pInfo[playerid][pLevel] >= 1)
		        {
		             new id;
		             id = pInfo[playerid][Clicked];
		             if(strlen(inputtext) < 2 || strlen(inputtext) > 80) return ShowPlayerDialog(playerid,JDIALOGS+47,DIALOG_STYLE_INPUT,"Kick Player","Enter the reason:\n{FF0000}*Please enter a valid reason","Kick","Cancel");
		             if(IsPlayerConnected(id) && id != playerid)
		             {
		                if(pInfo[playerid][pLevel] <= pInfo[id][pLevel]) return ShowMessage(playerid, red, 6);
					    format(Jstring,sizeof(Jstring),"'%s' has been kicked by administrator %s Reason: %s",GetName(id),GetName(playerid),inputtext);
						SendClientMessageToAll(red,Jstring);
						format(Jstring,sizeof(Jstring),"[INGAME KICK] %s has kicked %s - %s ",GetName(playerid),GetName(id),inputtext);
						WriteToLog(Jstring,"KickLog");
						return SetTimerEx("KickPlayer",200,false,"d", id);
					 }
					 else return ShowMessage(playerid, red, 3);
				}
				else return ShowMessage(playerid, red, 1);
		}
	}
	if(dialogid == JDIALOGS+48)
	{
		if(response)
		{
			    if(pInfo[playerid][pLevel] >= 2)
				{
			       new id, file[200];
				   new year, month, day, hour, minuite, second;
				   id = pInfo[playerid][Clicked];
				   if(strlen(inputtext) < 2 || strlen(inputtext) > 80) return ShowPlayerDialog(playerid,JDIALOGS+48,DIALOG_STYLE_INPUT,"Ban Player","Enter the reason:\n{FF0000}*Please enter a valid reason","Ban","Cancel");
				   if(IsPlayerConnected(id) && id != playerid)
				   {
			          if(pInfo[playerid][pLevel] <= pInfo[id][pLevel]) return ShowMessage(playerid, red, 6);
			          getdate(year, month, day);
					  gettime(hour,minuite,second);
				      format(Jstring,sizeof(Jstring),"%s has been Banned by Administrator %s | Reason: %s <Date: %d/%d/%d> <Time: %d:%d>",GetName(id),GetName(playerid),inputtext,day,month,year,hour,minuite);
					  SendClientMessageToAll(red,Jstring);
					  format(JLstring,sizeof(JLstring),"{37C8C8}Administrator %s has banned you for: \"%s\"\n\nVisit "WEBSITE" for more informations", GetName(playerid),inputtext);
					  ShowPlayerDialog(id,JDIALOGS+200,DIALOG_STYLE_MSGBOX,"                     {FF0000}You are BANNED",JLstring,"OK","");
					  if(pInfo[id][Logged] == 1)
					  {
						  format(file, 200, ACCOUNTS_PATH, GetName(id));
						  new INI:ACCOUNT = INI_Open(file);
						  INI_WriteInt(ACCOUNT, "Banned", 1);
						  INI_Close(ACCOUNT);
					  }
					  format(Jstring,sizeof(Jstring),"Ban by %s  Reason: %s",GetName(playerid),inputtext);
					  SetPVarString(id,"Banreason",Jstring);
					  format(Jstring,sizeof(Jstring),"[INGAME BAN] %s has banned %s - %s",GetName(playerid),GetName(id),inputtext);
					  WriteToLog(Jstring,"Bans");
					  return SetTimerEx("BanPlayer",200,false,"dd", id,0);
					}
					else return ShowMessage(playerid, red, 3);
			    }
				return 1;
		}
	}
	if(dialogid == JDIALOGS+29)
	{
       if(response)
	   {
            switch(listitem)
			{
	            case 0:
	            {
	                if(IsDisabledChat == 0) return SendClientMessage(playerid,red,"Main chat is not disabled!");
	                format(Jstring,sizeof(Jstring),"Admin %s has enabled the main chat",GetName(playerid));
	                SendClientMessageToAll(orange,Jstring);
	                IsDisabledChat = 0;
				}
				case 1:
	            {
	                if(IsDisabledChat == 1) return SendClientMessage(playerid,red,"Main chat is already disabled!");
	                format(Jstring,sizeof(Jstring),"Admin %s has disabled the main chat",GetName(playerid));
	                SendClientMessageToAll(orange,Jstring);
	                AdmName = GetName(playerid);
	                IsDisabledChat = 1;
				}
			}
		 }
    }
    if(dialogid == JDIALOGS+50)
	{
       if(response)
	   {
            if (IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,red,"You have a vehicle already");
            switch(listitem)
			{
	            case 0:
	            {
					new vid;
	                GiveVehicle(playerid,558);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1089);	AddVehicleComponent(vid, 1163);
				    AddVehicleComponent(vid, 1085);	AddVehicleComponent(vid, 1090);	AddVehicleComponent(vid, 1165);
				    AddVehicleComponent(vid, 1087);	AddVehicleComponent(vid, 1091); AddVehicleComponent(vid, 1167);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,1);
	            }
	            case 1:
	            {
	                new vid;
	                GiveVehicle(playerid,560);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1033);	AddVehicleComponent(vid, 1138);
				    AddVehicleComponent(vid, 1026);	AddVehicleComponent(vid, 1083);	AddVehicleComponent(vid, 1140);
				    AddVehicleComponent(vid, 1028);	AddVehicleComponent(vid, 1087); AddVehicleComponent(vid, 1169);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,1);
	            }
	            case 2:
	            {
	                new vid;
	                GiveVehicle(playerid,559);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1087);	AddVehicleComponent(vid, 1158);
				    AddVehicleComponent(vid, 1065);	AddVehicleComponent(vid, 1085);	AddVehicleComponent(vid, 1160);
				    AddVehicleComponent(vid, 1068);	AddVehicleComponent(vid, 1069); AddVehicleComponent(vid, 1161);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,0);
	            }
	            case 3:
	            {
	                new vid;
	                GiveVehicle(playerid,561);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1061);	AddVehicleComponent(vid, 1156);
				    AddVehicleComponent(vid, 1056);	AddVehicleComponent(vid, 1064);	AddVehicleComponent(vid, 1157);
				    AddVehicleComponent(vid, 1060);	AddVehicleComponent(vid, 1074);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,1);
	            }
	            case 4:
				{
	                new vid;
	                GiveVehicle(playerid,561);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1058);	AddVehicleComponent(vid, 1087);
				    AddVehicleComponent(vid, 1055);	AddVehicleComponent(vid, 1059);	AddVehicleComponent(vid, 1154);
				    AddVehicleComponent(vid, 1056);	AddVehicleComponent(vid, 1085); AddVehicleComponent(vid, 1155);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,2);
				}
				case 5:
	            {
	                new vid;
	                GiveVehicle(playerid,560);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1033);	AddVehicleComponent(vid, 1140);
				    AddVehicleComponent(vid, 1029);	AddVehicleComponent(vid, 1079);	AddVehicleComponent(vid, 1169);
				    AddVehicleComponent(vid, 1031);	AddVehicleComponent(vid, 1138);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,0);
	            }
	            case 6:
				{
	                new vid;
	                GiveVehicle(playerid,562);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1039);	AddVehicleComponent(vid, 1146);
				    AddVehicleComponent(vid, 1037);	AddVehicleComponent(vid, 1079);	AddVehicleComponent(vid, 1148);
				    AddVehicleComponent(vid, 1038);	AddVehicleComponent(vid, 1087); AddVehicleComponent(vid, 1172);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,1);
				}
				case 7:
				{
	                new vid;
	                GiveVehicle(playerid,565);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1050);	AddVehicleComponent(vid, 1087);
				    AddVehicleComponent(vid, 1045);	AddVehicleComponent(vid, 1054);	AddVehicleComponent(vid, 1151);
				    AddVehicleComponent(vid, 1047);	AddVehicleComponent(vid, 1083); AddVehicleComponent(vid, 1153);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,0);
				}
				case 8:
				{
	                new vid;
	                GiveVehicle(playerid,534);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1100);
				    AddVehicleComponent(vid, 1077);	AddVehicleComponent(vid, 1122);
				    AddVehicleComponent(vid, 1087);	AddVehicleComponent(vid, 1127);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,2);
				}
				case 9:
				{
	                new vid;
	                GiveVehicle(playerid,535);
	                vid = GetPlayerVehicleID(playerid);
					AddVehicleComponent(vid, 1010); AddVehicleComponent(vid, 1109); AddVehicleComponent(vid, 1118);
				    AddVehicleComponent(vid, 1087);	AddVehicleComponent(vid, 1113);
				    AddVehicleComponent(vid, 1098);	AddVehicleComponent(vid, 1115);
					PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
					ChangeVehiclePaintjob(vid,0);
				}
		   }
	   }
	}
	if(dialogid == JDIALOGS+51)
	{
       if(response)
	   {
            new id = GetPVarInt(playerid, "TargetID");
            switch(listitem)
			{
	            case 0:
	            {
	                format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'yellow'",GetName(id));
	                SendClientMessage(playerid,yellow,Jstring);
	                foreach(Player, i)
				    {
	                    SetPlayerMarkerForPlayer(i,id,yellow);
				    }
	            }
	            case 1:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'white'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,white);
	               }
	            }
	            case 2:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'blue'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,blue);
	               }
	            }
	            case 3:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'red'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,red);
	               }
	            }
	            case 4:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'green'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,green);
	               }
	            }
	            case 5:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'orange'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,orange);
	               }
	            }
	            case 6:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'purple'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,purple);
	               }
	            }
	            case 7:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'PINK'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,pink);
	               }
	            }
	            case 8:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'BROWN'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,brown);
	               }
	            }
	            case 9:
	            {
	               format(Jstring,sizeof(Jstring),"You have set %s' maker colour to 'BLACK'",GetName(id));
	               SendClientMessage(playerid,yellow,Jstring);
	               foreach(Player, i)
				   {
	                    SetPlayerMarkerForPlayer(i,id,black);
	               }
	            }
            }
	   }
	}
	if(dialogid == JDIALOGS+52)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+53,DIALOG_STYLE_LIST,"SERVER AUTO LOGIN","{0000FF}Enable\n{FF0000}Disable","Select","Back");
	            }
	            case 1:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+54,DIALOG_STYLE_LIST,"DETECT PAUSE","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 2:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+55,DIALOG_STYLE_LIST,"MUST REGISTER","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 3:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+56,DIALOG_STYLE_INPUT,"SERVER MAX PING ALLOWED","Please enter the server new max ping","Ok","Back");
				}
				case 4:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+57,DIALOG_STYLE_LIST,"ANTI SPAM","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 5:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+58,DIALOG_STYLE_LIST,"ANTI WEAPON HACK","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 6:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+59,DIALOG_STYLE_LIST,"ANTI BAD WORDS","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 7:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+60,DIALOG_STYLE_LIST,"FORBIDDEN NAMES KICK","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 8:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+61,DIALOG_STYLE_LIST,"FORBIDDEN PART NAMES KICK","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 9:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+62,DIALOG_STYLE_LIST,"ANTI ADVERTISEMENTS","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 10:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+63,DIALOG_STYLE_LIST,"ANTI BAN EVADE","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 11:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+64,DIALOG_STYLE_INPUT,"MAX ADMIN LEVEL","Please enter the new max admin level","Ok","Back");
				}
				case 12:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+65,DIALOG_STYLE_LIST,"ADMIN IMMUNITY","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 13:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+66,DIALOG_STYLE_LIST,"ADMIN READ PM(S)","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 14:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+67,DIALOG_STYLE_LIST,"ADMIN READ CMDS","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 15:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+68,DIALOG_STYLE_LIST,"PM DIALOG","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 16:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+69,DIALOG_STYLE_LIST,"ADMIN CHEAT BANS","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 17:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+70,DIALOG_STYLE_LIST,"ALLOW CHANGE NICK","{0000FF}Enable\n{FF0000}Disable","Select","Back");
				}
				case 18:
				{
	                 ShowPlayerDialog(playerid,JDIALOGS+71,DIALOG_STYLE_LIST,"FORBIDDEN WEAPON","View Forbidden weapons list\nAdd new weapon\nClear Forbidden weapons list","Select","Back");
				}
				case 19:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+76,DIALOG_STYLE_LIST,"FORBIDDEN NAMES","View Forbidden names list\nAdd new forbidden name\nClear Forbidden names list","Select","Back");
				}
				case 20:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+79,DIALOG_STYLE_LIST,"FORBIDDEN PART NAMES","View Forbidden Part Nick list\nAdd new forbidden nick part\nClear Forbidden part nicks list","Select","Back");
				}
				case 21:
				{
					 ShowPlayerDialog(playerid,JDIALOGS+82,DIALOG_STYLE_LIST,"BAD WORDS","View bad word list\nAdd new bad word\nClear bad word list","Select","Back");
				}
				case 22:
				{
					 LoadSettings();
					 LoadIllegalWeaps();
					 LoadForbiddenNicks();
					 LoadBadNickParts();
					 LoadBadWords();
					 LoadTeleports();
					 SendClientMessage( playerid, yellow, "You have re-loaded JLadmin system settings!" );
				}
			}
   		}
	}
	if(dialogid == JDIALOGS+53)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
					 new INI:SETTING = INI_Open(Jfile);
					 INI_WriteInt(SETTING, "AutoLogin", 1);
					 INI_Close(SETTING);
					 AutoLogin = 1;
					 return ServSettings(playerid);
	            }
	            case 1:
				{
	                 format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
					 new INI:SETTING = INI_Open(Jfile);
					 INI_WriteInt(SETTING, "AutoLogin", 0);
					 INI_Close(SETTING);
					 AutoLogin = 0;
					 return ServSettings(playerid);
				}
			}
		}
		else return ServSettings(playerid);
	}
	if(dialogid == JDIALOGS+54)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
					 new INI:SETTING = INI_Open(Jfile);
					 INI_WriteInt(SETTING, "DetectPausers", 1);
					 INI_Close(SETTING);
					 DetectPausers = 1;
					 return ServSettings(playerid);
	            }
	            case 1:
				{
	                 format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
					 new INI:SETTING = INI_Open(Jfile);
					 INI_WriteInt(SETTING, "DetectPausers", 0);
					 INI_Close(SETTING);
					 DetectPausers = 0;
					 return ServSettings(playerid);
				}
			}
		}
		else return ServSettings(playerid);
	}
	if(dialogid == JDIALOGS+55)
	{
		if(response)
		{
            switch(listitem)
			{
	      		case 0:
				{
	                 format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
					 new INI:SETTING = INI_Open(Jfile);
					 INI_WriteInt(SETTING, "MustRegister", 1);
					 INI_Close(SETTING);
					 MustRegister = 1;
					 return ServSettings(playerid);
	            }
	            case 1:
				{
	                 format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
					 new INI:SETTING = INI_Open(Jfile);
					 INI_WriteInt(SETTING, "MustRegister", 0);
					 INI_Close(SETTING);
					 MustRegister = 0;
					 return ServSettings(playerid);
				}
			}
		}
		else return ServSettings(playerid);
	}
	if(dialogid == JDIALOGS+56)
	{
		if(response)
		{
            if(!IsNumeric(inputtext) || strlen(inputtext) == 0 || strval(inputtext) < 0)
			return ShowPlayerDialog(playerid,JDIALOGS+56,DIALOG_STYLE_INPUT,"SERVER MAX PING ALLOWED","Enter the server new max ping\n{FF0000}*Please enter a Numeric value","Save","Back");
            format(Jfile,sizeof(Jfile),"JLadmin/Settings/settings.cfg");
			new INI:SETTING = INI_Open(Jfile);
			INI_WriteInt(SETTING, "MaxPing", strval(inputtext));
			INI_Close(SETTING);
			MaxPing = strval(inputtext);
			return ServSettings(playerid);
		}
		else return ServSettings(playerid);
	}
You Can get Code Of PPC_Business From Here:-
Code:
// Make sure you don't get warnings about tabsize
#pragma tabsize 0

// Include default files
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <streamer>



// ******************************************************************************************************************************
// Settings that can be changed
// ******************************************************************************************************************************

// Default max number of players is set to 500, re-define it to 50
#undef MAX_PLAYERS
#define MAX_PLAYERS 50

// Define housing parameters
#define MAX_BUSINESS				500 // Defines the maximum number of businesses that can be created
#define MAX_BUSINESSPERPLAYER		20 // Defines the maximum number of businesses that any player can own (useable values: 1 to 20)

// Define path to business-files
#define BusinessFile "PPC_Business/Business%i.ini"
#define BusinessTimeFile "PPC_Business/BusinessTime.ini"

// Set the exit-time for exiting a business (required if you use custom-made islands, otherwise you'll fall into the water)
// Default: 1 second (1000 milliseconds)
new ExitBusinessTimer = 1000;




// Define Dialogs
#define DialogCreateBusSelType      2001
#define DialogBusinessNameChange    2002
#define DialogSellBusiness          2003
#define DialogBusinessMenu          2004
#define DialogGoBusiness            2005



// ******************************************************************************************************************************
// Enums and the array-setups that use them
// ******************************************************************************************************************************

// Setup a custom type that holds all data for businesses
enum TBusinessData
{
	PickupID, // Holds the pickup-id that is linked to this business
	Text3D:DoorText, // Holds the reference to the 3DText above the business's pickup
	MapIconID, // Holds the ID of the mapicon for the business

	BusinessName[100], // Holds the name of the business (this will be displayed above the pickup near the business when it's owned)
	Float:BusinessX, // Holds the X-coordinate of the pickup for the Business
	Float:BusinessY, // Holds the Y-coordinate of the pickup for the Business
	Float:BusinessZ, // Holds the Z-coordinate of the pickup for the Business
	BusinessType, // Holds the type of business (well stacked pizza, burger shot, ...), this defines which icon and interior to use
	BusinessLevel, // Holds the level of upgrades the business has
	LastTransaction, // Holds the amount of minutes when the last transaction took place (buying the business or retrieving the money by the owner)
	bool:Owned, // Holds true if the Business is owned by somebody
	Owner[24] // Holds the name of the owner of the Business
}
// Holds the data for all houses
new ABusinessData[MAX_BUSINESS][TBusinessData];
// This variable holds the business-time (this value is increased every hour and is used to calculate the amount of money a business
// has generated after the last transaction of the business)
new BusinessTransactionTime;



// Setup a custom type that holds all data about a business
enum TBusinessType
{
	InteriorName[50], // Holds the name of the interior
	InteriorID, // Holds the interior-id
	Float:IntX, // Holds the X-coordinate of the spawn-location where you enter the business
	Float:IntY, // Holds the Y-coordinate of the spawn-location where you enter the business
	Float:IntZ, // Holds the Z-coordinate of the spawn-location where you enter the business
	BusPrice, // Holds the price for the business
	BusEarnings, // Holds the earnings for this type of business (a business earns this money every minute even when the player is offline)
	            // The earnings may not seem that high, but earning $5 every minute will earn you $7200 every day, even when you're offline
	            // These are multiplied by the level of your business, so a level 5 business earns you $36000 every day
	            // Using the default buying prices, you'll need about 70 days to refund your business and start making money with it
	IconID // Holds the icon-id which represents the business
}
// Holds the data for all interiors for businesses
new ABusinessInteriors[][TBusinessType] =
{
	{"Dummy", 				0, 		0.0, 		0.0, 		0.0,		0,			0,		0}, // Dummy business (Type 0), never used
	{"24/7 (Small)", 		6, 		-26.75, 	-55.75, 	1003.6,		500000,		5,		52}, // Type 1 (earnings per day: $7200)
	{"24/7 (Medium)", 		18, 	-31.0, 		-89.5, 		1003.6,		700000,		7,		52}, // Type 2 (earnings per day: $10080)
	{"Bar", 				11, 	502.25, 	-69.75, 	998.8,		400000,		4,		49}, // Type 3 (earnings per day: $5760)
	{"Barber (Small)", 		2, 		411.5, 		-21.25, 	1001.8,		300000,		3,		7}, // Type 4 (earnings per day: $4320)
	{"Barber (Medium)",		3, 		418.75, 	-82.5, 		1001.8,		400000,		4,		7}, // Type 5 (earnings per day: $5760)
	{"Betting shop", 		3, 		833.25, 	7.0, 		1004.2,		1500000,	15,		52}, // Type 6 (earnings per day: $21600)
	{"Burger Shot", 		10, 	363.5, 		-74.5, 		1001.5,		700000,		7,		10}, // Type 7 (earnings per day: $10080)
	{"Casino (4 Dragons)", 	10, 	2017.25, 	1017.75, 	996.9,		2500000,	25,		44}, // Type 8 (earnings per day: $36000)
	{"Casino (Caligula's)", 1, 		2234.0, 	1710.75, 	1011.3,		2500000,	25,		25}, // Type 9 (earnings per day: $36000)
	{"Casino (Small)", 		12, 	1133.0, 	-9.5,	 	1000.7,		2000000,	20,		43}, // Type 10 (earnings per day: $28800)
	{"Clothing (Binco)", 	15, 	207.75, 	-109.0, 	1005.2,		800000,		8,		45}, // Type 11 (earnings per day: $11520)
	{"Clothing (Pro)", 		3, 		207.0, 		-138.75, 	1003.5,		800000,		8,		45}, // Type 12 (earnings per day: $11520)
	{"Clothing (Urban)", 	1, 		203.75, 	-48.5, 		1001.8,		800000,		8,		45}, // Type 13 (earnings per day: $11520)
	{"Clothing (Victim)", 	5, 		226.25, 	-7.5, 		1002.3,		800000,		8,		45}, // Type 14 (earnings per day: $11520)
	{"Clothing (ZIP)",		18, 	161.5, 		-92.25, 	1001.8,		800000,		8,		45}, // Type 15 (earnings per day: $11520)
	{"Cluckin' Bell",		9,		365.75, 	-10.75,  	1001.9,		700000,		7,		14}, // Type 16 (earnings per day: $10080)
	{"Disco (Small)", 		17, 	492.75,		-22.0, 		1000.7,		1000000,	10,		48}, // Type 17 (earnings per day: $14400)
	{"Disco (Large)", 		3, 		-2642.0, 	1406.5, 	906.5,		1200000,	12,		48}, // Type 18 (earnings per day: $17280)
	{"Gym (LS)", 			5, 		772.0, 		-3.0, 		1000.8,		500000,		5,		54}, // Type 19 (earnings per day: $7200)
	{"Gym (SF)", 			6, 		774.25, 	-49.0, 		1000.6,		500000,		5,		54}, // Type 20 (earnings per day: $7200)
	{"Gym (LV)", 			7, 		774.25, 	-74.0, 		1000.7,		500000,		5,		54}, // Type 21 (earnings per day: $7200)
	{"Motel", 				15, 	2216.25, 	-1150.5, 	1025.8,		1000000,	10,		37}, // Type 22 (earnings per day: $14400)
	{"RC shop", 			6, 		-2238.75, 	131.0, 		1035.5,		600000,		6,		46}, // Type 23 (earnings per day: $8640)
	{"Sex-shop", 			3, 		-100.25, 	-22.75, 	1000.8,		800000,		8,		38}, // Type 24 (earnings per day: $11520)
	{"Slaughterhouse", 		1, 		933.75, 	2151.0, 	1011.1,		500000,		5,		50}, // Type 25 (earnings per day: $7200)
	{"Stadium (Bloodbowl)", 15, 	-1394.25, 	987.5, 		1024.0,		1700000,	17,		33}, // Type 26 (earnings per day: $24480)
	{"Stadium (Kickstart)", 14, 	-1410.75, 	1591.25, 	1052.6,		1700000,	17,		33}, // Type 27 (earnings per day: $24480)
	{"Stadium (8-Track)", 	7, 		-1396.0, 	-208.25, 	1051.2,		1700000,	17,		33}, // Type 28 (earnings per day: $24480)
	{"Stadium (Dirt Bike)", 4, 		-1425.0, 	-664.5, 	1059.9,		1700000,	17,		33}, // Type 29 (earnings per day: $24480)
	{"Stripclub (Small)", 	3, 		1212.75, 	-30.0, 		1001.0,		700000,		7,		48}, // Type 30 (earnings per day: $10080)
	{"Stripclub (Large)", 	2, 		1204.75, 	-12.5, 		1001.0,		900000,		9,		48}, // Type 31 (earnings per day: $12960)
	{"Tattoo LS", 			16, 	-203.0, 	-24.25, 	1002.3,		500000,		5,		39}, // Type 32 (earnings per day: $7200)
	{"Well Stacked Pizza", 	5,	 	372.25, 	-131.50, 	1001.5,		600000,		6,		29} // Type 33 (earnings per day: $8640)
};



// Setup all the fields required for the player data (Speedometer TextDraw, current job, ...)
enum TPlayerData
{
	Business[20], // Holds the BusinessID's of the businesses that the player owns (index of the ABusinessData array), maximum 20 businesses per player
    CurrentBusiness // Holds the BusinessID to track in which business the player currently is (used when accessing the businessmenu)
}
// Create an array to hold the playerdata for every player
new APlayerData[MAX_PLAYERS][TPlayerData];



// These variables are used when starting the script and debugging purposes
new TotalBusiness;



// ******************************************************************************************************************************
// Callbacks
// ******************************************************************************************************************************

// The main function (used only once when the server loads)
main()
{
}

// This callback gets called when the server initializes the filterscript
public OnFilterScriptInit()
{
	// Load the businesstime-file (which holds the current time for the businesses, used for calculating the earnings every minute)
	BusinessTime_Load();

	// Loop through all businesses and try to load them (BusID 0 isn't used)
	for (new BusID = 1; BusID < MAX_BUSINESS; BusID++)
		BusinessFile_Load(BusID); // Try to load the business-file

	// Start the businesstimer and run it every minute
	SetTimer("Business_TransactionTimer", 1000 * 60, true);

	// Print information about the filterscript on the server-console
    printf("-------------------------------------");
    printf("PPC Business filterscript initialized");
    printf("Businesses loaded: %i", TotalBusiness);
    printf("-------------------------------------");

    return 1;
}

// This callback gets called when a player connects to the server
public OnPlayerConnect(playerid)
{
	// Setup local variables
	new BusID, BusSlot, Name[24];

	// Get the player's name
	GetPlayerName(playerid, Name, sizeof(Name));

	// Loop through all businesses to find the ones which belong to this player
	for (BusID = 1; BusID < MAX_BUSINESS; BusID++)
	{
		// Check if the business exists
		if (IsValidDynamicPickup(ABusinessData[BusID][PickupID]))
		{
		    // Check if the business is owned
		    if (ABusinessData[BusID][Owned] == true)
		    {
		        // Check if the player is the owner of the business
				if (strcmp(ABusinessData[BusID][Owner], Name, false) == 0)
				{
					// Add the BusID to the player's account for faster reference later on
					APlayerData[playerid][Business][BusSlot] = BusID;

					// Select the next BusSlot
					BusSlot++;
				}
		    }
		}
	}

	return 1;
}

// This callback gets called when a player disconnects from the server
public OnPlayerDisconnect(playerid, reason)
{
	// Setup local variables
	new BusSlot;

	// Loop through all businesses the player owns
	for (BusSlot = 0; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
	{
		// Check if the player has a business in this busslot
		if (APlayerData[playerid][Business][BusSlot] != 0)
		{
		    // Save the Busfile
			BusinessFile_Save(APlayerData[playerid][Business][BusSlot]);

		    // Clear the BusID stored in this busslot
			APlayerData[playerid][Business][BusSlot] = 0;
		}
	}

	// Clear all data for this player
	APlayerData[playerid][CurrentBusiness] = 0;

	return 1;
}

// This callback gets called when a player interacts with a dialog
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	// Select the proper dialog to process
	switch (dialogid)
	{
		case DialogCreateBusSelType: Dialog_CreateBusSelType(playerid, response, listitem);
		case DialogBusinessMenu: Dialog_BusinessMenu(playerid, response, listitem);
		case DialogGoBusiness: Dialog_GoBusiness(playerid, response, listitem);
		case DialogBusinessNameChange: Dialog_ChangeBusinessName(playerid, response, inputtext); // Change the name of your business
		case DialogSellBusiness: Dialog_SellBusiness(playerid, response); // Sell the business
	}

    return 0;
}

// This callback gets called when a player spawns somewhere
public OnPlayerSpawn(playerid)
{
	// Reset the BusID where the player is located
	APlayerData[playerid][CurrentBusiness] = 0;

	return 1;
}

// This callback gets called whenever a player dies
public OnPlayerDeath(playerid, killerid, reason)
{
	// Reset the BusID where the player is located
	APlayerData[playerid][CurrentBusiness] = 0;

	return 1;
}

// This callback gets called when the player is selecting a class (but hasn't clicked "Spawn" yet)
public OnPlayerRequestClass(playerid, classid)
{
	// Reset the BusID where the player is located
	APlayerData[playerid][CurrentBusiness] = 0;

	return 1;
}

// This callback is called when the player attempts to spawn via class-selection
public OnPlayerRequestSpawn(playerid)
{
	// Reset the BusID where the player is located
	APlayerData[playerid][CurrentBusiness] = 0;

    return 1;
}



// ******************************************************************************************************************************
// Commands
// ******************************************************************************************************************************

// Lets the player add new businesses
COMMAND:createbusiness(playerid, params[])
{
	// If a player hasn't logged in properly, he cannot use this command
	if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
	// If the player has an insufficient admin-level (he needs level 5 or RCON admin), exit the command
	// returning "SERVER: Unknown command" to the player
	if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;

	// Setup local variables
	new BusinessList[2000];

	// Check if the player isn't inside a vehicle
	if (GetPlayerVehicleSeat(playerid) == -1)
	{
		// Construct the list of businesses
		for (new BusType = 1; BusType < sizeof(ABusinessInteriors); BusType++)
		{
		    format(BusinessList, sizeof(BusinessList), "%s%s\n", BusinessList, ABusinessInteriors[BusType][InteriorName]);
		}

		// Let the player choose a business-type via a dialog
		ShowPlayerDialog(playerid, DialogCreateBusSelType, DIALOG_STYLE_LIST, "Choose business-type:", BusinessList, "Select", "Cancel");
	}
	else
	    SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to create a business");

	// Let the server know that this was a valid command
	return 1;
}

// This command lets the player delete a business
COMMAND:delbusiness(playerid, params[])
{
	// If a player hasn't logged in properly, he cannot use this command
	if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
	// If the player has an insufficient admin-level (he needs level 5 or RCON admin), exit the command
	// returning "SERVER: Unknown command" to the player
	if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;

	// Setup local variables
	new file[100], Msg[128];

	// Make sure the player isn't inside a vehicle
	if (GetPlayerVehicleSeat(playerid) == -1)
	{
		// Loop through all player-owned businesses
		for (new BusID = 1; BusID < MAX_BUSINESS; BusID++)
		{
			// Check if the business exists
			if (IsValidDynamicPickup(ABusinessData[BusID][PickupID]))
			{
				// Check if the business has no owner
				if (ABusinessData[BusID][Owned] == false)
				{
					// Check if the player is in range of the business-pickup
					if (IsPlayerInRangeOfPoint(playerid, 2.5, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]))
					{
						// Clear all data of the business
						ABusinessData[BusID][BusinessName] = 0;
						ABusinessData[BusID][BusinessX] = 0.0;
						ABusinessData[BusID][BusinessY] = 0.0;
						ABusinessData[BusID][BusinessZ] = 0.0;
						ABusinessData[BusID][BusinessType] = 0;
						ABusinessData[BusID][BusinessLevel] = 0;
						ABusinessData[BusID][LastTransaction] = 0;
						ABusinessData[BusID][Owned] = false;
						ABusinessData[BusID][Owner] = 0;
						// Destroy the mapicon, 3DText and pickup for the house
						DestroyDynamicPickup(ABusinessData[BusID][PickupID]);
						DestroyDynamicMapIcon(ABusinessData[BusID][MapIconID]);
						DestroyDynamic3DTextLabel(ABusinessData[BusID][DoorText]);
						ABusinessData[BusID][PickupID] = 0;
						ABusinessData[BusID][MapIconID] = 0;

						// Delete the business-file
						format(file, sizeof(file), BusinessFile, BusID); // Construct the complete filename for this business-file
						if (fexist(file)) // Make sure the file exists
							fremove(file); // Delete the file

						// Also let the player know he deleted the business
						format(Msg, 128, "{00FF00}You have deleted the business with ID: {FFFF00}%i", BusID);
						SendClientMessage(playerid, 0xFFFFFFFF, Msg);

						// Exit the function
						return 1;
					}
				}
				else
				    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You cannot delete an owned business");
			}
		}

		// There was no house in range, so let the player know about it
		SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}No business in range to delete");
	}
	else
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You must be on foot to delete a business");

	// Let the server know that this was a valid command
	return 1;
}

// This command lets the player buy a business when he's standing in range of a business that isn't owned yet
COMMAND:buybus(playerid, params[])
{
	// If a player hasn't logged in properly, he cannot use this command
	if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;

	// Setup local variables
	new Msg[128], BusType;

	// Make sure the player isn't inside a vehicle
	if (GetPlayerVehicleSeat(playerid) == -1)
	{
		// Check if the player is near a business-pickup
		for (new BusID = 1; BusID < sizeof(ABusinessData); BusID++)
		{
			// Check if this business is created (it would have a valid pickup in front of the door)
			if (IsValidDynamicPickup(ABusinessData[BusID][PickupID]))
			{
				// Check if the player is in range of the business-pickup
				if (IsPlayerInRangeOfPoint(playerid, 2.5, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]))
				{
				    // Check if the business isn't owned yet
				    if (ABusinessData[BusID][Owned] == false)
				    {
						// Get the type of business
						BusType = ABusinessData[BusID][BusinessType];
				        // Check if the player can afford this type of business business
				        if (INT_GetPlayerMoney(playerid) >= ABusinessInteriors[BusType][BusPrice])
				            Business_SetOwner(playerid, BusID); // Give ownership of the business to the player
				        else
				            SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You cannot afford this business"); // The player cannot afford this business
				    }
				    else
				    {
				        // Let the player know that this business is already owned by a player
						format(Msg, 128, "{FF0000}This business is already owned by {FFFF00}%s", ABusinessData[BusID][Owner]);
						SendClientMessage(playerid, 0xFFFFFFFF, Msg);
				    }

					// The player was in range of a business-pickup, so stop searching for the other business pickups
				    return 1;
				}
			}
		}

		// All businesses have been processed, but the player wasn't in range of any business-pickup, let him know about it
		SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}To buy a business, you have to be near a business-pickup");
	}
	else
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You can't buy a business when you're inside a vehicle");

	// Let the server know that this was a valid command
	return 1;
}

// This command lets the player enter the house/business if he's the owner
COMMAND:enter(playerid, params[])
{
	// If a player hasn't logged in properly, he cannot use this command
	if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;

	// Setup local variables
	new BusID, BusType;

	// Make sure the player isn't inside a vehicle
	if (GetPlayerVehicleSeat(playerid) == -1)
	{
		// Loop through all player-owned businesses
		for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
		{
		    // Get the business-id at the selected slot from the player
		    BusID = APlayerData[playerid][Business][BusSlot];

			// Check if the player has a business in this slot
			if (BusID != 0)
			{
				// Check if the player is in range of the business-pickup
				if (IsPlayerInRangeOfPoint(playerid, 2.5, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]))
				{
				    // Get the business-type
				    BusType = ABusinessData[BusID][BusinessType];

					// Set the worldid so other players cannot see him anymore
					SetPlayerVirtualWorld(playerid, 2000 + BusID);
					// Set the player inside the interior of the business
					SetPlayerInterior(playerid, ABusinessInteriors[BusType][InteriorID]);
					// Set the position of the player at the spawn-location of the business's interior
					SetPlayerPos(playerid, ABusinessInteriors[BusType][IntX], ABusinessInteriors[BusType][IntY], ABusinessInteriors[BusType][IntZ]);

					// Also set a tracking-variable to enable /busmenu to track in which business the player is
					APlayerData[playerid][CurrentBusiness] = BusID;
					// Also let the player know he can use /busmenu to control his business
					SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Use {FFFF00}/busmenu{00FF00} to change options for your business");

					// Exit the function
					return 1;
				}
			}
		}
	}

	// If no business was in range, allow other scripts to use the same command (like the housing-script)
	return 0;
}

// This command opens a menu when you're inside your business to allow to access the options of your business
COMMAND:busmenu(playerid, params[])
{
	// If a player hasn't logged in properly, he cannot use this command
	if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;

	// Setup local variables
	new OptionsList[200], DialogTitle[200];

	// Check if the player is inside a business
	if (APlayerData[playerid][CurrentBusiness] != 0)
	{
		// Create the dialog title
		format(DialogTitle, sizeof(DialogTitle), "Select option for %s", ABusinessData[APlayerData[playerid][CurrentBusiness]][BusinessName]);
		// Create the options in the dialog
		format(OptionsList, sizeof(OptionsList), "%sChange business-name\n", OptionsList);
		format(OptionsList, sizeof(OptionsList), "%sUpgrade business\n", OptionsList);
		format(OptionsList, sizeof(OptionsList), "%sRetrieve business earnings\n", OptionsList);
		format(OptionsList, sizeof(OptionsList), "%sSell business\n", OptionsList);
		format(OptionsList, sizeof(OptionsList), "%sExit business\n", OptionsList);
		// Show the businessmenu
		ShowPlayerDialog(playerid, DialogBusinessMenu, DIALOG_STYLE_LIST, DialogTitle, OptionsList, "Select", "Cancel");
	}
	else
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You're not inside a business");

	// Let the server know that this was a valid command
	return 1;
}

// This command teleports you to your selected business
COMMAND:gobus(playerid, params[])
{
	// If a player hasn't logged in properly, he cannot use this command
	if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;

	// Setup local variables
	new BusinessList[1000], BusID, BusType, Earnings;

	// Check if the player is not jailed
	if (INT_IsPlayerJailed(playerid) == 0)
	{
		// Check if the player has a wanted level of less than 3
		if (GetPlayerWantedLevel(playerid) < 3)
		{
			// Check if the player is not inside a vehicle
			if (GetPlayerVehicleSeat(playerid) == -1)
			{
				// Ask to which business the player wants to port
				for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
				{
					// Get the business-id
				    BusID = APlayerData[playerid][Business][BusSlot];

					// Check if this businessindex is occupied
					if (BusID != 0)
					{
						// Get the business-type
						BusType = ABusinessData[BusID][BusinessType];
						Earnings = (BusinessTransactionTime - ABusinessData[BusID][LastTransaction]) * ABusinessInteriors[BusType][BusEarnings] * ABusinessData[BusID][BusinessLevel];
						format(BusinessList, 1000, "%s{00FF00}%s{FFFFFF} (earnings: $%i)\n", BusinessList, ABusinessData[BusID][BusinessName], Earnings);
					}
					else
						format(BusinessList, 1000, "%s{FFFFFF}%s{FFFFFF}\n", BusinessList, "Empty business-slot");
				}
				ShowPlayerDialog(playerid, DialogGoBusiness, DIALOG_STYLE_LIST, "Choose the business to go to:", BusinessList, "Select", "Cancel");
			}
			else
				SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You need to be on-foot to port to your business");
		}
		else
		    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You cannot use /gobus when you're wanted");
	}
	else
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You cannot use /gobus when you're in jail");

	// Let the server know that this was a valid command
	return 1;
}



// ******************************************************************************************************************************
// Dialog-responses
// ******************************************************************************************************************************

// This dialog processes the chosen business-type and creates the business
Dialog_CreateBusSelType(playerid, response, listitem)
{
	// Just close the dialog if the player clicked "Cancel"
	if(!response) return 1;

    // Setup some local variables
	new BusType, BusID, Float:x, Float:y, Float:z, Msg[128], bool:EmptySlotFound = false;

	// Get the player's position
	GetPlayerPos(playerid, x, y, z);

	// Get the business-type from the option the player chose
	BusType = listitem + 1;

	// Find a free business-id
	for (BusID = 1; BusID < MAX_BUSINESS; BusID++)
	{
		// Check if this business ID is free
		if (ABusinessData[BusID][BusinessType] == 0)
		{
			EmptySlotFound = true;
		    break; // Stop processing
		}
	}

	// Check if an empty slot has been found
	if (EmptySlotFound == false)
	{
		// If no empty slot was found, let the player know about it and exit the function
		SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Maximum number of businesses reached");
		return 1;
	}

	// Set some default data at the index of NextFreeBusinessID (NextFreeBusinessID will point to the next free business-index)
	ABusinessData[BusID][BusinessX] = x;
	ABusinessData[BusID][BusinessY] = y;
	ABusinessData[BusID][BusinessZ] = z;
	ABusinessData[BusID][BusinessType] = BusType;
	ABusinessData[BusID][BusinessLevel] = 1;
	ABusinessData[BusID][Owned] = false;

	// Add the pickup and 3DText at the location of the business-entrance (where the player is standing when he creates the business)
	Business_CreateEntrance(BusID);

	// Save the business
	BusinessFile_Save(BusID);

	// Inform the player that he created a new house
	format(Msg, 128, "{00FF00}You've succesfully created business {FFFF00}%i{00FF00}", BusID);
	SendClientMessage(playerid, 0xFFFFFFFF, Msg);

	return 1;
}

// This function processes the businessmenu dialog
Dialog_BusinessMenu(playerid, response, listitem)
{
	// Just close the dialog if the player clicked "Cancel"
	if(!response) return 1;

	// Setup local variables
	new BusID, BusType, Msg[128], DialogTitle[200], UpgradePrice;

	// Get the HouseID of the house where the player is
	BusID = APlayerData[playerid][CurrentBusiness];
	BusType = ABusinessData[BusID][BusinessType];

	// Select an option based on the selection in the list
	switch(listitem)
	{
	    case 0: // Change business name
	    {
	        format(DialogTitle, 200, "Old business-name: %s", ABusinessData[BusID][BusinessName]);
			ShowPlayerDialog(playerid, DialogBusinessNameChange, DIALOG_STYLE_INPUT, DialogTitle, "Enter a new name for your business", "OK", "Cancel");
	    }
	    case 1: // Upgrade the business
	    {
	        // Check if it's possible to upgrade further
			if (ABusinessData[BusID][BusinessLevel] < 5)
			{
			    // Get the upgrade-price
			    UpgradePrice = ABusinessInteriors[BusType][BusPrice];
			    // Check if the player can afford the upgrade
				if (INT_GetPlayerMoney(playerid) >= UpgradePrice)
				{
				    // Give the current earnings of the business to the player and update the LastTransaction time
					Business_PayEarnings(playerid, BusID);
					// Upgrade the business 1 level
				    ABusinessData[BusID][BusinessLevel]++;
					// Let the player pay for the upgrade
					INT_GivePlayerMoney(playerid, -UpgradePrice);
					// Update the 3DText near the business's entrance to show what level the business is
					Business_UpdateEntrance(BusID);
					// Let the player know about it
					format(Msg, 128, "{00FF00}You have upgraded your business to level {FFFF00}%i", ABusinessData[BusID][BusinessLevel]);
					SendClientMessage(playerid, 0xFFFFFFFF, Msg);
				}
				else
					SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You cannot afford the upgrade");
			}
			else
			    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Your business has reached the maximum level, you cannot upgrade it further");
	    }
		case 2: // Retrieve business earnings
		{
		    // Give the current earnings of the business to the player and update the LastTransaction time
			Business_PayEarnings(playerid, BusID);
		}
		case 3: // Sell business
		{
		    format(Msg, 128, "Are you sure you want to sell your business for $%i?", (ABusinessInteriors[BusType][BusPrice] * ABusinessData[BusID][BusinessLevel]) / 2);
			ShowPlayerDialog(playerid, DialogSellBusiness, DIALOG_STYLE_MSGBOX, "Are you sure?", Msg, "Yes", "No");
		}
	    case 4: // Exit the business
	    {
			Business_Exit(playerid, BusID);
	    }
	}

	return 1;
}

// Let the player change the name of his business
Dialog_ChangeBusinessName(playerid, response, inputtext[])
{
	// Just close the dialog if the player clicked "Cancel" or if the player didn't input any text
	if ((!response) || (strlen(inputtext) == 0)) return 1;

	// Change the name of the business
	format(ABusinessData[APlayerData[playerid][CurrentBusiness]][BusinessName], 100, inputtext);
	// Also update the 3DText at the entrance of the business
	Business_UpdateEntrance(APlayerData[playerid][CurrentBusiness]);
	// Let the player know that the name of his business has been changed
	SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}You've changed the name of your business");

	// Save the business-file
	BusinessFile_Save(APlayerData[playerid][CurrentBusiness]);

	return 1;
}

// Sell the business
Dialog_SellBusiness(playerid, response)
{
	// Just close the dialog if the player clicked "Cancel"
	if(!response) return 1;

	// Get the BusinessID where the player is right now and the business-type
	new BusID = APlayerData[playerid][CurrentBusiness];
	new BusType = ABusinessData[BusID][BusinessType];

	// Set the player in the normal world again
	SetPlayerVirtualWorld(playerid, 0);
	SetPlayerInterior(playerid, 0);
	// Set the position of the player at the entrance of his business
	SetPlayerPos(playerid, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]);

	// Also clear the tracking-variable to track in which business the player is
	APlayerData[playerid][CurrentBusiness] = 0;

	// Clear the owner of the business
	ABusinessData[BusID][Owned] = false;
	ABusinessData[BusID][Owner] = 0;
	// Clear the business-name and business-level
	ABusinessData[BusID][BusinessName] = 0;
	ABusinessData[BusID][BusinessLevel] = 1;

	// Refund the player 50% of the worth of the business
	INT_GivePlayerMoney(playerid, (ABusinessInteriors[BusType][BusPrice] * ABusinessData[BusID][BusinessLevel]) / 2);
	SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}You've sold your business");

	// Clear the business-id from the player
	for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
	{
		// If the business-slot if found where the business was added to the player
		if (APlayerData[playerid][Business][BusSlot] == BusID)
		{
		    // Clear the business-id
		    APlayerData[playerid][Business][BusSlot] = 0;
		    // Stop searching
		    break;
		}
	}

	// Update the 3DText near the business's entrance to show other players that it's for sale again
	Business_UpdateEntrance(BusID);

	// Also save the sold business, otherwise the old ownership-data is still there
	BusinessFile_Save(BusID);

	return 1;
}

// This function processes the /gobus dialog
Dialog_GoBusiness(playerid, response, listitem)
{
	// Just close the dialog if the player clicked "Cancel"
	if(!response) return 1;

	// Setup local variables
	new BusIndex, BusID;

	// The listitem directly indicates the business-index
	BusIndex = listitem;
	BusID = APlayerData[playerid][Business][BusIndex];

	// Check if this is a valid business (BusID != 0)
	if (BusID != 0)
	{
		// Get the coordinates of the business's entrance
		SetPlayerPos(playerid, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]);
	}
	else
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You don't have a business in this business-slot");

	return 1;
}



// ******************************************************************************************************************************
// File functions
// ******************************************************************************************************************************

// This function loads the file that holds the current business-time
BusinessTime_Load()
{
	// Setup local variables
	new File:BFile, LineFromFile[100], ParameterName[50], ParameterValue[50];

	// Try to load the businesstime file
	if (fexist(BusinessTimeFile))
	{
		BFile = fopen(BusinessTimeFile, io_read); // Open the businesstime-file for reading

		fread(BFile, LineFromFile); // Read the first line of the file

		// Keep reading until the end of the file is found (no more data)
		while (strlen(LineFromFile) > 0)
		{
			StripNewLine(LineFromFile); // Strip any newline characters from the LineFromFile
			sscanf(LineFromFile, "s[50]s[50]", ParameterName, ParameterValue); // Extract parametername and parametervalue

			// Store the proper value in the proper place
			if (strcmp(ParameterName, "BusinessTime", false) == 0) // If the parametername is correct ("BusinessTime")
				BusinessTransactionTime = strval(ParameterValue); // Store the BusinessTime

            // Read the next line of the file
			fread(BFile, LineFromFile);
		}

        // Close the file
		fclose(BFile);

        // Return if the file was read correctly
		return 1;
	}
	else
	    return 0; // Return 0 if the file couldn't be read (doesn't exist)
}

// This function saves the file that holds the current business-time
BusinessTime_Save()
{
	// Setup local variables
	new File:BFile, LineForFile[100];

	BFile = fopen(BusinessTimeFile, io_write); // Open the businesstime-file for writing

	format(LineForFile, 100, "BusinessTime %i\r\n", BusinessTransactionTime); // Construct the line: "BusinessTime <BusinessTransactionTime>"
	fwrite(BFile, LineForFile); // And save it to the file

	fclose(BFile); // Close the file

	return 1;
}

// This function will load the business's datafile (used when the server is started to load all businesses)
BusinessFile_Load(BusID)
{
	// Setup local variables
	new file[100], File:BFile, LineFromFile[100], ParameterName[50], ParameterValue[50];

    // Construct the complete filename for this business-file
	format(file, sizeof(file), BusinessFile, BusID);

	// Check if the business-file exists
	if (fexist(file))
	{
	    // Open the businessfile for reading
		BFile = fopen(file, io_read);

        // Read the first line of the file
		fread(BFile, LineFromFile);

		// Keep reading until the end of the file is found (no more data)
		while (strlen(LineFromFile) > 0)
		{
			StripNewLine(LineFromFile); // Strip any newline characters from the LineFromFile
			sscanf(LineFromFile, "s[50]s[50]", ParameterName, ParameterValue); // Extract parametername and parametervalue

			// Check if there is anything in the LineFromFile (skipping empty lines)
			if (strlen(LineFromFile) > 0)
			{
				// Store the proper value in the proper place
				if (strcmp(ParameterName, "BusinessName", false) == 0) // If the parametername is correct ("BusinessName")
				    format(ABusinessData[BusID][BusinessName], 24, ParameterValue); // Store the BusinessName
				if (strcmp(ParameterName, "BusinessX", false) == 0) // If the parametername is correct ("BusinessX")
					ABusinessData[BusID][BusinessX] = floatstr(ParameterValue); // Store the BusinessX
				if (strcmp(ParameterName, "BusinessY", false) == 0) // If the parametername is correct ("BusinessY")
					ABusinessData[BusID][BusinessY] = floatstr(ParameterValue); // Store the BusinessY
				if (strcmp(ParameterName, "BusinessZ", false) == 0) // If the parametername is correct ("BusinessZ")
					ABusinessData[BusID][BusinessZ] = floatstr(ParameterValue); // Store the BusinessZ
				if (strcmp(ParameterName, "BusinessType", false) == 0) // If the parametername is correct ("BusinessType")
					ABusinessData[BusID][BusinessType] = strval(ParameterValue); // Store the BusinessType
				if (strcmp(ParameterName, "BusinessLevel", false) == 0) // If the parametername is correct ("BusinessLevel")
					ABusinessData[BusID][BusinessLevel] = strval(ParameterValue); // Store the BusinessLevel
				if (strcmp(ParameterName, "LastTransaction", false) == 0) // If the parametername is correct ("LastTransaction")
					ABusinessData[BusID][LastTransaction] = strval(ParameterValue); // Store the LastTransaction
				if (strcmp(ParameterName, "Owned", false) == 0) // If the parametername is correct ("Owned")
				{
				    if (strcmp(ParameterValue, "Yes", false) == 0) // If the value "Yes" was read
						ABusinessData[BusID][Owned] = true; // House is owned
					else
						ABusinessData[BusID][Owned] = false; // House is not owned
				}
				if (strcmp(ParameterName, "Owner", false) == 0) // If the parametername is correct ("Owner")
				    format(ABusinessData[BusID][Owner], 24, ParameterValue);
			}

            // Read the next line of the file
			fread(BFile, LineFromFile);
		}

        // Close the file
		fclose(BFile);

		// Create the business-entrance and set data
		Business_CreateEntrance(BusID);
		// Increase the amount of businesses loaded
		TotalBusiness++;

        // Return if the file was read correctly
		return 1;
	}
	else
	    return 0; // Return 0 if the file couldn't be read (doesn't exist)
}

// This function will save the given business
BusinessFile_Save(BusID)
{
	// Setup local variables
	new file[100], File:BFile, LineForFile[100];

    // Construct the complete filename for this business
	format(file, sizeof(file), BusinessFile, BusID);

    // Open the business-file for writing
	BFile = fopen(file, io_write);

	format(LineForFile, 100, "BusinessName %s\r\n", ABusinessData[BusID][BusinessName]); // Construct the line: "BusinessName <BusinessName>"
	fwrite(BFile, LineForFile); // And save it to the file
	format(LineForFile, 100, "BusinessX %f\r\n", ABusinessData[BusID][BusinessX]); // Construct the line: "BusinessX <BusinessX>"
	fwrite(BFile, LineForFile); // And save it to the file
	format(LineForFile, 100, "BusinessY %f\r\n", ABusinessData[BusID][BusinessY]); // Construct the line: "BusinessY <BusinessY>"
	fwrite(BFile, LineForFile); // And save it to the file
	format(LineForFile, 100, "BusinessZ %f\r\n", ABusinessData[BusID][BusinessZ]); // Construct the line: "BusinessZ <BusinessZ>"
	fwrite(BFile, LineForFile); // And save it to the file
	format(LineForFile, 100, "BusinessType %i\r\n", ABusinessData[BusID][BusinessType]); // Construct the line: "BusinessType <BusinessType>"
	fwrite(BFile, LineForFile); // And save it to the file
	format(LineForFile, 100, "BusinessLevel %i\r\n", ABusinessData[BusID][BusinessLevel]); // Construct the line: "BusinessLevel <BusinessLevel>"
	fwrite(BFile, LineForFile); // And save it to the file
	format(LineForFile, 100, "LastTransaction %i\r\n", ABusinessData[BusID][LastTransaction]); // Construct the line: "LastTransaction <LastTransaction>"
	fwrite(BFile, LineForFile); // And save it to the file

	if (ABusinessData[BusID][Owned] == true) // Check if the business is owned
	{
		format(LineForFile, 100, "Owned Yes\r\n"); // Construct the line: "Owned Yes"
		fwrite(BFile, LineForFile); // And save it to the file
	}
	else
	{
		format(LineForFile, 100, "Owned No\r\n"); // Construct the line: "Owned No"
		fwrite(BFile, LineForFile); // And save it to the file
	}

	format(LineForFile, 100, "Owner %s\r\n", ABusinessData[BusID][Owner]); // Construct the line: "Owner <Owner>"
	fwrite(BFile, LineForFile); // And save it to the file

	fclose(BFile); // Close the file

	return 1;
}



// ******************************************************************************************************************************
// Business functions
// ******************************************************************************************************************************

// This timer increases the variable "BusinessTransactionTime" every minute and saves the businesstime file
forward Business_TransactionTimer();
public Business_TransactionTimer()
{
	// Increase the variable by one
    BusinessTransactionTime++;

	// And save it to the file
	BusinessTime_Save();
}

// This function returns the first free business-slot for the given player
Player_GetFreeBusinessSlot(playerid)
{
	// Check if the player has room for another business (he hasn't bought the maximum amount of businesses per player yet)
	// and get the slot-id
	for (new BusIndex; BusIndex < MAX_BUSINESSPERPLAYER; BusIndex++) // Loop through all business-slots of the player
		if (APlayerData[playerid][Business][BusIndex] == 0) // Check if this business slot is free
		    return BusIndex; // Return the free BusIndex for this player

	// If there were no free business-slots, return "-1"
	return -1;
}

// This function sets ownership of the business to the given player
Business_SetOwner(playerid, BusID)
{
	// Setup local variables
	new BusSlotFree, Name[24], Msg[128], BusType;

	// Get the first free business-slot from this player
	BusSlotFree = Player_GetFreeBusinessSlot(playerid);

	// Check if the player has a free business-slot
	if (BusSlotFree != -1)
	{
		// Get the player's name
		GetPlayerName(playerid, Name, sizeof(Name));

		// Store the business-id for the player
		APlayerData[playerid][Business][BusSlotFree] = BusID;
		// Get the business-type
		BusType = ABusinessData[BusID][BusinessType];

		// Let the player pay for the business
		INT_GivePlayerMoney(playerid, -ABusinessInteriors[BusType][BusPrice]);

		// Set the business as owned
		ABusinessData[BusID][Owned] = true;
		// Store the owner-name for the business
		format(ABusinessData[BusID][Owner], 24, Name);
		// Set the level to 1
		ABusinessData[BusID][BusinessLevel] = 1;
		// Set the default business-name
		format(ABusinessData[BusID][BusinessName], 100, ABusinessInteriors[BusType][InteriorName]);
		// Store the current transaction-time (this is used so the player can only retrieve cash from the business from the moment he bought it)
		ABusinessData[BusID][LastTransaction] = BusinessTransactionTime;

		// Also, update 3DText of this business
		Business_UpdateEntrance(BusID);

		// Save the business-file
		BusinessFile_Save(BusID);

		// Let the player know he bought the business
		format(Msg, 128, "{00FF00}You've bought the business for {FFFF00}$%i", ABusinessInteriors[BusType][BusPrice]);
		SendClientMessage(playerid, 0xFFFFFFFF, Msg);
	}
	else
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You already own the maximum amount of allowed businesses per player");

	return 1;
}

// This function adds a pickup for the given business
Business_CreateEntrance(BusID)
{
	// Setup local variables
	new Msg[128], Float:x, Float:y, Float:z, BusType, Icon;

	// Get the coordinates of the house's pickup (usually near the door)
	x = ABusinessData[BusID][BusinessX];
	y = ABusinessData[BusID][BusinessY];
	z = ABusinessData[BusID][BusinessZ];
	// Get the business-type and icon
	BusType = ABusinessData[BusID][BusinessType];
	Icon = ABusinessInteriors[BusType][IconID];

	// Add a dollar-sign to indicate this business
	ABusinessData[BusID][PickupID] = CreateDynamicPickup(1274, 1, x, y, z, 0);
	// Add a map-icon depending on which type the business is
	ABusinessData[BusID][MapIconID] = CreateDynamicMapIcon(x, y, z, Icon, 0, 0, 0, -1, 150.0);

	// Add a new 3DText at the business's location (usually near the door)
	if (ABusinessData[BusID][Owned] == true)
	{
		// Create the 3DText that appears above the business-pickup (displays the businessname, the name of the owner and the current level)
		format(Msg, 128, "%s\nOwned by: %s\nBusiness-level: %i\n/enter", ABusinessData[BusID][BusinessName], ABusinessData[BusID][Owner], ABusinessData[BusID][BusinessLevel]);
		ABusinessData[BusID][DoorText] = CreateDynamic3DTextLabel(Msg, 0x008080FF, x, y, z + 1.0, 50.0);
	}
	else
	{
		// Create the 3DText that appears above the business-pickup (displays the price of the business and the earnings)
		format(Msg, 128, "%s\nAvailable for\n$%i\nEarnings: $%i\n/buybus", ABusinessInteriors[BusType][InteriorName], ABusinessInteriors[BusType][BusPrice], ABusinessInteriors[BusType][BusEarnings]);
		ABusinessData[BusID][DoorText] = CreateDynamic3DTextLabel(Msg, 0x008080FF, x, y, z + 1.0, 50.0);
	}
}

// This function changes the 3DText for the given business (used when buying or selling a business)
Business_UpdateEntrance(BusID)
{
	// Setup local variables
	new Msg[128], BusType;

	// Get the business-type
	BusType = ABusinessData[BusID][BusinessType];

	// Update the 3DText at the business's location (usually near the door)
	if (ABusinessData[BusID][Owned] == true)
	{
		// Create the 3DText that appears above the business-pickup (displays the businessname, the name of the owner and the current level)
		format(Msg, 128, "%s\nOwned by: %s\nBusiness-level: %i\n/enter", ABusinessData[BusID][BusinessName], ABusinessData[BusID][Owner], ABusinessData[BusID][BusinessLevel]);
		UpdateDynamic3DTextLabelText(ABusinessData[BusID][DoorText], 0x008080FF, Msg);
	}
	else
	{
		// Create the 3DText that appears above the business-pickup (displays the price of the business and the earnings)
		format(Msg, 128, "%s\nAvailable for\n$%i\nEarnings: $%i\n/buybus", ABusinessInteriors[BusType][InteriorName], ABusinessInteriors[BusType][BusPrice], ABusinessInteriors[BusType][BusEarnings]);
		UpdateDynamic3DTextLabelText(ABusinessData[BusID][DoorText], 0x008080FF, Msg);
	}
}

// This function pays the current earnings of the given business to the player
Business_PayEarnings(playerid, BusID)
{
	// Setup local variables
	new Msg[128];

	// Get the business-type
	new BusType = ABusinessData[BusID][BusinessType];

	// Calculate the earnings of the business since the last transaction
	// This is calculated by the number of minutes between the current business-time and last business-time, multiplied by the earnings-per-minute and business-level
	new Earnings = (BusinessTransactionTime - ABusinessData[BusID][LastTransaction]) * ABusinessInteriors[BusType][BusEarnings] * ABusinessData[BusID][BusinessLevel];
	// Reset the last transaction time to the current time
	ABusinessData[BusID][LastTransaction] = BusinessTransactionTime;
	// Reward the player with his earnings
	INT_GivePlayerMoney(playerid, Earnings);
	// Inform the player that he has earned money from his business
	format(Msg, 128, "{00FF00}Your business has earned {FFFF00}$%i{00FF00} since your last withdrawl", Earnings);
	SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}

// This function is used to spawn back at the entrance of your business
Business_Exit(playerid, BusID)
{
	// Set the player in the normal world again
	SetPlayerVirtualWorld(playerid, 0);
	SetPlayerInterior(playerid, 0);
	// Set the position of the player at the entrance of his business
	SetPlayerPos(playerid, ABusinessData[BusID][BusinessX], ABusinessData[BusID][BusinessY], ABusinessData[BusID][BusinessZ]);
	// Also clear the tracking-variable to track in which business the player is
	APlayerData[playerid][CurrentBusiness] = 0;

	// Check if there is a timer-value set for exiting the business (this timer freezes the player while the environment is being loaded)
	if (ExitBusinessTimer > 0)
	{
		// Don't allow the player to fall
	    TogglePlayerControllable(playerid, 0);
		// Let the player know he's frozen while the environment loads
		GameTextForPlayer(playerid, "Waiting for the environment to load", ExitBusinessTimer, 4);
		// Start a timer that will allow the player to fall again when the environment has loaded
		SetTimerEx("Business_ExitTimer", ExitBusinessTimer, false, "ii", playerid, BusID);
	}

	return 1;
}

forward Business_ExitTimer(playerid, BusID);
public Business_ExitTimer(playerid, BusID)
{
	// Allow the player to move again (environment should have been loaded now)
    TogglePlayerControllable(playerid, 1);

	return 1;
}



// ******************************************************************************************************************************
// Support functions
// ******************************************************************************************************************************

// This function is copied from the include-file "dutils.inc"
stock StripNewLine(string[])
{
	new len = strlen(string); // Get the length of the given string

	if (string[0] == 0) return ; // If the given string is empty, exit the function
	if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) // If the string ends with \n or \r
	{
		string[len - 1] = 0; // Replace the \n or \r with a 0 character
		if (string[0]==0) return ; // If the string became empty, exit the function
		if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) // Check again if the string ends with \n or \r
			string[len - 2] = 0; // Replace the \n or \r again with a 0 character
	}
}



// ******************************************************************************************************************************
// Special functions that try to access external public functions to retreive or set data from another script
// ******************************************************************************************************************************

// This function is used to get the player's money
INT_GetPlayerMoney(playerid)
{
	// Setup local variables
	new Money;

	// Try to call the external function to get the player's money (used to get the serversided money for this player)
	Money = CallRemoteFunction("Admin_GetPlayerMoney", "i", playerid);

	// The external function returned "0" (as the player doesn't have any money yet), or the function is not used in another script
	if (Money == 0)
		return GetPlayerMoney(playerid); // Return the normal money of the player
	else
		return Money; // Return the money that was returned by the external function
}

// This function is used to set the player's money
INT_GivePlayerMoney(playerid, Money)
{
	// Setup local variables
	new Success;

	// Try to call the external function to get the player's money (used to get the serversided money for this player)
	Success = CallRemoteFunction("Admin_GivePlayerMoney", "ii", playerid, Money);

	// The external function returned "0" as the function is not used in another script
	if (Success == 0)
		GivePlayerMoney(playerid, Money); // Use the normal money (client-sided money)
}

// This function checks if the admin-level of a player is sufficient
INT_CheckPlayerAdminLevel(playerid, AdminLevel)
{
	// Setup local variables
	new Level;

	// Check if the player is an RCON admin
	if (IsPlayerAdmin(playerid))
	    return 1; // Return 1 to indicate this player has a sufficient admin-level to use a command

	// If the player is not an RCON admin, try to get his admin-level from an external script using a remote function
	Level = CallRemoteFunction("Admin_GetPlayerAdminLevel", "i", playerid);
	// Check if the player has a sufficient admin-level
	if (Level >= AdminLevel)
	    return 1; // Return 1 to indicate this player has a sufficient admin-level
	else
		return 0; // Return 0 to indicate this player has an insufficient admin-level
}

// This function checks if the player has logged in properly by entering his password
INT_IsPlayerLoggedIn(playerid)
{
	// Setup local variables
	new LoggedIn;

	// Try to determine if the player logged in properly by entering his password in another script
	LoggedIn = CallRemoteFunction("Admin_IsPlayerLoggedIn", "i", playerid);

	// Check if the player has logged in properly
	switch (LoggedIn)
	{
		case 0: return 1; // No admin script present that holds the LoggedIn status of a player, so allow a command to be used
		case 1: return 1; // The player logged in properly by entering his password, allow commands to be used
		case -1: return 0; // There is an admin script present, but the player hasn't entered his password yet, so block all commands
							// This prevents executing the commands using F6 during login with an admin-account before entering a password
	}

	// In any other case, block all commands
	return 0;
}

// This function tries to cetermine if the player is in jail
INT_IsPlayerJailed(playerid)
{
	// Setup local variables
	new Jailed;

	// Try to determine if the player is jailed
	Jailed = CallRemoteFunction("Admin_IsPlayerJailed", "i", playerid);

	// Check if the player is jailed
	switch (Jailed)
	{
		case 0: return 0; // No admin script present, so there is no jail either, player cannot be jailed in this case
		case 1: return 1; // The player is jailed, so return "1"
		case -1: return 0; // There is an admin script present, but the player isn't jailed
	}

	// In any other case, return "0" (player not jailed)
	return 0;
}



// ******************************************************************************************************************************
// External functions to be used from within other filterscripts or gamemode (these aren't called anywhere inside this script)
// These functions can be called from other filterscripts or the gamemode to get data from the housing filterscript
// ******************************************************************************************************************************



// ******************************************************************************************************************************
// Functions that need to be placed in the gamemode or filterscript which holds the playerdata
// Only needed when the server uses server-sided money, otherwise the normal money is used
// ******************************************************************************************************************************

/*
// This function is used to get the player's money
forward Admin_GetPlayerMoney(playerid);
public Admin_GetPlayerMoney(playerid)
{
	return APlayerData[playerid][PlayerMoney];
}

// This function is used to get the player's money
forward Admin_GivePlayerMoney(playerid, Money);
public Admin_GivePlayerMoney(playerid, Money)
{
	// Add the given money to the player's account
	APlayerData[playerid][PlayerMoney] = APlayerData[playerid][PlayerMoney] + Money;

	// Return that the function had success
	return 1;
}

// This function is used to get the player's admin-level
forward Admin_GetPlayerAdminLevel(playerid);
public Admin_GetPlayerAdminLevel(playerid)
{
	return APlayerData[playerid][AdminLevel];
}

// This function is used to determine if the player has logged in (he succesfully entered his password)
forward Admin_IsPlayerLoggedIn(playerid);
public Admin_IsPlayerLoggedIn(playerid)
{
	if (APlayerData[playerid][LoggedIn] == true)
	    return 1; // The player has logged in succesfully
	else
	    return -1; // The player hasn't logged in (yet)
}

// This function is used to determine if a player is jailed
forward Admin_IsPlayerJailed(playerid);
public Admin_IsPlayerJailed(playerid)
{
	// Check if a player has jaimtime left
	if (APlayerData[playerid][PlayerJailed] == true)
	    return 1; // The player is still jailed
	else
	    return -1; // The player is not jailed
}
*/



Re: Problem With PPC_Business And JLAdmin - Beckett - 27.06.2014

Dialog IDs are matching change the dialog IDs of the filterscripts.