Advertisement
Creigas

Creig's Roleplay

Nov 17th, 2013
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 62.97 KB | None | 0 0
  1. /*
  2. This gamemode was made by Creig(Edvinas).
  3.     - Last update 2013-11-17
  4. Credits:
  5.     - Y_Less for YSI library, sscanf, whirpool and foreach,
  6.     - Wups for anti money cheat,
  7.     - And of course for me(Creig).
  8. Please don't remove any credits, be HONEST
  9. */
  10. #include <a_samp>
  11. #include <YSI\y_ini>
  12. #include <YSI\y_commands>
  13. #include <sscanf2>
  14. #include <money>  
  15. #include <foreach>  
  16. /* ======================================================================================================================================= */
  17. native WP_Hash(buffer[], len, const str[]);
  18. /* ======================================================================================================================================= */
  19. #define DIALOG_REGISTER 1
  20. #define DIALOG_LOGIN 2
  21. #define DIALOG_GENDER 3
  22. #define DIALOG_LICENSE 4
  23. #define DIALOG_PASSPORT 5
  24. #define DIALOG_ACP 6
  25. #define DIALOG_ACP_PLAYER 7 //this uses ids till 16, don't change it
  26. #define DIALOG_ACP_SERVER 16 //this uses ids till 19, don't change it
  27. #define DIALOG_OCP 19 //this uses ids till 23, don't change it
  28. #define DIALOG_GPS 24
  29. #define DIALOG_CLEANER 26
  30. #define DIALOG_BUS 28
  31. #define DIALOG_PAPER 30
  32. #define DIALOG_COURIER 32
  33. /* ======================================================================================================================================= */
  34. new DMVENTER;
  35. new DMVEXIT;
  36. new DMVINFO;
  37. new PDENTER;
  38. new PDEXIT;
  39. new PDPASS;
  40. new
  41.     JoinCleaner,
  42.     JoinPaperBoy,
  43.     JoinCourier,
  44.     JoinBus;
  45. new
  46.     DMVCP[MAX_PLAYERS],
  47.     CCP[MAX_PLAYERS],
  48.     BCP[MAX_PLAYERS],
  49.     COCP[MAX_PLAYERS],
  50.     PCP[MAX_PLAYERS];
  51. new LevelTimer;
  52. /* ======================================================================================================================================= */
  53. #define CLEANERTEAM 1
  54. #define CLEANERSALARY 50
  55. #define BUSTEAM 2
  56. #define BUSSALARY 100
  57. #define PAPERTEAM 3
  58. #define PAPERSALARY 75
  59. #define COURIERTEAM 4
  60. #define COURIERSALARY 150
  61. #define JOBFREEZETIME 6000
  62. /* ======================================================================================================================================= */
  63. #define NOPASS "You don't have a passport. You can get it in the Police Departament."
  64. #define NOLICENSE "You don't have a driving license. You can get it in DMV."
  65. #define NOSALARY "You can't take your salary at the moment."
  66. #define NOADMIN "You don't have a permission to use this command."
  67. #define ACPTEXT "Players Options\nServer Options"
  68. #define OCPTEXT "Make admin\nMake owner\nTake away admin\nGive license"
  69. #define ACPTEXTPLAYER "Kick\nDisarm\nHeal\nMute\nUnmute\nGet\nGoto\nBan"
  70. #define ACPTEXTSERVER "Set weather\nSet time"
  71. /* ======================================================================================================================================= */
  72. #define DMVPRICE 50 //price for taking a driving test
  73. #define PASSPORTPRICE 20 //passport price
  74. /* ======================================================================================================================================= */
  75. #define NAMEOFSERVER "Creig's Roleplay"
  76. #define PRINT_START "Made in Lithuania by Creig."
  77. #define PATH "/Profiles/%s.ini"
  78. /* ======================================================================================================================================= */
  79. enum pInfo
  80. {
  81.     Password[129],
  82.     Cash,
  83.     AdminLevel,
  84.     Logged,
  85.     Interior,
  86.     Skin,
  87.     Gender,
  88.     License,
  89.     TakingTest,
  90.     Passport,
  91.     Muted,
  92.     Job,
  93.     Salary,
  94.     EXP,
  95.     Level,
  96.     Time,
  97.     Float: PosX,
  98.     Float: PosY,
  99.     Float: PosZ
  100. }
  101. new ZI[MAX_PLAYERS][pInfo];
  102. /* ======================================================================================================================================= */
  103. forward LoadUser_data(playerid,name[],value[]);
  104. public LoadUser_data(playerid,name[],value[])
  105. {
  106.     INI_String("Password",ZI[playerid][Password], 129);
  107.     INI_Int("Cash",ZI[playerid][Cash]);
  108.     INI_Int("AdminLevel",ZI[playerid][AdminLevel]);
  109.     INI_Int("Interior",ZI[playerid][Interior]);
  110.     INI_Int("Skin",ZI[playerid][Skin]);
  111.     INI_Int("Gender",ZI[playerid][Gender]);
  112.     INI_Int("License",ZI[playerid][License]);
  113.     INI_Int("Passport",ZI[playerid][Passport]);
  114.     INI_Int("Muted",ZI[playerid][Muted]);
  115.     INI_Int("Job",ZI[playerid][Job]);
  116.     INI_Int("Salary",ZI[playerid][Salary]);
  117.     INI_Int("EXP",ZI[playerid][EXP]);
  118.     INI_Int("Level",ZI[playerid][Level]);
  119.     INI_Int("Time",ZI[playerid][Time]);
  120.     INI_Float("PosX",ZI[playerid][PosX]);
  121.     INI_Float("PosY",ZI[playerid][PosY]);
  122.     INI_Float("PosZ",ZI[playerid][PosZ]);
  123.     return 1;
  124. }
  125.  
  126. stock SaveChar(playerid)
  127. {
  128.     GetPlayerPos(playerid, ZI[playerid][PosX], ZI[playerid][PosY], ZI[playerid][PosZ]);
  129.    
  130.     new INI:File = INI_Open(UserPath(playerid));
  131.     INI_SetTag(File,"PlayerData");
  132.     INI_WriteInt(File,"Cash",GetCash(playerid));
  133.     INI_WriteInt(File,"AdminLevel",ZI[playerid][AdminLevel]);
  134.     INI_WriteInt(File,"Interior",GetPlayerInterior(playerid));
  135.     INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
  136.     INI_WriteInt(File,"Gender",ZI[playerid][Gender]);
  137.     INI_WriteInt(File,"License",ZI[playerid][License]);
  138.     INI_WriteInt(File,"Passport",ZI[playerid][Passport]);
  139.     INI_WriteInt(File,"Muted",ZI[playerid][Muted]);
  140.     INI_WriteInt(File,"Job",GetPlayerTeam(playerid));
  141.     INI_WriteInt(File,"Salary",ZI[playerid][Salary]);
  142.     INI_WriteInt(File,"EXP",ZI[playerid][EXP]);
  143.     INI_WriteInt(File,"Level",GetPlayerScore(playerid));
  144.     INI_WriteInt(File,"Time",ZI[playerid][Time]);
  145.     INI_WriteFloat(File,"PosX",ZI[playerid][PosX]);
  146.     INI_WriteFloat(File,"PosY",ZI[playerid][PosY]);
  147.     INI_WriteFloat(File,"PosZ",ZI[playerid][PosZ]);
  148.     INI_Close(File);
  149.     return 1;
  150. }
  151. /* ======================================================================================================================================= */
  152. YCMD:me(playerid, params[], help)
  153. {
  154.     #pragma unused help
  155.     #pragma unused params
  156.     new text[100], string[128];
  157.     if(sscanf(params, "s[99]", text)) return PlayerCommand(playerid, "USAGE: /me [action]");
  158.     format(string, sizeof(string), "** %s %s", RemoveUnderScore(playerid), text);
  159.     NewProx(30.0, playerid, string, 0xC2A2DAAA);
  160.     return 1;
  161. }
  162.  
  163. YCMD:do(playerid, params[], help)
  164. {
  165.     #pragma unused help
  166.     #pragma unused params
  167.     new text[100], string[128];
  168.     if(sscanf(params, "s[100]", text)) return PlayerCommand(playerid, "USAGE: /do [action]");
  169.     format(string, sizeof(string), "** %s (( %s ))", text, RemoveUnderScore(playerid));
  170.     NewProx(30.0, playerid, string, 0xC2A2DAAA);
  171.     return 1;
  172. }
  173. //administrator panel
  174. YCMD:acp(playerid, params[], help)
  175. {
  176.     #pragma unused help
  177.     #pragma unused params
  178.     switch(ZI[playerid][AdminLevel])
  179.     {
  180.         case 0: FailMessage(playerid, NOADMIN);
  181.         case 1 .. 2:
  182.         {
  183.             new string[100];
  184.             format(string, sizeof(string), ACPTEXT);
  185.             ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", string, "Choose", "Exit");
  186.         }
  187.     }
  188.     return 1;
  189. }
  190. YCMD:ocp(playerid, params[], help)
  191. {
  192.     #pragma unused help
  193.     #pragma unused params
  194.     switch(ZI[playerid][AdminLevel])
  195.     {
  196.         case 0 .. 1: FailMessage(playerid, NOADMIN);
  197.         case 2:
  198.         {
  199.             new string[100];
  200.             format(string, sizeof(string), OCPTEXT);
  201.             ShowPlayerDialog(playerid, DIALOG_OCP, DIALOG_STYLE_LIST, "OCP", string, "Choose", "Exit");
  202.         }
  203.     }
  204.     return 1;
  205. }
  206. YCMD:gps(playerid, params[], help)
  207. {
  208.     #pragma unused params
  209.     #pragma unused help
  210.     ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "GPS", "Institutions\n{f1ee0f}Deactivate GPS", "OK", "Turn Off");
  211.     return 1;
  212. }
  213. /* ======================================================================================================================================= */
  214. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  215. {
  216.     switch(dialogid)
  217.     {
  218.         case DIALOG_REGISTER:
  219.         {
  220.             if(response)
  221.             {
  222.                 if(strlen(inputtext) < 4 || strlen(inputtext) > 18) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Register","Your password is too short or too long(min 4 symbols, max 18 symbols)\nPlease register to server if you want to play.","Register","");
  223.                 new INI:File = INI_Open(UserPath(playerid));
  224.                 INI_SetTag(File,"PlayerData");
  225.                 new HashPass[129];
  226.                 WP_Hash(HashPass, sizeof(HashPass), inputtext);
  227.                 INI_WriteString(File,"Password",HashPass);
  228.                 INI_Close(File);
  229.                 ZI[playerid][Gender] = 0;
  230.                 ShowPlayerDialog(playerid, DIALOG_GENDER, DIALOG_STYLE_MSGBOX, "Gender", "Please choose your gender.", "Male", "Female");
  231.                 return 1;
  232.             }
  233.             if (!response) return Kick(playerid);
  234.         }
  235.         case DIALOG_GENDER:
  236.         {
  237.             if(response)
  238.             {
  239.                 ZI[playerid][Gender] = 1;
  240.                 ZI[playerid][Logged] = 1;
  241.                 PlayerMessage(playerid, "So you are a male. Good luck!");
  242.                 SetSpawnInfo(playerid, 0, 188, -1980.1826,884.3292,45.2031,88.9567, 0, 0, 0, 0, 0, 0);
  243.                 SpawnPlayer(playerid);
  244.                 GiveCash(playerid, 1000);
  245.             }
  246.             if(!response)
  247.             {
  248.                 ZI[playerid][Gender] = 2;
  249.                 ZI[playerid][Logged] = 1;
  250.                 PlayerMessage(playerid, "So you are a female. Good luck!");
  251.                 SetSpawnInfo(playerid, 0, 90, -1980.1826,884.3292,45.2031,88.9567, 0, 0, 0, 0, 0, 0);
  252.                 SpawnPlayer(playerid);
  253.                 GiveCash(playerid, 1000);
  254.             }
  255.         }
  256.  
  257.         case DIALOG_LOGIN:
  258.         {
  259.             if (!response) return Kick (playerid);
  260.             if(response)
  261.             {
  262.                 new HashPass[129];
  263.                 WP_Hash(HashPass, sizeof(HashPass), inputtext);
  264.                 if(strcmp(HashPass, ZI[playerid][Password]) == 0)
  265.                 {
  266.                     INI_ParseFile(UserPath(playerid), "LoadUser_data", .bExtra = true, .extra = playerid);
  267.                     GiveCash(playerid, ZI[playerid][Cash]);
  268.                     if(ZI[playerid][Gender] < 1) return ShowPlayerDialog(playerid, DIALOG_GENDER, DIALOG_STYLE_MSGBOX, "Gender", "Please choose your gender.", "Male", "Female");
  269.                     ZI[playerid][Logged] = 1;
  270.                     SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  271.                     SpawnPlayer(playerid);
  272.  
  273.                 }
  274.                 else
  275.                 {
  276.                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login","You have entered incorrect password.\nPlease login to server if you want to play.","Login","");
  277.                 }
  278.                 return 1;
  279.             }
  280.         }
  281.         case DIALOG_LICENSE:
  282.         {
  283.             if(response)
  284.             {
  285.                 if(ZI[playerid][Passport] == 0) return FailMessage(playerid, NOPASS);
  286.                 if(GetCash(playerid) >= DMVPRICE)
  287.                 {
  288.                     new stringg[100];
  289.                     format(stringg, sizeof(stringg), "You have paid $%d, now go outside and enter DMV vehicle.", DMVPRICE);
  290.                     PlayerMessage(playerid, stringg);
  291.                     GiveCash(playerid, -DMVPRICE);
  292.                     ZI[playerid][License] = 1;
  293.                 } else {
  294.                     FailMessage(playerid, "You don't have enough money.");
  295.                 }
  296.             }
  297.             if(!response) return 1;
  298.         }
  299.         case DIALOG_PASSPORT:
  300.         {
  301.             if(response)
  302.             {
  303.                 if(GetCash(playerid) >= PASSPORTPRICE)
  304.                 {
  305.                     GiveCash(playerid, -PASSPORTPRICE);
  306.                     ZI[playerid][Passport] = 1;
  307.                     PlayerMessage(playerid, "You have became a real citizen.");
  308.                 } else {
  309.                     FailMessage(playerid, "You don't have enough money for that.");
  310.                 }
  311.             }
  312.             if(!response) return 1;
  313.         }
  314.         case DIALOG_ACP:
  315.         {
  316.             switch(listitem)
  317.             {
  318.                 case 0:
  319.                 {
  320.                     if(response)
  321.                     {
  322.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  323.                     }
  324.                     if(!response) return 1;
  325.                 }
  326.                 case 1:
  327.                 {
  328.                     if(response)
  329.                     {
  330.                         ShowPlayerDialog(playerid, DIALOG_ACP_SERVER, DIALOG_STYLE_LIST, "Server Options", ACPTEXTSERVER, "Choose", "Back");
  331.                     }
  332.                     if(!response) return 1;
  333.                 }
  334.             }
  335.         }
  336.         case DIALOG_ACP_PLAYER:
  337.         {
  338.             switch(listitem)
  339.             {
  340.                 case 0:
  341.                 {
  342.                     if(response)
  343.                     {
  344.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 1, DIALOG_STYLE_INPUT, "Kick", "Enter player ID or name", "Kick", "Back");
  345.                     }
  346.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  347.                 }
  348.                
  349.                 case 1:
  350.                 {
  351.                     if(response)
  352.                     {
  353.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 2, DIALOG_STYLE_INPUT, "Disarm", "Enter player ID or name", "Disarm", "Back");
  354.                     }
  355.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  356.                 }
  357.                
  358.                 case 2:
  359.                 {
  360.                     if(response)
  361.                     {
  362.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 3, DIALOG_STYLE_INPUT, "Heal", "Enter player ID or name", "Heal", "Back");
  363.                     }
  364.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  365.                 }
  366.                
  367.                 case 3:
  368.                 {
  369.                     if(response)
  370.                     {
  371.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 4, DIALOG_STYLE_INPUT, "Mute", "Enter player ID or name", "Mute", "Back");
  372.                     }
  373.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  374.                 }
  375.                
  376.                 case 4:
  377.                 {
  378.                     if(response)
  379.                     {
  380.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 5, DIALOG_STYLE_INPUT, "Unmute", "Enter player ID or name", "Unmute", "Back");
  381.                     }
  382.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  383.                 }
  384.                 case 5:
  385.                 {
  386.                     if(response)
  387.                     {
  388.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 6, DIALOG_STYLE_INPUT, "Get", "Enter player ID or name", "Get", "Back");
  389.                     }
  390.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  391.                 }
  392.                 case 6:
  393.                 {
  394.                     if(response)
  395.                     {
  396.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 7, DIALOG_STYLE_INPUT, "Goto", "Enter player ID or name", "Goto", "Back");
  397.                     }
  398.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  399.                 }
  400.                 case 7:
  401.                 {
  402.                     if(response)
  403.                     {
  404.                         ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 8, DIALOG_STYLE_INPUT, "Ban", "Enter player ID or name", "Ban", "Back");
  405.                     }
  406.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  407.                 }
  408.             }
  409.         }
  410.         case DIALOG_ACP_SERVER:
  411.         {
  412.             switch(listitem)
  413.             {
  414.                 case 0:
  415.                 {
  416.                     if(response)
  417.                     {
  418.                         ShowPlayerDialog(playerid, DIALOG_ACP_SERVER + 1, DIALOG_STYLE_INPUT, "Set server weather", "Enter weather ID(1-19)", "Set", "Back");
  419.                     }
  420.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  421.                 }
  422.                 case 1:
  423.                 {
  424.                     if(response)
  425.                     {
  426.                         ShowPlayerDialog(playerid, DIALOG_ACP_SERVER + 2, DIALOG_STYLE_INPUT, "Set server time", "Enter time(1-24)", "Set", "Back");
  427.                     }
  428.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP, DIALOG_STYLE_LIST, "ACP", ACPTEXT, "Choose", "Exit");
  429.                 }
  430.             }
  431.         }
  432.         case DIALOG_ACP_SERVER + 1:
  433.         {
  434.             if(response)
  435.             {
  436.                 new weather;
  437.                 if(sscanf(inputtext, "d", weather)) return ShowPlayerDialog(playerid, DIALOG_ACP_SERVER + 1, DIALOG_STYLE_INPUT, "Set server weather", "Enter weather ID(1-19)", "Set", "Back");
  438.                 if(weather <= 0 || weather >= 20) return ShowPlayerDialog(playerid, DIALOG_ACP_SERVER + 1, DIALOG_STYLE_INPUT, "Set server weather", "Bad weather ID\nEnter weather ID(1-19)", "Set", "Back");
  439.                 SetWeather(weather);
  440.                 new string[100];
  441.                 format(string, 100, "Admin %s changed server weather.", RemoveUnderScore(playerid));
  442.                 AdminMessage(string);
  443.             }
  444.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_SERVER, DIALOG_STYLE_LIST, "Server Options", ACPTEXTSERVER, "Choose", "Back");
  445.         }
  446.         case DIALOG_ACP_SERVER + 2:
  447.         {
  448.             if(response)
  449.             {
  450.                 new time;
  451.                 if(sscanf(inputtext, "d", time)) return ShowPlayerDialog(playerid, DIALOG_ACP_SERVER + 2, DIALOG_STYLE_INPUT, "Set server time", "Enter time(1-24)", "Set", "Back");
  452.                 if(time < 1 || time > 24) return ShowPlayerDialog(playerid, DIALOG_ACP_SERVER + 2, DIALOG_STYLE_INPUT, "Set server time", "Bad time\nEnter weather ID(1-19)", "Set", "Back");
  453.                 SetWorldTime(time);
  454.                 new string[100];
  455.                 format(string, 100, "Admin %s changed server time.", RemoveUnderScore(playerid));
  456.                 AdminMessage(string);
  457.             }
  458.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_SERVER, DIALOG_STYLE_LIST, "Server Options", ACPTEXTSERVER, "Choose", "Back");
  459.         }
  460.        
  461.         case DIALOG_ACP_PLAYER + 1:
  462.         {
  463.             if(response)
  464.             {
  465.                 new name;
  466.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 1, DIALOG_STYLE_INPUT, "Kick", "Enter player ID or name", "Kick", "Back");
  467.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 1, DIALOG_STYLE_INPUT, "Kick", "Incorrect ID or name\nEnter player ID or name", "Kick", "Back");
  468.                 if(ZI[playerid][AdminLevel] <= ZI[name][AdminLevel]) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 1, DIALOG_STYLE_INPUT, "Kick", "You need to be higher admin level\nEnter player ID or name", "Kick", "Back");
  469.                 Kick(name);
  470.                 new string[100];
  471.                 format(string, 100, "Admin %s kicked a player %s.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  472.                 AdminMessage(string);
  473.             }
  474.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  475.         }
  476.         case DIALOG_ACP_PLAYER + 2:
  477.         {
  478.             if(response)
  479.             {
  480.                 new name;
  481.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 2, DIALOG_STYLE_INPUT, "Disarm", "Enter player ID or name", "Disarm", "Back");
  482.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 2, DIALOG_STYLE_INPUT, "Disarm", "Incorrect ID or name\nEnter player ID or name", "Disarm", "Back");
  483.                 if(ZI[playerid][AdminLevel] <= ZI[name][AdminLevel]) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 2, DIALOG_STYLE_INPUT, "Disarm", "You need to be higher admin level\nEnter player ID or name", "Disarm", "Back");
  484.                 ResetPlayerWeapons(name);
  485.                 new string[100];
  486.                 format(string, 100, "Admin %s disarmed a player %s.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  487.                 AdminMessage(string);
  488.             }
  489.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  490.         }
  491.         case DIALOG_ACP_PLAYER + 3:
  492.         {
  493.             if(response)
  494.             {
  495.                 new name;
  496.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 3, DIALOG_STYLE_INPUT, "Heal", "Enter player ID or name", "Heal", "Back");
  497.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 3, DIALOG_STYLE_INPUT, "Heal", "Incorrect ID or name\nEnter player ID or name", "Heal", "Back");
  498.                 SetPlayerHealth(playerid, 100.0);
  499.                 SetPlayerArmour(playerid, 100.0);
  500.             }
  501.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  502.         }
  503.         case DIALOG_ACP_PLAYER + 4:
  504.         {
  505.             if(response)
  506.             {
  507.                 new name;
  508.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 4, DIALOG_STYLE_INPUT, "Mute", "Enter player ID or name", "Mute", "Back");
  509.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 4, DIALOG_STYLE_INPUT, "Mute", "Incorrect ID or name\nEnter player ID or name", "Mute", "Back");
  510.                 if(ZI[playerid][AdminLevel] <= ZI[name][AdminLevel]) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 4, DIALOG_STYLE_INPUT, "Mute", "You need to be higher admin level\nEnter player ID or name", "Mute", "Back");
  511.                 ZI[name][Muted] = 1;
  512.                 new string[100];
  513.                 format(string, 100, "Admin %s muted player %s.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  514.                 AdminMessage(string);
  515.             }
  516.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  517.         }
  518.         case DIALOG_ACP_PLAYER + 5:
  519.         {
  520.             if(response)
  521.             {
  522.                 new name;
  523.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 5, DIALOG_STYLE_INPUT, "Unmute", "Enter player ID or name", "Unmute", "Back");
  524.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 5, DIALOG_STYLE_INPUT, "Unmute", "Incorrect ID or name\nEnter player ID or name", "Unmute", "Back");
  525.                 if(ZI[playerid][AdminLevel] <= ZI[name][AdminLevel]) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 5, DIALOG_STYLE_INPUT, "Unmute", "You need to be higher admin level\nEnter player ID or name", "Unmute", "Back");
  526.                 ZI[name][Muted] = 0;
  527.                 new string[100];
  528.                 format(string, 100, "Admin %s unmuted player %s.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  529.                 AdminMessage(string);
  530.             }
  531.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  532.         }
  533.         case DIALOG_ACP_PLAYER + 6:
  534.         {
  535.             if(response)
  536.             {
  537.                 new name;
  538.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 6, DIALOG_STYLE_INPUT, "Get", "Enter player ID or name", "Get", "Back");
  539.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 6, DIALOG_STYLE_INPUT, "Get", "Incorrect ID or name\nEnter player ID or name", "Get", "Back");
  540.                 new Float: PoszX, Float: PoszY, Float: PoszZ;
  541.                 GetPlayerPos(playerid, PoszX, PoszY, PoszZ);
  542.                 SetPlayerPos(name, PoszX, PoszY, PoszZ);
  543.                 PlayerMessage(playerid, "Administrator teleported you to himself.");
  544.             }
  545.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  546.         }
  547.         case DIALOG_ACP_PLAYER + 7:
  548.         {
  549.             if(response)
  550.             {
  551.                 new name;
  552.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 7, DIALOG_STYLE_INPUT, "Get", "Enter player ID or name", "Get", "Back");
  553.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 7, DIALOG_STYLE_INPUT, "Get", "Incorrect ID or name\nEnter player ID or name", "Get", "Back");
  554.                 new Float: PoszX, Float: PoszY, Float: PoszZ;
  555.                 GetPlayerPos(name, PoszX, PoszY, PoszZ);
  556.                 SetPlayerPos(playerid, PoszX, PoszY, PoszZ);
  557.                 PlayerMessage(name, "Administrator has teleported to you.");
  558.             }
  559.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  560.         }
  561.         case DIALOG_ACP_PLAYER + 8:
  562.         {
  563.             if(response)
  564.             {
  565.                 new name;
  566.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 8, DIALOG_STYLE_INPUT, "Ban", "Enter player ID or name", "Ban", "Back");
  567.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 8, DIALOG_STYLE_INPUT, "Ban", "Incorrect ID or name\nEnter player ID or name", "Ban", "Back");
  568.                 if(ZI[playerid][AdminLevel] <= ZI[name][AdminLevel]) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER + 8, DIALOG_STYLE_INPUT, "Ban", "You need to be higher admin level\nEnter player ID or name", "Ban", "Back");
  569.                 Ban(name);
  570.                 new string[100];
  571.                 format(string, 100, "Admin %s banned player %s.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  572.                 AdminMessage(string);
  573.             }
  574.             if(!response) return ShowPlayerDialog(playerid, DIALOG_ACP_PLAYER, DIALOG_STYLE_LIST, "Player Options", ACPTEXTPLAYER, "Choose", "Back");
  575.         }
  576.         case DIALOG_OCP:
  577.         {
  578.             switch(listitem)
  579.             {
  580.                 case 0:
  581.                 {
  582.                     if(response)
  583.                     {
  584.                         ShowPlayerDialog(playerid, DIALOG_OCP + 1, DIALOG_STYLE_INPUT, "Make admin", "Enter player name or ID", "Make", "Back");
  585.                     }
  586.                     if(!response) return 1;
  587.                 }
  588.                 case 1:
  589.                 {
  590.                     if(response)
  591.                     {
  592.                         ShowPlayerDialog(playerid, DIALOG_OCP + 2, DIALOG_STYLE_INPUT, "Make owner", "Enter player name or ID", "Make", "Back");
  593.                     }
  594.                     if(!response) return 1;
  595.                 }
  596.                 case 2:
  597.                 {
  598.                     if(response)
  599.                     {
  600.                         ShowPlayerDialog(playerid, DIALOG_OCP + 3, DIALOG_STYLE_INPUT, "Take away status", "Enter player name or ID", "Take", "Back");
  601.                     }
  602.                     if(!response) return 1;
  603.                 }
  604.                 case 3:
  605.                 {
  606.                     if(response)
  607.                     {
  608.                         ShowPlayerDialog(playerid, DIALOG_OCP + 4, DIALOG_STYLE_INPUT, "Give license", "Enter player name or ID", "Take", "Back");
  609.                     }
  610.                     if(!response) return 1;
  611.                 }
  612.             }
  613.         }
  614.         case DIALOG_OCP + 1:
  615.         {
  616.             if(response)
  617.             {
  618.                 new name;
  619.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_OCP + 1, DIALOG_STYLE_INPUT, "Make admin", "Enter player name or ID", "Make", "Back");
  620.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_OCP + 1, DIALOG_STYLE_INPUT, "Make admin", "Incorrect player name or ID\nEnter player name or ID", "Make", "Back");
  621.                 if(ZI[name][AdminLevel] > 0) return ShowPlayerDialog(playerid, DIALOG_OCP + 1, DIALOG_STYLE_INPUT, "Make admin", "This player is administrator anyway\nEnter player name or ID", "Make", "Back");
  622.                 ZI[name][AdminLevel] = 1;
  623.                 new string[100];
  624.                 format(string, 100, "Admin %s gave %s administrator status.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  625.                 AdminMessage(string);
  626.             }
  627.             if(!response) return ShowPlayerDialog(playerid, DIALOG_OCP, DIALOG_STYLE_LIST, "OCP", OCPTEXT, "Choose", "Exit");
  628.         }
  629.         case DIALOG_OCP + 2:
  630.         {
  631.             if(response)
  632.             {
  633.                 new name;
  634.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_OCP + 2, DIALOG_STYLE_INPUT, "Make owner", "Enter player name or ID", "Make", "Back");
  635.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_OCP + 2, DIALOG_STYLE_INPUT, "Make owner", "Incorrect player name or ID\nEnter player name or ID", "Make", "Back");
  636.                 if(ZI[name][AdminLevel] > 1) return ShowPlayerDialog(playerid, DIALOG_OCP + 2, DIALOG_STYLE_INPUT, "Make owner", "This player is owner anyway\nEnter player name or ID", "Make", "Back");
  637.                 ZI[name][AdminLevel] = 2;
  638.                 new string[100];
  639.                 format(string, 100, "Admin %s gave %s owner status.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  640.                 AdminMessage(string);
  641.             }
  642.             if(!response) return ShowPlayerDialog(playerid, DIALOG_OCP, DIALOG_STYLE_LIST, "OCP", OCPTEXT, "Choose", "Exit");
  643.         }
  644.         case DIALOG_OCP + 3:
  645.         {
  646.             if(response)
  647.             {
  648.                 new name;
  649.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_OCP + 3, DIALOG_STYLE_INPUT, "Take away status", "Enter player name or ID", "Take", "Back");
  650.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_OCP + 3, DIALOG_STYLE_INPUT, "Take away status", "Incorrect player name or ID\nEnter player name or ID", "Take", "Back");
  651.                 if(ZI[name][AdminLevel] > 1) return ShowPlayerDialog(playerid, DIALOG_OCP + 3, DIALOG_STYLE_INPUT, "Take away status", "This player is owner\nEnter player name or ID", "Take", "Back");
  652.                 ZI[name][AdminLevel] = 0;
  653.                 new string[100];
  654.                 format(string, 100, "Admin %s taked away %s admin status.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  655.                 AdminMessage(string);
  656.             }
  657.             if(!response) return ShowPlayerDialog(playerid, DIALOG_OCP, DIALOG_STYLE_LIST, "OCP", OCPTEXT, "Choose", "Exit");
  658.         }
  659.         case DIALOG_OCP + 4:
  660.         {
  661.             if(response)
  662.             {
  663.                 new name;
  664.                 if(sscanf(inputtext, "u", name)) return ShowPlayerDialog(playerid, DIALOG_OCP + 4, DIALOG_STYLE_INPUT, "Give license", "Enter player name or ID", "Take", "Back");
  665.                 if(name == INVALID_PLAYER_ID) return ShowPlayerDialog(playerid, DIALOG_OCP + 4, DIALOG_STYLE_INPUT, "Give license", "Incorrect player name or ID\nEnter player name or ID", "Take", "Back");
  666.                 if(ZI[name][License] == 2) return ShowPlayerDialog(playerid, DIALOG_OCP + 4, DIALOG_STYLE_INPUT, "Give license", "This player has a driving license\nEnter player name or ID", "Take", "Back");
  667.                 ZI[name][License] = 2;
  668.                 new string[100];
  669.                 format(string, 100, "Admin %s gave %s driving license.", RemoveUnderScore(playerid), RemoveUnderScore(name));
  670.                 AdminMessage(string);
  671.             }
  672.             if(!response) return ShowPlayerDialog(playerid, DIALOG_OCP, DIALOG_STYLE_LIST, "OCP", OCPTEXT, "Choose", "Exit");
  673.         }
  674.        
  675.         case DIALOG_GPS:
  676.         {
  677.             switch(listitem)
  678.             {
  679.                 case 0:
  680.                 {
  681.                     if(!response) return 1;
  682.                     if(response)
  683.                     {
  684.                         ShowPlayerDialog(playerid, DIALOG_GPS + 1, DIALOG_STYLE_LIST, "GPS: Institutions", "Police Department\nDMV", "Lets go", "Back");
  685.                     }
  686.                 }
  687.                 case 1:
  688.                 {
  689.                     if(!response) return 1;
  690.                     if(response)
  691.                     {
  692.                         RemovePlayerMapIcon(playerid, 0);
  693.                         PlayerMessage(playerid, "You have deactivated GPS.");
  694.                     }
  695.                 }
  696.             }
  697.         }
  698.         case DIALOG_GPS + 1:
  699.         {
  700.             switch(listitem)
  701.             {
  702.                 case 0:
  703.                 {
  704.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "GPS", "Institutions\n{f1ee0f}Deactivate GPS", "OK", "Turn Off");
  705.                     if(response)
  706.                     {
  707.                         RemovePlayerMapIcon(playerid, 0);
  708.                         SetPlayerMapIcon(playerid, 0, -1605.7001,710.4127,13.8672, 56, 0, MAPICON_GLOBAL);
  709.                         PlayerMessage(playerid, "Choosed place was marked in the mini-map.");
  710.                     }
  711.                 }
  712.                 case 1:
  713.                 {
  714.                     if(!response) return ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "GPS", "Institutions\n{f1ee0f}Deactivate GPS", "OK", "Turn Off");
  715.                     if(response)
  716.                     {
  717.                         RemovePlayerMapIcon(playerid, 0);
  718.                         SetPlayerMapIcon(playerid, 0, -2026.6732,-101.1856,35.1641, 56, 0, MAPICON_GLOBAL);
  719.                         PlayerMessage(playerid, "Choosed place was marked in the mini-map.");
  720.                     }
  721.                 }
  722.             }
  723.         }
  724.         case DIALOG_CLEANER:
  725.         {
  726.             switch(listitem)
  727.             {
  728.                 case 0:
  729.                 {
  730.                     if(response)
  731.                     {
  732.                         if(ZI[playerid][Passport] == 0) return FailMessage(playerid, NOPASS);
  733.                         if(ZI[playerid][License] != 2) return FailMessage(playerid, NOLICENSE);
  734.                         PlayerMessage(playerid, "You have joined cleaner job, now go and clean San Fierro!");
  735.                         SetPlayerTeam(playerid, CLEANERTEAM);
  736.                     } else return 1;
  737.                 }  
  738.             }
  739.         }
  740.         case DIALOG_CLEANER + 1:
  741.         {
  742.             switch(listitem)
  743.             {
  744.                 case 0:
  745.                 {
  746.                     if(response)
  747.                     {
  748.                         if(ZI[playerid][Salary] == 0) return FailMessage(playerid, NOSALARY);
  749.                         new string[50];
  750.                         format(string, sizeof(string), "You have taken your salary($%d). Have fun!", ZI[playerid][Salary]);
  751.                         PlayerMessage(playerid, string);
  752.                         GiveCash(playerid, ZI[playerid][Salary]);
  753.                         ZI[playerid][Salary] = 0;
  754.                     } else return 1;
  755.                 }  
  756.                 case 1:
  757.                 {
  758.                     if(response)
  759.                     {
  760.                         new string[50];
  761.                         format(string, sizeof(string), "You have leaved the job.");
  762.                         PlayerMessage(playerid, string);
  763.                         ZI[playerid][Salary] = 0;
  764.                         SetPlayerTeam(playerid, 0);
  765.                     } else return 1;
  766.                 }
  767.             }
  768.         }
  769.     case DIALOG_BUS:
  770.         {
  771.             switch(listitem)
  772.             {
  773.                 case 0:
  774.                 {
  775.                     if(response)
  776.                     {
  777.                         if(ZI[playerid][Passport] == 0) return FailMessage(playerid, NOPASS);
  778.                         if(ZI[playerid][License] != 2) return FailMessage(playerid, NOLICENSE);
  779.                         PlayerMessage(playerid, "You have joined to bus driver job.");
  780.                         SetPlayerTeam(playerid, BUSTEAM);
  781.                     } else return 1;
  782.                 }  
  783.             }
  784.         }
  785.         case DIALOG_BUS + 1:
  786.         {
  787.             switch(listitem)
  788.             {
  789.                 case 0:
  790.                 {
  791.                     if(response)
  792.                     {
  793.                         if(ZI[playerid][Salary] == 0) return FailMessage(playerid, NOSALARY);
  794.                         new string[50];
  795.                         format(string, sizeof(string), "You have taken your salary($%d). Have fun!", ZI[playerid][Salary]);
  796.                         PlayerMessage(playerid, string);
  797.                         GiveCash(playerid, ZI[playerid][Salary]);
  798.                         ZI[playerid][Salary] = 0;
  799.                     } else return 1;
  800.                 }  
  801.                 case 1:
  802.                 {
  803.                     if(response)
  804.                     {
  805.                         new string[50];
  806.                         format(string, sizeof(string), "You have leaved your job.");
  807.                         PlayerMessage(playerid, string);
  808.                         ZI[playerid][Salary] = 0;
  809.                         SetPlayerTeam(playerid, 0);
  810.                     } else return 1;
  811.                 }
  812.             }
  813.         }
  814.         case DIALOG_PAPER:
  815.         {
  816.             switch(listitem)
  817.             {
  818.                 case 0:
  819.                 {
  820.                     if(response)
  821.                     {
  822.                         if(ZI[playerid][Passport] == 0) return FailMessage(playerid, NOPASS);
  823.                         PlayerMessage(playerid, "You have joined to paper boy job.");
  824.                         SetPlayerTeam(playerid, PAPERTEAM);
  825.                     } else return 1;
  826.                 }  
  827.             }
  828.         }
  829.         case DIALOG_PAPER + 1:
  830.         {
  831.             switch(listitem)
  832.             {
  833.                 case 0:
  834.                 {
  835.                     if(response)
  836.                     {
  837.                         if(ZI[playerid][Salary] == 0) return FailMessage(playerid, NOSALARY);
  838.                         new string[50];
  839.                         format(string, sizeof(string), "You have taken your salary($%d). Have fun!", ZI[playerid][Salary]);
  840.                         PlayerMessage(playerid, string);
  841.                         GiveCash(playerid, ZI[playerid][Salary]);
  842.                         ZI[playerid][Salary] = 0;
  843.                     } else return 1;
  844.                 }  
  845.                 case 1:
  846.                 {
  847.                     if(response)
  848.                     {
  849.                         new string[50];
  850.                         format(string, sizeof(string), "You have leaved your job.");
  851.                         PlayerMessage(playerid, string);
  852.                         ZI[playerid][Salary] = 0;
  853.                         SetPlayerTeam(playerid, 0);
  854.                     } else return 1;
  855.                 }
  856.             }
  857.         }
  858.         case DIALOG_COURIER:
  859.         {
  860.             switch(listitem)
  861.             {
  862.                 case 0:
  863.                 {
  864.                     if(response)
  865.                     {
  866.                         if(ZI[playerid][Passport] == 0) return FailMessage(playerid, NOPASS);
  867.                         if(ZI[playerid][License] != 2) return FailMessage(playerid, NOLICENSE);
  868.                         PlayerMessage(playerid, "You have joined to courier job.");
  869.                         SetPlayerTeam(playerid, COURIERTEAM);
  870.                     } else return 1;
  871.                 }  
  872.             }
  873.         }
  874.         case DIALOG_COURIER + 1:
  875.         {
  876.             switch(listitem)
  877.             {
  878.                 case 0:
  879.                 {
  880.                     if(response)
  881.                     {
  882.                         if(ZI[playerid][Salary] == 0) return FailMessage(playerid, NOSALARY);
  883.                         new string[50];
  884.                         format(string, sizeof(string), "You have taken your salary($%d). Have fun!", ZI[playerid][Salary]);
  885.                         PlayerMessage(playerid, string);
  886.                         GiveCash(playerid, ZI[playerid][Salary]);
  887.                         ZI[playerid][Salary] = 0;
  888.                     } else return 1;
  889.                 }  
  890.                 case 1:
  891.                 {
  892.                     if(response)
  893.                     {
  894.                         new string[50];
  895.                         format(string, sizeof(string), "You have leaved your job.");
  896.                         PlayerMessage(playerid, string);
  897.                         ZI[playerid][Salary] = 0;
  898.                         SetPlayerTeam(playerid, 0);
  899.                     } else return 1;
  900.                 }
  901.             }
  902.         }
  903.     }
  904.     return 1;
  905. }
  906. /* ======================================================================================================================================= */
  907. public OnGameModeInit()
  908. {
  909.     EnableStuntBonusForAll(0);
  910.     DisableInteriorEnterExits();
  911.     ShowPlayerMarkers(0);
  912.     UsePlayerPedAnims();
  913.     SetGameModeText(NAMEOFSERVER);
  914.     AddPlayerClass(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  915.     LoadObjects();
  916.     LoadPickups();
  917.     return 1;
  918. }
  919.  
  920. public OnPlayerConnect(playerid)
  921. {
  922.     SetPlayerMapIcon(playerid, 1, -1605.7001,710.4127,13.8672, 30, 0, MAPICON_LOCAL );
  923.     SetPlayerMapIcon(playerid, 2, -2026.6732,-101.1856,35.1641, 36, 0, MAPICON_LOCAL );
  924.    
  925.     ZI[playerid][Logged] = 0;
  926.  
  927.     if (!IsPlayerNPC(playerid))
  928.     {
  929.        if(fexist(UserPath(playerid)))
  930.         {
  931.             INI_ParseFile(UserPath(playerid), "LoadUser_data", .bExtra = true, .extra = playerid);
  932.             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login","Please login to server if you want to play.","Login","");
  933.         }
  934.         else
  935.         {
  936.             ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Register","Please register to server if you want to play.","Register","");
  937.         }
  938.     }
  939.     else
  940.     {
  941.         ZI[playerid][Logged] = 1;
  942.         return 1;
  943.     }
  944.     return 1;
  945. }
  946.  
  947. public OnPlayerDisconnect(playerid, reason)
  948. {
  949.     if(ZI[playerid][Logged] == 1){SaveChar(playerid);}
  950.     ZI[playerid][Logged] = 0;
  951.     RemovePlayerMapIcon(playerid, 0);
  952.     KillTimer(LevelTimer);
  953.     return 1;
  954. }
  955.  
  956. public OnPlayerSpawn(playerid)
  957. {
  958.     LevelTimer = SetTimer("TimerLevel", 60000, true);
  959.     SetPlayerScore(playerid, ZI[playerid][Level]);
  960.     if(ZI[playerid][PosX] != 0 && ZI[playerid][PosY] != 0 && ZI[playerid][PosZ] != 0)
  961.     {
  962.     SetPlayerPos(playerid, ZI[playerid][PosX],ZI[playerid][PosY],ZI[playerid][PosZ]);
  963.     SetPlayerInterior(playerid, ZI[playerid][Interior]);
  964.     SetPlayerSkin(playerid, ZI[playerid][Skin]);
  965.     SetPlayerTeam(playerid, ZI[playerid][Job]);
  966.     } else return 1;
  967.     return 1;
  968. }
  969.  
  970. public OnGameModeExit()
  971. {
  972.     return 1;
  973. }
  974.  
  975. public OnPlayerText(playerid, text[])
  976. {
  977.     if(ZI[playerid][Muted] == 1) return FailMessage(playerid, "You can't send messages, because you're muted.");
  978.     return 1;
  979. }
  980.  
  981. public OnPlayerRequestClass(playerid, classid)
  982. {
  983.     if(ZI[playerid][Logged] != 1) return 0;
  984.     return 1;
  985. }
  986.  
  987. public OnPlayerRequestSpawn(playerid)
  988. {
  989.     if(ZI[playerid][Logged] != 1) return 0;
  990.     return 1;
  991. }
  992.  
  993. public OnPlayerExitVehicle(playerid, vehicleid)
  994. {
  995.     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  996.     {
  997.         case 496:
  998.         {
  999.             DisablePlayerCheckpoint(playerid);
  1000.             FailMessage(playerid, "You have left DMV vehicle and failed your test.");
  1001.         }
  1002.         case 574: DisablePlayerCheckpoint(playerid);   
  1003.         case 431: DisablePlayerCheckpoint(playerid);   
  1004.         case 510: DisablePlayerCheckpoint(playerid);   
  1005.         case 413: DisablePlayerCheckpoint(playerid);   
  1006.     }
  1007.     return 1;
  1008. }
  1009.  
  1010. public OnPlayerStateChange(playerid, newstate, oldstate)
  1011. {
  1012.  
  1013.     new vehicleid = GetPlayerVehicleID(playerid);
  1014.     new m = GetVehicleModel(vehicleid);
  1015.  
  1016.     if(newstate == PLAYER_STATE_DRIVER)
  1017.     {
  1018.         switch(m)
  1019.         {
  1020.             case 496:
  1021.             {
  1022.                 switch(ZI[playerid][License])
  1023.                 {
  1024.                     case false:
  1025.                     {
  1026.                         RemovePlayerFromVehicle(playerid);
  1027.                         FailMessage(playerid, "First pay the money for taking a driving test.");
  1028.                     }
  1029.                    
  1030.                     case true:
  1031.                     {
  1032.                         SetPlayerCheckpoint(playerid,-2041.0847,-73.1008,35.1654, 5.0);
  1033.                         DMVCP[playerid] = 1;
  1034.                         PlayerMessage(playerid, "You just started a driving test. Good luck!");
  1035.                         ZI[playerid][TakingTest] = 1;
  1036.                     }
  1037.                    
  1038.                     case 2:
  1039.                     {
  1040.                         RemovePlayerFromVehicle(playerid);
  1041.                         FailMessage(playerid, "You have a driving license!");
  1042.                     }
  1043.                 }
  1044.                 return 1;
  1045.             }
  1046.            
  1047.             case 574:
  1048.             {
  1049.                 if(GetPlayerTeam(playerid) == 1)
  1050.                 {
  1051.                     CCP[playerid] = 1;
  1052.                     SetPlayerCheckpoint(playerid, -1879.2688,-114.4073,12.9766, 5);
  1053.                     PlayerMessage(playerid, "You have started your job.");
  1054.                     return 1;
  1055.                 } else {
  1056.                     RemovePlayerFromVehicle(playerid);
  1057.                     FailMessage(playerid, "You don't have this vehicle keys.");
  1058.                 }
  1059.             }
  1060.            
  1061.             case 431:
  1062.             {
  1063.                 if(GetPlayerTeam(playerid) == 2)
  1064.                 {
  1065.                     BCP[playerid] = 1;
  1066.                     SetPlayerCheckpoint(playerid, -2702.7388,105.6245,4.1797, 5);
  1067.                     PlayerMessage(playerid, "You have started your job.");
  1068.                     return 1;
  1069.                 } else {
  1070.                     RemovePlayerFromVehicle(playerid);
  1071.                     FailMessage(playerid, "You don't have this vehicle keys.");
  1072.                 }
  1073.             }
  1074.             case 510:
  1075.             {
  1076.                 if(GetPlayerTeam(playerid) == 3)
  1077.                 {
  1078.                     PCP[playerid] = 1;
  1079.                     SetPlayerCheckpoint(playerid, -2637.7422,253.4770,4.3281, 5);
  1080.                     PlayerMessage(playerid, "You have started your job.");
  1081.                     return 1;
  1082.                 } else {
  1083.                     RemovePlayerFromVehicle(playerid);
  1084.                     FailMessage(playerid, "You can't drive this bike.");
  1085.                 }
  1086.             }
  1087.             case 413:
  1088.             {
  1089.                 if(GetPlayerTeam(playerid) == 4)
  1090.                 {
  1091.                     COCP[playerid] = 1;
  1092.                     SetPlayerCheckpoint(playerid, -2304.8013,-142.7240,35.3203, 5);
  1093.                     PlayerMessage(playerid, "You have started your job.");
  1094.                     return 1;
  1095.                 } else {
  1096.                     RemovePlayerFromVehicle(playerid);
  1097.                     FailMessage(playerid, "You don't have this vehicle keys.");
  1098.                 }
  1099.             }
  1100.         }
  1101.     }
  1102.     return 1;
  1103. }
  1104.  
  1105. public OnPlayerEnterCheckpoint(playerid)
  1106. {
  1107.     DisablePlayerCheckpoint(playerid);
  1108.     if(GetPlayerTeam(playerid) == 4)
  1109.     {
  1110.         COCP[playerid]++;
  1111.         switch(COCP[playerid])
  1112.         {
  1113.             case 1: SetPlayerCheckpoint(playerid, -2648.6311,207.1269,4.3359, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1114.             case 2: SetPlayerCheckpoint(playerid, -2435.0549,815.8010,35.1797, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1115.             case 3: SetPlayerCheckpoint(playerid, -2490.2407,1137.5306,55.7266, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1116.             case 4: SetPlayerCheckpoint(playerid, -1654.1121,1178.3313,9.8060, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1117.             case 5: SetPlayerCheckpoint(playerid, -1971.5981,289.5250,35.1719, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1118.             case 6: SetPlayerCheckpoint(playerid, -2615.4707,-188.0601,4.3359, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1119.             case 7: SetPlayerCheckpoint(playerid, -1744.3114,39.0054,3.5547, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1120.             case 8: SetPlayerCheckpoint(playerid, -1700.5741,945.4905,24.8906, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1121.             case 9: SetPlayerCheckpoint(playerid, -2454.8477,137.2755,34.9609, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1122.             case 10: SetPlayerCheckpoint(playerid, -2862.7483,686.2618,23.3627, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1123.             case 11: SetPlayerCheckpoint(playerid, -2353.8093,1342.5713,11.3653, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1124.             case 12: SetPlayerCheckpoint(playerid,-1706.4135,1339.1484,7.1786 , 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1125.             case 13: SetPlayerCheckpoint(playerid, -2073.1895,973.0587,62.9219, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1126.             case 14: SetPlayerCheckpoint(playerid, -2615.2661,134.1837,4.3359, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1127.             case 15:  
  1128.             {
  1129.                 SetTimerEx("FreezeTimer", 6000, false, "i", playerid);
  1130.                 GameTextForPlayer(playerid, "Wait", 3000, 6);
  1131.                 COCP[playerid] = 1;
  1132.                 SetPlayerCheckpoint(playerid, -2304.8013,-142.7240,35.3203, 5);
  1133.                 TogglePlayerControllable(playerid,0);
  1134.                 ZI[playerid][Salary] = COURIERSALARY + random(150);
  1135.             }
  1136.         }
  1137.     }
  1138.    
  1139.     if(GetPlayerTeam(playerid) == 3)
  1140.     {
  1141.         PCP[playerid]++;
  1142.         switch(PCP[playerid])
  1143.         {
  1144.             case 1: SetPlayerCheckpoint(playerid, -2692.9021,115.6307,4.3359, 5);
  1145.             case 2: SetPlayerCheckpoint(playerid, -2794.3542,-130.4174,7.1875, 5);
  1146.             case 3: SetPlayerCheckpoint(playerid, -2653.8694,204.0027,4.3359, 5);
  1147.             case 4: SetPlayerCheckpoint(playerid, -2794.4182,139.0887,7.1875, 5);
  1148.             case 5: SetPlayerCheckpoint(playerid, -2795.8489,21.2749,7.1951, 5);
  1149.             case 6: SetPlayerCheckpoint(playerid, -2795.3125,-89.5807,7.1875, 5);
  1150.             case 7: SetPlayerCheckpoint(playerid, -2796.0146,-153.4577,7.1875, 5);
  1151.             case 8: SetPlayerCheckpoint(playerid, -2693.2927,-152.8264,4.3435, 5);
  1152.             case 9: SetPlayerCheckpoint(playerid, -2692.8079,-89.8162,4.3359, 5);
  1153.             case 10: SetPlayerCheckpoint(playerid, -2719.3303,-22.6100,4.3359, 5);
  1154.             case 11: SetPlayerCheckpoint(playerid, -2639.6848,78.3399,4.3359, 5);
  1155.             case 12: SetPlayerCheckpoint(playerid, -2638.1030,252.9054,4.3281, 5);
  1156.             case 13: SetPlayerCheckpoint(playerid, -2794.8206,108.2261,7.1875, 5);
  1157.             case 14: SetPlayerCheckpoint(playerid, -2738.5547,-12.4778,4.4923, 5);
  1158.             case 15:
  1159.             {
  1160.                 SetPlayerCheckpoint(playerid, -2637.7422,253.4770,4.3281, 5);
  1161.                 ZI[playerid][Salary] = PAPERSALARY + random(75);
  1162.                 PCP[playerid] = 1;
  1163.             }
  1164.         }
  1165.     }
  1166.    
  1167.     if(GetPlayerTeam(playerid) == 2)
  1168.     {
  1169.         BCP[playerid]++;
  1170.         switch(BCP[playerid])
  1171.         {
  1172.             case 1: SetPlayerCheckpoint(playerid, -2702.9763,263.6960,4.1797, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1173.             case 2: SetPlayerCheckpoint(playerid, -2604.1382,366.1180,5.3190, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1174.             case 3: SetPlayerCheckpoint(playerid, -2666.9045,471.8390,9.2917, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1175.             case 4: SetPlayerCheckpoint(playerid, -2740.0798,533.7011,11.7723, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1176.             case 5: SetPlayerCheckpoint(playerid, -2747.6453,694.6572,41.1250, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1177.             case 6: SetPlayerCheckpoint(playerid, -2657.1443,704.9922,27.7656, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1178.             case 7: SetPlayerCheckpoint(playerid, -2604.8354,742.4112,30.4276, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1179.             case 8: SetPlayerCheckpoint(playerid, -2604.6672,847.0634,51.6666, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1180.             case 9: SetPlayerCheckpoint(playerid, -2571.5151,906.3079,64.8281, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1181.             case 10: SetPlayerCheckpoint(playerid, -2523.9233,1000.3839,78.1328, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1182.             case 11: SetPlayerCheckpoint(playerid, -2666.5857,1006.6300,64.2834, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1183.             case 12: SetPlayerCheckpoint(playerid, -2753.7092,854.8129,61.9077, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1184.             case 13: SetPlayerCheckpoint(playerid, -2752.6768,690.4919,41.1250, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1185.             case 14: SetPlayerCheckpoint(playerid, -2710.8579,486.3640,5.1181, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1186.             case 15: SetPlayerCheckpoint(playerid, -2855.9395,468.8066,4.1694, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1187.             case 16: SetPlayerCheckpoint(playerid, -2811.9382,132.3349,7.0313, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1188.             case 17: SetPlayerCheckpoint(playerid, -2709.0110,7.9624,4.1797, 5), TogglePlayerControllable(playerid,0), SetTimerEx("FreezeTimer", JOBFREEZETIME, false, "i", playerid), GameTextForPlayer(playerid, "Wait", 3000, 6);
  1189.             case 18:
  1190.             {
  1191.                 SetTimerEx("FreezeTimer", 6000, false, "i", playerid);
  1192.                 GameTextForPlayer(playerid, "Wait", 3000, 6);
  1193.                 BCP[playerid] = 1;
  1194.                 SetPlayerCheckpoint(playerid, -2702.7388,105.6245,4.1797, 5);
  1195.                 TogglePlayerControllable(playerid,0);
  1196.                 ZI[playerid][Salary] = BUSSALARY + random(100);
  1197.             }
  1198.         }
  1199.     }
  1200.     if(GetPlayerTeam(playerid) == 1)
  1201.     {
  1202.         CCP[playerid]++;
  1203.         switch(CCP[playerid])
  1204.         {
  1205.             case 1:SetPlayerCheckpoint(playerid, -1849.2518,-118.1821,5.5969, 5);
  1206.             case 2:SetPlayerCheckpoint(playerid, -1813.2767,-119.3310,5.4975, 5);
  1207.             case 3:SetPlayerCheckpoint(playerid, -1796.6832,-42.1410,14.7344, 5);
  1208.             case 4:SetPlayerCheckpoint(playerid, -1804.5984,114.5196,14.9609, 5);
  1209.             case 5:SetPlayerCheckpoint(playerid, -1802.6586,232.1847,14.9541, 5);
  1210.             case 6:SetPlayerCheckpoint(playerid, -1691.8817,356.3645,7.0313, 5);
  1211.             case 7:SetPlayerCheckpoint(playerid, -1560.1233,497.8418,7.0313, 5);
  1212.             case 8:SetPlayerCheckpoint(playerid, -1556.1735,712.7724,7.0391, 5);
  1213.             case 9:SetPlayerCheckpoint(playerid, -1541.0309,817.8303,7.0321, 5);
  1214.             case 10:SetPlayerCheckpoint(playerid, -1616.9980,854.2504,7.5448, 5);
  1215.             case 11:SetPlayerCheckpoint(playerid, -1776.0609,853.0800,24.7344, 5);
  1216.             case 12:SetPlayerCheckpoint(playerid, -1886.8153,854.4219,35.0156, 5);
  1217.             case 13:SetPlayerCheckpoint(playerid, -1993.9037,852.9993,45.2969, 5);
  1218.             case 14:SetPlayerCheckpoint(playerid, -2008.2800,747.8229,45.2903, 5);
  1219.             case 15:SetPlayerCheckpoint(playerid, -2008.1697,627.7223,36.4175, 5);
  1220.             case 16:SetPlayerCheckpoint(playerid, -2007.8794,337.4238,35.0085, 5);
  1221.             case 17:SetPlayerCheckpoint(playerid, -2049.7878,322.7545,35.0156, 5);
  1222.             case 18:SetPlayerCheckpoint(playerid, -2134.7227,323.1322,35.1519, 5);
  1223.             case 19:SetPlayerCheckpoint(playerid, -2144.1536,377.1628,35.1719, 5);
  1224.             case 20:SetPlayerCheckpoint(playerid, -2139.8333,491.4912,35.0156, 5);
  1225.             case 21:SetPlayerCheckpoint(playerid, -2202.4512,510.4644,35.0156, 5);
  1226.             case 22:SetPlayerCheckpoint(playerid, -2292.7202,510.9579,35.0156, 5);
  1227.             case 23:SetPlayerCheckpoint(playerid, -2363.2004,509.4921,29.3830, 5);
  1228.             case 24:SetPlayerCheckpoint(playerid, -2320.6997,426.3291,34.9269, 5);
  1229.             case 25:SetPlayerCheckpoint(playerid, -2254.9858,331.5479,35.0186, 5);
  1230.             case 26:SetPlayerCheckpoint(playerid, -2254.8276,219.2341,35.1641, 5);
  1231.             case 27:SetPlayerCheckpoint(playerid, -2260.0591,-58.8158,35.1719, 5);
  1232.             case 28:SetPlayerCheckpoint(playerid, -2178.8264,-72.4366,35.1719, 5);
  1233.             case 29:SetPlayerCheckpoint(playerid, -2020.5018,-72.6050,35.1719, 5);
  1234.             case 30:SetPlayerCheckpoint(playerid, -1963.3497,-66.6132,25.6819, 5);
  1235.             case 31:SetPlayerCheckpoint(playerid, -1881.9990,-113.1650,13.8513, 5);
  1236.             case 32:
  1237.             {
  1238.                 CCP[playerid] = 1;
  1239.                 SetPlayerCheckpoint(playerid, -1879.2688,-114.4073,12.9766, 5);
  1240.                 PlayerMessage(playerid, "You have ended the job, but you can still work it.");
  1241.                 ZI[playerid][Salary] = CLEANERSALARY + random(50);
  1242.             }
  1243.         }
  1244.     }
  1245.     if(ZI[playerid][TakingTest] == 1)
  1246.     {
  1247.         DMVCP[playerid]++;
  1248.         switch(DMVCP[playerid])
  1249.         {
  1250.             case 1: SetPlayerCheckpoint(playerid,-2004.0403,10.9136,33.3099, 5.0);
  1251.             case 2: SetPlayerCheckpoint(playerid,-2002.8828,89.8896,27.5391, 5.0);
  1252.             case 3: SetPlayerCheckpoint(playerid,-2094.7971,112.5027,34.8111, 5.0);
  1253.             case 4: SetPlayerCheckpoint(playerid,-2169.4902,43.7428,35.1719, 5.0);
  1254.             case 5: SetPlayerCheckpoint(playerid,-2020.6455,26.0139,33.2193, 5.0);
  1255.             case 6: SetPlayerCheckpoint(playerid,-2007.4653,-278.7941,35.3136, 5.0);
  1256.             case 7: SetPlayerCheckpoint(playerid,-2200.5288,-288.5009,35.3203, 5.0);
  1257.             case 8: SetPlayerCheckpoint(playerid,-2205.9507,-201.7038,35.3340, 5.0);
  1258.             case 9: SetPlayerCheckpoint(playerid,-2165.2253,-83.4703,35.1719, 5.0);
  1259.             case 10: SetPlayerCheckpoint(playerid,-2048.4565,-77.0956,35.1719, 5.0);
  1260.             case 11:
  1261.             {
  1262.                 new vehicleid = GetPlayerVehicleID(playerid);
  1263.                 new Float:health;
  1264.                 GetVehicleHealth(vehicleid, health);
  1265.                 if(health >= 800.0)
  1266.                 {
  1267.                     PlayerMessage(playerid, "You have completed a driving test.");
  1268.                     SetVehicleToRespawn(vehicleid);
  1269.                     ZI[playerid][License] = 2;
  1270.                 } else {
  1271.                     ZI[playerid][License] = false;
  1272.                     FailMessage(playerid, "You have failed a driving test.");
  1273.                     SetVehicleToRespawn(vehicleid);
  1274.                 }
  1275.             }
  1276.         }
  1277.     }
  1278.     return 1;
  1279. }
  1280.  
  1281. public OnPlayerPickUpPickup(playerid, pickupid)
  1282. {
  1283.     new JobTeam = GetPlayerTeam(playerid);
  1284.    
  1285.     if(pickupid == DMVENTER)
  1286.     {
  1287.         SetPlayerPos(playerid, 1494.4525,1306.4357,1093.2891);
  1288.         SetPlayerInterior(playerid, 3);
  1289.     }
  1290.  
  1291.     else if(pickupid == DMVEXIT)
  1292.     {
  1293.         SetPlayerPos(playerid, -2026.6732,-99.1856,35.1641);
  1294.         SetPlayerInterior(playerid, 0);
  1295.     }
  1296.    
  1297.     else if(pickupid == DMVINFO)
  1298.     {
  1299.         switch(ZI[playerid][License])
  1300.         {
  1301.             case 0:
  1302.             {
  1303.                 new string[100];
  1304.                 format(string, sizeof(string), "If you want to start a driving test you need to pay $%d", DMVPRICE);
  1305.                 ShowPlayerDialog(playerid, DIALOG_LICENSE, DIALOG_STYLE_MSGBOX, "License", string, "Pay", "Exit");
  1306.             }
  1307.             case 1:
  1308.             {
  1309.                 FailMessage(playerid, "You have paid for a test, now go outside and enter DMV vehicle.");
  1310.             }
  1311.             case 2:
  1312.             {
  1313.                 FailMessage(playerid, "You have a driver license.");
  1314.             }
  1315.         }
  1316.     }
  1317.    
  1318.     else if(pickupid == PDENTER)
  1319.     {
  1320.         SetPlayerPos(playerid, 246.5047,109.7430,1003.2257);
  1321.         SetPlayerInterior(playerid, 10);
  1322.     }
  1323.  
  1324.     else if(pickupid == PDEXIT)
  1325.     {
  1326.         SetPlayerPos(playerid, -1605.6205,714.9007,12.6232);
  1327.         SetPlayerInterior(playerid, 0);
  1328.     }
  1329.  
  1330.     else if(pickupid == PDPASS)
  1331.     {
  1332.         switch(ZI[playerid][Passport])
  1333.         {
  1334.             case 0:
  1335.             {
  1336.                 new string[100];
  1337.                 format(string, sizeof(string), "Hello, you aren't a citizen. If you want to become citizen, get a passport.\nPrice is $%d", PASSPORTPRICE);
  1338.                 ShowPlayerDialog(playerid, DIALOG_PASSPORT, DIALOG_STYLE_MSGBOX, "Passport", string, "Buy", "Exit");
  1339.             }
  1340.             case 1:
  1341.             {
  1342.                 FailMessage(playerid, "You have a passport and you don't need another.");
  1343.             }
  1344.         }
  1345.     }
  1346.    
  1347.     else if(pickupid == JoinCleaner)
  1348.     {
  1349.         if(GetPlayerTeam(playerid) == 0)
  1350.         {
  1351.             ShowPlayerDialog(playerid, DIALOG_CLEANER, DIALOG_STYLE_LIST, "Cleaner", "Join", "Accept", "Exit");
  1352.         }
  1353.         else if(GetPlayerTeam(playerid) == 1)
  1354.         {
  1355.             ShowPlayerDialog(playerid, DIALOG_CLEANER + 1, DIALOG_STYLE_LIST, "Cleaner", "Take salary\nLeave", "OK", "Exit");
  1356.         }
  1357.         else if(GetPlayerTeam(playerid) > 1)
  1358.         {
  1359.             FailMessage(playerid, "You are working in another job.");
  1360.         }
  1361.     }
  1362.    
  1363.     else if(pickupid == JoinBus)
  1364.     {
  1365.         if(GetPlayerTeam(playerid) == 0)
  1366.         {
  1367.             if(ZI[playerid][Level] < 2) return FailMessage(playerid, "Your level is too low for this job.");
  1368.             ShowPlayerDialog(playerid, DIALOG_BUS, DIALOG_STYLE_LIST, "Bus drive", "Join", "Accept", "Exit");
  1369.         }
  1370.         else if(GetPlayerTeam(playerid) == 2)
  1371.         {
  1372.             ShowPlayerDialog(playerid, DIALOG_BUS + 1, DIALOG_STYLE_LIST, "Bus drive", "Take salary\nLeave", "OK", "Exit");
  1373.         }
  1374.         else if(GetPlayerTeam(playerid) > 2 || GetPlayerTeam(playerid) == 1)
  1375.         {
  1376.             FailMessage(playerid, "You are working in another job.");
  1377.         }
  1378.     }
  1379.    
  1380.     else if(pickupid == JoinPaperBoy)
  1381.     {
  1382.         if(GetPlayerTeam(playerid) == 0)
  1383.         {
  1384.             ShowPlayerDialog(playerid, DIALOG_PAPER, DIALOG_STYLE_LIST, "Paper boy", "Join", "Accept", "Exit");
  1385.         }
  1386.         else if(GetPlayerTeam(playerid) == PAPERTEAM)
  1387.         {
  1388.             ShowPlayerDialog(playerid, DIALOG_PAPER + 1, DIALOG_STYLE_LIST, "Paper boy", "Take salary\nLeave", "OK", "Exit");
  1389.         }
  1390.         else if(JobTeam > 3 || JobTeam == 1 || JobTeam == 2)
  1391.         {
  1392.             FailMessage(playerid, "You are working in another job.");
  1393.         }
  1394.     }
  1395.     else if(pickupid == JoinCourier)
  1396.     {
  1397.         if(GetPlayerTeam(playerid) == 0)
  1398.         {
  1399.             if(ZI[playerid][Level] < 2) return FailMessage(playerid, "Your level is too low for this job.");
  1400.             ShowPlayerDialog(playerid, DIALOG_COURIER, DIALOG_STYLE_LIST, "Courier", "Join", "Accept", "Exit");
  1401.         }
  1402.         else if(GetPlayerTeam(playerid) == COURIERTEAM)
  1403.         {
  1404.             ShowPlayerDialog(playerid, DIALOG_COURIER + 1, DIALOG_STYLE_LIST, "Courier", "Take salary\nLeave", "OK", "Exit");
  1405.         }
  1406.         else if(JobTeam > 4 || JobTeam == 1 || JobTeam == 2 || JobTeam == 3)
  1407.         {
  1408.             FailMessage(playerid, "You are working in another job.");
  1409.         }
  1410.     }
  1411.     return 1;
  1412. }
  1413. /* ======================================================================================================================================= */
  1414. stock UserPath(playerid)
  1415. {
  1416.     new string[128],playername[MAX_PLAYER_NAME];
  1417.     GetPlayerName(playerid,playername,sizeof(playername));
  1418.     format(string,sizeof(string),PATH,playername);
  1419.     return string;
  1420. }
  1421.  
  1422. main()
  1423. {
  1424.     print(PRINT_START);
  1425. }
  1426.  
  1427. AdminMessage(message[])
  1428. {
  1429.     new string[100];
  1430.     format(string, 100, message);
  1431.     SendClientMessageToAll(0xF2EEB3FF, string);
  1432.     return 1;
  1433. }
  1434.  
  1435. PlayerMessage(playerid, message[])
  1436. {
  1437.     new string[100];
  1438.     format(string, 100, message);
  1439.     SendClientMessage(playerid, 0xFFD464FF, string);
  1440.     return 1;
  1441. }
  1442.  
  1443. PlayerCommand(playerid, message[])
  1444. {
  1445.     new string[100];
  1446.     format(string, 100, message);
  1447.     SendClientMessage(playerid, 0xC2A2DAAA, string);
  1448.     return 1;
  1449. }
  1450.  
  1451. FailMessage(playerid, message[])
  1452. {
  1453.     new string[100];
  1454.     format(string, 100, message);
  1455.     SendClientMessage(playerid, 0xE81515FF, string);
  1456.     return 1;
  1457. }
  1458.  
  1459. stock NewProx(Float:radi, playerid, string[],color)
  1460. {
  1461.     new Float:x,Float:y,Float:z;
  1462.     GetPlayerPos(playerid,x,y,z);
  1463.     foreach(Player,i)
  1464.     {
  1465.         if(IsPlayerInRangeOfPoint(i,radi,x,y,z))
  1466.         {
  1467.             SendClientMessage(i,color,string);
  1468.         }
  1469.     }
  1470. }
  1471.  
  1472. stock RemoveUnderScore(playerid)
  1473. {
  1474.     new namewithoutunderscorename[MAX_PLAYER_NAME];
  1475.     GetPlayerName(playerid,namewithoutunderscorename,sizeof(namewithoutunderscorename));
  1476.     for(new i = 0; i < MAX_PLAYER_NAME; i++)
  1477.     {
  1478.         if(namewithoutunderscorename[i] == '_') namewithoutunderscorename[i] = ' ';
  1479.     }
  1480.     return namewithoutunderscorename;
  1481. }
  1482.  
  1483. forward FreezeTimer(playerid);
  1484. public FreezeTimer(playerid)
  1485. {
  1486.     GameTextForPlayer(playerid, "Go", 3000, 6);
  1487.     TogglePlayerControllable(playerid,1);
  1488.     return 1;
  1489. }
  1490.  
  1491. forward TimerLevel(playerid);
  1492. public TimerLevel(playerid)
  1493. {
  1494.     ZI[playerid][Time]++;
  1495.     if(ZI[playerid][Time] == 60)
  1496.     {
  1497.         ZI[playerid][EXP]++;
  1498.         new string[100];
  1499.         format(string, 100, "Congratulations, you just got +1 EXP. Your EXP: %d, you need EXP till next level: %d",ZI[playerid][EXP], float(ZI[playerid][Level] * 2 - ZI[playerid][EXP]));
  1500.         PlayerMessage(playerid, string);
  1501.         ZI[playerid][Time] = 0;
  1502.         if(ZI[playerid][EXP] == ZI[playerid][Level] * 2)
  1503.         {
  1504.             ZI[playerid][Level]++;
  1505.             SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
  1506.             new string2[100];
  1507.             format(string2, 100, "You just leveled up, your level is: %d.", ZI[playerid][Level]);
  1508.             PlayerMessage(playerid, string2);
  1509.             ZI[playerid][EXP] = 0;
  1510.         }
  1511.     }
  1512.     return 1;
  1513. }
  1514.  
  1515. LoadObjects()
  1516. {
  1517.     AddStaticVehicleEx(496,-2093.6999500,-85.0000000,35.0000000,0.0000000,6,35,15);
  1518.     AddStaticVehicleEx(496,-2089.6999500,-85.0000000,35.0000000,0.0000000,6,35,15);
  1519.     AddStaticVehicleEx(496,-2085.1999500,-85.0000000,35.0000000,0.0000000,6,35,15);
  1520.     AddStaticVehicleEx(496,-2081.1999500,-85.0000000,35.0000000,0.0000000,6,35,15);
  1521.     AddStaticVehicleEx(496,-2077.1999500,-85.0000000,35.0000000,0.0000000,6,35,15);
  1522.     AddStaticVehicleEx(574,-1850.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1523.     AddStaticVehicleEx(574,-1853.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1524.     AddStaticVehicleEx(574,-1856.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1525.     AddStaticVehicleEx(574,-1859.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1526.     AddStaticVehicleEx(574,-1862.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1527.     AddStaticVehicleEx(574,-1865.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1528.     AddStaticVehicleEx(574,-1868.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1529.     AddStaticVehicleEx(574,-1871.0000000,-130.0000000,11.7000000,0.0000000,165,169,40); //Sweeper
  1530.     AddStaticVehicleEx(510,-2586.0000000,335.5000000,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1531.     AddStaticVehicleEx(510,-2586.0000000,332.1000100,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1532.     AddStaticVehicleEx(510,-2586.0000000,328.7999900,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1533.     AddStaticVehicleEx(510,-2586.0000000,325.0000000,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1534.     AddStaticVehicleEx(510,-2586.0000000,321.7999900,4.6000000,90.0000000,42,119,15); //Mountain Bike
  1535.     AddStaticVehicleEx(510,-2586.0000000,318.2999900,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1536.     AddStaticVehicleEx(510,-2586.0000000,314.5000000,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1537.     AddStaticVehicleEx(510,-2586.0000000,311.1000100,4.5000000,90.0000000,42,119,15); //Mountain Bike
  1538.     AddStaticVehicleEx(510,-2586.0000000,307.7000100,4.6000000,90.0000000,42,119,15); //Mountain Bike
  1539.     AddStaticVehicleEx(510,-2586.0000000,304.5000000,4.6000000,90.0000000,42,119,15); //Mountain Bike
  1540.     AddStaticVehicleEx(431,-2689.6999500,-25.0000000,4.6000000,0.0000000,116,29,15); //Bus
  1541.     AddStaticVehicleEx(431,-2683.0000000,-25.0000000,4.6000000,0.0000000,116,29,15); //Bus
  1542.     AddStaticVehicleEx(431,-2676.3999000,-25.0000000,4.6000000,0.0000000,116,29,15); //Bus
  1543.     AddStaticVehicleEx(431,-2672.6001000,-37.2000000,4.6000000,0.0000000,116,29,15); //Bus
  1544.     AddStaticVehicleEx(431,-2666.6001000,-37.2000000,4.6000000,0.0000000,116,29,15); //Bus
  1545.     AddStaticVehicleEx(431,-2624.3999000,-37.2000000,4.6000000,0.0000000,116,29,15); //Bus
  1546.     AddStaticVehicleEx(431,-2630.3999000,-37.0000000,4.6000000,0.0000000,116,29,15); //Bus
  1547.     AddStaticVehicleEx(413,-2315.1001000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1548.     AddStaticVehicleEx(413,-2318.6999500,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1549.     AddStaticVehicleEx(413,-2322.6999500,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1550.     AddStaticVehicleEx(413,-2326.3999000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1551.     AddStaticVehicleEx(413,-2329.8999000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1552.     AddStaticVehicleEx(413,-2333.6999500,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1553.     AddStaticVehicleEx(413,-2337.3999000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1554.     AddStaticVehicleEx(413,-2340.8999000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1555.     AddStaticVehicleEx(413,-2344.6001000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1556.     AddStaticVehicleEx(413,-2348.1999500,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1557.     AddStaticVehicleEx(413,-2352.0000000,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1558.     AddStaticVehicleEx(413,-2355.6999500,-125.0000000,35.5000000,0.0000000,100,104,15); //Pony
  1559. }
  1560.  
  1561. LoadPickups()
  1562. {
  1563.     DMVENTER = CreatePickup(19135, 2, -2026.6732,-101.1856,35.1641, 0);
  1564.     DMVEXIT = CreatePickup(19135, 2, 1494.4525,1304.4357,1093.2891, 0);
  1565.     DMVINFO = CreatePickup(1239, 2, 1502.1085,1306.3434,1093.2891, 0);
  1566.     PDENTER = CreatePickup(19135, 2, -1605.7001,710.4127,13.8672, 0);
  1567.     PDEXIT = CreatePickup(19135, 2, 246.5086,107.7748,1003.2188, 0);
  1568.     PDPASS = CreatePickup(1239, 2, 248.6188,118.1259,1003.2188, 0);
  1569.     JoinCleaner = CreatePickup(1275, 2, -1862.7605,-145.3770,11.8984, 0);
  1570.     JoinPaperBoy = CreatePickup(1275, 2, -2581.0879,310.8535,5.1856, 0);
  1571.     JoinCourier = CreatePickup(1275, 2, -2311.6501,-124.2973,35.3203, 0);
  1572.     JoinBus = CreatePickup(1275, 2, -2666.4956,-9.4013,6.1328, 0);
  1573. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement