Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 54.49 KB | None | 0 0
  1. main() { }
  2.  
  3. // ======================== [ Инклуды ] ========================
  4.  
  5. #include <a_samp>
  6. #include <streamer>
  7. #include <a_mysql>
  8. #include <sscanf2>
  9. #include <dc_cmd>
  10. #include <foreach>
  11.  
  12. // ====================== [ Дефайны БД ] =======================
  13.  
  14. #define mysql_host "localhost"
  15. #define mysql_user "root"
  16. #define mysql_base "starlight-test"
  17. #define mysql_pass ""
  18.  
  19. // ======================== [ Дефайны ] ========================
  20.  
  21. #define publics%0(%1) forward%0(%1); public%0(%1)
  22. #define KickRak(%1) SetTimerEx("kick", 20, false, "i", %1)
  23. #define ShowGeoIpForPlayer(%1) SetTimerEx("ShowGeoIp", 5000, false, "i", %1)
  24. #define SCM SendClientMessage
  25. #define SPD ShowPlayerDialog
  26. #define DSI DIALOG_STYLE_INPUT
  27. #define DSM DIALOG_STYLE_MSGBOX
  28. #define DSP DIALOG_STYLE_PASSWORD
  29. #define DSL DIALOG_STYLE_LIST
  30. #define DSTH DIALOG_STYLE_TABLIST_HEADERS
  31. #define FloodChat if(flood_chat[playerid] > gettime()){SCM(playerid, COLOR_WHITE, "Не флуди!"); return 0;}
  32. #define FloodCMD if(flood_cmd[playerid] > gettime()){SCM(playerid, COLOR_WHITE, "Не флуди!"); return 0;}
  33. #define FloodRPChat if(flood_rpchat[playerid] > gettime()){SCM(playerid, COLOR_WHITE, "Не флуди!"); return 0;}
  34. #define FloodPickup if(flood_pickup[playerid] > gettime()) return 0;
  35.  
  36. // ========================= [ Цвета ] =========================
  37.  
  38. #define COLOR_BRANDBLUE1 0x0D286EAA
  39. #define COLOR_BRANDBLUE2 0x113691AA
  40. #define COLOR_BRANDBLUE3 0x617ABAAA
  41. #define COLOR_BRANDGREY1 0x919191AA
  42. #define COLOR_BRANDGREY2 0x6E6E6EAA
  43. #define COLOR_BRANDGREY3 0x9E9E9EAA
  44. #define COLOR_BRANDRED1 0x6E1F0DAA
  45. #define COLOR_BRANDRED2 0x912911AA
  46. #define COLOR_RED 0xAA3333AA
  47. #define COLOR_WHITE 0xFFFFFFAA
  48. #define COLOR_GREY 0xF696969A
  49. #define COLOR_YELLOW 0xFFFF00AA
  50. #define COLOR_GREEN 0x9EC73DAA
  51. #define COLOR_PINK 0xFFC0CBAA
  52. #define COLOR_YELLOW 0xFFFF00AA
  53. #define COLOR_WHITE 0xFFFFFFAA
  54. #define COLOR_BLUE 0x0000BBAA
  55. #define COLOR_LIGHTBLUE 0x33CCFFAA
  56. #define COLOR_ORANGE 0xFF9900AA
  57. #define COLOR_BLACK 0x000000AA
  58. #define TEAM_GROVE_COLOR 0x00D900C8
  59. #define COLOR_GOLD 0xB8860BAA
  60. #define COLOR_RPCHAT 0xDD90FFFF
  61. #define COLOR_LIGHTRED 0xFF6347AA
  62.  
  63. // ================= [ Глобальные переменные ] =================
  64.  
  65. new MySQL: db_connect;
  66. enum pInfo
  67. {
  68.     pID,
  69.     pName,
  70.     pPass,
  71.     pLogin,
  72.     pReg,
  73.     pMail[40],
  74.     pRefer[32],
  75.     pSex,
  76.     pSpawn,
  77.     pSkin,
  78.     pRegDate,
  79.     pRegIp,
  80.     pLastIp,
  81.     pLastDate,
  82.     pLevel,
  83.     pExp,
  84.     pExpUp,
  85.     pMoney,
  86.     pIp,
  87.     pLastEnter,
  88.     pJob
  89. }
  90.  
  91. new PlayerInfo[MAX_PLAYERS][pInfo];
  92.  
  93. new RegFemaleSkins[] = {
  94.     9,
  95.     12,
  96.     31,
  97.     39,
  98.     40,
  99.     41,
  100.     55,
  101.     56,
  102.     69,
  103.     88,
  104.     148,
  105.     226,
  106. };
  107.  
  108. new RegMaleSkins[] = {
  109.     7,
  110.     20,
  111.     29,
  112.     30,
  113.     32,
  114.     43,
  115.     60,
  116.     66,
  117.     95,
  118.     98,
  119.     119,
  120.     136,
  121. };
  122.  
  123. new RegMaleBomjSkins[] = {
  124.     134,
  125.     135,
  126.     137,
  127.     78,
  128.     79,
  129.     230,
  130.     239,
  131. };
  132.  
  133. new RegFemaleBomjSkins[] = {
  134.     77,
  135.     53,
  136.     154,
  137.     10,
  138. };
  139.  
  140. new bool: Login[MAX_PLAYERS];
  141. new flood_cmd[MAX_PLAYERS];
  142. new flood_rpchat[MAX_PLAYERS];
  143. new flood_chat[MAX_PLAYERS];
  144. new flood_pickup[MAX_PLAYERS];
  145.  
  146.  
  147. new Rules1[11][] = {
  148.     {"{AA3333}I.  Игровой процесс.\n"},
  149.     {"  {617ABA}1. Сервер Starlight RP позиционирует себя как Role Play сервер, поэтому соблюдение RP обязательно.\n"},
  150.     {"  {617ABA}2. Запрещено:\n"},
  151.     {"  {919191}-Использование модов/программ/скриптов/читов, которые дают преимущества одним игрокам над другими.\n"},
  152.     {"  {919191}-Использование недоработок сервера/самой игры для получения преимущества над другими игроками.\n"},
  153.     {"  {919191}-Совершать Non-RP действия (Более подробно описаны ниже).\n"},
  154.     {"  {919191}-Вымогательство персональных данных других игроков.\n"},
  155.     {"  {919191}-Создавать финансовые пирамиды.\n"},
  156.     {"  {919191}-Выдавать себя за администратора проекта.\n"},
  157.     {"  {919191}-Мешать администраторам выполнять свою работу.\n"},
  158.     {"  {919191}-Злоупотребление собственными возможностями.\n\n"}
  159. };
  160. new Rules3[5][] = {
  161.     {"{AA3333}III.  Аккаунт\n"},
  162.     {" {617ABA}1. Аккаунт - ваша собственность.\n"},
  163.     {" {617ABA}2. За взлом аккаунтов администрация ответственности не несет.\n"},
  164.     {" {617ABA}3. Восстановление аккантов возможно с помощью e-mail-а.\n"},
  165.     {" {617ABA}4. Запрещено передавать/продавать аккаунты.\n\n"}
  166.    
  167. };
  168.  
  169. new Rules2[9][] = {
  170.     {"{AA3333}II.  Ник в игре.\n"},
  171.     {" {617ABA}1. Ник должен быть создан по шаблону: Имя_Фамилия на латинице.\n"},
  172.     {" {617ABA}2. Если у вас по каким-то причинам Non-RP ник, вы можете его поменять (/mm > Сменить ник).\n"},
  173.     {" {617ABA}3. RP ники не меняются, за исключением некоторых случаев.\n"},
  174.     {" {617ABA}4. Запрещено:\n"},
  175.     {" {919191}-Использовать чужие ники.\n"},
  176.     {" {919191}-Подделывать ники.\n"},
  177.     {" {919191}-Использовать укороченные имена, например Deniska_Korablev.\n"},
  178.     {" {919191}-Использовать в своем нике такие части, как Tawer, Maloy, Ebosher и так далее.\n\n"}
  179. };
  180.  
  181.  
  182. new Rules4[24][] = {
  183.     {"{AA3333}IV.  Основы Role Play\n"},
  184.     {" {617ABA}1. В игре 2 типа чата:\n"},
  185.     {" {919191}-OOC ( Out Of Character ) - информация, не относящаяся к игровому процессу.\n"},
  186.     {" {919191}-IC ( In Character ) - информация, относящаяся к игровому процессу.\n"},
  187.     {" {617ABA}Смешивание двух чатов недопустимо. Для OOC чата предусмотрена команда (/b).\n"},
  188.     {" {617ABA}2. Игроки обязаны отыгрывать свою роль. Для этого предусмотрены команды действия (/me),\nкоманды действия от 3-го лица (/do) и команда попытки совершения какого-либо действия (/try).\n"},
  189.     {" {617ABA}3. Обязательные для выучивания Role Play термины:\n"},
  190.     {" {919191}-MetaGaming (MG) - использование OOC информации в IC чат и наоборот ( смешивание чатов ).\n"},
  191.     {" {919191}-OOC и IC (см. п. 1 ).\n"},
  192.     {" {919191}-Role Play (RP) - Ролевая игра.\n"},
  193.     {" {919191}-Respawn - Место появления игрока.\n"},
  194.     {" {919191}-Away From Keyboard (AFK) - Отошел от клавиатуры.\n"},
  195.     {" {919191}-Revenge Kill (RK) - убить игрока, за то что он убил тебя.\n"},
  196.     {" {919191}-PowerGaming (PG) - Воображение из себя супер-героя. Пример: драка 1 на 5.\n"},
  197.     {" {919191}-Bunny Hopping (BH) - прыгать, словно кузнечик (Shift+ Пробел).\n"},
  198.     {" {919191}-Death Match (DM) - Убийство людей без IC причины.\n"},
  199.     {" {919191}-Drive By (DB) - Убийство человека из машины.\n"},
  200.     {" {919191}-Spawn Kill (SK) - Убийство на месте появления.\n"},
  201.     {" {919191}-Team Kill (TK)  - Убийство члена своей команды, фракции.\n"},
  202.     {" {919191}-Сharacter kill (CK) - Убийство игрока по IC причинам ( Заказное убийство, увольнение из мафий/банд ).\n"},
  203.     {" {919191}-Fast Reload (FR) - Баг с быстрой перезарядкой.\n"},
  204.     {" {919191}-Repeat Kill (RK) - Намеренное повторное убийство одного и того же игрока.\n"},
  205.     {" {919191}-Willy Hopping (WH) - Это прыжок с 'велоподобных' транспортных средств\n"},
  206.     {" {919191}-Fast Moving (FM) - Баг с быстрым перемещением."}
  207. };
  208.  
  209. new Rules5[4][] = {
  210.     {"{AA3333}IV.  Администрация.\n"},
  211.     {" {617ABA}1. Администрация сервера - опытные игроки, осуществляющие мониторинг сервера в любое время суток.\n"},
  212.     {" {617ABA}2. В  случае обнаружения 'подозрительных личностей', использующих баги/читы, вы \nимеете право сообщить об этом администрации. ( /mm > Связь с администрацией > Жалоба (Репорт) ).\n"},
  213.     {" {617ABA}3. Администрация имеет право выдавать наказания нарушителям правил сервера на свое\n усмотрение, но придерживаясь таблице наказаний.\n\n"}
  214. };
  215.  
  216. new Rules6[4][] = {
  217.     {"{AA3333}V.  Саппорты.\n"},
  218.     {" {617ABA}1. Support ( Саппорт ) - опытный игрок, знающий ответы на все вопросы, которые могут возникнуть у игроков.\n"},
  219.     {" {617ABA}2. Если вам что-либо не понятно, вы имеете право задать вопрос support-ам ( /mm > Связь с администрацией > Вопрос ).\n"},
  220.     {" {617ABA}3. Вы всегда можете проверить список саппортов на сервере ( /supports ).\n\n"}
  221. };
  222.  
  223. new Rules7[4][] = {
  224.     {"{AA3333}VI.  Торговля.\n"},
  225.     {" {617ABA}1. Запрещены любые денежные махинации.\n"},
  226.     {" {617ABA}2. Запрещена купля/продажа виртуальных ценностей за реальные деньги.\n"},
  227.     {" {617ABA}3. Запрещена передача/продажа аккаунтов.\n\n"}
  228. };
  229.  
  230. new Rules8[27][] = {
  231.     {"{AA3333}VIII.  Наказания\n"},
  232.     {" {617ABA}1.  На сервере существует несколько типов наказания:\n"},
  233.     {" {919191}-Mute - приглушение чата на какое-то время.\n"},
  234.     {" {919191}-Jail - Тюремный срок.\n"},
  235.     {" {919191}-Freeze - Заморозка игрока на какое-то время.\n"},
  236.     {" {919191}-DeMorgan - Тюремный срок в специальной тюрьме.\n"},
  237.     {" {919191}-Kick - Прекращение игрового процесса.\n"},
  238.     {" {919191}-Warn - Предупреждение за нарушение правил сервера\n"},
  239.     {" {919191}-Ban - Отстранение от игры на сервере на какой-то срок.\n"},
  240.     {" {617ABA}2.  Наказания 'Легкой тяжести'\n"},
  241.     {" {919191}-Сообщения в верхнем регистре (CAPS LOCK) | MG - Mute на 5-30 минут.\n"},
  242.     {" {919191}-Нецензурная лексика  в чат - Mute на 30-60 минут\n"},
  243.     {" {617ABA}3.  Наказания 'Средней тяжести'\n"},
  244.     {" {919191}-BH | WH | Лаггер ( Ping > 160 ) - Kick\n"},
  245.     {" {919191}-Помеха игрокам | AFK более 10 минут - Kick\n"},
  246.     {" {617ABA}4.  Наказания 'Тяжелой тяжести'\n"},
  247.     {" {919191}-DB | SK | TK | FR - Warn | Ban 7+ дней\n"},
  248.     {" {919191}-RK | PG | DM - Kick | DeMorgan 60 - 360 Минут | Warn\n"},
  249.     {" {919191}-FM - DeMorgan 60 - 360 Минут | Warn | Ban 7+ дней\n"},
  250.     {" {919191}-Помеха администраторам выполнять свою работу - Kick | Warn\n"},
  251.     {" {919191}-Злоупотребление собственными возможностями - Kick | Warn\n"},
  252.     {" {919191}-Использование скриптов/читов -  DeMorgan 60-360 Минут | Warn | Ban на 7+ дней\n"},
  253.     {" {919191}-Использование недоработок сервера - DeMorgan 60-360 Минут | Warn | Ban на 7+ дней\n"},
  254.     {" {919191}-Вымогательство персональных данных других игроков - Вечный бан + Удаление аккаунта\n"},
  255.     {" {919191}-Создание финансовых пирамид - Вечный бан + Удаление аккаунта\n"},
  256.     {" {919191}-Выдача себя за администратора проекта | Создание 'Фейков' - Вечный бан + Удаление аккаунта\n"},
  257.     {" {919191}И так далее."}
  258. };
  259.  
  260. new loaderspick;
  261. new loaderworkers[MAX_PLAYERS];
  262.  
  263. new Text:Logotype[6];
  264. // ======================== [ Паблики ] ========================
  265.  
  266. public OnGameModeInit()
  267. {  
  268.     PickUps();
  269.     ThreeDTexts();
  270.     LogoTextdraws();
  271.     Timers();
  272.     DisableInteriorEnterExits();
  273.     EnableStuntBonusForAll(0);
  274.     SetGameModeText("StarLight RP");
  275.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  276.     LimitPlayerMarkerRadius(50);
  277.     new MySQLOpt: option_id = mysql_init_options();
  278.     mysql_set_option(option_id, AUTO_RECONNECT, true);
  279.     db_connect = mysql_connect(mysql_host, mysql_user, mysql_pass, mysql_base, option_id);
  280.     if(db_connect == MYSQL_INVALID_HANDLE || mysql_errno(db_connect) != 0) printf("Подключение к базе сервера неуспешно");
  281.     else printf("Подключение к базе сервера успешно");
  282.     return 1;
  283. }
  284.  
  285. public OnGameModeExit()
  286. {
  287.     return 1;
  288. }
  289.  
  290. public OnPlayerRequestClass(playerid, classid)
  291. {
  292.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  293.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  294.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  295.     return 1;
  296. }
  297.  
  298. public OnPlayerConnect(playerid)
  299. {
  300.     SetTimerEx("connect_player", 250, false, "i", playerid);
  301.     for(new i; i != 7; i++) TextDrawShowForPlayer(playerid, Logotype[i]);  
  302.     return 1;
  303. }
  304.  
  305. public OnPlayerDisconnect(playerid, reason)
  306. {
  307.     player_save(playerid);
  308.     return 1;
  309. }
  310.  
  311. public OnPlayerSpawn(playerid)
  312. {
  313.     player_spawn(playerid);
  314.     return true;
  315. }
  316.  
  317. public OnPlayerDeath(playerid, killerid, reason)
  318. {
  319.     return 1;
  320. }
  321.  
  322. public OnVehicleSpawn(vehicleid)
  323. {
  324.     return 1;
  325. }
  326.  
  327. public OnVehicleDeath(vehicleid, killerid)
  328. {
  329.     return 1;
  330. }
  331.  
  332. public OnPlayerText(playerid, text[])
  333. {
  334.     FloodChat
  335.     flood_chat[playerid] = gettime() + 1;
  336.     {
  337.     if(Login[playerid] == false)
  338.     {
  339.         SCM(playerid, COLOR_LIGHTRED, "Вы не авторизованы");
  340.         return 0;
  341.     }  
  342.     new string[128];
  343.     if(!strcmp(text, ")", true))
  344.     {
  345.         format(string, sizeof(string), "%s улыбается", PlayerName(playerid));
  346.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  347.         SetPlayerChatBubble(playerid, "улыбается", COLOR_YELLOW, 30.0, 10000);
  348.         return 0;
  349.     }
  350.     if(!strcmp(text, "))", true))
  351.     {
  352.         format(string, sizeof(string), "%s посмеивается", PlayerName(playerid));
  353.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  354.         SetPlayerChatBubble(playerid, "посмеивается", COLOR_YELLOW, 30.0, 10000);
  355.         return 0;
  356.     }
  357.     if(!strcmp(text, "(", true))
  358.     {
  359.         format(string, sizeof(string), "%s грустит", PlayerName(playerid));
  360.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  361.         SetPlayerChatBubble(playerid, "грустит", COLOR_YELLOW, 30.0, 10000);
  362.         return 0;
  363.     }
  364.     if(!strcmp(text, "((", true))
  365.     {
  366.         format(string, sizeof(string), "%s расстроился", PlayerName(playerid));
  367.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  368.         SetPlayerChatBubble(playerid, "расстроился", COLOR_YELLOW, 30.0, 10000);
  369.         return 0;
  370.     }
  371.     if(!strcmp(text, "=0", true))
  372.     {
  373.         format(string, sizeof(string), "%s удивился", PlayerName(playerid));
  374.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  375.         SetPlayerChatBubble(playerid, "удивился", COLOR_YELLOW, 30.0, 10000);
  376.         return 0;
  377.     }
  378.     if(!strcmp(text, "xD", true))
  379.     {
  380.         format(string, sizeof(string), "%s смеется", PlayerName(playerid));
  381.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  382.         SetPlayerChatBubble(playerid, "смеется", COLOR_YELLOW, 30.0, 10000);
  383.         return 0;
  384.     }
  385.     if(!strcmp(text, "xDD", true))
  386.     {
  387.         format(string, sizeof(string), "%s валяется от смеха", PlayerName(playerid));
  388.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  389.         SetPlayerChatBubble(playerid, "валяется от смеха", COLOR_YELLOW, 30.0, 10000);
  390.         return 0;
  391.     }
  392.     if(!strcmp(text, ":D", true))
  393.     {
  394.         format(string, sizeof(string), "%s хохочет во весь голос", PlayerName(playerid));
  395.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  396.         SetPlayerChatBubble(playerid, "хохочет во весь голос", COLOR_YELLOW, 30.0, 10000);
  397.         return 0;
  398.     }
  399.     if(!strcmp(text, ";)", true))
  400.     {
  401.         format(string, sizeof(string), "%s подмигнул", PlayerName(playerid));
  402.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  403.         SetPlayerChatBubble(playerid, "подмигнул", COLOR_YELLOW, 30.0, 10000);
  404.         return 0;
  405.     }
  406.     if(!strcmp(text, ":(", true))
  407.     {
  408.         format(string, sizeof(string), "%s нахмурился", PlayerName(playerid));
  409.         ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  410.         SetPlayerChatBubble(playerid, "нахмурился", COLOR_YELLOW, 30.0, 10000);
  411.         return 0;
  412.     }
  413.     if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  414.     {
  415.         if(GetPVarInt(playerid, "mineanim") == 1) return 1;
  416.         ApplyAnimation(playerid, "PED", "IDLE_chat", 4.1, 0, 1, 1, 1, 1);
  417.         SetTimerEx("animchat", 3200, 0, "i", playerid);
  418.     }
  419.     format(string, sizeof(string), "- %s[%d] говорит: %s", PlayerName(playerid), playerid, text);
  420.     ProxDetector(30.0, playerid, string, 0xFFFFFFFF, 0xFFFFFFFF, 0xF5F5F5FF, 0xE6E6E6FF,0xB8B8B8FF);
  421.     SetPlayerChatBubble(playerid, text, 0x6495EDFF, 30.0, 10000);
  422.     }
  423.     return 0;
  424. }
  425.  
  426. public OnPlayerCommandReceived(playerid, cmdtext[])
  427. {
  428.     if(Login[playerid] == false)
  429.     {
  430.         SCM(playerid, COLOR_LIGHTRED, "Вы не авторизированы!");
  431.         return 0;
  432.     }
  433.     return 1;
  434. }
  435.  
  436. public OnPlayerCommandText(playerid, cmdtext[])
  437. {
  438.     if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  439.     {
  440.         return 1;
  441.     }
  442.     return 0;
  443. }
  444.  
  445. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  446. {
  447.     return 1;
  448. }
  449.  
  450. public OnPlayerExitVehicle(playerid, vehicleid)
  451. {
  452.     return 1;
  453. }
  454.  
  455. public OnPlayerStateChange(playerid, newstate, oldstate)
  456. {
  457.     return 1;
  458. }
  459.  
  460. public OnPlayerEnterCheckpoint(playerid)
  461. {
  462.     return 1;
  463. }
  464.  
  465. public OnPlayerLeaveCheckpoint(playerid)
  466. {
  467.     return 1;
  468. }
  469.  
  470. public OnPlayerEnterRaceCheckpoint(playerid)
  471. {
  472.     return 1;
  473. }
  474.  
  475. public OnPlayerLeaveRaceCheckpoint(playerid)
  476. {
  477.     return 1;
  478. }
  479.  
  480. public OnRconCommand(cmd[])
  481. {
  482.     return 1;
  483. }
  484.  
  485. public OnPlayerRequestSpawn(playerid)
  486. {
  487.     return 0;
  488. }
  489.  
  490. public OnObjectMoved(objectid)
  491. {
  492.     return 1;
  493. }
  494.  
  495. public OnPlayerObjectMoved(playerid, objectid)
  496. {
  497.     return 1;
  498. }
  499.  
  500. public OnPlayerPickUpPickup(playerid, pickupid)
  501. {
  502.     FloodPickup
  503.     flood_pickup[playerid] = gettime() + 2;
  504.     if(pickupid == loaderspick)
  505.     {
  506.         if(loaderworkers[playerid] == 0)
  507.         {
  508.             SPD(playerid, 30, DSM, "Устройство на работу грузчика", "Вы точно хотите устроиться на работу грузчика?", "Да", "Нет");
  509.         }
  510.         else
  511.         {
  512.             SPD(playerid, 31, DSM, "Устройство на работу грузчика", "Вы точно хотите уволиться с работы грузчика?", "Да", "Нет");
  513.         }
  514.     }
  515.     return 1;
  516. }
  517.  
  518. public OnVehicleMod(playerid, vehicleid, componentid)
  519. {
  520.     return 1;
  521. }
  522.  
  523. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  524. {
  525.     return 1;
  526. }
  527.  
  528. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  529. {
  530.     return 1;
  531. }
  532.  
  533. public OnPlayerSelectedMenuRow(playerid, row)
  534. {
  535.     return 1;
  536. }
  537.  
  538. public OnPlayerExitedMenu(playerid)
  539. {
  540.     return 1;
  541. }
  542.  
  543. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  544. {
  545.     return 1;
  546. }
  547.  
  548. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  549. {
  550.     return 1;
  551. }
  552.  
  553. public OnRconLoginAttempt(ip[], password[], success)
  554. {
  555.     return 1;
  556. }
  557.  
  558. public OnPlayerUpdate(playerid)
  559. {
  560.     return 1;
  561. }
  562.  
  563. public OnPlayerStreamIn(playerid, forplayerid)
  564. {
  565.     return 1;
  566. }
  567.  
  568. public OnPlayerStreamOut(playerid, forplayerid)
  569. {
  570.     return 1;
  571. }
  572.  
  573. public OnVehicleStreamIn(vehicleid, forplayerid)
  574. {
  575.     return 1;
  576. }
  577.  
  578. public OnVehicleStreamOut(vehicleid, forplayerid)
  579. {
  580.     return 1;
  581. }
  582.  
  583. /*
  584. {617ABA} синий
  585. {919191} серый
  586. {AA3333} красный
  587. {9E9E9E} заголовок
  588. */
  589.  
  590. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  591. {
  592.     switch(dialogid)
  593.     {
  594.         case 1:
  595.         {
  596.             if(response)
  597.             {
  598.                 if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 15 )
  599.                 {
  600.                     static const fmt_str[] = "{919191}Добро пожаловать на {617ABA}StarLight Role Play!\n{919191}Аккаунт {617ABA}%s{919191} не зарегистрирован\n\nДля начала игры пройдите регистрацию\nПридумайте пароль для аккаунта\n\n\t{617ABA}Подсказка:\n\t{AA3333}-Длина пароля - от 6 до 15 символов\n\t{919191}-Используйте латиницу и цифры\n\t-Регистр букв учитывается";
  601.                     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  602.                     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  603.                     return SPD(playerid, 1, DSI, "Регистрация нового персонажа", string, "Далее", "Выход");
  604.                 }
  605.                 for(new i = strlen(inputtext); i != -1; --i)
  606.                 switch(inputtext[i])
  607.                 {
  608.                     case 'А'..'Я', 'а'..'я', ' ':
  609.                     {
  610.                         static const fmt_str[] = "{919191}Добро пожаловать на {617ABA}StarLight Role Play!\n{919191}Аккаунт {617ABA}%s{919191} не зарегистрирован\n\nДля начала игры пройдите регистрацию\nПридумайте пароль для аккаунта\n\n\t{617ABA}Подсказка:\n\t{919191}-Длина пароля - от 6 до 15 символов\n\t{AA3333}-Используйте латиницу и цифры\n\t{919191}-Регистр букв учитывается";
  611.                         new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  612.                         format(string, sizeof(string), fmt_str, PlayerName(playerid));
  613.                         return SPD(playerid, 1, DSI, "Регистрация нового персонажа", string, "Далее", "Выход");
  614.                     }
  615.                 }
  616.                 new query[128];
  617.                 mysql_format(db_connect, query, sizeof(query), "INSERT INTO `accounts` (`pName`, `pPass`) VALUES ('%s', '%s')", PlayerName(playerid), inputtext);
  618.                 mysql_tquery(db_connect, query, "", "", playerid, 0);
  619.                 static const fmt_rls[] = "{919191}Не желаете ли ознакомиться с правилами сервера?";
  620.                 new rules[sizeof(fmt_rls)];
  621.                 format(rules, sizeof(rules), fmt_rls);
  622.                 SPD(playerid, 11, DSM, "Правила сервера", rules, "Да", "Нет");
  623.             }
  624.             else kick_dialog(playerid);
  625.         }
  626.         case 2:
  627.         {
  628.             if(response)
  629.             {
  630.                 if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 15 )
  631.                 {
  632.                     static const fmt_str[] = "{919191}Добро пожаловать на {617ABA}StarLight Role Play!\n{919191}Аккаунт {617ABA}%s{919191} зарегистрирован в базе данных\n\nДля входа в игру введите пароль\nТот самый, который вы вводили при регистрации\n\n\t{617ABA}Подсказка:\n\t{AA3333}-Длина пароля - от 6 до 15 символов\n\t{919191}-Используйте латиницу и цифры\n\t-Регистр букв учитывается";
  633.                     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  634.                     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  635.                     return SPD(playerid, 2, DSP, "Авторизация", string, "Далее", "Выход");
  636.                 }
  637.                 for(new i = strlen(inputtext); i != -1; --i)
  638.                 switch(inputtext[i])
  639.                 {
  640.                     case 'А'..'Я', 'а'..'я', ' ':
  641.                     {
  642.                         static const fmt_str[] = "{919191}Добро пожаловать на {617ABA}StarLight Role Play!\n{919191}Аккаунт {617ABA}%s{919191} зарегистрирован в базе данных\n\nДля входа в игру введите пароль\nТот самый, который вы вводили при регистрации\n\n\t{617ABA}Подсказка:\n\t{919191}-Длина пароля - от 6 до 15 символов\n\t{AA3333}-Используйте латиницу и цифры\n\t{919191}-Регистр букв учитывается";
  643.                         new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  644.                         format(string, sizeof(string), fmt_str, PlayerName(playerid));
  645.                         return SPD(playerid, 2, DSP, "Авторизация", string, "Далее", "Выход");
  646.                     }
  647.                 }
  648.                 new query[128];
  649.                 mysql_format(db_connect, query, sizeof(query), "SELECT * FROM `accounts` WHERE `pName` = '%s' AND `pPass` = '%s' LIMIT 1", PlayerName(playerid), inputtext);
  650.                 mysql_tquery(db_connect, query, "check_login", "ii", playerid, 0);
  651.             }
  652.             else KickRak(playerid);
  653.         }
  654.         case 3:
  655.         {
  656.             if(response)
  657.             {
  658.                 for(new i = strlen(inputtext); i != 0; --i)
  659.                 switch(inputtext[i])
  660.                 {
  661.                     case 'А'..'Я', 'а'..'я', '=', ' ':
  662.                     {  
  663.                         static const fmt_str[] = "{919191}Чтобы перейти к следующему шагу регистрации, Вам нужно ввести свой E-mail\nПри подтвержденном E-mail Вы сможете восстановить свой аккаунт в случае взлома\n\n\t{33CCFF}Подсказка:\n\t{919191}-Используйте сервисы @gmail.ru, @yandex.ru или @mail.ru\n\t{AA3333}-Используйте латиницу, цифры и 'собаку'\n\t{919191}-Оптимальная длина - до 40 символов";
  664.                         new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  665.                         format(string, sizeof(string), fmt_str, PlayerName(playerid));
  666.                         return SPD(playerid, 3, DSI, "Подтверждение E-mail", string, "Далее", "Выход");
  667.                     }
  668.                 }
  669.                 new sabaka;
  670.                 for(new i = strlen(inputtext); i != 0; --i)
  671.                 {
  672.                     switch(inputtext[i])
  673.                     {
  674.                     case '@': sabaka++;
  675.                     }
  676.                 }
  677.                 if(strlen(inputtext) < 5 || strlen(inputtext) > 40)
  678.                 {  
  679.                     static const fmt_str[] = "{919191}Чтобы перейти к следующему шагу регистрации, Вам нужно ввести свой E-mail\nПри подтвержденном E-mail Вы сможете восстановить свой аккаунт в случае взлома\n\n\t{617ABA}Подсказка:\n\t{919191}-Используйте сервисы @gmail.ru, @yandex.ru или @mail.ru\n\t-Используйте латиницу, цифры и 'собаку'\n\t{AA3333}-Оптимальная длина - до 40 символов";
  680.                     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  681.                     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  682.                     return SPD(playerid, 3, DSI, "Подтверждение E-mail", string, "Далее", "Выход");
  683.                 }
  684.                 if(sabaka == 0)
  685.                 {
  686.                     static const fmt_str[] = "{919191}Чтобы перейти к следующему шагу регистрации, Вам нужно ввести свой E-mail\nПри подтвержденном E-mail Вы сможете восстановить свой аккаунт в случае взлома\n\n\t{617ABA}Подсказка:\n\t{919191}-Используйте сервисы @gmail.ru, @yandex.ru или @mail.ru\n\t{AA3333}-Используйте латиницу, цифры и 'собаку'\n\t{919191}-Оптимальная длина - до 40 символов";
  687.                     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  688.                     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  689.                     return SPD(playerid, 3, DSI, "Подтверждение E-mail", string, "Далее", "Выход");
  690.                 }
  691.                 strmid(PlayerInfo[playerid][pMail], inputtext, 0, strlen(inputtext), 40);
  692.                 enter_refer(playerid);
  693.             }
  694.             else kick_dialog(playerid);
  695.         }
  696.         case 4:
  697.         {
  698.             if(response)
  699.             {
  700.                 strmid(PlayerInfo[playerid][pRefer], inputtext, 0, strlen(inputtext), 32);
  701.                 enter_sex(playerid);
  702.                
  703.             }
  704.             else enter_email(playerid);
  705.         }
  706.         case 5:
  707.         {
  708.             if(response)
  709.             {
  710.                 PlayerInfo[playerid][pSex] = 1;
  711.             }
  712.             else
  713.             {
  714.                 PlayerInfo[playerid][pSex] = 2;
  715.             }
  716.             enter_spawn(playerid);
  717.         }
  718.         case 6:
  719.         {
  720.             if(response)
  721.             {
  722.                 switch(listitem)
  723.                 {
  724.                     case 0: set_spawn_lv(playerid);
  725.                     case 1: set_spawn_sf(playerid);
  726.                     case 2: set_spawn_ls(playerid);
  727.                     case 3: set_spawn_bg(playerid);
  728.                 }
  729.                 enter_skin(playerid);
  730.             }
  731.             else enter_sex(playerid);
  732.         }
  733.  
  734.         case 7:
  735.         {
  736.             new string[1330];
  737.             format(string, sizeof(string),"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
  738.             Rules3[0], Rules3[1], Rules3[2], Rules3[3], Rules3[4],
  739.             Rules5[0], Rules5[1], Rules5[2], Rules5[3],
  740.             Rules6[0], Rules6[1], Rules6[2], Rules6[3],
  741.             Rules7[0], Rules7[1], Rules7[2], Rules7[3]);
  742.             return SPD(playerid, 8, DSM, "Правила Сервера", string, "Далее", "");
  743.         }
  744.  
  745.         case 8:
  746.         {
  747.             new string[1600];
  748.             format(string, sizeof(string), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
  749.             Rules4[0], Rules4[1], Rules4[2], Rules4[3], Rules4[4], Rules4[5], Rules4[6], Rules4[7], Rules4[8], Rules4[9], Rules4[10],
  750.             Rules4[11], Rules4[12], Rules4[13], Rules4[14], Rules4[15], Rules4[16], Rules4[17], Rules4[18], Rules4[19], Rules4[20],
  751.             Rules4[21], Rules4[22], Rules4[23]);
  752.             return SPD(playerid, 9, DSM, "Правила Сервера", string, "Далее", "");
  753.         }
  754.  
  755.         case 9:
  756.         {
  757.             new string[1600];
  758.             format(string, sizeof(string), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
  759.             Rules8[0], Rules8[1], Rules8[2], Rules8[3], Rules8[4], Rules8[5], Rules8[6], Rules8[7], Rules8[8], Rules8[9], Rules8[10],
  760.             Rules8[11], Rules8[12], Rules8[13], Rules8[14], Rules8[15], Rules8[16], Rules8[17], Rules8[18], Rules8[19], Rules8[20],
  761.             Rules8[21], Rules8[22], Rules8[23], Rules8[24], Rules8[25], Rules8[26]);
  762.             SPD(playerid, 10, DSM, "Правила сервера", string, "Принять","");
  763.         }
  764.  
  765.         case 10:
  766.         {
  767.             show_login(playerid);
  768.         }
  769.  
  770.         case 11:
  771.         {
  772.             if(response) show_rules(playerid);
  773.             else show_login(playerid);
  774.         }
  775.  
  776.         case 20:
  777.         {
  778.             if(response)
  779.             {
  780.                 switch(listitem)
  781.                 {
  782.                     case 0: show_statistics(playerid);
  783.                 }
  784.             }
  785.         }
  786.         case 30:
  787.         {
  788.             if(response)
  789.             {
  790.                 loaderworkers[playerid] = 1;
  791.                 SCM(playerid, COLOR_WHITE, "Вы успешно устроились на работу грузчика\nОтправляйтесь за мешками, место обозначено на карте!");
  792.                 SetPlayerSkin(playerid, 260);
  793.             }
  794.             else return true;
  795.         }
  796.         case 31:
  797.         {
  798.             if(response)
  799.             {
  800.                 loaderworkers[playerid] = 0;
  801.                 SCM(playerid, COLOR_WHITE, "Вы успешно уволились с работы грузчика!");
  802.                 SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  803.             }
  804.             else return true;
  805.         }
  806.     }
  807.     return 1;
  808. }
  809.  
  810. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  811. {
  812.     return 1;
  813. }
  814.  
  815. // ========================= [ Cтоки ] =========================
  816.  
  817. stock PlayerName(playerid)
  818. {
  819.     new PlName[MAX_PLAYER_NAME];
  820.     GetPlayerName(playerid, PlName, sizeof(PlName));
  821.     return PlName;
  822. }
  823.  
  824. stock show_login(playerid)
  825. {
  826.     static const fmt_str[] = "{919191}Добро пожаловать на {617ABA}StarLight Role Play!\n{919191}Аккаунт {617ABA}%s{919191} зарегистрирован в базе данных\n\nДля входа в игру введите пароль\nТот самый, который вы вводили при регистрации\n\n\t{617ABA}Подсказка:\n\t{919191}-Длина пароля - от 6 до 15 символов\n\t-Используйте латиницу и цифры\n\t-Регистр букв учитывается";
  827.     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  828.     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  829.     SPD(playerid, 2, DSP, "Авторизация", string, "Далее", "Выход");
  830.     return true;
  831. }
  832.  
  833. stock show_registration(playerid)
  834. {
  835.     static const fmt_str[] = "{919191}Добро пожаловать на {617ABA}StarLight Role Play!\n{919191}Аккаунт {617ABA}%s{919191} не зарегистрирован\n\nДля начала игры пройдите регистрацию\nПридумайте пароль для аккаунта\n\n\t{617ABA}Подсказка:\n\t{919191}-Длина пароля - от 6 до 15 символов\n\t-Используйте латиницу и цифры\n\t-Регистр букв учитывается";
  836.     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  837.     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  838.     SPD(playerid, 1, DSI, "Регистрация нового персонажа", string, "Далее", "Выход");
  839.     return true;
  840. }
  841.  
  842. stock kick_dialog(playerid)
  843. {
  844.     SCM(playerid, COLOR_RED, "Для выхода введите /q(uit)");
  845.     KickRak(playerid);
  846. }
  847.  
  848. stock player_load(playerid)
  849. {  
  850.     Login[playerid] = true;
  851.     cache_get_value_name_int(0, "pID", PlayerInfo[playerid][pID]);
  852.     cache_get_value_name(0, "pName", PlayerInfo[playerid][pName], 64);
  853.     cache_get_value_name(0, "pPass", PlayerInfo[playerid][pPass], 64);
  854.     cache_get_value_name(0, "pMail", PlayerInfo[playerid][pMail], 64);
  855.     cache_get_value_name_int(0, "pReg", PlayerInfo[playerid][pReg]);
  856.     cache_get_value_name(0, "pRegDate", PlayerInfo[playerid][pRegDate], 64);
  857.     cache_get_value_name(0, "pRegIp", PlayerInfo[playerid][pRegIp], 64);
  858.     cache_get_value_name_int(0, "pSex", PlayerInfo[playerid][pSex]);
  859.     cache_get_value_name_int(0, "pSkin", PlayerInfo[playerid][pSkin]);
  860.     cache_get_value_name_int(0, "pSpawn", PlayerInfo[playerid][pSpawn]);
  861.     cache_get_value_name(0, "pRefer", PlayerInfo[playerid][pRefer], 64);   
  862.     cache_get_value_name_int(0, "pLevel", PlayerInfo[playerid][pLevel]);
  863.     cache_get_value_name_int(0, "pExp", PlayerInfo[playerid][pExp]);
  864.     cache_get_value_name(0, "pLastIp", PlayerInfo[playerid][pLastIp], 64);
  865.     cache_get_value_name(0, "pLastDate", PlayerInfo[playerid][pLastDate], 64);
  866.     cache_get_value_name_int(0, "pMoney", PlayerInfo[playerid][pMoney]);
  867.     cache_get_value_name_int(0, "pJob", PlayerInfo[playerid][pJob]);
  868.     SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
  869.     GetPlayerIp(playerid, PlayerInfo[playerid][pIp], 16);
  870.     GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
  871.     PlayerInfo[playerid][pExpUp] = PlayerInfo[playerid][pLevel]*4;
  872.     SpawnPlayer(playerid);
  873.     return true;
  874. }
  875.  
  876. stock enter_refer(playerid)
  877. {
  878.     SPD(playerid, 4, DSI, "Реферальная система", "{919191}В окошко ниже вы сможете ввести ник игрока, пригласившего Вас на сервер\nПри получении Вами 5 уровня, данный игрок получит бонус\nВы можете пропустить данный пункт, если такого игрока нет", "Далее", "Назад");
  879.     return true;
  880. }
  881.  
  882. stock enter_email(playerid)
  883. {
  884.     static const fmt_str[] = "{919191}Чтобы перейти к следующему шагу регистрации, Вам нужно ввести свой E-mail\nПри подтвержденном E-mail Вы сможете восстановить свой аккаунт в случае взлома\n\n\t{617ABA}Подсказка:\n\t{919191}-Используйте сервисы @gmail.ru, @yandex.ru или @mail.ru\n\t-Используйте латиницу, цифры и 'собаку'\n\t-Оптимальная длина - до 40 символов";
  885.     new string[sizeof(fmt_str) + MAX_PLAYER_NAME];
  886.     format(string, sizeof(string), fmt_str, PlayerName(playerid));
  887.     SPD(playerid, 3, DSI, "Подтверждение E-mail", string, "{9E9E9E}Далее", "{9E9E9E}Выход");
  888. }
  889.  
  890. stock enter_sex(playerid)
  891. {
  892.     SPD(playerid, 5, DSM, "Выбор пола", "{919191}Выберете пол Вашего персонажа", "{9E9E9E}Мужской", "{9E9E9E}Женский");
  893. }
  894.  
  895. stock enter_spawn(playerid)
  896. {
  897.     SPD(playerid, 6, DSL, "Выбор места появления", "{919191}Вы прилетели в Лас-Вентурас\n{919191}Вы приплыли в Сан-Фиерро\n{919191}Вы приехали в Лос-Сантос\n{919191}Вы где-то проснулись бомжом", "Далее", "Назад");
  898. }
  899.  
  900. stock set_spawn_lv(playerid)
  901. {
  902.     PlayerInfo[playerid][pSpawn] = 1;
  903. }
  904.  
  905. stock set_spawn_sf(playerid)
  906. {
  907.     PlayerInfo[playerid][pSpawn] = 2;
  908. }
  909.  
  910. stock set_spawn_ls(playerid)
  911. {
  912.     PlayerInfo[playerid][pSpawn] = 3;
  913. }
  914.  
  915. stock set_spawn_bg(playerid)
  916. {
  917.     PlayerInfo[playerid][pSpawn] = 4;
  918. }
  919.  
  920. stock enter_skin(playerid)
  921. {
  922.     if(PlayerInfo[playerid][pSpawn] != 4 )
  923.     {
  924.         if(PlayerInfo[playerid][pSex] == 1)
  925.         {
  926.             new RandomSkin = random(sizeof(RegMaleSkins));
  927.             PlayerInfo[playerid][pSkin] = RegMaleSkins[RandomSkin];
  928.         }
  929.         else
  930.         {
  931.             new RandomSkin = random(sizeof(RegFemaleSkins));
  932.             PlayerInfo[playerid][pSkin] = RegFemaleSkins[RandomSkin];
  933.         }
  934.     }
  935.     if(PlayerInfo[playerid][pSpawn] == 4)
  936.     {
  937.         if(PlayerInfo[playerid][pSex] == 1)
  938.         {
  939.             new RandomSkin = random(sizeof(RegMaleBomjSkins));
  940.             PlayerInfo[playerid][pSkin] = RegMaleBomjSkins[RandomSkin];
  941.         }
  942.         else
  943.         {
  944.             new RandomSkin = random(sizeof(RegFemaleBomjSkins));
  945.             PlayerInfo[playerid][pSkin] = RegFemaleBomjSkins[RandomSkin];
  946.         }
  947.     }
  948.     save_registration(playerid);
  949. }
  950.  
  951. stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z, Float:Angle, interior = 0, virtualworld = 0)
  952. {
  953.     SetPlayerInterior(playerid, interior);
  954.     SetPlayerPos(playerid, Float:x, Float:y, Float:z);
  955.     SetPlayerVirtualWorld(playerid, virtualworld);
  956.     SetPlayerFacingAngle(playerid, Float:Angle);
  957.     return true;
  958. }  
  959.  
  960. stock save_registration(playerid)
  961. {
  962.     cache_get_value_name_int(0, "pID", PlayerInfo[playerid][pID]);
  963.     new data[16];
  964.     new year, month, day;
  965.     getdate(year, month, day);
  966.     format(data, sizeof(data), "%02d.%02d.%d", day, month, year);
  967.     GetPlayerIp(playerid, PlayerInfo[playerid][pIp], 16);
  968.     new fmt_qry[] = "UPDATE `accounts` SET `pSkin` = '%d', `pSex` = '%d', `pMail` = '%s', `pRefer` = '%s', `pSpawn` = '%d', `pRegDate` = '%s', `pRegIp` = '%s', `pReg` = '1' WHERE `pName` = '%s' LIMIT 1";
  969.     new query[sizeof(fmt_qry) + 64 + 3 + 40 + 1 + 16 + 16 + 2];
  970.     mysql_format(db_connect, query, sizeof(query), fmt_qry, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pSex], PlayerInfo[playerid][pMail], PlayerInfo[playerid][pRefer], PlayerInfo[playerid][pSpawn], data, PlayerInfo[playerid][pIp], PlayerName(playerid));
  971.     mysql_pquery(db_connect, query);
  972.     set_player_data_to_default(playerid);
  973.     Login[playerid] = true;
  974.     SpawnPlayer(playerid)
  975. }
  976.  
  977. stock player_spawn(playerid)
  978. {
  979.     SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  980.     switch(PlayerInfo[playerid][pSpawn])
  981.     {
  982.         case 1:
  983.         {
  984.  
  985.             SetPlayerPosEx(playerid, 1685.0583, 1447.9601, 10.7702, 269.4320, 0, 0);
  986.         }      
  987.         case 2:
  988.         {
  989.             SetPlayerPosEx(playerid, -1502.4015, 920.0212, 7.1875, 89.5766, 0, 0);
  990.         }
  991.         case 3:
  992.         {
  993.             SetPlayerPosEx(playerid, 1742.6989, -1860.6411, 13.5785, 0.5889, 0, 0);
  994.         }
  995.         case 4:
  996.         {
  997.             SetPlayerPosEx(playerid, -88.4597, -1579.9426, 2.6172, 218.3821, 0, 0);
  998.         }
  999.     }
  1000. }
  1001.  
  1002. stock ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
  1003. {
  1004.     if(IsPlayerConnected(playerid))
  1005.     {
  1006.         new Float:posx;new Float:posy;new Float:posz;new Float:oldposx;new Float:oldposy;new Float:oldposz;new Float:tempposx;new Float:tempposy;new Float:tempposz;
  1007.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  1008.         foreach(new i: Player)
  1009.         {
  1010.             if(IsPlayerConnected(i))
  1011.             {
  1012.                 if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i))
  1013.                 {
  1014.                     GetPlayerPos(i, posx, posy, posz);
  1015.                     tempposx = (oldposx -posx);
  1016.                     tempposy = (oldposy -posy);
  1017.                     tempposz = (oldposz -posz);
  1018.                     if(((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16))) SCM(i, col1, string);
  1019.                     else if(((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8))) SCM(i, col2, string);
  1020.                     else if(((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4))) SCM(i, col3, string);
  1021.                     else if(((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2))) SCM(i, col4, string);
  1022.                     else if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) SCM(i, col5, string);
  1023.                 }
  1024.             }
  1025.         }
  1026.     }
  1027.     return 1;
  1028. }
  1029.  
  1030. stock Timers()
  1031. {
  1032.     SetTimer("thirtysecondupdate", 30000, 1);
  1033.     SetTimer("minuteupdate", 60000, 1);
  1034.     SetTimer("secondupdate", 1000, 1);
  1035.     SetTimer("fivesecondupdate", 1000, 1);
  1036.     return 1;
  1037. }
  1038.  
  1039. stock player_save(playerid)
  1040. {
  1041.     Login[playerid] = false;
  1042.     new year, month, day, hour, minute, second, data[32];
  1043.     getdate(year, month, day);
  1044.     gettime(hour, minute, second);
  1045.     format(data, sizeof(data), "%02d.%02d.%d %02d:%02d", day, month, year, hour, minute);
  1046.     new fmt_qry[] = "UPDATE `accounts` SET `pSkin` = '%d', `pMoney` = '%d', `pLevel` = '%d', `pExp` = '%d', `pLastIp` = '%s', `pLastDate` = '%s' WHERE `pName` = '%s' LIMIT 1";
  1047.     new query[sizeof(fmt_qry) + MAX_PLAYER_NAME + 64];
  1048.     mysql_format(db_connect, query, sizeof(query), fmt_qry, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pExp], PlayerInfo[playerid][pIp], data, PlayerName(playerid));
  1049.     mysql_pquery(db_connect, query);
  1050.     return true;
  1051.  
  1052. }
  1053.  
  1054. stock AntiMoney()
  1055. {
  1056.     foreach(new i: Player)
  1057.     {
  1058.         if(PlayerInfo[i][pMoney] != GetPlayerMoney(i))
  1059.         {
  1060.             ResetPlayerMoney(i);
  1061.             GivePlayerMoney(i, PlayerInfo[i][pMoney]);
  1062.         }
  1063.     }
  1064. }
  1065.  
  1066. stock set_player_data_to_default(playerid)
  1067. {
  1068.     PlayerInfo[playerid][pLevel] = 1;
  1069.     PlayerInfo[playerid][pExp] = 0;
  1070.     PlayerInfo[playerid][pMoney] = 0;
  1071.     SetPlayerScore(playerid, 1);
  1072.     PlayerInfo[playerid][pExpUp] = PlayerInfo[playerid][pLevel]*4;
  1073.     return true;
  1074. }
  1075.  
  1076. stock show_rules(playerid)
  1077. {
  1078.     new string[1400];
  1079.     format(string, sizeof(string), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
  1080.     Rules1[0], Rules1[1], Rules1[2], Rules1[3], Rules1[4], Rules1[5], Rules1[6], Rules1[7], Rules1[8], Rules1[9], Rules1[10],
  1081.     Rules2[0], Rules2[1], Rules2[2], Rules2[3], Rules2[4], Rules2[5], Rules2[6], Rules2[7], Rules2[8]);
  1082.     SPD(playerid, 7, DSM, "Правила Сервера", string, "Далее", "");
  1083. }
  1084.  
  1085. stock show_statistics(playerid)
  1086. {
  1087.     new stext[8];
  1088.     switch(PlayerInfo[playerid][pSex])
  1089.     {
  1090.         case 1: stext = "Мужской";
  1091.         case 2: stext = "Женский";
  1092.     }
  1093.     static const fmt_str[] =
  1094.     "\n\
  1095.     {919191}Номер аккаунта:{617ABA}\t\t%d\n\
  1096.     {919191}Имя:{617ABA}\t\t\t\t%s\n\
  1097.     {919191}Уровень:{617ABA}\t\t\t%i\n\
  1098.     {919191}Опыт:{617ABA}\t\t\t\t%i|%i\n\
  1099.     {919191}Деньги:{617ABA}\t\t\t%i$\n\
  1100.     {919191}Пол:{617ABA}\t\t\t\t%s\n\
  1101.     {919191}Число pJob:{617ABA}\t\t\t\t%d\n";
  1102.     new string[sizeof(fmt_str) + 10 + MAX_PLAYER_NAME + 3 + 10 + 10 + 8];
  1103.     format (string, sizeof(string), fmt_str, PlayerInfo[playerid][pID], PlayerName(playerid), PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pExp], PlayerInfo[playerid][pExpUp], GetPlayerMoney(playerid), stext, PlayerInfo[playerid][pJob]);
  1104.     SPD(playerid, 21, DSM, "Статистика персонажа", string, "Готово", "");
  1105. }
  1106.  
  1107. stock payday(playerid)
  1108. {
  1109.     PlayerInfo[playerid][pExp]++;
  1110.     if(PlayerInfo[playerid][pExp] == PlayerInfo[playerid][pExpUp])
  1111.     {
  1112.         PlayerInfo[playerid][pExp] = 0;
  1113.         PlayerInfo[playerid][pLevel]++;
  1114.         PlayerInfo[playerid][pExpUp] = PlayerInfo[playerid][pLevel]*4;
  1115.         SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
  1116.         return true;
  1117.     }
  1118.     return true;
  1119. }
  1120. // ======================== [ Пабликс ] ========================
  1121.  
  1122. publics connect_player(playerid)
  1123. {
  1124.     new query[128];
  1125.     SCM(playerid, COLOR_LIGHTBLUE, "Добро пожаловать на проект StarLight Role Play!");
  1126.     mysql_format(db_connect, query, sizeof(query), "SELECT `pID` FROM `accounts` WHERE `pName` = '%s' LIMIT 1", PlayerName(playerid));
  1127.     mysql_tquery(db_connect, query, "check_registration", "ii", playerid, 0);
  1128.     return true;
  1129. }
  1130.  
  1131. publics check_registration(playerid)
  1132. {
  1133.     if(cache_num_rows() < 1 ) show_registration(playerid);
  1134.     else show_login(playerid);
  1135.     return true;
  1136. }
  1137.  
  1138. publics kick(playerid)
  1139. {
  1140.     Kick(playerid);
  1141.     return true;
  1142. }
  1143.  
  1144. publics check_login(playerid)
  1145. {
  1146.     if(cache_num_rows() < 1 )
  1147.     {
  1148.         new string[128];
  1149.         if(GetPVarInt(playerid, "wrong_pass") == 2)
  1150.         {
  1151.             SCM (playerid, COLOR_RED, "Вы были кикнуты с сервера за неверный ввод пароля\nДля выхода введите /q(uit)");
  1152.             KickRak(playerid);
  1153.         }
  1154.         SetPVarInt(playerid, "wrong_pass", GetPVarInt(playerid, "wrong_pass")+1);
  1155.         if(GetPVarInt(playerid, "wrong_pass") < 3)
  1156.         {
  1157.             format(string, sizeof(string), "Внимание! Вы ввели неправильный пароль.\nУ вас осталось %d попыток\nИначе вы будете кикнуты.", 3 - GetPVarInt(playerid, "wrong_pass"));
  1158.             SCM(playerid, COLOR_RED, string);
  1159.             show_login(playerid);
  1160.         }  
  1161.     }
  1162.     else
  1163.     {
  1164.         cache_get_value_name_int(0, "pReg", PlayerInfo[playerid][pReg]);
  1165.         if(PlayerInfo[playerid][pReg] == 0)
  1166.         {
  1167.             enter_email(playerid);
  1168.         }
  1169.         else
  1170.         {
  1171.             player_load(playerid);
  1172.         }
  1173.     }
  1174.     return true;
  1175. }
  1176.  
  1177. publics thirtysecondupdate()
  1178. {
  1179.     return 1;
  1180. }
  1181.  
  1182. publics secondupdate()
  1183. {
  1184.     return 1;
  1185. }
  1186.  
  1187. publics fivesecondupdate()
  1188. {
  1189.     AntiMoney();
  1190.     return 1;
  1191. }
  1192.  
  1193. publics minuteupdate()
  1194. {
  1195.     return 1;
  1196. }
  1197.  
  1198.  
  1199. publics PickUps()
  1200. {
  1201.     loaderspick = CreatePickup(1275, 23, 2397.9182, -2508.3752, 13.6483, -1);
  1202.     return 1;
  1203. }
  1204.  
  1205. publics ThreeDTexts()
  1206. {
  1207.     Create3DTextLabel( "Устройство на работу грузчика", 0x008080FF, 2397.9182, -2508.3752, 13.6483 + 0.5, 10, 0 );
  1208.     return 1;
  1209. }
  1210.  
  1211. publics LogoTextdraws()
  1212. {
  1213.     Logotype[0] = TextDrawCreate(577.666564, 26.853322, "V");
  1214.     TextDrawLetterSize(Logotype[0], -0.531332, -2.745599);
  1215.     TextDrawAlignment(Logotype[0], 1);
  1216.     TextDrawColor(Logotype[0], 995004415);
  1217.     TextDrawSetShadow(Logotype[0], 1);
  1218.     TextDrawSetOutline(Logotype[0], 0);
  1219.     TextDrawBackgroundColor(Logotype[0], 255);
  1220.     TextDrawFont(Logotype[0], 1);
  1221.     TextDrawSetProportional(Logotype[0], 1);
  1222.     TextDrawSetShadow(Logotype[0], 1);
  1223.  
  1224.     Logotype[1] = TextDrawCreate(572.333312, 11.173354, "-");
  1225.     TextDrawLetterSize(Logotype[1], 2.049331, 1.558930);
  1226.     TextDrawAlignment(Logotype[1], 1);
  1227.     TextDrawColor(Logotype[1], 995004415);
  1228.     TextDrawSetShadow(Logotype[1], 1);
  1229.     TextDrawSetOutline(Logotype[1], 0);
  1230.     TextDrawBackgroundColor(Logotype[1], 255);
  1231.     TextDrawFont(Logotype[1], 1);
  1232.     TextDrawSetProportional(Logotype[1], 1);
  1233.     TextDrawSetShadow(Logotype[1], 1);
  1234.  
  1235.     Logotype[2] = TextDrawCreate(544.999816, 11.173354, "-");
  1236.     TextDrawLetterSize(Logotype[2], 1.817000, 1.536530);
  1237.     TextDrawAlignment(Logotype[2], 1);
  1238.     TextDrawColor(Logotype[2], 995004415);
  1239.     TextDrawSetShadow(Logotype[2], 1);
  1240.     TextDrawSetOutline(Logotype[2], 0);
  1241.     TextDrawBackgroundColor(Logotype[2], 255);
  1242.     TextDrawFont(Logotype[2], 1);
  1243.     TextDrawSetProportional(Logotype[2], 1);
  1244.     TextDrawSetShadow(Logotype[2], 1);
  1245.  
  1246.     Logotype[3] = TextDrawCreate(549.332580, 1.839949, "St");
  1247.     TextDrawLetterSize(Logotype[3], 0.515999, 2.189866);
  1248.     TextDrawAlignment(Logotype[3], 1);
  1249.     TextDrawColor(Logotype[3], 995004415);
  1250.     TextDrawSetShadow(Logotype[3], 1);
  1251.     TextDrawSetOutline(Logotype[3], 0);
  1252.     TextDrawBackgroundColor(Logotype[3], 255);
  1253.     TextDrawFont(Logotype[3], 1);
  1254.     TextDrawSetProportional(Logotype[3], 1);
  1255.     TextDrawSetShadow(Logotype[3], 1);
  1256.  
  1257.     Logotype[4] = TextDrawCreate(577.332824, 1.466628, "rLight");
  1258.     TextDrawLetterSize(Logotype[4], 0.515999, 2.189866);
  1259.     TextDrawAlignment(Logotype[4], 1);
  1260.     TextDrawColor(Logotype[4], 995004415);
  1261.     TextDrawSetShadow(Logotype[4], 1);
  1262.     TextDrawSetOutline(Logotype[4], 0);
  1263.     TextDrawBackgroundColor(Logotype[4], 255);
  1264.     TextDrawFont(Logotype[4], 1);
  1265.     TextDrawSetProportional(Logotype[4], 1);
  1266.     TextDrawSetShadow(Logotype[4], 1);
  1267.  
  1268.     Logotype[5] = TextDrawCreate(604.333374, 11.173354, "-");
  1269.     TextDrawLetterSize(Logotype[5], 1.855333, 1.547729);
  1270.     TextDrawAlignment(Logotype[5], 1);
  1271.     TextDrawColor(Logotype[5], 995004415);
  1272.     TextDrawSetShadow(Logotype[5], 1);
  1273.     TextDrawSetOutline(Logotype[5], 0);
  1274.     TextDrawBackgroundColor(Logotype[5], 255);
  1275.     TextDrawFont(Logotype[5], 1);
  1276.     TextDrawSetProportional(Logotype[5], 1);
  1277.     TextDrawSetShadow(Logotype[5], 1);
  1278.     return true;
  1279. }
  1280.  
  1281. // ======================== [ Команды ] ========================
  1282.  
  1283. CMD:spawnlv(playerid)
  1284. {
  1285.     SetPlayerPosEx(playerid, 1685.0583, 1447.9601, 10.7702, 269.4320, 0, 0);
  1286.     return true;
  1287. }
  1288. ALT:mainmenu:mm;
  1289. CMD:mainmenu(playerid, params[])
  1290. {
  1291.     static const fmt_str[] = "{919191}Статистика персонажа\n{919191}Настройки персонажа";
  1292.     new string[sizeof(fmt_str)];
  1293.     format(string, sizeof(string), fmt_str);
  1294.     SPD(playerid, 20, DSL, "Главное меню", string, "Далее", "Выйти");
  1295.     return true;
  1296. }
  1297. //      ============= [ RolePlay - Команды ] ==============
  1298.  
  1299. ALT:shout:s;
  1300. CMD:shout(playerid, params[])
  1301. {
  1302.     FloodCMD
  1303.     if(sscanf(params, "s[100]", params[0])) return SCM(playerid, COLOR_WHITE, "Используйте: (/s)hout [текст]");
  1304.     if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  1305.     {
  1306.         if(GetPVarInt(playerid, "mineanim") == 1) return 1;
  1307.         ApplyAnimation(playerid, "ON_LOOKERS", "shout_in", 1000.0, 0, 0, 0, 0, 0, 1);
  1308.     }
  1309.     new string[128];
  1310.     format(string, sizeof(string), "- %s[%d] кричит: %s!", PlayerName(playerid), playerid, params[0]);
  1311.     ProxDetector(30.0, playerid, string, 0xFFFFFFFF, 0xFFFFFFFF, 0xF5F5F5FF, 0xE6E6E6FF,0xB8B8B8FF);
  1312.     SetPlayerChatBubble(playerid, params[0], COLOR_YELLOW, 30.0, 10000);
  1313.     flood_cmd[playerid] = gettime() + 1;
  1314.     return 0;
  1315. }
  1316.  
  1317. ALT:whisper:w;
  1318. CMD:whisper(playerid, params[])
  1319. {
  1320.     FloodCMD
  1321.     new string[128];
  1322.     if(sscanf(params, "s[100]", params[0])) return SCM(playerid, COLOR_WHITE, "Используйте: (/w)hisper [текст]");
  1323.     format(string, sizeof(string), "- %s[%d] шепчет: %s", PlayerName(playerid), playerid, params[0]);
  1324.     ProxDetector(1.0, playerid, string, 0x6E6E6EAA, 0x6E6E6EAA, 0x6E6E6EAA, 0x6E6E6EAA, 0x6E6E6EAA);
  1325.     flood_cmd[playerid] = gettime() + 1;
  1326.     return 0;
  1327. }
  1328.  
  1329. CMD:me(playerid, params[])
  1330. {
  1331.     FloodRPChat
  1332.     new string[128];
  1333.     if(sscanf(params,"s[100]",params[0])) return SCM(playerid, COLOR_WHITE, "Используйте: /me [действие]");
  1334.     format(string, sizeof(string), "%s[%d] %s", PlayerName(playerid), playerid, params[0]);
  1335.     ProxDetector(30.0, playerid, string, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
  1336.     SetPlayerChatBubble(playerid, params[0], 0xDD90FFFF, 30.0, 10000);
  1337.     flood_rpchat[playerid] = gettime() + 1;
  1338.     return true;
  1339. }
  1340.  
  1341. CMD:do(playerid, params[])
  1342. {
  1343.     FloodRPChat
  1344.     new string[128];
  1345.     if(sscanf(params,"s[100]",params[0])) return SCM(playerid, COLOR_WHITE, "Используйте: /do [действие от 3-го лица]");
  1346.     format(string, sizeof(string), "(( %s[%d] )) {FF9900}%s", PlayerName(playerid), playerid, params[0]);
  1347.     ProxDetector(30.0, playerid, string, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA, 0xFFFFFFAA);
  1348.     SetPlayerChatBubble(playerid, params[0], 0xFFFFFFAA, 30.0, 10000);
  1349.     flood_rpchat[playerid] = gettime() + 1;
  1350.     return true;
  1351. }
  1352.  
  1353. CMD:try(playerid, params[])
  1354. {
  1355.     FloodRPChat
  1356.     new string[128], trying[32];
  1357.     if(sscanf(params,"s[100]",params[0])) return SCM(playerid, COLOR_WHITE, "Используйте: /try [действие]");
  1358.     new randomtry = random(2);
  1359.     if(randomtry == 0) trying = "{FF6600} [Неудачно]";
  1360.     else trying = "{63C600} [Удачно]";
  1361.     format(string, sizeof(string), "%s[%d] %s %s", PlayerName(playerid), playerid, params[0], trying);
  1362.     ProxDetector(30.0, playerid, string, 0xDD90FFAA, 0xDD90FFAA, 0xDD90FFAA, 0xDD90FFAA, 0xDD90FFAA);
  1363.     SetPlayerChatBubble(playerid, params[0], 0xDD90FFAA, 30.0, 10000);
  1364.     flood_rpchat[playerid] = gettime() + 1;
  1365.     return true;
  1366. }
  1367.  
  1368. //      =============== [ Админ - Команды ] ===============
  1369.  
  1370. CMD:sethp(playerid, params[])
  1371. {
  1372.     if(sscanf(params, "dd", params[0], params[1])) return SCM(playerid, COLOR_WHITE, "Используйте: /sethp [id] [уровень здоровья]");
  1373.     return SetPlayerHealth(params[0], params[1]);
  1374. }
  1375.  
  1376. ALT:moderatormenu:mmenu;
  1377. CMD:moderatormenu(playerid, params[])
  1378. {
  1379.     static const fmt_str[] = "{919191}Список модераторов{617ABA}(1-6 lvl){919191}\n{919191}Поставить модератора\n{919191}Повысить модератора\n{919191}Понизить модератора\n{919191}Выдать выговор модератору\n{919191}Снять модератора";
  1380.     new string[sizeof(fmt_str)];
  1381.     format(string, sizeof(string), fmt_str);
  1382.     SPD(playerid, 100, DSL, "Меню модераторов", string, "Далее", "Выйти");
  1383.     return true;
  1384. }
  1385.  
  1386. ALT:supportmenu:smenu;
  1387. CMD:supportmenu(playerid, params[])
  1388. {
  1389.     static const fmt_str[] = "{919191}Список саппортов\n{919191}Поставить саппорта\n{919191}Выдать выговор саппорту\n{919191}Снять саппорта";
  1390.     new string[sizeof(fmt_str)];
  1391.     format(string, sizeof(string), fmt_str);
  1392.     SPD(playerid, 102, DSL, "Меню саппортов", string, "Далее", "Выйти");
  1393.     return true;
  1394. }
  1395.  
  1396. CMD:setmoney(playerid, params[])
  1397. {
  1398.     FloodCMD
  1399.     if(sscanf(params,"dd",params[0], params[1])) return SCM(playerid, COLOR_WHITE, "Используйте: /setmoney [id] [сумма]");
  1400.     GivePlayerMoney(params[0], params[1]);
  1401.     return true;
  1402. }
  1403.  
  1404. CMD:payday(playerid)
  1405. {
  1406.     FloodCMD
  1407.     payday(playerid);
  1408.     return true;
  1409. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement