alt_dialogs.inc 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992
  1. //Alternative Dialogs by Nexius v5.5
  2. #if defined _alt_dialogs_included
  3. #endinput
  4. #endif
  5. #define _alt_dialogs_included
  6. #include <a_samp>
  7. #define AD_VERSION "5.5"
  8. #define AD_STYLE_LIST 2
  9. #define FAST_DOUBLE_CLICK
  10. #if defined FAST_DOUBLE_CLICK
  11. #define MAX_CLICK_INTERVAL 250
  12. #endif
  13. #if defined AD_SKIN_1
  14. #define AD_SELECTION_COLOR -10
  15. #define AD_TITLE_COLOR -75
  16. #define AD_CLOSE_BUTTON_COLOR -75
  17. #define AD_BUTTONS_COLOR -75
  18. #define AD_UP_DOWN_BUTTONS_COLOR -75
  19. #define AD_ITEMS_COLOR -75
  20. #define AD_TITLE_BOX_COLOR 200
  21. #define AD_PANEL_BOX_COLOR 135
  22. #define AD_CLOSE_BUTTON_BOX_COLOR -16777156
  23. #define AD_BUTTONS_BOX_COLOR 80
  24. #define AD_SCROLL_BOX_COLOR -16777170
  25. #define AD_UP_DOWN_BUTTONS_BOX_COLOR 70
  26. #define AD_ITEMS_BOX_COLOR 20
  27. #define AD_SELECTED_ITEM_BOX_COLOR -16777180
  28. #elseif defined AD_SKIN_2
  29. #define AD_SELECTION_COLOR -10
  30. #define AD_TITLE_COLOR -75
  31. #define AD_CLOSE_BUTTON_COLOR -75
  32. #define AD_BUTTONS_COLOR -75
  33. #define AD_UP_DOWN_BUTTONS_COLOR -75
  34. #define AD_ITEMS_COLOR -75
  35. #define AD_TITLE_BOX_COLOR 200
  36. #define AD_PANEL_BOX_COLOR 135
  37. #define AD_CLOSE_BUTTON_BOX_COLOR -6291346
  38. #define AD_BUTTONS_BOX_COLOR 100
  39. #define AD_SCROLL_BOX_COLOR -6291370
  40. #define AD_UP_DOWN_BUTTONS_BOX_COLOR 90
  41. #define AD_ITEMS_BOX_COLOR 40
  42. #define AD_SELECTED_ITEM_BOX_COLOR -6291380
  43. #elseif defined AD_SKIN_3
  44. #define AD_SELECTION_COLOR -10
  45. #define AD_TITLE_COLOR -75
  46. #define AD_CLOSE_BUTTON_COLOR -75
  47. #define AD_BUTTONS_COLOR -75
  48. #define AD_UP_DOWN_BUTTONS_COLOR -75
  49. #define AD_ITEMS_COLOR -75
  50. #define AD_TITLE_BOX_COLOR 190
  51. #define AD_PANEL_BOX_COLOR 135
  52. #define AD_CLOSE_BUTTON_BOX_COLOR 4652900
  53. #define AD_BUTTONS_BOX_COLOR 90
  54. #define AD_SCROLL_BOX_COLOR 4652875
  55. #define AD_UP_DOWN_BUTTONS_BOX_COLOR 80
  56. #define AD_ITEMS_BOX_COLOR 30
  57. #define AD_SELECTED_ITEM_BOX_COLOR 4652850
  58. #elseif defined AD_SKIN_4
  59. #define AD_SELECTION_COLOR 50
  60. #define AD_TITLE_COLOR 100
  61. #define AD_CLOSE_BUTTON_COLOR 100
  62. #define AD_BUTTONS_COLOR 100
  63. #define AD_UP_DOWN_BUTTONS_COLOR 100
  64. #define AD_ITEMS_COLOR 100
  65. #define AD_TITLE_BOX_COLOR -80
  66. #define AD_PANEL_BOX_COLOR -165
  67. #define AD_CLOSE_BUTTON_BOX_COLOR -6291346
  68. #define AD_BUTTONS_BOX_COLOR -110
  69. #define AD_UP_DOWN_BUTTONS_BOX_COLOR -90
  70. #define AD_ITEMS_BOX_COLOR -425
  71. #define AD_SCROLL_BOX_COLOR -6291370
  72. #define AD_SELECTED_ITEM_BOX_COLOR -6291380
  73. #elseif defined AD_SKIN_5
  74. #define AD_SELECTION_COLOR 50
  75. #define AD_TITLE_COLOR 100
  76. #define AD_CLOSE_BUTTON_COLOR 100
  77. #define AD_BUTTONS_COLOR 100
  78. #define AD_UP_DOWN_BUTTONS_COLOR 100
  79. #define AD_ITEMS_COLOR 100
  80. #define AD_TITLE_BOX_COLOR -90
  81. #define AD_PANEL_BOX_COLOR -165
  82. #define AD_CLOSE_BUTTON_BOX_COLOR 4652900
  83. #define AD_BUTTONS_BOX_COLOR -120
  84. #define AD_UP_DOWN_BUTTONS_BOX_COLOR -100
  85. #define AD_ITEMS_BOX_COLOR -435
  86. #define AD_SCROLL_BOX_COLOR 4652875
  87. #define AD_SELECTED_ITEM_BOX_COLOR 4652850
  88. #else
  89. #define AD_SELECTION_COLOR -10
  90. #define AD_TITLE_COLOR -75
  91. #define AD_CLOSE_BUTTON_COLOR -75
  92. #define AD_BUTTONS_COLOR -75
  93. #define AD_UP_DOWN_BUTTONS_COLOR -75
  94. #define AD_ITEMS_COLOR -75
  95. #define AD_TITLE_BOX_COLOR 110
  96. #define AD_PANEL_BOX_COLOR 70
  97. #define AD_CLOSE_BUTTON_BOX_COLOR -16777156
  98. #define AD_BUTTONS_BOX_COLOR 50
  99. #define AD_SCROLL_BOX_COLOR 35
  100. #define AD_UP_DOWN_BUTTONS_BOX_COLOR 25
  101. #define AD_ITEMS_BOX_COLOR 15
  102. #define AD_SELECTED_ITEM_BOX_COLOR 35
  103. #endif
  104. #define AD_MAX_DIALOG_PAGES 3 //Change if you want
  105. #define AD_MAX_CAPTION_LENGTH 38
  106. #define AD_MAX_ITEM_LENGTH 40
  107. #define AD_MAX_BUTTONS_LENGTH 6
  108. #define AD_INVALID_ID -1
  109. static
  110. adItemID[MAX_PLAYERS],
  111. adPageID[MAX_PLAYERS],
  112. adDialogID[MAX_PLAYERS],
  113. adMaxItems[MAX_PLAYERS],
  114. bool:adIgnoreEsc[MAX_PLAYERS],
  115. #if defined FAST_DOUBLE_CLICK
  116. adLastClicked[MAX_PLAYERS],
  117. #endif
  118. Text:adArrayTDs[11] = {Text:65535, ...},
  119. PlayerText:adArrayPTDs[MAX_PLAYERS][21],
  120. adItems[MAX_PLAYERS][AD_MAX_DIALOG_PAGES * 8][AD_MAX_ITEM_LENGTH char];
  121. forward OnAltDialogResponse(playerid, dialogid, response, listitem);
  122. //To unlock the Easter egg, uncomment the next line...
  123. //#define EASTER_EGG_WHITE_STYLE
  124. #if defined EASTER_EGG_WHITE_STYLE
  125. #undef AD_SELECTION_COLOR
  126. #define AD_SELECTION_COLOR 50
  127. #undef AD_TITLE_COLOR
  128. #define AD_TITLE_COLOR 100
  129. #undef AD_CLOSE_BUTTON_COLOR
  130. #define AD_CLOSE_BUTTON_COLOR 100
  131. #undef AD_BUTTONS_COLOR
  132. #define AD_BUTTONS_COLOR 100
  133. #undef AD_UP_DOWN_BUTTONS_COLOR
  134. #define AD_UP_DOWN_BUTTONS_COLOR 100
  135. #undef AD_ITEMS_COLOR
  136. #define AD_ITEMS_COLOR 100
  137. #undef AD_TITLE_BOX_COLOR
  138. #define AD_TITLE_BOX_COLOR -170
  139. #undef AD_PANEL_BOX_COLOR
  140. #define AD_PANEL_BOX_COLOR -165
  141. #undef AD_CLOSE_BUTTON_BOX_COLOR
  142. #define AD_CLOSE_BUTTON_BOX_COLOR -16777156
  143. #undef AD_BUTTONS_BOX_COLOR
  144. #define AD_BUTTONS_BOX_COLOR -160
  145. #undef AD_UP_DOWN_BUTTONS_BOX_COLOR
  146. #define AD_UP_DOWN_BUTTONS_BOX_COLOR -155
  147. #undef AD_ITEMS_BOX_COLOR
  148. #define AD_ITEMS_BOX_COLOR -450
  149. #undef AD_SCROLL_BOX_COLOR
  150. #define AD_SCROLL_BOX_COLOR -125
  151. #undef AD_SELECTED_ITEM_BOX_COLOR
  152. #define AD_SELECTED_ITEM_BOX_COLOR -80
  153. #endif
  154. #if defined _inc_y_hooks || defined _INC_y_hooks
  155. hook OnGameModeInit()
  156. #else
  157. public OnGameModeInit()
  158. #endif
  159. {
  160. adArrayTDs[0] = TextDrawCreate(470.0, 140.0, "_"); //Title box
  161. TextDrawTextSize(adArrayTDs[0], 175.0, 0.0);
  162. TextDrawLetterSize(adArrayTDs[0], 0.0, 1.3);
  163. TextDrawUseBox(adArrayTDs[0], 1);
  164. TextDrawBoxColor(adArrayTDs[0], AD_TITLE_BOX_COLOR);
  165. #undef AD_TITLE_BOX_COLOR
  166. adArrayTDs[1] = TextDrawCreate(470.0, 155.0, "_"); //Panel box
  167. TextDrawTextSize(adArrayTDs[1], 175.0, 0.0);
  168. TextDrawLetterSize(adArrayTDs[1], 0.0, 17.1);
  169. TextDrawUseBox(adArrayTDs[1], 1);
  170. TextDrawBoxColor(adArrayTDs[1], AD_PANEL_BOX_COLOR);
  171. #undef AD_PANEL_BOX_COLOR
  172. adArrayTDs[2] = TextDrawCreate(470.0, 140.0, "_"); //Close button box
  173. TextDrawTextSize(adArrayTDs[2], 446.0, 12.0);
  174. TextDrawLetterSize(adArrayTDs[2], 0.0, 1.3);
  175. TextDrawUseBox(adArrayTDs[2], 1);
  176. TextDrawBoxColor(adArrayTDs[2], AD_CLOSE_BUTTON_BOX_COLOR);
  177. #undef AD_CLOSE_BUTTON_BOX_COLOR
  178. adArrayTDs[3] = TextDrawCreate(314.0, 290.5, "_"); //Button 1 box
  179. TextDrawTextSize(adArrayTDs[3], 264.0, 12.0);
  180. TextDrawLetterSize(adArrayTDs[3], 0.0, 1.3);
  181. TextDrawUseBox(adArrayTDs[3], 1);
  182. TextDrawBoxColor(adArrayTDs[3], AD_BUTTONS_BOX_COLOR);
  183. adArrayTDs[4] = TextDrawCreate(376.0, 290.5, "_"); //Button 2 box
  184. TextDrawTextSize(adArrayTDs[4], 325.0, 12.0);
  185. TextDrawLetterSize(adArrayTDs[4], 0.0, 1.3);
  186. TextDrawUseBox(adArrayTDs[4], 1);
  187. TextDrawBoxColor(adArrayTDs[4], AD_BUTTONS_BOX_COLOR);
  188. adArrayTDs[5] = TextDrawCreate(346.0, 290.5, "_"); //Button 1 box only
  189. TextDrawTextSize(adArrayTDs[5], 296.0, 12.0);
  190. TextDrawLetterSize(adArrayTDs[5], 0.0, 1.3);
  191. TextDrawUseBox(adArrayTDs[5], 1);
  192. TextDrawBoxColor(adArrayTDs[5], AD_BUTTONS_BOX_COLOR);
  193. #undef AD_BUTTONS_BOX_COLOR
  194. adArrayTDs[6] = TextDrawCreate(470.0, 155.0, "_"); //Up button box
  195. TextDrawTextSize(adArrayTDs[6], 460.0, 5.0);
  196. TextDrawLetterSize(adArrayTDs[6], 0.0, 1.3);
  197. TextDrawUseBox(adArrayTDs[6], 1);
  198. TextDrawBoxColor(adArrayTDs[6], AD_UP_DOWN_BUTTONS_BOX_COLOR);
  199. adArrayTDs[7] = TextDrawCreate(470.0, 262.0, "_"); //Down button box
  200. TextDrawTextSize(adArrayTDs[7], 460.0, 5.0);
  201. TextDrawLetterSize(adArrayTDs[7], 0.0, 1.3);
  202. TextDrawUseBox(adArrayTDs[7], 1);
  203. TextDrawBoxColor(adArrayTDs[7], AD_UP_DOWN_BUTTONS_BOX_COLOR);
  204. #undef AD_UP_DOWN_BUTTONS_BOX_COLOR
  205. adArrayTDs[8] = TextDrawCreate(454.0, 141.0, "X"); //Close button
  206. TextDrawFont(adArrayTDs[8], 2);
  207. TextDrawTextSize(adArrayTDs[8], 465.0, 12.0);
  208. TextDrawLetterSize(adArrayTDs[8], 0.27, 0.9);
  209. TextDrawColor(adArrayTDs[8], AD_CLOSE_BUTTON_COLOR);
  210. #undef AD_CLOSE_BUTTON_COLOR
  211. TextDrawSetShadow(adArrayTDs[8], 0);
  212. TextDrawSetSelectable(adArrayTDs[8], 1);
  213. adArrayTDs[9] = TextDrawCreate(462.3, 165.0, "v"); //Up button
  214. TextDrawFont(adArrayTDs[9], 2);
  215. TextDrawTextSize(adArrayTDs[9], 471.0, 4.5);
  216. TextDrawLetterSize(adArrayTDs[9], 0.18, -0.8);
  217. TextDrawColor(adArrayTDs[9], AD_UP_DOWN_BUTTONS_COLOR);
  218. TextDrawSetShadow(adArrayTDs[9], 0);
  219. TextDrawSetSelectable(adArrayTDs[9], 1);
  220. adArrayTDs[10] = TextDrawCreate(462.3, 264.0, "v"); //Down button
  221. TextDrawFont(adArrayTDs[10], 2);
  222. TextDrawTextSize(adArrayTDs[10], 471.0, 4.5);
  223. TextDrawLetterSize(adArrayTDs[10], 0.18, 0.8);
  224. TextDrawColor(adArrayTDs[10], AD_UP_DOWN_BUTTONS_COLOR);
  225. #undef AD_UP_DOWN_BUTTONS_COLOR
  226. TextDrawSetShadow(adArrayTDs[10], 0);
  227. TextDrawSetSelectable(adArrayTDs[10], 1);
  228. printf("Alternative Dialogs v%s by Nexius loaded!\n", AD_VERSION);
  229. #if !defined _inc_y_hooks && !defined _INC_y_hooks\
  230. && defined ad_OnGameModeInit
  231. return ad_OnGameModeInit();
  232. #else
  233. return 1;
  234. #endif
  235. }
  236. #if !defined _inc_y_hooks && !defined _INC_y_hooks
  237. #if defined _ALS_OnGameModeInit
  238. #undef OnGameModeInit
  239. #else
  240. #define _ALS_OnGameModeInit
  241. #endif
  242. #define OnGameModeInit ad_OnGameModeInit
  243. #if defined ad_OnGameModeInit
  244. forward ad_OnGameModeInit();
  245. #endif
  246. #endif
  247. #if defined _inc_y_hooks || defined _INC_y_hooks
  248. hook OnGameModeExit()
  249. #else
  250. public OnGameModeExit()
  251. #endif
  252. {
  253. for(new i = sizeof(adArrayTDs) - 1; i > -1; --i) TextDrawDestroy(adArrayTDs[i]);
  254. #if !defined _inc_y_hooks && !defined _INC_y_hooks\
  255. && defined ad_OnGameModeExit
  256. return ad_OnGameModeExit();
  257. #else
  258. return 1;
  259. #endif
  260. }
  261. #if !defined _inc_y_hooks && !defined _INC_y_hooks
  262. #if defined _ALS_OnGameModeExit
  263. #undef OnGameModeExit
  264. #else
  265. #define _ALS_OnGameModeExit
  266. #endif
  267. #define OnGameModeExit ad_OnGameModeExit
  268. #if defined ad_OnGameModeExit
  269. forward ad_OnGameModeExit();
  270. #endif
  271. #endif
  272. #if defined _inc_y_hooks || defined _INC_y_hooks
  273. hook OnPlayerConnect(playerid)
  274. #else
  275. public OnPlayerConnect(playerid)
  276. #endif
  277. {
  278. adIgnoreEsc[playerid] = false;
  279. adDialogID[playerid] = AD_INVALID_ID;
  280. for(new i = sizeof(adArrayPTDs[]) - 1; i > -1; --i) adArrayPTDs[playerid][i] = PlayerText:65535;
  281. #if !defined _inc_y_hooks && !defined _INC_y_hooks\
  282. && defined ad_OnPlayerConnect
  283. return ad_OnPlayerConnect(playerid);
  284. #else
  285. return 1;
  286. #endif
  287. }
  288. #if !defined _inc_y_hooks && !defined _INC_y_hooks
  289. #if defined _ALS_OnPlayerConnect
  290. #undef OnPlayerConnect
  291. #else
  292. #define _ALS_OnPlayerConnect
  293. #endif
  294. #define OnPlayerConnect ad_OnPlayerConnect
  295. #if defined ad_OnPlayerConnect
  296. forward ad_OnPlayerConnect(playerid);
  297. #endif
  298. #endif
  299. #if defined _inc_y_hooks || defined _INC_y_hooks
  300. hook OnPlayerClickTextDraw(playerid, Text:clickedid)
  301. #else
  302. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  303. #endif
  304. {
  305. if(adIgnoreEsc[playerid] && clickedid == Text:65535) adIgnoreEsc[playerid] = false;
  306. else if(adDialogID[playerid] != AD_INVALID_ID)
  307. {
  308. if(clickedid == Text:65535 || clickedid == adArrayTDs[8])
  309. {
  310. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  311. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  312. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 2, tmp_itemid);
  313. }
  314. else if(clickedid == adArrayTDs[9])
  315. {
  316. if(adPageID[playerid] > 0)
  317. {
  318. new i, Float:ssize, Float:spos;
  319. adPageID[playerid]--;
  320. adItemID[playerid] = adPageID[playerid] * 8;
  321. for(i = 11; i > 4; --i)
  322. {
  323. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][i], AD_ITEMS_BOX_COLOR);
  324. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][i]);
  325. }
  326. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][4], AD_SELECTED_ITEM_BOX_COLOR);
  327. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][4]);
  328. i = adPageID[playerid] * 8;
  329. for(new j = i + 8, c; i < j; i++)
  330. {
  331. PlayerTextDrawSetString(playerid, adArrayPTDs[playerid][12 + c], adItems[playerid][i]);
  332. if(!adItems[playerid][i]{0}) PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][12 + c], 0);
  333. else PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][12 + c], 1);
  334. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][12 + c]);
  335. c++;
  336. }
  337. PlayerTextDrawDestroy(playerid, adArrayPTDs[playerid][20]);
  338. ssize = 9.8 / (floatround(adMaxItems[playerid] / 8, floatround_tozero) + 1);
  339. spos = (ssize * 9) * adPageID[playerid];
  340. adArrayPTDs[playerid][20] = CreatePlayerTextDraw(playerid, 470.0, 170.3 + spos, "_"); //Scroll box
  341. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][20], 460.0, 5.0);
  342. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][20], 0.0, ssize);
  343. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][20], 1);
  344. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][20], AD_SCROLL_BOX_COLOR);
  345. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][20]);
  346. }
  347. }
  348. else if(clickedid == adArrayTDs[10])
  349. {
  350. if(adPageID[playerid] < floatround(adMaxItems[playerid] / 8, floatround_tozero))
  351. {
  352. new i, Float:ssize, Float:spos;
  353. adPageID[playerid]++;
  354. adItemID[playerid] = adPageID[playerid] * 8;
  355. for(i = 11; i > 4; --i)
  356. {
  357. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][i], AD_ITEMS_BOX_COLOR);
  358. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][i]);
  359. }
  360. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][4], AD_SELECTED_ITEM_BOX_COLOR);
  361. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][4]);
  362. i = adPageID[playerid] * 8;
  363. for(new j = i + 8, c; i < j; i++)
  364. {
  365. PlayerTextDrawSetString(playerid, adArrayPTDs[playerid][12 + c], adItems[playerid][i]);
  366. if(!adItems[playerid][i]{0}) PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][12 + c], 0);
  367. else PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][12 + c], 1);
  368. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][12 + c]);
  369. c++;
  370. }
  371. PlayerTextDrawDestroy(playerid, adArrayPTDs[playerid][20]);
  372. ssize = 9.8 / (floatround(adMaxItems[playerid] / 8, floatround_tozero) + 1);
  373. spos = (ssize * 9) * adPageID[playerid];
  374. adArrayPTDs[playerid][20] = CreatePlayerTextDraw(playerid, 470.0, 170.3 + spos, "_"); //Scroll box
  375. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][20], 460.0, 5.0);
  376. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][20], 0.0, ssize);
  377. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][20], 1);
  378. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][20], AD_SCROLL_BOX_COLOR);
  379. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][20]);
  380. }
  381. }
  382. }
  383. #if !defined _inc_y_hooks && !defined _INC_y_hooks\
  384. && defined ad_OnPlayerClickTextDraw
  385. return ad_OnPlayerClickTextDraw(playerid, clickedid);
  386. #else
  387. return 0;
  388. #endif
  389. }
  390. #if !defined _inc_y_hooks && !defined _INC_y_hooks
  391. #if defined _ALS_OnPlayerClickTextDraw
  392. #undef OnPlayerClickTextDraw
  393. #else
  394. #define _ALS_OnPlayerClickTextDraw
  395. #endif
  396. #define OnPlayerClickTextDraw ad_OnPlayerClickTextDraw
  397. #if defined ad_OnPlayerClickTextDraw
  398. forward ad_OnPlayerClickTextDraw(playerid, Text:clickedid);
  399. #endif
  400. #endif
  401. #if defined _inc_y_hooks || defined _INC_y_hooks
  402. hook OnPlayerClickPlayerTD(playerid, PlayerText:playertextid)
  403. #else
  404. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  405. #endif
  406. {
  407. if(adDialogID[playerid] != AD_INVALID_ID)
  408. {
  409. if(playertextid == adArrayPTDs[playerid][1] || playertextid == adArrayPTDs[playerid][2])
  410. {
  411. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  412. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  413. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  414. }
  415. else if(playertextid == adArrayPTDs[playerid][3])
  416. {
  417. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  418. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  419. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 0, tmp_itemid);
  420. }
  421. else
  422. {
  423. #if defined FAST_DOUBLE_CLICK
  424. new gtc = GetTickCount();
  425. #endif
  426. if(playertextid == adArrayPTDs[playerid][12])
  427. {
  428. if(adItemID[playerid] == 0 + (adPageID[playerid] * 8))
  429. {
  430. #if defined FAST_DOUBLE_CLICK
  431. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  432. {
  433. adLastClicked[playerid] = 0;
  434. #endif
  435. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  436. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  437. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  438. #if defined FAST_DOUBLE_CLICK
  439. }
  440. else adLastClicked[playerid] = gtc;
  441. #endif
  442. }
  443. else
  444. {
  445. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][4], AD_SELECTED_ITEM_BOX_COLOR);
  446. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][4]);
  447. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  448. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  449. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  450. adItemID[playerid] = 0 + (adPageID[playerid] * 8);
  451. #if defined FAST_DOUBLE_CLICK
  452. adLastClicked[playerid] = gtc;
  453. #endif
  454. }
  455. }
  456. else if(playertextid == adArrayPTDs[playerid][13])
  457. {
  458. if(adItemID[playerid] == 1 + (adPageID[playerid] * 8))
  459. {
  460. #if defined FAST_DOUBLE_CLICK
  461. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  462. {
  463. adLastClicked[playerid] = 0;
  464. #endif
  465. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  466. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  467. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  468. #if defined FAST_DOUBLE_CLICK
  469. }
  470. else adLastClicked[playerid] = gtc;
  471. #endif
  472. }
  473. else
  474. {
  475. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][5], AD_SELECTED_ITEM_BOX_COLOR);
  476. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][5]);
  477. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  478. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  479. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  480. adItemID[playerid] = 1 + (adPageID[playerid] * 8);
  481. #if defined FAST_DOUBLE_CLICK
  482. adLastClicked[playerid] = gtc;
  483. #endif
  484. }
  485. }
  486. else if(playertextid == adArrayPTDs[playerid][14])
  487. {
  488. if(adItemID[playerid] == 2 + (adPageID[playerid] * 8))
  489. {
  490. #if defined FAST_DOUBLE_CLICK
  491. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  492. {
  493. adLastClicked[playerid] = 0;
  494. #endif
  495. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  496. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  497. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  498. #if defined FAST_DOUBLE_CLICK
  499. }
  500. else adLastClicked[playerid] = gtc;
  501. #endif
  502. }
  503. else
  504. {
  505. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][6], AD_SELECTED_ITEM_BOX_COLOR);
  506. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][6]);
  507. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  508. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  509. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  510. adItemID[playerid] = 2 + (adPageID[playerid] * 8);
  511. #if defined FAST_DOUBLE_CLICK
  512. adLastClicked[playerid] = gtc;
  513. #endif
  514. }
  515. }
  516. else if(playertextid == adArrayPTDs[playerid][15])
  517. {
  518. if(adItemID[playerid] == 3 + (adPageID[playerid] * 8))
  519. {
  520. #if defined FAST_DOUBLE_CLICK
  521. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  522. {
  523. adLastClicked[playerid] = 0;
  524. #endif
  525. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  526. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  527. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  528. #if defined FAST_DOUBLE_CLICK
  529. }
  530. else adLastClicked[playerid] = gtc;
  531. #endif
  532. }
  533. else
  534. {
  535. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][7], AD_SELECTED_ITEM_BOX_COLOR);
  536. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][7]);
  537. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  538. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  539. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  540. adItemID[playerid] = 3 + (adPageID[playerid] * 8);
  541. #if defined FAST_DOUBLE_CLICK
  542. adLastClicked[playerid] = gtc;
  543. #endif
  544. }
  545. }
  546. else if(playertextid == adArrayPTDs[playerid][16])
  547. {
  548. if(adItemID[playerid] == 4 + (adPageID[playerid] * 8))
  549. {
  550. #if defined FAST_DOUBLE_CLICK
  551. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  552. {
  553. adLastClicked[playerid] = 0;
  554. #endif
  555. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  556. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  557. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  558. #if defined FAST_DOUBLE_CLICK
  559. }
  560. else adLastClicked[playerid] = gtc;
  561. #endif
  562. }
  563. else
  564. {
  565. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][8], AD_SELECTED_ITEM_BOX_COLOR);
  566. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][8]);
  567. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  568. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  569. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  570. adItemID[playerid] = 4 + (adPageID[playerid] * 8);
  571. #if defined FAST_DOUBLE_CLICK
  572. adLastClicked[playerid] = gtc;
  573. #endif
  574. }
  575. }
  576. else if(playertextid == adArrayPTDs[playerid][17])
  577. {
  578. if(adItemID[playerid] == 5 + (adPageID[playerid] * 8))
  579. {
  580. #if defined FAST_DOUBLE_CLICK
  581. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  582. {
  583. adLastClicked[playerid] = 0;
  584. #endif
  585. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  586. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  587. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  588. #if defined FAST_DOUBLE_CLICK
  589. }
  590. else adLastClicked[playerid] = gtc;
  591. #endif
  592. }
  593. else
  594. {
  595. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][9], AD_SELECTED_ITEM_BOX_COLOR);
  596. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][9]);
  597. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  598. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  599. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  600. adItemID[playerid] = 5 + (adPageID[playerid] * 8);
  601. #if defined FAST_DOUBLE_CLICK
  602. adLastClicked[playerid] = gtc;
  603. #endif
  604. }
  605. }
  606. else if(playertextid == adArrayPTDs[playerid][18])
  607. {
  608. if(adItemID[playerid] == 6 + (adPageID[playerid] * 8))
  609. {
  610. #if defined FAST_DOUBLE_CLICK
  611. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  612. {
  613. adLastClicked[playerid] = 0;
  614. #endif
  615. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  616. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  617. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  618. #if defined FAST_DOUBLE_CLICK
  619. }
  620. else adLastClicked[playerid] = gtc;
  621. #endif
  622. }
  623. else
  624. {
  625. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][10], AD_SELECTED_ITEM_BOX_COLOR);
  626. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][10]);
  627. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  628. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  629. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  630. adItemID[playerid] = 6 + (adPageID[playerid] * 8);
  631. #if defined FAST_DOUBLE_CLICK
  632. adLastClicked[playerid] = gtc;
  633. #endif
  634. }
  635. }
  636. else if(playertextid == adArrayPTDs[playerid][19])
  637. {
  638. if(adItemID[playerid] == 7 + (adPageID[playerid] * 8))
  639. {
  640. #if defined FAST_DOUBLE_CLICK
  641. if(gtc - adLastClicked[playerid] <= MAX_CLICK_INTERVAL)
  642. {
  643. adLastClicked[playerid] = 0;
  644. #endif
  645. new tmp_dialogid = adDialogID[playerid], tmp_itemid = adItemID[playerid];
  646. ShowPlayerAltDialog(playerid, AD_INVALID_ID, -1, "", "", "");
  647. CallRemoteFunction("OnAltDialogResponse", "iiii", playerid, tmp_dialogid, 1, tmp_itemid);
  648. #if defined FAST_DOUBLE_CLICK
  649. }
  650. else adLastClicked[playerid] = gtc;
  651. #endif
  652. }
  653. else
  654. {
  655. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][11], AD_SELECTED_ITEM_BOX_COLOR);
  656. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][11]);
  657. if(adItemID[playerid] > 7) adItemID[playerid] %= 8;
  658. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4], AD_ITEMS_BOX_COLOR);
  659. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][adItemID[playerid] + 4]);
  660. adItemID[playerid] = 7 + (adPageID[playerid] * 8);
  661. #if defined FAST_DOUBLE_CLICK
  662. adLastClicked[playerid] = gtc;
  663. #endif
  664. }
  665. }
  666. }
  667. }
  668. #if !defined _inc_y_hooks && !defined _INC_y_hooks\
  669. && defined ad_OnPlayerClickPlayerTextDraw
  670. return ad_OnPlayerClickPlayerTextDraw(playerid, playertextid);
  671. #else
  672. return 0;
  673. #endif
  674. }
  675. #if !defined _inc_y_hooks && !defined _INC_y_hooks
  676. #if defined _ALS_OnPlayerClickPlayerTextDra\
  677. || defined _ALS_OnPlayerClickPlayerTD
  678. #undef OnPlayerClickPlayerTextDraw
  679. #else
  680. #define _ALS_OnPlayerClickPlayerTD
  681. #endif
  682. #define OnPlayerClickPlayerTextDraw ad_OnPlayerClickPlayerTextDraw
  683. #if defined ad_OnPlayerClickPlayerTextDraw
  684. forward ad_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
  685. #endif
  686. #endif
  687. #if defined FAST_DOUBLE_CLICK
  688. #undef FAST_DOUBLE_CLICK
  689. #undef MAX_CLICK_INTERVAL
  690. #endif
  691. ShowPlayerAltDialog(playerid, dialogid, style, caption[], info[], button1[], button2[] = "")
  692. {
  693. if(IsPlayerConnected(playerid))
  694. {
  695. new i;
  696. adDialogID[playerid] = AD_INVALID_ID;
  697. for(i = (AD_MAX_DIALOG_PAGES * 8) - 1; i > -1; --i) adItems[playerid][i]{0} = EOS;
  698. #undef AD_MAX_DIALOG_PAGES
  699. for(i = sizeof(adArrayTDs) - 1; i > -1; --i) TextDrawHideForPlayer(playerid, adArrayTDs[i]);
  700. for(i = sizeof(adArrayPTDs[]) - 1; i > -1; --i)
  701. {
  702. PlayerTextDrawDestroy(playerid, adArrayPTDs[playerid][i]);
  703. adArrayPTDs[playerid][i] = PlayerText:65535;
  704. }
  705. if(dialogid <= AD_INVALID_ID)
  706. {
  707. adIgnoreEsc[playerid] = true;
  708. return CancelSelectTextDraw(playerid);
  709. }
  710. if(style == AD_STYLE_LIST)
  711. {
  712. adPageID[playerid] = 0;
  713. adItemID[playerid] = 0;
  714. adDialogID[playerid] = dialogid;
  715. adArrayPTDs[playerid][4] = CreatePlayerTextDraw(playerid, 464.0, 155.0, "_"); //Item 1 box
  716. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][4], 181.0, 12.0);
  717. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][4], 0.0, 1.3);
  718. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][4], 1);
  719. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][4], AD_SELECTED_ITEM_BOX_COLOR);
  720. #undef AD_SELECTED_ITEM_BOX_COLOR
  721. adArrayPTDs[playerid][5] = CreatePlayerTextDraw(playerid, 464.0, 170.5, "_"); //Item 2 box
  722. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][5], 181.0, 12.0);
  723. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][5], 0.0, 1.3);
  724. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][5], 1);
  725. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][5], AD_ITEMS_BOX_COLOR);
  726. adArrayPTDs[playerid][6] = CreatePlayerTextDraw(playerid, 464.0, 185.8, "_"); //Item 3 box
  727. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][6], 181.0, 12.0);
  728. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][6], 0.0, 1.3);
  729. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][6], 1);
  730. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][6], AD_ITEMS_BOX_COLOR);
  731. adArrayPTDs[playerid][7] = CreatePlayerTextDraw(playerid, 464.0, 201.0, "_"); //Item 4 box
  732. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][7], 181.0, 12.0);
  733. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][7], 0.0, 1.3);
  734. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][7], 1);
  735. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][7], AD_ITEMS_BOX_COLOR);
  736. adArrayPTDs[playerid][8] = CreatePlayerTextDraw(playerid, 464.0, 216.2, "_"); //Item 5 box
  737. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][8], 181.0, 12.0);
  738. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][8], 0.0, 1.3);
  739. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][8], 1);
  740. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][8], AD_ITEMS_BOX_COLOR);
  741. adArrayPTDs[playerid][9] = CreatePlayerTextDraw(playerid, 464.0, 231.2, "_"); //Item 6 box
  742. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][9], 181.0, 12.0);
  743. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][9], 0.0, 1.3);
  744. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][9], 1);
  745. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][9], AD_ITEMS_BOX_COLOR);
  746. adArrayPTDs[playerid][10] = CreatePlayerTextDraw(playerid, 464.0, 246.5, "_"); //Item 7 box
  747. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][10], 181.0, 12.0);
  748. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][10], 0.0, 1.3);
  749. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][10], 1);
  750. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][10], AD_ITEMS_BOX_COLOR);
  751. adArrayPTDs[playerid][11] = CreatePlayerTextDraw(playerid, 464.0, 261.8, "_"); //Item 8 box
  752. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][11], 181.0, 12.0);
  753. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][11], 0.0, 1.3);
  754. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][11], 1);
  755. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][11], AD_ITEMS_BOX_COLOR);
  756. #undef AD_ITEMS_BOX_COLOR
  757. adArrayPTDs[playerid][12] = CreatePlayerTextDraw(playerid, 191.0, 156.3, ""); //Item 1
  758. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][12], 2);
  759. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][12], 460.0, 13.6);
  760. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][12], 0.27, 0.9);
  761. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][12], AD_ITEMS_COLOR);
  762. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][12], 0);
  763. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][12], 1);
  764. adArrayPTDs[playerid][13] = CreatePlayerTextDraw(playerid, 191.0, 171.8, ""); //Item 2
  765. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][13], 2);
  766. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][13], 460.0, 13.6);
  767. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][13], 0.27, 0.9);
  768. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][13], AD_ITEMS_COLOR);
  769. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][13], 0);
  770. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][13], 1);
  771. adArrayPTDs[playerid][14] = CreatePlayerTextDraw(playerid, 191.0, 187.3, ""); //Item 3
  772. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][14], 2);
  773. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][14], 460.0, 13.6);
  774. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][14], 0.27, 0.9);
  775. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][14], AD_ITEMS_COLOR);
  776. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][14], 0);
  777. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][14], 1);
  778. adArrayPTDs[playerid][15] = CreatePlayerTextDraw(playerid, 191.0, 202.6, ""); //Item 4
  779. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][15], 2);
  780. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][15], 460.0, 13.6);
  781. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][15], 0.27, 0.9);
  782. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][15], AD_ITEMS_COLOR);
  783. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][15], 0);
  784. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][15], 1);
  785. adArrayPTDs[playerid][16] = CreatePlayerTextDraw(playerid, 191.0, 217.6, ""); //Item 5
  786. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][16], 2);
  787. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][16], 460.0, 13.6);
  788. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][16], 0.27, 0.9);
  789. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][16], AD_ITEMS_COLOR);
  790. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][16], 0);
  791. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][16], 1);
  792. adArrayPTDs[playerid][17] = CreatePlayerTextDraw(playerid, 191.0, 232.7, ""); //Item 6
  793. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][17], 2);
  794. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][17], 460.0, 13.6);
  795. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][17], 0.27, 0.9);
  796. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][17], AD_ITEMS_COLOR);
  797. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][17], 0);
  798. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][17], 1);
  799. adArrayPTDs[playerid][18] = CreatePlayerTextDraw(playerid, 191.0, 247.9, ""); //Item 7
  800. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][18], 2);
  801. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][18], 460.0, 13.6);
  802. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][18], 0.27, 0.9);
  803. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][18], AD_ITEMS_COLOR);
  804. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][18], 0);
  805. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][18], 1);
  806. adArrayPTDs[playerid][19] = CreatePlayerTextDraw(playerid, 191.0, 263.0, ""); //Item 8
  807. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][19], 2);
  808. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][19], 460.0, 13.6);
  809. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][19], 0.27, 0.9);
  810. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][19], AD_ITEMS_COLOR);
  811. #undef AD_ITEMS_COLOR
  812. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][19], 0);
  813. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][19], 1);
  814. if(strlen(caption) >= AD_MAX_CAPTION_LENGTH)
  815. {
  816. caption[AD_MAX_CAPTION_LENGTH - 3] = '.';
  817. caption[AD_MAX_CAPTION_LENGTH - 2] = '.';
  818. caption[AD_MAX_CAPTION_LENGTH - 1] = '.';
  819. caption[AD_MAX_CAPTION_LENGTH] = EOS;
  820. #undef AD_MAX_CAPTION_LENGTH
  821. }
  822. adArrayPTDs[playerid][0] = CreatePlayerTextDraw(playerid, 188.0, 141.0, caption); //Title
  823. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][0], 2);
  824. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][0], 0.27, 0.9);
  825. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][0], AD_TITLE_COLOR);
  826. #undef AD_TITLE_COLOR
  827. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][0], 0);
  828. if(strlen(button1) >= AD_MAX_BUTTONS_LENGTH) button1[AD_MAX_BUTTONS_LENGTH] = EOS;
  829. new lb2 = strlen(button2);
  830. if(lb2 > 0)
  831. {
  832. adArrayPTDs[playerid][1] = CreatePlayerTextDraw(playerid, 289.0, 292.0, button1); //Button 1
  833. PlayerTextDrawAlignment(playerid, adArrayPTDs[playerid][1], 2);
  834. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][1], 2);
  835. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][1], 12.0, 38.0);
  836. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][1], 0.27, 0.9);
  837. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][1], AD_BUTTONS_COLOR);
  838. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][1], 0);
  839. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][1], 1);
  840. if(lb2 >= AD_MAX_BUTTONS_LENGTH) button2[AD_MAX_BUTTONS_LENGTH] = EOS;
  841. #undef AD_MAX_BUTTONS_LENGTH
  842. adArrayPTDs[playerid][3] = CreatePlayerTextDraw(playerid, 350.5, 292.0, button2); //Button 2
  843. PlayerTextDrawAlignment(playerid, adArrayPTDs[playerid][3], 2);
  844. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][3], 2);
  845. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][3], 12.0, 38.0);
  846. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][3], 0.27, 0.9);
  847. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][3], AD_BUTTONS_COLOR);
  848. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][3], 0);
  849. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][3], 1);
  850. }
  851. else
  852. {
  853. adArrayPTDs[playerid][2] = CreatePlayerTextDraw(playerid, 321.0, 292.0, button1); //Button 1 only
  854. PlayerTextDrawAlignment(playerid, adArrayPTDs[playerid][2], 2);
  855. PlayerTextDrawFont(playerid, adArrayPTDs[playerid][2], 2);
  856. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][2], 12.0, 38.0);
  857. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][2], 0.27, 0.9);
  858. PlayerTextDrawColor(playerid, adArrayPTDs[playerid][2], AD_BUTTONS_COLOR);
  859. #undef AD_BUTTONS_COLOR
  860. PlayerTextDrawSetShadow(playerid, adArrayPTDs[playerid][2], 0);
  861. PlayerTextDrawSetSelectable(playerid, adArrayPTDs[playerid][2], 1);
  862. }
  863. new strtmp[AD_MAX_ITEM_LENGTH], c = -1; i = 0;
  864. #undef AD_MAX_ITEM_LENGTH
  865. for(new j, s = strlen(info); i <= s; i++)
  866. {
  867. if(info[i] == '\n' || i == s)
  868. {
  869. if(c + 1 >= sizeof adItems[]) break;
  870. c++;
  871. strmid(strtmp, info, j, i);
  872. strpack(adItems[playerid][c], strtmp);
  873. if(i - j >= sizeof adItems[][] * (cellbits / charbits))
  874. {
  875. adItems[playerid][c]{(sizeof(adItems[][]) * (cellbits / charbits)) - 3} = '.';
  876. adItems[playerid][c]{(sizeof(adItems[][]) * (cellbits / charbits)) - 2} = '.';
  877. adItems[playerid][c]{(sizeof(adItems[][]) * (cellbits / charbits)) - 1} = '.';
  878. }
  879. if(c < 8) PlayerTextDrawSetString(playerid, adArrayPTDs[playerid][12 + c], adItems[playerid][c]);
  880. j = i + 1;
  881. }
  882. }
  883. adMaxItems[playerid] = c;
  884. adArrayPTDs[playerid][20] = CreatePlayerTextDraw(playerid, 470.0, 170.3, "_"); //Scroll box
  885. PlayerTextDrawTextSize(playerid, adArrayPTDs[playerid][20], 460.0, 5.0);
  886. PlayerTextDrawLetterSize(playerid, adArrayPTDs[playerid][20], 0.0, 9.8 / (floatround(c / 8, floatround_tozero) + 1));
  887. PlayerTextDrawUseBox(playerid, adArrayPTDs[playerid][20], 1);
  888. PlayerTextDrawBoxColor(playerid, adArrayPTDs[playerid][20], AD_SCROLL_BOX_COLOR);
  889. #undef AD_SCROLL_BOX_COLOR
  890. for(i = sizeof(adArrayTDs) - 1; i > -1; --i)
  891. {
  892. if(c < 8 && (6 <= i <= 7 || 9 <= i <= 10)
  893. || lb2 > 0 && i == 5 || lb2 < 1 && 3 <= i <= 4) continue;
  894. TextDrawShowForPlayer(playerid, adArrayTDs[i]);
  895. }
  896. for(i = sizeof(adArrayPTDs[]) - 1; i > -1; --i)
  897. {
  898. if(c < 8 && i == 20) continue;
  899. PlayerTextDrawShow(playerid, adArrayPTDs[playerid][i]);
  900. }
  901. return SelectTextDraw(playerid, AD_SELECTION_COLOR);
  902. #undef AD_SELECTION_COLOR
  903. }
  904. }
  905. return 0;
  906. }
  907. stock GetPlayerAltDialog(playerid)
  908. {
  909. if(!IsPlayerConnected(playerid)) return AD_INVALID_ID;
  910. return adDialogID[playerid];
  911. }