Guest User

Untitled

a guest
Jul 2nd, 2016
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.05 KB | None | 0 0
  1. // eSelection.inc - Rewritten version of mSelection.inc
  2. // Created for Interactive Roleplay - 17/03/2013 @ 10:20 PM.
  3.  
  4. #if !defined MAX_MENU_ITEMS
  5. #define MAX_MENU_ITEMS (300)
  6. #endif
  7.  
  8. #if !defined MAX_CUSTOM_ROTATIONS
  9. #define MAX_CUSTOM_ROTATIONS (50)
  10. #endif
  11.  
  12. #define MODEL_RESPONSE_CANCEL (0)
  13. #define MODEL_RESPONSE_SELECT (1)
  14.  
  15. enum g_ePlayerMenuEnum {
  16. PlayerText:g_eMenuTextdraws[6],
  17. PlayerText:g_eMenuItems[18],
  18. PlayerText:g_eMenuAmounts[18],
  19. Float:g_eMenuRot[4],
  20. g_eMenuModels[MAX_MENU_ITEMS],
  21. g_eMenuAmount[MAX_MENU_ITEMS],
  22. g_eMenuTotalItems,
  23. g_eMenuPage,
  24. g_eMenuPages,
  25. g_eMenuShown,
  26. g_eMenuExtra,
  27. g_eMenuIgnore,
  28. g_eMenuTime,
  29. g_eMenuType
  30. };
  31. enum g_eItemRotationEnum {
  32. g_eItemModel,
  33. Float:g_eItemRotX,
  34. Float:g_eItemRotY,
  35. Float:g_eItemRotZ,
  36. Float:g_eItemZoom
  37. };
  38.  
  39. static stock
  40. g_ePlayerMenuData[MAX_PLAYERS][g_ePlayerMenuEnum],
  41. g_eMenuCustomRotation[MAX_CUSTOM_ROTATIONS][g_eItemRotationEnum]
  42. ;
  43.  
  44. static const g_arrVehicleColors[256] = {
  45. 0x000000FF, 0xF5F5F5FF, 0x2A77A1FF, 0x840410FF, 0x263739FF, 0x86446EFF, 0xD78E10FF, 0x4C75B7FF, 0xBDBEC6FF, 0x5E7072FF,
  46. 0x46597AFF, 0x656A79FF, 0x5D7E8DFF, 0x58595AFF, 0xD6DAD6FF, 0x9CA1A3FF, 0x335F3FFF, 0x730E1AFF, 0x7B0A2AFF, 0x9F9D94FF,
  47. 0x3B4E78FF, 0x732E3EFF, 0x691E3BFF, 0x96918CFF, 0x515459FF, 0x3F3E45FF, 0xA5A9A7FF, 0x635C5AFF, 0x3D4A68FF, 0x979592FF,
  48. 0x421F21FF, 0x5F272BFF, 0x8494ABFF, 0x767B7CFF, 0x646464FF, 0x5A5752FF, 0x252527FF, 0x2D3A35FF, 0x93A396FF, 0x6D7A88FF,
  49. 0x221918FF, 0x6F675FFF, 0x7C1C2AFF, 0x5F0A15FF, 0x193826FF, 0x5D1B20FF, 0x9D9872FF, 0x7A7560FF, 0x989586FF, 0xADB0B0FF,
  50. 0x848988FF, 0x304F45FF, 0x4D6268FF, 0x162248FF, 0x272F4BFF, 0x7D6256FF, 0x9EA4ABFF, 0x9C8D71FF, 0x6D1822FF, 0x4E6881FF,
  51. 0x9C9C98FF, 0x917347FF, 0x661C26FF, 0x949D9FFF, 0xA4A7A5FF, 0x8E8C46FF, 0x341A1EFF, 0x6A7A8CFF, 0xAAAD8EFF, 0xAB988FFF,
  52. 0x851F2EFF, 0x6F8297FF, 0x585853FF, 0x9AA790FF, 0x601A23FF, 0x20202CFF, 0xA4A096FF, 0xAA9D84FF, 0x78222BFF, 0x0E316DFF,
  53. 0x722A3FFF, 0x7B715EFF, 0x741D28FF, 0x1E2E32FF, 0x4D322FFF, 0x7C1B44FF, 0x2E5B20FF, 0x395A83FF, 0x6D2837FF, 0xA7A28FFF,
  54. 0xAFB1B1FF, 0x364155FF, 0x6D6C6EFF, 0x0F6A89FF, 0x204B6BFF, 0x2B3E57FF, 0x9B9F9DFF, 0x6C8495FF, 0x4D8495FF, 0xAE9B7FFF,
  55. 0x406C8FFF, 0x1F253BFF, 0xAB9276FF, 0x134573FF, 0x96816CFF, 0x64686AFF, 0x105082FF, 0xA19983FF, 0x385694FF, 0x525661FF,
  56. 0x7F6956FF, 0x8C929AFF, 0x596E87FF, 0x473532FF, 0x44624FFF, 0x730A27FF, 0x223457FF, 0x640D1BFF, 0xA3ADC6FF, 0x695853FF,
  57. 0x9B8B80FF, 0x620B1CFF, 0x5B5D5EFF, 0x624428FF, 0x731827FF, 0x1B376DFF, 0xEC6AAEFF, 0x000000FF, 0x177517FF, 0x210606FF,
  58. 0x125478FF, 0x452A0DFF, 0x571E1EFF, 0x010701FF, 0x25225AFF, 0x2C89AAFF, 0x8A4DBDFF, 0x35963AFF, 0xB7B7B7FF, 0x464C8DFF,
  59. 0x84888CFF, 0x817867FF, 0x817A26FF, 0x6A506FFF, 0x583E6FFF, 0x8CB972FF, 0x824F78FF, 0x6D276AFF, 0x1E1D13FF, 0x1E1306FF,
  60. 0x1F2518FF, 0x2C4531FF, 0x1E4C99FF, 0x2E5F43FF, 0x1E9948FF, 0x1E9999FF, 0x999976FF, 0x7C8499FF, 0x992E1EFF, 0x2C1E08FF,
  61. 0x142407FF, 0x993E4DFF, 0x1E4C99FF, 0x198181FF, 0x1A292AFF, 0x16616FFF, 0x1B6687FF, 0x6C3F99FF, 0x481A0EFF, 0x7A7399FF,
  62. 0x746D99FF, 0x53387EFF, 0x222407FF, 0x3E190CFF, 0x46210EFF, 0x991E1EFF, 0x8D4C8DFF, 0x805B80FF, 0x7B3E7EFF, 0x3C1737FF,
  63. 0x733517FF, 0x781818FF, 0x83341AFF, 0x8E2F1CFF, 0x7E3E53FF, 0x7C6D7CFF, 0x020C02FF, 0x072407FF, 0x163012FF, 0x16301BFF,
  64. 0x642B4FFF, 0x368452FF, 0x999590FF, 0x818D96FF, 0x99991EFF, 0x7F994CFF, 0x839292FF, 0x788222FF, 0x2B3C99FF, 0x3A3A0BFF,
  65. 0x8A794EFF, 0x0E1F49FF, 0x15371CFF, 0x15273AFF, 0x375775FF, 0x060820FF, 0x071326FF, 0x20394BFF, 0x2C5089FF, 0x15426CFF,
  66. 0x103250FF, 0x241663FF, 0x692015FF, 0x8C8D94FF, 0x516013FF, 0x090F02FF, 0x8C573AFF, 0x52888EFF, 0x995C52FF, 0x99581EFF,
  67. 0x993A63FF, 0x998F4EFF, 0x99311EFF, 0x0D1842FF, 0x521E1EFF, 0x42420DFF, 0x4C991EFF, 0x082A1DFF, 0x96821DFF, 0x197F19FF,
  68. 0x3B141FFF, 0x745217FF, 0x893F8DFF, 0x7E1A6CFF, 0x0B370BFF, 0x27450DFF, 0x071F24FF, 0x784573FF, 0x8A653AFF, 0x732617FF,
  69. 0x319490FF, 0x56941DFF, 0x59163DFF, 0x1B8A2FFF, 0x38160BFF, 0x041804FF, 0x355D8EFF, 0x2E3F5BFF, 0x561A28FF, 0x4E0E27FF,
  70. 0x706C67FF, 0x3B3E42FF, 0x2E2D33FF, 0x7B7E7DFF, 0x4A4442FF, 0x28344EFF
  71. };
  72.  
  73. stock SetModelPreviewRotation(modelid, Float:x, Float:y, Float:z, Float:zoom = 1.0)
  74. {
  75. for (new i = 0; i != MAX_CUSTOM_ROTATIONS; i ++) if (!g_eMenuCustomRotation[i][g_eItemModel]) {
  76. g_eMenuCustomRotation[i][g_eItemModel] = modelid;
  77. g_eMenuCustomRotation[i][g_eItemRotX] = x;
  78. g_eMenuCustomRotation[i][g_eItemRotY] = y;
  79. g_eMenuCustomRotation[i][g_eItemRotZ] = z;
  80. g_eMenuCustomRotation[i][g_eItemZoom] = zoom;
  81.  
  82. break;
  83. }
  84. return 0;
  85. }
  86.  
  87. stock HideModelSelectionMenu(playerid)
  88. {
  89. if (!IsPlayerConnected(playerid) || !g_ePlayerMenuData[playerid][g_eMenuShown])
  90. return 0;
  91.  
  92. for (new i = 0; i < 6; i ++) {
  93. PlayerTextDrawDestroy(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][i]);
  94. }
  95. for (new i = 0; i != MAX_MENU_ITEMS; i ++)
  96. {
  97. if (i < 18)
  98. {
  99. if (g_ePlayerMenuData[playerid][g_eMenuItems][i] != PlayerText:INVALID_TEXT_DRAW)
  100. {
  101. PlayerTextDrawDestroy(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i]);
  102. g_ePlayerMenuData[playerid][g_eMenuItems][i] = PlayerText:INVALID_TEXT_DRAW;
  103. }
  104. if (g_ePlayerMenuData[playerid][g_eMenuAmounts][i] != PlayerText:INVALID_TEXT_DRAW)
  105. {
  106. PlayerTextDrawDestroy(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i]);
  107. g_ePlayerMenuData[playerid][g_eMenuAmounts][i] = PlayerText:INVALID_TEXT_DRAW;
  108. }
  109. }
  110. g_ePlayerMenuData[playerid][g_eMenuModels][i] = -1;
  111. g_ePlayerMenuData[playerid][g_eMenuAmount][i] = 0;
  112. }
  113. g_ePlayerMenuData[playerid][g_eMenuShown] = false;
  114. g_ePlayerMenuData[playerid][g_eMenuTotalItems] = 0;
  115. g_ePlayerMenuData[playerid][g_eMenuExtra] = 0;
  116. g_ePlayerMenuData[playerid][g_eMenuPage] = 1;
  117. g_ePlayerMenuData[playerid][g_eMenuPages] = 0;
  118. g_ePlayerMenuData[playerid][g_eMenuIgnore] = true;
  119.  
  120. g_ePlayerMenuData[playerid][g_eMenuRot][0] = 0.0;
  121. g_ePlayerMenuData[playerid][g_eMenuRot][1] = 0.0;
  122. g_ePlayerMenuData[playerid][g_eMenuRot][2] = 0.0;
  123. g_ePlayerMenuData[playerid][g_eMenuRot][3] = 0.0;
  124.  
  125. CancelSelectTextDraw(playerid);
  126. return 1;
  127. }
  128.  
  129. stock ShowModelSelectionMenu(playerid, header[], extraid, items[], size = sizeof(items), Float:fRotX = 0.0, Float:fRotY = 0.0, Float:fRotZ = 0.0, Float:fZoom = 1.0, carcol = -1, bool:amount = false, amounts[] = {-1})
  130. {
  131. if (!IsPlayerConnected(playerid))
  132. return 0;
  133.  
  134. if (size > MAX_MENU_ITEMS)
  135. return printf("** Warning: Please increase \"MAX_MENU_ITEMS\" if you want to create more items.");
  136.  
  137. if (g_ePlayerMenuData[playerid][g_eMenuShown])
  138. {
  139. HideModelSelectionMenu(playerid);
  140. }
  141. for (new i = 0; i < 18; i ++) {
  142. g_ePlayerMenuData[playerid][g_eMenuItems][i] = PlayerText:INVALID_TEXT_DRAW;
  143. g_ePlayerMenuData[playerid][g_eMenuAmounts][i] = PlayerText:INVALID_TEXT_DRAW;
  144. }
  145. new
  146. Float:x = 78.0,
  147. Float:y = 162.0,
  148. page[8],
  149. str[16];
  150.  
  151. format(page, 8, "1/%d", (size / 18) + 1);
  152.  
  153. for (new i = 0, idx = 0; i != MAX_MENU_ITEMS; i ++)
  154. {
  155. if (i >= size)
  156. {
  157. g_ePlayerMenuData[playerid][g_eMenuModels][i] = -1;
  158. }
  159. else
  160. {
  161. if (items[i] == -1)
  162. {
  163. g_ePlayerMenuData[playerid][g_eMenuModels][i] = -1;
  164. g_ePlayerMenuData[playerid][g_eMenuAmount][i] = 0;
  165. }
  166. else
  167. {
  168. g_ePlayerMenuData[playerid][g_eMenuTotalItems]++;
  169. g_ePlayerMenuData[playerid][g_eMenuModels][i] = items[i];
  170.  
  171. if (amount) {
  172. g_ePlayerMenuData[playerid][g_eMenuAmount][i] = amounts[i];
  173. }
  174. }
  175. if (i < 18 && items[i] != -1)
  176. {
  177. if (idx > 0 && (idx % 6) == 0)
  178. {
  179. x = 140.0;
  180. y += 55.0;
  181. }
  182. else
  183. {
  184. x += 62.0;
  185. }
  186. idx++;
  187.  
  188. if (i < 18 && items[i] != -1)
  189. {
  190. g_ePlayerMenuData[playerid][g_eMenuItems][i] = CreatePlayerTextDraw(playerid, x, y, "_");
  191.  
  192. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], -188);
  193. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 5);
  194. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1.430000, 5.700000);
  195. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], -1);
  196. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  197. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  198. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  199. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 0);
  200. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 61.000000, 54.000000);
  201. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  202. PlayerTextDrawSetPreviewModel(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], items[i]);
  203. PlayerTextDrawSetPreviewRot(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], fRotX, fRotY, fRotZ, fZoom);
  204.  
  205. if (amount && amounts[i] != -1)
  206. {
  207. format(str, 16, "%d", amounts[i]);
  208.  
  209. g_ePlayerMenuData[playerid][g_eMenuAmounts][i] = CreatePlayerTextDraw(playerid, x + 57.0, y + 43.0, str);
  210. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], 3);
  211. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], 255);
  212. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], 1);
  213. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], 0.310000, 1.000000);
  214. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], -1429936641);
  215. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], 1);
  216. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i], 1);
  217. }
  218. else
  219. {
  220. g_ePlayerMenuData[playerid][g_eMenuAmounts][i] = PlayerText:INVALID_TEXT_DRAW;
  221. }
  222. if (carcol != -1)
  223. {
  224. PlayerTextDrawSetPreviewVehCol(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], carcol, carcol);
  225. }
  226. for (new j = 0; j != MAX_CUSTOM_ROTATIONS; j ++)
  227. {
  228. if (g_eMenuCustomRotation[j][g_eItemModel] == items[i])
  229. {
  230. PlayerTextDrawSetPreviewRot(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], g_eMenuCustomRotation[j][g_eItemRotX], g_eMenuCustomRotation[j][g_eItemRotY], g_eMenuCustomRotation[j][g_eItemRotZ], g_eMenuCustomRotation[j][g_eItemZoom]);
  231. break;
  232. }
  233. }
  234. }
  235. }
  236. }
  237. }
  238. g_ePlayerMenuData[playerid][g_eMenuExtra] = extraid;
  239. g_ePlayerMenuData[playerid][g_eMenuShown] = true;
  240. g_ePlayerMenuData[playerid][g_eMenuPage] = 1;
  241. g_ePlayerMenuData[playerid][g_eMenuPages] = (size / 18) + 1;
  242. g_ePlayerMenuData[playerid][g_eMenuTime] = GetTickCount();
  243. g_ePlayerMenuData[playerid][g_eMenuType] = 1;
  244.  
  245. g_ePlayerMenuData[playerid][g_eMenuRot][0] = fRotX;
  246. g_ePlayerMenuData[playerid][g_eMenuRot][1] = fRotY;
  247. g_ePlayerMenuData[playerid][g_eMenuRot][2] = fRotZ;
  248. g_ePlayerMenuData[playerid][g_eMenuRot][3] = fZoom;
  249.  
  250. g_ePlayerMenuData[playerid][g_eMenuTextdraws][0] = CreatePlayerTextDraw(playerid, 125.000000, 141.000000, "_");
  251. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 255);
  252. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1);
  253. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1.040000, 23.000007);
  254. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], -1);
  255. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 0);
  256. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1);
  257. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1);
  258. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1);
  259. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 119);
  260. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 529.000000, 11.000000);
  261. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 0);
  262.  
  263. g_ePlayerMenuData[playerid][g_eMenuTextdraws][1] = CreatePlayerTextDraw(playerid, 126.000000, 125.000000, header);
  264. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 255);
  265. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 0);
  266. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 0.809999, 2.599999);
  267. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], -1);
  268. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1);
  269. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1);
  270. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 0);
  271.  
  272. g_ePlayerMenuData[playerid][g_eMenuTextdraws][2] = CreatePlayerTextDraw(playerid, 498.000000, 141.000000, page);
  273. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 2);
  274. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 255);
  275. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 1);
  276. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 0.390000, 1.100000);
  277. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], -1);
  278. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 0);
  279. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 1);
  280. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 1);
  281. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 0);
  282.  
  283. g_ePlayerMenuData[playerid][g_eMenuTextdraws][3] = CreatePlayerTextDraw(playerid, 499.000000, 335.000000, "Next");
  284. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 2);
  285. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 255);
  286. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  287. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 0.400000, 1.100000);
  288. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], -1);
  289. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 0);
  290. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  291. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  292. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  293. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], -188);
  294. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 559.000000, 45.000000);
  295. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  296.  
  297. g_ePlayerMenuData[playerid][g_eMenuTextdraws][4] = CreatePlayerTextDraw(playerid, 449.000000, 335.000000, "Back");
  298. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 2);
  299. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 255);
  300. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  301. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 0.400000, 1.100000);
  302. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], -1);
  303. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 0);
  304. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  305. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  306. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  307. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], -188);
  308. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 559.000000, 45.000000);
  309. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  310.  
  311. g_ePlayerMenuData[playerid][g_eMenuTextdraws][5] = CreatePlayerTextDraw(playerid, 399.000000, 335.000000, "Close");
  312. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 2);
  313. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 255);
  314. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  315. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 0.400000, 1.100000);
  316. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], -1);
  317. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 0);
  318. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  319. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  320. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  321. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], -188);
  322. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 559.000000, 45.000000);
  323. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  324.  
  325. for (new i = 0; i < 6; i ++) {
  326. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][i]);
  327. }
  328. for (new i = 0; i < 18; i ++) if (g_ePlayerMenuData[playerid][g_eMenuModels][i] != -1) {
  329. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i]);
  330.  
  331. if (g_ePlayerMenuData[playerid][g_eMenuAmounts][i] != PlayerText:INVALID_TEXT_DRAW) {
  332. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i]);
  333. }
  334. }
  335. SelectTextDraw(playerid, -1);
  336. return 1;
  337. }
  338.  
  339. stock ShowColorSelectionMenu(playerid, extraid, colors[], size = sizeof(colors))
  340. {
  341. if (!IsPlayerConnected(playerid))
  342. return 0;
  343.  
  344. if (size > MAX_MENU_ITEMS)
  345. return printf("** Warning: Please increase \"MAX_MENU_ITEMS\" if you want to create more items.");
  346.  
  347. if (g_ePlayerMenuData[playerid][g_eMenuShown])
  348. {
  349. HideModelSelectionMenu(playerid);
  350. }
  351. for (new i = 0; i < 18; i ++) {
  352. g_ePlayerMenuData[playerid][g_eMenuItems][i] = PlayerText:INVALID_TEXT_DRAW;
  353. g_ePlayerMenuData[playerid][g_eMenuAmounts][i] = PlayerText:INVALID_TEXT_DRAW;
  354. }
  355. new
  356. Float:x = 78.0,
  357. Float:y = 162.0,
  358. page[8];
  359.  
  360. format(page, 8, "1/%d", (size / 18) + 1);
  361.  
  362. for (new i = 0, idx = 0; i != MAX_MENU_ITEMS; i ++)
  363. {
  364. if (i >= size)
  365. {
  366. g_ePlayerMenuData[playerid][g_eMenuModels][i] = -1;
  367. }
  368. else
  369. {
  370. if (colors[i] == -1)
  371. {
  372. g_ePlayerMenuData[playerid][g_eMenuModels][i] = -1;
  373. }
  374. else
  375. {
  376. g_ePlayerMenuData[playerid][g_eMenuTotalItems]++;
  377. g_ePlayerMenuData[playerid][g_eMenuModels][i] = colors[i];
  378. }
  379. if (idx < 18 && colors[i] != -1)
  380. {
  381. if (idx > 0 && (idx % 6) == 0)
  382. {
  383. x = 140.0;
  384. y += 55.0;
  385. }
  386. else
  387. {
  388. x += 62.0;
  389. }
  390. idx++;
  391.  
  392. if (colors[i] != -1)
  393. {
  394. g_ePlayerMenuData[playerid][g_eMenuItems][i] = CreatePlayerTextDraw(playerid, x, y, "_");
  395.  
  396. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], g_arrVehicleColors[colors[i]]);
  397. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 5);
  398. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1.430000, 5.700000);
  399. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], -1);
  400. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  401. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  402. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  403. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 0);
  404. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 61.000000, 54.000000);
  405. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 1);
  406. PlayerTextDrawSetPreviewModel(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i], 19300);
  407.  
  408. g_ePlayerMenuData[playerid][g_eMenuAmounts][i] = PlayerText:INVALID_TEXT_DRAW;
  409. }
  410. }
  411. }
  412. }
  413. g_ePlayerMenuData[playerid][g_eMenuExtra] = extraid;
  414. g_ePlayerMenuData[playerid][g_eMenuShown] = true;
  415. g_ePlayerMenuData[playerid][g_eMenuPage] = 1;
  416. g_ePlayerMenuData[playerid][g_eMenuPages] = (size / 18) + 1;
  417. g_ePlayerMenuData[playerid][g_eMenuTime] = GetTickCount();
  418. g_ePlayerMenuData[playerid][g_eMenuType] = 2;
  419.  
  420. g_ePlayerMenuData[playerid][g_eMenuTextdraws][0] = CreatePlayerTextDraw(playerid, 126.000000, 125.000000, "Car Colors");
  421. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 255);
  422. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 0);
  423. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 0.809999, 2.599999);
  424. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], -1);
  425. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1);
  426. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 1);
  427. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][0], 0);
  428.  
  429. g_ePlayerMenuData[playerid][g_eMenuTextdraws][1] = CreatePlayerTextDraw(playerid, 125.000000, 141.000000, "_");
  430. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 255);
  431. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1);
  432. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1.040000, 23.000007);
  433. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], -1);
  434. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 0);
  435. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1);
  436. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1);
  437. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 1);
  438. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 119);
  439. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 529.000000, 11.000000);
  440. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][1], 0);
  441.  
  442. g_ePlayerMenuData[playerid][g_eMenuTextdraws][2] = CreatePlayerTextDraw(playerid, 498.000000, 141.000000, page);
  443. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 2);
  444. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 255);
  445. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 1);
  446. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 0.390000, 1.100000);
  447. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], -1);
  448. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 0);
  449. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 1);
  450. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 1);
  451. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], 0);
  452.  
  453. g_ePlayerMenuData[playerid][g_eMenuTextdraws][3] = CreatePlayerTextDraw(playerid, 499.000000, 335.000000, "Next");
  454. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 2);
  455. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 255);
  456. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  457. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 0.400000, 1.100000);
  458. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], -1);
  459. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 0);
  460. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  461. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  462. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  463. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], -188);
  464. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 559.000000, 45.000000);
  465. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][3], 1);
  466.  
  467. g_ePlayerMenuData[playerid][g_eMenuTextdraws][4] = CreatePlayerTextDraw(playerid, 449.000000, 335.000000, "Back");
  468. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 2);
  469. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 255);
  470. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  471. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 0.400000, 1.100000);
  472. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], -1);
  473. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 0);
  474. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  475. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  476. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  477. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], -188);
  478. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 559.000000, 45.000000);
  479. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][4], 1);
  480.  
  481. g_ePlayerMenuData[playerid][g_eMenuTextdraws][5] = CreatePlayerTextDraw(playerid, 399.000000, 335.000000, "Close");
  482. PlayerTextDrawAlignment(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 2);
  483. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 255);
  484. PlayerTextDrawFont(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  485. PlayerTextDrawLetterSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 0.400000, 1.100000);
  486. PlayerTextDrawColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], -1);
  487. PlayerTextDrawSetOutline(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 0);
  488. PlayerTextDrawSetProportional(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  489. PlayerTextDrawSetShadow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  490. PlayerTextDrawUseBox(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  491. PlayerTextDrawBoxColor(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], -188);
  492. PlayerTextDrawTextSize(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 559.000000, 45.000000);
  493. PlayerTextDrawSetSelectable(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][5], 1);
  494.  
  495. for (new i = 0; i < 6; i ++) {
  496. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][i]);
  497. }
  498. for (new i = 0; i < 18; i ++) if (g_ePlayerMenuData[playerid][g_eMenuModels][i] != -1) {
  499. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i]);
  500.  
  501. if (g_ePlayerMenuData[playerid][g_eMenuAmounts][i] != PlayerText:INVALID_TEXT_DRAW) {
  502. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i]);
  503. }
  504. }
  505. SelectTextDraw(playerid, -1);
  506. return 1;
  507. }
  508.  
  509. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  510. {
  511. if (g_ePlayerMenuData[playerid][g_eMenuIgnore] || (GetTickCount() - g_ePlayerMenuData[playerid][g_eMenuTime]) < 200)
  512. {
  513. g_ePlayerMenuData[playerid][g_eMenuIgnore] = false;
  514. return CallLocalFunction("MS_OnPlayerClickTextDraw", "dd", playerid, _:clickedid);
  515. }
  516. else if ((clickedid == Text:INVALID_TEXT_DRAW && g_ePlayerMenuData[playerid][g_eMenuShown]))
  517. {
  518. CallLocalFunction("OnModelSelectionResponse", "ddddd", playerid, g_ePlayerMenuData[playerid][g_eMenuExtra], 0, 0, MODEL_RESPONSE_CANCEL);
  519. HideModelSelectionMenu(playerid);
  520. }
  521. return CallLocalFunction("MS_OnPlayerClickTextDraw", "dd", playerid, _:clickedid);
  522. }
  523.  
  524. stock Menu_SetPage(playerid, page)
  525. {
  526. if (g_ePlayerMenuData[playerid][g_eMenuShown])
  527. {
  528. if (page < 1 || page > g_ePlayerMenuData[playerid][g_eMenuPages])
  529. return 0;
  530.  
  531. new
  532. start = (18 * (page - 1)),
  533. str[16];
  534.  
  535. for (new i = 0; i < 18; i ++) {
  536. PlayerTextDrawHide(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i]);
  537. }
  538. for (new i = start; i != start + 18 && i < MAX_MENU_ITEMS; i ++)
  539. {
  540. if (g_ePlayerMenuData[playerid][g_eMenuModels][i] == -1)
  541. {
  542. PlayerTextDrawHide(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start]);
  543.  
  544. if (g_ePlayerMenuData[playerid][g_eMenuAmounts][i - start] != PlayerText:INVALID_TEXT_DRAW)
  545. {
  546. PlayerTextDrawHide(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i - start]);
  547. }
  548. }
  549. else
  550. {
  551. if (g_ePlayerMenuData[playerid][g_eMenuType] == 2)
  552. {
  553. PlayerTextDrawSetPreviewModel(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start], 19300);
  554. PlayerTextDrawBackgroundColor(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start], g_arrVehicleColors[g_ePlayerMenuData[playerid][g_eMenuModels][i]]);
  555. }
  556. else
  557. {
  558. PlayerTextDrawSetPreviewRot(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start], g_ePlayerMenuData[playerid][g_eMenuRot][0], g_ePlayerMenuData[playerid][g_eMenuRot][1], g_ePlayerMenuData[playerid][g_eMenuRot][2], g_ePlayerMenuData[playerid][g_eMenuRot][3]);
  559.  
  560. for (new j = 0; j != MAX_CUSTOM_ROTATIONS; j ++)
  561. {
  562. if (g_eMenuCustomRotation[j][g_eItemModel] == g_ePlayerMenuData[playerid][g_eMenuModels][i])
  563. {
  564. PlayerTextDrawSetPreviewRot(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start], g_eMenuCustomRotation[j][g_eItemRotX], g_eMenuCustomRotation[j][g_eItemRotY], g_eMenuCustomRotation[j][g_eItemRotZ], g_eMenuCustomRotation[j][g_eItemZoom]);
  565. break;
  566. }
  567. }
  568. PlayerTextDrawSetPreviewModel(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start], g_ePlayerMenuData[playerid][g_eMenuModels][i]);
  569. }
  570. PlayerTextDrawHide(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start]);
  571. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuItems][i - start]);
  572.  
  573. if (g_ePlayerMenuData[playerid][g_eMenuAmounts][i - start] != PlayerText:INVALID_TEXT_DRAW)
  574. {
  575. format(str, sizeof(str), "%d", g_ePlayerMenuData[playerid][g_eMenuAmount][i]);
  576. PlayerTextDrawSetString(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i - start], str);
  577.  
  578. PlayerTextDrawHide(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i - start]);
  579. PlayerTextDrawShow(playerid, g_ePlayerMenuData[playerid][g_eMenuAmounts][i - start]);
  580. }
  581. }
  582. }
  583. g_ePlayerMenuData[playerid][g_eMenuPage] = page;
  584.  
  585. format(str, 8, "%d/%d", page, g_ePlayerMenuData[playerid][g_eMenuPages]);
  586. PlayerTextDrawSetString(playerid, g_ePlayerMenuData[playerid][g_eMenuTextdraws][2], str);
  587. }
  588. return 1;
  589. }
  590.  
  591. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  592. {
  593. if (!g_ePlayerMenuData[playerid][g_eMenuShown] || (GetTickCount() - g_ePlayerMenuData[playerid][g_eMenuTime]) < 600)
  594. {
  595. return CallLocalFunction("MS_OnPlayerClickPlayerTextDraw", "ii", playerid, _:playertextid);
  596. }
  597. if (playertextid == g_ePlayerMenuData[playerid][g_eMenuTextdraws][5])
  598. {
  599. CallLocalFunction("OnModelSelectionResponse", "ddddd", playerid, g_ePlayerMenuData[playerid][g_eMenuExtra], 0, 0, MODEL_RESPONSE_CANCEL);
  600. HideModelSelectionMenu(playerid);
  601. }
  602. else
  603. {
  604. if (playertextid == g_ePlayerMenuData[playerid][g_eMenuTextdraws][3])
  605. {
  606. if (g_ePlayerMenuData[playerid][g_eMenuPage] == g_ePlayerMenuData[playerid][g_eMenuPages])
  607. return 0;
  608.  
  609. else
  610. Menu_SetPage(playerid, g_ePlayerMenuData[playerid][g_eMenuPage] + 1);
  611. }
  612. else if (playertextid == g_ePlayerMenuData[playerid][g_eMenuTextdraws][4])
  613. {
  614. if (g_ePlayerMenuData[playerid][g_eMenuPage] < 2)
  615. return 0;
  616.  
  617. else
  618. Menu_SetPage(playerid, g_ePlayerMenuData[playerid][g_eMenuPage] - 1);
  619. }
  620. else for (new i = 0; i < 18; i ++)
  621. {
  622. if (g_ePlayerMenuData[playerid][g_eMenuItems][i] == playertextid)
  623. {
  624. new
  625. index = (i + (g_ePlayerMenuData[playerid][g_eMenuPage] - 1) * 18),
  626. extraid = g_ePlayerMenuData[playerid][g_eMenuExtra],
  627. modelid = g_ePlayerMenuData[playerid][g_eMenuModels][index];
  628.  
  629. HideModelSelectionMenu(playerid);
  630. CallLocalFunction("OnModelSelectionResponse", "ddddd", playerid, extraid, index, modelid, MODEL_RESPONSE_SELECT);
  631. break;
  632. }
  633. }
  634. }
  635. return CallLocalFunction("MS_OnPlayerClickPlayerTextDraw", "dd", playerid, _:playertextid);
  636. }
  637.  
  638. #if defined _ALS_OnPlayerClickTextDraw
  639. #undef OnPlayerClickTextDraw
  640. #else
  641. #define _ALS_OnPlayerClickTextDraw
  642. #endif
  643.  
  644. #if defined _ALS_OnPlayerClickPlayerTD
  645. #undef OnPlayerClickPlayerTextDraw
  646. #else
  647. #define _ALS_OnPlayerClickPlayerTD
  648. #endif
  649.  
  650. #define OnPlayerClickTextDraw MS_OnPlayerClickTextDraw
  651. #define OnPlayerClickPlayerTextDraw MS_OnPlayerClickPlayerTextDraw
  652.  
  653. forward MS_OnPlayerClickTextDraw(playerid, Text:clickedid);
  654. forward MS_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
  655.  
  656. forward OnModelSelectionResponse(playerid, extraid, index, modelid, response);
Advertisement
Add Comment
Please, Sign In to add comment