Advertisement
Guest User

Motion RolePlay by Keemo (RageCraftLV)

a guest
Nov 29th, 2017
3,738
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 53.47 KB | None | 0 0
  1. //***************************************
  2. //          Motion RolePlay
  3. //             By Keemo
  4. //     Started 2017.11.25 23:09
  5. //***************************************
  6.  
  7. #include <a_samp>
  8. #include <a_mysql>
  9. //#include <nex-ac>
  10. #include <izcmd>
  11. #include <foreach>
  12. #include <sscanf2>
  13. #include <easyDialog>
  14. #include <log-plugin>
  15. #include <streamer>
  16.  
  17. #define SQL_HOST                        "127.0.0.1"             // MySQL server's host IP
  18. #define SQL_USER                        "root"                  // MySQL server's user name
  19. #define SQL_PASS                        ""                      // MySQL server's user password
  20. #define SQL_DB                          "motion"                // MySQL server's database name
  21.  
  22. #define SERVER_NAME                     "Motion RolePlay"
  23. #define SERVER_MODE                     "Motion RP"
  24. #define SERVER_VERSION                  "v0.1"
  25.  
  26. #define CMD_NOT_AVAILABLE               "You don't have access to this command!"
  27. #define PLAYER_NOT_ONLINE               "Specified player isn't online right now!"
  28. #define PLAYER_NOT_LOGGED               "Specified player hasn't logged in yet!"
  29. #define NOT_IN_VEHICLE                  "You are not in a vehicle!"
  30. #define NOT_ENOUGH_MONEY_BANK           "You don't have enough money on your bank account!"
  31. #define YOU_HAVE_A_HOUSE                "You already have a house!"
  32.  
  33. #define SECONDS_TO_LOGIN                (30)                    // Max allowed time for login before getting kicked
  34.  
  35. #define DEFAULT_POS_X                   (1958.3783)
  36. #define DEFAULT_POS_Y                   (1343.1572)
  37. #define DEFAULT_POS_Z                   (15.3746)
  38. #define DEFAULT_POS_A                   (270.1425)
  39.  
  40. #define MAX_HOUSES                      (300)
  41.  
  42. #define COLOR_LIGHTRED                  (0xFF6347AA)
  43. #define COLOR_ORANGE                    (0xFF9900FF)
  44. #define COLOR_GREY                      (0xAFAFAFAA)
  45. #define COLOR_PURPLE                    (0xC2A2DAAA)
  46. #define COLOR_FADE1                     (0xFFFFFFFF)
  47. #define COLOR_FADE2                     (0xC8C8C8C8)
  48. #define COLOR_FADE3                     (0xAAAAAAAA)
  49. #define COLOR_FADE4                     (0x8C8C8C8C)
  50. #define COLOR_FADE5                     (0x6E6E6E6E)
  51.  
  52. #if !defined IsValidVehicle
  53.      native IsValidVehicle(vehicleid);
  54. #endif
  55.  
  56. new
  57.     MySQL: g_SQL,
  58.     g_MysqlRaceCheck[MAX_PLAYERS];
  59.  
  60. new
  61.     String[2048],
  62.     query[1024];
  63.  
  64. new
  65.     gmLoaded = 0;
  66.  
  67. new
  68.     Logger: adminlog;
  69.  
  70. new
  71.     Iterator: admin_vehicle<MAX_VEHICLES-1>;
  72.  
  73. new
  74.     TOTAL_HOUSES,
  75.     TOTAL_PVEHICLES;
  76.  
  77. enum pData
  78. {
  79.     ID,
  80.     Name[MAX_PLAYER_NAME],
  81.     Password[65],
  82.     Salt[17],
  83.     Admin,
  84.     Skin,
  85.     Float: Health,
  86.     Float: Armor,
  87.     Money,
  88.     BankMoney,
  89.     Float: X_Pos,
  90.     Float: Y_Pos,
  91.     Float: Z_Pos,
  92.     Float: A_Pos,
  93.     Interior,
  94.     Cache: Cache_ID,
  95.     bool: LoggedIn,
  96.     LoginAttempts,
  97.     LoginTimer
  98. };
  99. new Player[MAX_PLAYERS][pData];
  100.  
  101. enum hInfo
  102. {
  103.     hID,
  104.     Float: hEntranceX,
  105.     Float: hEntranceY,
  106.     Float: hEntranceZ,
  107.     Float: hExitX,
  108.     Float: hExitY,
  109.     Float: hExitZ,
  110.     hOwner[MAX_PLAYER_NAME],
  111.     hClass[16],
  112.     hInterior,
  113.     hWorld,
  114.     hPrice,
  115.     hIcon,
  116.     hPickup,
  117.     hPickupExit
  118. };
  119. new House[MAX_HOUSES][hInfo];
  120.  
  121. enum vInfo
  122. {
  123.     vID,
  124.     vOwner[MAX_PLAYER_NAME],
  125.     vModel,
  126.     vColor_1,
  127.     vColor_2,
  128.     Float: vX,
  129.     Float: vY,
  130.     Float: vZ,
  131.     Float: vAngle,
  132.     vVehicle,
  133.     vLocked,
  134.     Float: vFuel,
  135.     vActive
  136. };
  137. new pVehicle[MAX_VEHICLES][vInfo];
  138.  
  139. main()
  140. {
  141.     print("\n_____________________________________");
  142.     print(" ");
  143.     print(" Starting Motion RolePlay "SERVER_VERSION"");
  144.     print(" By Keemo (RageCraftLV)");
  145.     print("_____________________________________\n");
  146. }
  147.  
  148. public OnGameModeInit()
  149. {
  150.     new MySQLOpt: option_id = mysql_init_options();
  151.  
  152.     mysql_set_option(option_id, AUTO_RECONNECT, true);
  153.  
  154.     g_SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB, option_id);
  155.     if (g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
  156.     {
  157.         print("MySQL connection failed. Server is shutting down.");
  158.         SendRconCommand("exit");
  159.         return 1;
  160.     }
  161.     print("MySQL connection is successful.");
  162.  
  163.     SetGameModeText(""SERVER_MODE" "SERVER_VERSION"");
  164.  
  165.     mysql_tquery(g_SQL, "SELECT * FROM `houses` ORDER BY  `houses`.`ID` ASC ", "LoadHouses", "");
  166.     mysql_tquery(g_SQL, "SELECT * FROM `vehicles` ORDER BY  `vehicles`.`ID` ASC ", "LoadPVehicles", "");
  167.  
  168.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  169.  
  170.     adminlog = CreateLog("admin", INFO);
  171.  
  172.     gmLoaded = 1;
  173.     return 1;
  174. }
  175.  
  176. public OnGameModeExit()
  177. {
  178.     for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  179.     {
  180.         if (IsPlayerConnected(i))
  181.         {
  182.             OnPlayerDisconnect(i, 1);
  183.         }
  184.     }
  185.     mysql_close(g_SQL);
  186.  
  187.     DestroyLog(adminlog);
  188.     return 1;
  189. }
  190.  
  191. public OnPlayerRequestClass(playerid, classid)
  192. {
  193.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  194.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  195.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerConnect(playerid)
  200. {
  201.     if(gmLoaded == 0)
  202.     {
  203.         SendClientMessage(playerid, -1, "Server is not running yet!");
  204.         Kick(playerid);
  205.     }
  206.     g_MysqlRaceCheck[playerid]++;
  207.  
  208.     static const empty_player[pData];
  209.     Player[playerid] = empty_player;
  210.  
  211.     GetPlayerRPName(playerid, Player[playerid][Name], MAX_PLAYER_NAME);
  212.  
  213.     mysql_format(g_SQL, query, 103, "SELECT * FROM `players` WHERE `Name` = '%e' LIMIT 1", pName(playerid));
  214.     mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, g_MysqlRaceCheck[playerid]);
  215.    
  216.     format(String, 100, "[A] %s [ID: %d] joined the server.", Player[playerid][Name], playerid);
  217.     SendAdminMessage(COLOR_LIGHTRED, String);
  218.     return 1;
  219. }
  220.  
  221. public OnPlayerDisconnect(playerid, reason)
  222. {
  223.     g_MysqlRaceCheck[playerid]++;
  224.  
  225.     UpdatePlayerData(playerid, reason);
  226.  
  227.     if (cache_is_valid(Player[playerid][Cache_ID]))
  228.     {
  229.         cache_delete(Player[playerid][Cache_ID]);
  230.         Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
  231.     }
  232.  
  233.     if (Player[playerid][LoginTimer])
  234.     {
  235.         KillTimer(Player[playerid][LoginTimer]);
  236.         Player[playerid][LoginTimer] = 0;
  237.     }
  238.  
  239.     Player[playerid][LoggedIn] = false;
  240.  
  241.     new disconnectReason[3][] =
  242.     {
  243.         "Timeout/Crash",
  244.         "Quit",
  245.         "Kick/Ban"
  246.     };
  247.  
  248.     format(String, 100, "[A] %s [ID: %d] left the server with reason: {FF9900}%s", Player[playerid][Name], disconnectReason[reason]);
  249.     SendAdminMessage(COLOR_LIGHTRED, String);
  250.     return 1;
  251. }
  252.  
  253. public OnPlayerSpawn(playerid)
  254. {
  255.     SetPlayerInterior(playerid, Player[playerid][Interior]);
  256.     SetPlayerPos(playerid, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos]);
  257.     SetPlayerFacingAngle(playerid, Player[playerid][A_Pos]);
  258.    
  259.     SetCameraBehindPlayer(playerid);
  260.     return 1;
  261. }
  262.  
  263. public OnPlayerDeath(playerid, killerid, reason)
  264. {
  265.     return 1;
  266. }
  267.  
  268. public OnVehicleSpawn(vehicleid)
  269. {
  270.     return 1;
  271. }
  272.  
  273. public OnVehicleDeath(vehicleid, killerid)
  274. {
  275.     return 1;
  276. }
  277.  
  278. public OnPlayerText(playerid, text[])
  279. {
  280.     format(String, 128, "%s says: %s", Player[playerid][Name], text);
  281.     SendLocalMessage(30.0, playerid, -1, String);
  282.     if(!IsPlayerInAnyVehicle(playerid)) ApplyAnimation(playerid, "PED", "IDLE_CHAT", 4.1, 0, 1, 1, 1, 1);
  283.     return 0;
  284. }
  285.  
  286. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  287. {
  288.     return 1;
  289. }
  290.  
  291. public OnPlayerExitVehicle(playerid, vehicleid)
  292. {
  293.     return 1;
  294. }
  295.  
  296. public OnPlayerStateChange(playerid, newstate, oldstate)
  297. {
  298.     return 1;
  299. }
  300.  
  301. public OnPlayerEnterCheckpoint(playerid)
  302. {
  303.     return 1;
  304. }
  305.  
  306. public OnPlayerLeaveCheckpoint(playerid)
  307. {
  308.     return 1;
  309. }
  310.  
  311. public OnPlayerEnterRaceCheckpoint(playerid)
  312. {
  313.     return 1;
  314. }
  315.  
  316. public OnPlayerLeaveRaceCheckpoint(playerid)
  317. {
  318.     return 1;
  319. }
  320.  
  321. public OnRconCommand(cmd[])
  322. {
  323.     return 1;
  324. }
  325.  
  326. public OnPlayerRequestSpawn(playerid)
  327. {
  328.     return 1;
  329. }
  330.  
  331. public OnObjectMoved(objectid)
  332. {
  333.     return 1;
  334. }
  335.  
  336. public OnPlayerObjectMoved(playerid, objectid)
  337. {
  338.     return 1;
  339. }
  340.  
  341. public OnPlayerPickUpPickup(playerid, pickupid)
  342. {
  343.     for(new idx = 1; idx <= TOTAL_HOUSES; idx++)
  344.     {
  345.         if(pickupid == House[idx][hPickup])
  346.         {
  347.             SetPVarInt(playerid, "PlayerHouse", idx);
  348.             if(!strcmp(House[idx][hOwner], "None", true))
  349.             {
  350.                 format(String, 256, "\
  351.                     House nr. %d\n\n\
  352.                     Price: %d$\n\
  353.                     Class: %s", idx, House[idx][hPrice], House[idx][hClass]);
  354.                 return Dialog_Show(playerid, BuyHouse, 0, "Buy house", String, "Buy", "Cancel");
  355.             }
  356.             else
  357.             {
  358.                 format(String, 256, "\
  359.                     House nr. %d\n\n\
  360.                     Owner: %s\n\
  361.                     Class: %s", idx, House[idx][hOwner], House[idx][hClass]);
  362.                 return Dialog_Show(playerid, EnterHouse, 0, "Buy house", String, "Enter", "Cancel");
  363.             }
  364.         }
  365.         if(pickupid == House[idx][hPickupExit])
  366.         {
  367.             SetPVarInt(playerid, "PlayerHouse", idx);
  368.             return Dialog_Show(playerid, ExitHouse, 0, "Exit house", "Do you want to exit your house?", "Yes", "No");
  369.         }
  370.     }
  371.     return 1;
  372. }
  373.  
  374. public OnVehicleMod(playerid, vehicleid, componentid)
  375. {
  376.     return 1;
  377. }
  378.  
  379. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  380. {
  381.     return 1;
  382. }
  383.  
  384. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  385. {
  386.     return 1;
  387. }
  388.  
  389. public OnPlayerSelectedMenuRow(playerid, row)
  390. {
  391.     return 1;
  392. }
  393.  
  394. public OnPlayerExitedMenu(playerid)
  395. {
  396.     return 1;
  397. }
  398.  
  399. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  400. {
  401.     return 1;
  402. }
  403.  
  404. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  405. {
  406.     return 1;
  407. }
  408.  
  409. public OnRconLoginAttempt(ip[], password[], success)
  410. {
  411.     return 1;
  412. }
  413.  
  414. public OnPlayerUpdate(playerid)
  415. {
  416.     return 1;
  417. }
  418.  
  419. public OnPlayerStreamIn(playerid, forplayerid)
  420. {
  421.     return 1;
  422. }
  423.  
  424. public OnPlayerStreamOut(playerid, forplayerid)
  425. {
  426.     return 1;
  427. }
  428.  
  429. public OnVehicleStreamIn(vehicleid, forplayerid)
  430. {
  431.     return 1;
  432. }
  433.  
  434. public OnVehicleStreamOut(vehicleid, forplayerid)
  435. {
  436.     return 1;
  437. }
  438.  
  439. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  440. {
  441.     return 1;
  442. }
  443.  
  444. forward OnPlayerDataLoaded(playerid, race_check);
  445. public OnPlayerDataLoaded(playerid, race_check)
  446. {
  447.     if (race_check != g_MysqlRaceCheck[playerid]) return Kick(playerid);
  448.  
  449.     if(cache_num_rows() > 0)
  450.     {
  451.         cache_get_value(0, "Password", Player[playerid][Password], 65);
  452.         cache_get_value(0, "Salt", Player[playerid][Salt], 17);
  453.  
  454.         Player[playerid][Cache_ID] = cache_save();
  455.  
  456.         format(String, 115, "This account %s is registered. Please login by entering your password in the field below:", Player[playerid][Name]);
  457.         Dialog_Show(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", String, "Login", "Abort");
  458.  
  459.         Player[playerid][LoginTimer] = SetTimerEx("OnLoginTimeout", SECONDS_TO_LOGIN * 1000, false, "d", playerid);
  460.     }
  461.     else
  462.     {
  463.         format(String, sizeof String, "Welcome %s, you can register by entering your password in the field below:", Player[playerid][Name]);
  464.         Dialog_Show(playerid, Register, DIALOG_STYLE_PASSWORD, "Registration", String, "Register", "Abort");
  465.     }
  466.     return 1;
  467. }
  468.  
  469. forward OnLoginTimeout(playerid);
  470. public OnLoginTimeout(playerid)
  471. {
  472.     Player[playerid][LoginTimer] = 0;
  473.    
  474.     Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Login", "You have been kicked for taking too long to login successfully to your account.", "Okay", "");
  475.     DelayedKick(playerid);
  476.     return 1;
  477. }
  478.  
  479. forward OnPlayerRegister(playerid);
  480. public OnPlayerRegister(playerid)
  481. {
  482.     Player[playerid][ID] = cache_insert_id();
  483.  
  484.     Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Registration", "Account successfully registered, you have been automatically logged in.", "Okay", "");
  485.  
  486.     Player[playerid][LoggedIn] = true;
  487.  
  488.     Player[playerid][X_Pos] = DEFAULT_POS_X;
  489.     Player[playerid][Y_Pos] = DEFAULT_POS_Y;
  490.     Player[playerid][Z_Pos] = DEFAULT_POS_Z;
  491.     Player[playerid][A_Pos] = DEFAULT_POS_A;
  492.    
  493.     SetSpawnInfo(playerid, NO_TEAM, 0, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
  494.     SpawnPlayer(playerid);
  495.     return 1;
  496. }
  497.  
  498. forward _KickPlayerDelayed(playerid);
  499. public _KickPlayerDelayed(playerid)
  500. {
  501.     Kick(playerid);
  502.     return 1;
  503. }
  504.  
  505. forward public LoadHouses();
  506. public LoadHouses()
  507. {
  508.     static rows;
  509.     cache_get_row_count(rows);
  510.     if(rows)
  511.     {
  512.         for(new idx = 1; idx <= rows; idx++)
  513.         {
  514.             cache_get_value_name_int(idx-1, "ID", House[idx][hID]);
  515.             cache_get_value_name_float(idx-1, "EntranceX", House[idx][hEntranceX]);
  516.             cache_get_value_name_float(idx-1, "EntranceY", House[idx][hEntranceY]);
  517.             cache_get_value_name_float(idx-1, "EntranceZ", House[idx][hEntranceZ]);
  518.             cache_get_value_name_float(idx-1, "ExitX", House[idx][hExitX]);
  519.             cache_get_value_name_float(idx-1, "ExitY", House[idx][hExitY]);
  520.             cache_get_value_name_float(idx-1, "ExitZ", House[idx][hExitZ]);
  521.             cache_get_value_name(idx-1, "Owner", House[idx][hOwner]);
  522.             cache_get_value_name_int(idx-1, "Interior", House[idx][hInterior]);
  523.             cache_get_value_name_int(idx-1, "World", House[idx][hWorld]);
  524.             cache_get_value_name_int(idx-1, "Price", House[idx][hPrice]);
  525.             if(!strcmp(House[idx][hOwner], "None", true))
  526.             {
  527.                 House[idx][hIcon] = CreateDynamicMapIcon(House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ], 31, 0, -1, -1, -1, 200.0);
  528.                 House[idx][hPickup] = CreatePickup(1273, 1, House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ]);
  529.             }
  530.             else
  531.             {
  532.                 House[idx][hIcon] = CreateDynamicMapIcon(House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ], 32, 0, -1, -1, -1, 200.0);
  533.                 House[idx][hPickup] = CreatePickup(1272, 1, House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ]);
  534.             }
  535.             House[idx][hPickupExit] = CreatePickup(19134, 1, House[idx][hExitX], House[idx][hExitY], House[idx][hExitZ], House[idx][hWorld]);
  536.             TOTAL_HOUSES++;
  537.         }
  538.     }
  539.     printf( "Loaded %d houses", TOTAL_HOUSES);
  540.     return 1;
  541. }
  542.  
  543. forward public LoadPVehicles();
  544. public LoadPVehicles()
  545. {
  546.     static rows;
  547.     cache_get_row_count(rows);
  548.     if(rows)
  549.     {
  550.         for(new idx = 1; idx <= rows; idx++)
  551.         {
  552.             cache_get_value_name_int(idx-1, "ID", pVehicle[idx][vID]);
  553.             cache_get_value_name(idx-1, "Owner", pVehicle[idx][vOwner]);
  554.             cache_get_value_name_int(idx-1, "Model", pVehicle[idx][vModel]);
  555.             cache_get_value_name_int(idx-1, "Color_1", pVehicle[idx][vColor_1]);
  556.             cache_get_value_name_int(idx-1, "Color_2", pVehicle[idx][vColor_2]);
  557.             cache_get_value_name_float(idx-1, "X", pVehicle[idx][vX]);
  558.             cache_get_value_name_float(idx-1, "Y", pVehicle[idx][vY]);
  559.             cache_get_value_name_float(idx-1, "Z", pVehicle[idx][vZ]);
  560.             cache_get_value_name_float(idx-1, "Angle", pVehicle[idx][vAngle]);
  561.             cache_get_value_name_int(idx-1, "Active", pVehicle[idx][vActive]);
  562.             if(pVehicle[idx][vActive] == 1)
  563.             {
  564.                 pVehicle[idx][vVehicle] = CreateVehicle(pVehicle[idx][vModel], pVehicle[idx][vX], pVehicle[idx][vY], pVehicle[idx][vZ], pVehicle[idx][vAngle], pVehicle[idx][vColor_1], pVehicle[idx][vColor_2], -1);
  565.                 TOTAL_PVEHICLES++;
  566.             }
  567.         }
  568.     }
  569.     printf( "Loaded %d player vehicles", TOTAL_PVEHICLES);
  570.     return 1;
  571. }
  572.  
  573. AssignPlayerData(playerid)
  574. {
  575.     cache_get_value_int(0, "ID", Player[playerid][ID]);
  576.  
  577.     cache_get_value_int(0, "Admin", Player[playerid][Admin]);
  578.     cache_get_value_int(0, "Skin", Player[playerid][Skin]);
  579.     cache_get_value_float(0, "Health", Player[playerid][Health]);
  580.     cache_get_value_float(0, "Armor", Player[playerid][Armor]);
  581.     cache_get_value_int(0, "Money", Player[playerid][Money]);
  582.     cache_get_value_int(0, "BankMoney", Player[playerid][BankMoney]);
  583.    
  584.     cache_get_value_float(0, "X", Player[playerid][X_Pos]);
  585.     cache_get_value_float(0, "Y", Player[playerid][Y_Pos]);
  586.     cache_get_value_float(0, "Z", Player[playerid][Z_Pos]);
  587.     cache_get_value_float(0, "Angle", Player[playerid][A_Pos]);
  588.     cache_get_value_int(0, "Interior", Player[playerid][Interior]);
  589.  
  590.     SetMoney(playerid, Player[playerid][Money]);
  591.     SetPlayerSkin(playerid, Player[playerid][Skin]);
  592.     SetHealth(playerid, Player[playerid][Health]);
  593.     SetArmor(playerid, Player[playerid][Armor]);
  594.     return 1;
  595. }
  596.  
  597. DelayedKick(playerid, time = 500)
  598. {
  599.     SetTimerEx("_KickPlayerDelayed", time, false, "d", playerid);
  600.     return 1;
  601. }
  602.  
  603. UpdatePlayerData(playerid, reason)
  604. {
  605.     if(Player[playerid][LoggedIn] == false) return 0;
  606.  
  607.     GetPlayerHealth(playerid, Player[playerid][Health]);
  608.     GetPlayerArmour(playerid, Player[playerid][Armor]);
  609.  
  610.     if(reason == 1)
  611.     {
  612.         GetPlayerPos(playerid, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos]);
  613.         GetPlayerFacingAngle(playerid, Player[playerid][A_Pos]);
  614.     }
  615.    
  616.     mysql_format(g_SQL, query, 250, "UPDATE `players` SET `Money` = %d, `BankMoney` = %d, `Health` = %f, `Armor` = %f, `X` = %f, `Y` = %f, `Z` = %f, `Angle` = %f, `Interior` = %d WHERE `ID` = %d LIMIT 1",
  617.         Player[playerid][Money],
  618.         Player[playerid][BankMoney],
  619.         Player[playerid][Health],
  620.         Player[playerid][Armor],
  621.         Player[playerid][X_Pos],
  622.         Player[playerid][Y_Pos],
  623.         Player[playerid][Z_Pos],
  624.         Player[playerid][A_Pos],
  625.         GetPlayerInterior(playerid),
  626.         Player[playerid][ID]);
  627.     mysql_tquery(g_SQL, query);
  628.     return 1;
  629. }
  630.  
  631. SendAdminMessage(color, str[])
  632. {
  633.     foreach(new i: Player)
  634.     {
  635.         if(!Player[i][LoggedIn]) continue;
  636.         if(Player[i][Admin] > 0) SendClientMessage(i, color, str);
  637.     }
  638.     return 1;
  639. }
  640.  
  641. SendErrorMessage(playerid, color, str[])
  642. {
  643.     format(String, 128, "[ERROR]: %s", str);
  644.     return SendClientMessage(playerid, color, String);
  645. }
  646.  
  647. SendSyntaxMessage(playerid, color, str[])
  648. {
  649.     format(String, 128, "[SYNTAX]: %s", str);
  650.     return SendClientMessage(playerid, color, String);
  651. }
  652.  
  653. SendLocalMessage(Float:radi, playerid, color, string[])
  654. {
  655.     new Float: X, Float: Y, Float: Z;
  656.     GetPlayerPos(playerid, X, Y, Z);
  657.     foreach(Player, i)
  658.     {
  659.         new Float: X2, Float: Y2, Float: Z2;
  660.         GetPlayerPos(i, X2, Y2, Z2);
  661.         if(IsPlayerInRangeOfPoint(i, radi, X, Y, Z)) { SendClientMessage(i, color, string); }
  662.     }
  663.     return 1;
  664. }
  665.  
  666. GetPlayerRPName(playerid, name[], len)
  667. {
  668.     GetPlayerName(playerid, name, len);
  669.     for(new i = 0; i < len; i++)
  670.     {
  671.         if (name[ i ] == '_')
  672.         name[i] = ' ';
  673.     }
  674. }
  675.  
  676. pName(playerid)
  677. {
  678.     new name[MAX_PLAYER_NAME];
  679.     GetPlayerName(playerid, name, sizeof name);
  680.     return name;
  681. }
  682.  
  683. UpdateHouse(idx)
  684. {
  685.     DestroyDynamicMapIcon(House[idx][hIcon]);
  686.     DestroyPickup(House[idx][hPickup]);
  687.     DestroyPickup(House[idx][hPickupExit]);
  688.     if(!strcmp(House[idx][hOwner], "None", true))
  689.     {
  690.         House[idx][hIcon] = CreateDynamicMapIcon(House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ], 31, 0,-1,-1,-1,200.0);
  691.         House[idx][hPickup] = CreatePickup(1273, 1, House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ]);
  692.     }
  693.     else
  694.     {
  695.         House[idx][hIcon] = CreateDynamicMapIcon(House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ], 32, 0,-1,-1,-1,200.0);
  696.         House[idx][hPickup] = CreatePickup(1272, 1, House[idx][hEntranceX], House[idx][hEntranceY], House[idx][hEntranceZ]);
  697.     }
  698.     House[idx][hPickupExit] = CreatePickup(19134, 1, House[idx][hExitX], House[idx][hExitY], House[idx][hExitZ], House[idx][hWorld]);
  699.     return 1;
  700. }
  701.  
  702. SetHealth(playerid, Float: health)
  703. {
  704.     Player[playerid][Health] = health;
  705.     SetPlayerHealth(playerid, health);
  706. }
  707.  
  708. SetArmor(playerid, Float: armor)
  709. {
  710.     Player[playerid][Armor] = armor;
  711.     SetPlayerArmour(playerid, armor);
  712. }
  713.  
  714. GiveMoney(playerid, money)
  715. {
  716.     Player[playerid][Money] += money;
  717.     GivePlayerMoney(playerid, money);
  718. }
  719.  
  720. SetMoney(playerid, money)
  721. {
  722.     Player[playerid][Money] = money;
  723.     ResetPlayerMoney(playerid);
  724.     GivePlayerMoney(playerid, money);
  725. }
  726.  
  727. ResetMoney(playerid)
  728. {
  729.     Player[playerid][Money] = 0;
  730.     ResetPlayerMoney(playerid);
  731. }
  732.  
  733. Dialog:Null(playerid, response, listitem, inputtext[]) return 1;
  734.  
  735. Dialog:Register(playerid, response, listitem, inputtext[])
  736. {
  737.     if(!response) return Kick(playerid);
  738.  
  739.     if(strlen(inputtext) <= 5) return Dialog_Show(playerid, Register, DIALOG_STYLE_PASSWORD, "Registration", "Your password must be longer than 5 characters!\nPlease enter your password in the field below:", "Register", "Abort");
  740.  
  741.     for(new i = 0; i < 16; i++) Player[playerid][Salt][i] = random(94) + 33;
  742.     SHA256_PassHash(inputtext, Player[playerid][Salt], Player[playerid][Password], 65);
  743.  
  744.     mysql_format(g_SQL, query, 221, "INSERT INTO `players` (`Name`, `Password`, `Salt`) VALUES ('%e', '%s', '%e')", pName(playerid), Player[playerid][Password], Player[playerid][Salt]);
  745.     mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
  746.     return 1;
  747. }
  748.  
  749. Dialog:Login(playerid, response, listitem, inputtext[])
  750. {
  751.     if(!response) return Kick(playerid);
  752.  
  753.     new hashed_pass[65];
  754.     SHA256_PassHash(inputtext, Player[playerid][Salt], hashed_pass, 65);
  755.  
  756.     if(strcmp(hashed_pass, Player[playerid][Password]) == 0)
  757.     {
  758.         Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Login", "You have been successfully logged in.", "Okay", "");
  759.  
  760.         cache_set_active(Player[playerid][Cache_ID]);
  761.  
  762.         AssignPlayerData(playerid);
  763.  
  764.         cache_delete(Player[playerid][Cache_ID]);
  765.         Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
  766.  
  767.         KillTimer(Player[playerid][LoginTimer]);
  768.         Player[playerid][LoginTimer] = 0;
  769.         Player[playerid][LoggedIn] = true;
  770.  
  771.         SetSpawnInfo(playerid, NO_TEAM, 0, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
  772.         SpawnPlayer(playerid);
  773.     }
  774.     else
  775.     {
  776.         Player[playerid][LoginAttempts]++;
  777.  
  778.         if (Player[playerid][LoginAttempts] >= 3)
  779.         {
  780.             Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Login", "You have mistyped your password too often (3 times).", "Okay", "");
  781.             DelayedKick(playerid);
  782.         }
  783.         else Dialog_Show(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", "Wrong password!\nPlease enter your password in the field below:", "Login", "Abort");
  784.     }
  785.     return 1;
  786. }
  787.  
  788. Dialog:ControlPanel(playerid, response, listitem, inputtext[])
  789. {
  790.     if(!response) return 1;
  791.     switch(listitem)
  792.     {
  793.         case 0: Dialog_Show(playerid, ChangeHostname, DIALOG_STYLE_INPUT, "Input hostname", "Please, input your desired hostname:", "Done", "Back");
  794.         case 1: Dialog_Show(playerid, SetPassword, DIALOG_STYLE_INPUT, "Input password", "(Set 0 for no password)\nPlease, input your desired servers password:", "Done", "Back");
  795.         case 2: Dialog_Show(playerid, ChangeMode, DIALOG_STYLE_INPUT, "Input mode", "Please, input your desired servers mode:", "Done", "Back");
  796.         case 3: Dialog_Show(playerid, ChangeLang, DIALOG_STYLE_INPUT, "Input language", "Please, input your desired servers language:", "Done", "Back");
  797.         case 4: SendRconCommand("gmx");
  798.     }
  799.     return 1;
  800. }
  801.  
  802. Dialog:ChangeHostname(playerid, response, listitem, inputtext[])
  803. {
  804.     if(!response) return Dialog_Show(playerid, ControlPanel, DIALOG_STYLE_LIST, "Server control panel", "\
  805.         Change server hostname\n\
  806.         Set servers password\n\
  807.         Change servers 'mode'\n\
  808.         Change servers 'language'\n\
  809.         Restart server", "OK", "Cancel");
  810.     new cmd[256];
  811.     format(cmd, sizeof cmd, "hostname %s", inputtext);
  812.     SendRconCommand(cmd);
  813.     format(String, 300, "You changed servers hostname to %s", cmd);
  814.     SendClientMessage(playerid, COLOR_ORANGE, String);
  815.     Log(adminlog, INFO, "Administrator %s changed servers hostname to %s", Player[playerid][Name], cmd);
  816.     return 1;
  817. }
  818.  
  819. Dialog:SetPassword(playerid, response, listitem, inputtext[])
  820. {
  821.     if(!response) return Dialog_Show(playerid, ControlPanel, DIALOG_STYLE_LIST, "Server control panel", "\
  822.         Change server hostname\n\
  823.         Set servers password\n\
  824.         Change servers 'mode'\n\
  825.         Change servers 'language'\n\
  826.         Restart server", "OK", "Cancel");
  827.     new cmd[64];
  828.     format(cmd, sizeof cmd, "password %s", inputtext);
  829.     SendRconCommand(cmd);
  830.     format(String, 300, "You set servers password to %s", cmd);
  831.     SendClientMessage(playerid, COLOR_ORANGE, String);
  832.     Log(adminlog, INFO, "Administrator %s set servers password to %s", Player[playerid][Name], cmd);
  833.     return 1;
  834. }
  835.  
  836. Dialog:ChangeMode(playerid, response, listitem, inputtext[])
  837. {
  838.     if(!response) return Dialog_Show(playerid, ControlPanel, DIALOG_STYLE_LIST, "Server control panel", "\
  839.         Change server hostname\n\
  840.         Set servers password\n\
  841.         Change servers 'mode'\n\
  842.         Change servers 'language'\n\
  843.         Restart server", "OK", "Cancel");
  844.     new cmd[32];
  845.     format(cmd, sizeof cmd, "gamemodetext %s", inputtext);
  846.     SendRconCommand(cmd);
  847.     format(String, 300, "You changed servers 'mode' to %s", cmd);
  848.     SendClientMessage(playerid, COLOR_ORANGE, String);
  849.     Log(adminlog, INFO, "Administrator %s changed servers 'mode' to %s", Player[playerid][Name], cmd);
  850.     return 1;
  851. }
  852.  
  853. Dialog:ChangeLang(playerid, response, listitem, inputtext[])
  854. {
  855.     if(!response) return Dialog_Show(playerid, ControlPanel, DIALOG_STYLE_LIST, "Server control panel", "\
  856.         Change server hostname\n\
  857.         Set servers password\n\
  858.         Change servers 'mode'\n\
  859.         Change servers 'language'\n\
  860.         Restart server", "OK", "Cancel");
  861.     new cmd[32];
  862.     format(cmd, sizeof cmd, "language %s", inputtext);
  863.     SendRconCommand(cmd);
  864.     format(String, 300, "You changed servers 'language' to %s", cmd);
  865.     SendClientMessage(playerid, COLOR_ORANGE, String);
  866.     Log(adminlog, INFO, "Administrator %s changed servers to %s", Player[playerid][Name], cmd);
  867.     return 1;
  868. }
  869.  
  870. Dialog:EnterHouse(playerid, response, listitem, inputtext[])
  871. {
  872.     if(response)
  873.     {
  874.         new idx = GetPVarInt(playerid, "PlayerHouse");
  875.         SetPlayerPos(playerid, House[idx][hExitX], House[idx][hExitY], House[idx][hExitZ]);
  876.         SetPlayerInterior(playerid, House[idx][hInterior]);
  877.         SetPlayerVirtualWorld(playerid, House[idx][hWorld]);
  878.     }
  879.     return 1;
  880. }
  881.  
  882. Dialog:ExitHouse(playerid, response, listitem, inputtext[])
  883. {
  884.     if(response)
  885.     {
  886.         new house = GetPVarInt(playerid, "PlayerHouse");
  887.         SetPlayerPos(playerid, House[house][hEntranceX], House[house][hEntranceY], House[house][hEntranceZ]);
  888.         SetPlayerInterior(playerid, 0);
  889.         SetPlayerVirtualWorld(playerid, 0);
  890.         return 1;
  891.     }
  892.     return 1;
  893. }
  894.  
  895. Dialog:BuyHouse(playerid, response, listitem, inputtext[]) {
  896.     if(response) {
  897.         new idx = GetPVarInt(playerid, "PlayerHouse");
  898.         if(Player[playerid][BankMoney] < House[idx][hPrice]) return SendErrorMessage(playerid, COLOR_GREY, NOT_ENOUGH_MONEY_BANK);
  899.         else
  900.         {
  901.             new house = 0;
  902.             for(new i = 1; i <= TOTAL_HOUSES; i++)
  903.             {
  904.                 if(!strcmp(House[i][hOwner], pName(playerid), true)) house++;
  905.             }
  906.             if(house != 0) return SendErrorMessage(playerid, COLOR_GREY, YOU_HAVE_A_HOUSE);
  907.             Player[playerid][BankMoney] -= House[idx][hPrice];
  908.             format(String, 32, "You bought a house!");
  909.             GameTextForPlayer(playerid, String, 3000, 5);
  910.             format(String, 256, "You bought a house for %d$! Money left in bank: %d$.", House[idx][hPrice], Player[playerid][BankMoney]);
  911.             SendClientMessage(playerid, -1, String);
  912.             strmid(House[idx][hOwner], pName(playerid), 0, strlen(pName(playerid)), MAX_PLAYER_NAME);
  913.             format(String, 256, "UPDATE `houses` SET Owner = '%s' WHERE ID = '%d' LIMIT 1", House[idx][hOwner], idx);
  914.             mysql_tquery(g_SQL, String, "", "");
  915.            
  916.             SetPlayerPos(playerid, House[idx][hExitX], House[idx][hExitY], House[idx][hExitZ]);
  917.             SetPlayerInterior(playerid, House[idx][hInterior]);
  918.             SetPlayerVirtualWorld(playerid, House[idx][hWorld]);
  919.             UpdateHouse(idx);
  920.             return true;
  921.         }
  922.     }
  923.     return 1;
  924. }
  925.  
  926. Dialog:AddMenu(playerid, response, listitem, inputtext[])
  927. {
  928.     if(response)
  929.     {
  930.         switch(listitem)
  931.         {
  932.             case 0:
  933.             {
  934.                 new String1[1000];
  935.                 strcat(String1,"\
  936.                 Syntax: price, number\n\n\
  937.                 Sample: 24000, 19\n\n");
  938.                 strcat(String1,"1. [Class: A]\t12. [Class: C]\t23. [Class: C]\t34. [Class: C]\n");
  939.                 strcat(String1,"2. [Class: C]\t13. [Class: C]\t24. [Class: B]\t35. [Class: C]\n");
  940.                 strcat(String1,"3. [Class: B]\t14. [Class: B]\t25. [Class: B]\n");
  941.                 strcat(String1,"4. [Class: D]\t15. [Class: C]\t26. [Class: D]\n");
  942.                 strcat(String1,"5. [Class: B]\t16. [Class: B]\t27. [Class: D]\n");
  943.                 strcat(String1,"6. [Class: B]\t17. [Class: B]\t28. [Class: D]\n");
  944.                 strcat(String1,"7. [Class: D]\t18. [Class: A]\t29. [Class: C]\n");
  945.                 strcat(String1,"8. [Class: B]\t19. [Class: C]\t30. [Class: A]\n");
  946.                 strcat(String1,"9. [Class: A]\t20. [Class: D]\t31. [Class: C]\n");
  947.                 strcat(String1,"10. [Class: B]\t21. [Class: A]\t32. [Class: C]\n");
  948.                 strcat(String1,"11. [Class: C]\t22. [Class: B]\t33. [Class: D]\n");
  949.                 Dialog_Show(playerid, AddHouse, 1, "Add house", String1, "Add", "Back");
  950.             }
  951.             case 1: return 1;
  952.         }
  953.     }
  954.     return 1;
  955. }
  956.  
  957. Dialog:AddHouse(playerid, response, listitem, inputtext[]) {
  958.     if(!response) return Dialog_Show(playerid, AddMenu, DIALOG_STYLE_LIST, "Add menu", "\
  959.             Add house\n\
  960.             Add bussiness", "OK", "Cancel");
  961.     new price, type, Float: X, Float: Y, Float: Z;
  962.     if(sscanf(inputtext,"p<,>ii", price, type))
  963.     {
  964.         new String1[1000];
  965.         strcat(String1,"\
  966.         Syntax: price, number\n\n\
  967.         Sample: 24000, 19\n\n");
  968.         strcat(String1,"1. [Class: A]\t12. [Class: C]\t23. [Class: C]\t34. [Class: C]\n");
  969.         strcat(String1,"2. [Class: C]\t13. [Class: C]\t24. [Class: B]\t35. [Class: C]\n");
  970.         strcat(String1,"3. [Class: B]\t14. [Class: B]\t25. [Class: B]\n");
  971.         strcat(String1,"4. [Class: D]\t15. [Class: C]\t26. [Class: D]\n");
  972.         strcat(String1,"5. [Class: B]\t16. [Class: B]\t27. [Class: D]\n");
  973.         strcat(String1,"6. [Class: B]\t17. [Class: B]\t28. [Class: D]\n");
  974.         strcat(String1,"7. [Class: D]\t18. [Class: A]\t29. [Class: C]\n");
  975.         strcat(String1,"8. [Class: B]\t19. [Class: C]\t30. [Class: A]\n");
  976.         strcat(String1,"9. [Class: A]\t20. [Class: D]\t31. [Class: C]\n");
  977.         strcat(String1,"10. [Class: B]\t21. [Class: A]\t32. [Class: C]\n");
  978.         strcat(String1,"11. [Class: C]\t22. [Class: B]\t33. [Class: D]\n");
  979.         return Dialog_Show(playerid, AddHouse, 1, "Add house", String1, "Add", "Back");
  980.     }
  981.     TOTAL_HOUSES++;
  982.     GetPlayerPos(playerid, X, Y, Z);
  983.     House[TOTAL_HOUSES][hEntranceX] = X;
  984.     House[TOTAL_HOUSES][hEntranceY] = Y;
  985.     House[TOTAL_HOUSES][hEntranceZ] = Z;
  986.     switch(type)
  987.     {
  988.         case 1: format(String, 90, "435.4139, 1315.7772, 1615.5118, A, 5");
  989.         case 2: format(String, 90, "-376.3782, 1026.7642, 1713.0265, C, 9");   
  990.         case 3: format(String, 90, "2163.3025, 2821.6401, 1716.2335, B, 6");   
  991.         case 4: format(String, 90, "-1181.7406, 2080.4648, 2741.2014, D, 15")
  992.         case 5: format(String, 90, "2237.5413, -1081.1516, 1049.04, B, 2");
  993.         case 6: format(String, 90, "24.0716, 1340.1615, 1084.3750, B, 10");
  994.         case 7: format(String, 90, "2259.5068, -1135.9337, 1050.6328, D, 10")
  995.         case 8: format(String, 90, "2196.8469, -1204.3524, 1049.0234, B, 6");  
  996.         case 9: format(String, 90, "2317.7983, -1026.7651, 1050.2178, A, 9");  
  997.         case 10: format(String, 90, "2365.3345, -1135.5907, 1050.8826, B, 8")
  998.         case 11: format(String, 90, "2282.8831, -1140.0713, 1050.8984, C, 11");
  999.         case 12: format(String, 90, "2218.3875, -1076.1580, 1050.4844, C, 1")
  1000.         case 13: format(String, 90, "-68.8411, 1351.3397, 1080.2109, C, 6");   
  1001.         case 14: format(String, 90, "-283.6001, 1471.2211, 1084.3750, B, 15")
  1002.         case 15: format(String, 90, "-42.5525, 1405.6432, 1084.4297, C, 8");   
  1003.         case 16: format(String, 90, "83.0791, 1322.2808, 1083.8662, B, 9");
  1004.         case 17: format(String, 90, "447.2238, 1397.2926, 1084.3047, B, 2");   
  1005.         case 18: format(String, 90, "235.2748, 1186.6809, 1080.2578, A, 3");   
  1006.         case 19: format(String, 90, "226.4436, 1239.9277, 1082.1406, C, 2");   
  1007.         case 20: format(String, 90, "244.0883, 305.0291, 999.1484, D, 1")
  1008.         case 21: format(String, 90, "226.2956, 1114.1615, 1080.9929, A, 5");   
  1009.         case 22: format(String, 90, "295.2479, 1472.2650, 1080.2578, B, 15");  
  1010.         case 23: format(String, 90, "261.1874, 1284.2982, 1080.2578, C, 4");   
  1011.         case 24: format(String, 90, "-260.4934, 1456.8430, 1084.3672, B, 4");  
  1012.         case 25: format(String, 90, "22.9848, 1403.3345, 1084.4370, B, 5");
  1013.         case 26: format(String, 90, "2468.2080, -1698.2988, 1013.5078, D, 2")
  1014.         case 27: format(String, 90, "266.9498, 304.9866, 999.1484, D, 2")
  1015.         case 28: format(String, 90, "422.3438, 2536.4980, 10.0000, D, 10");
  1016.         case 29: format(String, 90, "443.4504, 509.2181, 1001.4195, C, 12");   
  1017.         case 30: format(String, 90, "2324.3977, -1149.0601, 1050.7101, A, 12");
  1018.         case 31: format(String, 90, "2807.6919, -1174.2933, 1025.5703, C, 8")
  1019.         case 32: format(String, 90, "2233.6965, -1115.1270, 1050.8828, C, 5");
  1020.         case 33: format(String, 90, "221.7789, 1140.1970, 1082.6094, D, 4");
  1021.         case 34: format(String, 90, "387.1313, 1471.7137, 1080.1949, C, 15");
  1022.         case 35: format(String, 90, "377.1231, 1417.3163, 1081.3281, C, 15"); // [интерьер 4 звёздочный](меню) int 4
  1023.     }
  1024.     sscanf(String,"p<,>fffsi",
  1025.     House[TOTAL_HOUSES][hExitX],
  1026.     House[TOTAL_HOUSES][hExitY],
  1027.     House[TOTAL_HOUSES][hExitZ],
  1028.     House[TOTAL_HOUSES][hClass],
  1029.     House[TOTAL_HOUSES][hInterior]);
  1030.  
  1031.     House[TOTAL_HOUSES][hWorld] = TOTAL_HOUSES;
  1032.     House[TOTAL_HOUSES][hPrice] = price;
  1033.  
  1034.     strmid(House[TOTAL_HOUSES][hOwner], "None", 0, strlen("None"), MAX_PLAYER_NAME);
  1035.     House[TOTAL_HOUSES][hIcon] = CreateDynamicMapIcon(House[TOTAL_HOUSES][hEntranceX], House[TOTAL_HOUSES][hEntranceY], House[TOTAL_HOUSES][hEntranceZ], 31, 0, -1, -1, -1, 200.0);
  1036.     House[TOTAL_HOUSES][hPickup] = CreatePickup(1273,1, House[TOTAL_HOUSES][hEntranceX], House[TOTAL_HOUSES][hEntranceY], House[TOTAL_HOUSES][hEntranceZ]);
  1037.     House[TOTAL_HOUSES][hPickupExit] = CreatePickup(19134, 1, House[TOTAL_HOUSES][hExitX], House[TOTAL_HOUSES][hExitY], House[TOTAL_HOUSES][hExitZ], House[TOTAL_HOUSES][hWorld]);
  1038.  
  1039.     format(String, 512, "INSERT INTO `houses` (ID, EntranceX, EntranceY, EntranceZ, ExitX, ExitY, ExitZ, Class, Price, Interior, World)\
  1040.     VALUES (%d, '%f', '%f', '%f', '%f', '%f', '%f', '%s', %d, %d, %d)",
  1041.     TOTAL_HOUSES,
  1042.     House[TOTAL_HOUSES][hEntranceX],
  1043.     House[TOTAL_HOUSES][hEntranceY],
  1044.     House[TOTAL_HOUSES][hEntranceZ],
  1045.     House[TOTAL_HOUSES][hExitX],
  1046.     House[TOTAL_HOUSES][hExitY],
  1047.     House[TOTAL_HOUSES][hExitZ],
  1048.     House[TOTAL_HOUSES][hClass],
  1049.     House[TOTAL_HOUSES][hPrice],
  1050.     House[TOTAL_HOUSES][hInterior],
  1051.     House[TOTAL_HOUSES][hWorld]);
  1052.     mysql_tquery(g_SQL, String, "", "");
  1053.     format(String, 64, "House nr. %d created", TOTAL_HOUSES);
  1054.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1055.     return 1;
  1056. }
  1057.  
  1058. Dialog:Teleports(playerid, response, listitem, inputtext[])
  1059. {
  1060.     if(!response) return 1;
  1061.     switch(listitem)
  1062.     {
  1063.         case 0: Dialog_Show(playerid, LS_Teleports, DIALOG_STYLE_LIST, "Los Santos teleports", "\
  1064.             Unity station\n\
  1065.             Airport\n\
  1066.             Bank\n\
  1067.             Car dealership\n\
  1068.             Hospital\n\
  1069.             Police departament\n\
  1070.             Docks", "Choose", "Back");
  1071.         case 1: Dialog_Show(playerid, SF_Teleports, DIALOG_STYLE_LIST, "San Fierro teleports", "\
  1072.             Train station\n\
  1073.             Car dealership\n\
  1074.             Bank\n\
  1075.             Hospital\n\
  1076.             Police departament\n\
  1077.             Docks", "Choose", "Back");
  1078.         case 2: Dialog_Show(playerid, LV_Teleports, DIALOG_STYLE_LIST, "Las Venturas teleports", "\
  1079.             Train station\n\
  1080.             Car dealership\n\
  1081.             Bank\n\
  1082.             Casino Four Dragons\n\
  1083.             FBI\n\
  1084.             Hospital", "Choose", "Back");
  1085.     }
  1086.     return 1;
  1087. }
  1088.  
  1089. Dialog:LS_Teleports(playerid, response, listitem, inputtext[])
  1090. {
  1091.     if(!response) return Dialog_Show(playerid, Teleports, DIALOG_STYLE_LIST, "Teleports", "\
  1092.         Los Santos\n\
  1093.         San Fierro\n\
  1094.         Las Venturas", "OK", "Cancel");
  1095.     new Float: X, Float: Y, Float: Z;
  1096.     switch(listitem)
  1097.     {
  1098.         case 0: X = 1792.6862, Y = -1924.5055, Z = 13.3904;     // Unity station
  1099.         case 1: X = 1681.5308, Y = -2319.1914, Z = 13.3828;     // Airport
  1100.         case 2: X = 1749.5062, Y = -1668.5699, Z = 13.3828;     // Bank
  1101.         case 3: X = 558.0125, Y = -1243.7642, Z = 17.0432;      // Car dealership
  1102.         case 4: X = 1201.1337, Y = -1327.0913, Z = 13.3984;     // Hospital
  1103.         case 5: X = 1529.3977, Y = -1671.9962, Z = 13.3828;     // Police departament
  1104.         case 6: X = 2320.9243, Y = -2336.6333, Z = 13.3828;     // Docks
  1105.     }
  1106.     if(GetPlayerState(playerid) == 2) SetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
  1107.     else SetPlayerPos(playerid, X, Y, Z);
  1108.     SetPlayerInterior(playerid, 0);
  1109.     SetPlayerVirtualWorld(playerid, 0);
  1110.     return 1;
  1111. }
  1112.  
  1113. Dialog:SF_Teleports(playerid, response, listitem, inputtext[])
  1114. {
  1115.     if(!response) return Dialog_Show(playerid, Teleports, DIALOG_STYLE_LIST, "Teleports", "\
  1116.         Los Santos\n\
  1117.         San Fierro\n\
  1118.         Las Venturas", "OK", "Cancel");
  1119.     new Float: X, Float: Y, Float: Z;
  1120.     switch(listitem)
  1121.     {
  1122.         case 0: X = -1990.0402, Y = 136.6163, Z = 27.5391;      // Train station
  1123.         case 1: X = -2004.2463, Y = 293.7323, Z = 34.3055;      // Car dealership
  1124.         case 2: X = -2003.5768, Y = 472.4563, Z = 35.0156;      // Bank
  1125.         case 3: X = 0, Y = 0, Z = 0;                            // Airport
  1126.         case 4: X = -2669.4023, Y = 588.1659, Z = 14.4531;      // Hospital
  1127.         case 5: X = -1600.3721, Y = 725.8822, Z = 10.8759;      // Police departament
  1128.         case 6: X = -1742.4924, Y = -91.5269, Z = 3.5547;       // Docks
  1129.     }
  1130.     if(GetPlayerState(playerid) == 2) SetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
  1131.     else SetPlayerPos(playerid, X, Y, Z);
  1132.     SetPlayerInterior(playerid, 0);
  1133.     SetPlayerVirtualWorld(playerid, 0);
  1134.     return 1;
  1135. }
  1136.  
  1137. Dialog:LV_Teleports(playerid, response, listitem, inputtext[])
  1138. {
  1139.     if(!response) return Dialog_Show(playerid, Teleports, DIALOG_STYLE_LIST, "Teleports", "\
  1140.         Los Santos\n\
  1141.         San Fierro\n\
  1142.         Las Venturas", "OK", "Cancel");
  1143.     new Float: X, Float: Y, Float: Z;
  1144.     switch(listitem)
  1145.     {
  1146.         case 0: X = 2809.0369, Y = 1280.9080, Z = 10.7500;      // Train station
  1147.         case 1: X = 0, Y = 0, Z = 0;                            // Car dealership
  1148.         case 2: X = 2039.6333, Y = 1913.1333, Z = 12.170;       // Bank
  1149.         case 3: X = 2039.8375, Y = 1009.5300, Z = 10.6719;      // Casino Four Dragons
  1150.         case 4: X = 2289.5801, Y = 2418.1296, Z = 11.1030;      // FBI
  1151.         case 5: X = 2127.9524, Y = 2349.3767, Z = 10.6719;      // Hospital
  1152.     }
  1153.     if(GetPlayerState(playerid) == 2) SetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
  1154.     else SetPlayerPos(playerid, X, Y, Z);
  1155.     SetPlayerInterior(playerid, 0);
  1156.     SetPlayerVirtualWorld(playerid, 0);
  1157.     return 1;
  1158. }
  1159.  
  1160. // 1337 ADMIN COMMANDS
  1161.  
  1162. CMD:setadmin(playerid, params[])
  1163. {
  1164.     if(Player[playerid][LoggedIn] == false) return 1;
  1165.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1166.     if(Player[playerid][Admin] < 1337 || !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, COLOR_GREY, "Command available only to LVL 1337 admins!");
  1167.     if(sscanf(params, "ud", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/setadmin [Player's ID/Name] [Admin LVL]");
  1168.     if(params[0] == playerid) return SendErrorMessage(playerid, COLOR_GREY, "You cannot set your own admin lvl!");
  1169.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1170.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1171.     if(params[1] > 1337 || params[1] < 0) return SendErrorMessage(playerid, COLOR_GREY, "Admin LVL from 0 to 1337!");
  1172.     Player[params[0]][Admin] = params[1];
  1173.     format(String, 128, "You just set %s admin level to %d.", Player[params[0]][Name], params[1]);
  1174.     format(String, 128, "Administrator %s set your admin level to %d.", Player[playerid][Name], params[1]);
  1175.     SendClientMessage(params[0], COLOR_ORANGE, String);
  1176.     mysql_format(g_SQL, query, 145, "UPDATE `players` SET `Admin` = %d WHERE `ID` = %d LIMIT 1", params[1]);
  1177.     mysql_tquery(g_SQL, query);
  1178.     Log(adminlog, INFO, "Administrator %s set %s admin level to %d", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1179.     return 1;
  1180. }
  1181.  
  1182. CMD:cp(playerid, params[]) return cmd_controlpanel(playerid, params);
  1183. CMD:controlpanel(playerid, params[])
  1184. {
  1185.     if(Player[playerid][LoggedIn] == false) return 1;
  1186.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1187.     if(Player[playerid][Admin] < 1337 || !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, COLOR_GREY, "Command available only to LVL 1337 admins!");
  1188.     Dialog_Show(playerid, ControlPanel, DIALOG_STYLE_LIST, "Server control panel", "\
  1189.         Change server hostname\n\
  1190.         Set servers password\n\
  1191.         Change servers 'mode'\n\
  1192.         Change servers 'language'\n\
  1193.         Restart server", "OK", "Cancel");
  1194.     return 1;
  1195. }
  1196.  
  1197. CMD:add(playerid, params[])
  1198. {
  1199.     if(Player[playerid][LoggedIn] == false) return 1;
  1200.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1201.     if(Player[playerid][Admin] < 1337 || !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, COLOR_GREY, "Command available only to LVL 1337 admins!");
  1202.     Dialog_Show(playerid, AddMenu, DIALOG_STYLE_LIST, "Add menu", "\
  1203.         Add house\n\
  1204.         Add bussiness", "OK", "Cancel");
  1205.     return 1;
  1206. }
  1207.  
  1208. CMD:resetmoney(playerid, params[])
  1209. {
  1210.     if(Player[playerid][LoggedIn] == false) return 1;
  1211.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1212.     if(Player[playerid][Admin] < 1337 || !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, COLOR_GREY, "Command available only to LVL 1337 admins!");
  1213.     if(sscanf(params, "u", params[0])) return SendSyntaxMessage(playerid, -1, "/resetmoney [Player's ID/Name]");
  1214.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, -1, PLAYER_NOT_ONLINE);
  1215.     ResetMoney(params[0]);
  1216.     format(String, 128, "You just reseted %s money!", Player[params[0]][Name]);
  1217.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1218.     format(String, 128, "Administrator %s just reseted your money!", Player[playerid][Name]);
  1219.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1220.     Log(adminlog, INFO, "Administrator %s reseted %s money", Player[playerid][Name], Player[params[0]][Name]);
  1221.     return 1;
  1222. }
  1223.  
  1224. CMD:givemoney(playerid, params[])
  1225. {
  1226.     if(Player[playerid][LoggedIn] == false) return 1;
  1227.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1228.     if(Player[playerid][Admin] < 1337 || !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, COLOR_GREY, "Command available only to LVL 1337 admins!");
  1229.     if(sscanf(params, "ui", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/givemoney [Player's ID/Name] [Amount of money]");
  1230.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1231.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1232.     if(params[1] < 0 || params[1] > 20000000) return SendErrorMessage(playerid, COLOR_GREY, "Amount of money from 0 to 20'000'000!");
  1233.     GiveMoney(params[0], params[1]);
  1234.     format(String, 128, "You just gave %s %d dollars!", Player[params[0]], params[1]);
  1235.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1236.     format(String, 256, "Administrator %s just gave you %d dollars!", Player[playerid][Name], params[1]);
  1237.     Log(adminlog, INFO, "Administrator %s just gave %s %d dollars", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1238.     return 1;
  1239. }
  1240.  
  1241. // ADMIN COMMANDS
  1242.  
  1243. CMD:o(playerid, params[])
  1244. {
  1245.     if(Player[playerid][LoggedIn] == false) return 1;
  1246.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1247.     if(isnull(params)) return SendSyntaxMessage(playerid, -1, "/o [Message]");
  1248.     format(String, 100, "[A] %s: %s", Player[playerid][Name], params[0]);
  1249.     SendClientMessageToAll(-1, String);
  1250.     return 1;
  1251. }
  1252.  
  1253. CMD:kick(playerid, params[])
  1254. {
  1255.     if(Player[playerid][LoggedIn] == false) return 1;
  1256.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1257.     if(sscanf(params, "us[32]", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/kick [Player's ID/Name] [Reason]");
  1258.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1259.     format(String, 128, "Administrator %s kicked %s out of server with reason: %s", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1260.     SendClientMessageToAll(COLOR_LIGHTRED, String);
  1261.     SendClientMessage(playerid, COLOR_ORANGE, "Please, obey the server rules!");
  1262.     SendClientMessage(playerid, COLOR_ORANGE, "After a few kicks you can receive a ban!");
  1263.     Kick(params[1]);
  1264.     Log(adminlog, INFO, "Administrator %s kicked %s with reason: %s", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1265.     return 1;
  1266. }
  1267.  
  1268. CMD:setskin(playerid, params[])
  1269. {
  1270.     if(Player[playerid][LoggedIn] == false) return 1;
  1271.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1272.     if(sscanf(params, "ui", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/setskin [Player's ID/Name] [Reason]");
  1273.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1274.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1275.     if(params[1] < 0 || params[1] > 311) return SendErrorMessage(playerid, COLOR_GREY, "Skin ID from 0 to 311!");
  1276.     SetPlayerSkin(params[0], params[1]);
  1277.     format(String, 100, "You just set %s skin to ID %d", Player[params[0]][Name], params[1]);
  1278.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1279.     format(String, 100, "Administrator %s set your skin to ID %d", Player[playerid][Name], params[1]);
  1280.     SendClientMessage(params[0], COLOR_ORANGE, String);
  1281.     mysql_format(g_SQL, query, 145, "UPDATE `players` SET `Skin` = %d WHERE `ID` = %d LIMIT 1", params[1]);
  1282.     mysql_tquery(g_SQL, query);
  1283.     Log(adminlog, INFO, "Administrator %s set %s skin to ID %d", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1284.     return 1;
  1285. }
  1286.  
  1287. CMD:veh(playerid, params[])
  1288. {
  1289.     if(Player[playerid][LoggedIn] == false) return 1;
  1290.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1291.     if(GetPlayerInterior(playerid) > 0) return SendErrorMessage(playerid, COLOR_GREY, "You cannot spawn a vehicle in interior!");
  1292.     if(sscanf(params, "iii", params[0], params[1], params[2])) return SendSyntaxMessage(playerid, -1, "/veh [Vehicle's ID] [Color 1] [Color 2]");
  1293.     if(params[0] < 400 || params[0] > 611) return SendErrorMessage(playerid, COLOR_GREY, "Vehicle's ID from 400 to 611!");
  1294.     if(params[1] < 0 || params[1] > 255) return SendErrorMessage(playerid, COLOR_GREY, "Color 1 from 0 to 255!");
  1295.     if(params[2] < 0 || params[2] > 255) return SendErrorMessage(playerid, COLOR_GREY, "Color 2 from 0 to 255!");
  1296.     new Float: X, Float: Y, Float: Z;
  1297.     GetPlayerPos(playerid, X, Y, Z);
  1298.     new vehID = CreateVehicle(params[0], X, Y, Z, 0.0, params[1], params[2], -1);
  1299.     SetVehicleVirtualWorld(vehID, GetPlayerVirtualWorld(playerid));
  1300.     Iter_Add(admin_vehicle, vehID);
  1301.     PutPlayerInVehicle(playerid, vehID, 0);
  1302.     Log(adminlog, INFO, "Administrator %s spawned vehicle ID %d. (Model: %d)", Player[playerid][Name], vehID, params[0]);
  1303.     return 1;
  1304. }
  1305.  
  1306. CMD:delveh(playerid, params[])
  1307. {
  1308.     if(Player[playerid][LoggedIn] == false) return 1;
  1309.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1310.     if(!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, COLOR_GREY, NOT_IN_VEHICLE);
  1311.     new vehID = GetPlayerVehicleID(playerid);
  1312.     new vehModel = GetVehicleModel(vehID);
  1313.     if(!Iter_Contains(admin_vehicle, vehID)) return SendErrorMessage(playerid, COLOR_GREY, "This vehicle wasn't spawned by any admin!");
  1314.     if(IsValidVehicle(vehID)) DestroyVehicle(vehID);
  1315.     Iter_Remove(admin_vehicle, playerid);
  1316.     SendClientMessage(playerid, -1, "Vehicle destroyed!");
  1317.     Log(adminlog, INFO, "Administrator %s destroyed admin vehicle ID %d. (Model: %d)", Player[playerid][Name], vehID, vehModel);
  1318.     return 1;
  1319. }
  1320.  
  1321. CMD:delallveh(playerid, params[])
  1322. {
  1323.     if(Player[playerid][LoggedIn] == false) return 1;
  1324.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1325.     if(Player[playerid][Admin] < 6) return SendErrorMessage(playerid, COLOR_GREY, "Command available only to 6+ lvl administrators.");
  1326.     foreach(new i: admin_vehicle)
  1327.     {
  1328.         if(IsValidVehicle(i))
  1329.         {
  1330.             DestroyVehicle(i);
  1331.         }
  1332.     }
  1333.     Iter_Clear(admin_vehicle);
  1334.     Log(adminlog, INFO, "Administrator %s destroyed all admin vehicles", Player[playerid][Name]);
  1335.     return 1;
  1336. }
  1337.  
  1338. CMD:sethp(playerid, params[])
  1339. {
  1340.     if(Player[playerid][LoggedIn] == false) return 1;
  1341.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1342.     if(sscanf(params, "ui", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/sethp [Player's ID/Name] [Amount of HP]");
  1343.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1344.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1345.     SetHealth(params[0], params[1]);
  1346.     format(String, 128, "You just set %s HP to %d.", Player[params[0]], params[1]);
  1347.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1348.     format(String, 256, "Administrator %s just set your HP to %d.", Player[playerid][Name], params[1]);
  1349.     SendClientMessage(params[0], COLOR_ORANGE, String);
  1350.     Log(adminlog, INFO, "Administrator %s set %s HP to %d", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1351.    
  1352.  
  1353.     return 1;
  1354. }
  1355.  
  1356. CMD:setarmor(playerid, params[])
  1357. {
  1358.     if(Player[playerid][LoggedIn] == false) return 1;
  1359.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1360.     if(sscanf(params, "ui", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/setarmor [Player's ID/Name] [Amount of HP]");
  1361.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1362.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1363.     SetArmor(params[0], params[1]);
  1364.     format(String, 128, "You just set %s armor to %d.", Player[params[0]], params[1]);
  1365.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1366.     format(String, 256, "Administrator %s just set your armor to %d.", Player[playerid][Name], params[1]);
  1367.     SendClientMessage(params[0], COLOR_ORANGE, String);
  1368.     Log(adminlog, INFO, "Administrator %s set %s armor to %d", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1369.     return 1;
  1370. }
  1371.  
  1372. CMD:setinterior(playerid, params[]) return cmd_setint(playerid, params);
  1373. CMD:setint(playerid, params[])
  1374. {
  1375.     if(Player[playerid][LoggedIn] == false) return 1;
  1376.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1377.     if(sscanf(params, "ui", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/setint [Player's ID/Name] [Interior]");
  1378.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1379.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1380.     if(params[1] < 0 || params[1] > 50) return SendErrorMessage(playerid, COLOR_GREY, "Interior from 0 to 50!");
  1381.     SetPlayerInterior(params[0], params[1]);
  1382.     format(String, 128, "You set %s interior to %d.", Player[params[0]][Name], params[1]);
  1383.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1384.     format(String, 128, "Administrator %s just set your interior to %d.", Player[playerid][Name], params[1]);
  1385.     SendClientMessage(params[0], COLOR_ORANGE, String);
  1386.     Log(adminlog, INFO, "Administrator %s set %s interior to %d", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1387.     return 1;
  1388. }
  1389.  
  1390. CMD:setvirtualworld(playerid, params[]) return cmd_setvw(playerid, params);
  1391. CMD:setvw(playerid, params[])
  1392. {
  1393.     if(Player[playerid][LoggedIn] == false) return 1;
  1394.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1395.     if(sscanf(params, "ui", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/setvw [Player's ID/Name] [Virtual World]");
  1396.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1397.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1398.     if(params[1] < 0 || params[1] > 50) return SendErrorMessage(playerid, COLOR_GREY, "Virtual World from 0 to 50!");
  1399.     SetPlayerVirtualWorld(params[0], params[1]);
  1400.     format(String, 128, "You set %s interior to %d.", Player[params[0]][Name], params[1]);
  1401.     SendClientMessage(playerid, COLOR_ORANGE, String);
  1402.     format(String, 128, "Administrator %s just set your interior to %d.", Player[playerid][Name], params[1]);
  1403.     SendClientMessage(params[0], COLOR_ORANGE, String);
  1404.     Log(adminlog, INFO, "Administrator %s set %s interior to %d", Player[playerid][Name], Player[params[0]][Name], params[1]);
  1405.     return 1;
  1406. }
  1407.  
  1408. CMD:tp(playerid, params[]) return cmd_teleports(playerid, params);
  1409. CMD:teles(playerid, params[]) return cmd_teleports(playerid, params);
  1410. CMD:teleport(playerid, params[]) return cmd_teleports(playerid, params);
  1411. CMD:teleports(playerid, params[])
  1412. {
  1413.     if(Player[playerid][LoggedIn] == false) return 1;
  1414.     if(Player[playerid][Admin] <= 0) return SendErrorMessage(playerid, COLOR_GREY, CMD_NOT_AVAILABLE);
  1415.     Dialog_Show(playerid, Teleports, DIALOG_STYLE_LIST, "Teleports", "\
  1416.         Los Santos\n\
  1417.         San Fierro\n\
  1418.         Las Venturas", "OK", "Cancel");
  1419.     return 1;
  1420. }
  1421.  
  1422. // PLAYER COMMANDS
  1423.  
  1424. CMD:b(playerid, params[])
  1425. {
  1426.     if(Player[playerid][LoggedIn] == false) return 1;
  1427.     if(sscanf(params, "s[128]", params[0])) return SendSyntaxMessage(playerid, -1, "/b [Message]");
  1428.     format(String, 128, "(( [OOC] %s: %s ))", Player[playerid][Name], params[0]);
  1429.     SendLocalMessage(30.0, playerid, COLOR_GREY, String);
  1430.     return 1;
  1431. }
  1432.  
  1433. CMD:me(playerid, params[])
  1434. {
  1435.     if(Player[playerid][LoggedIn] == false) return 1;
  1436.     if(isnull(params)) return SendSyntaxMessage(playerid, -1, "/me [Action]");
  1437.     format(String, 128, "* %s %s", Player[playerid][Name], params[0]);
  1438.     SendLocalMessage(30.0, playerid, COLOR_PURPLE, String);
  1439.     return 1;
  1440. }
  1441.  
  1442. CMD:do(playerid, params[])
  1443. {
  1444.     if(Player[playerid][LoggedIn] == false) return 1;
  1445.     if(isnull(params)) return SendSyntaxMessage(playerid, -1, "/do [Action]");
  1446.     format(String, 128, "* %s (%s)", params[0], Player[playerid][Name]);
  1447.     SendLocalMessage(30.0, playerid, COLOR_PURPLE, String);
  1448.     return 1;
  1449. }
  1450.  
  1451. CMD:s(playerid, params[]) return cmd_shout(playerid, params);
  1452. CMD:shout(playerid, params[])
  1453. {
  1454.     if(Player[playerid][LoggedIn] == false) return 1;
  1455.     if(isnull(params)) return SendSyntaxMessage(playerid, -1, "/(s)hout [Message]");
  1456.     format(String, 128, "%s shouts: %s", Player[playerid][Name], params[0]);
  1457.     SendLocalMessage(60.0, playerid, -1, String);
  1458.     return 1;
  1459. }
  1460.  
  1461. CMD:pm(playerid, params[])
  1462. {
  1463.     if(Player[playerid][LoggedIn] == false) return 1;
  1464.     if(sscanf(params, "us[64]", params[0], params[1])) return SendSyntaxMessage(playerid, -1, "/pm [Player's ID/Name] [Message]");
  1465.     //if(params[0] == playerid) return SendErrorMessage(playerid, COLOR_GREY, "You cannot send a personal message to yourself!");
  1466.     if(!IsPlayerConnected(params[0])) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_ONLINE);
  1467.     if(Player[params[0]][LoggedIn] == false) return SendErrorMessage(playerid, COLOR_GREY, PLAYER_NOT_LOGGED);
  1468.     format(String, 128, "[PM] To {FF6347}%s {FFFFFF}({FF6347}%d{FFFFFF}): %s", Player[params[0]][Name], params[0], params[1]);
  1469.     SendClientMessage(playerid, -1, String);
  1470.     format(String, 128, "[PM] From {FF6347}%s {FFFFFF}({FF6347}%d{FFFFFF}): %s", Player[playerid][Name], playerid, params[1]);
  1471.     SendClientMessage(params[0], -1, String);
  1472.     return 1;
  1473. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement