Guest User

aCMenu.inc 1.5 by adri1

a guest
May 26th, 2013
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.21 KB | None | 0 0
  1. /*
  2. Version 1.5 fixed version
  3. aCMenu
  4. Circular Menus by adri1 ( http://forum.sa-mp.com/member.php?u=106967 )
  5.  
  6. ADRI1 INCLUDE
  7.  
  8. FUNC:
  9. ShowCircularMenu(
  10. playerid, = Player ID
  11. circularmenuid, = Circular Menu ID
  12. off[], = Button OFF text
  13. txd1[]="", line1[]="", = Line 1 sprite & text
  14. txd2[]="", line2[]="", = Line 2 sprite & text
  15. txd3[]="", line3[]="", = Line 3 sprite & text
  16. txd4[]="", line4[]="", = Line 4 sprite & text
  17. txd5[]="", line5[]="", = Line 5 sprite & text
  18. txd6[]="", line6[]="", = Line 6 sprite & text
  19. txd7[]="", line7[]="", = Line 7 sprite & text
  20. txd8[]="", line8[]="" = Line 8 sprite & text
  21. );
  22.  
  23. FORWARD:
  24. OnCircularMenuResponse(
  25. playerid, = Player ID
  26. response, = false = clicked on off button
  27. circularmenuid, = Circular Menu ID
  28. listitem = Listitem ... in the direction of clockwise >right>
  29. );
  30.  
  31. WARNING:
  32. By default the limit is 10 circular menus per player
  33. You can change this option....
  34. #define MAX_CM_DIALOGS x
  35. */
  36.  
  37. /* START */
  38.  
  39. #define MAX_CM_DIALOGS 10
  40. new
  41. PlayerText:CircularMenu_Lines[MAX_PLAYERS][MAX_CM_DIALOGS][17],
  42. Text:CircularMenu_Base[7]
  43. ;
  44. forward OnCircularMenuResponse(playerid, response, circularmenuid, listitem);
  45.  
  46. stock ShowCircularMenu(playerid, circularmenuid, off[], txd1[]="", line1[]="", txd2[]="", line2[]="", txd3[]="", line3[]="", txd4[]="", line4[]="", txd5[]="", line5[]="", txd6[]="", line6[]="", txd7[]="", line7[]="", txd8[]="", line8[]="")
  47. {
  48. if(GetPVarInt(playerid, "circularmenu_active") >= 0) return 0;
  49. SetPVarInt(playerid, "circularmenu_active", circularmenuid);
  50.  
  51. new str1[24], str2[24], str3[24], str4[24], str5[24], str6[24], str7[24], str8[24], str9[24];
  52. format(str1, 24, "_~n~%s", line1);
  53. format(str2, 24, "_~n~%s", line2);
  54. format(str3, 24, "_~n~%s", line3);
  55. format(str4, 24, "_~n~%s", line4);
  56. format(str5, 24, "_~n~%s", line5);
  57. format(str6, 24, "_~n~%s", line6);
  58. format(str7, 24, "_~n~%s", line7);
  59. format(str8, 24, "_~n~%s", line8);
  60. format(str9, 24, "_~n~_~n~%s", off);
  61.  
  62. CircularMenu_Lines[playerid][circularmenuid][0] = CreatePlayerTextDraw(playerid, 318.594940, 128.333297, str1);
  63. CircularMenu_Lines[playerid][circularmenuid][1] = CreatePlayerTextDraw(playerid, 368.321472, 158.499969, str2);
  64. CircularMenu_Lines[playerid][circularmenuid][2] = CreatePlayerTextDraw(playerid, 387.593963, 216.666610, str3);
  65. CircularMenu_Lines[playerid][circularmenuid][3] = CreatePlayerTextDraw(playerid, 367.978881, 279.499938, str4);
  66. CircularMenu_Lines[playerid][circularmenuid][4] = CreatePlayerTextDraw(playerid, 316.972747, 305.583251, str5);
  67. CircularMenu_Lines[playerid][circularmenuid][5] = CreatePlayerTextDraw(playerid, 262.687164, 279.166534, str6);
  68. CircularMenu_Lines[playerid][circularmenuid][6] = CreatePlayerTextDraw(playerid, 245.414825, 215.999923, str7);
  69. CircularMenu_Lines[playerid][circularmenuid][7] = CreatePlayerTextDraw(playerid, 261.876098, 155.749923, str8);
  70. CircularMenu_Lines[playerid][circularmenuid][8] = CreatePlayerTextDraw(playerid, 320.504364, 213.333221, str9);
  71.  
  72. CircularMenu_Lines[playerid][circularmenuid][9] = CreatePlayerTextDraw(playerid, 303.133666, 114.333343, txd1);
  73. CircularMenu_Lines[playerid][circularmenuid][10] = CreatePlayerTextDraw(playerid, 353.797363, 144.499923, txd2);
  74. CircularMenu_Lines[playerid][circularmenuid][11] = CreatePlayerTextDraw(playerid, 373.538146, 203.249771, txd3);
  75. CircularMenu_Lines[playerid][circularmenuid][12] = CreatePlayerTextDraw(playerid, 353.922851, 267.249816, txd4);
  76. CircularMenu_Lines[playerid][circularmenuid][13] = CreatePlayerTextDraw(playerid, 303.385620, 293.916442, txd5);
  77. CircularMenu_Lines[playerid][circularmenuid][14] = CreatePlayerTextDraw(playerid, 248.163009, 268.082946, txd6);
  78. CircularMenu_Lines[playerid][circularmenuid][15] = CreatePlayerTextDraw(playerid, 229.953643, 201.999679, txd7);
  79. CircularMenu_Lines[playerid][circularmenuid][16] = CreatePlayerTextDraw(playerid, 249.694488, 142.333053, txd8);
  80.  
  81. for(new i = 0; i != 8; i++)
  82. {
  83. PlayerTextDrawLetterSize(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 0.384406, 1.553331);
  84. PlayerTextDrawAlignment(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 2);
  85. PlayerTextDrawColor(playerid, CircularMenu_Lines[playerid][circularmenuid][i], -256);
  86. PlayerTextDrawSetShadow(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 0);
  87. PlayerTextDrawSetOutline(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 0);
  88. PlayerTextDrawBackgroundColor(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 51);
  89. PlayerTextDrawFont(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 3);
  90. PlayerTextDrawSetProportional(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 1);
  91. PlayerTextDrawTextSize(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 10, 25);
  92. PlayerTextDrawSetSelectable(playerid, CircularMenu_Lines[playerid][circularmenuid][i], true);
  93. }
  94.  
  95. for(new i = 9; i != 17; i++)
  96. {
  97. PlayerTextDrawLetterSize(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 0.000000, 0.000000);
  98. PlayerTextDrawTextSize(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 28.579788, 28.583330);
  99. PlayerTextDrawAlignment(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 1);
  100. PlayerTextDrawColor(playerid, CircularMenu_Lines[playerid][circularmenuid][i], -1);
  101. PlayerTextDrawSetShadow(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 0);
  102. PlayerTextDrawSetOutline(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 0);
  103. PlayerTextDrawFont(playerid, CircularMenu_Lines[playerid][circularmenuid][i], 4);
  104. }
  105.  
  106. PlayerTextDrawLetterSize(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 0.384406, 1.553331);
  107. PlayerTextDrawAlignment(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 2);
  108. PlayerTextDrawColor(playerid, CircularMenu_Lines[playerid][circularmenuid][8], -256);
  109. PlayerTextDrawSetShadow(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 0);
  110. PlayerTextDrawSetOutline(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 0);
  111. PlayerTextDrawBackgroundColor(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 51);
  112. PlayerTextDrawFont(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 3);
  113. PlayerTextDrawSetProportional(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 1);
  114. PlayerTextDrawTextSize(playerid, CircularMenu_Lines[playerid][circularmenuid][8], 10, 25);
  115. PlayerTextDrawSetSelectable(playerid, CircularMenu_Lines[playerid][circularmenuid][8], true);
  116.  
  117. for(new i = 0; i != 7; i++) TextDrawShowForPlayer(playerid, CircularMenu_Base[i]);
  118. for(new x = 0; x != 17; x++) PlayerTextDrawShow(playerid, CircularMenu_Lines[playerid][circularmenuid][x]);
  119. SelectTextDraw(playerid, -1);
  120. return 1;
  121. }
  122.  
  123. stock DestroyCircularMenu(playerid, dialogid)
  124. {
  125. for(new i = 0; i != 7; i++) TextDrawHideForPlayer(playerid, CircularMenu_Base[i]);
  126. for(new x = 0; x != 17; x++) PlayerTextDrawDestroy(playerid, CircularMenu_Lines[playerid][dialogid][x]);
  127. CancelSelectTextDraw(playerid);
  128. return 1;
  129. }
  130.  
  131. public OnGameModeInit()
  132. {
  133. CircularMenu_Base[0] = TextDrawCreate(239.882873, 123.666664, "hud:radardisc");
  134. TextDrawLetterSize(CircularMenu_Base[0], 0.000000, 0.000000);
  135. TextDrawTextSize(CircularMenu_Base[0], 79.180084, 97.416824);
  136. TextDrawAlignment(CircularMenu_Base[0], 1);
  137. TextDrawColor(CircularMenu_Base[0], -65436);
  138. TextDrawSetShadow(CircularMenu_Base[0], 0);
  139. TextDrawSetOutline(CircularMenu_Base[0], 0);
  140. TextDrawFont(CircularMenu_Base[0], 4);
  141. TextDrawSetProportional(CircularMenu_Base[0], 1);
  142.  
  143. CircularMenu_Base[1] = TextDrawCreate(239.477310, 314.833221, "hud:radardisc");
  144. TextDrawLetterSize(CircularMenu_Base[1], 0.000000, 0.000000);
  145. TextDrawTextSize(CircularMenu_Base[1], 77.774520, -97.999885);
  146. TextDrawAlignment(CircularMenu_Base[1], 1);
  147. TextDrawColor(CircularMenu_Base[1], -156);
  148. TextDrawSetShadow(CircularMenu_Base[1], 0);
  149. TextDrawSetOutline(CircularMenu_Base[1], 0);
  150. TextDrawFont(CircularMenu_Base[1], 4);
  151.  
  152. CircularMenu_Base[2] = TextDrawCreate(392.746978, 315.249847, "hud:radardisc");
  153. TextDrawLetterSize(CircularMenu_Base[2], 0.000000, 0.000000);
  154. TextDrawTextSize(CircularMenu_Base[2], -78.243026, -97.999839);
  155. TextDrawAlignment(CircularMenu_Base[2], 1);
  156. TextDrawColor(CircularMenu_Base[2], -156);
  157. TextDrawSetShadow(CircularMenu_Base[2], 0);
  158. TextDrawSetOutline(CircularMenu_Base[2], 0);
  159. TextDrawFont(CircularMenu_Base[2], 4);
  160.  
  161. CircularMenu_Base[3] = TextDrawCreate(392.341339, 123.749847, "hud:radardisc");
  162. TextDrawLetterSize(CircularMenu_Base[3], 0.000000, 0.000000);
  163. TextDrawTextSize(CircularMenu_Base[3], -74.026344, 96.250259);
  164. TextDrawAlignment(CircularMenu_Base[3], 1);
  165. TextDrawColor(CircularMenu_Base[3], -156);
  166. TextDrawSetShadow(CircularMenu_Base[3], 0);
  167. TextDrawSetOutline(CircularMenu_Base[3], 0);
  168. TextDrawFont(CircularMenu_Base[3], 4);
  169.  
  170. CircularMenu_Base[4] = TextDrawCreate(292.825469, 184.916641, "LD_BEAT:chit");
  171. TextDrawLetterSize(CircularMenu_Base[4], 0.000000, -6.184477);
  172. TextDrawTextSize(CircularMenu_Base[4], 54.816955, 68.250015);
  173. TextDrawAlignment(CircularMenu_Base[4], 1);
  174. TextDrawColor(CircularMenu_Base[4], -16777016);
  175. TextDrawUseBox(CircularMenu_Base[4], true);
  176. TextDrawBoxColor(CircularMenu_Base[4], 255);
  177. TextDrawSetShadow(CircularMenu_Base[4], 0);
  178. TextDrawSetOutline(CircularMenu_Base[4], 0);
  179. TextDrawFont(CircularMenu_Base[4], 4);
  180.  
  181. CircularMenu_Base[5] = TextDrawCreate(320.468566, 190.750000, "O");
  182. TextDrawLetterSize(CircularMenu_Base[5], 1.182299, 5.531667);
  183. TextDrawAlignment(CircularMenu_Base[5], 2);
  184. TextDrawColor(CircularMenu_Base[5], -1);
  185. TextDrawSetShadow(CircularMenu_Base[5], 0);
  186. TextDrawSetOutline(CircularMenu_Base[5], 0);
  187. TextDrawBackgroundColor(CircularMenu_Base[5], 51);
  188. TextDrawFont(CircularMenu_Base[5], 1);
  189. TextDrawSetProportional(CircularMenu_Base[5], 1);
  190.  
  191. CircularMenu_Base[6] = TextDrawCreate(319.594696, 189.999969, "I");
  192. TextDrawLetterSize(CircularMenu_Base[6], 1.100307, 3.169169);
  193. TextDrawAlignment(CircularMenu_Base[6], 2);
  194. TextDrawColor(CircularMenu_Base[6], -1);
  195. TextDrawSetShadow(CircularMenu_Base[6], 0);
  196. TextDrawSetOutline(CircularMenu_Base[6], 0);
  197. TextDrawBackgroundColor(CircularMenu_Base[6], 51);
  198. TextDrawFont(CircularMenu_Base[6], 1);
  199. TextDrawSetProportional(CircularMenu_Base[6], 1);
  200.  
  201. return CallLocalFunction("AC_OGMI_ACM", "");
  202. }
  203. #if defined _ALS_OnGameModeInit
  204. #undef OnGameModeInit
  205. #else
  206. #define _ALS_OnGameModeInit
  207. #endif
  208. #define OnGameModeInit AC_OGMI_ACM
  209. forward AC_OGMI_ACM();
  210.  
  211. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  212. {
  213. if(GetPVarInt(playerid, "circularmenu_active") >= 0)
  214. {
  215. //Escape
  216. if(clickedid == Text:INVALID_TEXT_DRAW)
  217. {
  218. CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, false, GetPVarInt(playerid, "circularmenu_active"), -1);
  219. DestroyCircularMenu(playerid, GetPVarInt(playerid, "circularmenu_active"));
  220. SetPVarInt(playerid, "circularmenu_active", -1);
  221.  
  222. }
  223. }
  224. return CallLocalFunction("AC_OPCTD_ACM", "ii", playerid, _:clickedid);
  225. }
  226. #if defined _ALS_OnPlayerClickTextDraw
  227. #undef OnPlayerClickTextDraw
  228. #else
  229. #define _ALS_OnPlayerClickTextDraw
  230. #endif
  231. #define OnPlayerClickTextDraw AC_OPCTD_ACM
  232. forward AC_OPCTD_ACM(playerid, Text:clickedid);
  233.  
  234. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  235. {
  236. if(GetPVarInt(playerid, "circularmenu_active") >= 0)
  237. {
  238. new circularmenuid = GetPVarInt(playerid, "circularmenu_active");
  239.  
  240. if(playertextid == CircularMenu_Lines[playerid][circularmenuid][0]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 0);
  241. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][1]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 1);
  242. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][2]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 2);
  243. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][3]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 3);
  244. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][4]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 4);
  245. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][5]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 5);
  246. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][6]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 6);
  247. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][7]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 7);
  248. //else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][8]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 8);
  249. else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][8])
  250. {
  251. CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, false, circularmenuid, -1);
  252. DestroyCircularMenu(playerid, circularmenuid);
  253. SetPVarInt(playerid, "circularmenu_active", -1);
  254. }
  255. }
  256. return CallLocalFunction("AC_OPCPTD_ACM", "ii", playerid, _:playertextid);
  257. }
  258. #if defined _ALS_OnPlayerClickPlayerTD
  259. #undef OnPlayerClickPlayerTextDraw
  260. #else
  261. #define _ALS_OnPlayerClickPlayerTD
  262. #endif
  263. #define OnPlayerClickPlayerTextDraw AC_OPCPTD_ACM
  264.  
  265. forward AC_OPCPTD_ACM(playerid, PlayerText:playertextid);
  266.  
  267.  
  268.  
  269. public OnPlayerConnect(playerid){
  270. SetPVarInt(playerid, "circularmenu_active", -1);
  271. return CallLocalFunction("AC_OPC_ACM", "i", playerid);
  272. }
  273. #if defined _ALS_OnPlayerConnect
  274. #undef OnPlayerConnect
  275. #else
  276. #define _ALS_OnPlayerConnect
  277. #endif
  278. #define OnPlayerConnect AC_OPC_ACM
  279. forward AC_OPC_ACM(playerid);
  280.  
  281. public OnPlayerDisconnect(playerid, reason)
  282. {
  283. DeletePVar(playerid, "circularmenu_active");
  284. return CallLocalFunction("AC_OPDC_ACM", "ii", playerid, reason);
  285. }
  286. #if defined _ALS_OnPlayerDisconnect
  287. #undef OnPlayerDisconnect
  288. #else
  289. #define _ALS_OnPlayerDisconnect
  290. #endif
  291. #define OnPlayerDisconnect AC_OPDC_ACM
  292. forward AC_OPDC_ACM(playerid, reason);
Advertisement
Add Comment
Please, Sign In to add comment