Advertisement
Joker95

Untitled

Feb 7th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 53.09 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. /*******************************************************************************/
  4.  
  5. #define TAXI_DIALOG 5300 // id диалога такси
  6. #define TAXI_PRICEROUT 0.6 // цена проезда за 1 метр ( Float )
  7. #define TAXI_PRICERENT 500 // цена аренды такси
  8. #define MAX_TAXI 3 // максимальное кол-во такси
  9. #define MAX_PLAYERS 1000 //Мах Players
  10.  
  11. /*******************************************************************************/
  12.  
  13. new bool:TaxiJobStarted[MAX_PLAYERS];
  14. new bool:PlayerEnteredPoint[MAX_PLAYERS];
  15. new bool:PlayerCalledTaxi[MAX_PLAYERS];
  16. new bool:PlayerRentTaxi[MAX_PLAYERS];
  17. new bool:PlayerTaxiStarted[MAX_PLAYERS];
  18. new ExitCarTimer[MAX_PLAYERS];
  19. new TaxiDialogTimer[MAX_PLAYERS];
  20. new PlayerService[MAX_PLAYERS];
  21. new GetPlayerRentTaxi[MAX_PLAYERS];
  22. new PlayerExitCount[MAX_PLAYERS];
  23. new Float:FIRSTPOS[MAX_PLAYERS][3];
  24. new Float:LASTPOS[MAX_PLAYERS][3];
  25. new TAXI_ID[MAX_TAXI];
  26. new Text3D:TAXI_TEXT[MAX_TAXI];
  27.  
  28. forward OnPlayerShowTaxiDialog(playerid);
  29. forward OnPlayerExitCar(playerid);
  30. forward OnPlayerFinishedRace(playerid);
  31.  
  32. enum tInfo {tModel,Float:tPosX,Float:tPosY,Float:tPosZ,Float:tPosA};
  33. new TaxiInfo[MAX_TAXI][tInfo] = {
  34. {420, 1736.6744, -1859.7969, 13.2723, 270.0},
  35. {420, 1745.0928, -1859.7969, 13.2709, 270.0},
  36. {420, 1762.7397, -1859.7969, 13.2713, 270.0}
  37. };
  38.  
  39. public OnFilterScriptInit()
  40. {
  41. print("\n-----------------------------------------");
  42. print(" TAXI SYSTEM BY ESSLE");
  43. print("-----------------------------------------\n");
  44. new str[32];
  45. for(new i=0; i<MAX_TAXI; i++)
  46. {
  47. TAXI_ID[i] = CreateVehicle(TaxiInfo[i][tModel], TaxiInfo[i][tPosX], TaxiInfo[i][tPosY], TaxiInfo[i][tPosZ], TaxiInfo[i][tPosA], 6, 6, -1);
  48. format(str, sizeof(str), "{000000}TAXI %d", i+1);
  49. SetVehicleNumberPlate(TAXI_ID[i], str);
  50. SetVehicleToRespawn(TAXI_ID[i]);
  51. TAXI_TEXT[i] = Create3DTextLabel("[{FFFFFF}такси{DEF200}]\n{13EB3A}свободно", 0xDEF200FF, 0.0, 0.0, 0.0, 50.0, 0, 1);
  52. Attach3DTextLabelToVehicle(TAXI_TEXT[i], TAXI_ID[i], 0.0, -0.3, 1.0);
  53. }
  54. return 1;
  55. }
  56.  
  57. public OnFilterScriptExit()
  58. {
  59. for(new i=0; i<MAX_TAXI; i++)
  60. {
  61. DestroyVehicle(TAXI_ID[i]);
  62. TAXI_ID[i] = INVALID_VEHICLE_ID;
  63. Delete3DTextLabel(TAXI_TEXT[i]);
  64. }
  65. for(new i=0; i<MAX_PLAYERS; i++)
  66. {
  67. if(IsPlayerConnected(i))
  68. {
  69. PlayerEnteredPoint[i] = false;
  70. GetPlayerRentTaxi[i] = INVALID_VEHICLE_ID;
  71. PlayerRentTaxi[i] = false;
  72. PlayerCalledTaxi[i] = false;
  73. TaxiJobStarted[i] = false;
  74. PlayerTaxiStarted[i] = false;
  75. PlayerService[i] = INVALID_PLAYER_ID;
  76. for(new d=0; d<MAX_PLAYERS; d++)
  77. {
  78. if(IsPlayerConnected(d) && PlayerCalledTaxi[d]) RemovePlayerMapIcon(i, d);
  79. }
  80. }
  81. }
  82. return 1;
  83. }
  84.  
  85. public OnPlayerConnect(playerid)
  86. {
  87. PlayerEnteredPoint[playerid] = false;
  88. GetPlayerRentTaxi[playerid] = INVALID_VEHICLE_ID;
  89. PlayerRentTaxi[playerid] = false;
  90. PlayerCalledTaxi[playerid] = false;
  91. TaxiJobStarted[playerid] = false;
  92. PlayerTaxiStarted[playerid] = false;
  93. PlayerService[playerid] = INVALID_PLAYER_ID;
  94. return 1;
  95. }
  96.  
  97. public OnVehicleDeath(vehicleid, killerid)
  98. {
  99. for(new i=0; i<MAX_PLAYERS; i++)
  100. {
  101. if(IsPlayerConnected(i) && GetPlayerRentTaxi[i] == vehicleid)
  102. {
  103. SendClientMessage(i, -1, "{E63030}Твоя рабочая машина была уничтожена");
  104. KillTimer(ExitCarTimer[i]);
  105. GetPlayerRentTaxi[i] = INVALID_VEHICLE_ID;
  106. TaxiJobStarted[i] = false;
  107. PlayerTaxiStarted[i] = false;
  108. for(new d=0; d<MAX_PLAYERS; d++)
  109. {
  110. if(IsPlayerConnected(d) && PlayerCalledTaxi[d]) RemovePlayerMapIcon(i, d);
  111. }
  112. break;
  113. }
  114. }
  115. return 1;
  116. }
  117.  
  118. public OnPlayerCommandText(playerid, cmdtext[])
  119. {
  120. if(!strcmp("/ctaxi", cmdtext, true))
  121. {
  122. new string[128];
  123. new name[24];GetPlayerName(playerid, name, 24);
  124. if(TaxiJobStarted[playerid]) return SendClientMessage(playerid, -1, "{27C400}Тебе запрещено вызывать такси.");
  125. if(!PlayerCalledTaxi[playerid])
  126. {
  127. PlayerCalledTaxi[playerid] = true;
  128. SendClientMessage(playerid, -1, "{B5E01B}Ты успешно вызвал такси. Ожидайте его на этом месте.");
  129. SendClientMessage(playerid, -1, "{999999}Введи /ctaxi повторно чтобы отменить вызов такси.");
  130. format(string, sizeof(string), "[вызов] {F0F000}Игрок {EDEDB2}%s {F0F000}вызвал такси. Район: {EDEDB2}%s", name, GetPlayerZone(playerid));
  131. for(new i=0; i<MAX_PLAYERS; i++)
  132. {
  133. if(IsPlayerConnected(i) && TaxiJobStarted[i]) SendClientMessage(i, -1, string);
  134. }
  135. }
  136. else
  137. {
  138. PlayerCalledTaxi[playerid] = false;
  139. SendClientMessage(playerid, -1, "{B5CC64}Ты отменил вызов такси.");
  140. format(string, sizeof(string), "[вызов] {D4D400}Игрок {E3E37D}%s {D4D400}отменил вызов такси!", name);
  141. for(new i=0; i<MAX_PLAYERS; i++)
  142. {
  143. if(IsPlayerConnected(i) && TaxiJobStarted[i])
  144. {
  145. SendClientMessage(i, -1, string);
  146. RemovePlayerMapIcon(i, playerid);
  147. }
  148. }
  149. }
  150. return 1;
  151. }
  152. else if(!strcmp("/unrent", cmdtext, true))
  153. {
  154. if(!TaxiJobStarted[playerid]) return SendClientMessage(playerid, -1, "{27C400}Ты не арендовывал такси.");
  155. ShowPlayerDialog(playerid, TAXI_DIALOG+3, DIALOG_STYLE_MSGBOX, "Отмена аренды", "{00FFFF}\
  156. Ты действительно хочешь отменить аренду такси?", "Да", "Нет");
  157. return 1;
  158. }
  159. return 0;
  160. }
  161.  
  162. public OnPlayerExitVehicle(playerid, vehicleid)
  163. {
  164. if(IsTaxiCar(vehicleid) && TaxiJobStarted[playerid] && GetPlayerRentTaxi[playerid] == vehicleid)
  165. {
  166. new Float:hp;
  167. GetVehicleHealth(vehicleid, hp);
  168. if(hp < 250) return 1;
  169. PlayerExitCount[playerid] = 10;
  170. SendClientMessage(playerid, -1, "{E63030}Вернись обратно в такси!");
  171. ExitCarTimer[playerid] = SetTimerEx("OnPlayerExitCar", 1000, true, "i", playerid);
  172. return 1;
  173. }
  174. if(IsTaxiCar(vehicleid) && PlayerTaxiStarted[GetPlayerCarDriver(playerid)] && PlayerEnteredPoint[playerid])
  175. {
  176. new string[128];
  177. DisablePlayerCheckpoint(GetPlayerCarDriver(playerid));
  178. DisablePlayerCheckpoint(playerid);
  179. PlayerInfo[playerid][pCash], -GetPriceTaxiEx(playerid));
  180. GivePlayerMoney(GetPlayerCarPass(playerid), GetPriceTaxiEx(playerid));
  181. format(string, sizeof(string), "~g~+%d$", GetPriceTaxiEx(playerid));
  182. GameTextForPlayer(GetPlayerCarDriver(playerid), string, 1000, 1);
  183. format(string, sizeof(string), "~r~-%d$", GetPriceTaxiEx(playerid));
  184. GameTextForPlayer(playerid, string, 1000, 1);
  185. new name[24];GetPlayerName(playerid, name, 24);
  186. format(string, sizeof(string), "{7FC0E3}Пассажир {B7E1F7}%s{7FC0E3} покинул такси раньше, чем было положено.", name);
  187. SendClientMessage(GetPlayerCarDriver(playerid), -1, string);
  188. SendClientMessage(playerid, -1, "Ты покинул такси раньше, чем было положено.");
  189. PlayerTaxiStarted[GetPlayerCarDriver(playerid)] = false;
  190. for(new i=0; i<MAX_TAXI; i++)
  191. {
  192. if(TAXI_ID[i] == GetPlayerVehicleID(GetPlayerCarDriver(playerid)))
  193. {
  194. Update3DTextLabelText(TAXI_TEXT[i], 0xDEF200FF, "[{FFFFFF}такси{DEF200}]\n{13EB3A}свободно");
  195. break;
  196. }
  197. }
  198. return 1;
  199. }
  200. return 1;
  201. }
  202.  
  203. public OnPlayerStateChange(playerid, newstate, oldstate)
  204. {
  205. new string[128],vehicleid = GetPlayerVehicleID(playerid);
  206. if(TaxiJobStarted[playerid] == true && IsTaxiCar(vehicleid) && GetPlayerRentTaxi[playerid] != vehicleid)
  207. {
  208. SendClientMessage(playerid, -1, "Вы уже на работе");
  209. RemoveFromVehicle(playerid);
  210. return 1;
  211. }
  212. if(newstate == PLAYER_STATE_DRIVER && IsTaxiCar(vehicleid))
  213. {
  214. if(GetPlayerRentTaxi[playerid] != vehicleid)
  215. {
  216. format(string, sizeof(string), "{FFFFFF}\
  217. Чтобы работать на такси, тебе нужно его арендовать.\n\
  218. Цена аренды: {CECECE}%d$\
  219. ", TAXI_PRICERENT);
  220. ShowPlayerDialog(playerid, TAXI_DIALOG, DIALOG_STYLE_MSGBOX, "Аренда такси", string, "Да", "Нет");
  221. PlayerRentTaxi[playerid] = true;
  222. TaxiDialogTimer[playerid] = SetTimerEx("OnPlayerShowTaxiDialog", 1000, true, "i", playerid);
  223. }
  224. else
  225. {
  226. KillTimer(ExitCarTimer[playerid]);
  227. }
  228. }
  229. if(newstate == PLAYER_STATE_PASSENGER && IsTaxiCar(vehicleid) && GetPlayerRentTaxi[playerid] != vehicleid)
  230. {
  231. new bool:owned;
  232. for(new i=0; i<MAX_PLAYERS; i++)
  233. {
  234. if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 0 && GetPlayerRentTaxi[i] == vehicleid && TaxiJobStarted[i])
  235. {
  236. owned = true;
  237. break;
  238. }
  239. }
  240. if(!owned) return RemovePlayerFromVehicle(playerid);
  241. new bool:onepass;
  242. for(new i=0; i<MAX_PLAYERS; i++)
  243. {
  244. if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) != 0 && i != playerid)
  245. {
  246. onepass = true;
  247. break;
  248. }
  249. }
  250. new name[24];GetPlayerName(playerid, name, 24);
  251. if(PlayerCalledTaxi[playerid])
  252. {
  253. PlayerCalledTaxi[playerid] = false;
  254. for(new i=0; i<MAX_PLAYERS; i++)
  255. {
  256. if(IsPlayerConnected(i) && TaxiJobStarted[i]) RemovePlayerMapIcon(i, playerid);
  257. }
  258. }
  259. if(onepass)
  260. {
  261. format(string, sizeof(string), "{7FC0E3}К тебе в такси сел пассажир {B7E1F7}%s", name);
  262. SendClientMessage(GetPlayerCarDriver(playerid), -1, string);
  263. return 1;
  264. }
  265. PlayerEnteredPoint[playerid] = false;
  266. format(string, sizeof(string), "{7FC0E3}К тебе в такси сел пассажир {B7E1F7}%s {CECECE}(подожди пока он выберет маршрут)", name);
  267. SendClientMessage(GetPlayerCarDriver(playerid), -1, string);
  268. ShowPlayerDialog(playerid, 00000, DIALOG_STYLE_MSGBOX, "Информация", "{00FFFF}\
  269. Установи маркер на карте в то место,\n\
  270. в которое тебе нужно отправиться.", "Закрыть", "");
  271. }
  272. return 1;
  273. }
  274.  
  275. public OnPlayerEnterCheckpoint(playerid)
  276. {
  277. new vehicleid = GetPlayerVehicleID(playerid);
  278. if(PlayerTaxiStarted[playerid] && IsTaxiCar(vehicleid))
  279. {
  280. new string[128];
  281. DisablePlayerCheckpoint(GetPlayerCarPass(playerid));
  282. DisablePlayerCheckpoint(playerid);
  283. TogglePlayerControllable(playerid, false);
  284. SetTimerEx("OnPlayerFinishedRace", 700, false, "i", playerid);
  285. ShowPlayerDialog(GetPlayerCarPass(playerid), TAXI_DIALOG+4, DIALOG_STYLE_LIST, "Как тебя обслужили?", "\
  286. + Отлично\n+ Хорошо\n+ Плохо\n+ Ужасно", "Выбрать", "Отмена");
  287. SendClientMessage(playerid, -1, "Ты достиг места назначения.");
  288. SendClientMessage(GetPlayerCarPass(playerid), -1, "Ты достиг места назначения.");
  289. GivePlayerMoney(playerid, GetPriceTaxi(playerid));
  290. GivePlayerMoney(GetPlayerCarPass(playerid), -GetPriceTaxi(playerid));
  291. format(string, sizeof(string), "~g~+%d$", GetPriceTaxi(playerid));
  292. GameTextForPlayer(playerid, string, 1000, 1);
  293. format(string, sizeof(string), "~r~-%d$", GetPriceTaxi(playerid));
  294. GameTextForPlayer(GetPlayerCarPass(playerid), string, 1000, 1);
  295. PlayerTaxiStarted[playerid] = false;
  296. for(new i=0; i<MAX_TAXI; i++)
  297. {
  298. if(TAXI_ID[i] == GetPlayerVehicleID(playerid))
  299. {
  300. Update3DTextLabelText(TAXI_TEXT[i], 0xDEF200FF, "[{FFFFFF}такси{DEF200}]\n{13EB3A}свободно");
  301. break;
  302. }
  303. }
  304. }
  305. return 1;
  306. }
  307.  
  308. public OnPlayerUpdate(playerid)
  309. {
  310. new Float:POS[3],vehicleid = GetPlayerVehicleID(playerid);
  311. if(TaxiJobStarted[playerid] && IsTaxiCar(vehicleid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  312. {
  313. for(new i=0; i<MAX_PLAYERS; i++)
  314. {
  315. if(IsPlayerConnected(i) && PlayerCalledTaxi[i])
  316. {
  317. GetPlayerPos(i, POS[0], POS[1], POS[2]);
  318. SetPlayerMapIcon(playerid, i, POS[0], POS[1], POS[2], 0, 0xF0F000FF, MAPICON_GLOBAL);
  319. }
  320. }
  321. }
  322. return 1;
  323. }
  324.  
  325. public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
  326. {
  327. if(!PlayerEnteredPoint[playerid])
  328. {
  329. GetPlayerPos(GetPlayerCarDriver(playerid), FIRSTPOS[GetPlayerCarDriver(playerid)][0], FIRSTPOS[GetPlayerCarDriver(playerid)][1], FIRSTPOS[GetPlayerCarDriver(playerid)][2]);
  330. GetPlayerPos(playerid, FIRSTPOS[playerid][0], FIRSTPOS[playerid][1], FIRSTPOS[playerid][2]);
  331. LASTPOS[playerid][0] = fX;LASTPOS[GetPlayerCarDriver(playerid)][0] = fX;
  332. LASTPOS[playerid][1] = fY;LASTPOS[GetPlayerCarDriver(playerid)][1] = fY;
  333. LASTPOS[playerid][2] = fZ;LASTPOS[GetPlayerCarDriver(playerid)][2] = fZ;
  334. new string[256];
  335. format(string, sizeof(string), "{00FFFF}\
  336. Пункт назначения:{FFFFFF} %s\n\
  337. {00FFFF}Стоимость проезда:{FFFFFF} %d$\n\
  338. {999999}Чтобы сменить пункт назначения\n\
  339. нажми на кнопку 'Назад'\
  340. ", GetPlayerPoint(playerid), GetPriceTaxi(GetPlayerCarDriver(playerid)));
  341. ShowPlayerDialog(playerid, TAXI_DIALOG+1, DIALOG_STYLE_MSGBOX, "Информация", string, "Готово", "Назад");
  342. }
  343. return 1;
  344. }
  345.  
  346. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  347. {
  348. if(dialogid == TAXI_DIALOG)
  349. {
  350. PlayerRentTaxi[playerid] = false;
  351. if(response)
  352. {
  353. if(GetPlayerMoney(playerid) < TAXI_PRICERENT)
  354. {
  355. new string[128];
  356. format(string, sizeof(string), "{27C400}У тебя не достаточно наличных для аренды. Нужно{5BD93B} %d$", TAXI_PRICERENT);
  357. SendClientMessage(playerid, -1, string);
  358. RemovePlayerFromVehicle(playerid);
  359. return 1;
  360. }
  361. PlayerInfo[playerid][pCash] -= TAXI_PRICERENT;
  362. SendClientMessage(playerid, -1, "{0AA8A0}Ты успешно арендовал такси. {999999}(используй команду /unrent чтобы отменить аренду)");
  363. GetPlayerRentTaxi[playerid] = GetPlayerVehicleID(playerid);
  364. TaxiJobStarted[playerid] = true;
  365. }
  366. else
  367. {
  368. RemovePlayerFromVehicle(playerid);
  369. }
  370. return 1;
  371. }
  372. else if(dialogid == TAXI_DIALOG+1)
  373. {
  374. if(response)
  375. {
  376. new string[256];
  377. if(GetPlayerMoney(playerid) < GetPriceTaxi(playerid))
  378. {
  379. SendClientMessage(playerid, -1, "{27C400}У тебя не достаточно наличных для проезда. {5BD93B}Выбери другой маршрут.");
  380. format(string, sizeof(string), "{00FFFF}\
  381. Пункт назначения:{FFFFFF} %s\n\
  382. {00FFFF}Стоимость проезда:{FFFFFF} %d$\n\
  383. {999999}Чтобы сменить пункт назначения\n\
  384. нажми на кнопку 'Назад'\
  385. ", GetPlayerPoint(playerid), GetPriceTaxi(GetPlayerCarDriver(playerid)));
  386. ShowPlayerDialog(playerid, TAXI_DIALOG+1, DIALOG_STYLE_MSGBOX, "Информация", string, "Готово", "Назад");
  387. return 1;
  388. }
  389. format(string, sizeof(string), "{00FFFF}\
  390. Пункт назначения:{FFFFFF} %s\n\
  391. {00FFFF}Оплата проезда:{FFFFFF} %d$\n\
  392. {999999}Чтобы отменить заказ\n\
  393. нажми на кнопку 'Отмена'\
  394. ", GetPlayerPoint(playerid), GetPriceTaxi(GetPlayerCarPass(playerid)));
  395. ShowPlayerDialog(GetPlayerCarDriver(playerid), TAXI_DIALOG+2, DIALOG_STYLE_MSGBOX, "Информация", string, "Готово", "Отмена");
  396. SendClientMessage(playerid, -1, "{00FFFF}Маршрут успешно выбран. Дождитесь ответа от таксиста");
  397. PlayerEnteredPoint[playerid] = true;
  398. }
  399. else
  400. {
  401. ShowPlayerDialog(playerid, 00000, DIALOG_STYLE_MSGBOX, "Информация", "{00FFFF}\
  402. Установи маркер на карте в то место,\n\
  403. в которое тебе нужно отправиться.", "Закрыть", "");
  404. }
  405. return 1;
  406. }
  407. else if(dialogid == TAXI_DIALOG+2)
  408. {
  409. if(response)
  410. {
  411. PlayerTaxiStarted[playerid] = true;
  412. SetPlayerCheckpoint(playerid, LASTPOS[playerid][0], LASTPOS[playerid][1], LASTPOS[playerid][2], 5.0);
  413. SetPlayerCheckpoint(GetPlayerCarPass(playerid), LASTPOS[playerid][0], LASTPOS[playerid][1], LASTPOS[playerid][2], 5.0);
  414. SendClientMessage(GetPlayerCarPass(playerid), -1, "{00ED1C}Таксист согласился довезти тебя до пункта назначения.");
  415. SendClientMessage(playerid, -1, "{00ED1C}Отправляйся к красному маркеру, который указан на карте.");
  416. for(new i=0; i<MAX_TAXI; i++)
  417. {
  418. if(TAXI_ID[i] == GetPlayerVehicleID(playerid))
  419. {
  420. Update3DTextLabelText(TAXI_TEXT[i], 0xDEF200FF, "[{FFFFFF}такси{DEF200}]\n{EB1313}занято");
  421. break;
  422. }
  423. }
  424. }
  425. else
  426. {
  427. SendClientMessage(GetPlayerCarPass(playerid), -1, "{FF0000}Таксист отказался довезти тебя до пункта назначения.");
  428. SendClientMessage(playerid, -1, "{FF0000}Ты отказался довезти пассажира.");
  429. RemovePlayerFromVehicle(GetPlayerCarPass(playerid));
  430. }
  431. return 1;
  432. }
  433. else if(dialogid == TAXI_DIALOG+3)
  434. {
  435. if(!response) return 1;
  436. for(new d=0; d<MAX_PLAYERS; d++)
  437. {
  438. if(IsPlayerConnected(d) && IsTaxiCar(GetPlayerVehicleID(d))) RemovePlayerFromVehicle(d);
  439. }
  440. SendClientMessage(playerid, -1, "{0AA8A0}Аренда такси успешна отменена.");
  441. KillTimer(ExitCarTimer[playerid]);
  442. TaxiJobStarted[playerid] = false;
  443. PlayerTaxiStarted[playerid] = false;
  444. SetVehicleToRespawn(GetPlayerRentTaxi[playerid]);
  445. GetPlayerRentTaxi[playerid] = INVALID_VEHICLE_ID;
  446. for(new d=0; d<MAX_PLAYERS; d++)
  447. {
  448. if(IsPlayerConnected(d) && PlayerCalledTaxi[d]) RemovePlayerMapIcon(playerid, d);
  449. }
  450. return 1;
  451. }
  452. else if(dialogid == TAXI_DIALOG+4)
  453. {
  454. if(!response) return 1;
  455. switch(listitem)
  456. {
  457. case 0: SendClientMessage(PlayerService[playerid], -1, "{00ED1C}Твой клиент считает что ты обслужил его Отлично");
  458. case 1: SendClientMessage(PlayerService[playerid], -1, "{00ED1C}Твой клиент считает что ты обслужил его Хорошо");
  459. case 2: SendClientMessage(PlayerService[playerid], -1, "{00ED1C}Твой клиент считает что ты обслужил его Плохо");
  460. case 3: SendClientMessage(PlayerService[playerid], -1, "{00ED1C}Твой клиент считает что ты обслужил его Ужасно");
  461. }
  462. PlayerService[playerid] = INVALID_PLAYER_ID;
  463. return 1;
  464. }
  465. return 1;
  466. }
  467.  
  468. public OnPlayerShowTaxiDialog(playerid)
  469. {
  470. if(PlayerRentTaxi[playerid])
  471. {
  472. new string[128];
  473. format(string, sizeof(string), "{FFFFFF}\
  474. Чтобы работать на такси, тебе нужно его арендовать.\n\
  475. Цена аренды: {CECECE}%d$\
  476. ", TAXI_PRICERENT);
  477. ShowPlayerDialog(playerid, TAXI_DIALOG, DIALOG_STYLE_MSGBOX, "Аренда такси", string, "Да", "Нет");
  478. }
  479. else
  480. {
  481. ShowPlayerDialog(playerid, 00000, 0, "", "", "", "");
  482. KillTimer(TaxiDialogTimer[playerid]);
  483. }
  484. return 1;
  485. }
  486.  
  487. public OnPlayerFinishedRace(playerid)
  488. {
  489. TogglePlayerControllable(playerid, true);
  490. PlayerService[GetPlayerCarPass(playerid)] = playerid;
  491. RemovePlayerFromVehicle(GetPlayerCarPass(playerid));
  492. return 1;
  493. }
  494.  
  495. public OnPlayerExitCar(playerid)
  496. {
  497. new string[128];
  498. if(PlayerExitCount[playerid] > 3 && PlayerExitCount[playerid] < 11)
  499. {
  500. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~%d", PlayerExitCount[playerid]);
  501. GameTextForPlayer(playerid, string, 900, 3);
  502. }
  503. if(PlayerExitCount[playerid] > 0 && PlayerExitCount[playerid] < 4)
  504. {
  505. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~r~%d", PlayerExitCount[playerid]);
  506. GameTextForPlayer(playerid, string, 900, 3);
  507. }
  508. if(PlayerExitCount[playerid] == 0)
  509. {
  510. new vehicleid = GetPlayerRentTaxi[playerid];
  511. for(new d=0; d<MAX_PLAYERS; d++)
  512. {
  513. if(IsPlayerConnected(d) && IsTaxiCar(GetPlayerVehicleID(d))) RemovePlayerFromVehicle(d);
  514. }
  515. SendClientMessage(playerid, -1, "{E63030}Ты закончили свой маршрут");
  516. KillTimer(ExitCarTimer[playerid]);
  517. GetPlayerRentTaxi[playerid] = INVALID_VEHICLE_ID;
  518. TaxiJobStarted[playerid] = false;
  519. PlayerTaxiStarted[playerid] = false;
  520. SetVehicleToRespawn(vehicleid);
  521. for(new d=0; d<MAX_PLAYERS; d++)
  522. {
  523. if(IsPlayerConnected(d) && PlayerCalledTaxi[d]) RemovePlayerMapIcon(playerid, d);
  524. }
  525. }
  526. else
  527. {
  528. PlayerExitCount[playerid] -= 1;
  529. }
  530. return 1;
  531. }
  532.  
  533. stock IsTaxiCar(vehicleid)
  534. {
  535. for(new i=0; i<MAX_TAXI; i++)
  536. {
  537. if(vehicleid == TAXI_ID[i]) return 1;
  538. }
  539. return 0;
  540. }
  541.  
  542. stock GetPriceTaxi(playerid)
  543. {
  544. new Float:dist = floatsqroot(floatpower(floatabs(floatsub(LASTPOS[playerid][0],FIRSTPOS[playerid][0])),2)
  545. +floatpower(floatabs(floatsub(LASTPOS[playerid][1],FIRSTPOS[playerid][1])),2)
  546. +floatpower(floatabs(floatsub(LASTPOS[playerid][2],FIRSTPOS[playerid][2])),2));
  547. return floatround(dist*TAXI_PRICEROUT);
  548. }
  549.  
  550. stock GetPriceTaxiEx(playerid)
  551. {
  552. new Float:POS[3];
  553. GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
  554. new Float:dist = floatsqroot(floatpower(floatabs(floatsub(POS[0],FIRSTPOS[playerid][0])),2)
  555. +floatpower(floatabs(floatsub(POS[1],FIRSTPOS[playerid][1])),2)
  556. +floatpower(floatabs(floatsub(POS[2],FIRSTPOS[playerid][2])),2));
  557. return floatround(dist*TAXI_PRICEROUT);
  558. }
  559.  
  560. stock GetPlayerCarDriver(playerid)
  561. {
  562. for(new i=0; i<MAX_PLAYERS; i++)
  563. {
  564. if(IsPlayerConnected(i) && GetPlayerVehicleSeat(i) == 0 && GetPlayerVehicleID(i) == GetPlayerVehicleID(playerid) && TaxiJobStarted[i]) return i;
  565. }
  566. return INVALID_PLAYER_ID;
  567. }
  568.  
  569. stock GetPlayerCarPass(playerid)
  570. {
  571. for(new i=0; i<MAX_PLAYERS; i++)
  572. {
  573. if(IsPlayerConnected(i) && GetPlayerVehicleSeat(i) != 0 && GetPlayerVehicleID(i) == GetPlayerVehicleID(playerid)) return i;
  574. }
  575. return INVALID_PLAYER_ID;
  576. }
  577.  
  578. enum SAZONE_MAIN
  579. {
  580. SAZONE_NAME[32],
  581. Float:SAZONE_AREA[6]
  582. };
  583. new gZoneInfo[365][SAZONE_MAIN] = {
  584. {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  585. {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  586. {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  587. {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  588. {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  589. {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  590. {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  591. {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  592. {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  593. {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  594. {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  595. {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  596. {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  597. {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  598. {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  599. {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  600. {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  601. {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  602. {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  603. {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  604. {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  605. {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  606. {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  607. {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
  608. {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  609. {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  610. {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  611. {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  612. {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  613. {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  614. {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  615. {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  616. {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  617. {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  618. {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  619. {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  620. {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  621. {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  622. {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  623. {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  624. {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  625. {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  626. {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  627. {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  628. {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  629. {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  630. {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  631. {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  632. {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  633. {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  634. {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  635. {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  636. {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  637. {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  638. {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  639. {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  640. {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  641. {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  642. {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  643. {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  644. {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  645. {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  646. {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  647. {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  648. {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  649. {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  650. {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  651. {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  652. {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  653. {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  654. {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  655. {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  656. {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  657. {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  658. {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  659. {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  660. {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  661. {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  662. {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  663. {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  664. {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  665. {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  666. {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  667. {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  668. {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  669. {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  670. {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  671. {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  672. {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  673. {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  674. {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  675. {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  676. {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  677. {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  678. {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  679. {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  680. {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
  681. {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  682. {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  683. {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  684. {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  685. {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  686. {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  687. {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  688. {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  689. {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  690. {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  691. {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  692. {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  693. {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  694. {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  695. {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  696. {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  697. {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  698. {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  699. {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  700. {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  701. {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  702. {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  703. {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  704. {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  705. {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  706. {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  707. {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
  708. {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  709. {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  710. {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  711. {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  712. {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  713. {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  714. {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  715. {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  716. {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  717. {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  718. {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  719. {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  720. {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  721. {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  722. {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  723. {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  724. {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  725. {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  726. {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  727. {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  728. {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  729. {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  730. {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  731. {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  732. {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  733. {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  734. {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  735. {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  736. {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  737. {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  738. {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  739. {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  740. {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  741. {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  742. {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  743. {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  744. {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  745. {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  746. {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  747. {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  748. {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  749. {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  750. {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  751. {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  752. {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  753. {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  754. {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  755. {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  756. {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  757. {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  758. {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  759. {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  760. {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  761. {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  762. {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  763. {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  764. {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  765. {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  766. {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  767. {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  768. {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  769. {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  770. {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  771. {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  772. {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  773. {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  774. {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  775. {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  776. {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  777. {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  778. {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  779. {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  780. {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  781. {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  782. {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  783. {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  784. {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  785. {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  786. {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  787. {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  788. {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  789. {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  790. {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  791. {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  792. {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  793. {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  794. {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  795. {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  796. {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  797. {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  798. {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  799. {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  800. {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  801. {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  802. {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  803. {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  804. {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  805. {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  806. {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  807. {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  808. {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  809. {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  810. {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  811. {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  812. {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  813. {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  814. {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  815. {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  816. {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  817. {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  818. {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  819. {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  820. {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  821. {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  822. {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  823. {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  824. {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  825. {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  826. {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  827. {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  828. {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  829. {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  830. {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  831. {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  832. {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  833. {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  834. {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  835. {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  836. {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  837. {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  838. {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  839. {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  840. {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  841. {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  842. {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  843. {"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  844. {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  845. {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  846. {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  847. {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  848. {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  849. {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  850. {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  851. {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  852. {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  853. {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  854. {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  855. {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  856. {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  857. {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  858. {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  859. {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  860. {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  861. {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  862. {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  863. {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  864. {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  865. {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  866. {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  867. {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  868. {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  869. {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  870. {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  871. {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  872. {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  873. {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  874. {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  875. {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  876. {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  877. {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  878. {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  879. {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  880. {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  881. {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  882. {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  883. {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  884. {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  885. {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  886. {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  887. {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  888. {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  889. {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  890. {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  891. {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  892. {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  893. {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  894. {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  895. {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  896. {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  897. {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  898. {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  899. {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  900. {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  901. {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  902. {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  903. {"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  904. {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  905. {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  906. {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  907. {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  908. {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  909. {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  910. {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  911. {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  912. {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  913. {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  914. {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  915. {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  916. {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  917. {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  918. {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  919. {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  920. {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  921. {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  922. {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  923. {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  924. {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  925. {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  926. {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  927. {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  928. {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  929. {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  930. {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  931. {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  932. {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  933. {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  934. {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  935. {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  936. {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  937. {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  938. {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  939. {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  940. {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  941. {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  942. {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  943. {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  944. {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  945. {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  946. {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  947. {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  948. {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  949. };
  950.  
  951. stock GetPlayerPoint(playerid)
  952. {
  953. new zone[32],bool:getzone;
  954. for(new i=0; i<sizeof(gZoneInfo); i++)
  955. {
  956. if(LASTPOS[playerid][0] >= gZoneInfo[i][SAZONE_AREA][0]
  957. && LASTPOS[playerid][0] <= gZoneInfo[i][SAZONE_AREA][3]
  958. && LASTPOS[playerid][1] >= gZoneInfo[i][SAZONE_AREA][1]
  959. && LASTPOS[playerid][1] <= gZoneInfo[i][SAZONE_AREA][4])
  960. {
  961. format(zone, sizeof(zone), gZoneInfo[i][SAZONE_NAME]);
  962. getzone = true;
  963. break;
  964. }
  965. }
  966. if(!getzone) zone = "Неизвестно";
  967. return zone;
  968. }
  969.  
  970. stock GetPlayerZone(playerid)
  971. {
  972. new Float:POS[3],zone[32],bool:getzone;
  973. GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
  974. for(new i=0; i<sizeof(gZoneInfo); i++)
  975. {
  976. if(POS[0] >= gZoneInfo[i][SAZONE_AREA][0]
  977. && POS[0] <= gZoneInfo[i][SAZONE_AREA][3]
  978. && POS[1] >= gZoneInfo[i][SAZONE_AREA][1]
  979. && POS[1] <= gZoneInfo[i][SAZONE_AREA][4])
  980. {
  981. format(zone, sizeof(zone), gZoneInfo[i][SAZONE_NAME]);
  982. getzone = true;
  983. break;
  984. }
  985. }
  986. if(!getzone) zone = "Неизвестно";
  987. return zone;
  988. }
  989. stock RemoveFromVehicle(playerid)
  990. {
  991. SetPVarInt(playerid, "RemoveCar", GetPlayerVehicleID(playerid));
  992. RemovePlayerFromVehicle(playerid);
  993. SetTimerEx("CheckCar",3000,false,"d", playerid);
  994. return 1;
  995. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement