Advertisement
Aleksander

Basic Roleplay Script

Aug 29th, 2011
3,444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 35.57 KB | None | 0 0
  1. /*
  2.                             .___                                .__          __  ._____.   .__          __________       .__                   .__
  3.                             |   |______________   ____    ______|__| _______/  |_|__\_ |__ |  |    ____ \______   \ ____ |  |    ____  ______  |  | _____   ___.__.
  4.                             |   |\_  __ \_  __ \_/ __ \  /  ___/|  |/  ___/\   __\  || __ \|  |  _/ __ \ |       _//  _ \|  |  _/ __ \ \____ \ |  | \__  \ <   |  |
  5.                             |   | |  | \/|  | \/\  ___/  \___ \ |  |\___ \  |  | |  || \_\ \  |__\  ___/ |    |   (  <_> )  |__\  ___/ |  |_> >|  |__/ __ \_\___  |
  6.                             |___| |__|   |__|    \___  >/____  >|__/____  > |__| |__||___  /____/ \___  >|____|_  /\____/|____/ \___  >|   __/ |____(____  // ____|
  7.                                                      \/      \/         \/               \/           \/        \/                  \/ |__|              \/ \/
  8.  
  9.                                                             Credits: Aleksander 90%
  10.                                                             and other sources, plugins etc to their rightful creators.
  11. */
  12.  
  13. #include <a_samp>
  14. #include <dini>
  15. #include <sscanf2>
  16. #include <zcmd>
  17. #include <streamer>
  18.  
  19. #define COLOR_ORANGE 0xFF9900AA
  20. #define COLOR_YELLOW 0xFFFF00AA
  21. #define COLOR_PURPLE 0xC2A2DAAA
  22. #define COLOR_WHITE  0xFFFFFFFF
  23.  
  24. #define COLOR_FADE1 0xFFFFFFFF
  25. #define COLOR_FADE2 0xC8C8C8C8
  26. #define COLOR_FADE3 0xAAAAAAAA
  27. #define COLOR_FADE4 0x8C8C8C8C
  28. #define COLOR_FADE5 0x6E6E6E6E
  29.  
  30. /* Position of the Arms Dealer Job */
  31. #define ARMS_DEALER_POSX 2157.0190
  32. #define ARMS_DEALER_POSY 957.4695
  33. #define ARMS_DEALER_POSZ 10.8203
  34.  
  35. /* Position of the Mechanic Job */
  36. #define MECHANIC_POSX 1643.8573
  37. #define MECHANIC_POSY 2198.2229
  38. #define MECHANIC_POSZ 10.8203
  39.  
  40. #define ARMS_DEALER_POINT1_POSX 2176.9053
  41. #define ARMS_DEALER_POINT1_POSY 920.0358
  42. #define ARMS_DEALER_POINT1_POSZ 10.8203
  43.  
  44. enum pInfo
  45. {
  46.     pAdminLevel,
  47.     pCash,
  48.     pSkin,
  49.     pJobID,
  50.     pMaterials,
  51.     pPackages,
  52.     pVehicleType,
  53.     Float:pVehiclePosX,
  54.     Float:pVehiclePosY,
  55.     Float:pVehiclePosZ,
  56.     Float:pVehicleAngle
  57. }
  58. new PlayerInfo[MAX_PLAYERS][pInfo];
  59. new gPlayerLogged[MAX_PLAYERS];
  60. new gLoginAttempts[MAX_PLAYERS];
  61. new playerVehicle[MAX_PLAYERS];
  62.  
  63. new timer[MAX_PLAYERS];
  64. new job1;
  65. new job2;
  66. new matspoint1;
  67.  
  68. #define SERVER_USER_FILE "Accounts/%s.ini"
  69.  
  70. new VehNames[212][] = {
  71.     {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},
  72.     {"Dumper"},{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},
  73.     {"Pony"},{"Mule"},{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},
  74.     {"Washington"},{"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},
  75.     {"Securicar"},{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},
  76.     {"Previon"},{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
  77.     {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},{"Speeder"},
  78.     {"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},{"Skimmer"},
  79.     {"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},{"Sanchez"},
  80.     {"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},{"Rustler"},{"ZR-350"},
  81.     {"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},{"Baggage"},{"Dozer"},
  82.     {"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},{"Jetmax"},{"Hotring"},
  83.     {"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},{"Mesa"},{"RC Goblin"},
  84.     {"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},{"Super GT"},{"Elegant"},
  85.     {"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},{"Tanker"},{"Roadtrain"},
  86.     {"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},{"NRG-500"},{"HPV1000"},
  87.     {"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},{"Willard"},{"Forklift"},
  88.     {"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},{"Blade"},{"Freight"},{"Streak"},
  89.     {"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},{"Firetruck LA"},{"Hustler"},{"Intruder"},
  90.     {"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},
  91.     {"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},
  92.     {"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},{"Bandito"},{"Freight Flat"},{"Streak Carriage"},
  93.     {"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},
  94.     {"Stafford"},{"BF-400"},{"Newsvan"},{"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},
  95.     {"Club"},{"Freight Carriage"},{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},
  96.     {"Police Car (SFPD)"},{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},
  97.     {"Phoenix"},{"shitGlendale"},{"shitSadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},
  98.     {"Boxville"},{"Farm Plow"},{"Utility Trailer"}
  99. };
  100.  
  101. main()
  102. {
  103.     print("\n----------------------------------");
  104.     print(" ######\n");
  105.     print(" #     #  ####  #      ###### #####  #        ##   #   #\n");
  106.     print(" #     # #    # #      #      #    # #       #  #   # #\n");
  107.     print(" ######  #    # #      #####  #    # #      #    #   #\n");
  108.     print(" #   #   #    # #      #      #####  #      ######   #\n");
  109.     print(" #    #  #    # #      #      #      #      #    #   #\n");
  110.     print(" #     #  ####  ###### ###### #      ###### #    #   #\n");
  111.     print("----------------------------------\n");
  112. }
  113.  
  114. public OnGameModeInit()
  115. {
  116.     for(new i = 0; i < 299; i++)
  117.     {
  118.       if(IsValidSkin(i))
  119.       {
  120.         AddPlayerClass(i, 1673.6897, 1447.9009, 10.7847, 270, -1, -1, -1, -1, -1, -1);
  121.       }
  122.     }
  123.     UsePlayerPedAnims();
  124.     EnableStuntBonusForAll(0);
  125.     DisableInteriorEnterExits();
  126.     SetGameModeText("Roleplay");
  127.  
  128.     job1 = CreateDynamicPickup(1239, 1, ARMS_DEALER_POSX, ARMS_DEALER_POSY, ARMS_DEALER_POSZ, 0); //arms dealer pickup job
  129.     CreateDynamic3DTextLabel("Arms Dealer\nType /join to become an Arms Dealer",COLOR_YELLOW, ARMS_DEALER_POSX, ARMS_DEALER_POSY, ARMS_DEALER_POSZ,40.0,0);
  130.    
  131.     job2 = CreateDynamicPickup(1239, 1, MECHANIC_POSX, MECHANIC_POSY, MECHANIC_POSZ, 0); //mechanic pickup job
  132.     CreateDynamic3DTextLabel("Mechanic\nType /join to become a Mechanic",COLOR_YELLOW, MECHANIC_POSX, MECHANIC_POSY, MECHANIC_POSZ,40.0,0);
  133.    
  134.     matspoint1 = CreateDynamicPickup(1239, 1, ARMS_DEALER_POINT1_POSX, ARMS_DEALER_POINT1_POSY, ARMS_DEALER_POINT1_POSZ, 0); //Mats Pickup 1
  135.     CreateDynamic3DTextLabel("Material Pickup 1\nType /getmats to get some packages.",COLOR_YELLOW, ARMS_DEALER_POINT1_POSX, ARMS_DEALER_POINT1_POSY, ARMS_DEALER_POINT1_POSZ,40.0,0);
  136.  
  137.     return 1;
  138. }
  139.  
  140. public OnGameModeExit()
  141. {
  142.     return 1;
  143. }
  144.  
  145. public OnPlayerRequestClass(playerid, classid)
  146. {
  147.     if(PlayerInfo[playerid][pSkin] != 0)
  148.     {
  149.         return SpawnPlayer(playerid);
  150.     }
  151.     SetPlayerPos(playerid, 2426.8420, 1821.9703, 16.3222);
  152.     SetPlayerCameraPos(playerid, 2422.4617, 1821.9310, 17.2204);
  153.     SetPlayerCameraLookAt(playerid, 2426.8420, 1821.9703, 16.3222);
  154.     SetPlayerFacingAngle(playerid, 92.0174);
  155.     return 1;
  156. }
  157.  
  158. public OnPlayerConnect(playerid)
  159. {
  160.     SetPlayerCameraPos(playerid, 1698.2495, 2464.7241, 80.1933);
  161.     SetPlayerCameraLookAt(playerid, 1614.8538, 2304.3838, 10.8203);
  162.    
  163.     CreateDynamicMapIcon(2802.53, 2430.48, 19.53, 45, 0);
  164.     CreateDynamicMapIcon(2337.48, 2453.28, 14.96, 30, 0);
  165.     CreateDynamicMapIcon(2192.29, 1990.78, 12.27, 52, 0);
  166.     CreateDynamicMapIcon(2518.65, 2033.39, 11.17, 21, 0);
  167.     CreateDynamicMapIcon(2489.85, 918.43, 11.02, 21, 0);
  168.     CreateDynamicMapIcon(2117.59, 898.24, 11.17, 52, 0);
  169.     CreateDynamicMapIcon(2105.10, 2256.81, 11.02, 45, 0);
  170.     CreateDynamicMapIcon(1934.58, 2306.77, 10.82, 52, 0);
  171.     CreateDynamicMapIcon(1600.01, 2219.96, 10.82, 52, 0);
  172.     CreateDynamicMapIcon(1657.01, 2190.71, 20.24, 27, 0);
  173.     CreateDynamicMapIcon(2416.97, 1123.83, 9.32, 24, 0);
  174.     CreateDynamicMapIcon(2557.12, 2063.86, 11.09, 6, 0);
  175.     CreateDynamicMapIcon(1607.77, 1820.90, 10.82, 22, 0);
  176.     CreateDynamicMapIcon(1654.61, 1732.78, 9.70, 45, 0);
  177.     CreateDynamicMapIcon(2176.84, 922.72, 10.82, 18, 0);
  178.     CreateDynamicMapIcon(1086.13, 1072.89, 10.83, 61, 0);
  179.     CreateDynamicMapIcon(1671.31, 719.07, 15.38, 51, 0);
  180.     CreateDynamicMapIcon(2150.71, 2734.73, 11.17, 52, 0);
  181.     CreateDynamicMapIcon(1968.56, 2295.03, 16.45, 54, 0);
  182.    
  183.     gPlayerLogged[playerid] = 0;
  184.     new name[MAX_PLAYER_NAME], file[256];
  185.  
  186.     GetPlayerName(playerid, name, sizeof(name));
  187.     format(file, sizeof(file), SERVER_USER_FILE, name);
  188.  
  189.     if (!dini_Exists(file))
  190.     {
  191.         ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Account not found!", "This account has not been registered yet, please enter a password below to register it:", "Register", "Quit");
  192.     }
  193.     if(fexist(file))
  194.     {
  195.         ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Account is registered!", "This account is registered, please your password to login!", "Enter", "Quit");
  196.     }
  197.     return 1;
  198. }
  199.  
  200. public OnPlayerDisconnect(playerid, reason)
  201. {
  202.     new name[MAX_PLAYER_NAME], file[256];
  203.     GetPlayerName(playerid, name, sizeof(name));
  204.     format(file, sizeof(file), SERVER_USER_FILE, name);
  205.     if(gPlayerLogged[playerid] == 1)
  206.     {
  207.         SavePlayer(playerid);
  208.     }
  209.     KillTimer(timer[playerid]);
  210.     gPlayerLogged[playerid] = 0;
  211.     DestroyVehicle(playerVehicle[playerid]);
  212.     return 1;
  213. }
  214.  
  215. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  216. {
  217.     if (dialogid == 1)
  218.     {
  219.         new name[MAX_PLAYER_NAME], file[256];
  220.         GetPlayerName(playerid, name, sizeof(name));
  221.         format(file, sizeof(file), SERVER_USER_FILE, name);
  222.         if(!response) return Kick(playerid);
  223.         if (!strlen(inputtext)) return
  224.         ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Account not found!", "This account has not been registered yet, please enter a password below to register it:", "Register", "Quit");
  225.         dini_Create(file);
  226.         dini_IntSet(file, "Password", udb_hash(inputtext));
  227.         dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel] = 0);
  228.         dini_IntSet(file, "Money",PlayerInfo[playerid][pCash] = 10000);
  229.         dini_IntSet(file, "Skin",PlayerInfo[playerid][pSkin] = 0);
  230.         dini_IntSet(file, "JobID", PlayerInfo[playerid][pJobID] = 0);
  231.         dini_IntSet(file, "Materials", PlayerInfo[playerid][pMaterials] = 0);
  232.         dini_IntSet(file, "Packages", PlayerInfo[playerid][pPackages] = 0);
  233.        
  234.         dini_IntSet(file, "VehicleType", PlayerInfo[playerid][pVehicleType] = 0);
  235.         dini_FloatSet(file, "VehiclePosX", PlayerInfo[playerid][pVehiclePosX] = 0);
  236.         dini_FloatSet(file, "VehiclePosY", PlayerInfo[playerid][pVehiclePosY] = 0);
  237.         dini_FloatSet(file, "VehiclePosZ", PlayerInfo[playerid][pVehiclePosZ] = 0);
  238.         dini_FloatSet(file, "VehicleAngle", PlayerInfo[playerid][pVehicleAngle] = 0);
  239.  
  240.         dini_FloatSet(file, "Health", 100);
  241.         dini_FloatSet(file, "Armour", 0);
  242.         dini_FloatSet(file, "PosX", 1673.6897);
  243.         dini_FloatSet(file, "PosY", 1447.9009);
  244.         dini_FloatSet(file, "PosZ", 10.7847);
  245.         dini_FloatSet(file, "PosAngle", 0);
  246.         gPlayerLogged[playerid] = 1;
  247.     }
  248.     if (dialogid == 2)
  249.     {
  250.         new name[MAX_PLAYER_NAME], file[256];
  251.         GetPlayerName(playerid, name, sizeof(name));
  252.         format(file, sizeof(file), SERVER_USER_FILE, name);
  253.         if(!response) return Kick(playerid);
  254.         if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Account is registered!", "This account is registered, please your password to login!", "Enter", "Quit");
  255.         new tmp;
  256.         tmp = dini_Int(file, "Password");
  257.         if(udb_hash(inputtext) != tmp) {
  258.             if(gLoginAttempts[playerid] > 1)
  259.             {
  260.                 gLoginAttempts[playerid] = 0;
  261.                 return Kick(playerid);
  262.             }
  263.             else
  264.             {
  265.                 new string[128];
  266.                 format(string, sizeof(string), "You have entered an incorrect password, you have %i attempts left before you get kicked.", 2 - gLoginAttempts[playerid]);
  267.                 SendClientMessage(playerid, COLOR_YELLOW, string);
  268.  
  269.                 gLoginAttempts[playerid]++;
  270.                 ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Account is registered!", "This account is registered, please your password to login!", "Enter", "Quit");
  271.             }
  272.         }
  273.         else
  274.         {
  275.             gPlayerLogged[playerid] = 1;
  276.             timer[playerid] = SetTimerEx("SavePlayer", 30000, true, "i", playerid);
  277.  
  278.             PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
  279.             PlayerInfo[playerid][pSkin] = dini_Int(file, "Skin");
  280.             PlayerInfo[playerid][pCash] = dini_Int(file, "Money");
  281.             PlayerInfo[playerid][pJobID] = dini_Int(file, "JobID");
  282.             PlayerInfo[playerid][pMaterials] = dini_Int(file, "Materials");
  283.             PlayerInfo[playerid][pPackages] = dini_Int(file, "Packages");
  284.            
  285.             PlayerInfo[playerid][pVehicleType] = dini_Int(file, "VehicleType");
  286.             PlayerInfo[playerid][pVehiclePosX] = dini_Float(file, "VehiclePosX");
  287.             PlayerInfo[playerid][pVehiclePosY] = dini_Float(file, "VehiclePosY");
  288.             PlayerInfo[playerid][pVehiclePosZ] = dini_Float(file, "VehiclePosZ");
  289.             PlayerInfo[playerid][pVehicleAngle] = dini_Float(file, "VehicleAngle");
  290.            
  291.             if(dini_Int(file, "VehicleType") != 0)
  292.             {
  293.                 playerVehicle[playerid] = CreateVehicle(dini_Int(file, "VehicleType"), dini_Int(file, "VehiclePosX"), dini_Int(file, "VehiclePosY"), dini_Int(file, "VehiclePosZ"), dini_Int(file, "VehicleAngle"), 0, 0, -1);
  294.             }
  295.         }
  296.     }
  297.     if (dialogid == 3)
  298.     {
  299.         if(!response) return RemovePlayerFromVehicle(playerid);
  300.     }
  301.     return 1;
  302. }
  303.  
  304. public OnPlayerSpawn(playerid)
  305. {
  306.     if(gPlayerLogged[playerid] == 0)
  307.     {
  308.         return Kick(playerid);
  309.     }
  310.     new name[MAX_PLAYER_NAME], file[256];
  311.     GetPlayerName(playerid, name, sizeof(name));
  312.     format(file, sizeof(file), SERVER_USER_FILE, name);
  313.    
  314.     SetPlayerPos(playerid, dini_Float(file, "PosX"), dini_Float(file, "PosY"), dini_Float(file, "PosZ"));
  315.     SetPlayerFacingAngle(playerid, dini_Float(file, "PosAngle"));
  316.     SetPlayerHealth(playerid, dini_Float(file, "Health"));
  317.     SetPlayerArmour(playerid, dini_Float(file, "Armour"));
  318.  
  319.     if(PlayerInfo[playerid][pSkin] != 0)
  320.     {
  321.         return SetPlayerSkin(playerid, dini_Int(file, "Skin"));
  322.     }
  323.     return 1;
  324. }
  325.  
  326. public OnPlayerDeath(playerid, killerid, reason)
  327. {
  328.     new name[MAX_PLAYER_NAME], file[256];
  329.     GetPlayerName(playerid, name, sizeof(name));
  330.     format(file, sizeof(file), SERVER_USER_FILE, name);
  331.    
  332.     dini_FloatSet(file, "Health", 100);
  333.     dini_FloatSet(file, "Armour", 0);
  334.    
  335.     dini_FloatSet(file, "PosX", 1579.5499);
  336.     dini_FloatSet(file, "PosY", 1769.0642);
  337.     dini_FloatSet(file, "PosZ", 10.8203);
  338.     dini_FloatSet(file, "PosAngle", 90);
  339.    
  340.     ClearAnimations(playerid);
  341.     return 1;
  342. }
  343.  
  344. public OnVehicleSpawn(vehicleid)
  345. {
  346.     return 1;
  347. }
  348.  
  349. public OnVehicleDeath(vehicleid, killerid)
  350. {
  351.     return 1;
  352. }
  353.  
  354. public OnPlayerText(playerid, text[])
  355. {
  356.     new pname[24], str[128];
  357.     GetPlayerName(playerid, pname, 24);
  358.     strreplace(pname, '_', ' ');
  359.     format(str, sizeof(str), "%s says: %s", pname, text);
  360.     ProxDetector(30.0, playerid, str, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
  361.     return 0;
  362. }
  363.  
  364. CMD:kill(playerid, params[])
  365. {
  366.     if(IsPlayerConnected(playerid))
  367.     {
  368.         return SetPlayerHealth(playerid, 0);
  369.     }
  370.     return 0;
  371. }
  372.  
  373. CMD:addnos(playerid, params[])
  374. {
  375.     if(IsPlayerConnected(playerid))
  376.     {
  377.         if(PlayerInfo[playerid][pJobID] == 2)
  378.         {
  379.             if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
  380.             {
  381.                 new vehicle;
  382.                 vehicle = GetPlayerVehicleID(playerid);
  383.                 SendClientMessage(playerid, COLOR_ORANGE, "You have added 10x bottles of Nitros Oxide to the vehicle.");
  384.                 return AddVehicleComponent(vehicle, 1010);
  385.             }
  386.             else
  387.             {
  388.                 return SendClientMessage(playerid, COLOR_YELLOW, "You are not inside a vehicle or not the driver of the vehicle.");
  389.             }
  390.         }
  391.         else
  392.         {
  393.             return SendClientMessage(playerid, COLOR_YELLOW, "You are not a Mechanic!");
  394.         }
  395.     }
  396.     return 0;
  397. }
  398.  
  399. new iCanUse[MAX_PLAYERS];
  400. CMD:fix(playerid, params[])
  401. {
  402.     if(IsPlayerConnected(playerid))
  403.     {
  404.         if(PlayerInfo[playerid][pJobID] == 2)
  405.         {
  406.             if(iCanUse[playerid]-gettime() > 0) return SendClientMessage(playerid, 0xFF0000AA, "Please wait before making another repair..");
  407.             if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFFFFFFFF, "You are not in a vehicle, or not the driver of it!");
  408.             RepairVehicle(GetPlayerVehicleID(playerid));
  409.             SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
  410.             iCanUse[playerid] = gettime() + 60; // 60 seconds
  411.             return SendClientMessage(playerid, 0xFFFFFFFF, "Your vehicle has been successfully repaired!");
  412.         }
  413.         else
  414.         {
  415.             return SendClientMessage(playerid, COLOR_YELLOW, "You are not a Mechanic!");
  416.         }
  417.     }
  418.     return 0;
  419. }
  420.  
  421. stock playerHasCar(playerid)
  422. {
  423.     if(PlayerInfo[playerid][pVehicleType] < 399) return false;
  424.     else if(PlayerInfo[playerid][pVehicleType] > 399 && PlayerInfo[playerid][pVehicleType] < 613) return true;//checks if its a valid car type
  425.     return false;
  426. }
  427.  
  428. CMD:deletecar(playerid, params[])
  429. {
  430.     if(IsPlayerConnected(playerid))
  431.     {
  432.         new confirm;
  433.         if (sscanf(params, "i", confirm)) return SendClientMessage(playerid, 0xFF0000AA, "Usage: /deletecar <1>");
  434.         else if(!playerHasCar(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You do not own a car!");
  435.         else if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_ORANGE, "You are not inside the car!");
  436.         else
  437.         {
  438.             new Float:vehicleposx, Float:vehicleposy, Float:vehicleposz;
  439.             GetVehiclePos(playerVehicle[playerid], vehicleposx, vehicleposy, vehicleposz);
  440.             if(IsPlayerInRangeOfPoint(playerid, 2.0, vehicleposx, vehicleposy, vehicleposz))
  441.             {
  442.                 PlayerInfo[playerid][pVehicleType] = 0;
  443.                 PlayerInfo[playerid][pVehiclePosX] = 0;
  444.                 PlayerInfo[playerid][pVehiclePosY] = 0;
  445.                 PlayerInfo[playerid][pVehiclePosZ] = 0;
  446.                 PlayerInfo[playerid][pVehicleAngle] = 0;
  447.                 DestroyVehicle(playerVehicle[playerid]);
  448.                 SavePlayer(playerid);
  449.                 return SendClientMessage(playerid, COLOR_YELLOW, "You have succesfully deleted your car!");
  450.             }
  451.             else
  452.             {
  453.                 return SendClientMessage(playerid, COLOR_YELLOW, "You are not near your car!");
  454.             }
  455.         }
  456.     }
  457.     return 0;
  458. }
  459.  
  460. CMD:park(playerid, params[])
  461. {
  462.     if(IsPlayerConnected(playerid))
  463.     {
  464.         if(!playerHasCar(playerid)) return SendClientMessage(playerid, COLOR_ORANGE, "You do not own a car!");
  465.         else if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_ORANGE, "You are not inside the car!");
  466.         else
  467.         {
  468.             new Float:vehicleposx, Float:vehicleposy, Float:vehicleposz, Float:angle;
  469.             GetVehiclePos(playerVehicle[playerid], vehicleposx, vehicleposy, vehicleposz);
  470.             GetVehicleZAngle(playerVehicle[playerid], angle);
  471.             if(IsPlayerInRangeOfPoint(playerid, 2.0, vehicleposx, vehicleposy, vehicleposz))
  472.             {
  473.                 new name[MAX_PLAYER_NAME], file[256];
  474.                 GetPlayerName(playerid, name, sizeof(name));
  475.                 format(file, sizeof(file), SERVER_USER_FILE, name);
  476.                
  477.                 PlayerInfo[playerid][pVehiclePosX] = vehicleposx;
  478.                 PlayerInfo[playerid][pVehiclePosY] = vehicleposy;
  479.                 PlayerInfo[playerid][pVehiclePosZ] = vehicleposz;
  480.                 PlayerInfo[playerid][pVehicleAngle] = angle;
  481.                
  482.                 SavePlayer(playerid);
  483.                 DestroyVehicle(playerVehicle[playerid]);
  484.  
  485.                 playerVehicle[playerid] = CreateVehicle(dini_Int(file, "VehicleType"), dini_Int(file, "VehiclePosX"), dini_Int(file, "VehiclePosY"), dini_Int(file, "VehiclePosZ"), dini_Int(file, "VehicleAngle"), 0, 0, -1);
  486.                 SetVehicleToRespawn(playerVehicle[playerid]);
  487.                 PutPlayerInVehicle(playerid, playerVehicle[playerid], 0);
  488.                 return SendClientMessage(playerid, COLOR_YELLOW, "You have parked your car!");
  489.             }
  490.             else
  491.             {
  492.                 return SendClientMessage(playerid, COLOR_YELLOW, "You are not near your car!");
  493.             }
  494.         }
  495.     }
  496.     return 0;
  497. }
  498.  
  499. CMD:addrims(playerid, params[])
  500. {
  501.     if(IsPlayerConnected(playerid))
  502.     {
  503.         if(PlayerInfo[playerid][pJobID] == 2)
  504.         {
  505.             if (isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /addrims < Shadow | Mega | Rimshine | Wires | Classic | Twist | Cutter | Switch | Grove | Import | Dollar | Trance | Atomic >");
  506.             if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFFFFFFFF, "You are not in a vehicle, or not the driver of it!");
  507.             new vehicle, wheeltype;
  508.             vehicle = GetPlayerVehicleID(playerid);
  509.             wheeltype = GetWheelIDFromName(params);
  510.             if(wheeltype == -1) return SendClientMessage(playerid, COLOR_YELLOW, " Invalid wheel type.");
  511.             SendClientMessage(playerid, COLOR_ORANGE, "Wheels have been changed!");
  512.             return AddVehicleComponent(vehicle, wheeltype);
  513.         }
  514.         else
  515.         {
  516.             return SendClientMessage(playerid, COLOR_YELLOW, "You are not a Mechanic!");
  517.         }
  518.     }
  519.     return 0;
  520. }
  521.  
  522. CMD:me(playerid, params[])
  523. {
  524.     if (isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /me <action>");
  525.     new sendername[32], string[128];
  526.     GetPlayerName(playerid, sendername, sizeof(sendername));
  527.     strreplace(sendername, '_', ' ');
  528.     format(string, sizeof(string), "%s %s", sendername, params);
  529.     ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  530.     return 1;
  531. }
  532.  
  533. CMD:b(playerid, params[])
  534. {
  535.     if (isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /b <OOC Information>");
  536.     new sendername[32], string[128];
  537.     GetPlayerName(playerid, sendername, sizeof(sendername));
  538.     strreplace(sendername, '_', ' ');
  539.     format(string, sizeof(string), "%s: (( %s ))", sendername, params);
  540.     ProxDetector(30.0, playerid, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
  541.     return 1;
  542. }
  543.  
  544. CMD:ooc(playerid, params[])
  545. {
  546.     new sendername[32], string[128];
  547.     GetPlayerName(playerid, sendername, sizeof(sendername));
  548.     strreplace(sendername, '_', ' ');
  549.     format(string, sizeof(string), "(( %s: %s ))", sendername, params);
  550.     SendClientMessageToAll(COLOR_WHITE, string);
  551.     return 1;
  552. }
  553.  
  554. CMD:v(playerid, params[])
  555. {
  556.     if(IsPlayerConnected(playerid))
  557.     {
  558.         if(PlayerInfo[playerid][pAdminLevel] > 0)
  559.         {
  560.             if (isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /(v)ehicle <vehicle name>");
  561.             new Float:x, Float:y, Float:z, vehicle, id;
  562.             id = GetVehicleModelIDFromName(params);
  563.             if(id == -1) return SendClientMessage(playerid, COLOR_YELLOW, "Invalid vehicle name.");
  564.             GetPlayerPos(playerid, x, y, z);
  565.             vehicle = CreateVehicle(id, x, y, z, 0, 0, 0, -1);
  566.             PutPlayerInVehicle(playerid, vehicle, 0);
  567.             return SendClientMessage(playerid, COLOR_ORANGE, "You have spawned a vehicle.");
  568.         }
  569.     }
  570.     return 0;
  571. }
  572.  
  573. CMD:stats(playerid, params[])
  574. {
  575.     if(IsPlayerConnected(playerid))
  576.     {
  577.         new string[128], Float:health, Float:armour;
  578.         GetPlayerHealth(playerid,health);
  579.         GetPlayerArmour(playerid,armour);
  580.         SendClientMessage(playerid, COLOR_YELLOW, "Your statistics of this account!");
  581.         format(string, sizeof(string), "Health: %f, Armour: %f, Money: %i, Job ID: %i, Materials: %i, Packages: %i", health, armour, PlayerInfo[playerid][pCash], PlayerInfo[playerid][pJobID], PlayerInfo[playerid][pMaterials], PlayerInfo[playerid][pPackages]);
  582.         SendClientMessage(playerid, COLOR_WHITE, string);
  583.     }
  584.     return 1;
  585. }
  586.  
  587. CMD:join(playerid, params[])
  588. {
  589.     if(IsPlayerConnected(playerid))
  590.     {
  591.         new Float:x, Float:y, Float:z, string[64];
  592.         GetPlayerPos(playerid, x, y, z);
  593.  
  594.         /* JOB ID: 1 Arms Dealer Job */
  595.         if(IsPlayerInRangeOfPoint(playerid, 7.0, ARMS_DEALER_POSX, ARMS_DEALER_POSY, ARMS_DEALER_POSZ))// Arms Dealer Job
  596.         {
  597.             if(PlayerInfo[playerid][pJobID] != 1)
  598.             {
  599.                 format(string, sizeof(string), "You have switched your job to: Arms Dealer."), PlayerInfo[playerid][pJobID] = 1;
  600.                 SavePlayer(playerid);
  601.                 return SendClientMessage(playerid, COLOR_ORANGE, string);
  602.             }
  603.             return SendClientMessage(playerid, COLOR_YELLOW, "You are already an Arms Dealer!");
  604.         }
  605.  
  606.         /* JOB ID: 2 Mechanic Job */
  607.         if(IsPlayerInRangeOfPoint(playerid, 7.0, MECHANIC_POSX, MECHANIC_POSY, MECHANIC_POSZ))// Mechanic Job
  608.         {
  609.             if(PlayerInfo[playerid][pJobID] != 2)
  610.             {
  611.                 format(string, sizeof(string), "You have switched your job to: Mechanic."), PlayerInfo[playerid][pJobID] = 2;
  612.                 SavePlayer(playerid);
  613.                 return SendClientMessage(playerid, COLOR_ORANGE, string);
  614.             }
  615.             return SendClientMessage(playerid, COLOR_YELLOW, "You are already a Mechanic!");
  616.         }
  617.        
  618.         else
  619.         {
  620.             return SendClientMessage(playerid, COLOR_YELLOW, "You are not at a point to get a job.");
  621.         }
  622.     }
  623.     return 0;
  624. }
  625.  
  626. CMD:quitjob(playerid, params[])
  627. {
  628.     if(IsPlayerConnected(playerid))
  629.     {
  630.         if(PlayerInfo[playerid][pJobID] > 0)
  631.         {
  632.             PlayerInfo[playerid][pJobID] = 0;
  633.             SavePlayer(playerid);
  634.             return SendClientMessage(playerid, COLOR_ORANGE, "You have quit your job.");
  635.         }
  636.         else
  637.         {
  638.             return SendClientMessage(playerid, COLOR_YELLOW, "You do not have a job!");
  639.         }
  640.     }
  641.     return 0;
  642. }
  643.  
  644. CMD:getmats(playerid, params[])
  645. {
  646.     if(IsPlayerConnected(playerid))
  647.     {
  648.         if(PlayerInfo[playerid][pJobID] == 1)
  649.         {
  650.             if(IsPlayerInRangeOfPoint(playerid, 7.0, ARMS_DEALER_POINT1_POSX, ARMS_DEALER_POINT1_POSY, ARMS_DEALER_POINT1_POSZ))//point one
  651.             {
  652.                 if(PlayerInfo[playerid][pCash] > 499)
  653.                 {
  654.                     if(PlayerInfo[playerid][pPackages] == 10) return SendClientMessage(playerid, COLOR_YELLOW, " You already have packages, type /drop packages to drop them all.");
  655.                     SetPlayerCheckpoint(playerid, 788.6281, 1705.0439, 5.2813, 3.0);
  656.                     PlayerInfo[playerid][pCash] = PlayerInfo[playerid][pCash] - 500;
  657.                     PlayerInfo[playerid][pPackages] = 10;
  658.                     return SendClientMessage(playerid, COLOR_ORANGE, "You have ordered 10 packages, deliver them for 500 materials!");
  659.                 }
  660.                 else
  661.                 {
  662.                     return SendClientMessage(playerid, COLOR_ORANGE, "You do not have enough money for purchasing packages.");
  663.                 }
  664.             }
  665.             else
  666.             {
  667.                 return SendClientMessage(playerid, COLOR_ORANGE, "You are not at a material pickup point!");
  668.             }
  669.         }
  670.         else
  671.         {
  672.             return SendClientMessage(playerid, COLOR_YELLOW, "You are not an Arms Dealer!");
  673.         }
  674.     }
  675.     return 0;
  676. }
  677.  
  678. CMD:killcheckpoint(playerid, params[])
  679. {
  680.     if(IsPlayerConnected(playerid))
  681.     {
  682.         SendClientMessage(playerid, COLOR_WHITE, "Cleared all checkpoints!!");
  683.         return DisablePlayerCheckpoint(playerid);
  684.     }
  685.     return 0;
  686. }
  687.  
  688. CMD:drop(playerid, params[])
  689. {
  690.     if(IsPlayerConnected(playerid))
  691.     {
  692.         new item[24];
  693.         if(isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /drop <materials | packages>");
  694.         else if(!strcmp(item, "packages"))
  695.         {
  696.             if(PlayerInfo[playerid][pPackages] < 1) return SendClientMessage(playerid, COLOR_YELLOW, "You have no packages to drop!");
  697.             PlayerInfo[playerid][pPackages] = 0;
  698.             return SendClientMessage(playerid, COLOR_YELLOW, "You have dropped your materials!");
  699.         }
  700.         else return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /drop <materials | packages>");
  701.     }
  702.     return 0;
  703. }
  704.  
  705. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  706. {
  707.     return 1;
  708. }
  709.  
  710. public OnPlayerExitVehicle(playerid, vehicleid)
  711. {
  712.     return 1;
  713. }
  714.  
  715. public OnPlayerStateChange(playerid, newstate, oldstate)
  716. {
  717.     return 1;
  718. }
  719.  
  720. public OnPlayerEnterCheckpoint(playerid)
  721. {
  722.     new Float:x, Float:y, Float:z;
  723.     GetPlayerPos(playerid, x, y, z);
  724.    
  725.     if(IsPlayerInRangeOfPoint(playerid, 7.0, 788.6281, 1705.0439, 5.2813))
  726.     {
  727.         DisablePlayerCheckpoint(playerid);
  728.         PlayerInfo[playerid][pPackages] = 0;
  729.         PlayerInfo[playerid][pMaterials] += 500;
  730.         SavePlayer(playerid);
  731.         return SendClientMessage(playerid, COLOR_YELLOW, "You delivered 10 materials package in exchange for 500 materials!");
  732.     }
  733.     return 1;
  734. }
  735.  
  736. public OnPlayerLeaveCheckpoint(playerid)
  737. {
  738.     return 1;
  739. }
  740.  
  741. public OnPlayerEnterRaceCheckpoint(playerid)
  742. {
  743.     return 1;
  744. }
  745.  
  746. public OnPlayerLeaveRaceCheckpoint(playerid)
  747. {
  748.     return 1;
  749. }
  750.  
  751. new commanddelay[MAX_PLAYERS];
  752. public OnPlayerCommandReceived(playerid, cmdtext[])
  753. {
  754.     if(gPlayerLogged[playerid] == 1)//Checks if the account has LOGGED in, if not it will not accept any commands.
  755.     {
  756.         if(commanddelay[playerid]-gettime() > 0)
  757.         {
  758.             SendClientMessage(playerid, 0xFF0000AA, "You must wait a few seconds before entering another command.");
  759.             return 0;
  760.         }
  761.         commanddelay[playerid] = gettime() + 1; // 1 second delay
  762.         return 1;
  763.     }
  764.     return 0;
  765. }
  766.  
  767. public OnRconCommand(cmd[])
  768. {
  769.     return 1;
  770. }
  771.  
  772. public OnPlayerRequestSpawn(playerid)
  773. {
  774.     return 1;
  775. }
  776.  
  777. public OnObjectMoved(objectid)
  778. {
  779.     return 1;
  780. }
  781.  
  782. public OnPlayerObjectMoved(playerid, objectid)
  783. {
  784.     return 1;
  785. }
  786.  
  787. public OnPlayerPickUpPickup(playerid, pickupid)
  788. {
  789.     if(pickupid == job1) return GameTextForPlayer(playerid, "~w~Type ~r~/join ~w~to become an Arms Dealer!", 2000, 3);
  790.     else if(pickupid == job2) return GameTextForPlayer(playerid, "~w~Type ~r~/join ~w~to become a Mechanic!", 2000, 3);
  791.     else if(pickupid == matspoint1) return  GameTextForPlayer(playerid, "~w~Type ~r~/getmats ~w~to get some packages!", 2000, 3);
  792.     return 1;
  793. }
  794.  
  795. public OnVehicleMod(playerid, vehicleid, componentid)
  796. {
  797.     return 1;
  798. }
  799.  
  800. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  801. {
  802.     return 1;
  803. }
  804.  
  805. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  806. {
  807.     return 1;
  808. }
  809.  
  810. public OnPlayerSelectedMenuRow(playerid, row)
  811. {
  812.     return 1;
  813. }
  814.  
  815. public OnPlayerExitedMenu(playerid)
  816. {
  817.     return 1;
  818. }
  819.  
  820. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  821. {
  822.     return 1;
  823. }
  824.  
  825. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  826. {
  827.     return 1;
  828. }
  829.  
  830. public OnRconLoginAttempt(ip[], password[], success)
  831. {
  832.     return 1;
  833. }
  834.  
  835. public OnPlayerUpdate(playerid)
  836. {
  837.     return 1;
  838. }
  839.  
  840. public OnPlayerStreamIn(playerid, forplayerid)
  841. {
  842.     return 1;
  843. }
  844.  
  845. public OnPlayerStreamOut(playerid, forplayerid)
  846. {
  847.     return 1;
  848. }
  849.  
  850. public OnVehicleStreamIn(vehicleid, forplayerid)
  851. {
  852.     return 1;
  853. }
  854.  
  855. public OnVehicleStreamOut(vehicleid, forplayerid)
  856. {
  857.     return 1;
  858. }
  859.  
  860. IsValidSkin(skinid)
  861. {
  862.   #define   MAX_BAD_SKINS 24
  863.   new badSkins[MAX_BAD_SKINS] =
  864.   {0, 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 268, 273, 289, 165};
  865.   if (skinid < 0 || skinid > 299) return false;
  866.   for (new i = 0; i < MAX_BAD_SKINS; i++) { if (skinid == badSkins[i]) return false; }
  867.   #undef MAX_BAD_SKINS
  868.   return 1;
  869. }
  870.  
  871. ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
  872. {
  873.     if(IsPlayerConnected(playerid))
  874.     {
  875.         new Float:posx, Float:posy, Float:posz;
  876.         new Float:oldposx, Float:oldposy, Float:oldposz;
  877.         new Float:tempposx, Float:tempposy, Float:tempposz;
  878.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  879.         for(new i = 0; i < MAX_PLAYERS; i++)
  880.         {
  881.             if(IsPlayerConnected(i))
  882.             {
  883.                 GetPlayerPos(i, posx, posy, posz);
  884.                 tempposx = (oldposx -posx);
  885.                 tempposy = (oldposy -posy);
  886.                 tempposz = (oldposz -posz);
  887.                 if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i))
  888.                 {
  889.                     if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
  890.                     {
  891.                         SendClientMessage(i, col1, string);
  892.                     }
  893.                     else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
  894.                     {
  895.                         SendClientMessage(i, col2, string);
  896.                     }
  897.                     else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
  898.                     {
  899.                         SendClientMessage(i, col3, string);
  900.                     }
  901.                     else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
  902.                     {
  903.                         SendClientMessage(i, col4, string);
  904.                     }
  905.                     else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  906.                     {
  907.                         SendClientMessage(i, col5, string);
  908.                     }
  909.                 }
  910.             }
  911.         }
  912.     }
  913.     return 1;
  914. }
  915.  
  916. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  917. {
  918.     return 1;
  919. }
  920.  
  921. forward GetVehicleModelIDFromName(vehname[]);
  922. public GetVehicleModelIDFromName(vehname[])
  923. {
  924.     for(new i = 0; i < 211; i++)
  925.     {
  926.         if (strfind(VehNames[i], vehname, true) != -1) return i + 400;
  927.     }
  928.     return -1;
  929. }
  930.  
  931. new WheelNames[13][] = {{"Shadow"},{"Mega"},{"Rimshine"},{"Wires"},{"Classic"},{"Twist"},{"Cutter"},{"Switch"},{"Grove"},{"Import"},{"Dollar"},{"Trance"},{"Atomic"}};
  932.  
  933. forward GetWheelIDFromName(wheelname[]);
  934. public GetWheelIDFromName(wheelname[])
  935. {
  936.     for(new i = 0; i < 13; i++)
  937.     {
  938.         if (strfind(WheelNames[i], wheelname, true) != -1) return i + 1073;
  939.     }
  940.     return -1;
  941. }
  942.  
  943. stock udb_hash(buf[]) {
  944.     new length=strlen(buf);
  945.     new s1 = 1;
  946.     new s2 = 0;
  947.     new n;
  948.     for (n=0; n<length; n++)
  949.     {
  950.        s1 = (s1 + buf[n]) % 65521;
  951.        s2 = (s2 + s1)     % 65521;
  952.     }
  953.     return (s2 << 16) + s1;
  954. }
  955.  
  956. forward SavePlayer(playerid);
  957. public SavePlayer(playerid)
  958. {
  959.     new name[MAX_PLAYER_NAME], file[256];
  960.     GetPlayerName(playerid, name, sizeof(name));
  961.     format(file, sizeof(file), SERVER_USER_FILE, name);
  962.     if(gPlayerLogged[playerid] == 1)
  963.     {
  964.         new Float:x, Float:y, Float:z, Float:angle, Float:health, Float:armour, playerskin;
  965.         GetPlayerPos(playerid, x, y, z);
  966.         GetPlayerHealth(playerid,health);
  967.         GetPlayerArmour(playerid, armour);
  968.         GetPlayerFacingAngle(playerid, angle);
  969.  
  970.         dini_IntSet(file, "Money", PlayerInfo[playerid][pCash]);
  971.         dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][pAdminLevel]);
  972.         dini_IntSet(file, "JobID", PlayerInfo[playerid][pJobID]);
  973.         dini_IntSet(file, "Materials", PlayerInfo[playerid][pMaterials]);
  974.         dini_IntSet(file, "Packages", PlayerInfo[playerid][pPackages]);
  975.        
  976.         dini_IntSet(file, "VehicleType", PlayerInfo[playerid][pVehicleType]);
  977.         dini_FloatSet(file, "VehiclePosX", PlayerInfo[playerid][pVehiclePosX]);
  978.         dini_FloatSet(file, "VehiclePosY", PlayerInfo[playerid][pVehiclePosY]);
  979.         dini_FloatSet(file, "VehiclePosZ", PlayerInfo[playerid][pVehiclePosZ]);
  980.         dini_FloatSet(file, "VehicleAngle", PlayerInfo[playerid][pVehicleAngle]);
  981.  
  982.         dini_FloatSet(file, "Health",health);
  983.         dini_FloatSet(file, "Armour",armour);
  984.         dini_FloatSet(file, "PosX", x);
  985.         dini_FloatSet(file, "PosY", y);
  986.         dini_FloatSet(file, "PosAngle", angle);
  987.  
  988.         playerskin = GetPlayerSkin(playerid);
  989.         dini_IntSet(file, "Skin", playerskin);
  990.         return 1;
  991.     }
  992.     gPlayerLogged[playerid] = 0;
  993.     return 0;
  994. }
  995.  
  996. stock SetPlayerMoney(playerid, cash)
  997. {
  998.   ResetPlayerMoney(playerid);
  999.   return GivePlayerMoney(playerid, cash);
  1000. }
  1001.  
  1002. stock strreplace(string[], find, replace)
  1003. {
  1004.     for(new i=0; string[i]; i++)
  1005.     {
  1006.         if(string[i] == find)
  1007.         {
  1008.             string[i] = replace;
  1009.         }
  1010.     }
  1011. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement