Guest User

rick fix

a guest
Jul 5th, 2014
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 71.58 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. //#include <streamer>
  4. #include <foreach>
  5. #include <zcmd>
  6. #include <sscanf2>
  7.  
  8. //#if defined FILTERSCRIPT
  9.  
  10.  
  11. #define ResetMoneyBar ResetPlayerMoney
  12. #define UpdateMoneyBar GivePlayerMoney
  13. #define MAX_CHARACTER_SLOTS 4
  14. #undef MAX_PLAYERS
  15. #define MAX_PLAYERS         50
  16. #undef MAX_VEHICLES
  17. #define MAX_VEHICLES        2500
  18. #define MAX_HOUSES          2000
  19. #define MAX_BUSINESS        2000
  20. #define MAX_FACTIONS        25
  21. #define MAX_BUYABLE_VEH     2000
  22. #define MAX_VEH_MODS        12
  23. #define MAX_OWNABLE_VEH     3
  24.  
  25.  
  26.  
  27. #define sDefault_P_Cash     500
  28. #define sDEFAULT_P_Bank     10000
  29. #define sDefault_P_Skin     1
  30.  
  31. #define COLOR_WHITE         0xFFFFFFFF
  32. #define COLOR_RED           0xE60000FF
  33. #define COLOR_PURPLE        0xC84ECBFF
  34. #define COLOR_BLUE          0x0000FFFF
  35. #define COLOR_DARKGREY      0x5F5F5FFF
  36. #define COLOR_LIGHTGREEN    0x9BFF37FF
  37. #define COLOR_YELLOW        0xFFFF00FF
  38. #define WHISPER             0x8080FFDE
  39. #define GREY                0x808080FF
  40. #define SHOUT               0xFF8000DE
  41.  
  42.  
  43.  
  44.  
  45. #define AdminOnly "You are not authorized to use this command."
  46. #define HelperOnly "You must be a helper moderator to use this command."
  47.  
  48.  
  49.  
  50. //---Dialog IDS]---
  51. #define DIALOG_REGISTER_PASSWORD    (1)
  52. #define DIALOG_REGISTER_EMAIL   (2)
  53. #define DIALOG_LOGIN    (3)
  54. #define DIALOG_MAIN_MENU    (4)
  55. #define DIALOG_MAIN_MENU_OPTIONS    (5)
  56. #define DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME  (6)
  57. #define DIALOG_MAIN_MENU_CREATE_CHARACTER_AGE   (7)
  58. #define DIALOG_MAIN_MENU_CREATE_CHARACTER_SEX   (8)
  59. #define DIALOG_MAIN_MENU_CREATE_CHARACTER_RELIGION  (9)
  60. #define DIALOG_MAIN_MENU_CHARACTER_DELETE   (10)
  61. #define DIALOG_MAIN_MENU_CHANGE_PASSWORD    (11)
  62. #define DIALOG_MAIN_MENU_CHANGE_PHRASE  (12)
  63. //-----------------
  64.  
  65. #define MYSQL_HOST  "localhost" //This will be your mysql host.
  66. #define MYSQL_USER "root" //This will be your mysql username.
  67. #define MYSQL_DB   "sampserver" //This is your database name.
  68. #define MYSQL_PASS "asd123" //This is your mysql password.
  69. //-----------------
  70.  
  71.  
  72.  
  73.  
  74. new vNames[][] = {
  75.    "Landstalker",
  76.    "Bravura",
  77.    "Buffalo",
  78.    "Linerunner",
  79.    "Pereniel",
  80.    "Sentinel",
  81.    "Dumper",
  82.    "Firetruck",
  83.    "Trashmaster",
  84.    "Stretch",
  85.    "Manana",
  86.    "Infernus",
  87.    "Voodoo",
  88.    "Pony",
  89.    "Mule",
  90.    "Cheetah",
  91.    "Ambulance",
  92.    "Leviathan",
  93.    "Moonbeam",
  94.    "Esperanto",
  95.    "Taxi",
  96.    "Washington",
  97.    "Bobcat",
  98.    "Mr Whoopee",
  99.    "BF Injection",
  100.    "Hunter",
  101.    "Premier",
  102.    "Enforcer",
  103.    "Securicar",
  104.    "Banshee",
  105.    "Predator",
  106.    "Bus",
  107.    "Rhino",
  108.    "Barracks",
  109.    "Hotknife",
  110.    "Trailer",
  111.    "Previon",
  112.    "Coach",
  113.    "Cabbie",
  114.    "Stallion",
  115.    "Rumpo",
  116.    "RC Bandit",
  117.    "Romero",
  118.    "Packer",
  119.    "Monster Truck",
  120.    "Admiral",
  121.    "Squalo",
  122.    "Seasparrow",
  123.    "Pizzaboy",
  124.    "Tram",
  125.    "Trailer",
  126.    "Turismo",
  127.    "Speeder",
  128.    "Reefer",
  129.    "Tropic",
  130.    "Flatbed",
  131.    "Yankee",
  132.    "Caddy",
  133.    "Solair",
  134.    "Berkley's RC Van",
  135.    "Skimmer",
  136.    "PCJ-600",
  137.    "Faggio",
  138.    "Freeway",
  139.    "RC Baron",
  140.    "RC Raider",
  141.    "Glendale",
  142.    "Oceanic",
  143.    "Sanchez",
  144.    "Sparrow",
  145.    "Patriot",
  146.    "Quad",
  147.    "Coastguard",
  148.    "Dinghy",
  149.    "Hermes",
  150.    "Sabre",
  151.    "Rustler",
  152.    "ZR-350",
  153.    "Walton",
  154.    "Regina",
  155.    "Comet",
  156.    "BMX",
  157.    "Burrito",
  158.    "Camper",
  159.    "Marquis",
  160.    "Baggage",
  161.    "Dozer",
  162.    "Maverick",
  163.    "News Chopper",
  164.    "Rancher",
  165.    "FBI Rancher",
  166.    "Virgo",
  167.    "Greenwood",
  168.    "Jetmax",
  169.    "Hotring",
  170.    "Sandking",
  171.    "Blista Compact",
  172.    "Police Maverick",
  173.    "Boxville",
  174.    "Benson",
  175.    "Mesa",
  176.    "RC Goblin",
  177.    "Hotring Racer",
  178.    "Hotring Racer",
  179.    "Bloodring Banger",
  180.    "Rancher",
  181.    "Super GT",
  182.    "Elegant",
  183.    "Journey",
  184.    "Bike",
  185.    "Mountain Bike",
  186.    "Beagle",
  187.    "Cropdust",
  188.    "Stunt",
  189.    "Tanker",
  190.    "RoadTrain",
  191.    "Nebula",
  192.    "Majestic",
  193.    "Buccaneer",
  194.    "Shamal",
  195.    "Hydra",
  196.    "FCR-900",
  197.    "NRG-500",
  198.    "HPV1000",
  199.    "Cement Truck",
  200.    "Tow Truck",
  201.    "Fortune",
  202.    "Cadrona",
  203.    "FBI Truck",
  204.    "Willard",
  205.    "Forklift",
  206.    "Tractor",
  207.    "Combine",
  208.    "Feltzer",
  209.    "Remington",
  210.    "Slamvan",
  211.    "Blade",
  212.    "Freight",
  213.    "Streak",
  214.    "Vortex",
  215.    "Vincent",
  216.    "Bullet",
  217.    "Clover",
  218.    "Sadler",
  219.    "Firetruck",
  220.    "Hustler",
  221.    "Intruder",
  222.    "Primo",
  223.    "Cargobob",
  224.    "Tampa",
  225.    "Sunrise",
  226.    "Merit",
  227.    "Utility",
  228.    "Nevada",
  229.    "Yosemite",
  230.    "Windsor",
  231.    "Monster Truck",
  232.    "Monster Truck",
  233.    "Uranus",
  234.    "Jester",
  235.    "Sultan",
  236.    "Stratum",
  237.    "Elegy",
  238.    "Raindance",
  239.    "RC Tiger",
  240.    "Flash",
  241.    "Tahoma",
  242.    "Savanna",
  243.    "Bandito",
  244.    "Freight",
  245.    "Trailer",
  246.    "Kart",
  247.    "Mower",
  248.    "Duneride",
  249.    "Sweeper",
  250.    "Broadway",
  251.    "Tornado",
  252.    "AT-400",
  253.    "DFT-30",
  254.    "Huntley",
  255.    "Stafford",
  256.    "BF-400",
  257.    "Newsvan",
  258.    "Tug",
  259.    "Trailer",
  260.    "Emperor",
  261.    "Wayfarer",
  262.    "Euros",
  263.    "Hotdog",
  264.    "Club",
  265.    "Trailer",
  266.    "Trailer",
  267.    "Andromada",
  268.    "Dodo",
  269.    "RC Cam",
  270.    "Launch",
  271.    "Police Car (LSPD)",
  272.    "Police Car (SFPD)",
  273.    "Police Car (LVPD)",
  274.    "Police Ranger",
  275.    "Picador",
  276.    "S.W.A.T. Van",
  277.    "Alpha",
  278.    "Phoenix",
  279.    "Glendale",
  280.    "Sadler",
  281.    "Luggage Trailer",
  282.    "Luggage Trailer",
  283.    "Stair Trailer",
  284.    "Boxville",
  285.    "Farm Plow",
  286.    "Utility Trailer"
  287. };
  288.  
  289.  
  290. enum MainAccount
  291. {
  292.     mID,
  293.     mPassword[20],
  294.     mEmailAddress[25],
  295.     mCurrentCID,
  296.     mRealName[128],
  297.     bool:mLoggedIn,
  298.     mSuperAdmin,
  299.     mSecretPhrase[28],
  300.     mOriginalUsername[MAX_PLAYER_NAME],
  301.     mOld_IP[20],
  302.     mCharacterString[128],
  303. }
  304. new MasterAccount[MAX_PLAYERS][MainAccount];
  305.  
  306. enum PlayerCharacter
  307. {
  308.     cName[MAX_PLAYER_NAME],
  309.     cOwnerID,
  310.     cID,
  311.     cAdminLevel,
  312.     Float:cX,
  313.     Float:cY,
  314.     Float:cZ,
  315.     Float:cAngle,
  316.     cWorld,
  317.     cInterior,
  318.     cCash,
  319.     cBank,
  320.     cSkin,
  321.     cMask,
  322.     Level,
  323.     SpawnPoint,
  324.     Accent,
  325.     ExperiencePoints,
  326.     Deaths,
  327.     Kills,
  328.     CellPhone,
  329.     CellPhoneNumber,
  330.     CellBattery,
  331.     Job,
  332.     CarKey1,
  333.     CarKey2,
  334.     CarKey3,
  335.     Clothes1,
  336.     Clothes2,
  337.     Clothes3,
  338.     ClothesUsed,
  339.     CarLicense,
  340.     TruckLicense,
  341.     HouseKey,
  342.     Business1Key,
  343.     Business2Key,
  344.     Faction,
  345.     FactionRank,
  346. }
  347. new Character[MAX_PLAYERS][PlayerCharacter];
  348.  
  349. enum HouseData
  350. {
  351.     HouseName[128],
  352.     HouseOwner[24],
  353.     HouseID,
  354.     Float:HouseExteriorX,
  355.     Float:HouseExteriorY,
  356.     Float:HouseExteriorZ,
  357.     Float:HouseInteriorX,
  358.     Float:HouseInteriorY,
  359.     Float:HouseInteriorZ,
  360.     HouseInteriorID,
  361.     HousePrice,
  362.     HouseLocked,
  363.     HouseWorld
  364. };
  365. new Houses[MAX_HOUSES][HouseData];
  366.  
  367. enum FactionData
  368. {
  369.     FactionName[128],
  370.     RankOne[24],
  371.     RankTwo[24],
  372.     RankThree[24],
  373.     RankFour[24],
  374.     RankFive[24],
  375.     RankSix[24],
  376.     RankSeven[24],
  377.     Float:fSpawnX,
  378.     Float:fSpawnY,
  379.     Float:fSpawnZ,
  380.     Float:fSpawnA,
  381.     Float:fPayCheckX,
  382.     Float:fPayCheckY,
  383.     Float:fPayCheckZ,
  384. };
  385. new Factions[MAX_FACTIONS][FactionData];
  386.  
  387. enum _Vehicles
  388. {
  389.     vModel,
  390.     vColor1,
  391.     vColor2,
  392.     vPrice,
  393.     VehicleOwner[MAX_PLAYER_NAME],
  394.     Float:vPosX,
  395.     Float:vPosY,
  396.     Float:vPosZ,
  397.     Float:vPosA,
  398.     VehiclePlate[32],
  399.     VehiclePaintJob,
  400.     vLocked,
  401.     vTrunkMoney,
  402.     vTrunkMats,
  403.     vTrunkCocaine,
  404.     vTrunkMoonshine,
  405.     vTrunkWeed,
  406.     vFuel
  407. }
  408. //new Vehicles[MAX_BUYABLE_VEH][_Vehicles];
  409.  
  410.  
  411. //-------------------------------------NEW'S-------------------------------------
  412. // new VehicleID = GetPlayerVehicleId(playerid)
  413.  
  414. new Player_Name[MAX_PLAYERS][MAX_PLAYER_NAME], Player_Ip[MAX_PLAYERS][16];
  415.  
  416. //new EngineStatus[MAX_PLAYERS];
  417. //new Float:vhp;
  418. new Logged[MAX_PLAYERS];
  419. new MaskNumber[MAX_PLAYERS], MaskOn[MAX_PLAYERS], Text3D:masklabel[MAX_PLAYERS];
  420. //new Text3D:NameTag[MAX_PLAYERS];
  421. new gHandle;
  422.  
  423. //--------------FORWARDS--------------
  424.  
  425.  
  426.  
  427.  
  428. main()
  429. {
  430.     print(" Blank Gamemode by your name here");
  431. }
  432.  
  433.  
  434. public OnGameModeInit()
  435. {
  436.     gHandle = mysql_connect("localhost", "root", "sampserver", "");
  437.     if(mysql_errno() != 0) print("Could not connect to database!");
  438.    
  439.    
  440.     //Timers
  441.     SetTimer("AntiCheatTimer", 1000, 1);
  442.    
  443.    
  444.     ManualVehicleEngineAndLights();
  445.     ShowPlayerMarkers(0);
  446.     EnableStuntBonusForAll(0);
  447.     DisableInteriorEnterExits();
  448.     return 1;
  449. }
  450.  
  451.  
  452.  
  453.  
  454. public OnGameModeExit()
  455. {
  456.     return 1;
  457. }
  458.  
  459. public OnPlayerRequestClass(playerid, classid)
  460. {
  461.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  462.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  463.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  464.     return 0;
  465. }
  466.  
  467. forward AccountExists(playerid); // Checks if the master account is already registered.
  468. public AccountExists(playerid)
  469. {
  470.     if(IsPlayerConnected(playerid))
  471.     {
  472.         new str[128];
  473.         format(str, sizeof(str), "SELECT `mID` FROM `MasterAccount` WHERE `mID` = '%s'", PlayerName(playerid));
  474.         mysql_query(gHandle, str);
  475.         if(cache_num_rows() >=1)
  476.         {
  477.             return true;
  478.         }
  479.     }
  480.     return false;
  481. }
  482.  
  483. forward MasterAccountLogin(playerid, password[]); // Login to an existing master account.
  484. public MasterAccountLogin(playerid, password[])
  485. {
  486.     if(IsPlayerConnected(playerid))
  487.     {
  488.         if(AccountExists(playerid))
  489.         {
  490.             if(strlen(password) >= 1 && strlen(password) <= 20)
  491.             {
  492.                 if(!MasterAccount[playerid][mLoggedIn])
  493.                 {
  494.                     new value[128];
  495.                     new query[128];
  496.                     format(query, sizeof(query), "SELECT * FROM `MasterAccount` WHERE `username` = '%s' AND `mPassword` = '%s' LIMIT 1", MasterAccount[playerid][mOriginalUsername] , MasterAccount[playerid][mPassword]);
  497.                     new Cache:result = mysql_query(gHandle, query);
  498.                     if(cache_num_rows() > 0)
  499.                     {
  500.                         SetPlayerColor(playerid, COLOR_LIGHTGREEN);
  501.                         MasterAccount[playerid][mLoggedIn] = true;
  502.                         cache_get_field_content(0, "password", MasterAccount[playerid][mPassword], 20);
  503.                         cache_get_field_content(0, "email_address", MasterAccount[playerid][mEmailAddress], 30);
  504.                         cache_get_field_content(0, "ip_address", MasterAccount[playerid][mOld_IP], 20);
  505.                         cache_get_field_content(0, "super_admin", value, 5); MasterAccount[playerid][mSuperAdmin] = strval(value);
  506.                         cache_get_field_content(0, "id", value, 15); MasterAccount[playerid][mID] = strval(value);
  507.                         ShowMenuDialog(playerid);
  508.                         printf("Password: %s, Email Address: %s, Last IP Used: %s, Super Admin: %d, ID: %d.", MasterAccount[playerid][mPassword],  MasterAccount[playerid][mEmailAddress],  MasterAccount[playerid][mOld_IP], MasterAccount[playerid][mSuperAdmin], MasterAccount[playerid][mID]);
  509.                         return true;
  510.                     }
  511.                     else
  512.                     {
  513.                         SetPVarInt(playerid, "LOGIN_ATTEMPTS", GetPVarInt(playerid, "LOGIN_ATTEMPTS") + 1);
  514.                         switch(GetPVarInt(playerid, "LOGIN_ATTEMPTS"))
  515.                         {
  516.                             case 1: ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Master Account - Login","The password you entered is incorrect.","Login","Cancel");
  517.                             case 2: ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Master Account - Login","The password you entered is incorrect.","Login","Cancel");
  518.                             case 3: ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Master Account - Login","The password you entered is incorrect.","Login","Cancel");
  519.                             case 4: Kick(playerid);
  520.                         }
  521.                     }
  522.                     cache_delete(result);
  523.                 }
  524.             }
  525.             else
  526.             {
  527.                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Master Account - Login","Account already registered, please enter your password to continue.","Login","Cancel");
  528.             }
  529.         }
  530.     }
  531.     return false;
  532. }
  533.  
  534. forward MasterAccountRegister(playerid); // Register a new Master Account if name not already in use.
  535. public MasterAccountRegister(playerid)
  536. {
  537.     if(!AccountExists(playerid))
  538.     {
  539.         new Query[300];
  540.         mysql_format(gHandle, Query, sizeof (Query), "INSERT INTO Master (username,password,email_address,ip_address,super_admin,old_ip) VALUES ('%e' , '%e', '%e', '%e', 0, 'UNKNOWN')", PlayerName(playerid), GetPVarStringEx(playerid, "TEMP_PASSWORD"), GetPVarStringEx(playerid, "TEMP_EMAIL"), GetPlayerIPEx(playerid));
  541.         mysql_query(gHandle, Query, false);
  542.         DeletePVar(playerid,"TEMP_EMAIL");
  543.         DeletePVar(playerid,"TEMP_PASSWORD");
  544.         return true;
  545.     }
  546.     return false;
  547. }
  548.  
  549.  
  550. forward ResetMasterAccountVariables(playerid);                              // Resetting variables upon connection.
  551. public ResetMasterAccountVariables(playerid)
  552. {
  553.     strmid(MasterAccount[playerid][mPassword], "", 128, 128);
  554.     strmid(MasterAccount[playerid][mEmailAddress], "", 128, 128);
  555.     MasterAccount[playerid][mCurrentCID] = -1;                                      // 0 = no character in use.
  556.     MasterAccount[playerid][mID] = 0;
  557.     strmid(MasterAccount[playerid][mRealName], "", 128, 128);
  558.     MasterAccount[playerid][mSuperAdmin] = 0;                                           // Not super-administrator.
  559.     strmid(MasterAccount[playerid][mSecretPhrase], "", 128, 128);
  560.     strmid(MasterAccount[playerid][mOriginalUsername], "", 128, 128);
  561.     strmid(MasterAccount[playerid][mOld_IP], "", 128, 128);
  562.     MasterAccount[playerid][mLoggedIn] = false;                             // Not logged in.
  563.    
  564.    
  565.     MasterAccount[playerid][mPassword][0] = MasterAccount[playerid][mEmailAddress][0] = MasterAccount[playerid][mRealName][0] = MasterAccount[playerid][mSecretPhrase][0] = MasterAccount[playerid][mOriginalUsername][0] = MasterAccount[playerid][mOld_IP][0] = 0;
  566.    
  567. }
  568.  
  569. forward SaveCharacter(playerid);
  570. public SaveCharacter(playerid)
  571. {
  572.     if(AccountExists(playerid))
  573.     {
  574.         if(MasterAccount[playerid][mLoggedIn])
  575.         {
  576.             new query[1024], pname[24];
  577.             GetPlayerName(playerid, pname, 24);
  578.             format(query, sizeof(query), "UPDATE PlayerCharacter SET cName=%s, cOwnerID=%d, Level=%d, cAdminLevel=%d, cCash=%d, cBank=%d, cMask=%d, ExperiencePoints=%d, SpawnPoint=%d, CellPhone=%d, CellPhoneNumber=%d, Accent=%s, CellBattery=%d, Job=%d, cID=%d, Deaths=%d, Kills=%d, CarKey1=%d, CarKey2=%d, CarKey3=%d, Clothes1=%d, Clothes2=%d, Clothes3=%d, ClothesUsed=%d, CarLicense=%d, HouseKey=%d, Business1Key=%d, Business2Key=%d, Faction=%d, FactionRank=%d WHERE Username='%s'", // <----572
  579.             Character[playerid][cName],
  580.             Character[playerid][cOwnerID],
  581.             Character[playerid][cID],
  582.             Character[playerid][cAdminLevel],
  583. /*          Character[playerid][Float:cX],
  584.             Character[playerid][Float:cY],
  585.             Character[playerid][Float:cZ],
  586.             Character[playerid][Float:cAngle],
  587.             Character[playerid][cWorld],
  588.             Character[playerid][cInterior],*/
  589.             Character[playerid][cCash],
  590.             Character[playerid][cBank],
  591.             Character[playerid][cSkin],
  592.             Character[playerid][cMask],
  593.             Character[playerid][Level],
  594.             Character[playerid][SpawnPoint],
  595.             Character[playerid][Accent],
  596.             Character[playerid][ExperiencePoints],
  597.             Character[playerid][Deaths],
  598.             Character[playerid][Kills],
  599.             Character[playerid][CellPhone],
  600.             Character[playerid][CellPhoneNumber],
  601.             Character[playerid][CellBattery],
  602.             Character[playerid][Job],
  603.             Character[playerid][CarKey1],
  604.             Character[playerid][CarKey2],
  605.             Character[playerid][CarKey3],
  606.             Character[playerid][Clothes1],
  607.             Character[playerid][Clothes2],
  608.             Character[playerid][Clothes3],
  609.             Character[playerid][ClothesUsed],
  610.             Character[playerid][CarLicense],
  611.             Character[playerid][HouseKey],
  612.             Character[playerid][Business1Key],
  613.             Character[playerid][Business2Key],
  614.             Character[playerid][Faction],
  615.             Character[playerid][FactionRank]);
  616.             mysql_query(1, query);
  617.             /*
  618.             format(query, sizeof(query), "UPDATE PlayerCharacter SET Clothes1=%d, Clothes2=%d, Clothes3=%d, ClothesUsed=%d, CarLicense=%d, TruckLicense=%d, HouseKey=%d, Business1Key=%d, Business2Key=%d, Faction=%d, FactionRank=%d, WHERE Username='%s'",
  619.             Character[playerid][Clothes1],
  620.             Character[playerid][Clothes2],
  621.             Character[playerid][Clothes3],
  622.             Character[playerid][ClothesUsed],
  623.             Character[playerid][CarLicense],
  624.             Character[playerid][TruckLicense],
  625.             Character[playerid][HouseKey],
  626.             Character[playerid][Business1Key],
  627.             Character[playerid][Business2Key],
  628.             Character[playerid][Faction],
  629.             Character[playerid][FactionRank],
  630.             pname);
  631.             mysql_query(1, query);*/
  632.            
  633.            
  634.             return true;
  635.         }
  636.     }
  637.     return false;
  638. }
  639.  
  640. forward ShowMenuDialog(playerid);
  641. public ShowMenuDialog(playerid)
  642. {
  643.     //new count = 0;   // , CharacterName[MAX_PLAYER_NAME];
  644.     format(MasterAccount[playerid][mCharacterString], 128, ""); // Resetting Character list string, because reading text from list is impossible.
  645.     if(MasterAccount[playerid][mLoggedIn])
  646.     {
  647.         new str[128];
  648.         format(str, sizeof(str), "SELECT * FROM `PlayerCharacter` WHERE ( `owner_id` = '%d' )", MasterAccount[playerid][mID]);
  649.         new Cache:result = mysql_query(gHandle, str);
  650.         if(cache_num_rows() <= 0)
  651.         {
  652.             ShowPlayerDialog(playerid, DIALOG_MAIN_MENU, DIALOG_STYLE_LIST, "Main Menu - Character Selection", "No characters available.", "Spawn", "Options");
  653.         }
  654.         else
  655.         {
  656.             for(new a;a<cache_num_rows();a++)
  657.             {
  658.                 new test[128];
  659.                 cache_get_field_content(a, "name", test);  //CharacterName, MAX_PLAYER_NAME);
  660.                 if(a == (cache_num_rows() - 1)) { format( MasterAccount[playerid][mCharacterString], 128, "%s  ", test); /*RemoveUnderScore(CharacterName)*//*%s*/ }
  661.                 else
  662.                 {
  663.                     format( MasterAccount[playerid][mCharacterString], 128, "%s\n  ", test); /*RemoveUnderScore(CharacterName)*//*%s*/
  664.                 }
  665.                 //db_next_row(qresult);
  666.             }
  667.             if(strlen(MasterAccount[playerid][mCharacterString]) >= 1) { ShowPlayerDialog(playerid, DIALOG_MAIN_MENU, DIALOG_STYLE_LIST, "Main Menu - Character Selection", MasterAccount[playerid][mCharacterString], "Spawn", "Options"); }
  668.         }
  669.         cache_delete(result);
  670.     }
  671. }
  672.  
  673.  
  674. forward ResetPlayerCharacterVariables(playerid);
  675. public ResetPlayerCharacterVariables(playerid)
  676. {
  677.     strmid(Character[playerid][cName], "", 128, 128);
  678.     Character[playerid][cID] = -1;
  679.     Character[playerid][cOwnerID] = -1;
  680.     Character[playerid][cAdminLevel] = 0;
  681.     ResetPlayerCash(playerid);
  682.     Character[playerid][cBank] = 0;
  683.     Character[playerid][cSkin] = 0;
  684.     Character[playerid][cMask] = 0;
  685.     Character[playerid][Level] = 0;
  686.     Character[playerid][SpawnPoint] = 0;
  687.     Character[playerid][Accent] = 0;
  688.     Character[playerid][ExperiencePoints] = 0;
  689.     Character[playerid][Deaths] = 0;
  690.     Character[playerid][Kills] = 0;
  691.     Character[playerid][CellPhone] = 0;
  692.     Character[playerid][CellPhoneNumber] = 0;
  693.     Character[playerid][CellBattery] = 0;
  694.     Character[playerid][Job] = 0;
  695.     Character[playerid][CarKey1] = 0;
  696.     Character[playerid][CarKey2] = 0;
  697.     Character[playerid][CarKey3] = 0;
  698.     Character[playerid][Clothes1] = 0;
  699.     Character[playerid][Clothes2] = 0;
  700.     Character[playerid][Clothes3] = 0;
  701.     Character[playerid][ClothesUsed] = 0;
  702.     Character[playerid][CarLicense] = 0;
  703.     Character[playerid][TruckLicense] = 0;
  704.     Character[playerid][HouseKey] = 0;
  705.     Character[playerid][Business1Key] = 0;
  706.     Character[playerid][Business2Key] = 0;
  707.     Character[playerid][Faction] = 0;
  708.     Character[playerid][FactionRank] = 0;
  709.    
  710.    
  711.     //Character[playerid][cNameLabel] = -1; // Set to null, i'm not sure as what the invalid ID is but i assume it's -1.
  712. }
  713.  
  714. forward PlayerCharacterCount(playerid);
  715. public PlayerCharacterCount(playerid)
  716. {
  717.     new count;
  718.     if(IsPlayerConnected(playerid))
  719.     {
  720.         if(MasterAccount[playerid][mLoggedIn])
  721.         {
  722.             new query[128];
  723.             format(query, sizeof(query), "SELECT * FROM `MasterAccount` WHERE owner_id=%d", MasterAccount[playerid][mID]);
  724.             mysql_query(1, query);
  725.             count = cache_get_row_count(count);
  726.            
  727.         }
  728.     }
  729.     return count;
  730. }
  731.  
  732.  
  733.  
  734.  
  735.  
  736. forward CharacterID(charactername[]); // Returns the character ID of the desired name.
  737. public CharacterID(charactername[])
  738. {
  739.     new otherid[11], id, query[128];
  740.     format(query, sizeof(query), "SELECT * FROM `Character` WHERE name=%s LIMIT 1", charactername);
  741.     mysql_query(gHandle, query);
  742.     if(cache_num_rows() > 0)
  743.     {
  744.         cache_get_field_content(0, "id", otherid, 11);
  745.         id = strval(otherid);
  746.     }
  747.     return id;
  748. }
  749.  
  750.  
  751. forward CharacterExists(charactername[]); // Checks if the character exists by name.
  752. public CharacterExists(charactername[])
  753. {
  754.     new query[128];
  755.     format(query, sizeof(query), "SELECT * FROM `Character` WHERE name=%s", charactername);
  756.     mysql_query(gHandle, query);
  757.     if(cache_num_rows() >= 1)
  758.     {
  759.         return true;
  760.     }
  761.     return false;
  762. }
  763.  
  764.  
  765. forward SpawnedAsCharacter(playerid);
  766. public SpawnedAsCharacter(playerid)
  767. {
  768.     if(IsPlayerConnected(playerid))
  769.     {
  770.         if(MasterAccount[playerid][mLoggedIn])
  771.         {
  772.             if(Character[playerid][cID] != -1) return true;
  773.         }
  774.     }
  775.     return false;
  776. }
  777.  
  778. forward CreateCharacter(playerid, charactername[],playercash, playerbank, playerskin); // Creates a character.
  779. public CreateCharacter(playerid, charactername[], playercash, playerbank, playerskin)
  780. {
  781.     if(AccountExists(playerid)) // Checking if master account exists.
  782.     {
  783.         if(MasterAccount[playerid][mLoggedIn]) // Checking if players logged in.
  784.         {
  785.             if(!CharacterExists(charactername)) // Continue if character does not exist.
  786.             {
  787.                 if(PlayerCharacterCount(playerid) <= MAX_CHARACTER_SLOTS) // Checking if player has went over his character limit.
  788.                 {
  789.                     if(strlen(charactername) >= 1)
  790.                     {/*
  791.                         new query[256];
  792.                         format(query, sizeof(query), "INSERT INTO `PlayerCharacter` cName=%s, cOwnerID=%d, Level=%d, cAdminLevel=%d, cCash=%d, cBank=%d, cMask=%d, ExperiencePoints=%d, SpawnPoint=%d, CellPhoneNumber=%d, Accent='%s', CellBattery=%d, Job=%d, cID=%d, Deaths=%d, Kills=%d, CarKey1=%d, CarKey2=%d, CarKey3=%d WHERE Username='%s'",
  793.                         */
  794.                         new query[1024], pname[24];
  795.                         GetPlayerName(playerid, pname, 24);
  796.                         format(query, sizeof(query), "INSERT INTO PlayerCharacter SET cName=%s, cOwnerID=%d, Level=%d, cAdminLevel=%d, cCash=%d, cBank=%d, cMask=%d, ExperiencePoints=%d, SpawnPoint=%d, CellPhone=%d, CellPhoneNumber=%d, Accent=%s, CellBattery=%d, Job=%d, cID=%d, Deaths=%d, Kills=%d, CarKey1=%d, CarKey2=%d, CarKey3=%d, Clothes1=%d, Clothes2=%d, Clothes3=%d, ClothesUsed=%d, CarLicense=%d, HouseKey=%d, Business1Key=%d, Business2Key=%d, Faction=%d, FactionRank=%d WHERE Username='%s'", // <----572
  797.                         Character[playerid][cName],
  798.                         Character[playerid][cOwnerID],
  799.                         Character[playerid][cID],
  800.                         Character[playerid][cAdminLevel],
  801.                         Character[playerid][cCash],
  802.                         Character[playerid][cBank],
  803.                         Character[playerid][cSkin],
  804.                         Character[playerid][cMask],
  805.                         Character[playerid][Level],
  806.                         Character[playerid][SpawnPoint],
  807.                         Character[playerid][Accent],
  808.                         Character[playerid][ExperiencePoints],
  809.                         Character[playerid][Deaths],
  810.                         Character[playerid][Kills],
  811.                         Character[playerid][CellPhone],
  812.                         Character[playerid][CellPhoneNumber],
  813.                         Character[playerid][CellBattery],
  814.                         Character[playerid][Job],
  815.                         Character[playerid][CarKey1],
  816.                         Character[playerid][CarKey2],
  817.                         Character[playerid][CarKey3],
  818.                         Character[playerid][Clothes1],
  819.                         Character[playerid][Clothes2],
  820.                         Character[playerid][Clothes3],
  821.                         Character[playerid][ClothesUsed],
  822.                         Character[playerid][CarLicense],
  823.                         Character[playerid][HouseKey],
  824.                         Character[playerid][Business1Key],
  825.                         Character[playerid][Business2Key],
  826.                         Character[playerid][Faction],
  827.                         Character[playerid][FactionRank]);
  828.                         mysql_query(gHandle, query, false);
  829.                        
  830.                        
  831.                        
  832.                         //MasterAccount[playerid][mID]);
  833.                         //mysql_query(1, query);
  834.                         format(query, sizeof(query), "Your character ID = %d.", Character[playerid][cID]);
  835.                         SendClientMessage(playerid, COLOR_WHITE, query);
  836.                         return true;
  837.                        
  838.                        
  839.                         //"INSERT INTO `PlayerCharacter` (`admin_level`,`cash`,`sex`,`age`,`bank`,`skin`,`religion`,`name`,`owner_id`) VALUES ( 0, %d, %d, %d, %d, %d, %d, '%s', %d)"
  840.                     }
  841.                     else
  842.                     {
  843.                         ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME,DIALOG_STYLE_INPUT,"Master Account - New Character","You left the character name field blank.\n(Firstname Lastname format).","Continue","Go Back");
  844.                     }
  845.                 }
  846.                 else
  847.                 {
  848.                     ShowMenuDialog(playerid);
  849.                     SendClientMessage(playerid, COLOR_RED, "[I:] You have exceeded your character limit, and cannot create a new character.");
  850.                 }
  851.             }
  852.             else
  853.             {
  854.                 ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME,DIALOG_STYLE_INPUT,"Master Account - New Character","That character name already exists, choose another.\n(Firstname Lastname format).","Continue","Go Back");
  855.             }
  856.         }
  857.     }
  858.     return false;
  859. }
  860.  
  861.  
  862. forward DespawnCharacter(playerid); // Despawns the character if it's spawnted.
  863. public DespawnCharacter(playerid) // Force character selection is bugged, so we make the illusion it's going to character selection.
  864. {
  865.     if(IsPlayerConnected(playerid))
  866.     {
  867.         if(MasterAccount[playerid][mLoggedIn])
  868.         {
  869.             if(SpawnedAsCharacter(playerid)) // Making sure a character slot is in use.
  870.             {
  871.                 SaveCharacter(playerid);
  872.                 TogglePlayerControllable(playerid, 0);
  873.                 SetPlayerPos(playerid,1518.5189,-1084.0756,33.3984);
  874.                 SetPlayerCameraPos(playerid, 2126.0251,1283.9984,63.0858);
  875.                 SetPlayerCameraLookAt(playerid,92178.8748,1285.5367,39.5399);
  876.                 ResetPlayerCharacterVariables(playerid);
  877.                 MasterAccount[playerid][mCurrentCID] = -1;
  878.                 ShowMenuDialog(playerid);
  879.                 SetPlayerColor(playerid, COLOR_DARKGREY); // Character selection.
  880.                 return true;
  881.             }
  882.         }
  883.     }
  884.     return false;
  885. }
  886.  
  887. forward PlayerOwnsCharacter_Name(playerid, charactername[]);
  888. public PlayerOwnsCharacter_Name(playerid, charactername[])
  889. {
  890.     if(IsPlayerConnected(playerid))
  891.     {
  892.         if(MasterAccount[playerid][mLoggedIn])
  893.         {
  894.             new query[128];
  895.             format(query, sizeof(query), "SELECT * FROM `Character` WHERE ( `name` = '%s' AND `owner_id` = '%d' )", charactername, MasterAccount[playerid][mID]);
  896.             mysql_query(gHandle, query);
  897.             if(cache_num_rows() >= 1)
  898.             {
  899.                 return true;
  900.             }
  901.         }
  902.     }
  903.     return false;
  904. }
  905.  
  906. forward PlayerOwnsCharacter_ID(playerid, id);
  907. public PlayerOwnsCharacter_ID(playerid, id)
  908. {
  909.     if(IsPlayerConnected(playerid))
  910.     {
  911.         if(MasterAccount[playerid][mLoggedIn])
  912.         {
  913.             new query[128];
  914.             format(query, sizeof(query), "SELECT * FROM `Character` WHERE ( `id` = '%d' AND `owner_id` = '%d' )", id, MasterAccount[playerid][mID]);
  915.             mysql_query(gHandle, query);
  916.             if(cache_num_rows() >= 1)
  917.             {
  918.                 return true;
  919.             }
  920.         }
  921.     }
  922.     return false;
  923. }
  924.  
  925. forward LoadCharacter(playerid, charactername[]); // Load character.
  926. public LoadCharacter(playerid, charactername[])
  927. {
  928.     new count = 0, value[128];
  929.     if(IsPlayerConnected(playerid))
  930.     {
  931.         if(MasterAccount[playerid][mLoggedIn])
  932.         {
  933.             count = PlayerCharacterCount(playerid);
  934.             if(count >= 1 && count <= MAX_CHARACTER_SLOTS)
  935.             {
  936.                 if(CharacterExists(charactername))
  937.                 {
  938.                     MasterAccount[playerid][mCurrentCID] = CharacterID(charactername);
  939.                     if(MasterAccount[playerid][mCurrentCID] != -1)
  940.                     {
  941.                         new query[256];
  942.                         new temp[128];
  943.                         format(query, sizeof(query), "SELECT * FROM `PlayerCharacter` WHERE ( `id` = '%d' )", MasterAccount[playerid][mCurrentCID]);
  944.                         mysql_query(gHandle, query);
  945.                         Character[playerid][cID] = MasterAccount[playerid][mCurrentCID];
  946.                         cache_get_field_content(0, "cName", temp);  Character[playerid][cName] = strval(value);  /*(qresult, "admin_level", value, 11);*/  
  947.                         cache_get_field_content(0, "cOwnerID", value, 11);  Character[playerid][cOwnerID] = strval(value);
  948.                         cache_get_field_content(0, "cID", value, 11);   Character[playerid][cID] = strval(value);
  949.                         cache_get_field_content(0, "cAdminLevel", value, 11);   Character[playerid][cAdminLevel] = strval(value);
  950.                         cache_get_field_content(0, "cCash", value, 11); Character[playerid][cCash] = strval(value);
  951.                         cache_get_field_content(0, "cBank", value, 11); Character[playerid][cBank] = strval(value);
  952.                         cache_get_field_content(0, "cSkin", value, 11); Character[playerid][cSkin] = strval(value);
  953.                         cache_get_field_content(0, "cMask", value, 11); Character[playerid][cMask] = strval(value);
  954.                         cache_get_field_content(0, "Level", value, 11); Character[playerid][Level] = strval(value);
  955.                         cache_get_field_content(0, "SpawnPoint", value, 11);    Character[playerid][SpawnPoint] = strval(value);
  956.                         cache_get_field_content(0, "Accent", value, 11);    Character[playerid][Accent] = strval(value);
  957.                         cache_get_field_content(0, "ExperiencePoints", value, 11);  Character[playerid][ExperiencePoints] = strval(value);
  958.                         cache_get_field_content(0, "Deaths", value, 11);    Character[playerid][Deaths] = strval(value);
  959.                         cache_get_field_content(0, "Kills", value, 11); Character[playerid][Kills] = strval(value);
  960.                         cache_get_field_content(0, "CellPhone", value, 11); Character[playerid][CellPhone] = strval(value);
  961.                         cache_get_field_content(0, "CellPhoneNumber", value, 11);   Character[playerid][CellPhoneNumber] = strval(value);
  962.                         cache_get_field_content(0, "CellBattery", value, 11);   Character[playerid][CellBattery] = strval(value);
  963.                         cache_get_field_content(0, "Job", value, 11);   Character[playerid][Job] = strval(value);
  964.                         cache_get_field_content(0, "CarKey1", value, 11);   Character[playerid][CarKey1] = strval(value);
  965.                         cache_get_field_content(0, "CarKey2", value, 11);   Character[playerid][CarKey2] = strval(value);
  966.                         cache_get_field_content(0, "CarKey2", value, 11);   Character[playerid][CarKey3] = strval(value);
  967.                         cache_get_field_content(0, "Clothes1", value, 11);  Character[playerid][Clothes1] = strval(value);
  968.                         cache_get_field_content(0, "Clothes2", value, 11);  Character[playerid][Clothes2] = strval(value);
  969.                         cache_get_field_content(0, "Clothes3", value, 11);  Character[playerid][Clothes3] = strval(value);
  970.                         cache_get_field_content(0, "ClothesUsed", value, 11);   Character[playerid][ClothesUsed] = strval(value);
  971.                         cache_get_field_content(0, "CarLicense", value, 11);    Character[playerid][CarLicense] = strval(value);
  972.                         cache_get_field_content(0, "TruckLicense", value, 11);  Character[playerid][TruckLicense] = strval(value);
  973.                         cache_get_field_content(0, "HouseKey", value, 11);  Character[playerid][HouseKey] = strval(value);
  974.                         cache_get_field_content(0, "Business1Key", value, 11);  Character[playerid][Business1Key] = strval(value);
  975.                         cache_get_field_content(0, "Business2Key", value, 11);  Character[playerid][Business2Key] = strval(value);
  976.                         cache_get_field_content(0, "Faction", value, 11);   Character[playerid][Faction] = strval(value);
  977.                         cache_get_field_content(0, "FactionRank", value, 11);   Character[playerid][FactionRank] = strval(value);
  978.                         format(Character[playerid][cName], MAX_PLAYER_NAME, charactername);
  979.                        
  980.                         SetTimerEx("StartTimer", 1000, 0, "i", playerid);
  981.                         SpawnPlayer(playerid);
  982.                         SetPlayerVirtualWorld(playerid, Character[playerid][cWorld]);
  983.                         SetPlayerInterior(playerid, Character[playerid][cInterior]);
  984.                         SetPlayerCash(playerid, Character[playerid][cCash]);
  985.                         new str[128];
  986.                         format(str, sizeof(str), "You have successfully spawned as %s - (/logout to return to character selection).", RemoveUnderScore(Character[playerid][cName]));
  987.                         SendClientMessage(playerid, COLOR_WHITE, str);
  988.                         SetPlayerColor(playerid, COLOR_WHITE);// White = character spawned.
  989.                     }
  990.                     else
  991.                     {
  992.                         SendClientMessage(playerid, COLOR_RED, "ERROR");
  993.                         Kick(playerid);
  994.                     }
  995.                 }
  996.             }
  997.         }
  998.     }
  999.     return count;
  1000. }
  1001.  
  1002. public OnPlayerConnect(playerid)
  1003. {
  1004.     //new query[128];
  1005.     GetPlayerName(playerid, Player_Name[playerid], MAX_PLAYER_NAME);
  1006.     GetPlayerIp(playerid, Player_Ip[playerid], 16);
  1007.    
  1008.     //mysql_format(1, query, sizeof(query),"SELECT `mPassword`, `ID` FROM `MasterAccount` WHERE `mOriginalUsername` = '%e' LIMIT 1", Player_Name[playerid]);
  1009.     //mysql_tquery(1, query, "OnAccountCheck", "i", playerid);
  1010.  
  1011.     // -------------------------- [ RESETTING VARIABLES ] ----------------------------
  1012.     ResetPlayerCharacterVariables(playerid);
  1013.     ResetMasterAccountVariables(playerid);
  1014.  
  1015.     //-----------------------------[STARTUP CAMERA POS]-------------------------------
  1016.     SetPlayerColor(playerid, COLOR_DARKGREY);
  1017.     SetPlayerCameraPos(playerid, 2126.0251,1283.9984,63.0858);
  1018.     SetPlayerCameraLookAt(playerid,92178.8748,1285.5367,39.5399);
  1019.  
  1020.     if(AccountExists(playerid))
  1021.     {
  1022.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Master Account - Login","Account already registered, please enter your password to continue.","Login","Cancel");
  1023.     }
  1024.     else
  1025.     {
  1026.         ShowPlayerDialog(playerid,DIALOG_REGISTER_PASSWORD,DIALOG_STYLE_INPUT,"Master Account Registration - Step One","Password:\n( No more or less than 20 characters )","Continue","Cancel");
  1027.     }
  1028.     ClearScreen(playerid);
  1029.     SendClientMessage(playerid, COLOR_WHITE, "Welcome!");
  1030.     return 1;
  1031. }
  1032.  
  1033. forward StartTimer(playerid);
  1034. public StartTimer(playerid)
  1035. {
  1036.     new Text:JoinText;
  1037.     new joinmsg[256];
  1038.     if(MasterAccount[playerid][mLoggedIn] && Character[playerid][cAdminLevel] >= 1)
  1039.     {
  1040.         format(joinmsg, sizeof(joinmsg), "%s has joined the Server. {FFFFFF}IP: -To be done- ID: %d.", RemoveUnderScore(playerid), playerid);  /*{FFFFFF}IP: %s   GetIP(playerid), */
  1041.         SendToAdmins(COLOR_RED, joinmsg, 0);
  1042.         SendToAdmins(COLOR_RED, joinmsg, 1);
  1043.     }
  1044.     TextDrawHideForPlayer(playerid, JoinText);
  1045.     // if(Player[playerid][RegistrationStep] == 0)
  1046.     {
  1047.         if(Character[playerid][SpawnPoint] == 1) //North Caravan Park
  1048.         {
  1049.             TogglePlayerSpectating(playerid, false);
  1050.             if(Character[playerid][ClothesUsed] == 1)
  1051.             {
  1052.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes1], 765.9069,361.9311,20.8550,174.3097, 0, 0, 0, 0, 0, 0);
  1053.                 SpawnPlayer(playerid);
  1054.                
  1055.                 if(Character[playerid][Faction] == 1)
  1056.                 {
  1057.                     SetPlayerArmour(playerid, 100);
  1058.                 }
  1059.                 if(Character[playerid][Faction] == 2)
  1060.                 {
  1061.                     GivePlayerWeapon(playerid, 42, 99999);
  1062.                 }
  1063.                 SetPlayerArmedWeapon(playerid, 0);
  1064.             }
  1065.             else if(Character[playerid][ClothesUsed] == 2)
  1066.             {
  1067.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes2], 765.9069,361.9311,20.8550,174.3097, 0, 0, 0, 0, 0, 0);
  1068.                 SpawnPlayer(playerid);
  1069.                
  1070.                 if(Character[playerid][Faction] == 1)
  1071.                 {
  1072.                     SetPlayerArmour(playerid, 100);
  1073.                 }
  1074.                 if(Character[playerid][Faction] == 2)
  1075.                 {
  1076.                     GivePlayerWeapon(playerid, 42, 99999);
  1077.                 }
  1078.                 SetPlayerArmedWeapon(playerid, 0);
  1079.             }
  1080.             else if(Character[playerid][ClothesUsed] == 3)
  1081.             {
  1082.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes3], 765.9069,361.9311,20.8550,174.3097, 0, 0, 0, 0, 0, 0);
  1083.                 SpawnPlayer(playerid);
  1084.                
  1085.                 if(Character[playerid][Faction] == 1)
  1086.                 {
  1087.                     SetPlayerArmour(playerid, 100);
  1088.                 }
  1089.                 if(Character[playerid][Faction] == 2)
  1090.                 {
  1091.                     GivePlayerWeapon(playerid, 42, 99999);
  1092.                 }
  1093.                 if(Character[playerid][Faction] == 3)
  1094.                 {
  1095.                     GivePlayerWeapon(playerid, 43, 20);
  1096.                 }
  1097.                 SetPlayerArmedWeapon(playerid, 0);
  1098.             }
  1099.         }
  1100.         else if(Character[playerid][SpawnPoint] == 2) //Blueberry Caravan Park
  1101.         {
  1102.             TogglePlayerSpectating(playerid, false);
  1103.             if(Character[playerid][ClothesUsed] == 1)
  1104.             {
  1105.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes1], 252.1177,-310.5331,1.5836,52.7107, 0, 0, 0, 0, 0, 0);
  1106.                 SpawnPlayer(playerid);
  1107.                
  1108.                 if(Character[playerid][Faction] == 1)
  1109.                 {
  1110.                     SetPlayerArmour(playerid, 100);
  1111.                 }
  1112.                 if(Character[playerid][Faction] == 2)
  1113.                 {
  1114.                     GivePlayerWeapon(playerid, 42, 99999);
  1115.                 }
  1116.                 SetPlayerArmedWeapon(playerid, 0);
  1117.             }
  1118.             else if(Character[playerid][ClothesUsed] == 2)
  1119.             {
  1120.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes2], 252.1177,-310.5331,1.5836,52.7107, 0, 0, 0, 0, 0, 0);
  1121.                 SpawnPlayer(playerid);
  1122.                
  1123.                 if(Character[playerid][Faction] == 1)
  1124.                 {
  1125.                     SetPlayerArmour(playerid, 100);
  1126.                 }
  1127.                 if(Character[playerid][Faction] == 2)
  1128.                 {
  1129.                     GivePlayerWeapon(playerid, 42, 99999);
  1130.                 }
  1131.                 SetPlayerArmedWeapon(playerid, 0);
  1132.             }
  1133.             else if(Character[playerid][ClothesUsed] == 3)
  1134.             {
  1135.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes3], 252.1177,-310.5331,1.5836,52.7107, 0, 0, 0, 0, 0, 0);
  1136.                 SpawnPlayer(playerid);
  1137.                
  1138.                 if(Character[playerid][Faction] == 1)
  1139.                 {
  1140.                     SetPlayerArmour(playerid, 100);
  1141.                 }
  1142.                 if(Character[playerid][Faction] == 2)
  1143.                 {
  1144.                     GivePlayerWeapon(playerid, 42, 99999);
  1145.                 }
  1146.                 SetPlayerArmedWeapon(playerid, 0);
  1147.             }
  1148.             SetPlayerVirtualWorld(playerid, 0);
  1149.         }
  1150.         else if(Character[playerid][SpawnPoint] == 3) //Palomino Creek Caravan Park
  1151.         {
  1152.             TogglePlayerSpectating(playerid, false);
  1153.             if(Character[playerid][ClothesUsed] == 1)
  1154.             {
  1155.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes1], 2266.2488,27.3444,26.4328,4.8782, 0, 0, 0, 0, 0, 0);
  1156.                 SpawnPlayer(playerid);
  1157.                 SetPlayerVirtualWorld(playerid, 0);
  1158.                
  1159.                 if(Character[playerid][Faction] == 1)
  1160.                 {
  1161.                     SetPlayerArmour(playerid, 100);
  1162.                 }
  1163.                 if(Character[playerid][Faction] == 2)
  1164.                 {
  1165.                     GivePlayerWeapon(playerid, 42, 99999);
  1166.                 }
  1167.                 SetPlayerArmedWeapon(playerid, 0);
  1168.             }
  1169.             else if(Character[playerid][ClothesUsed] == 2)
  1170.             {
  1171.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes2], 2266.2488,27.3444,26.4328,4.8782, 0, 0, 0, 0, 0, 0);
  1172.                 SpawnPlayer(playerid);
  1173.                 SetPlayerVirtualWorld(playerid, 0);
  1174.                
  1175.                 if(Character[playerid][Faction] == 1)
  1176.                 {
  1177.                     SetPlayerArmour(playerid, 100);
  1178.                 }
  1179.                 if(Character[playerid][Faction] == 2)
  1180.                 {
  1181.                     GivePlayerWeapon(playerid, 42, 99999);
  1182.                 }
  1183.                 SetPlayerArmedWeapon(playerid, 0);
  1184.             }
  1185.             else if(Character[playerid][ClothesUsed] == 3)
  1186.             {
  1187.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes3], 2266.2488,27.3444,26.4328,4.8782, 0, 0, 0, 0, 0, 0);
  1188.                 SpawnPlayer(playerid);
  1189.                
  1190.                 SetPlayerVirtualWorld(playerid, 0);
  1191.                 if(Character[playerid][Faction] == 1)
  1192.                 {
  1193.                     SetPlayerArmour(playerid, 100);
  1194.                 }
  1195.                 if(Character[playerid][Faction] == 2)
  1196.                 {
  1197.                     GivePlayerWeapon(playerid, 42, 99999);
  1198.                 }
  1199.                 SetPlayerArmedWeapon(playerid, 0);
  1200.             }
  1201.         }
  1202.         else if(Character[playerid][SpawnPoint] == 4) //Montgomery Caravan Park
  1203.         {
  1204.             TogglePlayerSpectating(playerid, false);
  1205.             if(Character[playerid][ClothesUsed] == 1)
  1206.             {
  1207.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes1], 1284.0914,168.3455,20.4620,354.0366, 0, 0, 0, 0, 0, 0);
  1208.                 SetPlayerVirtualWorld(playerid, 0);
  1209.                 SpawnPlayer(playerid);
  1210.                
  1211.                 if(Character[playerid][Faction] == 1)
  1212.                 {
  1213.                     SetPlayerArmour(playerid, 100);
  1214.                 }
  1215.                 if(Character[playerid][Faction] == 2)
  1216.                 {
  1217.                     GivePlayerWeapon(playerid, 42, 99999);
  1218.                 }
  1219.                 SetPlayerArmedWeapon(playerid, 0);
  1220.             }
  1221.             else if(Character[playerid][ClothesUsed] == 2)
  1222.             {
  1223.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes2], 1284.0914,168.3455,20.4620,354.0366, 0, 0, 0, 0, 0, 0);
  1224.                 SetPlayerVirtualWorld(playerid, 0);
  1225.                 SpawnPlayer(playerid);
  1226.                
  1227.                 if(Character[playerid][Faction] == 1)
  1228.                 {
  1229.                     SetPlayerArmour(playerid, 100);
  1230.                 }
  1231.                 if(Character[playerid][Faction] == 2)
  1232.                 {
  1233.                     GivePlayerWeapon(playerid, 42, 99999);
  1234.                 }
  1235.                 SetPlayerArmedWeapon(playerid, 0);
  1236.             }
  1237.             else if(Character[playerid][ClothesUsed] == 3)
  1238.             {
  1239.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes3], 1284.0914,168.3455,20.4620,354.0366, 0, 0, 0, 0, 0, 0);
  1240.                 SetPlayerVirtualWorld(playerid, 0);
  1241.                 SpawnPlayer(playerid);
  1242.                
  1243.                 if(Character[playerid][Faction] == 1)
  1244.                 {
  1245.                     SetPlayerArmour(playerid, 100);
  1246.                 }
  1247.                 if(Character[playerid][Faction] == 2)
  1248.                 {
  1249.                     GivePlayerWeapon(playerid, 42, 99999);
  1250.                 }
  1251.                 SetPlayerArmedWeapon(playerid, 0);
  1252.             }
  1253.         }
  1254.         else if(Character[playerid][SpawnPoint] == 5) //Owned Home
  1255.         {
  1256.             TogglePlayerSpectating(playerid, false);
  1257.             if(Character[playerid][ClothesUsed] == 1)
  1258.             {
  1259.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes1], Houses[Character[playerid][HouseKey]][HouseExteriorX], Houses[Character[playerid][HouseKey]][HouseExteriorY], Houses[Character[playerid][HouseKey]][HouseExteriorZ], 90.0, 0, 0, 0, 0, 0, 0);
  1260.                 SetPlayerVirtualWorld(playerid, 0);
  1261.                 SpawnPlayer(playerid);
  1262.                
  1263.                 if(Character[playerid][Faction] == 1)
  1264.                 {
  1265.                     SetPlayerArmour(playerid, 100);
  1266.                 }
  1267.                 if(Character[playerid][Faction] == 2)
  1268.                 {
  1269.                     GivePlayerWeapon(playerid, 42, 99999);
  1270.                 }
  1271.                 SetPlayerArmedWeapon(playerid, 0);
  1272.             }
  1273.             else if(Character[playerid][ClothesUsed] == 2)
  1274.             {
  1275.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes2], Houses[Character[playerid][HouseKey]][HouseExteriorX], Houses[Character[playerid][HouseKey]][HouseExteriorY], Houses[Character[playerid][HouseKey]][HouseExteriorZ], 90.0, 0, 0, 0, 0, 0, 0);
  1276.                 SetPlayerVirtualWorld(playerid, 0);
  1277.                 SpawnPlayer(playerid);
  1278.                
  1279.                 if(Character[playerid][Faction] == 1)
  1280.                 {
  1281.                     SetPlayerArmour(playerid, 100);
  1282.                 }
  1283.                 if(Character[playerid][Faction] == 2)
  1284.                 {
  1285.                     GivePlayerWeapon(playerid, 42, 99999);
  1286.                 }
  1287.                 SetPlayerArmedWeapon(playerid, 0);
  1288.             }
  1289.             else if(Character[playerid][ClothesUsed] == 3)
  1290.             {
  1291.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes3], Houses[Character[playerid][HouseKey]][HouseExteriorX], Houses[Character[playerid][HouseKey]][HouseExteriorY], Houses[Character[playerid][HouseKey]][HouseExteriorZ], 90.0, 0, 0, 0, 0, 0, 0);
  1292.                 SetPlayerVirtualWorld(playerid, 0);
  1293.                 SpawnPlayer(playerid);
  1294.                
  1295.                 if(Character[playerid][Faction] == 1)
  1296.                 {
  1297.                     SetPlayerArmour(playerid, 100);
  1298.                 }
  1299.                 if(Character[playerid][Faction] == 2)
  1300.                 {
  1301.                     GivePlayerWeapon(playerid, 42, 99999);
  1302.                 }
  1303.                 SetPlayerArmedWeapon(playerid, 0);
  1304.             }
  1305.         }
  1306.         else if(Character[playerid][SpawnPoint] == 6) //Faction Spawn
  1307.         {
  1308.             TogglePlayerSpectating(playerid, false);
  1309.             if(Character[playerid][ClothesUsed] == 1)
  1310.             {
  1311.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes1], Factions[Character[playerid][Faction]][fSpawnX], Factions[Character[playerid][Faction]][fSpawnY], Factions[Character[playerid][Faction]][fSpawnZ], Factions[Character[playerid][Faction]][fSpawnA], 0, 0, 0, 0, 0, 0);
  1312.                 SetPlayerVirtualWorld(playerid, 0);
  1313.                 SpawnPlayer(playerid);
  1314.                
  1315.                 if(Character[playerid][Faction] == 1)
  1316.                 {
  1317.                     SetPlayerArmour(playerid, 100);
  1318.                 }
  1319.                 if(Character[playerid][Faction] == 2)
  1320.                 {
  1321.                     GivePlayerWeapon(playerid, 42, 99999);
  1322.                 }
  1323.                 SetPlayerArmedWeapon(playerid, 0);
  1324.             }
  1325.             else if(Character[playerid][ClothesUsed] == 2)
  1326.             {
  1327.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes2], Factions[Character[playerid][Faction]][fSpawnX], Factions[Character[playerid][Faction]][fSpawnY], Factions[Character[playerid][Faction]][fSpawnZ], Factions[Character[playerid][Faction]][fSpawnA], 0, 0, 0, 0, 0, 0);
  1328.                 SetPlayerVirtualWorld(playerid, 0);
  1329.                 SpawnPlayer(playerid);
  1330.                
  1331.                 if(Character[playerid][Faction] == 1)
  1332.                 {
  1333.                     SetPlayerArmour(playerid, 100);
  1334.                 }
  1335.                 if(Character[playerid][Faction] == 2)
  1336.                 {
  1337.                     GivePlayerWeapon(playerid, 42, 99999);
  1338.                 }
  1339.                 SetPlayerArmedWeapon(playerid, 0);
  1340.             }
  1341.             else if(Character[playerid][ClothesUsed] == 3)
  1342.             {
  1343.                 SetSpawnInfo(playerid, 0, Character[playerid][Clothes3], Factions[Character[playerid][Faction]][fSpawnX], Factions[Character[playerid][Faction]][fSpawnY], Factions[Character[playerid][Faction]][fSpawnZ], Factions[Character[playerid][Faction]][fSpawnA], 0, 0, 0, 0, 0, 0);
  1344.                 SetPlayerVirtualWorld(playerid, 0);
  1345.                 SpawnPlayer(playerid);
  1346.                
  1347.                 if(Character[playerid][Faction] == 1)
  1348.                 {
  1349.                     SetPlayerArmour(playerid, 100);
  1350.                 }
  1351.                 if(Character[playerid][Faction] == 2)
  1352.                 {
  1353.                     GivePlayerWeapon(playerid, 42, 99999);
  1354.                 }
  1355.                 SetPlayerArmedWeapon(playerid, 0);
  1356.             }
  1357.         }
  1358.     }
  1359.     return 1;
  1360. }
  1361.  
  1362. forward SendToAdmins(colour, string1[], duty);
  1363. public SendToAdmins(colour, string1[], duty)
  1364. {
  1365.     for(new i = 0; i < MAX_PLAYERS; i++)
  1366.     {
  1367.         if(IsPlayerConnected(i))
  1368.         {
  1369.             if(Character[i][cAdminLevel] >= 2)
  1370.             {
  1371.                 SendClientMessage(i, colour, string1);
  1372.             }
  1373.         }
  1374.     }
  1375.     return 1;
  1376. }
  1377. forward CloseMessage(playerid, colour, string[]);
  1378. public CloseMessage(playerid, colour, string[])
  1379. {
  1380.     new Float: PlayerX, Float: PlayerY, Float: PlayerZ;
  1381.     for(new i = 0; i < MAX_PLAYERS; i++)
  1382.     {
  1383.         if(IsPlayerConnected(i))
  1384.         {
  1385.             GetPlayerPos(playerid, PlayerX, PlayerY, PlayerZ);
  1386.             if(IsPlayerInRangeOfPoint(i, 12, PlayerX, PlayerY, PlayerZ))
  1387.             {
  1388.                 if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i) && GetPlayerInterior(playerid) == GetPlayerInterior(i))
  1389.                 {
  1390.                     SendClientMessage(i, colour, string);
  1391.                 }
  1392.             }
  1393.         }
  1394.     }
  1395.     return 1;
  1396. }
  1397.  
  1398. forward CloseMessageEx(playerid, color, string[], Float: range);
  1399. public CloseMessageEx(playerid, color, string[], Float: range)
  1400. {
  1401.     new Float: PlayerX, Float: PlayerY, Float: PlayerZ;
  1402.     for(new i = 0; i < MAX_PLAYERS; i++)
  1403.     {
  1404.         if(IsPlayerConnected(i))
  1405.         {
  1406.             GetPlayerPos(playerid, PlayerX, PlayerY, PlayerZ);
  1407.             if(IsPlayerInRangeOfPoint(i, range, PlayerX, PlayerY, PlayerZ))
  1408.             {
  1409.                 if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i))
  1410.                 {
  1411.                     SendClientMessage(i, color, string);
  1412.                 }
  1413.             }
  1414.         }
  1415.     }
  1416. }
  1417.  
  1418. public OnPlayerDisconnect(playerid, reason)
  1419. {
  1420.     SaveCharacter(playerid);
  1421.     DespawnCharacter(playerid);
  1422.    
  1423.     return 1;
  1424. }
  1425.  
  1426. public OnPlayerSpawn(playerid)
  1427. {
  1428.     return 1;
  1429. }
  1430.  
  1431. public OnPlayerDeath(playerid, killerid, reason)
  1432. {
  1433.    
  1434.     return 1;
  1435. }
  1436.  
  1437. public OnVehicleSpawn(vehicleid)
  1438. {
  1439.     return 1;
  1440. }
  1441.  
  1442. public OnVehicleDeath(vehicleid, killerid)
  1443. {
  1444.     return 1;
  1445. }
  1446.  
  1447. public OnPlayerText(playerid, text[])
  1448. {
  1449.     new text1[256];
  1450.     if(strcmp("None", Character[playerid][Accent]))
  1451.     {
  1452.         format(text1, 256, "%s says: %s", MaskOnOff(playerid), text1);
  1453.         CloseMessage(playerid, COLOR_WHITE, text1);
  1454.     }
  1455.     else
  1456.     {
  1457.         format(text1, 256, "%s says: [%s accent] %s", MaskOnOff(playerid), Character[playerid][Accent], text1);
  1458.         CloseMessage(playerid, COLOR_WHITE, text1);
  1459.         SetPlayerChatBubble(playerid, text1, COLOR_WHITE, 10.0, 10000);
  1460.     }
  1461.     return 1;
  1462. }
  1463.  
  1464. //Stocks
  1465.  
  1466. stock split(const strsrc[], strdest[][], delimiter)
  1467. {
  1468.     new i, li;
  1469.     new aNum;
  1470.     new len;
  1471.     while(i <= strlen(strsrc)){
  1472.         if(strsrc[i]==delimiter || i==strlen(strsrc)){
  1473.             len = strmid(strdest[aNum], strsrc, li, i, 128);
  1474.             strdest[aNum][len] = 0;
  1475.             li = i+1;
  1476.             aNum++;
  1477.         }
  1478.         i++;
  1479.     }
  1480.     return 1;
  1481. }
  1482.  
  1483. RPName(name[],ret_first[],ret_last[])
  1484. {
  1485.     new len = strlen(name),
  1486.         point = -1,
  1487.         bool:done = false;
  1488.     for(new i = 0; i < len; i++)
  1489.     {
  1490.         if(name[i] == '_')
  1491.         {
  1492.             if(point != -1) return 0;
  1493.             else {
  1494.                 if(i == 0) return 0;
  1495.                 point = i + 1;
  1496.             }
  1497.         } else if(point == -1) ret_first[i] = name[i];
  1498.         else {
  1499.             ret_last[i - point] = name[i];
  1500.             done = true;
  1501.         }
  1502.     }
  1503.     if(!done) return 0;
  1504.     return 1;
  1505. }
  1506.  
  1507. stock GetMenuDialogCharacterOrder(playerid, characterslotid)
  1508. {
  1509.     new arrCoords[11][MAX_PLAYER_NAME], string[128];
  1510.     if(MasterAccount[playerid][mLoggedIn])
  1511.     {
  1512.         if(characterslotid >= 1 && characterslotid <= MAX_CHARACTER_SLOTS)
  1513.         {
  1514.             format(string,sizeof(string),"%s", MasterAccount[playerid][mCharacterString]);
  1515.             split(string, arrCoords, '\n');
  1516.             //printf("%s", arrCoords[characterslotid]);
  1517.             return arrCoords[characterslotid];
  1518.         }
  1519.     }
  1520.     return arrCoords[0];
  1521. }
  1522.  
  1523. stock InsertPlayerUnderscoreString(string[])
  1524. {
  1525.     new str[24];
  1526.     strmid(str,string,0,strlen(string),24);
  1527.     for(new i = 0; i < MAX_PLAYER_NAME; i++)
  1528.     {
  1529.         if (str[i] == ' ') str[i] = '_';
  1530.     }
  1531.     return str;
  1532. }
  1533.  
  1534. stock PlayerFacePlayer(playerid, targetid)
  1535. {
  1536.     new
  1537.         Float:pX,
  1538.         Float:pY,
  1539.         Float:pZ,
  1540.         Float:X,
  1541.         Float:Y,
  1542.         Float:Z,
  1543.         Float:ang;
  1544.        
  1545.     if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
  1546.     GetPlayerPos(targetid, X, Y, Z);
  1547.     GetPlayerPos(playerid, pX, pY, pZ);
  1548.     if( Y > pY ) ang = (-acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  1549.     else if( Y < pY && X < pX ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 450.0);
  1550.     else if( Y < pY ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
  1551.     if(X > pX) ang = (floatabs(floatabs(ang) + 180.0));
  1552.     else ang = (floatabs(ang) - 180.0);
  1553.     SetPlayerFacingAngle(playerid, ang);
  1554.     return 0;
  1555. }
  1556.  
  1557. stock GetDistanceBetweenPlayers(playerid,playerid2)
  1558. {
  1559.     new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
  1560.     new Float:tmpdis;
  1561.     GetPlayerPos(playerid,x1,y1,z1);
  1562.     GetPlayerPos(playerid2,x2,y2,z2);
  1563.     tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  1564.     return floatround(tmpdis);
  1565. }
  1566.  
  1567. stock MaskOnOff(playerid)
  1568. {
  1569.     new string2[25];
  1570.     if(MaskOn[playerid] == 0)format(string2, sizeof(string2), "%s", RemoveUnderScore(playerid));
  1571.     else if(MaskOn[playerid] == 1)format(string2, sizeof(string2), "Stranger_%d", MaskNumber[playerid]);
  1572.     return string2;
  1573. }
  1574.  
  1575. stock ClearScreen(playerid)
  1576. {
  1577.     for(new i = 0; i < 50; i++)
  1578.     {
  1579.         SendClientMessage(playerid, COLOR_WHITE, " ");
  1580.     }
  1581.     return 0;
  1582. }
  1583.  
  1584.  
  1585. stock RemoveUnderScore(playerid)
  1586. {
  1587.     new name[MAX_PLAYER_NAME];
  1588.     GetPlayerName(playerid,name,sizeof(name));
  1589.     for(new i = 0; i < MAX_PLAYER_NAME; i++)
  1590.     {
  1591.         if(name[i] == '_') name[i] = ' ';
  1592.     }
  1593.     return name;
  1594. }
  1595.  
  1596. stock GetPVarStringEx(playerid, var[])
  1597. {
  1598.     new pmsg[128] = "NULL";
  1599.     if(IsPlayerConnected(playerid))
  1600.         {
  1601.         GetPVarString(playerid, var, pmsg, 128);
  1602.         }
  1603.     return pmsg;
  1604. }
  1605.  
  1606. stock GetPlayerIPEx(playerid)
  1607. {
  1608.     new plrIP[16] = "NULL";
  1609.     if(IsPlayerConnected(playerid))
  1610.             {
  1611.                     GetPlayerIp(playerid, plrIP, sizeof(plrIP));
  1612.             }
  1613.     return plrIP;
  1614. }
  1615.  
  1616. stock PlayerName(playerid) {
  1617.   new name[MAX_PLAYER_NAME];
  1618.   GetPlayerName(playerid, name, sizeof(name));
  1619.   return name;
  1620. }
  1621.  
  1622. stock GetVehicleName(vehicleid)
  1623. {
  1624.     new vn[50];
  1625.     format(vn,sizeof(vn),"%s",vNames[GetVehicleModel(vehicleid)-400]);
  1626.     return vn;
  1627. }
  1628.  
  1629.  
  1630. // --------------------------------------[ ANTI CHEAT ] -------------------------------------
  1631. forward AntiCheatTimer();
  1632. public AntiCheatTimer()
  1633. {
  1634.     for(new i=0;i<MAX_PLAYERS;i++)
  1635.     {
  1636.         if(SpawnedAsCharacter(i))
  1637.         {
  1638.             if(GetPlayerCash(i) != GetPlayerMoney(i))
  1639.             {
  1640.                 new difference = GetPlayerCash(i) - GetPlayerMoney(i);
  1641.                 printf("[ANTICHEAT:] %s possibly moneyhacking ($%d)", PlayerName(i), difference);
  1642.                 ResetMoneyBar(i);
  1643.                 UpdateMoneyBar(i, Character[i][cCash]);
  1644.             }
  1645.         }
  1646.     }
  1647.     return true;
  1648. }
  1649. stock GivePlayerCash(playerid, money)
  1650. {
  1651.     Character[playerid][cCash] += money;
  1652.     ResetMoneyBar(playerid);
  1653.     UpdateMoneyBar(playerid, Character[playerid][cCash]);
  1654.     return 1;
  1655. }
  1656. stock SetPlayerCash(playerid, money)
  1657. {
  1658.     Character[playerid][cCash] = money;
  1659.     ResetMoneyBar(playerid);
  1660.     UpdateMoneyBar(playerid, Character[playerid][cCash]);
  1661.     return true;
  1662. }
  1663. stock ResetPlayerCash(playerid)
  1664. {
  1665.     Character[playerid][cCash] = 0;
  1666.     ResetMoneyBar(playerid);
  1667.     UpdateMoneyBar(playerid, Character[playerid][cCash]);
  1668.     return true;
  1669. }
  1670. stock GetPlayerCash(playerid)
  1671. {
  1672.     return Character[playerid][cCash];
  1673. }
  1674. // ------------------------------------------------------------------------------------------
  1675.  
  1676.  
  1677.  
  1678.  
  1679. //Commands Start
  1680. //Admin Commands
  1681.  
  1682.  
  1683.  
  1684. CMD:gmx(playerid, params[])
  1685. { //1643
  1686.     if(MasterAccount[playerid][mSuperAdmin] || Character[playerid][cAdminLevel] >= 6)
  1687.     {
  1688.         SendRconCommand("gmx");
  1689.     }
  1690.     else return SendClientMessage(playerid, COLOR_DARKGREY, AdminOnly);
  1691.     return 1;
  1692. }
  1693.  
  1694. CMD:a(playerid, params[])
  1695. {
  1696.     if(MasterAccount[playerid][mSuperAdmin] || Character[playerid][cAdminLevel] >=1)
  1697.     {
  1698.         new message[128], string[256];
  1699.         if(!strlen(params)) return SendClientMessage(playerid, COLOR_DARKGREY, "Usage: /a [message]");
  1700.         {
  1701.             format(string, sizeof(string), "Admin %s: %s", RemoveUnderScore(playerid), message);
  1702.             SendToAdmins(COLOR_RED, string, 0);
  1703.             SendToAdmins(COLOR_RED, string, 1);
  1704.         }
  1705.     }
  1706.     else return SendClientMessage(playerid, COLOR_DARKGREY, AdminOnly);
  1707.     return 1;
  1708. }
  1709.  
  1710.  
  1711. CMD:asay(playerid,params[])
  1712. {
  1713.     if(Character[playerid][cAdminLevel] >= 2) return SendClientMessage(playerid, COLOR_DARKGREY, AdminOnly);
  1714.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_DARKGREY, "USAGE: /asay [text]");
  1715.     if(strlen(params) > 100) return SendClientMessage(playerid, COLOR_DARKGREY, "Your message must not exceed 100 characters.");
  1716.     new str[128];
  1717.     format(str, sizeof(str), "%s", params);
  1718.     SendClientMessageToAll(COLOR_PURPLE, str);
  1719.     return 1;
  1720. }
  1721.  
  1722. CMD:akill(playerid, params[])
  1723. {
  1724.     if(MasterAccount[playerid][mSuperAdmin] || Character[playerid][cAdminLevel] >=2)
  1725.     {
  1726.         new targetid;
  1727.         if(!strlen(params)) return SendClientMessage(playerid, COLOR_DARKGREY, "Usage: /akill [playerid]");
  1728.         if(!IsPlayerConnected(targetid))return SendClientMessage(playerid, -1, "This player is not connected!");
  1729.         SetPlayerHealth(targetid, -1);
  1730.     }
  1731.     else
  1732.     SendClientMessage(playerid, COLOR_DARKGREY, AdminOnly);
  1733.     return 1;
  1734. }
  1735.  
  1736. CMD:sethealth(playerid, params[])
  1737. {
  1738.     if(MasterAccount[playerid][mSuperAdmin] || Character[playerid][cAdminLevel] >=2)
  1739.     {
  1740.         new user, health;
  1741.         if(!sscanf(params, "ui", user, health))
  1742.         {
  1743.             if(user != INVALID_PLAYER_ID)
  1744.             {
  1745.                 SetPlayerHealth(user, health);
  1746.             }
  1747.             else return SendClientMessage(playerid, COLOR_DARKGREY, "Player is not logged in or is off-line.");
  1748.         }
  1749.         else return SendClientMessage(playerid, COLOR_WHITE, "Usage: /Sethealth [ID] [Amount]");
  1750.     }
  1751.     return 1;
  1752. }
  1753. CMD:sethp(playerid, params[])
  1754. {
  1755.     return cmd_sethealth(playerid, params);
  1756. }
  1757.  
  1758. CMD:setweather(playerid, params[])
  1759. {
  1760.     if(MasterAccount[playerid][mSuperAdmin] || Character[playerid][cAdminLevel] >=4)
  1761.     {
  1762.         if(isnull(params)) return SendClientMessage(playerid, COLOR_DARKGREY, "/Setweather [ID]");
  1763.         SetWeather(strval(params));
  1764.         return true;
  1765.     }
  1766.     else return SendClientMessage(playerid, COLOR_DARKGREY, AdminOnly);
  1767. }
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774. CMD:flip(playerid, params[])
  1775. {
  1776.     #pragma unused params
  1777.     playerid = GetPlayerVehicleID(playerid);
  1778.     if(playerid != INVALID_VEHICLE_ID) {
  1779.         new
  1780.             Float: A;
  1781.         GetVehicleZAngle(playerid, A);
  1782.         SetVehicleZAngle(playerid, A);
  1783.     }    
  1784.     return 1;
  1785. }
  1786.  
  1787. CMD:veh(playerid, params[])
  1788. {
  1789.         if(IsPlayerConnected(playerid))
  1790.         {
  1791.                 if(MasterAccount[playerid][mSuperAdmin] || Character[playerid][cAdminLevel] >=3)
  1792.                 {
  1793.                     new car, col1, col2;
  1794.                     if(sscanf(params, "iii", car, col1, col2)) return SendClientMessage(playerid, COLOR_DARKGREY, "USAGE: /veh [carid] [color1] [color2]");
  1795.                     if(car < 400 || car > 611) return SendClientMessage(playerid, COLOR_DARKGREY, "Vehicle ID can't be below 400 or above 611.");
  1796.                     if(col1 < 0 || col1 > 256) return SendClientMessage(playerid, COLOR_DARKGREY, "Colour ID can't be below 0 or above 256.");
  1797.                     if(col2 < 0 || col2 > 256) return SendClientMessage(playerid, COLOR_DARKGREY, "Colour ID can't be below 0 or above 256.");
  1798.                     new Float:X,Float:Y,Float:Z;
  1799.                     GetPlayerPos(playerid, X,Y,Z);
  1800.                     new carid = CreateVehicle(car, X,Y,Z, 0.0, col1, col2, 60000);
  1801.                     PutPlayerInVehicle(playerid, carid, 0);
  1802.                 }
  1803.                 else return SendClientMessage(playerid, COLOR_DARKGREY, AdminOnly);
  1804.         }
  1805.         return 1;
  1806. }
  1807. //Player Commands
  1808.  
  1809. CMD:kill(playerid, params[])
  1810. {
  1811.     SetPlayerHealth(playerid, -1);
  1812. }
  1813.  
  1814. CMD:mask(playerid, params[])
  1815. {
  1816.     if(Character[playerid][Level] >= 5)
  1817.     {
  1818.         if(Character[playerid][cMask] == 1)
  1819.         {
  1820.             if(MaskOn[playerid] == 0)
  1821.             {
  1822.                 new string[256];
  1823.                 MaskOn[playerid] = 1;
  1824.                 new rand = 1000 + random(8999);
  1825.                 MaskNumber[playerid] = rand;
  1826.                 format(string, sizeof(string), "* %s takes out a mask and places it over their head. *", MaskOnOff(playerid));
  1827.                 format(string, sizeof(string), "Stranger_%d", MaskNumber[playerid]);
  1828.                 Update3DTextLabelText(masklabel[playerid], GREY, string);
  1829.                 Attach3DTextLabelToPlayer(masklabel[playerid], playerid, 0.0, 0.0, 0.7);
  1830.                 for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i, playerid, false);
  1831.             }
  1832.             else return SendClientMessage(playerid, COLOR_WHITE, "You already have your mask on.");
  1833.         }
  1834.         else return SendClientMessage(playerid, COLOR_WHITE, "You don't have a Mask.");
  1835.     }
  1836.     else return SendClientMessage(playerid, COLOR_WHITE, "You must be level 5 and above to use a mask.");
  1837.     return 1;
  1838. }
  1839.  
  1840. CMD:unmask(playerid, params[])
  1841. {
  1842.     if(Character[playerid][cMask] == 1)
  1843.     {
  1844.         if(MaskOn[playerid] == 1)
  1845.         {
  1846.             new string[256];
  1847.             MaskOn[playerid] = 0;
  1848.             format(string, sizeof(string), "* %s takes off their mask. *", MaskOnOff(playerid));
  1849.             CloseMessage(playerid, COLOR_PURPLE, string);
  1850.             MaskNumber[playerid] = -1;
  1851.             Update3DTextLabelText(masklabel[playerid], GREY, string);
  1852.             for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i, playerid, true);
  1853.         }
  1854.         else return SendClientMessage(playerid, COLOR_WHITE, "You don't have your mask on.");
  1855.     }
  1856.     else return SendClientMessage(playerid, COLOR_WHITE, "You don't have a Mask.");
  1857.     return 1;
  1858. }
  1859.  
  1860. CMD:pay(playerid, params[])
  1861. {
  1862.     new id, amount, string[256];
  1863.     if(sscanf(params, "ui", id, amount)) return SendClientMessage(playerid, COLOR_DARKGREY, "Usage: /pay [playerid/name] [amount]");
  1864.     {
  1865.         if(GetDistanceBetweenPlayers(playerid, id) < 3)
  1866.         {
  1867.             if(Character[playerid][cCash] >= amount)
  1868.             {
  1869.                 PlayerFacePlayer(id, playerid);
  1870.                 PlayerFacePlayer(playerid, id);
  1871.                 format(string, sizeof(string), "* %s hands over some money to %s. *", MaskOnOff(playerid), MaskOnOff(id));
  1872.                 CloseMessage(playerid, COLOR_PURPLE, string);
  1873.                
  1874.                 format(string, sizeof(string), "You have paid %s $%d.", MaskOnOff(id), amount);
  1875.                 SendClientMessage(playerid, COLOR_WHITE, string);
  1876.                 format(string, sizeof(string), "%s has paid you $%d.", MaskOnOff(playerid), amount);
  1877.                 ApplyAnimation(playerid, "INT_SHOP", "shop_pay", 3.0, 0, 0, 0, 0, 0);
  1878.                 SendClientMessage(id, COLOR_WHITE, string);
  1879.                 Character[playerid][cCash] -= amount;
  1880.                 Character[id][cCash] += amount;
  1881.             }
  1882.             else return SendClientMessage(playerid, COLOR_DARKGREY, "You don't have that amount of money.");
  1883.         }
  1884.         else return SendClientMessage(playerid, COLOR_DARKGREY, "You must be closer to the player to pay them.");
  1885.     }
  1886.     return 1;
  1887. }
  1888.  
  1889. // Chat commands
  1890. CMD:me(playerid, params[])
  1891. {
  1892.     new action[128], string[152];
  1893.     if(sscanf(params, "s[128]", action)) return SendClientMessage(playerid, COLOR_DARKGREY, "Usage: /me [action]");
  1894.     {
  1895.         format(string, sizeof(string), "%s %s", MaskOnOff(playerid), action);
  1896.         CloseMessage(playerid, COLOR_PURPLE, string);
  1897.     }
  1898.     return 1;
  1899. }
  1900.  
  1901. CMD:do(playerid, params[])
  1902. {
  1903.     new action[128], string[157];
  1904.     if(sscanf(params, "s[128]", action)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /do [action]");
  1905.     {
  1906.         format(string, sizeof(string), "%s (( %s ))", action, MaskOnOff(playerid));
  1907.         CloseMessage(playerid, COLOR_PURPLE, string);
  1908.     }
  1909.     return 1;
  1910. }
  1911.  
  1912. CMD:b(playerid, params[])
  1913. {
  1914.     new message[128], string[152];
  1915.     if(sscanf(params, "s[128]", message)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /b [message]");
  1916.     {
  1917.         format(string, sizeof(string), "(( [OOC] %s says: %s ))", RemoveUnderScore(playerid), message);
  1918.         CloseMessage(playerid, COLOR_BLUE, string);
  1919.     }
  1920.     return 1;
  1921. }
  1922.  
  1923. CMD:w(playerid, params[])
  1924. {
  1925.     return cmd_whisper(playerid, params);
  1926. }
  1927.  
  1928. CMD:whisper(playerid, params[])
  1929. {
  1930.     new id, message[128], string[186];
  1931.     if(sscanf(params, "us[128]", id, message)) return SendClientMessage(playerid, COLOR_DARKGREY, "Usage: /w(hisper) [playerid/name] [message]");
  1932.     {
  1933.         if(GetDistanceBetweenPlayers(playerid, id) <= 5.0)
  1934.         {
  1935.             if(id != INVALID_PLAYER_ID)
  1936.             {
  1937.                 format(string, sizeof(string), "[Whisper from %s(%d)] %s", MaskOnOff(playerid), playerid, message);
  1938.                 SendClientMessage(id, WHISPER, string);
  1939.                 format(string, sizeof(string), "[Whisper to %s(%d)] %s", MaskOnOff(id), id, message);
  1940.                 SendClientMessage(playerid, WHISPER, string);
  1941.                 format(string, sizeof(string), "* %s whispers something to %s *", MaskOnOff(playerid), MaskOnOff(id));
  1942.                 CloseMessage(playerid, COLOR_PURPLE, string);
  1943.             }
  1944.             else return SendClientMessage(playerid, COLOR_WHITE, "That player isn't connected.");
  1945.         }
  1946.         else return SendClientMessage(playerid, COLOR_WHITE, "You must be close to the player to whisper to them.");
  1947.     }
  1948.     return 1;
  1949. }
  1950.  
  1951. CMD:s(playerid, params[])
  1952. {
  1953.     return cmd_shout(playerid, params);
  1954. }
  1955.  
  1956. CMD:shout(playerid, params[])
  1957. {
  1958.     new message[128], string[182];
  1959.     if(sscanf(params, "s[128]", message)) return SendClientMessage(playerid, COLOR_DARKGREY, "Usage: /s(hout)");
  1960.     {
  1961.         if(strcmp("None", Character[playerid][Accent]))
  1962.         {
  1963.             format(string, sizeof(string), "%s shouts: %s!", MaskOnOff(playerid), message);
  1964.         }
  1965.         else
  1966.         {
  1967.             format(string, sizeof(string), "%s shouts: [%s accent] %s!", MaskOnOff(playerid), Character[playerid][Accent], message);
  1968.         }
  1969.         CloseMessageEx(playerid, SHOUT, string, 20.0);
  1970.         SetPlayerChatBubble(playerid, string, SHOUT, 20.0, 10000);
  1971.     }
  1972.     return 1;
  1973. }
  1974.  
  1975. public OnPlayerCommandText(playerid, cmdtext[])
  1976. {
  1977.     //if(TutorialStep[playerid] >= 1) return SendClientMessage(playerid, GREY, "You can't perform commands while you're in the tutorial.");
  1978.     //if(ChangingSkin[playerid] == 1) return SendClientMessage(playerid, GREY, "You can't perform commands while you're changing clothes.");
  1979.     if(Logged[playerid] == 0) return SendClientMessage(playerid, GREY, "You need to login first!");
  1980.     return 0;
  1981. }
  1982.  
  1983.  
  1984.  
  1985. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  1986. {
  1987.     return 1;
  1988. }
  1989.  
  1990. public OnPlayerExitVehicle(playerid, vehicleid)
  1991. {
  1992.     return 1;
  1993. }
  1994.  
  1995. public OnPlayerStateChange(playerid, newstate, oldstate)
  1996. {
  1997.     return 1;
  1998. }
  1999.  
  2000. public OnPlayerEnterCheckpoint(playerid)
  2001. {
  2002.     return 1;
  2003. }
  2004.  
  2005. public OnPlayerLeaveCheckpoint(playerid)
  2006. {
  2007.     return 1;
  2008. }
  2009.  
  2010. public OnPlayerEnterRaceCheckpoint(playerid)
  2011. {
  2012.     return 1;
  2013. }
  2014.  
  2015. public OnPlayerLeaveRaceCheckpoint(playerid)
  2016. {
  2017.     return 1;
  2018. }
  2019.  
  2020. public OnRconCommand(cmd[])
  2021. {
  2022.     return 1;
  2023. }
  2024.  
  2025. public OnPlayerRequestSpawn(playerid)
  2026. {
  2027.     return 1;
  2028. }
  2029.  
  2030. public OnObjectMoved(objectid)
  2031. {
  2032.     return 1;
  2033. }
  2034.  
  2035. public OnPlayerObjectMoved(playerid, objectid)
  2036. {
  2037.     return 1;
  2038. }
  2039.  
  2040. public OnPlayerPickUpPickup(playerid, pickupid)
  2041. {
  2042.     return 1;
  2043. }
  2044.  
  2045. public OnVehicleMod(playerid, vehicleid, componentid)
  2046. {
  2047.     return 1;
  2048. }
  2049.  
  2050. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  2051. {
  2052.     return 1;
  2053. }
  2054.  
  2055. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  2056. {
  2057.     return 1;
  2058. }
  2059.  
  2060. public OnPlayerSelectedMenuRow(playerid, row)
  2061. {
  2062.     return 1;
  2063. }
  2064.  
  2065. public OnPlayerExitedMenu(playerid)
  2066. {
  2067.     return 1;
  2068. }
  2069.  
  2070. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  2071. {
  2072.     return 1;
  2073. }
  2074.  
  2075. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  2076. {
  2077.     return 1;
  2078. }
  2079.  
  2080. public OnRconLoginAttempt(ip[], password[], success)
  2081. {
  2082.     return 1;
  2083. }
  2084.  
  2085. public OnPlayerUpdate(playerid)
  2086. {
  2087.     return 1;
  2088. }
  2089.  
  2090. public OnPlayerStreamIn(playerid, forplayerid)
  2091. {
  2092.     return 1;
  2093. }
  2094.  
  2095. public OnPlayerStreamOut(playerid, forplayerid)
  2096. {
  2097.     return 1;
  2098. }
  2099.  
  2100. public OnVehicleStreamIn(vehicleid, forplayerid)
  2101. {
  2102.     return 1;
  2103. }
  2104.  
  2105. public OnVehicleStreamOut(vehicleid, forplayerid)
  2106. {
  2107.     return 1;
  2108. }
  2109.  
  2110. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  2111. {
  2112.     switch(dialogid)
  2113.     {
  2114.         case DIALOG_REGISTER_PASSWORD:
  2115.         {
  2116.             if(response)
  2117.             {
  2118.                 if(strlen(inputtext) >= 1 && strlen(inputtext) <= 20)
  2119.                 {
  2120.                     SetPVarString(playerid,"TEMP_PASSWORD",inputtext);
  2121.                     ShowPlayerDialog(playerid,DIALOG_REGISTER_EMAIL,DIALOG_STYLE_INPUT,"Master Account Registration - Step Two","Email Address:\n( No more or less than 25 characters )","Finish","Cancel");
  2122.                 }
  2123.                 else
  2124.                 {
  2125.                     ShowPlayerDialog(playerid,DIALOG_REGISTER_PASSWORD,DIALOG_STYLE_PASSWORD,"Master Account Registration - Step One","Password:\n( No more or less than 20 characters )","Continue","Cancel");
  2126.                 }
  2127.             }
  2128.             else
  2129.             {
  2130.                 Kick(playerid);
  2131.             }
  2132.         }
  2133.         case DIALOG_REGISTER_EMAIL:
  2134.         {
  2135.             if(response)
  2136.             {
  2137.                 if(strlen(inputtext) >= 1 && strlen(inputtext) <= 30)
  2138.                 {
  2139.                     SetPVarString(playerid,"TEMP_EMAIL",inputtext);
  2140.                     if(MasterAccountRegister(playerid))
  2141.                     {
  2142.                         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Master Account - Login","Account already registered, please enter your password to continue.","Login","Cancel");
  2143.                     }
  2144.                     else
  2145.                     {
  2146.                         SendClientMessage(playerid, COLOR_RED, "ERROR.");
  2147.                         Kick(playerid);
  2148.                     }
  2149.                 }
  2150.                 else
  2151.                 {
  2152.                     ShowPlayerDialog(playerid,DIALOG_REGISTER_EMAIL,DIALOG_STYLE_INPUT,"Master Account Registration - Step Two","Email Address:\n( No more or less than 25 characters )","Finish","Cancel");
  2153.                 }
  2154.             }
  2155.             else
  2156.             {
  2157.                 Kick(playerid);
  2158.             }
  2159.         }
  2160.         case DIALOG_LOGIN:
  2161.         {
  2162.             if(response)
  2163.             {
  2164.                 MasterAccountLogin(playerid, inputtext);
  2165.             }
  2166.         }
  2167.         case DIALOG_MAIN_MENU:
  2168.         {
  2169.             if(response)
  2170.             {
  2171.                 new count = PlayerCharacterCount(playerid);
  2172.                 if(count == 0)
  2173.                 {
  2174.                     SendClientMessage(playerid, COLOR_WHITE, "[I:] No characters available to spawn with.");
  2175.                     ShowMenuDialog(playerid);
  2176.                 }
  2177.                 else
  2178.                 {
  2179.                     LoadCharacter(playerid, InsertPlayerUnderscoreString(GetMenuDialogCharacterOrder(playerid, listitem+1)));
  2180.                 }
  2181.             }
  2182.             else
  2183.             {
  2184.                 ShowPlayerDialog(playerid, DIALOG_MAIN_MENU_OPTIONS, DIALOG_STYLE_LIST, "Main Menu - Options", "Create New Character\nDelete Character\nChange Password\nDisconnect", "Continue", "Go Back");
  2185.             }
  2186.         }
  2187.         case DIALOG_MAIN_MENU_OPTIONS:
  2188.         {
  2189.             if(response)
  2190.             {
  2191.                 switch(listitem)
  2192.                 {
  2193.                     case 0: // Create New Character
  2194.                     {
  2195.                         if(PlayerCharacterCount(playerid) < MAX_CHARACTER_SLOTS)
  2196.                         {
  2197.                             ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME,DIALOG_STYLE_INPUT,"Master Account - New Character","What do you want your character to be called?\n(Firstname Lastname format).","Continue","Go Back");
  2198.                         }
  2199.                         else
  2200.                         {
  2201.                             ShowMenuDialog(playerid);
  2202.                             SendClientMessage(playerid, COLOR_RED, "[I:] You have exceeded your character limit, and cannot create anymore.");
  2203.                         }
  2204.                     }
  2205.                     case 1: // Delete Character
  2206.                     {
  2207.                         ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CHARACTER_DELETE,DIALOG_STYLE_INPUT,"Master Account - Delete Character","What is the name of the character you wish to delete?\nYou will not be able to recover it after it has been deleted!\n(Firstname Lastname format)","Delete","Go Back");
  2208.                     }
  2209.                     case 2: // Change Password
  2210.                     {
  2211.                         ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CHANGE_PASSWORD,DIALOG_STYLE_INPUT,"Master Account - Change Password","Type your new desired password:","Change","Go Back");
  2212.                     }
  2213.                     case 3: // Disconnect
  2214.                     {
  2215.                         SendClientMessage(playerid, COLOR_WHITE, "[I:] You have safely disconnected.");
  2216.                         Kick(playerid);
  2217.                     }
  2218.                 }
  2219.             }
  2220.             else
  2221.             {
  2222.                 ShowMenuDialog(playerid);
  2223.             }
  2224.         }
  2225.         case DIALOG_MAIN_MENU_CHARACTER_DELETE:
  2226.         {
  2227.             if(response)
  2228.             {
  2229.                 if(strlen(inputtext) >= 1)
  2230.                 {
  2231.                     if(CharacterExists(inputtext))
  2232.                     {
  2233.                         new escapedstring[50];
  2234.                         mysql_real_escape_string(InsertPlayerUnderscoreString(inputtext), escapedstring);
  2235.                         if(PlayerOwnsCharacter_Name(playerid, escapedstring))
  2236.                         {
  2237.                             new query[128];
  2238.                             format(query, sizeof(query), "DELETE FROM `Character` WHERE `cName` = '%s'", InsertPlayerUnderscoreString(inputtext)); //(InsertPlayerUnderscoreString(inputtext) //2464
  2239.                            
  2240.                             format(query, sizeof(query), "[I:] You have successfully deleted character: %s.", inputtext);
  2241.                             SendClientMessage(playerid, COLOR_YELLOW, query);
  2242.                             ShowMenuDialog(playerid);
  2243.                         }
  2244.                         else
  2245.                         {
  2246.                             ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CHARACTER_DELETE,DIALOG_STYLE_INPUT,"Master Account - Delete Character","What is the name of the character you wish to delete?\nYou will not be able to recover it after it has been deleted!\n(Firstname Lastname format)","Delete","Go Back");
  2247.                         }
  2248.                     }
  2249.                     else
  2250.                     {
  2251.                          ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CHARACTER_DELETE,DIALOG_STYLE_INPUT,"Master Account - Delete Character","What is the name of the character you wish to delete?\nYou will not be able to recover it after it has been deleted!\n(Firstname Lastname format)","Delete","Go Back");
  2252.                     }
  2253.                 }
  2254.                 else
  2255.                 {
  2256.                      ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CHARACTER_DELETE,DIALOG_STYLE_INPUT,"Master Account - Delete Character","What is the name of the character you wish to delete?\nYou will not be able to recover it after it has been deleted!\n(Firstname Lastname format)","Delete","Go Back");
  2257.                 }
  2258.             }
  2259.             else
  2260.             {
  2261.                 ShowPlayerDialog(playerid, DIALOG_MAIN_MENU_OPTIONS, DIALOG_STYLE_LIST, "Main Menu - Options", "Create New Character\nDelete Character\nChange Password\nDisconnect", "Continue", "Go Back");
  2262.             }
  2263.         }
  2264.         case DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME:
  2265.         {
  2266.             new firstname[MAX_PLAYER_NAME], lastname[MAX_PLAYER_NAME];
  2267.             if(response)
  2268.             {
  2269.                 if(strlen(inputtext) >= 1 && strlen(inputtext) <= MAX_PLAYER_NAME)
  2270.                 {
  2271.                     if(!CharacterExists(InsertPlayerUnderscoreString(inputtext)))
  2272.                     {
  2273.                         if(RPName(InsertPlayerUnderscoreString(inputtext), firstname, lastname))
  2274.                         {
  2275.                             SetPVarString(playerid,"TEMP_C_NAME",InsertPlayerUnderscoreString(inputtext)); //2501
  2276.                         }
  2277.                         else
  2278.                         {
  2279.                             ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME,DIALOG_STYLE_INPUT,"Master Account - New Character","The character name you entered is not a valid roleplay name.\n(Firstname Lastname format).","Continue","Go Back");
  2280.                         }
  2281.                     }
  2282.                     else
  2283.                     {
  2284.                         ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME,DIALOG_STYLE_INPUT,"Master Account - New Character","A character with that name is already registered, please choose another name.\n(Firstname Lastname format).","Continue","Go Back");
  2285.                     }
  2286.                 }
  2287.                 else
  2288.                 {
  2289.                     ShowPlayerDialog(playerid,DIALOG_MAIN_MENU_CREATE_CHARACTER_NAME,DIALOG_STYLE_INPUT,"Master Account - New Character","What do you want your character to be called?\n(Firstname Lastname format).","Continue","Go Back");
  2290.                 }
  2291.                 CreateCharacter(playerid, inputtext, Character[playerid][cCash], Character[playerid][cBank], Character[playerid][cSkin]),
  2292.                 GetPVarStringEx(playerid, "TEMP_C_NAME"),
  2293.                
  2294.                
  2295.                 DeletePVar(playerid, "TEMP_C_NAME");
  2296.                 ShowMenuDialog(playerid);
  2297.                 SpawnPlayer(playerid);
  2298.             }
  2299.             else
  2300.             {
  2301.                 ShowPlayerDialog(playerid, DIALOG_MAIN_MENU, DIALOG_STYLE_LIST, "Master Account - New Character","What do you want your character to be called?\n(Firstname Lastname format).","Continue","Go Back");
  2302.             }   // Go back.
  2303.         }
  2304.     } //2540
  2305.     return 1;
  2306. }
  2307.  
  2308. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  2309. {
  2310.     return 1;
  2311. }
Advertisement
Add Comment
Please, Sign In to add comment