Advertisement
Hirsw0w

Textdraw menu v1.0

Nov 30th, 2014
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.73 KB | None | 0 0
  1. #if defined _txdmenu_included
  2. #endinput
  3. #endif
  4. #define _txdmenu_included
  5.  
  6. /*
  7. ==========================================================================================================
  8. Text Draw menu include
  9. ==========================================================================================================
  10.  
  11.  
  12. Functions:
  13.  
  14. menu_create - create menu | return menu-id
  15.  
  16. menu_additem - add item to the menu
  17.  
  18. menu_display - display the menu for player, you can choose page
  19.  
  20. menu_destroy - destroy menu for player
  21.  
  22. Defines:
  23.  
  24. MAX_ITEMS - default : 40 | the max items in menu
  25.  
  26. MENU_EXIT - default : -1 | don't touch this you can if the item = MENU_EXIT
  27.  
  28. MAX_MENUS_ONCE - default : 50 | don't need to touch it basicly that change max menus in once.
  29.  
  30.  
  31.  
  32. Description :
  33.  
  34. easy to use, good, beutiful.
  35.  
  36. have many usages for it.
  37.  
  38.  
  39. Credits:
  40.  
  41. ==========================================================================================================
  42. */
  43.  
  44. /* NATIVES */
  45.  
  46. native menu_create(Header[],Handler[]);
  47. native menu_additem(menu,Item[]);
  48. native menu_display(playerid,menu,page=1);
  49. native menu_destroy(playerid);
  50.  
  51. /* ------- */
  52.  
  53.  
  54. #define MAX_ITEMS 40 // max items that can be in menu, defult : 50
  55. #define MENU_EXIT -1 // exit from menu like if item == MENU_EXIT
  56. #define MAX_MENUS_ONCE 50 // max menus can create at once.
  57.  
  58. #define TD_BOX (0)
  59. #define TD_HEADER (1)
  60. #define TD_BUTTON1 (2)
  61. #define TD_BUTTON2 (3)
  62. #define TD_BUTTON3 (4)
  63. #define TD_BUTTON4 (5)
  64. #define TD_BUTTON5 (6)
  65. #define TD_BUTTON6 (7)
  66. #define TD_BUTTON7 (8)
  67. #define TD_BUTTON8 (9)
  68. #define TD_NEXT (10)
  69. #define TD_BACK (11)
  70. #define TD_EXIT (12)
  71.  
  72. new mNum = -1; // menu count
  73.  
  74. new PlayerText:mTd[MAX_PLAYERS][13]; // menu bullshit
  75. new mPlayerid[MAX_PLAYERS]; // menu bullshit
  76. new mPlayerPage[MAX_PLAYERS];
  77. new mHandler[MAX_MENUS_ONCE][32]; // menu bullshit
  78. new mHeader[MAX_MENUS_ONCE][64];
  79. new mLines[MAX_MENUS_ONCE][MAX_ITEMS][32]; // menu bullshit
  80. new mItemsnum[MAX_MENUS_ONCE]; // menu bullshit
  81. stock menu_create(Header[],menu_handler[]) {
  82. if(mNum >= MAX_MENUS_ONCE-1) mNum = -1;
  83. mNum++;
  84. format(mHeader[mNum],64,Header);
  85. format(mHandler[mNum],32,menu_handler);
  86. mItemsnum[mNum] = 0;
  87. return mNum;
  88. }
  89.  
  90. stock menu_additem(menu,Item[]) {
  91. if(mItemsnum[menu] == MAX_ITEMS) return 0;
  92.  
  93. format(mLines[menu][mItemsnum[menu]],64,Item);
  94. mItemsnum[menu]++;
  95. return 1;
  96. }
  97.  
  98. stock menu_destroy(playerid) {
  99. for(new i;i < 13;i++) PlayerTextDrawHide(playerid,mTd[playerid][i]);
  100. CancelSelectTextDraw(playerid);
  101. return 1;
  102. }
  103.  
  104. stock menu_display(playerid,menu,page=1) {
  105. if(page <= 0) page = 1;
  106. else if((page-1)*8 >= mItemsnum[menu]) page=page-1;
  107.  
  108.  
  109. PlayerTextDrawSetString(playerid,mTd[playerid][TD_HEADER],mHeader[menu]);
  110. PlayerTextDrawShow(playerid,mTd[playerid][TD_HEADER]);
  111. PlayerTextDrawShow(playerid,mTd[playerid][TD_EXIT]);
  112. PlayerTextDrawShow(playerid,mTd[playerid][TD_NEXT]);
  113. PlayerTextDrawShow(playerid,mTd[playerid][TD_BACK]);
  114. PlayerTextDrawShow(playerid,mTd[playerid][TD_BOX]);
  115.  
  116. mPlayerid[playerid] = menu;
  117.  
  118. for(new i;i < 8 ;i++) {
  119. if(mLines[menu][i][0] == EOS) continue;
  120. PlayerTextDrawSetString(playerid,mTd[playerid][2+i],mLines[menu][i*page]);
  121. PlayerTextDrawShow(playerid,mTd[playerid][2+i]);
  122. }
  123.  
  124. mPlayerPage[playerid] = page;
  125. SelectTextDraw(playerid, 0xA3B4C5FF);
  126. return 1;
  127. }
  128.  
  129. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  130. {
  131. if(_:playertextid == INVALID_TEXT_DRAW) return menu_destroy(playerid);
  132.  
  133. for(new i;i < 8;i++) {
  134. if(playertextid == mTd[playerid][2+i]) {
  135. CallLocalFunction(mHandler[mPlayerid[playerid]],"ddd",playerid,mPlayerid[playerid],i*mPlayerPage[playerid]);
  136. menu_destroy(playerid);
  137. return 1;
  138. }
  139. }
  140.  
  141. if(playertextid == mTd[playerid][TD_EXIT]) CallLocalFunction(mHandler[mPlayerid[playerid]],"ddd",playerid,mPlayerid[playerid],MENU_EXIT);
  142. else if(playertextid == mTd[playerid][TD_BACK]) menu_destroy(playerid),menu_display(mPlayerid[playerid],playerid,mPlayerPage[playerid]-1);
  143. else if(playertextid == mTd[playerid][TD_NEXT]) menu_destroy(playerid),menu_display(mPlayerid[playerid],playerid,mPlayerPage[playerid]+1);
  144.  
  145. if (funcidx("TMenu_OnPlayerClickPlayerTextDraw") != -1)
  146. {
  147. return CallLocalFunction("TMenu_OnPlayerClickPlayerTextDraw", "");
  148. }
  149. return 1;
  150. }
  151.  
  152. #if defined _ALS_OnPlayerClickPlayerTextDraw
  153. #undef OnPlayerClickPlayerTextDraw
  154. #else
  155. #define _ALS_OnPlayerClickPlayerTextDraw
  156. #endif
  157. #define OnPlayerConnect TMenu_OnPlayerClickPlayerTextDraw
  158. forward TMenu_OnPlayerClickPlayerTextDraw();
  159.  
  160. //#if defined FILTERSCRIPT
  161. public OnPlayerConnect(playerid)
  162. {
  163. mTd[playerid][TD_BOX] = CreatePlayerTextDraw(playerid,10.000000, 150.000000, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~");
  164. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BOX], 255);
  165. PlayerTextDrawFont(playerid,mTd[playerid][TD_BOX], 1);
  166. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BOX], 0.500000, 1.000000);
  167. PlayerTextDrawColor(playerid,mTd[playerid][TD_BOX], -1);
  168. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BOX], 0);
  169. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BOX], 1);
  170. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BOX], 1);
  171. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BOX], 1);
  172. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BOX], 120);
  173. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BOX], 199.000000, 312.000000);
  174. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BOX], 0);
  175.  
  176. mTd[playerid][TD_HEADER] = CreatePlayerTextDraw(playerid,10.000000, 150.000000, "Header-Header-Header-Header");
  177. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_HEADER], 255);
  178. PlayerTextDrawFont(playerid,mTd[playerid][TD_HEADER], 1);
  179. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_HEADER], 0.360000, 1.000000);
  180. PlayerTextDrawColor(playerid,mTd[playerid][TD_HEADER], -1);
  181. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_HEADER], 0);
  182. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_HEADER], 1);
  183. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_HEADER], 1);
  184. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_HEADER], 0);
  185.  
  186. mTd[playerid][TD_BUTTON1] = CreatePlayerTextDraw(playerid,21.000000, 175.000000, "Button1");
  187. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON1], 255);
  188. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON1], 1);
  189. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON1], 0.360000, 1.000000);
  190. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON1], -1);
  191. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON1], 0);
  192. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON1], 1);
  193. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON1], 1);
  194. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON1], 1);
  195. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON1], 255);
  196. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON1], 179.000000, 20.000000);
  197. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON1], 1);
  198.  
  199. mTd[playerid][TD_BUTTON2] = CreatePlayerTextDraw(playerid,21.000000, 191.000000, "Button2");
  200. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON2], 255);
  201. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON2], 1);
  202. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON2], 0.360000, 1.000000);
  203. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON2], -1);
  204. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON2], 0);
  205. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON2], 1);
  206. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON2], 1);
  207. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON2], 1);
  208. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON2], 255);
  209. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON2], 179.00, 20.000000);
  210. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON2], 1);
  211.  
  212. mTd[playerid][TD_BUTTON3] = CreatePlayerTextDraw(playerid,21.000000, 207.000000, "Button3");
  213. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON3], 255);
  214. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON3], 1);
  215. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON3], 0.360000, 1.000000);
  216. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON3], -1);
  217. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON3], 0);
  218. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON3], 1);
  219. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON3], 1);
  220. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON3], 1);
  221. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON3], 255);
  222. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON3], 179.000000, 20.000000);
  223. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON3], 1);
  224.  
  225. mTd[playerid][TD_BUTTON4] = CreatePlayerTextDraw(playerid,21.000000, 223.000000, "Button4");
  226. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON4], 255);
  227. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON4], 1);
  228. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON4], 0.360000, 1.000000);
  229. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON4], -1);
  230. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON4], 0);
  231. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON4], 1);
  232. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON4], 1);
  233. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON4], 1);
  234. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON4], 255);
  235. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON4], 179.000000, 20.000000);
  236. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON4], 1);
  237.  
  238. mTd[playerid][TD_BUTTON5] = CreatePlayerTextDraw(playerid,21.000000, 239.000000, "Button5");
  239. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON5], 255);
  240. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON5], 1);
  241. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON5], 0.360000, 1.000000);
  242. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON5], -1);
  243. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON5], 0);
  244. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON5], 1);
  245. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON5], 1);
  246. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON5], 1);
  247. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON5], 255);
  248. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON5], 179.000000, 20.000000);
  249. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON5], 1);
  250.  
  251. mTd[playerid][TD_BUTTON6] = CreatePlayerTextDraw(playerid,21.000000, 256.000000, "Button6");
  252. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON6], 255);
  253. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON6], 1);
  254. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON6], 0.360000, 1.000000);
  255. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON6], -1);
  256. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON6], 0);
  257. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON6], 1);
  258. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON6], 1);
  259. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON6], 1);
  260. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON6], 255);
  261. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON6], 179.000000, 32.000000);
  262. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON6], 1);
  263.  
  264. mTd[playerid][TD_BUTTON7] = CreatePlayerTextDraw(playerid,21.000000, 272.000000, "Button7");
  265. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON7], 255);
  266. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON7], 1);
  267. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON7], 0.360000, 1.000000);
  268. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON7], -1);
  269. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON7], 0);
  270. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON7], 1);
  271. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON7], 1);
  272. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON7], 1);
  273. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON7], 255);
  274. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON7], 179.000000, 20.000000);
  275. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON7], 1);
  276.  
  277. mTd[playerid][TD_BUTTON8] = CreatePlayerTextDraw(playerid,21.000000, 288.000000, "Button8");
  278. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BUTTON8], 255);
  279. PlayerTextDrawFont(playerid,mTd[playerid][TD_BUTTON8], 1);
  280. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BUTTON8], 0.360000, 1.000000);
  281. PlayerTextDrawColor(playerid,mTd[playerid][TD_BUTTON8], -1);
  282. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BUTTON8], 0);
  283. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BUTTON8], 1);
  284. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BUTTON8], 1);
  285. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BUTTON8], 1);
  286. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BUTTON8], 255);
  287. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BUTTON8], 179.000000, 20.000000);
  288. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BUTTON8], 1);
  289.  
  290. mTd[playerid][TD_EXIT] = CreatePlayerTextDraw(playerid,78.000000, 326.000000, "EXIT");
  291. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_EXIT], 255);
  292. PlayerTextDrawFont(playerid,mTd[playerid][TD_EXIT], 1);
  293. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_EXIT], 0.500000, 1.000000);
  294. PlayerTextDrawColor(playerid,mTd[playerid][TD_EXIT], -1);
  295. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_EXIT], 0);
  296. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_EXIT], 1);
  297. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_EXIT], 1);
  298. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_EXIT], 1);
  299. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_EXIT], 255);
  300. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_EXIT], 112.000000, 30.000000);
  301. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_EXIT], 1);
  302.  
  303. mTd[playerid][TD_NEXT] = CreatePlayerTextDraw(playerid,146.000000, 311.000000, "NEXT");
  304. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_NEXT], 255);
  305. PlayerTextDrawFont(playerid,mTd[playerid][TD_NEXT], 1);
  306. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_NEXT], 0.500000, 1.000000);
  307. PlayerTextDrawColor(playerid,mTd[playerid][TD_NEXT], -1);
  308. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_NEXT], 0);
  309. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_NEXT], 1);
  310. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_NEXT], 1);
  311. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_NEXT], 1);
  312. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_NEXT], 255);
  313. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_NEXT], 186.000000, 30.000000);
  314. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_NEXT], 1);
  315.  
  316. mTd[playerid][TD_BACK] = CreatePlayerTextDraw(playerid,13.000000, 311.000000, "BACK");
  317. PlayerTextDrawBackgroundColor(playerid,mTd[playerid][TD_BACK], 255);
  318. PlayerTextDrawFont(playerid,mTd[playerid][TD_BACK], 1);
  319. PlayerTextDrawLetterSize(playerid,mTd[playerid][TD_BACK], 0.500000, 1.000000);
  320. PlayerTextDrawColor(playerid,mTd[playerid][TD_BACK], -1);
  321. PlayerTextDrawSetOutline(playerid,mTd[playerid][TD_BACK], 0);
  322. PlayerTextDrawSetProportional(playerid,mTd[playerid][TD_BACK], 1);
  323. PlayerTextDrawSetShadow(playerid,mTd[playerid][TD_BACK], 1);
  324. PlayerTextDrawUseBox(playerid,mTd[playerid][TD_BACK], 1);
  325. PlayerTextDrawBoxColor(playerid,mTd[playerid][TD_BACK], 255);
  326. PlayerTextDrawTextSize(playerid,mTd[playerid][TD_BACK], 55.000000, 30.000000);
  327. PlayerTextDrawSetSelectable(playerid,mTd[playerid][TD_BACK], 1);
  328. if (funcidx("TMenu_OnPlayerConnect") != -1)
  329. {
  330. return CallLocalFunction("TMenu_OnPlayerConnect", "");
  331. }
  332. return 1;
  333. }
  334.  
  335. #if defined _ALS_OnPlayerConnect
  336. #undef OnPlayerConnect
  337. #else
  338. #define _ALS_OnPlayerConnect
  339. #endif
  340. #define OnPlayerConnect TMenu_OnPlayerConnect
  341. forward TMenu_OnPlayerConnect();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement