Advertisement
Laine_prikol

errored gamemode

Jun 10th, 2017
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 97.15 KB | None | 0 0
  1. //Register system: Y_Less, Dracoblue and Kush
  2. //Gamemode: Laine_prikol, kotik_prikol
  3. #include <a_samp>
  4. #include <core>
  5. #include <YSI\y_ini>
  6. #include <zcmd>
  7. #include <sscanf>
  8. #include <mxini>
  9. #define DIALOG_REGISTER 1
  10. #define DIALOG_LOGIN 2
  11. #define DIALOG_SUCCESS_1 3
  12. #define DIALOG_SUCCESS_2 4
  13. #define PATH "/Users/%s.ini"
  14. #define COL_MESSAGE "{FFFFFF}"
  15. #define COL_ERROR "{F81414}"
  16. #define COL_SUSCESS "{00FF22}"
  17. #define COL_MESSAGE2 "{00CED1}"
  18. #define COLOR_RED 0xFF0000FF
  19. #define COLOR_GREEN 0x008200FF
  20. #define COLOR_BLUE 0x0000FFFF
  21. #define COLOR_GREY 0xAAAAAAFF
  22. #define COLOR_YELLOW 0xFFFF00FF
  23. #define COLOR_ORANGE 0xFFC800FF
  24. #define SOUND_SUCSSES 1058
  25. #define SOUND_ERROR 1085
  26. #define SOUND_MESSAGE 30802
  27. #define SOUND_MESSAGE2 21001
  28. #define SOUND_BLEEDING 1137
  29. #define COLOR_FADE1 0xE6E6E6E6
  30. #define COLOR_FADE2 0xC8C8C8C8
  31. #define COLOR_FADE3 0xAAAAAAAA
  32. #define COLOR_FADE4 0x8C8C8C8C
  33. #define COLOR_FADE5 0x6E6E6E6E
  34.  
  35. #define MAX_HOUSES 100 // Этот будет отвечать за максимально кол-во домов
  36. #define D_H_CREATE_DESC 189 // Этот за диалог создание дома (Шаг 1)
  37. #define D_H_CREATE_PRICE 190 // Диалог создание дома (Шаг 2)
  38. #define D_H_CREATE_INT 191 // Диалог создание дома (Шаг 3)
  39. #define D_H_CREATE_CONF 192 // Диалог создание дома (Подтверждение)
  40.  
  41. #pragma tabsize 0
  42. #define eGivePlayerMoney(%0,%1); SetPVarInt(%0,"Cash",GetPVarInt(%0,"Cash")+%1); ResetPlayerMoney(%0); GivePlayerMoney(%0,GetPVarInt(%0,"Cash"));
  43. #define eGetPlayerMoney(%0) GetPVarInt(%0,"Cash")
  44. enum pInfo
  45. {
  46.     pPass,
  47.     pCash,
  48.     pAdmin,
  49.     pKills,
  50.     plices,
  51.     pmaterials,
  52.     pheals,
  53.     pfood,
  54.     pskin,
  55.     pfirst,
  56.     pmashina,
  57.     pcolor1,
  58.     pcolor2,
  59.     plvl,
  60.     pexp,
  61.     ppaydaymoney,
  62.     pbank,
  63.     pterminal,
  64.     photel,
  65.     pschool,
  66.     pwork,
  67.     pworkedmoney,
  68.     pwarns,
  69.     pgruz,
  70.     pmute,
  71.     pfaction,
  72.     prank,
  73.     phunger,
  74.     psleepless,
  75.     pwood,
  76.     pbandage,
  77.     float:phomeX,
  78.     float:phomeY,
  79.     float:phomeZ,
  80.     pint,
  81.     pDeaths
  82. }
  83.  
  84. enum hiInfo
  85. {
  86.         Float:hiX,Float:hiY,Float:hiZ,hiInt, // Позиции интерьера x,y,z и его id
  87.         hiName[15], // название интерьера
  88. }
  89. new HInts[][hiInfo]={ // 2-х мерный массив + в нем мы сразу храним информацию об интерьерах, как вы видите, по порядку: координаты x,y,z,id интерьера,"Название"
  90.         {318.564971,1118.209960,1083.882812,5,"Crack den"},
  91.         {2269.4453,-1210.2952,1047.5625,10,"Hashbury House"},
  92.         {2496.2676,-1693.8955,1014.7422,3,"Johnsons House"},
  93.         {1299.14,-794.77,1084.00,5,"Madd Doggs M."},
  94.         {2260.3711,-1135.7345,1050.6328,10,"R.B.M. Room"},
  95.         {2365.6023,-1133.6688,1050.8750,8,"V. B. House"},
  96.         {1302.519897,-1.787510,1001.028259,18,"Warehouse 2"},
  97.         {2324.419921,-1145.568359,1050.710083,12,"Un. safe house"},
  98.         {2496.6,-1696.55,1014.74,3,"med int"},
  99.         {223.043991,1289.259888,1082.199951,1,"med int2"},
  100.         {2260.76,-1210.45,1049.02,10,"small int"},
  101.         {2233.6919,-1112.8107,1050.8828,5,"small int"},
  102.         {76.632553,-301.156829,1.578125,0,"Blueberry"}
  103.  
  104. };
  105. enum hInfo
  106. {
  107.         hDesc[128], // Данный массив будет использования для хранения описания дома
  108.         hOwner[MAX_PLAYER_NAME], // Этот для хранения имени владельца
  109.         Float:hX,Float:hY,Float:hZ, // Координаты входа в дом (x,y,z)
  110.         hInterior, // Храним ПОРЯДКОВЫЙ ид интерьера дома (об этом я расскажу позже)
  111.         hVirtWorld, // Виртуальный мир для дома (это позволяет создавать множество домов с одинаковыми интерьерами)
  112.         hPrice, // Цена дома
  113.         hLock, // Закрыт ли дом или нет
  114.         hPick, // Пикап дома
  115.         Text3D:hText // 3D текст с информацией о доме
  116. };
  117.  
  118. new House[MAX_HOUSES][hInfo];
  119. new m_h; // Будет использоваться для подсчета точного количества созданных домов
  120. new STR[158]; // Массив, для редактирования строк (создаю 1 глобальный чтобы не создавать в каждой функции свой)
  121.  
  122. new PlayerInfo[MAX_PLAYERS][pInfo];
  123. forward LoadUser_data(playerid,name[],value[]);
  124. public LoadUser_data(playerid,name[],value[])
  125.  
  126. {
  127.     INI_Int("Password",PlayerInfo[playerid][pPass]);
  128.     INI_Int("Cash",PlayerInfo[playerid][pCash]);
  129.     INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
  130.     INI_Int("Kills",PlayerInfo[playerid][pKills]);
  131.     INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
  132.     INI_Int("Licenses",PlayerInfo[playerid][plices]);
  133.     INI_Int("hp",PlayerInfo[playerid][pheals]);
  134.     INI_Int("skin",PlayerInfo[playerid][pskin]);
  135.     INI_Int("Food",PlayerInfo[playerid][pfood]);
  136.     INI_Int("first",PlayerInfo[playerid][pfirst]);
  137.     INI_Int("mashina",PlayerInfo[playerid][pmashina]);
  138.     INI_Int("color1",PlayerInfo[playerid][pcolor1]);
  139.     INI_Int("color2",PlayerInfo[playerid][pcolor2]);
  140.     INI_Int("lvl",PlayerInfo[playerid][plvl]);
  141.     INI_Int("exp",PlayerInfo[playerid][pexp]);
  142.     INI_Int("paydaymoney",PlayerInfo[playerid][ppaydaymoney]);
  143.     INI_Int("bank",PlayerInfo[playerid][pbank]);
  144.     INI_Int("terminal",PlayerInfo[playerid][pterminal]);
  145.     INI_Int("hotel",PlayerInfo[playerid][photel]);
  146.     INI_Int("school",PlayerInfo[playerid][pschool]);
  147.     INI_Int("work",PlayerInfo[playerid][pwork]);
  148.     INI_Int("workedmoney",PlayerInfo[playerid][pworkedmoney]);
  149.     INI_Int("warns",PlayerInfo[playerid][pwarns]);
  150.     INI_Int("gruz",PlayerInfo[playerid][pgruz]);
  151.     INI_Int("mute",PlayerInfo[playerid][pmute]);
  152.     INI_Int("faction",PlayerInfo[playerid][pfaction]);
  153.     INI_Int("rank",PlayerInfo[playerid][prank]);
  154.     INI_Int("sleepless",PlayerInfo[playerid][psleepless]);
  155.     INI_Int("hunger",PlayerInfo[playerid][phunger]);
  156.     INI_Int("bandage",PlayerInfo[playerid][pbandage]);
  157.     INI_Int("wood",PlayerInfo[playerid][pwood]);
  158.     INI_Int("materials",PlayerInfo[playerid][pmaterials]);
  159.     INI_Float("phomeX",PlayerInfo[playerid][phomeX]);
  160.     INI_Float("phomeY",PlayerInfo[playerid][phomeY]);
  161.     INI_Float("phomeZ",PlayerInfo[playerid][phomeZ]);
  162.     INI_Int("pint",PlayerInfo[playerid][pint]);
  163.     return 1;
  164. }
  165. stock UserPath(playerid)
  166. {
  167.     new string[128],playername[MAX_PLAYER_NAME];
  168.     GetPlayerName(playerid,playername,sizeof(playername));
  169.     format(string,sizeof(string),PATH,playername);
  170.     return string;
  171. }
  172. new pickuparenda;
  173. new pickuparenda1;
  174. new pickuparenda2;
  175. new pickuprecolor1;
  176. new pickuprecolor2;
  177. new pickuprecolor3;
  178. new bankomat1;
  179. new bankomat2;
  180. new bankomat3;
  181. new schoolcar;
  182. new bool:onCheck[MAX_PLAYERS];
  183. new bool:pAnimation[MAX_PLAYERS];
  184. new islogged[MAX_PLAYERS];
  185. new picupGruz;
  186. new picupGruzEnd;
  187. new factionlevel1;
  188. new factionlevel2;
  189. new factionlevel3;
  190. new Materials1;
  191. new Materials2;
  192. new Materials3;
  193. new FactionMoney1;
  194. new FactionMoney2;
  195. new FactionMoney3;
  196. new gTeam[MAX_PLAYERS];
  197. new Mask[MAX_PLAYERS];
  198. new timerapply[MAX_PLAYERS];
  199. new bool:ended[MAX_PLAYERS];
  200. new spawnedcars[MAX_PLAYERS];
  201. forward message();
  202. forward schoolcartimer();
  203. forward OnCheatDetected(playerid, ip_address[], type, code);
  204. forward DelayedBan(playerid);
  205. forward DelayedKick(playerid);
  206. forward payday();
  207. forward hunger(playerid);
  208. forward setexp(playerid);
  209. forward setmoney(playerid,moneys);
  210. forward ProxDetector(Float:radi,playerid, string[],col1,col2,col3,col4,col5);
  211. forward SendTeamMessage(color,const string[], factionid);
  212. forward Applytimer(playerid);
  213. forward ApplyFoodtimer(playerid);
  214. forward BleedingDamage(playerid);
  215. /*Credits to Dracoblue*/
  216. stock udb_hash(buf[]) {
  217.     new length=strlen(buf);
  218.     new s1 = 1;
  219.     new s2 = 0;
  220.     new n;
  221.     for (n=0; n<length; n++)
  222.     {
  223.        s1 = (s1 + buf[n]) % 65521;
  224.        s2 = (s2 + s1)     % 65521;
  225.     }
  226.     return (s2 << 16) + s1;
  227. }
  228.  
  229. main()
  230. {
  231.         print("\n----------------------------------");
  232.         print("            Laine Mini-RPG          ");
  233.         print("----------------------------------\n");
  234. }
  235.  
  236. /*
  237. Ид фракций
  238. 10 - Groove
  239. 9 - Ballas
  240. 8 - Vagos
  241. 7 - SFPD
  242. 6 - LSPD
  243. 5 - Army
  244. 4 - News
  245. */
  246.  
  247. public OnGameModeInit()
  248. {
  249. SetGameModeText("MINI-RPG");
  250. #include mapping.txt // Загрузка маппинга
  251. DisableInteriorEnterExits();
  252. pickuparenda = CreatePickup(1318, 23, -1965.9395, 293.7788, 35.4688, -1);
  253. pickuparenda1 = CreatePickup(1318, 23, 556.9954,-1293.3118,17.2482, -1);
  254. pickuprecolor1 = CreatePickup(1318, 23, -1900.2043,276.8611,41.0391, -1);
  255. pickuprecolor2 = CreatePickup(1318, 23, 484.7113,-1733.4689,11.0752, -1);
  256. pickuprecolor3 = CreatePickup(1318, 23, 717.7277, -463.3733, 16.3437, -1);
  257. bankomat1 = CreatePickup(1318, 23, -1982.5986,134.2874,27.6875, -1);
  258. bankomat2 = CreatePickup(1318, 23, 2840.5991,1282.4888,11.3906, -1);
  259. bankomat3 = CreatePickup(1318, 23, 1766.6866,-1905.3402,13.5676, -1);
  260. schoolcar = CreatePickup(1239, 23, -2026.4131,-102.0660,35.1641, -1);
  261. picupGruz = CreatePickup(1318, 2, -476.6109,-535.3399,25.5296, -1);
  262. picupGruzEnd = CreatePickup(1318, 2, -154.7515,-288.1488,3.9053, -1);
  263. DisableInteriorEnterExits();
  264. SetTimer("payday", 1800000, true);
  265. SetTimer("hunger", 300000, true);
  266. LoadHouses();
  267. return 1;
  268. }
  269.  
  270. stock Name(playerid) // Функция для проверки ника
  271. {
  272.         new Nm[MAX_PLAYER_NAME];
  273.         GetPlayerName(playerid,Nm,24);
  274.         return Nm;
  275. }
  276.  
  277.  
  278. stock SaveHouseAmount() // Функция для сохранения точного кол-во домов (понадобится для создания домов)
  279. {
  280.     new f=ini_openFile("houses/m_h.ini"); // Открываем файл
  281.     ini_setInteger(f,"Amount",m_h); // Записываем значение переменной m_h в ключ Amount
  282.         return ini_closeFile(f); // Закрываем файл
  283. }
  284.  
  285. stock LoadHouses()
  286. {
  287.         if(!fexist("houses/m_h.ini"))return print("[Ошибка] Файл houses/m_h.ini не найден"); // Проверяем наличие файла в scriptfiles/houses (если не найден, в лог сервера выдаст ошибку)
  288.         new f=ini_openFile("houses/m_h.ini"); // открываем файл
  289.         ini_getInteger(f,"Amount",m_h); // получаем точное значение созданных домов
  290.         ini_closeFile(f); // закрываем этот файл
  291.         if(!fexist("houses/houses.ini"))return print("[Ошибка] Файл houses/houses.ini не найден"); // проверяем наличие файла houses.ini в той же директории.
  292.         f=ini_openFile("houses/houses.ini"); // открываем его
  293.         new str[8]; // создаем небольшой массив для дальнейшего форматирования строки (ключа в файле)
  294.         for(new h=1;h<=m_h;h++) // запускаем цикл
  295.         {
  296.                 format(str,sizeof(str),"ID %d",h); // форматируем строку для ключа в файле
  297.                 ini_getString(f,str,STR); // получаем данные в виде строки
  298.         sscanf(STR,"p<|>s[32]s[24]fffiiii",House[h][hDesc],House[h][hOwner],House[h][hX],House[h][hY],House[h][hZ],House[h][hInterior],House[h][hVirtWorld],House[h][hPrice],House[h][hLock]); // распределяем данные по переменным (данные идут через символ "|", пример: Dom 1|2.612|213.132|2.321")
  299.         if(!strcmp(House[h][hOwner],"None",true)) // Сравниваем строки если владелец дома == None значит дом не куплен (в дальнейшем при создании владелец дома будет равен None)
  300.                 {
  301.                         House[h][hPick]=CreatePickup(1273,23,House[h][hX],House[h][hY],House[h][hZ],0); // Создаем пикап дома
  302.                         format(STR,128,"[Дом продается]\nКласс: %s\nЦена: $%d",House[h][hDesc],House[h][hPrice]);
  303.  // Форматируем строку для 3D текста
  304.                         House[h][hText]=Create3DTextLabel(STR,0xFFFFFFFF,House[h][hX],House[h][hY],House[h][hZ]+0.5,10.0,0,0); // Создаем 3D текст
  305.                 }
  306.                 else // Иначе, если владелец дома не равен None, значит дом куплен
  307.                 {
  308.                         House[h][hPick]=CreatePickup(1239,23,House[h][hX],House[h][hY],House[h][hZ],0); // Создаем пикап дома (модель пикапа уже другая)
  309.                         format(STR,128,"[Дом]\nОписание: %s\nВладелец: %s",House[h][hDesc],House[h][hOwner]); // форматируем строку
  310.                         House[h][hText]=Create3DTextLabel(STR,0xFFFFFFFF,House[h][hX],House[h][hY],House[h][hZ]+0.5,10.0,0,0); // И создаем 3D текст с информацией
  311.                 }
  312.         }
  313.         ini_closeFile(f); // Закрываем фай
  314.         return printf("Loaded %d houses",m_h); // В лог чата возвращаем кол-во загруженных домов
  315. }
  316.  
  317. stock SaveHouse(h) // Функция для сохранения данных дома в файл
  318. {
  319.         new f=ini_openFile("houses/houses.ini"); // открываем файл
  320.         new str[8]; // создаем массив для форматирования строки (для ключа, как в предыдущем случае)
  321.         format(str,8,"ID %d",h); // форматируем строку
  322.         format(STR,sizeof(STR),"%s|%s|%f|%f|%f|%d|%d|%d|%d", House[h][hDesc],House[h][hOwner],House[h][hX],House[h][hY],House[h][hZ],House[h][hInterior],House[h][hVirtWorld],House[h][hPrice],House[h][hLock]); // снова форматируем строку (уже с информацией о доме); вот тут кстати, вы я думаю заметили, информация через "|"
  323.         ini_setString(f,str,STR); // записываем данные
  324.         ini_closeFile(f); // закрываем файл
  325.         return 1;
  326. }
  327.  
  328. stock UpdateHouse(h) // Эта функция для обновления дома (например при его покупке / продаже мы будем ее использовать)
  329. {
  330.         DestroyPickup(House[h][hPick]); // Удаляем пикап
  331.     if(!strcmp(House[h][hOwner],"None",true)) // Опять проверяем на владельца дома, если его нет тогда:
  332.     {
  333.         House[h][hPick]=CreatePickup(1273,23,House[h][hX],House[h][hY],House[h][hZ],0); // пикап
  334.                 format(STR,128,"[Дом продается]\nОписание: %s\nЦена: $%d",House[h][hDesc],House[h][hPrice]);
  335.  // форматируем строку
  336.                 Update3DTextLabelText(House[h][hText],0xFFFFFFFF,STR); // ОБНОВЛЯЕМ ранее созданный 3D текст (который создался при загрузке дома)
  337.     }
  338.     else // если есть владелец (купили дом)
  339.     {
  340.         House[h][hPick]=CreatePickup(1239,23,House[h][hX],House[h][hY],House[h][hZ],0); // пикап
  341.                 format(STR,128,"[Дом]\nОписание: %s\nВладелец: %s",House[h][hDesc],House[h][hOwner]); // форматируем строку
  342.                 Update3DTextLabelText(House[h][hText],0xFFFFFFFF,STR); // обновляем 3D текст
  343.     }
  344. }
  345.  
  346.  
  347.  
  348. public payday()
  349. {
  350. for(new i = 0; i < MAX_PLAYERS; i++)
  351. {
  352. // level 1
  353. if (PlayerInfo[i][pfaction] == 10 || factionlevel1 > 1)
  354. {
  355. PlayerInfo[i][pbank] += factionlevel1*PlayerInfo[i][prank]*PlayerInfo[i][plvl];
  356. }
  357. if (PlayerInfo[i][pfaction] == 9 || factionlevel2 > 1)
  358. {
  359. PlayerInfo[i][pbank] += factionlevel2*PlayerInfo[i][prank]*PlayerInfo[i][plvl];
  360. }
  361. if (PlayerInfo[i][pfaction] == 8 || factionlevel3 > 1)
  362. {
  363. PlayerInfo[i][pbank] += factionlevel3*PlayerInfo[i][prank]*PlayerInfo[i][plvl];
  364. }
  365. PlayerInfo[i][pbank] += PlayerInfo[i][ppaydaymoney];
  366.  
  367. SendClientMessage(i,COLOR_GREEN, "---- Зарплата ----");
  368. new string[128];
  369. format(string,128,"Зарплата: %d$ Уровень: %d Счёт в банке: %d$", PlayerInfo[i][ppaydaymoney], PlayerInfo[i][plvl], PlayerInfo[i][pbank]);
  370. SendClientMessage(i,-1, string);
  371. PlayerInfo[i][plvl]++;
  372. if (PlayerInfo[i][psleepless] == 0)
  373. {
  374. SendClientMessage(i,COLOR_RED, "ВНМАНИЕ: ВЫ УСТАЛИ, ЛОЖИТЕСЬ СПАТЬ! /sleep");
  375. PlayerInfo[i][phunger] -= 50;
  376.     if (PlayerInfo[i][psleepless] == 0)
  377.     {
  378.     SendClientMessage(i,COLOR_RED, "ВЫ СЛИШКОМ ГОЛОДНЫ!");
  379.     SetPlayerHealth(i, -30.0);
  380.     }
  381. }
  382. }
  383. }
  384. public SendTeamMessage(color,const string[], factionid)
  385. {
  386. for(new i = 0; i < MAX_PLAYERS; i++)
  387. {
  388. if(IsPlayerConnected(i) == 1) if (PlayerInfo[i][pfaction] == factionid) SendClientMessage(i, color, string);
  389. }
  390. return 1;
  391. }
  392.  
  393.  
  394. public BleedingDamage(playerid)
  395. {
  396.     if(PlayerInfo[playerid][pint] == 1)
  397.     {
  398.     PlayerPlaySound(playerid, SOUND_BLEEDING, 0, 0, 0);
  399.     GameTextForPlayer(playerid, "~r~Bleeding", 1000, 1);
  400.     new Float:HP;
  401.     GetPlayerHealth(playerid, HP);
  402.     SetPlayerHealth(playerid, HP - 1.5);
  403.     }
  404. }
  405.  
  406. forward SetBleeding(playerid);
  407. public SetBleeding(playerid)
  408. {
  409. PlayerInfo[playerid][pint] = 1;
  410. }
  411.  
  412. public hunger(playerid)
  413. {
  414. for(new i = 0; i < MAX_PLAYERS; i++)
  415. {
  416. PlayerInfo[playerid][pint] = 0;
  417. PlayerInfo[i][phunger]--;
  418.     if(PlayerInfo[i][phunger] < 30)
  419.     {
  420.         PlayerPlaySound(i, SOUND_ERROR, 0, 0, 0);
  421.     GameTextForPlayer(i, "low satiety!", 5000, 1);
  422.     }
  423.     if(PlayerInfo[i][phunger] <= 0)
  424.     {
  425.     GameTextForPlayer(i, "~r~no satiety!", 5000, 1);
  426.     SendClientMessage(i,COLOR_RED, "ВЫ СЛИШКОМ ГОЛОДНЫ!");
  427.     PlayerPlaySound(i, SOUND_ERROR, 0, 0, 0);
  428.     new Float:HP;
  429.     GetPlayerHealth(i, HP);
  430.     SetPlayerHealth(i, HP - 10.0);
  431.  
  432.     }
  433.     new tdstring[3];
  434. }
  435. }
  436. public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
  437. {
  438.     if(IsPlayerConnected(playerid))
  439.     {
  440.         new Float:posx, Float:posy, Float:posz;
  441.         new Float:oldposx, Float:oldposy, Float:oldposz;
  442.         new Float:tempposx, Float:tempposy, Float:tempposz;
  443.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  444.         for(new i = 0; i < MAX_PLAYERS; i++)
  445.         {
  446.             if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
  447.             {
  448.                 GetPlayerPos(i, posx, posy, posz);
  449.                 tempposx = (oldposx -posx);
  450.                 tempposy = (oldposy -posy);
  451.                 tempposz = (oldposz -posz);
  452.                 if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16))) // If the player is within 16 meters
  453.                 {
  454.                     SendClientMessage(i, col1, string);
  455.                 }
  456.                 else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8))) // within 8 meters
  457.                 {
  458.                     SendClientMessage(i, col2, string);
  459.                 }
  460.                 else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4))) //4 meters
  461.                 {
  462.                     SendClientMessage(i, col3, string);
  463.                 }
  464.                 else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2))) //2 meters
  465.                 {
  466.                     SendClientMessage(i, col4, string);
  467.                 }
  468.                 else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) //1 meter
  469.                 {
  470.                     SendClientMessage(i, col5, string);
  471.                 }
  472.             }
  473.             else
  474.             {
  475.                 SendClientMessage(i, col1, string);
  476.             }
  477.         }
  478.     }
  479.     return 0;
  480. }
  481. public OnGameModeExit()
  482. {
  483.         return 1;
  484. }
  485. public DelayedBan(playerid)
  486. {
  487.     Ban(playerid);
  488. }
  489. public Applytimer(playerid)
  490. {
  491. if (ended[playerid] == true)
  492. {
  493. return 1;
  494. }
  495. timerapply[playerid]++;
  496. new string[50];
  497. format(string, sizeof(string), "~w~Applying please wait... ~g~%d/10", timerapply );
  498. GameTextForPlayer(playerid, string, 5000, 3);
  499. if (timerapply[playerid] == 10)
  500. {
  501. ended[playerid] = true;
  502. timerapply[playerid] = 0;
  503. KillTimer(Applytimer(playerid));
  504. SetPlayerHealth(playerid, 100.0);
  505. GameTextForPlayer(playerid, "~g~+100 ~r~hp", 1000, 1);
  506. }
  507. }
  508. public ApplyFoodtimer(playerid)
  509. {
  510. if (ended[playerid] == true)
  511. {
  512. return 1;
  513. }
  514. timerapply[playerid]++;
  515. new string[50];
  516. format(string, sizeof(string), "~w~Applying please wait... ~g~%d/5", timerapply );
  517. GameTextForPlayer(playerid, string, 5000, 3);
  518. if (timerapply[playerid] == 5)
  519. {
  520. ended[playerid] = true;
  521. timerapply[playerid] = 0;
  522. KillTimer(Applytimer(playerid));
  523. new Float:HP;
  524. GetPlayerHealth(playerid, HP);
  525. SetPlayerHealth(playerid, HP + 10.0);
  526. GameTextForPlayer(playerid, "~g~+10 ~r~hp and ~g~+50 ~r~safiety!", 1000, 1);
  527. }
  528. }
  529. public DelayedKick(playerid)
  530. {
  531.     Kick(playerid);
  532. }
  533. public OnPlayerRequestClass(playerid, classid)
  534. {
  535. return 1;
  536. }
  537. public setexp(playerid)
  538. {
  539.     PlayerInfo[playerid][pexp]++;
  540.     GameTextForPlayer(playerid, "player exp ~g~+1", 5000, 1);
  541.     return 1;
  542. }
  543. public setmoney(playerid,moneys)
  544. {
  545. eGivePlayerMoney(playerid,moneys);
  546.     return 1;
  547. }
  548. public OnPlayerConnect(playerid)
  549. {
  550.     TogglePlayerSpectating(playerid,1);
  551.     if(fexist(UserPath(playerid)))
  552.     {
  553.         INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  554.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_MESSAGE"Вход",""COL_MESSAGE"Введите пароль чтобы войти в игру","Вход","Выход");
  555.         TogglePlayerSpectating(playerid,0);
  556.     }
  557.     else
  558.     {
  559.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_MESSAGE"Регистрация...",""COL_MESSAGE"Чтобы зарегистрироватся введите пароле в поле ниже:","Регистрация","Выход");
  560.         SetPlayerSkin(playerid, 135);
  561.         TogglePlayerSpectating(playerid,0);
  562.     }
  563.     return 1;
  564. }
  565.  
  566. public OnPlayerDisconnect(playerid, reason)
  567. {
  568.     new INI:File = INI_Open(UserPath(playerid));
  569.     INI_SetTag(File,"data");
  570.     INI_WriteInt(File,"Cash",eGetPlayerMoney(playerid));
  571.     INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
  572.     INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
  573.     INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
  574.     INI_WriteInt(File,"Licenses",PlayerInfo[playerid][plices]);
  575.     INI_WriteInt(File,"hp",PlayerInfo[playerid][pheals]);
  576.     INI_WriteInt(File,"skin",PlayerInfo[playerid][pskin]);
  577.     INI_WriteInt(File,"Food",PlayerInfo[playerid][pheals]);
  578.     INI_WriteInt(File,"first",PlayerInfo[playerid][pfirst]);
  579.     INI_WriteInt(File,"mashina",PlayerInfo[playerid][pmashina]);
  580.     INI_WriteInt(File,"color1",PlayerInfo[playerid][pcolor1]);
  581.     INI_WriteInt(File,"color2",PlayerInfo[playerid][pcolor2]);
  582.     INI_WriteInt(File,"lvl",PlayerInfo[playerid][plvl]);
  583.     INI_WriteInt(File,"exp",PlayerInfo[playerid][pexp]);
  584.     INI_WriteInt(File,"paydaymoney",PlayerInfo[playerid][ppaydaymoney]);
  585.     INI_WriteInt(File,"bank",PlayerInfo[playerid][pbank]);
  586.     INI_WriteInt(File,"terminal",PlayerInfo[playerid][pterminal]);
  587.     INI_WriteInt(File,"hotel",PlayerInfo[playerid][photel]);
  588.     INI_WriteInt(File,"school",PlayerInfo[playerid][pschool]);
  589.     INI_WriteInt(File,"work",PlayerInfo[playerid][pwork]);
  590.     INI_WriteInt(File,"workedmoney",PlayerInfo[playerid][pworkedmoney]);
  591.     INI_WriteInt(File,"warns",PlayerInfo[playerid][pwarns]);
  592.     INI_WriteInt(File,"gruz",PlayerInfo[playerid][pgruz]);
  593.     INI_WriteInt(File,"mute",PlayerInfo[playerid][pmute]);
  594.     INI_WriteInt(File,"faction",PlayerInfo[playerid][pfaction]);
  595.     INI_WriteInt(File,"rank",PlayerInfo[playerid][prank]);
  596.     INI_WriteInt(File,"sleepless",PlayerInfo[playerid][psleepless]);
  597.     INI_WriteInt(File,"hunger",PlayerInfo[playerid][phunger]);
  598.     INI_WriteInt(File,"bandage",PlayerInfo[playerid][pbandage]);
  599.     INI_WriteInt(File,"wood",PlayerInfo[playerid][pwood]);
  600.     INI_WriteInt(File,"materials",PlayerInfo[playerid][pmaterials]);
  601.     INI_WriteFloat(File,"phomeX",PlayerInfo[playerid][phomeX]);
  602.     INI_WriteFloat(File,"phomeY",PlayerInfo[playerid][phomeY]);
  603.     INI_WriteFloat(File,"phomeZ",PlayerInfo[playerid][phomeZ]);
  604.     INI_WriteInt(File,"pint",PlayerInfo[playerid][pint]);
  605.     INI_Close(File);
  606.     return 1;
  607. }
  608.  
  609. public OnPlayerSpawn(playerid)
  610. {
  611. SetPlayerVirtualWorld(playerid, 0);
  612. if (PlayerInfo[playerid][pfirst] == 0)
  613. {
  614. SetPlayerSkin(playerid, 135);
  615. eGivePlayerMoney(playerid, 500);
  616. SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  617. PlayerInfo[playerid][phunger] = 50;
  618. PlayerInfo[playerid][psleepless] = 50;
  619. ShowPlayerDialog(playerid, 108, DIALOG_STYLE_LIST, "Выбрать скин:", "Мужской скин 1\nМужской скин 2\nМужской скин 3\nЖенский скин 1\nЖенский скин 2\nЖенский скин 3", "Выбор", "Выход");
  620. PlayerInfo[playerid][pfirst]++;
  621. }
  622. if (PlayerInfo[playerid][pfirst] == 1)
  623. {
  624.     if(PlayerInfo[playerid][pint] >= 1)
  625.     {
  626.     SetPlayerPos(playerid, PlayerInfo[playerid][phomeX], PlayerInfo[playerid][phomeY], PlayerInfo[playerid][phomeZ]);
  627.     }
  628.     SetPlayerSkin(playerid, PlayerInfo[playerid][pskin]);
  629.     if(PlayerInfo[playerid][plvl] >= 0)
  630.     {
  631.     SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  632.     }
  633.     if(PlayerInfo[playerid][plvl] >= 1)
  634.     {
  635.     SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  636.     }
  637. if(PlayerInfo[playerid][plvl] >= 5)
  638.     {
  639.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  640.     }
  641. if(PlayerInfo[playerid][plvl] >= 10)
  642.     {
  643.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  644.     }
  645.     if(PlayerInfo[playerid][pwarns] >= 10)
  646.     {
  647.     SendClientMessage(playerid, COLOR_RED, "Вы были заблокированы за большое количество предупреждений!");
  648.     SetTimerEx("DelayedBan", 1000, false, "d", playerid);
  649.     }
  650.     if(PlayerInfo[playerid][pfaction] == 10)
  651.     {
  652.     SendClientMessage(playerid, -1, "Сообщение дня: хуй");
  653.     gTeam[playerid] = 10;
  654.     SetPlayerPos(playerid, -2285.8003,2284.9756,4.9756);
  655.     }
  656.     if(PlayerInfo[playerid][pfaction] == 9)
  657.     {
  658.     SendClientMessage(playerid, -1, "Сообщение дня: хуй");
  659.     SetPlayerPos(playerid, 2000.5540,-1114.2349,27.1250);
  660.     gTeam[playerid] = 9;
  661.     }
  662.     if(PlayerInfo[playerid][pfaction] == 8)
  663.     {
  664.     SendClientMessage(playerid, -1, "Сообщение дня: хуй");
  665.     SetPlayerPos(playerid, 2509.7185,-1678.3444,13.5469);
  666.     gTeam[playerid] = 8;
  667.     }
  668. }
  669. }
  670. SetPlayerToTeamColour(playerid)
  671. {
  672.     if(gTeam[playerid] == 10)
  673.     {
  674.         SetPlayerColor(playerid,COLOR_BLUE);
  675.     }
  676.     else if(gTeam[playerid] == 9)
  677.     {
  678.         SetPlayerColor(playerid,COLOR_RED);
  679.     }
  680.  
  681. }
  682.  
  683. public OnPlayerDeath(playerid, killerid, reason)
  684. {
  685.     if (PlayerInfo[killerid][pfaction] == 10)
  686.     {
  687.         if  (PlayerInfo[playerid][pfaction] == 9 || PlayerInfo[playerid][pfaction] == 8)
  688.         {
  689.         factionlevel1++;
  690.         factionlevel2--;
  691.         }
  692.     }
  693.     if (PlayerInfo[killerid][pfaction] == 9)
  694.     {
  695.         if  (PlayerInfo[playerid][pfaction] == 8 || PlayerInfo[playerid][pfaction] == 10)
  696.         {
  697.         factionlevel1--;
  698.         factionlevel2++;
  699.         }
  700.     }
  701.     if (PlayerInfo[killerid][pfaction] == 8)
  702.     {
  703.         if  (PlayerInfo[playerid][pfaction] == 9 || PlayerInfo[playerid][pfaction] == 10)
  704.         {
  705.         factionlevel2--;
  706.         factionlevel3++;
  707.         }
  708.     }
  709.     return 1;
  710. }
  711.  
  712. public OnVehicleSpawn(vehicleid)
  713. {
  714. return 1;
  715. }
  716.  
  717. public OnVehicleDeath(vehicleid, killerid)
  718. {
  719.         return 1;
  720. }
  721.  
  722. public OnPlayerText(playerid, text[])
  723. {
  724. new pname[24], str[128];
  725.    GetPlayerName(playerid, pname, 24);
  726.    format(str, sizeof(str), "%s говорит: %s", pname, text);
  727.    ProxDetector(20.0, playerid, str, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
  728.    SetPlayerChatBubble(playerid, text, -1, 15.0, 10000);
  729. }
  730. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  731. {
  732. return 1;
  733. }
  734.  
  735. public OnPlayerExitVehicle(playerid, vehicleid)
  736. {
  737.         return 1;
  738. }
  739.  
  740. public OnPlayerStateChange(playerid, newstate, oldstate)
  741. {
  742. if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
  743. {
  744. if (PlayerInfo[playerid][plices] == 0)
  745. {
  746. SendClientMessage(playerid,COLOR_RED,"У вас нет лицензии! Вы не умеете управлять транспортом");
  747. SetPlayerDrunkLevel(playerid, 30000);
  748. }
  749. }
  750. if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
  751. {
  752. if (PlayerInfo[playerid][plices] == 0)
  753. {
  754. SetPlayerDrunkLevel(playerid, 0);
  755. }
  756. }
  757. }
  758.  
  759. public OnPlayerEnterCheckpoint(playerid)
  760. {
  761.     return 1;
  762. }
  763. public OnPlayerLeaveCheckpoint(playerid)
  764. {
  765.         return 1;
  766. }
  767.  
  768. public OnPlayerEnterRaceCheckpoint(playerid)
  769. {
  770.         return 1;
  771. }
  772.  
  773. public OnPlayerLeaveRaceCheckpoint(playerid)
  774. {
  775.         return 1;
  776. }
  777.  
  778. public OnRconCommand(cmd[])
  779. {
  780.         return 1;
  781. }
  782.  
  783. public OnPlayerRequestSpawn(playerid)
  784. {
  785. return 1;
  786. }
  787.  
  788. public OnObjectMoved(objectid)
  789. {
  790.         return 1;
  791. }
  792. public OnPlayerObjectMoved(playerid, objectid)
  793. {
  794.         return 1;
  795. }
  796.  
  797. public OnPlayerPickUpPickup(playerid, pickupid)
  798. {
  799. if(pickupid == pickuparenda)
  800. {
  801. ShowPlayerDialog(playerid, 111, DIALOG_STYLE_LIST, "Купить машины", "Clover 4500$\nSentinel 6000$\nManana 7500$\nPony 3600$\nEsperanto 3900$\nLandstalker 5000$\nStallion 9000$\nSolair 8000$\nGlenade 2000$\nComet 10000$\nBlista Compact 19000$", "Купить", "Закрыть");
  802. }
  803. if(pickupid == schoolcar)
  804. {
  805. if(PlayerInfo[playerid][pexp] >= 5)
  806. {
  807. SendClientMessage(playerid, COLOR_GREEN, "Успешно! Чтобы посмотреть введите /lic <id>");
  808. PlayerInfo[playerid][plices]++;
  809. }
  810. if(PlayerInfo[playerid][pexp] < 5)
  811. {
  812. SendClientMessage(playerid, COLOR_RED, "Вы не получили 5 PLAYER EXP!");
  813. }
  814. }
  815. if(pickupid == pickuparenda1)
  816. {
  817. ShowPlayerDialog(playerid, 112, DIALOG_STYLE_LIST, "Купить машины", "Infernus 500000$\nTurismo 300000$\nSuper GT 200000$\nHotring Racer 100000$\nSultan 90000$\nBullet 120000$", "Купить", "Закрыть");
  818. }
  819. if(pickupid == pickuparenda2)
  820. {
  821. ShowPlayerDialog(playerid, 200, DIALOG_STYLE_LIST, "Купить транспорт", "Горный велосипед 300$\nFaggio 1500$\nFreeway 1800$\nPCJ-600 3800$\nSanchez 3800$\nNRG-500 6500$", "Купить", "Закрыть");
  822. return 1;
  823. }
  824. if(pickupid == pickuprecolor1)
  825. {
  826. ShowPlayerDialog(playerid, 113, DIALOG_STYLE_INPUT, "Смена цвета машины", "Введите ID Цвета 1:", "Сменить", "Отмена");
  827. }
  828. if(pickupid == pickuprecolor2)
  829. {
  830. ShowPlayerDialog(playerid, 113, DIALOG_STYLE_INPUT, "Смена цвета машины", "Введите ID Цвета 1:", "Сменить", "Отмена");
  831. }
  832. if(pickupid == pickuprecolor3)
  833. {
  834. ShowPlayerDialog(playerid, 113, DIALOG_STYLE_INPUT, "Смена цвета машины", "Введите ID Цвета 1:", "Сменить", "Отмена");
  835. }
  836. if(pickupid == bankomat1)
  837. {
  838. ShowPlayerDialog(playerid, 120, DIALOG_STYLE_MSGBOX, "Банкомат", "Вы действительно хотите снять все деньги с счёта?", "Да", "Нет");
  839. }
  840. if(pickupid == bankomat2)
  841. {
  842. ShowPlayerDialog(playerid, 120, DIALOG_STYLE_MSGBOX, "Банкомат", "Вы действительно хотите снять все деньги с счёта?", "Да", "Нет");
  843. }
  844. if(pickupid == bankomat3)
  845. {
  846. ShowPlayerDialog(playerid, 120, DIALOG_STYLE_MSGBOX, "Банкомат", "Вы действительно хотите снять все деньги с счёта?", "Да", "Нет");
  847. }
  848. if(pickupid == picupGruz)
  849. {
  850. ShowPlayerDialog(playerid, 202, DIALOG_STYLE_INPUT, "Загрузка груза", "Введите сколько вам надо груза (Цена 1 ед. груза - 5$):", "Загрузить", "Отмена");
  851. }
  852. if(pickupid == picupGruzEnd)
  853. {
  854. if(PlayerInfo[playerid][pgruz] >= 1)
  855. {
  856. SendClientMessage(playerid, COLOR_BLUE, "Груз доставлен!");
  857. PlayerPlaySound(playerid, SOUND_MESSAGE, 0, 0, 0);
  858. eGivePlayerMoney(playerid, 20*PlayerInfo[playerid][pgruz]);
  859. PlayerInfo[playerid][pgruz] = 0;
  860. }
  861. }
  862. return 1;
  863. }
  864. public OnVehicleMod(playerid, vehicleid, componentid)
  865. {
  866.         return 1;
  867. }
  868.  
  869. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  870. {
  871.         return 1;
  872. }
  873.  
  874. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  875. {
  876.         return 1;
  877. }
  878.  
  879. public OnPlayerSelectedMenuRow(playerid, row)
  880. {
  881.         return 1;
  882. }
  883.  
  884. public OnPlayerExitedMenu(playerid)
  885. {
  886.         return 1;
  887. }
  888.  
  889. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  890. {
  891.         return 1;
  892. }
  893.  
  894. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  895. {
  896. if (newkeys == 131072)
  897. {
  898. new message[379];
  899. format(message, sizeof(message), "Уровень сытости: %d Выносливость: %d\nЗакрыть дом\nОткрыть дом\nСпавн машины\nИнформация об игроке", PlayerInfo[playerid][phunger],PlayerInfo[playerid][psleepless]);
  900. ShowPlayerDialog(playerid, 361, DIALOG_STYLE_LIST, "Меню игрока:", message, "Выбрать", "Закрыть");
  901. return 1;
  902. }
  903. }
  904. public OnRconLoginAttempt(ip[], password[], success)
  905. {
  906.         return 1;
  907. }
  908.  
  909. public OnPlayerUpdate(playerid)
  910. {
  911. // if( GetPlayerMoney ( playerid ) != eGetPlayerMoney ( playerid ) ) ResetPlayerMoney( playerid ), GivePlayerMoney( playerid, eGetPlayerMoney ( playerid ) );
  912. }
  913.  
  914. public OnPlayerStreamIn(playerid, forplayerid)
  915. {
  916.         return 1;
  917. }
  918.  
  919. public OnPlayerStreamOut(playerid, forplayerid)
  920. {
  921.         return 1;
  922. }
  923.  
  924. public OnVehicleStreamIn(vehicleid, forplayerid)
  925. {
  926.         return 1;
  927. }
  928.  
  929. public OnVehicleStreamOut(vehicleid, forplayerid)
  930. {
  931.         return 1;
  932. }
  933.  
  934. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  935. {
  936. switch( dialogid )
  937. {
  938. case DIALOG_REGISTER:
  939. {
  940. if (!response) return Kick(playerid);
  941. if(response)
  942. {
  943. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_MESSAGE"Регистрация...",""COL_ERROR"Вы ввели неверный пароль!\n"COL_MESSAGE"Введите свой пароль для регистрации","Регистрация","Выход");
  944. new INI:File = INI_Open(UserPath(playerid));
  945. INI_SetTag(File,"data");
  946. INI_WriteInt(File,"Password",udb_hash(inputtext));
  947. INI_WriteInt(File,"Cash",0);
  948. INI_WriteInt(File,"Admin",0);
  949. INI_WriteInt(File,"Kills",0);
  950. INI_WriteInt(File,"Deaths",0);
  951. INI_Close(File);
  952. SpawnPlayer(playerid);
  953. ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_MESSAGE"УСПЕХ!",""COL_SUSCESS"Добро пожаловать на Laine MINIRPG!\nПравила и другую информацию на точке возрождения!","Ok","");
  954. islogged[playerid] = 1;
  955. TogglePlayerSpectating(playerid,0);
  956. if(PlayerInfo[playerid][plvl] >= 1)
  957.     {
  958.     SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  959.     }
  960. if(PlayerInfo[playerid][plvl] >= 5)
  961.     {
  962.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  963.     }
  964. if(PlayerInfo[playerid][plvl] >= 10)
  965.     {
  966.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  967.     }
  968.     if(PlayerInfo[playerid][pwarns] >= 10)
  969.     {
  970.     SendClientMessage(playerid, COLOR_RED, "Вы были заблокированны за большое количиство предупреждений!");
  971.     SetTimerEx("DelayedBan", 1000, false, "d", playerid);
  972.     }
  973. }
  974. }
  975.  
  976. case D_H_CREATE_DESC:
  977.             {
  978.                 if(response) // Если игрок нажал "Далее"
  979.                 {
  980.                     if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_H_CREATE_DESC,DIALOG_STYLE_INPUT,"Создание дома - описание","Введите описание для дома.","Далее","Закрыть"); // Если игрок ничего не ввел то показываем ему диалог снова
  981.                     SetPVarString(playerid,"h_desc",inputtext); // Записываем в PVar описание чтобы в дальнейшем его использовать
  982.                     ShowPlayerDialog(playerid,D_H_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание дома - цена","Введите цену для дома.","Далее","Назад"); // Показываем следующий диалог - цена дома.
  983.                 }
  984.                 }
  985.  
  986. case D_H_CREATE_PRICE:
  987.                 {
  988.                     if(response) // Если нажал "Да"
  989.                     {
  990.                         if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_H_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание дома - цена","Введите цену для дома.","Далее","Назад");
  991.                         SetPVarInt(playerid,"h_price",strval(inputtext)); // Сохраняем цену в PVar
  992.                                 STR=""; // Очищаем массив (чтобы не было лишней информации
  993.                         for(new i;i<sizeof(HInts);i++) // запускаем цикл для формирования следующего диалога в котором будет список с доступными интерьерами
  994.                         {
  995.                             strcat(STR,HInts[i][hiName]); // записываем в массив STR значение из HInts[i][hiName]
  996.                             strcat(STR,"\n"); // Делаем переход на следующую строку т.к. стиль диалога = DIALOG_STYLE_LIST
  997.                         }
  998.                         ShowPlayerDialog(playerid,D_H_CREATE_INT,DIALOG_STYLE_LIST,"Создание дома - интерьер",STR,"Далее","Назад"); // Показываем диалог с готовым списком интерьеров
  999.                     }
  1000.                     else DeletePVar(playerid,"h_desc"),ShowPlayerDialog(playerid,D_H_CREATE_DESC,
  1001. DIALOG_STYLE_INPUT,"Создание дома - описание","Введите описание для  дома.","Далее","Закрыть"); // Если же игрок нажал "Назад" показываем ему предыдущий диалог и удаляем то что было введено ранее (описание: DeletePVar).
  1002.                 }
  1003. case D_H_CREATE_INT:
  1004.                 {
  1005.                     if(response) // если нажал "Далее"
  1006.                     {
  1007.                                 SetPVarInt(playerid,"h_int",listitem); // Записываем в PVar номер списка (подсчет номера идет с 0 как в и массивах подсчет ячеек.
  1008.                                 ShowPlayerDialog(playerid,D_H_CREATE_CONF,DIALOG_STYLE_MSGBOX,"Создание дома - подтверждение","Вы действительно хотите создать дом в этом месте?","Создать","Отмена"); // Показываем диалог подтверждения
  1009.                     }
  1010.                     else DeletePVar(playerid,"h_price"),ShowPlayerDialog(playerid,D_H_CREATE_PRICE,
  1011. DIALOG_STYLE_INPUT,"Создание дома - цена","Введите цену для дома.","Далее","Назад"); // Иначе, если нажал "Назад" показываем предыдущий диалог и удаляем то что ввели ранее (цену: DeletePVar)
  1012.                 }
  1013. case D_H_CREATE_CONF:
  1014.                 {
  1015.                     if(response) // если игрок нажал "Создать"
  1016.                 {
  1017.                                 m_h++,SaveHouseAmount(); // Увеличиваем общее кол-во домов
  1018.                                 new Float:x[3],str[32]; // Создаем необходимые массивы (для определения координат и получения данных из PVar'a - описание дома, то, что вводили ранее)
  1019.                                 GetPlayerPos(playerid,x[0],x[1],x[2]),GetPVarString(playerid,"h_desc",str,32); // Определяем позиции игрока, заносим описание в str
  1020.                                 House[m_h][hX]=x[0],House[m_h][hY]=x[1],House[m_h][hZ]=x[2],House[m_h][hPrice]=GetPVarInt(playerid,"h_price"), // Присваиваем переменным дома необходимые значения
  1021.                                 House[m_h][hInterior]=GetPVarInt(playerid,"h_int"),House[m_h][hVirtWorld]=m_h,strmid(House[m_h][hDesc],str,0,32,32),
  1022.                                 strmid(House[m_h][hOwner],"None",0,5,5);  // Записываем владельца дома как None
  1023.                                 SaveHouse(m_h); // Сохраняем дом
  1024.                                 House[m_h][hPick]=CreatePickup(1273,23,x[0],x[1],x[2],0); // Создаем пикап
  1025.                                 format(STR,128,"[Дом продается]\nОписание: %s\nЦена: $%d",House[m_h][hDesc],House[m_h][hPrice]); // Форматируем строку для 3D информации
  1026.                                 House[m_h][hText]=Create3DTextLabel(STR,0xFFFFFFFF,x[0],x[1],x[2]+0.5,10.0,0,0); // Создаем 3D текст с ин-цией
  1027.                                 GameTextForPlayer(playerid,"~g~House created",100,1); // Показываем текст игроку об успешном создании дома
  1028.                                  DeletePVar(playerid,"h_price"),DeletePVar(playerid,"h_desc"),
  1029.                                     DeletePVar(playerid,"h_int"); // Удаляем уже не нужные нам PVar's
  1030.                     }
  1031.                     else DeletePVar(playerid,"h_price"),DeletePVar(playerid,"h_desc");
  1032.                     DeletePVar(playerid,"h_int"); // Иначе если игрок нажал "Отмена" удаляем PVar's.
  1033.                 }
  1034.  
  1035. case 108:
  1036. {
  1037. switch(listitem)
  1038. {
  1039. case 0:
  1040. {
  1041.  
  1042. SendClientMessage(playerid,0xFFFFFFFF, "Скин выбран!");
  1043. SetPlayerSkin(playerid, 6);
  1044. PlayerInfo[playerid][pskin] = 6;
  1045. return 1;
  1046. }
  1047. case 1: // The second listitem
  1048. {
  1049. SendClientMessage(playerid,0xFFFFFFFF, "Скин выбран!");
  1050. SetPlayerSkin(playerid, 7);
  1051. PlayerInfo[playerid][pskin] = 7;
  1052. return 1;
  1053. }
  1054. case 2: // The third listitem
  1055. {
  1056. SendClientMessage(playerid,0xFFFFFFFF, "Скин выбран!");
  1057. SetPlayerSkin(playerid, 3);
  1058. PlayerInfo[playerid][pskin] = 3;
  1059. return 1;
  1060. }
  1061. case 3: // The third listitem
  1062. {
  1063. SendClientMessage(playerid,0xFFFFFFFF, "Скин выбран!");
  1064. SetPlayerSkin(playerid, 11);
  1065. PlayerInfo[playerid][pskin] = 11;
  1066. return 1;
  1067. }
  1068. case 4: // The third listitem
  1069. {
  1070. SendClientMessage(playerid,0xFFFFFFFF, "Скин выбран!");
  1071. SetPlayerSkin(playerid, 12);
  1072. PlayerInfo[playerid][pskin] = 12;
  1073. return 1;
  1074. }
  1075. case 5: // The third listitem
  1076. {
  1077. SendClientMessage(playerid,0xFFFFFFFF, "Скин выбран!");
  1078. SetPlayerSkin(playerid, 9);
  1079. PlayerInfo[playerid][pskin] = 9;
  1080. return 1;
  1081. }
  1082. }
  1083. }
  1084. case 111:
  1085. {
  1086. switch(listitem)
  1087. {
  1088. case 0:
  1089. {
  1090. if(eGetPlayerMoney(playerid) < 4500) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1091. {
  1092. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1093. eGivePlayerMoney(playerid, -4500);
  1094. PlayerInfo[playerid][pmashina] = 542;
  1095. }
  1096. }
  1097. case 1: // The second listitem
  1098. {
  1099. if(eGetPlayerMoney(playerid) < 6000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1100. {
  1101. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1102. eGivePlayerMoney(playerid, -6000);
  1103. PlayerInfo[playerid][pmashina] = 405;
  1104. }
  1105. }
  1106. case 2: // The third listitem
  1107. {
  1108. if(eGetPlayerMoney(playerid) < 3600) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1109. {
  1110. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1111. eGivePlayerMoney(playerid, -3600);
  1112. PlayerInfo[playerid][pmashina] = 413;
  1113. }
  1114. }
  1115. case 3: // The third listitem
  1116. {
  1117. if(eGetPlayerMoney(playerid) < 3900) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1118. {
  1119. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1120. eGivePlayerMoney(playerid, -3900);
  1121. PlayerInfo[playerid][pmashina] = 419;
  1122. }
  1123. }
  1124. case 4: // The third listitem
  1125. {
  1126. if(eGetPlayerMoney(playerid) < 5000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1127. {
  1128. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1129. eGivePlayerMoney(playerid, -5000);
  1130. PlayerInfo[playerid][pmashina] = 400;
  1131. }
  1132. }
  1133. case 5: // The third listitem
  1134. {
  1135. if(eGetPlayerMoney(playerid) < 9000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1136. {
  1137. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1138. eGivePlayerMoney(playerid, -9000);
  1139. PlayerInfo[playerid][pmashina] = 439;
  1140. }
  1141. }
  1142. }
  1143. }
  1144. case 200:
  1145. {
  1146. switch(listitem)
  1147. {
  1148. case 0:
  1149. {
  1150. if(eGetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1151. {
  1152. SendClientMessage(playerid,0xFFFFFFFF, "Транспорт куплен! чтобы заспавнить введите: /spawncar");
  1153. eGivePlayerMoney(playerid, -500);
  1154. PlayerInfo[playerid][pmashina] = 542;
  1155. }
  1156. }
  1157. case 1:
  1158. {
  1159. if(eGetPlayerMoney(playerid) < 1500) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1160. {
  1161. SendClientMessage(playerid,0xFFFFFFFF, "Транспорт куплен! чтобы заспавнить введите: /spawncar");
  1162. eGivePlayerMoney(playerid, -1500);
  1163. PlayerInfo[playerid][pmashina] = 462;
  1164. }
  1165. }
  1166. case 2:
  1167. {
  1168. if(eGetPlayerMoney(playerid) < 1800) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1169. {
  1170. SendClientMessage(playerid,0xFFFFFFFF, "Транспорт куплен! чтобы заспавнить введите: /spawncar");
  1171. eGivePlayerMoney(playerid, -1800);
  1172. PlayerInfo[playerid][pmashina] = 463;
  1173. }
  1174. }
  1175. case 3:
  1176. {
  1177. if(eGetPlayerMoney(playerid) < 2650) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1178. {
  1179. SendClientMessage(playerid,0xFFFFFFFF, "Транспорт куплен! чтобы заспавнить введите: /spawncar");
  1180. eGivePlayerMoney(playerid, -2560);
  1181. PlayerInfo[playerid][pmashina] = 461;
  1182. }
  1183. }
  1184. case 4:
  1185. {
  1186. if(eGetPlayerMoney(playerid) < 3800) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1187. {
  1188. SendClientMessage(playerid,0xFFFFFFFF, "Транспорт куплен! чтобы заспавнить введите: /spawncar");
  1189. eGivePlayerMoney(playerid, -3800);
  1190. PlayerInfo[playerid][pmashina] = 468;
  1191. // DELETED
  1192. }
  1193. }
  1194. case 5:
  1195. {
  1196. if(eGetPlayerMoney(playerid) < 6500) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1197. {
  1198. SendClientMessage(playerid,0xFFFFFFFF, "Транспорт куплен! чтобы заспавнить введите: /spawncar");
  1199. eGivePlayerMoney(playerid, -6500);
  1200. PlayerInfo[playerid][pmashina] = 522;
  1201. // DELETED
  1202. }
  1203. }
  1204. }
  1205. }
  1206. case 121:
  1207. {
  1208. switch(listitem)
  1209. {
  1210. case 0:
  1211. {
  1212. if(eGetPlayerMoney(playerid) < 200) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1213. {
  1214. SendClientMessage(playerid,COLOR_GREEN, "Вы купили лопату");
  1215. eGivePlayerMoney(playerid, -200);
  1216. GivePlayerWeapon(playerid, 6, 1);
  1217. }
  1218. }
  1219. case 1: // The second listitem
  1220. {
  1221. if(eGetPlayerMoney(playerid) < 1800) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1222. {
  1223. SendClientMessage(playerid,COLOR_GREEN, "Вы купили удалённый терминал. Использовать: /terminal");
  1224. eGivePlayerMoney(playerid, -1800);
  1225. PlayerInfo[playerid][pterminal] = 1;
  1226. if (PlayerInfo[playerid][pterminal] == 1)
  1227. {
  1228. SendClientMessage(playerid,COLOR_GREY, "Он у вас и так есть!");
  1229. }
  1230. }
  1231. }
  1232. case 2: // The third listitem
  1233. {
  1234. if(eGetPlayerMoney(playerid) < 100) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1235. {
  1236. SendClientMessage(playerid,COLOR_GREEN, "Вы купили цветы");
  1237. eGivePlayerMoney(playerid, -100);
  1238. GivePlayerWeapon(playerid, 14, 1);
  1239. }
  1240. }
  1241. case 3: // The third listitem
  1242. {
  1243. if(eGetPlayerMoney(playerid) < 320) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1244. {
  1245. SendClientMessage(playerid,COLOR_GREEN, "Вы купили аптечку");
  1246. eGivePlayerMoney(playerid, -320);
  1247. PlayerInfo[playerid][pheals]++;
  1248. }
  1249. }
  1250. case 4: // The third listitem
  1251. {
  1252. if(eGetPlayerMoney(playerid) < 35) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1253. {
  1254. SendClientMessage(playerid,COLOR_GREEN, "Вы купили еду");
  1255. eGivePlayerMoney(playerid, -35);
  1256. PlayerInfo[playerid][pfood]++;
  1257. }
  1258. }
  1259. case 5: // The third listitem
  1260. {
  1261. if(eGetPlayerMoney(playerid) < 300) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1262. {
  1263. SendClientMessage(playerid,COLOR_GREEN, "Вы купили фотоаппарат 50 снимков!");
  1264. eGivePlayerMoney(playerid, -300);
  1265. GivePlayerWeapon(playerid, 43, 50);
  1266. }
  1267. }
  1268. case 6: // The third listitem
  1269. {
  1270. if(eGetPlayerMoney(playerid) < 180) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1271. {
  1272. SendClientMessage(playerid,COLOR_GREEN, "Вы купили маску! Она у вас будет до перезахода на сервер!");
  1273. eGivePlayerMoney(playerid, -180);
  1274. Mask[playerid] = 1;
  1275. }
  1276. return 1;
  1277. }
  1278. }
  1279. return 1;
  1280. }
  1281. /*"Пистолет 300 Материалов\nПистолет с глушителем 250 Материалов\nDeagle 400 Материалов\nМ4 570 Материалов\nАК-47 500 Материалов\n
  1282. Дробовик 320 Материалов\nCombat-shotgun 450 Материалов\nSniper 1000 Материалов\nSMG 430 Материалов\nUZI 400 Материалов
  1283. */
  1284. case 207:
  1285. {
  1286. switch(listitem)
  1287. {
  1288. case 0:
  1289. {
  1290. if(PlayerInfo[playerid][pmaterials] >= 300 && PlayerInfo[playerid][prank] >= 2) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1291. {
  1292. PlayerInfo[playerid][pmaterials] -= 300;
  1293. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали пистолет с 100 патронами!");
  1294. GivePlayerWeapon(playerid, 22,100);
  1295. }
  1296. }
  1297. case 1:
  1298. {
  1299. if(PlayerInfo[playerid][pmaterials] >= 250 && PlayerInfo[playerid][prank] >= 2) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов!");
  1300. {
  1301. PlayerInfo[playerid][pmaterials] -= 250;
  1302. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали Пистолет с глушителем с 100 патронами!");
  1303. GivePlayerWeapon(playerid, 23,100);
  1304. }
  1305. }
  1306. case 2:
  1307. {
  1308. if(PlayerInfo[playerid][pmaterials] >= 400 && PlayerInfo[playerid][prank] >= 3) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1309. {
  1310. PlayerInfo[playerid][pmaterials] -= 300;
  1311. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали Deagle с 100 патронами!");
  1312. GivePlayerWeapon(playerid, 24,100);
  1313. }
  1314. }
  1315. case 3:
  1316. {
  1317. if(PlayerInfo[playerid][pmaterials] >= 570 && PlayerInfo[playerid][prank] >= 4) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1318. {
  1319. PlayerInfo[playerid][pmaterials] -= 570;
  1320. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали M4 с 100 патронами!");
  1321. GivePlayerWeapon(playerid, 31,100);
  1322. }
  1323. }
  1324. case 4:
  1325. {
  1326. if(PlayerInfo[playerid][pmaterials] >= 500 && PlayerInfo[playerid][prank] >= 4) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1327. {
  1328. PlayerInfo[playerid][pmaterials] -= 500;
  1329. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали AK-47 с 100 патронами!");
  1330. GivePlayerWeapon(playerid, 30,100);
  1331. }
  1332. }
  1333. case 5:
  1334. {
  1335. if(PlayerInfo[playerid][pmaterials] >= 320 && PlayerInfo[playerid][prank] >= 4) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1336. {
  1337. PlayerInfo[playerid][pmaterials] -= 320;
  1338. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали дробовик с 100 патронами!");
  1339. GivePlayerWeapon(playerid, 25,100);
  1340. }
  1341. }
  1342. case 6:
  1343. {
  1344. if(PlayerInfo[playerid][pmaterials] >= 450 && PlayerInfo[playerid][prank] >= 5) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1345. {
  1346. PlayerInfo[playerid][pmaterials] -= 450;
  1347. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали Combat-shotgun с 100 патронами!");
  1348. GivePlayerWeapon(playerid, 27,100);
  1349. }
  1350. }
  1351. case 7:
  1352. {
  1353. if(PlayerInfo[playerid][pmaterials] >= 1000 && PlayerInfo[playerid][prank] >= 8) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1354. {
  1355. PlayerInfo[playerid][pmaterials] -= 1000;
  1356. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали Sniper с 100 патронами!");
  1357. GivePlayerWeapon(playerid, 34,100);
  1358. }
  1359. }
  1360. case 8:
  1361. {
  1362. if(PlayerInfo[playerid][pmaterials] >= 430 && PlayerInfo[playerid][prank] >= 3) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1363. {
  1364. PlayerInfo[playerid][pmaterials] -= 430;
  1365. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали SMG с 100 патронами!");
  1366. GivePlayerWeapon(playerid, 29,100);
  1367. }
  1368. }
  1369. case 9:
  1370. {
  1371. if(PlayerInfo[playerid][pmaterials] >= 400 && PlayerInfo[playerid][prank] >= 3) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно материалов! Или слишком маленький ранг");
  1372. {
  1373. PlayerInfo[playerid][pmaterials] -= 400;
  1374. SendClientMessage(playerid,0xFFFFFFFF, "Вы сделали UZI с 100 патронами!");
  1375. GivePlayerWeapon(playerid,  28,100);
  1376. }
  1377. return 1;
  1378. }
  1379. }
  1380.  
  1381. return 1;
  1382. }
  1383. /*"Пистолет 300 Материалов\nПистолет с глушителем 250 Материалов\nDeagle 400 Материалов\nМ4 570 Материалов\nАК-47 500 Материалов\n
  1384. Дробовик 320 Материалов\nCombat-shotgun 450 Материалов\nSniper 1000 Материалов\nSMG 430 Материалов\nUZI 400 Материалов
  1385. */
  1386. case 120:
  1387. {
  1388. eGivePlayerMoney(playerid, PlayerInfo[playerid][pbank]);
  1389. PlayerInfo[playerid][pbank] = 0;
  1390. SendClientMessage(playerid,COLOR_GREEN,"Вы сняли все деньги с счёта!");
  1391. return 1;
  1392. }
  1393. case DIALOG_SUCCESS_1:
  1394. {
  1395. if(PlayerInfo[playerid][plvl] >= 1)
  1396.     {
  1397.     SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  1398.     }
  1399. if(PlayerInfo[playerid][plvl] >= 5)
  1400.     {
  1401.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  1402.     }
  1403. if(PlayerInfo[playerid][plvl] >= 10)
  1404.     {
  1405.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  1406.     }
  1407.     if(PlayerInfo[playerid][pwarns] >= 10)
  1408.     {
  1409.     SendClientMessage(playerid, COLOR_RED, "Вы были забанины за большое количиство предупреждений!");
  1410.     SetTimerEx("DelayedBan", 1000, false, "d", playerid);
  1411.     }
  1412. return 1;
  1413. }
  1414. case DIALOG_SUCCESS_2:
  1415. {
  1416. if(PlayerInfo[playerid][plvl] >= 1)
  1417.     {
  1418.     SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  1419.     }
  1420. if(PlayerInfo[playerid][plvl] >= 5)
  1421.     {
  1422.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  1423.     }
  1424. if(PlayerInfo[playerid][plvl] >= 10)
  1425.     {
  1426.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  1427.     }
  1428.     if(PlayerInfo[playerid][pwarns] >= 10)
  1429.     {
  1430.     SendClientMessage(playerid, COLOR_RED, "Вы были забанины за большое количиство предупреждений!");
  1431.     SetTimerEx("DelayedBan", 1000, true, "d", playerid);
  1432.     }
  1433. return 1;
  1434. }
  1435. case 113:
  1436. {
  1437. if(strlen(inputtext) > 0)
  1438. {
  1439. new amount = strval(inputtext);
  1440. PlayerInfo[playerid][pcolor2] = amount;
  1441. ShowPlayerDialog(playerid, 114, DIALOG_STYLE_INPUT, "Смена цвета машины", "Введите ID Цвета 2:", "Сменить", "Отмена");
  1442. SendClientMessage(playerid,COLOR_GREEN,"Цвет 1 установлен!");
  1443. }
  1444. else
  1445. {
  1446. SendClientMessage(playerid,COLOR_GREY,"Недостаточно параметров");
  1447. }
  1448. }
  1449. case 202:
  1450. {
  1451. if(strlen(inputtext) > 0)
  1452. {
  1453. new amount = strval(inputtext);
  1454. PlayerInfo[playerid][pgruz] = amount;
  1455. eGivePlayerMoney(playerid, -amount*5);
  1456. SendClientMessage(playerid,COLOR_GREEN,"Вы загрузли груз!");
  1457. return 1;
  1458. }
  1459. else
  1460. {
  1461. SendClientMessage(playerid,COLOR_GREY,"Недостаточно параметров");
  1462. return 1;
  1463. }
  1464. }
  1465. case 114:
  1466. {
  1467. if(strlen(inputtext) > 0)
  1468. {
  1469. new amount = strval(inputtext);
  1470. PlayerInfo[playerid][pcolor2] = amount;
  1471. SendClientMessage(playerid,COLOR_GREEN,"Цвет 2 установлен!");
  1472. }
  1473. else
  1474. {
  1475. SendClientMessage(playerid,COLOR_GREY,"Недостаточно параметров");
  1476. }
  1477. }
  1478. case 153:
  1479. {
  1480. if(strlen(inputtext) > 0)
  1481. {
  1482. new skin1 = strval(inputtext);
  1483. if(eGetPlayerMoney(playerid) < skin1*10) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1484. {
  1485. PlayerInfo[playerid][pskin] = skin1;
  1486. SetPlayerSkin(playerid, skin1);
  1487. eGivePlayerMoney(playerid, -skin1*10);
  1488. }
  1489. SendClientMessage(playerid,COLOR_GREEN,"Скин установлен!");
  1490. }
  1491. else
  1492. {
  1493. SendClientMessage(playerid,COLOR_GREY,"Недостаточно параметров");
  1494. }
  1495. }
  1496. case 112:
  1497. {
  1498. switch(listitem)
  1499. {
  1500. case 0:
  1501. {
  1502. if(eGetPlayerMoney(playerid) < 500000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1503. {
  1504. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1505. eGivePlayerMoney(playerid, -500000);
  1506. PlayerInfo[playerid][pmashina] = 411;
  1507. }
  1508. }
  1509. case 1: // The second listitem
  1510. {
  1511. if(eGetPlayerMoney(playerid) < 300000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1512. {
  1513. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1514. eGivePlayerMoney(playerid, -300000);
  1515. PlayerInfo[playerid][pmashina] = 451;
  1516. }
  1517. }
  1518. case 2: // The third listitem
  1519. {
  1520. if(eGetPlayerMoney(playerid) < 20000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1521. {
  1522. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1523. eGivePlayerMoney(playerid, -200000);
  1524. PlayerInfo[playerid][pmashina] = 559;
  1525. }
  1526. }
  1527. case 3: // The third listitem
  1528. {
  1529. if(eGetPlayerMoney(playerid) < 100000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1530. {
  1531. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1532. eGivePlayerMoney(playerid, -100000);
  1533. PlayerInfo[playerid][pmashina] = 494;
  1534. }
  1535. }
  1536. case 4: // The third listitem
  1537. {
  1538. if(eGetPlayerMoney(playerid) < 90000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1539. {
  1540. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1541. eGivePlayerMoney(playerid, -90000);
  1542. PlayerInfo[playerid][pmashina] = 560;
  1543. }
  1544. }
  1545. case 5: // The third listitem
  1546. {
  1547. if(eGetPlayerMoney(playerid) < 210000) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1548. {
  1549. SendClientMessage(playerid,0xFFFFFFFF, "Машина куплена! чтобы заспавнить введите: /spawncar");
  1550. eGivePlayerMoney(playerid, -210000);
  1551. PlayerInfo[playerid][pmashina] = 541;
  1552. }
  1553. }
  1554. }
  1555. }
  1556. case 361:
  1557. {
  1558. switch(listitem)
  1559. {
  1560. case 0: // Просто инфа
  1561. {
  1562. return 1;
  1563. }
  1564. case 1: // Закрыить дом
  1565. {
  1566.             for(new h=1;h<=m_h;h++)
  1567.             {
  1568.                 if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[
  1569. h][hY],House[h][hZ]))continue;
  1570.                 if(strcmp(House[h][hOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от этого дома!"); // Сравниваем владельца дома с ником игрока, если не совпадает - выводим сообщение
  1571.                 if(House[h][hLock]==0)House[h][hLock]=1,SaveHouse(h),
  1572. GameTextForPlayer(playerid,"~r~House locked",100,1); // если дом открыт - закрываем (0 открыт / 1 закрыт)
  1573.                 else if(House[h][hLock]==1)return SendClientMessage(playerid,-1,"Дом уже закрыт!"); // иначе выводим сообщение
  1574.                         return 1;
  1575.                 }
  1576.             return 1;
  1577. }
  1578. case 2: // Открыть дом
  1579. {
  1580.             for(new h=1;h<=m_h;h++)
  1581.             {
  1582.                 if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[
  1583. h][hY],House[h][hZ]))continue;
  1584.                 if(strcmp(House[h][hOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от этого дома!");
  1585.                 if(House[h][hLock]==1)House[h][hLock]=0,SaveHouse(h),
  1586. GameTextForPlayer(playerid,"~g~House unlocked",100,1);
  1587.                 else if(House[h][hLock]==0)return SendClientMessage(playerid,-1,"Дом уже открыт!");
  1588.                         return 1;
  1589.                 }
  1590.             return 1;
  1591. }
  1592. case 3: // Спавн машины
  1593. {
  1594. new Float:x, Float:y, Float:z;
  1595. GetPlayerPos(playerid, x, y, z);
  1596. if(eGetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1597. {
  1598. if(spawnedcars[playerid] > 1) return SendClientMessage(playerid, COLOR_RED, "Вы наспавнили очень много машин! Ждите 5 минут чтобы заспавнить опять!");
  1599. GameTextForPlayer(playerid, "~g~Car spawn ~r~-500$", 5000, 1);
  1600. eGivePlayerMoney(playerid, -500);
  1601. CreateVehicle(PlayerInfo[playerid][pmashina], x, y, z, 82.2873, PlayerInfo[playerid][pcolor1], PlayerInfo[playerid][pcolor2], 60);
  1602. }
  1603. }
  1604. case 4: // player info
  1605. {
  1606. new string[950];
  1607. new name[MAX_PLAYER_NAME];
  1608. GetPlayerName(playerid, name, sizeof(name));
  1609. format(string, sizeof(string), "ID: %d\nИмя: %s\nУровень: %d\nЛицензии: %d\nОпыт: %d\nПредупреждений: %d\nФракция %d\nРанг: %d\nДенег: %d", playerid, name, PlayerInfo[playerid][plvl], PlayerInfo[playerid][plices], PlayerInfo[playerid][pexp],PlayerInfo[playerid][pwarns], PlayerInfo[playerid][pfaction], PlayerInfo[playerid][prank], PlayerInfo[playerid][pCash]);
  1610. ShowPlayerDialog(playerid, 991, DIALOG_STYLE_MSGBOX, "Информация об игроке", string, "Ок", "");
  1611. }
  1612. }
  1613. return 1;
  1614. }
  1615. case DIALOG_LOGIN:
  1616. {
  1617. if ( !response ) return Kick ( playerid );
  1618. if( response )
  1619. {
  1620. if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
  1621. {
  1622. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  1623. eGivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
  1624. ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_MESSAGE"Успех!",""COL_SUSCESS"Вы вошли успешно, нажмите Spawn чтобы продолжить!","ок","");
  1625. islogged[playerid] = 1;
  1626. if(PlayerInfo[playerid][plvl] >= 1)
  1627.     {
  1628.     SetPlayerPos(playerid, -1970.5852, 147.8871, 27.6875);
  1629.     }
  1630. if(PlayerInfo[playerid][plvl] >= 5)
  1631.     {
  1632.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  1633.     }
  1634. if(PlayerInfo[playerid][plvl] >= 10)
  1635.     {
  1636.     SetPlayerPos(playerid, 1771.2465,-1895.7551,13.5552);
  1637.     }
  1638.     if(PlayerInfo[playerid][pwarns] >= 10)
  1639.     {
  1640.     SendClientMessage(playerid, COLOR_RED, "Вы были забанины за большое количиство предупреждений!");
  1641.     SetTimerEx("DelayedBan", 1000, false, "d", playerid);
  1642.     }
  1643. TogglePlayerSpectating(playerid,0);
  1644. }
  1645. else
  1646. {
  1647. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_MESSAGE"Вход",""COL_ERROR"Неверный пароль!\n"COL_MESSAGE"Этот ник зарегистрирован. Введите свой пароль:","Вход","Выход");
  1648. }
  1649. return 1;
  1650. }
  1651. }
  1652. }
  1653. return 1;
  1654. }
  1655.  
  1656. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  1657. {
  1658. new string[128];
  1659. format(string,128,"Статистика игрока: %d Уровень: %d Машина: %d Отель: %d",clickedplayerid, PlayerInfo[clickedplayerid][plvl], PlayerInfo[clickedplayerid][pmashina], PlayerInfo[clickedplayerid][photel]);
  1660. SendClientMessage(playerid,-1,string);
  1661. }
  1662.  
  1663.  
  1664. CMD:sms(playerid, params[])
  1665. {
  1666. new string[200], message[100], id;
  1667. if(sscanf(params,"us",id,message))
  1668. return SendClientMessage(playerid, -1, "Используйте: /sms <id> <message>");
  1669. format(string, sizeof(string), "SMS от игрока с id %d: %s", playerid,message);
  1670. PlayerPlaySound(playerid, 45400, 0.0, 0.0, 0.0);
  1671. GameTextForPlayer(playerid, "~g~SMS ~r~-5$", 5000, 1);
  1672. eGivePlayerMoney(playerid, -5);
  1673. SendClientMessage(id, COLOR_BLUE, string);
  1674. return 1;
  1675. }
  1676. CMD:spawncar(playerid, params[])
  1677. {
  1678. new Float:x, Float:y, Float:z;
  1679. GetPlayerPos(playerid, x, y, z);
  1680. if(eGetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, 0xFFFFFF, "Недостаточно денег!");
  1681. {
  1682. if(spawnedcars[playerid] > 1) return SendClientMessage(playerid, COLOR_RED, "Вы наспавнили очень много машин! Ждите 5 минут чтобы заспавнить опять!");
  1683. GameTextForPlayer(playerid, "~g~Car spawn ~r~-500$", 5000, 1);
  1684. eGivePlayerMoney(playerid, -500);
  1685. CreateVehicle(PlayerInfo[playerid][pmashina], x, y, z, 82.2873, PlayerInfo[playerid][pcolor1], PlayerInfo[playerid][pcolor2], 60);
  1686. }
  1687. return 1;
  1688. }
  1689.  
  1690. CMD:terminal(playerid, params[])
  1691. {
  1692. if (PlayerInfo[playerid][pterminal] == 1)
  1693. {
  1694. ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Банкомат (удалённый терминал)", "Вы действительно хотите снять все деньги с счёта?", "Да", "Нет");
  1695. }
  1696. if (PlayerInfo[playerid][pterminal] == 0)
  1697. {
  1698. SendClientMessage(playerid, COLOR_RED, "У вас нет портативного терминала!");
  1699. }
  1700. }
  1701. CMD:stats(playerid, params[])
  1702. {
  1703. new string[128];
  1704. format(string,128,"Статистика игрока: %d Уровень: %d Машина: %d",playerid, PlayerInfo[playerid][plvl], PlayerInfo[playerid][pmashina]);
  1705. SendClientMessage(playerid,-1 ,string);
  1706. }
  1707. CMD:lic(playerid, params[])
  1708. {
  1709. new string[128];
  1710. format(string,128,"Лицензии игрока: %d Уровень лицензии: %d Введите /idinfo чтобы узнать id и уровни лицензий",playerid, PlayerInfo[playerid][plices]);
  1711. SendClientMessage(playerid,-1 ,string);
  1712. }
  1713. CMD:idnfo(playerid, params[])
  1714. {
  1715. ShowPlayerDialog(playerid, 163, DIALOG_STYLE_MSGBOX, COL_SUSCESS"Список id", "ID домов и отелей:\n0 - Нет\n1 - Отель SF\n2 - Отель LS\n3 - Отель LV\n 4 - Малая квартира\n 5 - Средняя квартира\n 6 - Премиум квартира \n Уровни лицензий: \n1 - Только на вождение \n2 - На вождение и полёт \n3 - На вождение, оружие, и полёт \n4- На вождение, оружие, полёт, и на водный транспорт", "ok", "");
  1716. return 1;
  1717. }
  1718. COMMAND:attachobject(playerid, params[])
  1719. {
  1720.  if (IsPlayerAdmin(playerid))
  1721.     {
  1722.         new
  1723.         toplayerid,
  1724.         objectid,
  1725.         partid;
  1726.         if (!sscanf(params, "iii", toplayerid, objectid, partid))
  1727.         {
  1728.           if (toplayerid != INVALID_PLAYER_ID)
  1729.           {
  1730.             new message[40];
  1731.             SetPlayerAttachedObject(toplayerid, 2, objectid, partid, 0.13, 0.0, 0.0, 0.0, 90.0, 90.0);
  1732.             format(message, sizeof(message), "Вам установили объект: %d", objectid);
  1733.             SendClientMessage(toplayerid, 0x00FF00FF, message);
  1734.           }
  1735.           else SendClientMessage(playerid, 0xFF0000FF, "Этот игрок не подключён!");
  1736.         }
  1737.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /attachobject <playerid> <id объекта> <id части тела>");
  1738.     }
  1739.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна эта команда!");
  1740.     return 1;
  1741. }
  1742.  
  1743.  
  1744. COMMAND:givelic(playerid, params[])
  1745. {
  1746.  if (IsPlayerAdmin(playerid))
  1747.     {
  1748.         new
  1749.         toplayerid;
  1750.         if (!sscanf(params, "i", toplayerid))
  1751.         {
  1752.           if (toplayerid != INVALID_PLAYER_ID)
  1753.           {
  1754.             PlayerInfo[playerid][plices]++;
  1755.             SendClientMessage(toplayerid, 0x00FF00FF, "Вам повысили уровень лицензии!");
  1756.           }
  1757.           else SendClientMessage(playerid, 0xFF0000FF, "Этот игрок не подключён!");
  1758.         }
  1759.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /givelic <playerid> <id объекта> <id части тела>");
  1760.     }
  1761.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна эта команда!");
  1762.     return 1;
  1763. }
  1764. COMMAND:joinfaction(playerid, params[])
  1765. {
  1766.  if (IsPlayerAdmin(playerid))
  1767.     {
  1768.         new
  1769.         toplayerid,
  1770.         rank,
  1771.         factionid;
  1772.         if (!sscanf(params, "iii", toplayerid, factionid))
  1773.         {
  1774.           if (toplayerid != INVALID_PLAYER_ID)
  1775.           {
  1776.             new message[40];
  1777.             PlayerInfo[playerid][pfaction] = factionid;
  1778.             format(message, sizeof(message), "Вы вступили в фракцию: %d", factionid);
  1779.             SetPlayerHealth(playerid, 0.0);
  1780.             SendClientMessage(toplayerid, 0x00FF00FF, message);
  1781.           }
  1782.           else SendClientMessage(playerid, 0xFF0000FF, "Этот игрок не подключён!");
  1783.         }
  1784.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /joinfaction <playerid> <id фракции> <ранг 1-8>");
  1785.     }
  1786.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна эта команда!");
  1787.     return 1;
  1788. }
  1789. COMMAND:factionstats(playerid, params[])
  1790. {
  1791.     new message[40];
  1792.     if(PlayerInfo[playerid][pfaction] == 10)
  1793.     {
  1794.     format(message, sizeof(message), "Уровень нашей банды: %d", factionlevel1);
  1795.     SendClientMessage(playerid, -1, message);
  1796.     }
  1797.     if(PlayerInfo[playerid][pfaction] == 9)
  1798.     {
  1799.     format(message, sizeof(message), "Уровень нашей банды: %d", factionlevel2);
  1800.     SendClientMessage(playerid, -1, message);
  1801.     }
  1802.     if(PlayerInfo[playerid][pfaction] == 8)
  1803.     {
  1804.     format(message, sizeof(message), "Уровень нашей банды: %d", factionlevel3);
  1805.     SendClientMessage(playerid, -1, message);
  1806.     }
  1807.     return 1;
  1808. }
  1809. COMMAND:ban(playerid, params[])
  1810. {
  1811.     if (IsPlayerAdmin(playerid))
  1812.     {
  1813.         new
  1814.           toplayerid,
  1815.           reason[128];
  1816.         if (!sscanf(params, "is", toplayerid, reason))
  1817.         {
  1818.           if (toplayerid != INVALID_PLAYER_ID)
  1819.           {
  1820.  
  1821.             new
  1822.             message[128];
  1823.             new name[MAX_PLAYER_NAME];
  1824.             new name1[MAX_PLAYER_NAME];
  1825.              GetPlayerName(playerid, name, sizeof(name));
  1826.             GetPlayerName(toplayerid, name1, sizeof(name1));
  1827.             format(message, sizeof(message), "Вас забанили причина: %s", reason);
  1828.             PlayerPlaySound(playerid, 5206, 0.0, 0.0, 0.0);
  1829.             SendClientMessage(toplayerid, 0x00FF00FF, message);
  1830.             SetTimerEx("DelayedBan", 1000, false, "d", toplayerid);
  1831.             format(message, sizeof(message), "Администратор %s забанил игрока %s с причиной: %s", name, name1, reason);
  1832.             SendClientMessageToAll(COLOR_RED, message);
  1833.           }
  1834.           else SendClientMessage(playerid, 0xFF0000FF, "Этот игрок не подключён, используйте /offban");
  1835.         }
  1836.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /ban <id> <причина>");
  1837.     }
  1838.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна данная функция!");
  1839.     return 1;
  1840. }
  1841. COMMAND:kick(playerid, params[])
  1842. {
  1843.     if (IsPlayerAdmin(playerid))
  1844.     {
  1845.         new
  1846.           toplayerid,
  1847.           reason[128];
  1848.         if (!sscanf(params, "is", toplayerid, reason))
  1849.         {
  1850.           if (toplayerid != INVALID_PLAYER_ID)
  1851.           {
  1852.             new
  1853.             message[128];
  1854.             new name[MAX_PLAYER_NAME];
  1855.             new name1[MAX_PLAYER_NAME];
  1856.              GetPlayerName(playerid, name, sizeof(name));
  1857.               GetPlayerName(toplayerid, name1, sizeof(name1));
  1858.             format(message, sizeof(message), "Администратор %s кикнул вас причина: %s", name, reason);
  1859.             SendClientMessage(toplayerid, COLOR_RED, message);
  1860.             PlayerPlaySound(playerid, 5206, 0.0, 0.0, 0.0);
  1861.             SetTimerEx("DelayedKick", 1000, false, "d", toplayerid);
  1862.             format(message, sizeof(message), "Администратор %s кикнул игрока %s с причиной: %s", name, name1, reason);
  1863.             SendClientMessageToAll(COLOR_RED, message);
  1864.           }
  1865.           else SendClientMessage(playerid, 0xFF0000FF, "Этот игрок не подключён!");
  1866.         }
  1867.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /kick <id> <причина>");
  1868.     }
  1869.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна данная функция!");
  1870.     return 1;
  1871. }
  1872. COMMAND:warn(playerid, params[])
  1873. {
  1874.  if (IsPlayerAdmin(playerid))
  1875.     {
  1876.         new
  1877.           toplayerid,
  1878.           reason[128];
  1879.         if (!sscanf(params, "is", toplayerid, reason))
  1880.         {
  1881.           if (toplayerid != INVALID_PLAYER_ID)
  1882.           {
  1883.             new
  1884.             message[128];
  1885.             new name[MAX_PLAYER_NAME];
  1886.             new name1[MAX_PLAYER_NAME];
  1887.              GetPlayerName(playerid, name, sizeof(name));
  1888.               GetPlayerName(toplayerid, name1, sizeof(name1));
  1889.             PlayerInfo[toplayerid][pwarns]++;
  1890.             format(message, sizeof(message), "Администратор %s выдал вам предупреждение с причиной: %s. У вас уже %d/10 предупреждений, если вы продолжите нарушать правила, вас забанят!", name, reason, PlayerInfo[playerid][pwarns]);
  1891.             SendClientMessage(toplayerid, COLOR_RED, message);
  1892.             if(PlayerInfo[toplayerid][pwarns] >= 10)
  1893.             {
  1894.             Kick(toplayerid);
  1895.             }
  1896.             PlayerPlaySound(playerid, 5206, 0.0, 0.0, 0.0);
  1897.             format(message, sizeof(message), "Администратор %s выдал предупреждение игроку %s с причиной: %s", name, name1, reason);
  1898.             SendClientMessageToAll(COLOR_RED, message);
  1899.           }
  1900.           else SendClientMessage(playerid, 0xFF0000FF, "Этот игрок не подключён!");
  1901.         }
  1902.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /warn <id> <причина>");
  1903.     }
  1904.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна данная функция!");
  1905.     return 1;
  1906. }
  1907. COMMAND:playsound(playerid, params[])
  1908. {
  1909.  if (IsPlayerAdmin(playerid))
  1910.     {
  1911.         new
  1912.           soundid;
  1913.         if (!sscanf(params, "i", soundid))
  1914.         {
  1915.         PlayerPlaySound(playerid, soundid, 0.0, 0.0, 0.0);
  1916.         }
  1917.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /playsound <id звука>");
  1918.     }
  1919.     else SendClientMessage(playerid, COLOR_RED, "Вам недоступна данная функция!");
  1920.     return 1;
  1921. }
  1922.  
  1923. COMMAND:makegun(playerid, params[])
  1924. {
  1925.  if (PlayerInfo[playerid][pfaction] == 10 || PlayerInfo[playerid][pfaction] == 9 || PlayerInfo[playerid][pfaction] == 8)
  1926.     {
  1927.     ShowPlayerDialog(playerid, 207, DIALOG_STYLE_LIST, "Сделать...", "Пистолет 300 Материалов\nПистолет с глушителем 250 Материалов\nDeagle 400 Материалов\nМ4 570 Материалов\nАК-47 500 Материалов\nДробовик 320 Материалов\nCombat-shotgun 450 Материалов\nSniper 1000 Материалов\nSMG 430 Материалов\nUZI 400 Материалов", "Купить", "Закрыть");
  1928.     }
  1929.     return 1;
  1930. }
  1931. COMMAND:usemedkit(playerid, params[])
  1932. {
  1933. if (PlayerInfo[playerid][pheals] >= 1)
  1934. {
  1935. ended[playerid] = false;
  1936. ApplyAnimation( playerid, "VENDING", "VEND_EAT1_P", 4.1, 0, 1, 1, 1, 1 );
  1937. SetTimerEx("Applytimer", 1000, true, "d", playerid);
  1938. PlayerInfo[playerid][pheals]--;
  1939. }
  1940. if (PlayerInfo[playerid][pheals] < 1)
  1941. {
  1942. PlayerPlaySound(playerid, SOUND_ERROR, 0.0, 0.0, 0.0);
  1943. GameTextForPlayer(playerid, "~r~no medkits!", 1000, 1);
  1944. }
  1945. return 1;
  1946. }
  1947. COMMAND:usefood(playerid, params[])
  1948. {
  1949. if (PlayerInfo[playerid][pfood] >= 1)
  1950. {
  1951. ended[playerid] = false;
  1952. GameTextForPlayer(playerid, "~g~+50 ~r~hp", 1000, 1);
  1953. ApplyAnimation( playerid, "VENDING", "VEND_EAT1_P", 4.1, 0, 1, 1, 1, 1 );
  1954. SetTimerEx("ApplyFoodtimer", 1000, true, "d", playerid);
  1955. PlayerInfo[playerid][pfood]--;
  1956. }
  1957. if (PlayerInfo[playerid][pfood] < 1)
  1958. {
  1959. PlayerPlaySound(playerid, SOUND_ERROR, 0.0, 0.0, 0.0);
  1960. GameTextForPlayer(playerid, "~r~no food!", 1000, 1);
  1961. }
  1962. return 1;
  1963. }
  1964. COMMAND:pay(playerid, params[])
  1965. {
  1966.         new
  1967.           toplayerid,
  1968.           amount;
  1969.         if (!sscanf(params, "ii", toplayerid, amount))
  1970.         {
  1971.           if (toplayerid != INVALID_PLAYER_ID)
  1972.           {
  1973.             new
  1974.             message[40];
  1975.             if(eGetPlayerMoney(playerid) < amount) return SendClientMessage(playerid, COLOR_RED, "У вас не столько денег!");
  1976.             {
  1977.             eGivePlayerMoney(toplayerid, amount);
  1978.             eGivePlayerMoney(playerid, -amount);
  1979.             format(message, sizeof(message), "Вы получили %d$!", amount);
  1980.             SendClientMessage(toplayerid, 0x00FF00FF, message);
  1981.             }
  1982.           }
  1983.           else SendClientMessage(playerid, 0xFF0000FF, "Игрок не найден!");
  1984.         }
  1985.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /pay <id игрока> <сумма>");
  1986.         return 1;
  1987.     }
  1988. COMMAND:vehicle(playerid, params[])
  1989. {
  1990.     if (IsPlayerAdmin(playerid))
  1991.     {
  1992.         new
  1993.           carid;
  1994.         if (!sscanf(params, "i", carid))
  1995.         {
  1996.             new
  1997.               message[40];
  1998.             format(message, sizeof(message), "Машина с id %d созданна!", carid);
  1999.             SendClientMessage(playerid, 0x00FF00FF, message);
  2000.             new Float:x, Float:y, Float:z;
  2001.             GetPlayerPos(playerid, x, y, z);
  2002.             CreateVehicle(carid, x, y, z, 82.2873, PlayerInfo[playerid][pcolor1], PlayerInfo[playerid][pcolor2], 60);
  2003.         }
  2004.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /vehicle <id>");
  2005.     }
  2006.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2007.     return 1;
  2008. }
  2009. COMMAND:makepayday(playerid, params[])
  2010. {
  2011.  if (IsPlayerAdmin(playerid))
  2012.     {
  2013.     SendClientMessage(playerid, COLOR_GREEN, "Вы вызвали Payday!");
  2014.     payday();
  2015.     }
  2016.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2017.     return 1;
  2018. }
  2019. COMMAND:spectate(playerid, params[])
  2020. {
  2021.  if (IsPlayerAdmin(playerid))
  2022.     {
  2023.         new
  2024.           specid;
  2025.         if (!sscanf(params, "i", specid))
  2026.         {
  2027.             new
  2028.               message[40];
  2029.             format(message, sizeof(message), "Вы сейчас следите за игроком: %d", specid);
  2030.             SendClientMessage(playerid, 0x00FF00FF, message);
  2031.             TogglePlayerSpectating(playerid, 1);
  2032.             PlayerSpectatePlayer(playerid, specid);
  2033.  
  2034.         }
  2035.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /spectate <id>");
  2036.     }
  2037.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2038.     return 1;
  2039. }
  2040. COMMAND:spectateoff(playerid, params[])
  2041. {
  2042.  if (IsPlayerAdmin(playerid))
  2043.     {
  2044.     TogglePlayerSpectating(playerid, 0);
  2045.     GameTextForPlayer(playerid, "~w~SPECTATE ~r~OFF", 2000, 3);
  2046.     }
  2047.     return 1;
  2048. }
  2049. COMMAND:giveadmin(playerid, params[])
  2050. {
  2051.     if (IsPlayerAdmin(playerid))
  2052.     {
  2053.         new
  2054.           playertoadmin;
  2055.         if (!sscanf(params, "i", playertoadmin))
  2056.         {
  2057.             new
  2058.               message[80];
  2059.             PlayerInfo[playerid][pAdmin]++;
  2060.             format(message, sizeof(message), "Вам выдали админку уровня: %d", PlayerInfo[playerid][pAdmin]);
  2061.  
  2062.             SendClientMessage(playertoadmin, COLOR_GREEN, message);
  2063.             PlayerPlaySound(playertoadmin, SOUND_MESSAGE, 0.0, 0.0, 0.0);
  2064.         }
  2065.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /giveadmin <id>");
  2066.     }
  2067.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2068.     return 1;
  2069. }
  2070. /*
  2071. COMMAND:motd(playerid, params[])
  2072. {
  2073.     if (IsPlayerAdmin(playerid))
  2074.     {
  2075.         new
  2076.           motd[80];
  2077.         if (!sscanf(params, "s", motd))
  2078.         {
  2079.  
  2080.         }
  2081.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /setmotd <сообщение>");
  2082.     }
  2083.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2084.     return 1;
  2085. }
  2086. */
  2087. COMMAND:downgradeadmin(playerid, params[])
  2088. {
  2089.     if (IsPlayerAdmin(playerid))
  2090.     {
  2091.         new
  2092.           playertoadmin;
  2093.         if (!sscanf(params, "i", playertoadmin))
  2094.         {
  2095.             new
  2096.               message[80];
  2097.             format(message, sizeof(message), "Вы выдали понизили уровень админки игроку с  id: %d уровень админики: %d", playertoadmin, PlayerInfo[playerid][pAdmin]);
  2098.             SendClientMessage(playerid, COLOR_BLUE, message);
  2099.             PlayerInfo[playerid][pAdmin]--;
  2100.             format(message, sizeof(message), "Вам понизили админку теперь ваш уровень: %d", PlayerInfo[playerid][pAdmin]);
  2101.             SendClientMessage(playertoadmin, COLOR_RED, message);
  2102.             PlayerPlaySound(playertoadmin, SOUND_ERROR, 0.0, 0.0, 0.0);
  2103.         }
  2104.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /downgradeadmin <id>");
  2105.     }
  2106.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2107.     return 1;
  2108. }
  2109. COMMAND:getmaterials(playerid, params[])
  2110. {
  2111.     new needmaterials;
  2112.     if (!sscanf(params, "i", needmaterials))
  2113.     {
  2114.     if (PlayerInfo[playerid][pfaction] == 10 || PlayerInfo[playerid][pfaction] == 9 || PlayerInfo[playerid][pfaction] == 8)
  2115.     {
  2116.  
  2117.     if (PlayerInfo[playerid][prank] >= 2 && PlayerInfo[playerid][pfaction] == 10)
  2118.     {
  2119.     if (Materials1 >= needmaterials)
  2120.     {
  2121.     Materials1 -= needmaterials;
  2122.     PlayerInfo[playerid][pmaterials] += needmaterials;
  2123.     new name[MAX_PLAYER_NAME];
  2124.     GetPlayerName(playerid, name, sizeof(name));
  2125.     new message[40];
  2126.     format(message, sizeof(message), "%s %d ранга: Взял материалы в размере %d штук", name, PlayerInfo[playerid][prank], needmaterials);
  2127.     SendTeamMessage(COLOR_YELLOW, message, 10);
  2128.     }
  2129.     }
  2130.     if (PlayerInfo[playerid][prank] >= 2 && PlayerInfo[playerid][pfaction] == 9)
  2131.     {
  2132.     if (Materials2 >= needmaterials)
  2133.     {
  2134.     Materials1 -= needmaterials;
  2135.     PlayerInfo[playerid][pmaterials] += needmaterials;
  2136.     new name[MAX_PLAYER_NAME];
  2137.     GetPlayerName(playerid, name, sizeof(name));
  2138.     new message[40];
  2139.     format(message, sizeof(message), "%s %d ранга: Взял материалы в размере %d штук", name, PlayerInfo[playerid][prank], needmaterials);
  2140.     SendTeamMessage(COLOR_YELLOW, message, 9);
  2141.     }
  2142.     }
  2143. if (PlayerInfo[playerid][prank] >= 2 && PlayerInfo[playerid][pfaction] == 8)
  2144.     {
  2145.     if (Materials3 >= needmaterials)
  2146.     {
  2147.     Materials3 -= needmaterials;
  2148.     PlayerInfo[playerid][pmaterials] += needmaterials;
  2149.     new name[MAX_PLAYER_NAME];
  2150.     GetPlayerName(playerid, name, sizeof(name));
  2151.     new message[40];
  2152.     format(message, sizeof(message), "%s %d ранга: Взял материалы в размере %d штук", name, PlayerInfo[playerid][prank], needmaterials);
  2153.     SendTeamMessage(COLOR_YELLOW, message, 8);
  2154.     }
  2155.     }
  2156.     }
  2157.     else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /getmaterials <количество>");
  2158.     }
  2159.     return 1;
  2160. }
  2161. COMMAND:rankup(playerid, params[])
  2162. {
  2163.     if (PlayerInfo[playerid][prank] == 8)
  2164.     {
  2165.         new
  2166.           playertorank;
  2167.         if (!sscanf(params, "i", playertorank))
  2168.         {
  2169.             new
  2170.             message[40];
  2171.             PlayerInfo[playerid][prank]++;
  2172.             format(message, sizeof(message), "Вас повысили до %d ранга", PlayerInfo[playerid][prank]);
  2173.             SendClientMessage(playertorank, COLOR_GREEN, message);
  2174.             PlayerPlaySound(playertorank, SOUND_MESSAGE, 0.0, 0.0, 0.0);
  2175.         }
  2176.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /rankup <id>");
  2177.     }
  2178.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2179.     return 1;
  2180. }
  2181. COMMAND:rankdown(playerid, params[])
  2182. {
  2183.     if (PlayerInfo[playerid][prank] == 8)
  2184.     {
  2185.         new
  2186.           playertorank;
  2187.         if (!sscanf(params, "i", playertorank))
  2188.         {
  2189.             new
  2190.             message[40];
  2191.             PlayerInfo[playerid][prank]--;
  2192.             format(message, sizeof(message), "Вас повысили до %d ранга", PlayerInfo[playerid][prank]);
  2193.             SendClientMessage(playertorank, COLOR_GREEN, message);
  2194.             PlayerPlaySound(playertorank, SOUND_ERROR, 0.0, 0.0, 0.0);
  2195.         }
  2196.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /rankup <id>");
  2197.     }
  2198.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2199.     return 1;
  2200. }
  2201. COMMAND:invite(playerid, params[])
  2202. {
  2203.     if (PlayerInfo[playerid][prank] == 10)
  2204.     {
  2205.         new
  2206.           playertoinvite;
  2207.         if (!sscanf(params, "i", playertoinvite))
  2208.         {
  2209.             SendClientMessage(playertoinvite, COLOR_GREEN, "Вас приняли в фракцию");
  2210.             PlayerPlaySound(playertoinvite, SOUND_ERROR, 0.0, 0.0, 0.0);
  2211.             PlayerInfo[playertoinvite][pfaction] = PlayerInfo[playerid][pfaction];
  2212.             PlayerInfo[playertoinvite][pfaction] = 1;
  2213.         }
  2214.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /invite <id>");
  2215.     }
  2216.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2217.     return 1;
  2218. }
  2219. COMMAND:expel(playerid, params[])
  2220. {
  2221.     if (PlayerInfo[playerid][prank] == 10)
  2222.     {
  2223.         new
  2224.           playertoinvite;
  2225.         if (!sscanf(params, "i", playertoinvite))
  2226.         {
  2227.             SendClientMessage(playertoinvite, COLOR_GREEN, "Вас выгнали из фракции!");
  2228.             PlayerPlaySound(playertoinvite, SOUND_ERROR, 0.0, 0.0, 0.0);
  2229.             PlayerInfo[playertoinvite][pfaction] = 0;
  2230.             SetPlayerHealth(playerid, 0.0);
  2231.             PlayerInfo[playertoinvite][prank] = 0;
  2232.         }
  2233.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /expel <id>");
  2234.     }
  2235.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2236.     return 1;
  2237. }
  2238. COMMAND:g(playerid, params[])
  2239. {
  2240.     if (PlayerInfo[playerid][plvl] >= 3)
  2241.     {
  2242.         new chatmessage[80];
  2243.         if (!sscanf(params, "s", chatmessage))
  2244.         {
  2245.             new message[100];
  2246.             new name[MAX_PLAYER_NAME];
  2247.             GetPlayerName(playerid, name, sizeof(name));
  2248.             format(message, sizeof(message), "[Общий] %s: %s",name, chatmessage);
  2249.             SendClientMessageToAll(COLOR_YELLOW, message);
  2250.         }
  2251.         else SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /g <сообщение>");
  2252.     }
  2253.     else SendClientMessage(playerid, 0xFF0000FF, "Вам недоступна данная функция");
  2254.     return 1;
  2255. }
  2256. COMMAND:maskon(playerid, params[])
  2257. {
  2258.     if(Mask[playerid] == 1)
  2259.     {
  2260.     SetPlayerColor(playerid, 0xFFFFFFFF);
  2261.     GameTextForPlayer(playerid, "~w~INVISIBLE ~r~ON ~w~To turn off type /maskoff", 5000, 4);
  2262.     }
  2263.     else SendClientMessage(playerid, 0xFF0000FF, "У вас нет маски купите в 24/7");
  2264.     return 1;
  2265. }
  2266. COMMAND:maskoff(playerid, params[])
  2267. {
  2268.     if(Mask[playerid] = 0)
  2269.     {
  2270.     SetPlayerColor(playerid, 0xFFFFFF00);
  2271.     GameTextForPlayer(playerid, "~w~INVISIBLE ~r~OFF ~w~To turn on type /maskon", 5000, 4);
  2272.     }
  2273.     else SendClientMessage(playerid, 0xFF0000FF, "У вас нет маски купите в 24/7");
  2274.     return 1;
  2275. }
  2276. // ------- ДЛЯ АДМИНА ---------
  2277. COMMAND:acreatehome(playerid, params[])
  2278. {
  2279. // Проверка на администратора, пример: if(PlayerInfo[playerid][pAdmin]==0)return SendClientMessage(playerid,-1,"У вас не хватает доступа к данной команде!");
  2280. ShowPlayerDialog(playerid,D_H_CREATE_DESC,DIALOG_STYLE_INPUT,"Создание дома - описание","Введите описание для дома.","Далее","Закрыть"); // Создаем диалог
  2281. return 1;
  2282. }
  2283. COMMAND:ahlock(playerid, params[])
  2284.   {
  2285.                 // Проверка на администратора
  2286.             for(new h=1;h<=m_h;h++) // запускаем цикл
  2287.                 {
  2288.                     if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[h][hY],House[h][hZ]))continue; // узнаем, стоит ли игрок рядом с одним из домов или нет (если нет, пропускаем оператором continue)
  2289.                     if(House[h][hLock]==1)House[h][hLock]=0,GameTextForPlayer(playerid,"~g~House unlocked",100,1); // если замок дома закрыт - открываем
  2290.                     else House[h][hLock]=1,GameTextForPlayer(playerid,"~r~House locked",100,1); // если открыт - закрываем
  2291.                         SaveHouse(h); // сохраняем дом
  2292.                         return 1;
  2293.                 }
  2294.             return 1;
  2295.     }
  2296. COMMAND:buyhouse(playerid, params[])
  2297.       {
  2298.                 for(new h=1;h<=m_h;h++)
  2299.                 {
  2300.                     if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[h][hY],House[h][hZ]))continue;
  2301.                         if(GetPlayerMoney(playerid)<House[h][hPrice])return SendClientMessage(playerid,-1,"У вас не хватает средств!"); // Проверяем наличие средств
  2302.                         if(strcmp(House[h][hOwner],"None",true)!=0)return SendClientMessage(playerid,-1,"Дом уже куплен!"); // узнаем есть ли владелец или нет при помощи сравнения строки
  2303.                         strmid(House[h][hOwner],Name(playerid),0,24,24),UpdateHouse(h); // если нет, записываем нового владельца, обновляем 3д ин-цию и меняем пикап дома
  2304.                         SaveHouse(h);
  2305.                         eGivePlayerMoney(playerid,-House[h][hPrice]); // снимаем деньги
  2306.                         SendClientMessage(playerid,COLOR_GREEN,"Вы успешно купили дом!");
  2307.                         PlayerInfo[playerid][phomeX] = House[h][hX];
  2308.                         PlayerInfo[playerid][phomeY] = House[h][hY];
  2309.                         PlayerInfo[playerid][phomeY] = House[h][hZ];
  2310.                         return 1;
  2311.                 }
  2312.                 SendClientMessage(playerid,COLOR_GREY,"Рядом с вами нет дома!");
  2313.                 return 1;
  2314.         }
  2315.         COMMAND:sellhouse(playerid, params[])
  2316.         {
  2317.             for(new h=1;h<=m_h;h++)
  2318.             {
  2319.                 if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[h][hY],House[h][hZ]))continue;
  2320.                 if(!strcmp(House[h][hOwner],Name(playerid),true)) // если игрок владелец этого дома, тогда...
  2321.                 {
  2322.                     strmid(House[h][hOwner],"None",0,5,5),UpdateHouse(h);
  2323.                     SaveHouse(h);
  2324.                     GivePlayerMoney(playerid,House[h][hPrice]/2); // отдаем игроку пол цены за дом
  2325.                     SendClientMessage(playerid,-1,"Вы продали свой дом!");
  2326.                                 return 1;
  2327.                 }
  2328.             }
  2329.             //SendClientMessage(playerid,-1,"Рядом с вами нет дома!");
  2330.             return 1;
  2331.       }
  2332. COMMAND:enterhome(playerid, params[])
  2333.         {
  2334.             for(new h=1;h<=m_h;h++)
  2335.             {
  2336.                 if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[
  2337. h][hY],House[h][hZ]))continue;
  2338.                 if(strcmp(House[h][hOwner],Name(playerid),true)!=0 && House[h][hLock]==1)return SendClientMessage(playerid,-1,"Дом закрыт!"); // Если вы не владелец и дом закрыт- не пустит
  2339.                 SetPlayerPos(playerid,HInts[House[h][hInterior]][hiX]
  2340. ,HInts[House[h][hInterior]][hiY],HInts[House[
  2341. h][hInterior]][hiZ]); // Тут, мы при помощи номера ячейки узнаем координаты внутри дома
  2342.                 SetPlayerInterior(playerid,HInts[House[h][hInterior]][
  2343. hiInt]); // + узнаем его ид (HInts[номер_ячейки][hiInt]
  2344.                 SetPlayerVirtualWorld(playerid,House[h][hVirtWorld]); // Присваиваем игроку вирт. мир
  2345.                 }
  2346.             return 1;
  2347.         }
  2348.         COMMAND:hexit(playerid, params[])
  2349.         {
  2350.             for(new h=1;h<=m_h;h++)
  2351.             {
  2352.                 if(IsPlayerInRangeOfPoint(playerid,25.5,HInts[House[h][hInterior]
  2353. ][hiX],HInts[House[h][hInterior]][hiY]
  2354. ,HInts[House[h][hInterior]][hiZ]) && GetPlayerVirtualWorld(playerid)==House[h][hVirtWorld])
  2355.                 {
  2356.                     SetPlayerPos(playerid,House[h][hX],House[h][hY],House[
  2357. h][hZ]);
  2358.                     SetPlayerVirtualWorld(playerid,0),SetPlayerInterior(playerid,0);
  2359.                         }
  2360.                 }
  2361.             return 1;
  2362.         }
  2363.         COMMAND:hlock(playerid, params[])
  2364.         {
  2365.             for(new h=1;h<=m_h;h++)
  2366.             {
  2367.                 if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[
  2368. h][hY],House[h][hZ]))continue;
  2369.                 if(strcmp(House[h][hOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от этого дома!"); // Сравниваем владельца дома с ником игрока, если не совпадает - выводим сообщение
  2370.                 if(House[h][hLock]==0)House[h][hLock]=1,SaveHouse(h),
  2371. GameTextForPlayer(playerid,"~r~House locked",100,1); // если дом открыт - закрываем (0 открыт / 1 закрыт)
  2372.                 else if(House[h][hLock]==1)return SendClientMessage(playerid,-1,"Дом уже закрыт!"); // иначе выводим сообщение
  2373.                         return 1;
  2374.                 }
  2375.             return 1;
  2376.         }
  2377.         COMMAND:hopen(playerid, params[])
  2378.         {
  2379.             for(new h=1;h<=m_h;h++)
  2380.             {
  2381.                 if(!IsPlayerInRangeOfPoint(playerid,1.5,House[h][hX],House[
  2382. h][hY],House[h][hZ]))continue;
  2383.                 if(strcmp(House[h][hOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от этого дома!");
  2384.                 if(House[h][hLock]==1)House[h][hLock]=0,SaveHouse(h),
  2385. GameTextForPlayer(playerid,"~g~House unlocked",100,1);
  2386.                 else if(House[h][hLock]==0)return SendClientMessage(playerid,-1,"Дом уже открыт!");
  2387.                         return 1;
  2388.                 }
  2389.             return 1;
  2390.         }
  2391.  
  2392. COMMAND:buy(playerid, params[])
  2393. {
  2394.     new PlayerinteriorID = GetPlayerInterior(playerid);
  2395.     if (PlayerinteriorID == 17 || PlayerinteriorID == 10 || PlayerinteriorID == 18 || PlayerinteriorID == 16 || PlayerinteriorID == 4 || PlayerinteriorID == 6)
  2396.     {
  2397.      new Float:xposint, Float:yposint, Float:zposint;
  2398.         GetPlayerPos(playerid, xposint, yposint, zposint);
  2399.         if (IsPlayerInRangeOfPoint(playerid, 20.0, -25.884498,-185.868988,1003.546875) || IsPlayerInRangeOfPoint(playerid, 20.0, 6.091179,-29.271898,1003.549438) || IsPlayerInRangeOfPoint(playerid, 20.0, -25.132598,-139.066986,1003.546875) || IsPlayerInRangeOfPoint(playerid, 20.0, -27.312299,-29.277599,1003.557250) ||  IsPlayerInRangeOfPoint(playerid, 20.0, -26.691598,-55.714897,1003.546875))
  2400.         {
  2401.         ShowPlayerDialog(playerid, 121, DIALOG_STYLE_LIST, "Купить", "Лопата 100$\nТерминал 1000$\nЦветы 80$\nАптечка 320$\nЕда 35$\nФотоаппарт 300$\nМаска 190$", "Купить", "Закрыть");
  2402.         }
  2403.     }
  2404.     if (PlayerinteriorID == 1 || PlayerinteriorID == 4 || PlayerinteriorID == 6 || PlayerinteriorID == 7 || PlayerinteriorID == 6)
  2405.     {
  2406.      new Float:xposint, Float:yposint, Float:zposint;
  2407.  
  2408.         GetPlayerPos(playerid, xposint, yposint, zposint);
  2409.         if (IsPlayerInRangeOfPoint(playerid, 20.0,  286.148986,-40.644397,1001.515625) || IsPlayerInRangeOfPoint(playerid, 20.0, 286.800994,-82.547599,1001.515625) ||  IsPlayerInRangeOfPoint(playerid, 20.0, 296.919982,-108.071998,1001.515625) || IsPlayerInRangeOfPoint(playerid, 20.0, 314.820983,-141.431991,999.601562) || IsPlayerInRangeOfPoint(playerid, 20.0, 316.524993,-167.706985,999.593750))
  2410.         {
  2411.         ShowPlayerDialog(playerid, 104, DIALOG_STYLE_LIST, "Купить", "UZI 1850$\nSMG 2000$\nDeagle 2000$\nAK-47 3700$\nM4 4600$\nSniper 5000$\nCombat-shotgun 5000$\nБроня 1800$", "Купить", "Закрыть");
  2412.         }
  2413.     }
  2414.     if (PlayerinteriorID == 15 || PlayerinteriorID == 14 || PlayerinteriorID == 3 || PlayerinteriorID == 1 || PlayerinteriorID == 5 || PlayerinteriorID == 18)
  2415.     {
  2416.      new Float:xposint, Float:yposint, Float:zposint;
  2417.  
  2418.         GetPlayerPos(playerid, xposint, yposint, zposint);
  2419.         if (IsPlayerInRangeOfPoint(playerid, 20.0, 207.737991,-109.019996,1005.132812) || IsPlayerInRangeOfPoint(playerid, 20.0, 204.332992,-166.694992,1000.523437) || IsPlayerInRangeOfPoint(playerid, 20.0, 207.054992,-138.804992,1003.507812) || IsPlayerInRangeOfPoint(playerid, 20.0, 203.777999,-48.492397,1001.804687) || IsPlayerInRangeOfPoint(playerid, 20.0, 226.293991,-7.431529,1002.210937) || IsPlayerInRangeOfPoint(playerid, 20.0, 161.391006,-93.159156,1001.804687))
  2420.         {
  2421.         CallRemoteFunction("selectskin", "i", playerid);
  2422.         CallRemoteFunction("SelectSkinDialog", "i", playerid);
  2423.     }
  2424.     else SendClientMessage(playerid, 0xFF0000FF, "Вы не в интерьере!");
  2425.     return 1;
  2426. }
  2427. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement