adri1

TDEditor 1.14

Mar 26th, 2015
842
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 204.73 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <YSF>
  4.  
  5.  
  6. /*
  7.  
  8. ___ __ __
  9. | | \|_ _|.|_ _ _
  10. | |__/|__(_|||_(_)|
  11.  
  12. Version 1.14
  13. TDEditor Credits:
  14.  
  15. - adri1 USER PROFILE: http://forum.sa-mp.com/member.php?u=106967
  16. - Pottus USER PROFILE: http://forum.sa-mp.com/member.php?u=169807
  17. - iPLEOMAX USER PROFILE: http://forum.sa-mp.com/member.php?u=122705
  18. - Sasino97 (IsKeyDown plugin) USER PROFILE: http://forum.sa-mp.com/member.php?u=111937
  19. - kurta999 (YSF plugin) USER PROFILE: http://forum.sa-mp.com/member.php?u=50263
  20. - Y_Less (sscanf2 plugin & YSF plugin) USER PROFILE: http://forum.sa-mp.com/member.php?u=29176
  21.  
  22.  
  23.  
  24. IsKeyDown plugin was modified by adri1, adding the following functions:
  25.  
  26. native PressKeyEnter(key);
  27. native PressAnyKey(key);
  28. native GetKeyState(key);
  29. native GetDoubleClickTime();
  30. native ActivateAnyKey();
  31. native ActivateAnyKeyVariable(valor);
  32. forward OnAnyKeyDown(key);
  33. */
  34.  
  35.  
  36. #define VK_KEY_A 0x41
  37. #define VK_KEY_B 0x42
  38. #define VK_KEY_C 0x43
  39. #define VK_KEY_D 0x44
  40. #define VK_KEY_E 0x45
  41. #define VK_KEY_F 0x46
  42. #define VK_KEY_G 0x47
  43. #define VK_KEY_H 0x48
  44. #define VK_KEY_I 0x49
  45. #define VK_KEY_J 0x4A
  46. #define VK_KEY_K 0x4B
  47. #define VK_KEY_L 0x4C
  48. #define VK_KEY_M 0x4D
  49. #define VK_KEY_N 0x4E
  50. #define VK_KEY_O 0x4F
  51. #define VK_KEY_P 0x50
  52. #define VK_KEY_Q 0x51
  53. #define VK_KEY_R 0x52
  54. #define VK_KEY_S 0x53
  55. #define VK_KEY_T 0x54
  56. #define VK_KEY_U 0x55
  57. #define VK_KEY_V 0x56
  58. #define VK_KEY_W 0x57
  59. #define VK_KEY_X 0x58
  60. #define VK_KEY_Y 0x59
  61. #define VK_KEY_Z 0x5A
  62. #define VK_LBUTTON 0x01
  63. #define VK_MBUTTON 0x04
  64. #define VK_RBUTTON 0x02
  65. #define VK_UP 0x26
  66. #define VK_DOWN 0x28
  67. #define VK_LEFT 0x25
  68. #define VK_RIGHT 0x27
  69. #define VK_LSHIFT 0xA0
  70. #define VK_RSHIFT 0xA1
  71. #define VK_SPACE 0x20
  72. #define VK_CANCEL 0x03
  73. #define VK_BACKSPACE 0x08
  74. #define VK_TAB 0x09
  75. #define VK_CLEAR 0x0C
  76. #define VK_ENTER 0x0D
  77. #define VK_SHIFT 0x10
  78. #define VK_LSHIFT 0xA0
  79. #define VK_RSHIFT 0xA1
  80. #define VK_CTRL 0x11
  81. #define VK_LCTRL 0xA2
  82. #define VK_RCTRL 0xA3
  83. #define VK_ALT 0x12
  84. #define VK_CAPSLOCK 0x14
  85. #define VK_ESCAPE 0x1B
  86. #define VK_SELECT 0x29
  87. #define VK_INSERT 0x2D
  88. #define VK_DELETE 0x2E
  89. #define VK_HELP 0x2F
  90. #define VK_KEYB0 0x30
  91. #define VK_KEYB1 0x31
  92. #define VK_KEYB2 0x32
  93. #define VK_KEYB3 0x33
  94. #define VK_KEYB4 0x34
  95. #define VK_KEYB5 0x35
  96. #define VK_KEYB6 0x36
  97. #define VK_KEYB7 0x37
  98. #define VK_KEYB8 0x38
  99. #define VK_KEYB9 0x39
  100. #define VK_NUMLOCK 0x90
  101. #define VK_NUMPAD0 0x60
  102. #define VK_NUMPAD1 0x61
  103. #define VK_NUMPAD2 0x62
  104. #define VK_NUMPAD3 0x63
  105. #define VK_NUMPAD4 0x64
  106. #define VK_NUMPAD5 0x65
  107. #define VK_NUMPAD6 0x66
  108. #define VK_NUMPAD7 0x67
  109. #define VK_NUMPAD8 0x68
  110. #define VK_NUMPAD9 0x69
  111. #define VK_MULTIPLY 0x6A
  112. #define VK_ADD 0x6B
  113. #define VK_SEPARATOR 0x6C
  114. #define VK_SUBTRACT 0x6D
  115. #define VK_DECIMAL 0x6E
  116. #define VK_DIVIDE 0x6F
  117. #define VK_OEM_PLUS 0xBB
  118. #define VK_OEM_COMMA 0xBC
  119. #define VK_OEM_MINUS 0xBD
  120. #define VK_OEM_PERIOD 0xBE
  121. #define VK_OEM_2 0xBF
  122. #define VK_OEM_4 0xDB
  123. #define VK_OEM_5 0xDC
  124. #define VK_OEM_6 0xDD
  125. #define VK_XBUTTON1 0x05
  126. #define VK_XBUTTON2 0x06
  127. #define VK_OEM_102 0xE2
  128. #define VK_F6 0x75
  129. #define VK_END 0x23
  130. #define VK_HOME 0x24
  131.  
  132. #define EmptyString(%0) %0[0] = '\0'
  133. #define INVALID_INDEX_ID (-1)
  134. #define TDE_CALLBACK:%0(%1) forward %0(%1); public %0(%1)
  135. #define Loop(%0,%1) for (new c = %0; c < %1; c++)
  136. #define MAX_PROJECT_TEXTDRAWS (500)
  137.  
  138. native GetVirtualKeyState(key);
  139. native GetScreenSize(&Width, &Height);
  140. native GetMousePos(&X, &Y);
  141. native PressKeyEnter(key);
  142. native PressAnyKey(key);
  143. native GetKeyState(key);
  144. native GetDoubleClickTime();
  145. native ActivateAnyKey();
  146. native ActivateAnyKeyVariable(valor);
  147. forward OnAnyKeyDown(key);
  148.  
  149.  
  150. enum
  151. {
  152. DIALOG_PROJECT = 6666,
  153. DIALOG_PROJECT_LIST,
  154. DIALOG_NEWPROJECT,
  155. DIALOG_LOADPROJECT,
  156. DIALOG_CLOSEPROJECT,
  157. DIALOG_DELETETD,
  158. DIALOG_TDLIST,
  159. DIALOG_EDITTEXT,
  160. DIALOG_EDITOUTLINE,
  161. DIALOG_EDITSHADOW,
  162. DIALOG_LETTERX,
  163. DIALOG_LETTERY,
  164. DIALOG_POSX,
  165. DIALOG_POSY,
  166. DIALOG_MIRROR,
  167. DIALOG_CONFIRMEDELETE,
  168. DIALOG_EDITCOLOR,
  169. DIALOG_SIZEX,
  170. DIALOG_SIZEY,
  171. DIALOG_NEW,
  172. DIALOG_MODELID,
  173. DIALOG_MODELS,
  174. DIALOG_MODELS_MLD,
  175. DIALOG_MODELS_RX,
  176. DIALOG_MODELS_RY,
  177. DIALOG_MODELS_RZ,
  178. DIALOG_MODELS_ZO,
  179. DIALOG_MODELS_C1,
  180. DIALOG_MODELS_C2,
  181. DIALOG_MANAGE = 7777
  182. };
  183.  
  184. enum E_KEY_STRUCT
  185. {
  186. bool:KEY_PRESSED,
  187. KEY_CODE,
  188. };
  189.  
  190. enum E_TD_STRUCT
  191. {
  192. ItsFromTDE,
  193. Text:ETextDrawID,
  194. ETextDrawText[800],
  195. Float:ETextDrawPosX,
  196. Float:ETextDrawPosY,
  197. Float:ETextDrawLetterX,
  198. Float:ETextDrawLetterY,
  199. Float:ETextDrawTextX,
  200. Float:ETextDrawTextY,
  201. ETextDrawOutline,
  202. ETextDrawShadow,
  203. ETextDrawModelid,
  204. Float:ETextDrawRotX,
  205. Float:ETextDrawRotY,
  206. Float:ETextDrawRotZ,
  207. Float:ETextDrawZoom,
  208. ETextDrawType, //Global/Player
  209. ETextDrawSelectable,
  210. ETextDrawColor,
  211. ETextDrawBGColor,
  212. ETextDrawBoxColor,
  213. ETextDrawVehCol1,
  214. ETextDrawVehCol2
  215. };
  216.  
  217. enum
  218. {
  219. EDITMODE_NONE,
  220. EDITMODE_TEXT,
  221. EDITMODE_POSITION,
  222. EDITMODE_OUTLINE,
  223. EDITMODE_SHADOW,
  224. EDITMODE_LETTERSIZE,
  225. EDITMODE_SIZE,
  226. EDITMODE_COLOR,
  227. EDITMODE_BGCOLOR,
  228. EDITMODE_BOXCOLOR,
  229. EDITMODE_MODELS,
  230. EDITMODE_ADJUST
  231. };
  232.  
  233. enum
  234. {
  235. COLORMODE_NONE,
  236. COLORMODE_RED,
  237. COLORMODE_GREEN,
  238. COLORMODE_BLUE,
  239. COLORMODE_ALPHA
  240. };
  241.  
  242. new PremadeColors[][] =
  243. {
  244. { 0xFF0000FF , "Red" },
  245. { 0xFFFFFFFF , "White" },
  246. { 0x00FFFFFF , "Cyan" },
  247. { 0xC0C0C0FF , "Silver" },
  248. { 0x0000FFFF , "Blue" },
  249. { 0x808080FF , "Grey" },
  250. { 0x0000A0FF , "DarkBlue" },
  251. { 0x000000FF , "Black" },
  252. { 0xADD8E6FF , "LightBlue" },
  253. { 0xFFA500FF , "Orange" },
  254. { 0x800080FF , "Purple" },
  255. { 0xA52A2AFF , "Brown" },
  256. { 0xFFFF00FF , "Yellow" },
  257. { 0x800000FF , "Maroon" },
  258. { 0x00FF00FF , "Lime" },
  259. { 0x008000FF , "Green" },
  260. { 0xFF00FFFF , "Fuchsia" },
  261. { 0x808000FF , "Olive" }
  262. };
  263.  
  264. new
  265. ProjectEditor = -1,
  266. bool:EditorEnabled,
  267. bool:IsPSel,
  268. CursorOX, CursorOY,
  269. CursorX, CursorY,
  270. ScreenWidth, ScreenHeight,
  271. VirtualKeys[95][E_KEY_STRUCT],
  272. ProjectTD[MAX_PROJECT_TEXTDRAWS][E_TD_STRUCT],
  273. Text:TDE_Menu[36] = {Text:INVALID_TEXT_DRAW, ...},
  274. Text:TD_Status,
  275. Text:TDELOGO,
  276. Float:OffsetZ = 415.0,
  277. EditIndex = INVALID_INDEX_ID,
  278. EditMode,
  279. Float:EditMoveSpeed = 0.1,
  280. Float:EditLetterSizeSpeed = 0.01,
  281. Float:EditSizeSpeed = 0.01,
  282. DeleteTimer, SpeedTimer, /*DoubleClickCount,*/ MoveTDTimer = -1,
  283. Text:TDEditor_Helper[2], TDEHTimer = -1, OutlineTimer, ShadowTimer,
  284. LetterSizeTimer = -1, LetterTimer, EditSizeTDTimer = -1, EditSizeSpeedT,
  285. ColorMode, Colors[4], BackManageDialog[15], PageStart, Float:Zoom = 1.0,
  286. ProjectFile[64], Pro_Str[5000], File:Handler, str_list[3000], EditorUpdateTimer,
  287. line[800], bool:MouseCursor, bool:PixelLock
  288. ;
  289.  
  290. public OnFilterScriptInit()
  291. {
  292. print(" ");
  293. print(" ");
  294. print(" ");
  295. print(" ");
  296. print("___ __ __");
  297. print(" | | \\|_ _|.|_ _ _ ");
  298. print(" | |__/|__(_|||_(_)| ");
  299. print(" ");
  300. print("TDEditor V1.14 by adri1");
  301. print("TDEditor loaded");
  302. print(" ");
  303.  
  304. Loop(0, MAX_PROJECT_TEXTDRAWS) ProjectTD[c][ItsFromTDE] = -1;
  305. VirtualKeys[0][KEY_CODE] = VK_KEY_A;
  306. VirtualKeys[1][KEY_CODE] = VK_KEY_B;
  307. VirtualKeys[2][KEY_CODE] = VK_KEY_C;
  308. VirtualKeys[3][KEY_CODE] = VK_KEY_D;
  309. VirtualKeys[4][KEY_CODE] = VK_KEY_E;
  310. VirtualKeys[5][KEY_CODE] = VK_KEY_F;
  311. VirtualKeys[6][KEY_CODE] = VK_KEY_G;
  312. VirtualKeys[7][KEY_CODE] = VK_KEY_H;
  313. VirtualKeys[8][KEY_CODE] = VK_KEY_I;
  314. VirtualKeys[9][KEY_CODE] = VK_KEY_J;
  315. VirtualKeys[10][KEY_CODE] = VK_KEY_K;
  316. VirtualKeys[11][KEY_CODE] = VK_KEY_L;
  317. VirtualKeys[12][KEY_CODE] = VK_KEY_M;
  318. VirtualKeys[13][KEY_CODE] = VK_KEY_N;
  319. VirtualKeys[14][KEY_CODE] = VK_KEY_O;
  320. VirtualKeys[15][KEY_CODE] = VK_KEY_P;
  321. VirtualKeys[16][KEY_CODE] = VK_KEY_Q;
  322. VirtualKeys[17][KEY_CODE] = VK_KEY_R;
  323. VirtualKeys[18][KEY_CODE] = VK_KEY_S;
  324. VirtualKeys[19][KEY_CODE] = VK_KEY_T;
  325. VirtualKeys[20][KEY_CODE] = VK_KEY_U;
  326. VirtualKeys[21][KEY_CODE] = VK_KEY_V;
  327. VirtualKeys[22][KEY_CODE] = VK_KEY_W;
  328. VirtualKeys[23][KEY_CODE] = VK_KEY_X;
  329. VirtualKeys[24][KEY_CODE] = VK_KEY_Y;
  330. VirtualKeys[25][KEY_CODE] = VK_KEY_Z;
  331. VirtualKeys[26][KEY_CODE] = VK_LBUTTON;
  332. VirtualKeys[27][KEY_CODE] = VK_MBUTTON;
  333. VirtualKeys[28][KEY_CODE] = VK_RBUTTON;
  334. VirtualKeys[29][KEY_CODE] = VK_LEFT;
  335. VirtualKeys[30][KEY_CODE] = VK_RIGHT;
  336. VirtualKeys[31][KEY_CODE] = VK_UP;
  337. VirtualKeys[32][KEY_CODE] = VK_DOWN;
  338. VirtualKeys[33][KEY_CODE] = VK_LSHIFT;
  339. VirtualKeys[34][KEY_CODE] = VK_RSHIFT;
  340. VirtualKeys[35][KEY_CODE] = VK_SPACE;
  341. VirtualKeys[36][KEY_CODE] = VK_CANCEL; //03
  342. VirtualKeys[37][KEY_CODE] = VK_BACKSPACE; //08
  343. VirtualKeys[38][KEY_CODE] = VK_TAB; //09
  344. VirtualKeys[39][KEY_CODE] = VK_CLEAR; //0C
  345. VirtualKeys[40][KEY_CODE] = VK_ENTER; //0D
  346. VirtualKeys[41][KEY_CODE] = VK_SHIFT; //10
  347. VirtualKeys[42][KEY_CODE] = VK_LSHIFT; //A0
  348. VirtualKeys[43][KEY_CODE] = VK_RSHIFT; //A1
  349. VirtualKeys[44][KEY_CODE] = VK_CTRL; //11
  350. VirtualKeys[45][KEY_CODE] = VK_LCTRL; //A2
  351. VirtualKeys[46][KEY_CODE] = VK_RCTRL; //A3
  352. VirtualKeys[47][KEY_CODE] = VK_ALT; //12
  353. VirtualKeys[48][KEY_CODE] = VK_CAPSLOCK; //14
  354. VirtualKeys[49][KEY_CODE] = VK_ESCAPE; //1B
  355. VirtualKeys[50][KEY_CODE] = VK_SELECT; //29
  356. VirtualKeys[51][KEY_CODE] = VK_INSERT; //2D
  357. VirtualKeys[52][KEY_CODE] = VK_DELETE; //2E
  358. VirtualKeys[53][KEY_CODE] = VK_HELP; //2F
  359. VirtualKeys[54][KEY_CODE] = VK_KEYB0; //30
  360. VirtualKeys[55][KEY_CODE] = VK_KEYB1; //31
  361. VirtualKeys[56][KEY_CODE] = VK_KEYB2; //32
  362. VirtualKeys[57][KEY_CODE] = VK_KEYB3; //33
  363. VirtualKeys[58][KEY_CODE] = VK_KEYB4; //34
  364. VirtualKeys[59][KEY_CODE] = VK_KEYB5; //35
  365. VirtualKeys[60][KEY_CODE] = VK_KEYB6; //36
  366. VirtualKeys[61][KEY_CODE] = VK_KEYB7; //37
  367. VirtualKeys[62][KEY_CODE] = VK_KEYB8; //38
  368. VirtualKeys[63][KEY_CODE] = VK_KEYB9; //39
  369. VirtualKeys[64][KEY_CODE] = VK_NUMLOCK; //90
  370. VirtualKeys[65][KEY_CODE] = VK_NUMPAD0; //60
  371. VirtualKeys[66][KEY_CODE] = VK_NUMPAD1; //61
  372. VirtualKeys[67][KEY_CODE] = VK_NUMPAD2; //62
  373. VirtualKeys[68][KEY_CODE] = VK_NUMPAD3; //63
  374. VirtualKeys[69][KEY_CODE] = VK_NUMPAD4; //64
  375. VirtualKeys[70][KEY_CODE] = VK_NUMPAD5; //65
  376. VirtualKeys[71][KEY_CODE] = VK_NUMPAD6; //66
  377. VirtualKeys[72][KEY_CODE] = VK_NUMPAD7; //67
  378. VirtualKeys[73][KEY_CODE] = VK_NUMPAD8; //68
  379. VirtualKeys[74][KEY_CODE] = VK_NUMPAD9; //69
  380. VirtualKeys[75][KEY_CODE] = VK_MULTIPLY; //6A
  381. VirtualKeys[76][KEY_CODE] = VK_ADD; //6B
  382. VirtualKeys[77][KEY_CODE] = VK_SEPARATOR; //6C
  383. VirtualKeys[78][KEY_CODE] = VK_SUBTRACT; //6D
  384. VirtualKeys[79][KEY_CODE] = VK_DECIMAL; //6E
  385. VirtualKeys[80][KEY_CODE] = VK_DIVIDE; //6F
  386. VirtualKeys[81][KEY_CODE] = VK_OEM_PLUS;
  387. VirtualKeys[82][KEY_CODE] = VK_OEM_COMMA;
  388. VirtualKeys[83][KEY_CODE] = VK_OEM_MINUS;
  389. VirtualKeys[84][KEY_CODE] = VK_OEM_PERIOD;
  390. VirtualKeys[85][KEY_CODE] = VK_OEM_2;
  391. VirtualKeys[86][KEY_CODE] = VK_OEM_4;
  392. VirtualKeys[87][KEY_CODE] = VK_OEM_5;
  393. VirtualKeys[88][KEY_CODE] = VK_OEM_6;
  394. VirtualKeys[89][KEY_CODE] = VK_XBUTTON1;
  395. VirtualKeys[90][KEY_CODE] = VK_XBUTTON2;
  396. VirtualKeys[91][KEY_CODE] = VK_OEM_102;
  397. VirtualKeys[92][KEY_CODE] = VK_F6;
  398. VirtualKeys[93][KEY_CODE] = VK_END;
  399. VirtualKeys[94][KEY_CODE] = VK_HOME;
  400.  
  401.  
  402. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++) ProjectTD[i][ETextDrawID] = Text:INVALID_TEXT_DRAW;
  403. return true;
  404. }
  405.  
  406. public OnFilterScriptExit()
  407. {
  408. print(" ");
  409. print(" ");
  410. print(" ");
  411. print(" ");
  412. print("___ __ __");
  413. print(" | | \\|_ _|.|_ _ _ ");
  414. print(" | |__/|__(_|||_(_)| ");
  415. print(" ");
  416. print("TDEditor V1.14 by adri1");
  417. print("TDEditor unloaded");
  418. print(" ");
  419.  
  420. KillTimer(EditorUpdateTimer);
  421. KillTimer(DeleteTimer);
  422. KillTimer(SpeedTimer);
  423. KillTimer(MoveTDTimer); MoveTDTimer = -1;
  424. KillTimer(TDEHTimer); TDEHTimer = -1;
  425. KillTimer(OutlineTimer);
  426. KillTimer(ShadowTimer);
  427. KillTimer(LetterSizeTimer); LetterSizeTimer = -1;
  428. KillTimer(LetterTimer);
  429. KillTimer(EditSizeTDTimer); EditSizeTDTimer = -1;
  430. KillTimer(EditSizeSpeedT);
  431. KillTimer(ShadowTimer);
  432. if(ProjectEditor != -1)
  433. {
  434. TogglePlayerControllable(ProjectEditor, true);
  435. ShowPlayerDialog(ProjectEditor, -1, 0, "","", "", "" );
  436. CancelSelectTextDraw(ProjectEditor);
  437. if(strlen(ProjectFile))
  438. {
  439. SaveProject();
  440. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++) RemoveTextDrawTDEOnly(i);
  441. }
  442. }
  443. DestroyMenuTextDraws();
  444. EditMode = EDITMODE_NONE;
  445. ColorMode = COLORMODE_NONE;
  446. ProjectEditor = -1;
  447. EditorEnabled = false;
  448. IsPSel = true;
  449. CursorOX = 0;
  450. CursorOY = 0;
  451. CursorX = 0;
  452. CursorY = 0;
  453. ScreenWidth = 0;
  454. ScreenHeight = 0;
  455. OffsetZ = 415.0;
  456. EditIndex = INVALID_INDEX_ID;
  457. EditMoveSpeed = 0.1;
  458. EditLetterSizeSpeed = 0.01;
  459. EditSizeSpeed = 0.01;
  460. PageStart = 0;
  461. Zoom = 1.0;
  462. MouseCursor = false;
  463. EmptyString(ProjectFile);
  464. EmptyString(Pro_Str);
  465. EmptyString(str_list);
  466. EmptyString(line);
  467. return true;
  468. }
  469.  
  470. public OnPlayerConnect(playerid)
  471. {
  472. return true;
  473. }
  474.  
  475. public OnPlayerDisconnect(playerid, reason)
  476. {
  477. if(ProjectEditor == playerid)
  478. {
  479. KillTimer(EditorUpdateTimer);
  480. KillTimer(DeleteTimer);
  481. KillTimer(SpeedTimer);
  482. KillTimer(MoveTDTimer); MoveTDTimer = -1;
  483. KillTimer(TDEHTimer); TDEHTimer = -1;
  484. KillTimer(OutlineTimer);
  485. KillTimer(ShadowTimer);
  486. KillTimer(LetterSizeTimer); LetterSizeTimer = -1;
  487. KillTimer(LetterTimer);
  488. KillTimer(EditSizeTDTimer); EditSizeTDTimer = -1;
  489. KillTimer(EditSizeSpeedT);
  490. KillTimer(ShadowTimer);
  491.  
  492. if(strlen(ProjectFile))
  493. {
  494. SaveProject();
  495. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++) RemoveTextDrawTDEOnly(i);
  496. }
  497.  
  498. DestroyMenuTextDraws();
  499. EditMode = EDITMODE_NONE;
  500. ColorMode = COLORMODE_NONE;
  501. ProjectEditor = -1;
  502. EditorEnabled = false;
  503. IsPSel = true;
  504. CursorOX = 0;
  505. CursorOY = 0;
  506. CursorX = 0;
  507. CursorY = 0;
  508. ScreenWidth = 0;
  509. ScreenHeight = 0;
  510. OffsetZ = 415.0;
  511. EditIndex = INVALID_INDEX_ID;
  512. MouseCursor = false;
  513. EditMoveSpeed = 0.1;
  514. EditLetterSizeSpeed = 0.01;
  515. EditSizeSpeed = 0.01;
  516. PageStart = 0;
  517. Zoom = 1.0;
  518. EmptyString(ProjectFile);
  519. EmptyString(Pro_Str);
  520. EmptyString(str_list);
  521. EmptyString(line);
  522. }
  523. return true;
  524. }
  525.  
  526. public OnPlayerCommandText(playerid, cmdtext[])
  527. {
  528. if(!strcmp(cmdtext, "/tde", true, 4))
  529. {
  530. if(ProjectEditor == playerid)
  531. {
  532. if(strlen(cmdtext) >= 6)
  533. {
  534. if( (!strcmp(cmdtext[5], "ayuda", true)) || (!strcmp(cmdtext[5], "help", true)) )
  535. {
  536. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}/tde box - /tde exit - /tde cursor.");
  537. return 1;
  538. }
  539. if( (!strcmp(cmdtext[5], "cursor", true)) )
  540. {
  541. if(MouseCursor)
  542. {
  543. MouseCursor = false;
  544. CancelSelectTextDraw(ProjectEditor);
  545. }
  546. else
  547. {
  548. MouseCursor = true;
  549. SelectTextDraw(ProjectEditor, -1);
  550. }
  551. return 1;
  552. }
  553. if( (!strcmp(cmdtext[5], "salir", true)) || (!strcmp(cmdtext[5], "exit", true)) )
  554. {
  555. KillTimer(EditorUpdateTimer);
  556. KillTimer(DeleteTimer);
  557. KillTimer(SpeedTimer);
  558. KillTimer(MoveTDTimer); MoveTDTimer = -1;
  559. KillTimer(TDEHTimer); TDEHTimer = -1;
  560. KillTimer(OutlineTimer);
  561. KillTimer(ShadowTimer);
  562. KillTimer(LetterSizeTimer); LetterSizeTimer = -1;
  563. KillTimer(LetterTimer);
  564. KillTimer(EditSizeTDTimer); EditSizeTDTimer = -1;
  565. KillTimer(EditSizeSpeedT);
  566. KillTimer(ShadowTimer);
  567.  
  568. if(strlen(ProjectFile))
  569. {
  570. SaveProject();
  571. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++) RemoveTextDrawTDEOnly(i);
  572. }
  573.  
  574. DestroyMenuTextDraws();
  575. EditMode = EDITMODE_NONE;
  576. ColorMode = COLORMODE_NONE;
  577. ProjectEditor = -1;
  578. EditorEnabled = false;
  579. IsPSel = true;
  580. CursorOX = 0;
  581. CursorOY = 0;
  582. CursorX = 0;
  583. CursorY = 0;
  584. ScreenWidth = 0;
  585. ScreenHeight = 0;
  586. OffsetZ = 415.0;
  587. EditIndex = INVALID_INDEX_ID;
  588. EditMoveSpeed = 0.1;
  589. EditLetterSizeSpeed = 0.01;
  590. EditSizeSpeed = 0.01;
  591. PageStart = 0;
  592. MouseCursor = false;
  593. Zoom = 1.0;
  594. EmptyString(ProjectFile);
  595. EmptyString(Pro_Str);
  596. EmptyString(str_list);
  597. EmptyString(line);
  598.  
  599. TogglePlayerControllable(playerid, true);
  600. ShowPlayerDialog(playerid, -1, 0, "","", "", "" );
  601. CancelSelectTextDraw(playerid);
  602. return 1;
  603. }
  604. if( (!strcmp(cmdtext[5], "box", true)) || (!strcmp(cmdtext[5], "icons", true)) || (!strcmp(cmdtext[5], "adjust", true)) )
  605. {
  606. if(EditMode == EDITMODE_ADJUST)
  607. {
  608. if(!VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  609. {
  610. new Float:pos[2];
  611. for(new i = 1; i < sizeof(TDE_Menu); i++)
  612. {
  613. TextDrawGetPos(TDE_Menu[i], pos[0], pos[1]);
  614. TextDrawSetPos(TDE_Menu[i], pos[0], OffsetZ);
  615. TextDrawShowForPlayer(playerid, TDE_Menu[i]);
  616. }
  617.  
  618. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  619. EditMode = EDITMODE_NONE;
  620. IsPSel = true;
  621. return 1;
  622. }
  623. return 1;
  624. }
  625. IsPSel = false;
  626. TextDrawSetString(TD_Status, "EditMode: EDITMODE_ADJUST");
  627. EditMode = EDITMODE_ADJUST;
  628. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Press 'ESC' to finish this mode.");
  629. return 1;
  630. }
  631. return SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}/tde {e2b960}(box/help)");
  632. }
  633. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  634. EditMode = EDITMODE_NONE;
  635. CancelSelectTextDraw(playerid);
  636. IsPSel = false;
  637. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  638. }
  639. if(ProjectEditor == -1)
  640. {
  641. new ip[16];
  642. GetPlayerIp(playerid, ip, 16);
  643. if(strcmp(ip, "127.0.0.1", false)) return SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}TDEditor only can be used from localhost (127.0.0.1)");
  644. IsPSel = true;
  645. MouseCursor = true;
  646. TogglePlayerControllable(playerid, false);
  647. DestroyMenuTextDraws();
  648. CreateMenuTextDraws();
  649. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Click on the image to start...");
  650. TextDrawShowForPlayer(playerid, TDELOGO);
  651. SelectTextDraw(playerid, -1);
  652. EmptyString(ProjectFile);
  653. }
  654. return true;
  655. }
  656. return false;
  657. }
  658.  
  659. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  660. {
  661. if(dialogid == DIALOG_PROJECT)
  662. {
  663. if(response)
  664. {
  665. switch(listitem)
  666. {
  667. case 0:
  668. {
  669. if(strlen(ProjectFile))
  670. {
  671. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Closes the current project first.");
  672. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  673. return 1;
  674. }
  675. ShowPlayerDialog(playerid, DIALOG_NEWPROJECT, DIALOG_STYLE_INPUT, "TDEditor - New project", "Project Name (if exists will load):", ">>", "<<");
  676. }
  677. case 1:
  678. {
  679. if(strlen(ProjectFile))
  680. {
  681. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Closes the current project first.");
  682. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  683. return 1;
  684. }
  685. new Found;
  686. Handler = fopen("tdelist.txt", io_read);
  687. if(Handler)
  688. {
  689. while(fread(Handler, Pro_Str))
  690. {
  691. if(strlen(Pro_Str))
  692. {
  693. if(!Found)
  694. {
  695. EmptyString(str_list);
  696. Found = true;
  697. }
  698. strcat(str_list, Pro_Str);
  699. }
  700. }
  701. fclose(Handler);
  702. }
  703. else
  704. {
  705. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}There isn't list.");
  706. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  707. return 1;
  708. }
  709. if(!Found)
  710. {
  711. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}There isn't list.");
  712. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  713. return 1;
  714. }
  715. ShowPlayerDialog(playerid, DIALOG_PROJECT_LIST, DIALOG_STYLE_LIST, "TDEditor - Projects list", str_list, ">>", "<<");
  716. }
  717. case 2:
  718. {
  719. if(!strlen(ProjectFile))
  720. {
  721. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}You haven't created/loaded any project.");
  722. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  723. return 1;
  724. }
  725. CloseProject();
  726. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Project closed.");
  727. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  728. }
  729. }
  730. }
  731. else
  732. {
  733. if(ProjectEditor == -1)
  734. {
  735.  
  736. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}TDEditor finished.");
  737. TextDrawHideForPlayer(playerid, TDELOGO);
  738. TogglePlayerControllable(playerid, true);
  739. DestroyMenuTextDraws();
  740. IsPSel = true;
  741. return 1;
  742. }
  743. SelectTextDraw(playerid, -1);
  744. IsPSel = true;
  745. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}If you want exit use /tde exit.");
  746. }
  747. return 1;
  748. }
  749. else if(dialogid == DIALOG_NEWPROJECT)
  750. {
  751. if(response)
  752. {
  753. if(!(1 <= strlen(inputtext) <= 32)) return ShowPlayerDialog(playerid, DIALOG_NEWPROJECT, DIALOG_STYLE_INPUT, "TDEditor - New project", "Project Name (if exists will load):", ">>", "<<");
  754. if(!IsValidProjectName(inputtext)) return ShowPlayerDialog(playerid, DIALOG_NEWPROJECT, DIALOG_STYLE_INPUT, "TDEditor - New project", "Project Name (if exists will load):", ">>", "<<");
  755. if(strlen(ProjectFile)) CloseProject();
  756.  
  757. format(ProjectFile, sizeof ProjectFile, "%s.tde", inputtext);
  758. if(!CheckProject(inputtext)) AddProject(ProjectFile);
  759.  
  760. ProjectEditor = playerid;
  761. EditorEnabled = true;
  762. IsPSel = true;
  763. ShowEditor();
  764.  
  765. PageStart = 0;
  766. if(fexist(ProjectFile))
  767. {
  768. LoadProject();
  769. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Project loaded.");
  770. }
  771. else
  772. {
  773. Handler = fopen(ProjectFile, io_write);
  774. fclose(Handler);
  775. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Project created.");
  776. }
  777.  
  778. if(EditIndex != INVALID_INDEX_ID)
  779. {
  780. Loop(1, sizeof(TDE_Menu))
  781. {
  782. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  783. TextDrawSetSelectable(TDE_Menu[c], true);
  784. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  785. }
  786. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  787. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  788. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  789. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  790. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  791. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  792. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  793. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  794. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  795. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  796. UpdateIcons(EditIndex);
  797. }
  798.  
  799. EditorUpdateTimer = SetTimerEx("OnEditorUpdate", 25, true, "i", ProjectEditor);
  800. }
  801. else ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  802. return 1;
  803. }
  804. else if(dialogid == DIALOG_PROJECT_LIST)
  805. {
  806. if(response)
  807. {
  808. Handler = fopen("tdelist.txt", io_read);
  809. if(!Handler) return 1;
  810.  
  811. new Index = -1;
  812. while(fread(Handler, Pro_Str))
  813. {
  814. if(!strlen(Pro_Str)) continue;
  815. Index++;
  816.  
  817. if(Index == listitem)
  818. {
  819. StripNewLine(Pro_Str);
  820.  
  821. if(strlen(ProjectFile))
  822. {
  823. SaveProject();
  824. CloseProject();
  825. }
  826. ProjectEditor = playerid;
  827. EditorEnabled = true;
  828. IsPSel = true;
  829. ShowEditor();
  830.  
  831. format(ProjectFile, sizeof(ProjectFile), "%s", Pro_Str);
  832. if(!LoadProject())
  833. {
  834. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Couldn't load this project, check .tde file.");
  835. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  836. return 1;
  837. }
  838. if(EditIndex >= INVALID_INDEX_ID)
  839. {
  840. Loop(1, sizeof(TDE_Menu))
  841. {
  842. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  843. TextDrawSetSelectable(TDE_Menu[c], true);
  844. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  845. }
  846. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  847. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  848. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  849. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  850. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  851. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  852. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  853. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  854. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  855. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  856. UpdateIcons(EditIndex);
  857. }
  858.  
  859. EditorUpdateTimer = SetTimerEx("OnEditorUpdate", 25, true, "i", ProjectEditor);
  860. }
  861. }
  862. }
  863. else ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  864. return 1;
  865. }
  866. if(!EditorEnabled || ProjectEditor != playerid) return false;
  867. if(EditMode == EDITMODE_ADJUST) return false;
  868. switch(dialogid)
  869. {
  870. case DIALOG_NEW:
  871. {
  872. if(response)
  873. {
  874. switch(listitem)
  875. {
  876. case 0: //Normal
  877. {
  878. new Index = GetAvailableIndex();
  879. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  880. EditIndex = Index;
  881.  
  882. if(EditIndex == 0)
  883. {
  884. Loop(1, sizeof(TDE_Menu))
  885. {
  886. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  887. TextDrawSetSelectable(TDE_Menu[c], true);
  888. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  889. }
  890. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  891. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  892. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  893. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  894. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  895. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  896. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  897. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  898. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  899. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  900. }
  901.  
  902. ProjectTD[Index][ETextDrawID] = TextDrawCreate(290.0, 190.0, "TDEditor");
  903. TextDrawLetterSize(ProjectTD[Index][ETextDrawID], 0.4, 1.6);
  904. TextDrawAlignment(ProjectTD[Index][ETextDrawID], 1);
  905. TextDrawColor(ProjectTD[Index][ETextDrawID], -1);
  906. TextDrawUseBox(ProjectTD[Index][ETextDrawID], 0);
  907. TextDrawSetShadow(ProjectTD[Index][ETextDrawID], 0);
  908. TextDrawSetOutline(ProjectTD[Index][ETextDrawID], 0);
  909. TextDrawBackgroundColor(ProjectTD[Index][ETextDrawID], 255);
  910. TextDrawFont(ProjectTD[Index][ETextDrawID], 1);
  911. TextDrawSetProportional(ProjectTD[Index][ETextDrawID], 1);
  912. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  913.  
  914.  
  915. ProjectTD[EditIndex][ItsFromTDE] = 1;
  916. format(ProjectTD[EditIndex][ETextDrawText], 800, "TDEditor");
  917. ProjectTD[EditIndex][ETextDrawPosX] = 290.0;
  918. ProjectTD[EditIndex][ETextDrawPosY] = 190.0;
  919. ProjectTD[EditIndex][ETextDrawLetterX] = 0.4;
  920. ProjectTD[EditIndex][ETextDrawLetterY] = 1.6;
  921. ProjectTD[EditIndex][ETextDrawColor] = 0xFFFFFFFF;
  922. ProjectTD[EditIndex][ETextDrawBGColor] = 0x000000FF;
  923. ProjectTD[EditIndex][ETextDrawBoxColor] = 0x000000FF;
  924.  
  925. new string[128];
  926. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}created.", EditIndex);
  927. SendClientMessage(ProjectEditor, -1, string);
  928. SelectTextDraw(playerid, -1);
  929. IsPSel = true;
  930. UpdateIcons(EditIndex);
  931.  
  932. if(EditMode == EDITMODE_MODELS)
  933. {
  934. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  935. EditMode = EDITMODE_NONE;
  936. }
  937. }
  938. case 1: //TXD
  939. {
  940. new Index = GetAvailableIndex();
  941. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  942. EditIndex = Index;
  943.  
  944. if(EditIndex == 0)
  945. {
  946. Loop(1, sizeof(TDE_Menu))
  947. {
  948. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  949. TextDrawSetSelectable(TDE_Menu[c], true);
  950. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  951. }
  952. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  953. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  954. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  955. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  956. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  957. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  958. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  959. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  960. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  961. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  962. }
  963.  
  964. ProjectTD[Index][ETextDrawID] = TextDrawCreate(265.0, 155.0, "LD_SPAC:white");
  965. TextDrawLetterSize(ProjectTD[Index][ETextDrawID], 0.0, 0.0);
  966. TextDrawTextSize(ProjectTD[Index][ETextDrawID], 90.0, 90.0);
  967. TextDrawAlignment(ProjectTD[Index][ETextDrawID], 1);
  968. TextDrawColor(ProjectTD[Index][ETextDrawID], -1);
  969. TextDrawUseBox(ProjectTD[Index][ETextDrawID], 0);
  970. TextDrawSetShadow(ProjectTD[Index][ETextDrawID], 0);
  971. TextDrawSetOutline(ProjectTD[Index][ETextDrawID], 0);
  972. TextDrawFont(ProjectTD[Index][ETextDrawID], 4);
  973. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  974.  
  975.  
  976. ProjectTD[EditIndex][ItsFromTDE] = 1;
  977. format(ProjectTD[EditIndex][ETextDrawText], 800, "LD_SPAC:white");
  978. ProjectTD[EditIndex][ETextDrawPosX] = 265.0;
  979. ProjectTD[EditIndex][ETextDrawPosY] = 155.0;
  980. ProjectTD[EditIndex][ETextDrawTextX] = 90.0;
  981. ProjectTD[EditIndex][ETextDrawTextY] = 90.0;
  982. ProjectTD[EditIndex][ETextDrawLetterX] = 0.0;
  983. ProjectTD[EditIndex][ETextDrawLetterY] = 0.0;
  984. ProjectTD[EditIndex][ETextDrawColor] = 0xFFFFFFFF;
  985. ProjectTD[EditIndex][ETextDrawBGColor] = 0x000000FF;
  986. ProjectTD[EditIndex][ETextDrawBoxColor] = 0x000000FF;
  987.  
  988. new string[128];
  989. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}created.", EditIndex);
  990. SendClientMessage(ProjectEditor, -1, string);
  991. SelectTextDraw(playerid, -1);
  992. IsPSel = true;
  993. UpdateIcons(EditIndex);
  994.  
  995. if(EditMode == EDITMODE_MODELS)
  996. {
  997. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  998. EditMode = EDITMODE_NONE;
  999. }
  1000. }
  1001. case 2: //Previews
  1002. {
  1003. new Index = GetAvailableIndex();
  1004. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  1005. EditIndex = Index;
  1006.  
  1007. if(EditIndex == 0)
  1008. {
  1009. Loop(1, sizeof(TDE_Menu))
  1010. {
  1011. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  1012. TextDrawSetSelectable(TDE_Menu[c], true);
  1013. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  1014. }
  1015. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  1016. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  1017. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  1018. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  1019. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  1020. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  1021. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  1022. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  1023. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  1024. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  1025. }
  1026.  
  1027. ProjectTD[Index][ETextDrawID] = TextDrawCreate(265.0, 155.0, "");
  1028. TextDrawLetterSize(ProjectTD[Index][ETextDrawID], 0.0, 0.0);
  1029. TextDrawTextSize(ProjectTD[Index][ETextDrawID], 90.0, 90.0);
  1030. TextDrawAlignment(ProjectTD[Index][ETextDrawID], 1);
  1031. TextDrawColor(ProjectTD[Index][ETextDrawID], -1);
  1032. TextDrawUseBox(ProjectTD[Index][ETextDrawID], 0);
  1033. TextDrawSetShadow(ProjectTD[Index][ETextDrawID], 0);
  1034. TextDrawSetOutline(ProjectTD[Index][ETextDrawID], 0);
  1035. TextDrawFont(ProjectTD[Index][ETextDrawID], 5);
  1036. TextDrawSetPreviewModel(ProjectTD[Index][ETextDrawID], 0);
  1037. TextDrawSetPreviewRot(ProjectTD[Index][ETextDrawID], 0.0, 0.0, 0.0, 1.0);
  1038. TextDrawBackgroundColor(ProjectTD[Index][ETextDrawID], 0x000000FF);
  1039. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  1040.  
  1041.  
  1042. ProjectTD[EditIndex][ItsFromTDE] = 1;
  1043. format(ProjectTD[EditIndex][ETextDrawText], 800, "");
  1044. ProjectTD[EditIndex][ETextDrawPosX] = 265.0;
  1045. ProjectTD[EditIndex][ETextDrawPosY] = 155.0;
  1046. ProjectTD[EditIndex][ETextDrawTextX] = 90.0;
  1047. ProjectTD[EditIndex][ETextDrawTextY] = 90.0;
  1048. ProjectTD[EditIndex][ETextDrawLetterX] = 0.0;
  1049. ProjectTD[EditIndex][ETextDrawLetterY] = 0.0;
  1050. ProjectTD[EditIndex][ETextDrawColor] = 0xFFFFFFFF;
  1051. ProjectTD[EditIndex][ETextDrawBGColor] = 0x000000FF;
  1052. ProjectTD[EditIndex][ETextDrawBoxColor] = 0x000000FF;
  1053. ProjectTD[EditIndex][ETextDrawModelid] = 0;
  1054. ProjectTD[EditIndex][ETextDrawRotX] = 0.0;
  1055. ProjectTD[EditIndex][ETextDrawRotY] = 0.0;
  1056. ProjectTD[EditIndex][ETextDrawRotZ] = 0.0;
  1057. ProjectTD[EditIndex][ETextDrawZoom] = 1.0;
  1058. ProjectTD[EditIndex][ETextDrawVehCol1] = 1;
  1059. ProjectTD[EditIndex][ETextDrawVehCol2] = 1;
  1060. new string[128];
  1061. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}created.", EditIndex);
  1062. SendClientMessage(ProjectEditor, -1, string);
  1063. SelectTextDraw(playerid, -1);
  1064. IsPSel = true;
  1065. UpdateIcons(EditIndex);
  1066. }
  1067. case 3:
  1068. {
  1069. new Index = GetAvailableIndex();
  1070. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  1071. EditIndex = Index;
  1072.  
  1073. if(EditIndex == 0)
  1074. {
  1075. Loop(1, sizeof(TDE_Menu))
  1076. {
  1077. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  1078. TextDrawSetSelectable(TDE_Menu[c], true);
  1079. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  1080. }
  1081. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  1082. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  1083. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  1084. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  1085. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  1086. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  1087. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  1088. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  1089. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  1090. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  1091. }
  1092.  
  1093. ProjectTD[Index][ETextDrawID] = TextDrawCreate(290.0, 190.0, "box");
  1094. TextDrawLetterSize(ProjectTD[Index][ETextDrawID], 0.0, 10.0);
  1095. TextDrawAlignment(ProjectTD[Index][ETextDrawID], 1);
  1096. TextDrawColor(ProjectTD[Index][ETextDrawID], -1);
  1097. TextDrawUseBox(ProjectTD[Index][ETextDrawID], 1);
  1098. TextDrawTextSize(ProjectTD[Index][ETextDrawID], 350.0, 0.0);
  1099. TextDrawSetShadow(ProjectTD[Index][ETextDrawID], 0);
  1100. TextDrawSetOutline(ProjectTD[Index][ETextDrawID], 0);
  1101. TextDrawBackgroundColor(ProjectTD[Index][ETextDrawID], 255);
  1102. TextDrawBoxColor(ProjectTD[Index][ETextDrawID], 255);
  1103. TextDrawFont(ProjectTD[Index][ETextDrawID], 1);
  1104. TextDrawSetProportional(ProjectTD[Index][ETextDrawID], 1);
  1105. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  1106.  
  1107.  
  1108. ProjectTD[EditIndex][ItsFromTDE] = 1;
  1109. format(ProjectTD[EditIndex][ETextDrawText], 800, "box");
  1110. ProjectTD[EditIndex][ETextDrawPosX] = 290.0;
  1111. ProjectTD[EditIndex][ETextDrawPosY] = 190.0;
  1112. ProjectTD[EditIndex][ETextDrawLetterX] = 0.0;
  1113. ProjectTD[EditIndex][ETextDrawLetterY] = 10.0;
  1114. ProjectTD[EditIndex][ETextDrawTextX] = 350.0;
  1115. ProjectTD[EditIndex][ETextDrawTextY] = 0.0;
  1116. ProjectTD[EditIndex][ETextDrawColor] = 0xFFFFFFFF;
  1117. ProjectTD[EditIndex][ETextDrawBGColor] = 0x000000FF;
  1118. ProjectTD[EditIndex][ETextDrawBoxColor] = 0x000000FF;
  1119.  
  1120. new string[128];
  1121. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}created.", EditIndex);
  1122. SendClientMessage(ProjectEditor, -1, string);
  1123. SelectTextDraw(playerid, -1);
  1124. IsPSel = true;
  1125. UpdateIcons(EditIndex);
  1126.  
  1127. if(EditMode == EDITMODE_MODELS)
  1128. {
  1129. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1130. EditMode = EDITMODE_NONE;
  1131. }
  1132. }
  1133. }
  1134. }
  1135. else
  1136. {
  1137. SelectTextDraw(ProjectEditor, -1);
  1138. IsPSel = true;
  1139. }
  1140. }
  1141. case DIALOG_MANAGE:
  1142. {
  1143. if(response)
  1144. {
  1145. if(BackManageDialog[listitem] == 1)
  1146. {
  1147. PageStart -= 10;
  1148. ShowManage(ProjectEditor);
  1149. return 1;
  1150. }
  1151.  
  1152. if(listitem == 10)
  1153. {
  1154. PageStart += 10;
  1155. ShowManage(ProjectEditor);
  1156. return 1;
  1157. }
  1158.  
  1159. new id = 0;
  1160. for(new i = PageStart; i < MAX_PROJECT_TEXTDRAWS; i ++)
  1161. {
  1162. if(ProjectTD[i][ItsFromTDE] == 1)
  1163. {
  1164. if(id == listitem)
  1165. {
  1166. EditIndex = i;
  1167. break;
  1168. }
  1169. id ++;
  1170. }
  1171. }
  1172. UpdateIcons(EditIndex);
  1173. new string[128];
  1174. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}selected.", EditIndex);
  1175. SendClientMessage(ProjectEditor, -1, string);
  1176. SelectTextDraw(ProjectEditor, -1);
  1177. IsPSel = true;
  1178. }
  1179. else
  1180. {
  1181. SelectTextDraw(ProjectEditor, -1);
  1182. IsPSel = true;
  1183. }
  1184. }
  1185. case DIALOG_EDITTEXT:
  1186. {
  1187. if(response)
  1188. {
  1189. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITTEXT, DIALOG_STYLE_INPUT, "TDEditor - Text", "Insert the TextDraw text:", ">>", "X");
  1190. format(ProjectTD[EditIndex][ETextDrawText], 800, "%s", inputtext);
  1191. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  1192. SelectTextDraw(ProjectEditor, -1);
  1193. IsPSel = true;
  1194. }
  1195. else
  1196. {
  1197. SelectTextDraw(ProjectEditor, -1);
  1198. IsPSel = true;
  1199. }
  1200. }
  1201. case DIALOG_MODELID:
  1202. {
  1203. if(response)
  1204. {
  1205. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "X");
  1206. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "X");
  1207. if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "X");
  1208. ProjectTD[EditIndex][ETextDrawModelid] = inputtext[0];
  1209. TextDrawSetPreviewModel(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawModelid]);
  1210. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) TextDrawSetPreviewVehCol(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawVehCol1], ProjectTD[EditIndex][ETextDrawVehCol2]);
  1211. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1212. SelectTextDraw(ProjectEditor, -1);
  1213. IsPSel = true;
  1214. }
  1215. else
  1216. {
  1217. SelectTextDraw(ProjectEditor, -1);
  1218. IsPSel = true;
  1219. }
  1220. }
  1221. case DIALOG_CONFIRMEDELETE:
  1222. {
  1223. if(response)
  1224. {
  1225. if(EditIndex == INVALID_INDEX_ID) return false;
  1226. new string[128];
  1227. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}removed.", EditIndex);
  1228. SendClientMessage(ProjectEditor, -1, string);
  1229.  
  1230. RemoveTextDrawTDE(EditIndex);
  1231. SelectTextDraw(ProjectEditor, -1);
  1232. IsPSel = true;
  1233. }
  1234. else
  1235. {
  1236. SelectTextDraw(ProjectEditor, -1);
  1237. IsPSel = true;
  1238. }
  1239. }
  1240. case DIALOG_SIZEX:
  1241. {
  1242. if(response)
  1243. {
  1244. new Float:SizeX;
  1245. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_SIZEX, DIALOG_STYLE_INPUT, "TDEditor - TextSizeX", "Enter the value of TextSizeX:\nNote: to put a decimal value use '.' instead of ',' for example: '18 .8 '", ">>", "X");
  1246. if(sscanf(inputtext, "f", SizeX)) return ShowPlayerDialog(ProjectEditor, DIALOG_SIZEX, DIALOG_STYLE_INPUT, "TDEditor - TextSizeX", "Enter the value of TextSizeX:\nNote: to put a decimal value use '.' instead of ',' for example: '18 .8 '", ">>", "X");
  1247. ProjectTD[EditIndex][ETextDrawTextX] = SizeX;
  1248. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  1249. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1250. ShowPlayerDialog(ProjectEditor, DIALOG_SIZEY, DIALOG_STYLE_INPUT, "TDEditor - TextSizeY", "Enter the value of TextSizeY:\nNote: to put a decimal value use '.' instead of ',' for example: '10 .2 '", ">>", "<<");
  1251. }
  1252. else
  1253. {
  1254. SelectTextDraw(ProjectEditor, -1);
  1255. IsPSel = true;
  1256. }
  1257. return 1;
  1258. }
  1259. case DIALOG_SIZEY:
  1260. {
  1261. if(response)
  1262. {
  1263. new Float:SizeY;
  1264. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_SIZEY, DIALOG_STYLE_INPUT, "TDEditor - TextSizeY", "Enter the value of TextSizeY:\nNote: to put a decimal value use '.' instead of ',' for example: '10 .2 '", ">>", "<<");
  1265. if(sscanf(inputtext, "f", SizeY)) return ShowPlayerDialog(ProjectEditor, DIALOG_SIZEY, DIALOG_STYLE_INPUT, "TDEditor - TextSizeY", "Enter the value of TextSizeY:\nNote: to put a decimal value use '.' instead of ',' for example: '10 .2 '", ">>", "<<");
  1266. ProjectTD[EditIndex][ETextDrawTextY] = SizeY;
  1267. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  1268. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1269. SelectTextDraw(ProjectEditor, -1);
  1270. IsPSel = true;
  1271. }
  1272. else ShowPlayerDialog(ProjectEditor, DIALOG_SIZEX, DIALOG_STYLE_INPUT, "TDEditor - TextSizeX", "Enter the value of TextSizeX:\nNote: to put a decimal value use '.' instead of ',' for example: '18 .8 '", ">>", "X");
  1273. }
  1274. case DIALOG_EDITOUTLINE:
  1275. {
  1276. if(response)
  1277. {
  1278. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Insert an integer value for the outline.\n\n0 to remove the outline.", ">>", "X");
  1279. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Insert an integer value for the outline.\n\n0 to remove the outline.", ">>", "X");
  1280. //if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Insert an integer value for the outline.\n\n0 to remove the outline.", ">>", "X");
  1281. ProjectTD[EditIndex][ETextDrawOutline] = inputtext[0];
  1282. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], inputtext[0]);
  1283. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1284. SelectTextDraw(ProjectEditor, -1);
  1285. IsPSel = true;
  1286. }
  1287. else
  1288. {
  1289. SelectTextDraw(ProjectEditor, -1);
  1290. IsPSel = true;
  1291. }
  1292. }
  1293. case DIALOG_MODELS:
  1294. {
  1295. if(response)
  1296. {
  1297. switch(listitem)
  1298. {
  1299. case 0: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_MLD, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "<<");
  1300. case 1: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RX, DIALOG_STYLE_INPUT, "TDEditor - RotX", "RotationX, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1301. case 2: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RY, DIALOG_STYLE_INPUT, "TDEditor - RotY", "RotationY, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1302. case 3: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RZ, DIALOG_STYLE_INPUT, "TDEditor - RotZ", "RotationZ, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1303. case 4: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_ZO, DIALOG_STYLE_INPUT, "TDEditor - Zoom", "Zoom, to use a decimal use ',' \nFor example '.': '1 .4 ':", ">>", "<<");
  1304. case 5: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C1, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 1", "Insert vehicle color 1:", ">>", "<<");
  1305. case 6: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C2, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 2", "Insert vehicle color 2:", ">>", "<<");
  1306. }
  1307. }
  1308. else
  1309. {
  1310. SelectTextDraw(ProjectEditor, -1);
  1311. IsPSel = true;
  1312. }
  1313. }
  1314. case DIALOG_MODELS_MLD:
  1315. {
  1316. if(response)
  1317. {
  1318. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_MLD, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "<<");
  1319. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_MLD, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "<<");
  1320. if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_MLD, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "<<");
  1321. ProjectTD[EditIndex][ETextDrawModelid] = inputtext[0];
  1322. TextDrawSetPreviewModel(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawModelid]);
  1323. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) TextDrawSetPreviewVehCol(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawVehCol1], ProjectTD[EditIndex][ETextDrawVehCol2]);
  1324. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1325. SelectTextDraw(ProjectEditor, -1);
  1326. IsPSel = true;
  1327. }
  1328. else
  1329. {
  1330. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1331. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1332. }
  1333. }
  1334. case DIALOG_MODELS_RX:
  1335. {
  1336. if(response)
  1337. {
  1338. new Float:coord;
  1339. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RX, DIALOG_STYLE_INPUT, "TDEditor - RotX", "RotationX, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1340. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RX, DIALOG_STYLE_INPUT, "TDEditor - RotX", "RotationX, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1341. ProjectTD[EditIndex][ETextDrawRotX] = coord;
  1342. TextDrawSetPreviewRot(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawRotX], ProjectTD[EditIndex][ETextDrawRotY], ProjectTD[EditIndex][ETextDrawRotZ], ProjectTD[EditIndex][ETextDrawZoom]);
  1343. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1344. SelectTextDraw(ProjectEditor, -1);
  1345. IsPSel = true;
  1346. }
  1347. else
  1348. {
  1349. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1350. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1351. }
  1352. }
  1353. case DIALOG_MODELS_RY:
  1354. {
  1355. if(response)
  1356. {
  1357. new Float:coord;
  1358. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RY, DIALOG_STYLE_INPUT, "TDEditor - RotY", "RotationY, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1359. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RY, DIALOG_STYLE_INPUT, "TDEditor - RotY", "RotationY, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1360. ProjectTD[EditIndex][ETextDrawRotY] = coord;
  1361. TextDrawSetPreviewRot(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawRotX], ProjectTD[EditIndex][ETextDrawRotY], ProjectTD[EditIndex][ETextDrawRotZ], ProjectTD[EditIndex][ETextDrawZoom]);
  1362. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1363. SelectTextDraw(ProjectEditor, -1);
  1364. IsPSel = true;
  1365. }
  1366. else
  1367. {
  1368. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1369. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1370. }
  1371. }
  1372. case DIALOG_MODELS_RZ:
  1373. {
  1374. if(response)
  1375. {
  1376. new Float:coord;
  1377. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RZ, DIALOG_STYLE_INPUT, "TDEditor - RotZ", "RotationZ, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1378. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RZ, DIALOG_STYLE_INPUT, "TDEditor - RotZ", "RotationZ, to use a decimal use ',' \nFor example '.': '83 .4 ':", ">>", "<<");
  1379. ProjectTD[EditIndex][ETextDrawRotZ] = coord;
  1380. TextDrawSetPreviewRot(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawRotX], ProjectTD[EditIndex][ETextDrawRotY], ProjectTD[EditIndex][ETextDrawRotZ], ProjectTD[EditIndex][ETextDrawZoom]);
  1381. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1382. SelectTextDraw(ProjectEditor, -1);
  1383. IsPSel = true;
  1384. }
  1385. else
  1386. {
  1387. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1388. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1389. }
  1390. }
  1391. case DIALOG_MODELS_ZO:
  1392. {
  1393. if(response)
  1394. {
  1395. new Float:coord;
  1396. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_ZO, DIALOG_STYLE_INPUT, "TDEditor - Zoom", "Zoom, to use a decimal use ',' \nFor example '.': '1 .4 ':", ">>", "<<");
  1397. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_ZO, DIALOG_STYLE_INPUT, "TDEditor - Zoom", "Zoom, to use a decimal use ',' \nFor example '.': '1 .4 ':", ">>", "<<");
  1398. ProjectTD[EditIndex][ETextDrawZoom] = coord;
  1399. TextDrawSetPreviewRot(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawRotX], ProjectTD[EditIndex][ETextDrawRotY], ProjectTD[EditIndex][ETextDrawRotZ], ProjectTD[EditIndex][ETextDrawZoom]);
  1400. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1401. SelectTextDraw(ProjectEditor, -1);
  1402. IsPSel = true;
  1403. }
  1404. else
  1405. {
  1406. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1407. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1408. }
  1409. }
  1410. case DIALOG_MODELS_C1:
  1411. {
  1412. if(response)
  1413. {
  1414. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C1, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 1", "Insert vehicle color 1:", ">>", "<<");
  1415. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C1, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 1", "Insert vehicle color 1:", ">>", "<<");
  1416. ProjectTD[EditIndex][ETextDrawVehCol1] = inputtext[0];
  1417. TextDrawSetPreviewVehCol(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawVehCol1], ProjectTD[EditIndex][ETextDrawVehCol2]);
  1418. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1419. SelectTextDraw(ProjectEditor, -1);
  1420. IsPSel = true;
  1421. }
  1422. else
  1423. {
  1424. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1425. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1426. }
  1427. }
  1428. case DIALOG_MODELS_C2:
  1429. {
  1430. if(response)
  1431. {
  1432. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C2, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 2", "Insert vehicle color 2:", ">>", "<<");
  1433. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C2, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 2", "Insert vehicle color 2:", ">>", "<<");
  1434. ProjectTD[EditIndex][ETextDrawVehCol2] = inputtext[0];
  1435. TextDrawSetPreviewVehCol(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawVehCol1], ProjectTD[EditIndex][ETextDrawVehCol2]);
  1436. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1437. SelectTextDraw(ProjectEditor, -1);
  1438. IsPSel = true;
  1439. }
  1440. else
  1441. {
  1442. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1443. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  1444. }
  1445. }
  1446. case DIALOG_EDITSHADOW:
  1447. {
  1448. if(response)
  1449. {
  1450. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITSHADOW, DIALOG_STYLE_INPUT, "TDEditor - Shadow", "Insert an integer value for the shadow.\n\n0 to remove the shadow.", ">>", "X");
  1451. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITSHADOW, DIALOG_STYLE_INPUT, "TDEditor - Shadow", "Insert an integer value for the shadow.\n\n0 to remove the shadow.", ">>", "X");
  1452. //if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Insert an integer value for the outline.\n\n0 to remove the outline.", ">>", "X");
  1453. ProjectTD[EditIndex][ETextDrawShadow] = inputtext[0];
  1454. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], inputtext[0]);
  1455. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1456. SelectTextDraw(ProjectEditor, -1);
  1457. IsPSel = true;
  1458. }
  1459. else
  1460. {
  1461. SelectTextDraw(ProjectEditor, -1);
  1462. IsPSel = true;
  1463. }
  1464. }
  1465. case DIALOG_LETTERX:
  1466. {
  1467. if(response)
  1468. {
  1469. new Float:LetterSizeX;
  1470. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_LETTERX, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeX", "Insert the value of LetteSizeX:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "X");
  1471. if(sscanf(inputtext, "f", LetterSizeX)) return ShowPlayerDialog(ProjectEditor, DIALOG_LETTERX, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeX", "Insert the value of LetteSizeX:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "X");
  1472. ProjectTD[EditIndex][ETextDrawLetterX] = LetterSizeX;
  1473. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  1474. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1475. ShowPlayerDialog(ProjectEditor, DIALOG_LETTERY, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeY", "Insert the value of LetteSizeY:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "<<");
  1476. }
  1477. else
  1478. {
  1479. SelectTextDraw(ProjectEditor, -1);
  1480. IsPSel = true;
  1481. }
  1482. }
  1483. case DIALOG_LETTERY:
  1484. {
  1485. if(response)
  1486. {
  1487. new Float:LetterSizeY;
  1488. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_LETTERY, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeY", "Insert the value of LetteSizeY:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "X");
  1489. if(sscanf(inputtext, "f", LetterSizeY)) return ShowPlayerDialog(ProjectEditor, DIALOG_LETTERY, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeY", "Insert the value of LetteSizeY:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "X");
  1490. ProjectTD[EditIndex][ETextDrawLetterY] = LetterSizeY;
  1491. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  1492. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1493. SelectTextDraw(ProjectEditor, -1);
  1494. IsPSel = true;
  1495. }
  1496. else ShowPlayerDialog(ProjectEditor, DIALOG_LETTERX, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeX", "Insert the value of LetteSizeX:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "X");
  1497. }
  1498. case DIALOG_POSX:
  1499. {
  1500. if(response)
  1501. {
  1502. new Float:LetterSizeX;
  1503. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_POSX, DIALOG_STYLE_INPUT, "TDEditor - PositionX", "Insert the value of PositionX:\nNote: to insert a decimal value use '.' instead of ',' for example '298.73'", ">>", "X");
  1504. if(sscanf(inputtext, "f", LetterSizeX)) return ShowPlayerDialog(ProjectEditor, DIALOG_POSX, DIALOG_STYLE_INPUT, "TDEditor - PositionX", "Insert the value of PositionX:\nNote: to insert a decimal value use '.' instead of ',' for example '298.73'", ">>", "X");
  1505. ProjectTD[EditIndex][ETextDrawPosX] = LetterSizeX;
  1506. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  1507. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1508. ShowPlayerDialog(ProjectEditor, DIALOG_POSY, DIALOG_STYLE_INPUT, "TDEditor - PositionY", "Insert the value of PositionY:\nNote: to insert a decimal value use '.' instead of ',' for example '32.3'", ">>", "X");
  1509. }
  1510. else
  1511. {
  1512. SelectTextDraw(ProjectEditor, -1);
  1513. IsPSel = true;
  1514. }
  1515. }
  1516. case DIALOG_POSY:
  1517. {
  1518. if(response)
  1519. {
  1520. new Float:LetterSizeY;
  1521. if(!strlen(inputtext)) return ShowPlayerDialog(ProjectEditor, DIALOG_POSY, DIALOG_STYLE_INPUT, "TDEditor - PositionY", "Insert the value of PositionY:\nNote: to insert a decimal value use '.' instead of ',' for example '32.3'", ">>", "X");
  1522. if(sscanf(inputtext, "f", LetterSizeY)) return ShowPlayerDialog(ProjectEditor, DIALOG_POSY, DIALOG_STYLE_INPUT, "TDEditor - PositionY", "Insert the value of PositionY:\nNote: to insert a decimal value use '.' instead of ',' for example '32.3'", ">>", "X");
  1523. ProjectTD[EditIndex][ETextDrawPosY] = LetterSizeY;
  1524. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  1525. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1526. SelectTextDraw(ProjectEditor, -1);
  1527. IsPSel = true;
  1528. }
  1529. else ShowPlayerDialog(ProjectEditor, DIALOG_POSX, DIALOG_STYLE_INPUT, "TDEditor - PositionX", "Insert the value of PositionX:\nNote: to insert a decimal value use '.' instead of ',' for example '298.73'", ">>", "X");
  1530. }
  1531. case DIALOG_MIRROR:
  1532. {
  1533. if(response)
  1534. {
  1535. new Index = GetAvailableIndex();
  1536. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  1537.  
  1538. new string[128];
  1539. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}was duplicated on TextDraw{e2b960} #%d.", EditIndex, Index);
  1540. SendClientMessage(ProjectEditor, -1, string);
  1541. DuplicateTextDraw(EditIndex, Index);
  1542.  
  1543. switch(listitem)
  1544. {
  1545. // Mirror X
  1546. case 0: ProjectTD[Index][ETextDrawPosX] = floatabs(ProjectTD[Index][ETextDrawPosX] - 640.0);
  1547. // Mirror Y
  1548. case 1: ProjectTD[Index][ETextDrawPosY] = floatabs(ProjectTD[Index][ETextDrawPosY] - 440.0);
  1549. // Mirror XY
  1550. case 2:
  1551. {
  1552. ProjectTD[Index][ETextDrawPosX] = floatabs(ProjectTD[Index][ETextDrawPosX] - 640.0);
  1553. ProjectTD[Index][ETextDrawPosY] = floatabs(ProjectTD[Index][ETextDrawPosY] - 440.0);
  1554. }
  1555. }
  1556. TextDrawSetPos(ProjectTD[Index][ETextDrawID], ProjectTD[Index][ETextDrawPosX], ProjectTD[Index][ETextDrawPosY]);
  1557. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  1558. }
  1559. SelectTextDraw(ProjectEditor, -1);
  1560. IsPSel = true;
  1561. }
  1562.  
  1563.  
  1564. case DIALOG_EDITCOLOR:
  1565. {
  1566. if(response)
  1567. {
  1568. switch(listitem)
  1569. {
  1570. case 0:
  1571. {
  1572. new str[1024];
  1573. Loop(0, sizeof(PremadeColors))
  1574. {
  1575. format(str, sizeof(str), "%s{%06x}%s\n", str, PremadeColors[c][0] >>> 8, PremadeColors[c][1]);
  1576. }
  1577. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+100, DIALOG_STYLE_LIST, "TDEditor - BG/Box/Color", str, ">>", "<<");
  1578. }
  1579. case 1: ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+101, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "Insert the color in HEX RRGGBBAA formar, for example: FF0000FF", ">>", "<<");
  1580. case 2: ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Red", ">>", "<<");
  1581. }
  1582. }
  1583. else
  1584. {
  1585. EditMode = EDITMODE_NONE;
  1586. SelectTextDraw(ProjectEditor, -1);
  1587. IsPSel = true;
  1588. }
  1589. }
  1590. case DIALOG_EDITCOLOR+100:
  1591. {
  1592. if(response)
  1593. {
  1594. switch(EditMode)
  1595. {
  1596. case EDITMODE_COLOR:
  1597. {
  1598. ProjectTD[EditIndex][ETextDrawColor] = PremadeColors[listitem][0];
  1599. TextDrawColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawColor]);
  1600. }
  1601. case EDITMODE_BGCOLOR:
  1602. {
  1603. ProjectTD[EditIndex][ETextDrawBGColor] = PremadeColors[listitem][0];
  1604. TextDrawBackgroundColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBGColor]);
  1605. }
  1606. case EDITMODE_BOXCOLOR:
  1607. {
  1608. ProjectTD[EditIndex][ETextDrawBoxColor] = PremadeColors[listitem][0];
  1609. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBoxColor]);
  1610. }
  1611. }
  1612. EditMode = EDITMODE_NONE;
  1613. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1614. SelectTextDraw(ProjectEditor, -1);
  1615. IsPSel = true;
  1616. }
  1617. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BG/Box/Color", "Main colors\nWrite the exact value (HEX)\nColor combinator (RGBA)", ">>", "X");
  1618. }
  1619. case DIALOG_EDITCOLOR+101:
  1620. {
  1621. if(response)
  1622. {
  1623. if(strlen(inputtext) < 8) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+101, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "Insert the color in HEX RRGGBBAA formar, for example: FF0000FF", ">>", "<<");
  1624.  
  1625. if(inputtext[0] == '0' && inputtext[1] == 'x') Colors[0] = HexToInt(inputtext[2]);
  1626. if(inputtext[0] == '#') Colors[0] = HexToInt(inputtext[1]);
  1627. else Colors[0] = HexToInt(inputtext);
  1628. switch(EditMode)
  1629. {
  1630. case EDITMODE_COLOR:
  1631. {
  1632. ProjectTD[EditIndex][ETextDrawColor] = Colors[0];
  1633. TextDrawColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawColor]);
  1634. }
  1635. case EDITMODE_BGCOLOR:
  1636. {
  1637. ProjectTD[EditIndex][ETextDrawBGColor] = Colors[0];
  1638. TextDrawBackgroundColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBGColor]);
  1639. }
  1640. case EDITMODE_BOXCOLOR:
  1641. {
  1642. ProjectTD[EditIndex][ETextDrawBoxColor] = Colors[0];
  1643. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBoxColor]);
  1644. }
  1645. }
  1646. EditMode = EDITMODE_NONE;
  1647. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1648. SelectTextDraw(ProjectEditor, -1);
  1649. IsPSel = true;
  1650. }
  1651. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BG/Box/Color", "Main colors\nWrite the exact value (HEX)\nColor combinator (RGBA)", ">>", "X");
  1652. }
  1653. case DIALOG_EDITCOLOR+102:
  1654. {
  1655. if(response)
  1656. {
  1657. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Red", ">>", "<<");
  1658. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Red", ">>", "<<");
  1659. Colors[0] = inputtext[0];
  1660. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Green", ">>", "<<");
  1661. }
  1662. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BG/Box/Color", "Main colors\nWrite the exact value (HEX)\nColor combinator (RGBA)", ">>", "X");
  1663. }
  1664. case DIALOG_EDITCOLOR+103:
  1665. {
  1666. if(response)
  1667. {
  1668. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Green", ">>", "X");
  1669. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Green", ">>", "X");
  1670. Colors[1] = inputtext[0];
  1671. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+104, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Blue", ">>", "<<");
  1672. }
  1673. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Red", ">>", "<<");
  1674. }
  1675. case DIALOG_EDITCOLOR+104:
  1676. {
  1677. if(response)
  1678. {
  1679. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+104, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Blue", ">>", "X");
  1680. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+104, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Blue", ">>", "X");
  1681. Colors[2] = inputtext[0];
  1682. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+105, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Alpha", ">>", "<<");
  1683. }
  1684. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Green", ">>", "<<");
  1685. }
  1686. case DIALOG_EDITCOLOR+105:
  1687. {
  1688. if(response)
  1689. {
  1690. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+105, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Alpha", ">>", "<<");
  1691. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+105, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Alpha", ">>", "<<");
  1692. Colors[3] = inputtext[0];
  1693. new color = RGB(Colors[0], Colors[1], Colors[2], Colors[3]);
  1694. switch(EditMode)
  1695. {
  1696. case EDITMODE_COLOR:
  1697. {
  1698. ProjectTD[EditIndex][ETextDrawColor] = color;
  1699. TextDrawColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawColor]);
  1700. }
  1701. case EDITMODE_BGCOLOR:
  1702. {
  1703. ProjectTD[EditIndex][ETextDrawBGColor] = color;
  1704. TextDrawBackgroundColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBGColor]);
  1705. }
  1706. case EDITMODE_BOXCOLOR:
  1707. {
  1708. ProjectTD[EditIndex][ETextDrawBoxColor] = color;
  1709. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBoxColor]);
  1710. }
  1711. }
  1712. EditMode = EDITMODE_NONE;
  1713. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  1714. SelectTextDraw(ProjectEditor, -1);
  1715. IsPSel = true;
  1716. }
  1717. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+104, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "0 to 255, enter the amount of Blue", ">>", "<<");
  1718. }
  1719. }
  1720. return false;
  1721. }
  1722.  
  1723. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  1724. {
  1725. if(clickedid == Text:INVALID_TEXT_DRAW)
  1726. {
  1727. if(!EditorEnabled && ProjectEditor == -1)
  1728. {
  1729. if(!IsPSel) return false;
  1730. TogglePlayerControllable(playerid, true);
  1731. TextDrawHideForPlayer(playerid, TDELOGO);
  1732. DestroyMenuTextDraws();
  1733. MouseCursor = false;
  1734. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}TDEditor closed.");
  1735. return 1;
  1736. }
  1737. }
  1738. if(clickedid == TDELOGO)
  1739. {
  1740. if(!IsPSel) return false;
  1741. IsPSel = false;
  1742. TextDrawHideForPlayer(playerid, TDELOGO);
  1743. CancelSelectTextDraw(playerid);
  1744. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Create a new project\nLoad a project\nClose project", ">>", "X");
  1745. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}TDEditor started, if you need help you can use /tde help...");
  1746. return 1;
  1747. }
  1748.  
  1749. if(!EditorEnabled || ProjectEditor != playerid) return false;
  1750. if(EditMode == EDITMODE_ADJUST) return false;
  1751. if(clickedid == Text:INVALID_TEXT_DRAW)
  1752. {
  1753. if(!IsPSel) return false;
  1754. if(MouseCursor) SelectTextDraw(playerid, -1);
  1755. return 1;
  1756. }
  1757. if(clickedid == TDE_Menu[1])
  1758. {
  1759. if(EditIndex == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "Error");
  1760. if(EditMode == EDITMODE_COLOR || EditMode == EDITMODE_BGCOLOR || EditMode == EDITMODE_BOXCOLOR || EditMode == EDITMODE_MODELS)
  1761. {
  1762. if(!CursorX && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  1763. if(CursorX == (ScreenWidth - 1) && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  1764. if(CursorY == (ScreenHeight - 1) && (0 < CursorX < (ScreenWidth - 1)) ) return 1;
  1765. }
  1766. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1767. EditMode = EDITMODE_NONE;
  1768. IsPSel = false;
  1769. CancelSelectTextDraw(ProjectEditor);
  1770. //CheckManageDialog();
  1771. new d, c, e = -1, dialog[310], str[31];
  1772. for (d = PageStart; d < MAX_PROJECT_TEXTDRAWS; d++)
  1773. {
  1774. if(ProjectTD[d][ItsFromTDE] == 1)
  1775. {
  1776. e = 1;
  1777. BackManageDialog[c] = 0;
  1778. c ++;
  1779. if(c == 11)
  1780. {
  1781. if(PageStart >= 10)
  1782. {
  1783. format(str, 30, ">>\n");
  1784. strcat(dialog, str);
  1785. }
  1786. else
  1787. {
  1788. format(str, 30, ">>");
  1789. strcat(dialog, str);
  1790. }
  1791. break;
  1792. }
  1793. if(TextDrawGetFont(ProjectTD[d][ETextDrawID]) == 5) format(str, 31, "%s(%i)ModelPreview: %d\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawModelid]);
  1794. else format(str, 31, "%s(%i)%s\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawText]);
  1795. if(strlen(str) >= 30)
  1796. {
  1797. strdel(str, 28, 30);
  1798. strcat(str, "\n");
  1799. }
  1800. strcat(dialog, str);
  1801. }
  1802. }
  1803. if(PageStart >= 10)
  1804. {
  1805. BackManageDialog[c] = 1;
  1806. format(str, 30, "<<");
  1807. strcat(dialog, str);
  1808. }
  1809. if(e == -1)
  1810. {
  1811.  
  1812. new d1, c1, e1 = -1, dialog1[310], str1[31], DC = PageStart - 10;
  1813. for (d1 = DC; d1 < DC+11; d1++)
  1814. {
  1815. if(ProjectTD[d1][ItsFromTDE] == 1)
  1816. {
  1817. e1 = 1;
  1818.  
  1819. BackManageDialog[c] = 0;
  1820. c1 ++;
  1821. if(c1 == 11)
  1822. {
  1823. if(DC >= 10)
  1824. {
  1825. format(str1, 30, ">>\n");
  1826. strcat(dialog1, str1);
  1827. }
  1828. else
  1829. {
  1830. format(str1, 30, ">>");
  1831. strcat(dialog1, str1);
  1832. }
  1833. break;
  1834. }
  1835. if(TextDrawGetFont(ProjectTD[d][ETextDrawID]) == 5) format(str1, 31, "%s(%i)ModelPreview: %d\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawModelid]);
  1836. else format(str1, 31, "%s(%i)%s\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawText]);
  1837.  
  1838. if(strlen(str1) >= 30)
  1839. {
  1840. strdel(str1, 28, 30);
  1841. strcat(str1, "\n");
  1842. }
  1843. strcat(dialog1, str1);
  1844. }
  1845. }
  1846. if(DC >= 10)
  1847. {
  1848. BackManageDialog[c1] = 1;
  1849. format(str1, 30, "<<");
  1850. strcat(dialog1, str1);
  1851. }
  1852. if(e1 == -1) return SelectTextDraw(ProjectEditor, -1), IsPSel = true, SendClientMessage(ProjectEditor, -1, "Error");
  1853. PageStart -= 10;
  1854. ShowPlayerDialog(ProjectEditor, DIALOG_MANAGE, DIALOG_STYLE_LIST, "TDEditor - Manage", dialog1, ">>", "X");
  1855. IsPSel = false;
  1856. return 1;
  1857. }
  1858. ShowPlayerDialog(ProjectEditor, DIALOG_MANAGE, DIALOG_STYLE_LIST, "TDEditor - Manage", dialog, ">>", "X");
  1859. IsPSel = false;
  1860. }
  1861. if(clickedid == TDE_Menu[2])
  1862. {
  1863. new Index = GetAvailableIndex();
  1864. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  1865. EditIndex = Index;
  1866.  
  1867. if(EditIndex == 0)
  1868. {
  1869. Loop(1, sizeof(TDE_Menu))
  1870. {
  1871. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  1872. TextDrawSetSelectable(TDE_Menu[c], true);
  1873. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  1874. }
  1875. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  1876. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  1877. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  1878. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  1879. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  1880. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  1881. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  1882. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  1883. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  1884. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  1885. }
  1886.  
  1887. ProjectTD[Index][ETextDrawID] = TextDrawCreate(290.0, 190.0, "TDEditor");
  1888. TextDrawLetterSize(ProjectTD[Index][ETextDrawID], 0.4, 1.6);
  1889. TextDrawAlignment(ProjectTD[Index][ETextDrawID], 1);
  1890. TextDrawColor(ProjectTD[Index][ETextDrawID], -1);
  1891. TextDrawUseBox(ProjectTD[Index][ETextDrawID], 0);
  1892. TextDrawSetShadow(ProjectTD[Index][ETextDrawID], 0);
  1893. TextDrawSetOutline(ProjectTD[Index][ETextDrawID], 0);
  1894. TextDrawBackgroundColor(ProjectTD[Index][ETextDrawID], 255);
  1895. TextDrawFont(ProjectTD[Index][ETextDrawID], 1);
  1896. TextDrawSetProportional(ProjectTD[Index][ETextDrawID], 1);
  1897. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  1898.  
  1899.  
  1900. ProjectTD[EditIndex][ItsFromTDE] = 1;
  1901. format(ProjectTD[EditIndex][ETextDrawText], 800, "TDEditor");
  1902. ProjectTD[EditIndex][ETextDrawPosX] = 290.0;
  1903. ProjectTD[EditIndex][ETextDrawPosY] = 190.0;
  1904. ProjectTD[EditIndex][ETextDrawLetterX] = 0.4;
  1905. ProjectTD[EditIndex][ETextDrawLetterY] = 1.6;
  1906. ProjectTD[EditIndex][ETextDrawColor] = 0xFFFFFFFF;
  1907. ProjectTD[EditIndex][ETextDrawBGColor] = 0x000000FF;
  1908. ProjectTD[EditIndex][ETextDrawBoxColor] = 0x000000FF;
  1909.  
  1910. new string[128];
  1911. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}created.", EditIndex);
  1912. SendClientMessage(ProjectEditor, -1, string);
  1913. UpdateIcons(EditIndex);
  1914.  
  1915. if(EditMode == EDITMODE_MODELS)
  1916. {
  1917. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1918. EditMode = EDITMODE_NONE;
  1919. }
  1920. return 1;
  1921. }
  1922. if(EditIndex == INVALID_INDEX_ID) return false;
  1923. if(clickedid == TDE_Menu[3])
  1924. {
  1925. IsPSel = false;
  1926. CancelSelectTextDraw(ProjectEditor);
  1927. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1928. EditMode = EDITMODE_NONE;
  1929. ShowPlayerDialog(ProjectEditor, DIALOG_CONFIRMEDELETE, DIALOG_STYLE_MSGBOX, "TDEditor - Remove TextDraw", "Are you sure you want to delete this TextDraw?", "Remove", "X");
  1930. IsPSel = false;
  1931. return 1;
  1932. }
  1933. if(clickedid == TDE_Menu[4])
  1934. {
  1935. ExportProject();
  1936. return 1;
  1937. }
  1938. if(clickedid == TDE_Menu[8])
  1939. {
  1940. new Index = GetAvailableIndex();
  1941. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  1942. DuplicateTextDraw(EditIndex, Index);
  1943.  
  1944. new string[128];
  1945. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}was duplicated on TextDraw{e2b960} #%d.", EditIndex, Index);
  1946. SendClientMessage(ProjectEditor, -1, string);
  1947. EditIndex = Index;
  1948. return 1;
  1949. }
  1950. if(clickedid == TDE_Menu[9])
  1951. {
  1952. if(EditMode != EDITMODE_POSITION)
  1953. {
  1954. TextDrawSetString(TD_Status, "EditMode: EDITMODE_POSITION");
  1955. EditMode = EDITMODE_POSITION;
  1956. }
  1957. else TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE"), EditMode = EDITMODE_NONE;
  1958. return 1;
  1959. }
  1960. if(clickedid == TDE_Menu[10])
  1961. {
  1962. if(EditMode != EDITMODE_SIZE)
  1963. {
  1964. TextDrawSetString(TD_Status, "EditMode: EDITMODE_SIZE");
  1965. EditMode = EDITMODE_SIZE;
  1966. }
  1967. else TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE"), EditMode = EDITMODE_NONE;
  1968. return 1;
  1969. }
  1970. if(clickedid == TDE_Menu[11] || clickedid == TDE_Menu[35])
  1971. {
  1972. /*if((GetTickCount() - DoubleClickCount) <= 180)
  1973. {
  1974. ShowPlayerDialog(ProjectEditor, DIALOG_EDITTEXT, DIALOG_STYLE_INPUT, "TDEditor - Español", "Introduzca el texto aquí:", ">>", "X");
  1975. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1976. EditMode = EDITMODE_NONE;
  1977. IsPSel = false;
  1978. CancelSelectTextDraw(ProjectEditor);
  1979. return 1;
  1980. }
  1981. DoubleClickCount = GetTickCount();
  1982. */
  1983. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5)
  1984. {
  1985. IsPSel = false;
  1986. CancelSelectTextDraw(ProjectEditor);
  1987. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1988. EditMode = EDITMODE_NONE;
  1989. ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Insert the ModelID:", ">>", "X");
  1990. return 1;
  1991. }
  1992. if(EditMode != EDITMODE_TEXT)
  1993. {
  1994. TextDrawSetString(TD_Status, "EditMode: EDITMODE_TEXT");
  1995. EditMode = EDITMODE_TEXT;
  1996. }
  1997. else TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE"), EditMode = EDITMODE_NONE;
  1998. return 1;
  1999. }
  2000. if(clickedid == TDE_Menu[14])
  2001. {
  2002. if(EditMode != EDITMODE_COLOR)
  2003. {
  2004. TextDrawSetString(TD_Status, "EditMode: EDITMODE_COLOR");
  2005. EditMode = EDITMODE_COLOR;
  2006. }
  2007. else
  2008. {
  2009. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2010. EditMode = EDITMODE_NONE;
  2011. }
  2012. return 1;
  2013. }
  2014. if(clickedid == TDE_Menu[15])
  2015. {
  2016. if(EditMode != EDITMODE_BGCOLOR)
  2017. {
  2018. TextDrawSetString(TD_Status, "EditMode: EDITMODE_BGCOLOR");
  2019. EditMode = EDITMODE_BGCOLOR;
  2020. }
  2021. else
  2022. {
  2023. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2024. EditMode = EDITMODE_NONE;
  2025. }
  2026. return 1;
  2027. }
  2028. if(clickedid == TDE_Menu[32])
  2029. {
  2030. if(EditMode != EDITMODE_BOXCOLOR)
  2031. {
  2032. TextDrawSetString(TD_Status, "EditMode: EDITMODE_BOXCOLOR");
  2033. EditMode = EDITMODE_BOXCOLOR;
  2034. }
  2035. else
  2036. {
  2037. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2038. EditMode = EDITMODE_NONE;
  2039. }
  2040. return 1;
  2041. }
  2042. if(clickedid == TDE_Menu[16])
  2043. {
  2044. if(EditMode != EDITMODE_LETTERSIZE)
  2045. {
  2046. TextDrawSetString(TD_Status, "EditMode: EDITMODE_LETTERSIZE");
  2047. EditMode = EDITMODE_LETTERSIZE;
  2048. }
  2049. else
  2050. {
  2051. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2052. EditMode = EDITMODE_NONE;
  2053. }
  2054. return 1;
  2055. }
  2056. if(clickedid == TDE_Menu[17])
  2057. {
  2058. if(EditMode != EDITMODE_OUTLINE)
  2059. {
  2060. TextDrawSetString(TD_Status, "EditMode: EDITMODE_OUTLINE");
  2061. EditMode = EDITMODE_OUTLINE;
  2062. }
  2063. else
  2064. {
  2065. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2066. EditMode = EDITMODE_NONE;
  2067. }
  2068. return 1;
  2069. }
  2070. if(clickedid == TDE_Menu[18])
  2071. {
  2072. if(EditMode != EDITMODE_SHADOW)
  2073. {
  2074. TextDrawSetString(TD_Status, "EditMode: EDITMODE_SHADOW");
  2075. EditMode = EDITMODE_SHADOW;
  2076. }
  2077. else
  2078. {
  2079. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2080. EditMode = EDITMODE_NONE;
  2081. }
  2082. return 1;
  2083. }
  2084. if(clickedid == TDE_Menu[12] || clickedid == TDE_Menu[13] || clickedid == TDE_Menu[24] || clickedid == TDE_Menu[25] || clickedid == TDE_Menu[26] || clickedid == TDE_Menu[27])
  2085. {
  2086. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5)
  2087. {
  2088. if(EditMode != EDITMODE_MODELS)
  2089. {
  2090. Colors[0] = floatround(ProjectTD[EditIndex][ETextDrawRotX]);
  2091. Colors[1] = floatround(ProjectTD[EditIndex][ETextDrawRotY]);
  2092. Colors[2] = floatround(ProjectTD[EditIndex][ETextDrawRotZ]);
  2093. Zoom = ProjectTD[EditIndex][ETextDrawZoom];
  2094.  
  2095. TextDrawSetString(TD_Status, "EditMode: EDITMODE_MODELS");
  2096. EditMode = EDITMODE_MODELS;
  2097. }
  2098. else
  2099. {
  2100. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2101. EditMode = EDITMODE_NONE;
  2102. }
  2103. return 1;
  2104. }
  2105. new font = TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]);
  2106. switch(font)
  2107. {
  2108. case 0:
  2109. {
  2110. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 1);
  2111. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2112. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  2113. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[25]);
  2114. }
  2115. case 1:
  2116. {
  2117. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 2);
  2118. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2119. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  2120. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[26]);
  2121. }
  2122. case 2:
  2123. {
  2124. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 3);
  2125. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2126. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  2127. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[27]);
  2128. }
  2129. case 3:
  2130. {
  2131. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 0);
  2132. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2133. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  2134. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[24]);
  2135. }
  2136. }
  2137. return 1;
  2138. }
  2139. if(clickedid == TDE_Menu[19] || clickedid == TDE_Menu[20] || clickedid == TDE_Menu[34])
  2140. {
  2141. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  2142. {
  2143. TextDrawUseBox(ProjectTD[EditIndex][ETextDrawID], 0);
  2144. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], 0);
  2145. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2146. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  2147. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  2148. }
  2149. else
  2150. {
  2151. TextDrawUseBox(ProjectTD[EditIndex][ETextDrawID], 1);
  2152. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  2153. if(ProjectTD[EditIndex][ETextDrawTextX] == 0.0)
  2154. {
  2155. switch(alignment)
  2156. {
  2157. case 1: ProjectTD[EditIndex][ETextDrawTextX] = floatadd(ProjectTD[EditIndex][ETextDrawPosX], 5.0);
  2158. case 2: ProjectTD[EditIndex][ETextDrawTextX] = 10.0;
  2159. case 3: ProjectTD[EditIndex][ETextDrawTextX] = floatadd(ProjectTD[EditIndex][ETextDrawPosX], 5.0); //SA-MP BUG?
  2160. }
  2161. }
  2162. if(alignment == 2) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  2163. else TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2164. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], 255);
  2165. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2166. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[19]);
  2167. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  2168. }
  2169. return 1;
  2170. }
  2171. if(clickedid == TDE_Menu[21] || clickedid == TDE_Menu[22] || clickedid == TDE_Menu[23])
  2172. {
  2173. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  2174. switch(alignment)
  2175. {
  2176. case 1:
  2177. {
  2178. TextDrawAlignment(ProjectTD[EditIndex][ETextDrawID], 2);
  2179. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID])) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  2180. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2181. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  2182. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  2183. }
  2184. case 2:
  2185. {
  2186. TextDrawAlignment(ProjectTD[EditIndex][ETextDrawID], 3);
  2187. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID])) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2188. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2189. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  2190. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  2191. }
  2192. case 3:
  2193. {
  2194. TextDrawAlignment(ProjectTD[EditIndex][ETextDrawID], 1);
  2195. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID])) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2196. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2197. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  2198. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  2199. }
  2200. }
  2201. return 1;
  2202. }
  2203. if(clickedid == TDE_Menu[28] || clickedid == TDE_Menu[29])
  2204. {
  2205. if(ProjectTD[EditIndex][ETextDrawSelectable] == 0)
  2206. {
  2207. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[28]);
  2208. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[29]);
  2209. ProjectTD[EditIndex][ETextDrawSelectable] = 1;
  2210. }
  2211. else
  2212. {
  2213. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  2214. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[28]);
  2215. ProjectTD[EditIndex][ETextDrawSelectable] = 0;
  2216. }
  2217. return 1;
  2218. }
  2219. if(clickedid == TDE_Menu[5] || clickedid == TDE_Menu[33])
  2220. {
  2221. if(ProjectTD[EditIndex][ETextDrawType] == 0)
  2222. {
  2223. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[5]);
  2224. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[33]);
  2225. ProjectTD[EditIndex][ETextDrawType] = 1;
  2226. }
  2227. else
  2228. {
  2229. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  2230. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[5]);
  2231. ProjectTD[EditIndex][ETextDrawType] = 0;
  2232. }
  2233. return 1;
  2234. }
  2235. if(clickedid == TDE_Menu[30] || clickedid == TDE_Menu[31])
  2236. {
  2237. if(EditMode == EDITMODE_COLOR || EditMode == EDITMODE_BGCOLOR || EditMode == EDITMODE_BOXCOLOR || EditMode == EDITMODE_MODELS)
  2238. {
  2239. if(!CursorX && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  2240. if(CursorX == (ScreenWidth - 1) && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  2241. if(CursorY == (ScreenHeight - 1) && (0 < CursorX < (ScreenWidth - 1)) ) return 1;
  2242. }
  2243. new proportional = TextDrawIsProportional(ProjectTD[EditIndex][ETextDrawID]);
  2244. if(proportional == 0)
  2245. {
  2246. TextDrawSetProportional(ProjectTD[EditIndex][ETextDrawID], 1);
  2247. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[30]);
  2248. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  2249. }
  2250. else
  2251. {
  2252. TextDrawSetProportional(ProjectTD[EditIndex][ETextDrawID], 0);
  2253. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[31]);
  2254. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  2255. }
  2256. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2257. return 1;
  2258. }
  2259. return false;
  2260. }
  2261.  
  2262. stock ActivateCallback_OnAnyKeyDown()
  2263. {
  2264. ActivateAnyKeyVariable(1);
  2265. ActivateAnyKey();
  2266. return 1;
  2267. }
  2268.  
  2269. public OnAnyKeyDown(key)
  2270. {
  2271. printf("%d %c", key, key);
  2272. return 1;
  2273. }
  2274.  
  2275. TDE_CALLBACK:OnEditorUpdate(playerid)
  2276. {
  2277. if(IsPlayerPaused(playerid)) return 0;
  2278. for(new c = 0; c < sizeof(VirtualKeys); c++)
  2279. {
  2280. if(GetVirtualKeyState(VirtualKeys[c][KEY_CODE]) & 0x8000)
  2281. {
  2282. if(!VirtualKeys[c][KEY_PRESSED])
  2283. {
  2284. CallLocalFunction("OnVirtualKeyDown", "id", playerid, VirtualKeys[c][KEY_CODE]);
  2285. VirtualKeys[c][KEY_PRESSED] = true;
  2286. }
  2287. }
  2288. else if(VirtualKeys[c][KEY_PRESSED])
  2289. {
  2290. CallLocalFunction("OnVirtualKeyRelease", "id", playerid, VirtualKeys[c][KEY_CODE]);
  2291. VirtualKeys[c][KEY_PRESSED] = false;
  2292. }
  2293. }
  2294.  
  2295. GetScreenSize(ScreenWidth, ScreenHeight);
  2296. GetMousePos(CursorX, CursorY);
  2297.  
  2298. if(CursorOX != CursorX || CursorOY != CursorY)
  2299. {
  2300. CallLocalFunction("OnCursorPositionChange", "idd", playerid, CursorX, CursorY);
  2301. CursorOX = CursorX;
  2302. CursorOY = CursorY;
  2303. }
  2304. return 1;
  2305. }
  2306.  
  2307. TDE_CALLBACK:OnCursorPositionChange(playerid, NewX, NewY)
  2308. {
  2309. if(!EditorEnabled || ProjectEditor != playerid) return false;
  2310. if(TDEHTimer == 1)
  2311. {
  2312. TextDrawSetPos(TDEditor_Helper[0], ((floatdiv(float(NewX), ScreenWidth) * 640.0)+0.15), -6.000000);
  2313. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, (((floatdiv(float(NewY), ScreenHeight) * 448.0)/9.0)+0.4));
  2314. TextDrawSetPos(TDEditor_Helper[1], ((floatdiv(float(NewX), ScreenWidth) * 640.0)+1.0), (floatdiv(float(NewY), ScreenHeight) * 448.0));
  2315.  
  2316. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2317. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2318. }
  2319. if(EditMode == EDITMODE_ADJUST)
  2320. {
  2321. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2322. {
  2323. OffsetZ -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0;
  2324. TextDrawSetPos(TDE_Menu[0], 0.0, OffsetZ - 2.0);
  2325. TextDrawShowForPlayer(playerid, TDE_Menu[0]);
  2326. if(OffsetZ < 10.0) TextDrawSetPos(TD_Status, 2.0, OffsetZ+35.14);
  2327. else TextDrawSetPos(TD_Status, 2.0, OffsetZ-10.14);
  2328. TextDrawShowForPlayer(playerid, TD_Status);
  2329. return 1;
  2330. }
  2331. return 1;
  2332. }
  2333.  
  2334. if(EditIndex == INVALID_INDEX_ID) return false;
  2335. switch(EditMode)
  2336. {
  2337. case EDITMODE_POSITION:
  2338. {
  2339. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2340. {
  2341. ProjectTD[EditIndex][ETextDrawPosX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0;
  2342. ProjectTD[EditIndex][ETextDrawPosY] -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0;
  2343.  
  2344. if(PixelLock)
  2345. {
  2346. ProjectTD[EditIndex][ETextDrawPosX] = float(floatround(ProjectTD[EditIndex][ETextDrawPosX], floatround_round));
  2347. ProjectTD[EditIndex][ETextDrawPosY] = float(floatround(ProjectTD[EditIndex][ETextDrawPosY], floatround_round));
  2348. }
  2349.  
  2350. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  2351.  
  2352. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  2353. {
  2354. if(TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]) != 2)
  2355. {
  2356. ProjectTD[EditIndex][ETextDrawTextX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0;
  2357. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2358. }
  2359. }
  2360. new SpeedSTR[64];
  2361. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  2362. ShowInfoDraw(SpeedSTR, 1000);
  2363.  
  2364. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2365. }
  2366. }
  2367. case EDITMODE_SIZE:
  2368. {
  2369. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2370. {
  2371. ProjectTD[EditIndex][ETextDrawTextX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0;
  2372. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) ProjectTD[EditIndex][ETextDrawTextY] -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0;
  2373. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0)
  2374. {
  2375. ProjectTD[EditIndex][ETextDrawLetterY] -= (floatdiv(floatsub(CursorOY, NewY), ScreenWidth) * 640.0)/10.0;
  2376. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  2377. }
  2378. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  2379. switch(alignment)
  2380. {
  2381. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2382. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  2383. }
  2384. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2385. }
  2386. }
  2387. case EDITMODE_MODELS:
  2388. {
  2389. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2390. {
  2391. switch(ColorMode)
  2392. {
  2393. case COLORMODE_RED: Colors[0] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 360.0 );
  2394. case COLORMODE_GREEN: Colors[1] = floatround( floatdiv((NewX - 1), (ScreenWidth - 2)) * 360.0 );
  2395. case COLORMODE_BLUE: Colors[2] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 360.0 );
  2396. case COLORMODE_ALPHA: Zoom = floatdiv((NewX - 1), (ScreenWidth - 2)) * 10.0;
  2397. }
  2398. new str[64];
  2399. format(str, sizeof str, "~n~RX%i~n~RY%i~n~RZ%i~n~Z%.2f", Colors[0], Colors[1], Colors[2], Zoom);
  2400. ShowInfoDraw(str, 1000);
  2401. ProjectTD[EditIndex][ETextDrawRotX] = float(Colors[0]);
  2402. ProjectTD[EditIndex][ETextDrawRotY] = float(Colors[1]);
  2403. ProjectTD[EditIndex][ETextDrawRotZ] = float(Colors[2]);
  2404. ProjectTD[EditIndex][ETextDrawZoom] = Zoom;
  2405. TextDrawSetPreviewRot(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawRotX], ProjectTD[EditIndex][ETextDrawRotY], ProjectTD[EditIndex][ETextDrawRotZ], ProjectTD[EditIndex][ETextDrawZoom]);
  2406. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2407. }
  2408. }
  2409. case EDITMODE_COLOR, EDITMODE_BGCOLOR, EDITMODE_BOXCOLOR:
  2410. {
  2411. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2412. {
  2413.  
  2414. if(EditMode == EDITMODE_COLOR) HexToRGBA(ProjectTD[EditIndex][ETextDrawColor], Colors[0], Colors[1], Colors[2], Colors[3]);
  2415. else if(EditMode == EDITMODE_BGCOLOR) HexToRGBA(ProjectTD[EditIndex][ETextDrawBGColor], Colors[0], Colors[1], Colors[2], Colors[3]);
  2416. else if(EditMode == EDITMODE_BOXCOLOR) HexToRGBA(ProjectTD[EditIndex][ETextDrawBoxColor], Colors[0], Colors[1], Colors[2], Colors[3]);
  2417. switch(ColorMode)
  2418. {
  2419. case COLORMODE_RED: Colors[0] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 255.0 );
  2420. case COLORMODE_GREEN: Colors[1] = floatround( floatdiv((NewX - 1), (ScreenWidth - 2)) * 255.0 );
  2421. case COLORMODE_BLUE: Colors[2] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 255.0 );
  2422. case COLORMODE_ALPHA: Colors[3] = floatround( floatdiv((NewX - 1), (ScreenWidth - 2)) * 255.0 );
  2423. }
  2424. new str[64];
  2425. format(str, sizeof(str), "~n~~r~R%i~n~~g~G%i~n~~b~B%i~n~~w~A%i", Colors[0], Colors[1], Colors[2], Colors[3]);
  2426. ShowInfoDraw(str, 1000);
  2427. switch(EditMode)
  2428. {
  2429. case EDITMODE_COLOR:
  2430. {
  2431. ProjectTD[EditIndex][ETextDrawColor] = RGBAToHex(Colors[0], Colors[1], Colors[2], Colors[3]);
  2432. TextDrawColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawColor]);
  2433. }
  2434. case EDITMODE_BGCOLOR:
  2435. {
  2436. ProjectTD[EditIndex][ETextDrawBGColor] = RGBAToHex(Colors[0], Colors[1], Colors[2], Colors[3]);
  2437. TextDrawBackgroundColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBGColor]);
  2438. }
  2439. case EDITMODE_BOXCOLOR:
  2440. {
  2441. ProjectTD[EditIndex][ETextDrawBoxColor] = RGBAToHex(Colors[0], Colors[1], Colors[2], Colors[3]);
  2442. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBoxColor]);
  2443. }
  2444. }
  2445. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2446. }
  2447. }
  2448. case EDITMODE_OUTLINE:
  2449. {
  2450. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2451. {
  2452. ProjectTD[EditIndex][ETextDrawOutline] -= floatround(floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0);
  2453. ProjectTD[EditIndex][ETextDrawOutline] -= floatround(floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0);
  2454. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2455. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2456. }
  2457. }
  2458. case EDITMODE_SHADOW:
  2459. {
  2460. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2461. {
  2462. ProjectTD[EditIndex][ETextDrawShadow] -= floatround(floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0);
  2463. ProjectTD[EditIndex][ETextDrawShadow] -= floatround(floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0);
  2464. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2465. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2466. }
  2467. }
  2468. case EDITMODE_LETTERSIZE:
  2469. {
  2470. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2471. {
  2472. ProjectTD[EditIndex][ETextDrawLetterX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0 * 0.001;
  2473. ProjectTD[EditIndex][ETextDrawLetterY] -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0 * 0.01;
  2474. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  2475. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2476. }
  2477. }
  2478. }
  2479. return true;
  2480. }
  2481.  
  2482. TDE_CALLBACK:OnVirtualKeyRelease(playerid, key)
  2483. {
  2484. if(!EditorEnabled || ProjectEditor != playerid) return false;
  2485. if(key == VK_ESCAPE)
  2486. {
  2487. if(EditMode == EDITMODE_ADJUST)
  2488. {
  2489. SelectTextDraw(playerid, -1);
  2490. if(!VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2491. {
  2492. new Float:pos[2];
  2493. for(new i = 1; i < sizeof(TDE_Menu); i++)
  2494. {
  2495. TextDrawGetPos(TDE_Menu[i], pos[0], pos[1]);
  2496. TextDrawSetPos(TDE_Menu[i], pos[0], OffsetZ);
  2497. TextDrawShowForPlayer(playerid, TDE_Menu[i]);
  2498. }
  2499.  
  2500. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2501. EditMode = EDITMODE_NONE;
  2502. IsPSel = true;
  2503. return 1;
  2504. }
  2505. }
  2506. }
  2507. if(key == VK_LBUTTON)
  2508. {
  2509. if(ColorMode) ColorMode = 0;
  2510. if(IsPSel) SaveProject();
  2511. }
  2512. if(EditMode == EDITMODE_ADJUST) return false;
  2513. if(key == VK_RBUTTON)
  2514. {
  2515. if(!IsPSel) return false;
  2516. new Float:ConvertedX, Float:ConvertedY;
  2517. ConvertedX = ((floatdiv(float(CursorX), ScreenWidth) * 640.0));
  2518. ConvertedY = (((floatdiv(float(CursorY), ScreenHeight) * 448.0)));
  2519. if( (ConvertedX > 64.01 && ConvertedX < 32.0+64.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //New
  2520. {
  2521. ShowPlayerDialog(ProjectEditor, DIALOG_NEW, DIALOG_STYLE_LIST, "TDEditor - New TextDraw", "Normal TextDraw\nSprite TextDraw (TXD)\nPreview Models (objects, vehicles, skins)\nBox TextDraw", ">>", "X");
  2522. IsPSel = false;
  2523. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2524. EditMode = EDITMODE_NONE;
  2525. CancelSelectTextDraw(ProjectEditor);
  2526. return 1;
  2527. }
  2528. if( (ConvertedX > 128.01 && ConvertedX < 32.0+128.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Duplicate
  2529. {
  2530. if(EditIndex == INVALID_INDEX_ID) return SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}No textdraw selected");
  2531. ShowPlayerDialog(ProjectEditor, DIALOG_MIRROR, DIALOG_STYLE_LIST, "TDEditor - Mirror Textdraw", "Mirror X\nMirror Y\nMirror XY", ">>", "X");
  2532. IsPSel = false;
  2533. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2534. EditMode = EDITMODE_NONE;
  2535. CancelSelectTextDraw(ProjectEditor);
  2536. return 1;
  2537. }
  2538.  
  2539. if(EditIndex == INVALID_INDEX_ID) return false;
  2540. if( (ConvertedX > 192.01 && ConvertedX < 32.0+192.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Position
  2541. {
  2542. ShowPlayerDialog(ProjectEditor, DIALOG_POSX, DIALOG_STYLE_INPUT, "TDEditor - PositionX", "Insert the value of PositionX:\nNote: to insert a decimal value use '.' instead of ',' for example '298.73'", ">>", "X");
  2543. IsPSel = false;
  2544. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2545. EditMode = EDITMODE_NONE;
  2546. CancelSelectTextDraw(ProjectEditor);
  2547. return 1;
  2548. }
  2549. if( (ConvertedX > 160.01 && ConvertedX < 32.0+160.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Models/Font
  2550. {
  2551. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5)
  2552. {
  2553. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  2554. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Change ModelID\nRotationX\nRotationY\nRotationZ\nZoom", ">>", "X");
  2555. IsPSel = false;
  2556. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2557. EditMode = EDITMODE_NONE;
  2558. CancelSelectTextDraw(ProjectEditor);
  2559. return 1;
  2560. }
  2561. return 1;
  2562. }
  2563. if( (ConvertedX > 224.01 && ConvertedX < 32.0+224.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //TextSize
  2564. {
  2565. ShowPlayerDialog(ProjectEditor, DIALOG_SIZEX, DIALOG_STYLE_INPUT, "TDEditor - TextSizeX", "Enter the value of TextSizeX:\nNote: to put a decimal value use '.' instead of ',' for example: '18 .8 '", ">>", "X");
  2566. IsPSel = false;
  2567. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2568. EditMode = EDITMODE_NONE;
  2569. CancelSelectTextDraw(ProjectEditor);
  2570. return 1;
  2571. }
  2572. if( (ConvertedX > 256.01 && ConvertedX < 32.0+256.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Text
  2573. {
  2574. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2575. ShowPlayerDialog(ProjectEditor, DIALOG_EDITTEXT, DIALOG_STYLE_INPUT, "TDEditor - Text", "Insert the TextDraw text:", ">>", "X");
  2576. IsPSel = false;
  2577. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2578. EditMode = EDITMODE_NONE;
  2579. CancelSelectTextDraw(ProjectEditor);
  2580. return 1;
  2581. }
  2582. if( (ConvertedX > 384.01 && ConvertedX < 32.0+384.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //LetterSize
  2583. {
  2584. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2585. ShowPlayerDialog(ProjectEditor, DIALOG_LETTERX, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeX", "Insert the value of LetteSizeX:\nNote: to insert a decimal value use '.' instead of ',' for example '0.4'", ">>", "X");
  2586. IsPSel = false;
  2587. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2588. EditMode = EDITMODE_NONE;
  2589. CancelSelectTextDraw(ProjectEditor);
  2590. return 1;
  2591. }
  2592. if( (ConvertedX > 416.01 && ConvertedX < 32.0+416.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Outline
  2593. {
  2594. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2595. ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Insert an integer value for the outline.\n\n0 to remove the outline.", ">>", "X");
  2596. IsPSel = false;
  2597. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2598. EditMode = EDITMODE_NONE;
  2599. CancelSelectTextDraw(ProjectEditor);
  2600. return 1;
  2601. }
  2602. if( (ConvertedX > 448.01 && ConvertedX < 32.0+448.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Shadow
  2603. {
  2604. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2605. ShowPlayerDialog(ProjectEditor, DIALOG_EDITSHADOW, DIALOG_STYLE_INPUT, "TDEditor - Shadow", "Insert an integer value for the shadow.\n\n0 to remove the shadow.", ">>", "X");
  2606. IsPSel = false;
  2607. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2608. EditMode = EDITMODE_NONE;
  2609. CancelSelectTextDraw(ProjectEditor);
  2610. return 1;
  2611. }
  2612. if( (ConvertedX > 288.01 && ConvertedX < 32.0+288.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Colors
  2613. {
  2614. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - Color", "Main colors\nWrite the exact value (HEX)\nColor combinator (RGBA)", ">>", "X");
  2615. IsPSel = false;
  2616. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2617. EditMode = EDITMODE_COLOR;
  2618. CancelSelectTextDraw(ProjectEditor);
  2619. return 1;
  2620. }
  2621. if( (ConvertedX > 320.01 && ConvertedX < 32.0+320.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //BGColors
  2622. {
  2623. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4) return false;
  2624. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BGColor", "Main colors\nWrite the exact value (HEX)\nColor combinator (RGBA)", ">>", "X");
  2625. IsPSel = false;
  2626. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2627. EditMode = EDITMODE_BGCOLOR;
  2628. CancelSelectTextDraw(ProjectEditor);
  2629. return 1;
  2630. }
  2631. if( (ConvertedX > 352.01 && ConvertedX < 32.0+352.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //BoxColors
  2632. {
  2633. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2634. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BoxColor", "Main colors\nWrite the exact value (HEX)\nColor combinator (RGBA)", ">>", "X");
  2635. IsPSel = false;
  2636. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2637. EditMode = EDITMODE_BOXCOLOR;
  2638. CancelSelectTextDraw(ProjectEditor);
  2639. return 1;
  2640. }
  2641. }
  2642. switch(EditMode)
  2643. {
  2644. case EDITMODE_TEXT:
  2645. {
  2646. if(key == VK_DELETE || key == VK_BACKSPACE) KillTimer(DeleteTimer);
  2647. }
  2648. case EDITMODE_POSITION:
  2649. {
  2650. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_OEM_MINUS || key == VK_SUBTRACT) KillTimer(SpeedTimer);
  2651. }
  2652. case EDITMODE_SIZE:
  2653. {
  2654. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_OEM_MINUS || key == VK_SUBTRACT) KillTimer(EditSizeSpeedT);
  2655. }
  2656. case EDITMODE_OUTLINE:
  2657. {
  2658. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_UP || key == VK_RIGHT || key == VK_OEM_MINUS || key == VK_SUBTRACT || key == VK_DOWN || key == VK_LEFT) KillTimer(OutlineTimer);
  2659. }
  2660. case EDITMODE_SHADOW:
  2661. {
  2662. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_UP || key == VK_RIGHT || key == VK_OEM_MINUS || key == VK_SUBTRACT || key == VK_DOWN || key == VK_LEFT) KillTimer(ShadowTimer);
  2663. }
  2664. case EDITMODE_LETTERSIZE:
  2665. {
  2666. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_OEM_MINUS || key == VK_SUBTRACT) KillTimer(LetterTimer);
  2667. }
  2668. }
  2669. return 1;
  2670. }
  2671.  
  2672. TDE_CALLBACK:OnVirtualKeyDown(playerid, key)
  2673. {
  2674.  
  2675. if(!EditorEnabled || ProjectEditor != playerid) return false;
  2676.  
  2677. if(key == VK_RBUTTON)
  2678. {
  2679. if(TDEHTimer == 1)
  2680. {
  2681. TDEHTimer = 2;
  2682. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Right click again to unfreeze the red lines.");
  2683. }
  2684. else if(TDEHTimer == 2)
  2685. {
  2686. new X, Y;
  2687. GetMousePos(X, Y);
  2688. TextDrawSetPos(TDEditor_Helper[0], ((floatdiv(float(X), ScreenWidth) * 640.0)+0.15), -6.000000);
  2689. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, (((floatdiv(float(Y), ScreenHeight) * 448.0)/9.0)+0.4));
  2690. TextDrawSetPos(TDEditor_Helper[1], ((floatdiv(float(X), ScreenWidth) * 640.0)+1.0), (floatdiv(float(Y), ScreenHeight) * 448.0));
  2691. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2692. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2693. TDEHTimer = 1;
  2694. }
  2695. }
  2696.  
  2697. if(VirtualKeys[44][KEY_PRESSED])
  2698. {
  2699. if(key == VK_KEY_R)
  2700. {
  2701. if(TDEHTimer == -1)
  2702. {
  2703. new X, Y;
  2704. GetMousePos(X, Y);
  2705. TextDrawSetPos(TDEditor_Helper[0], ((floatdiv(float(X), ScreenWidth) * 640.0)+0.15), -6.000000);
  2706. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, (((floatdiv(float(Y), ScreenHeight) * 448.0)/9.0)+0.4));
  2707. TextDrawSetPos(TDEditor_Helper[1], ((floatdiv(float(X), ScreenWidth) * 640.0)+1.0), (floatdiv(float(Y), ScreenHeight) * 448.0));
  2708. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Right click to freeze the red lines.");
  2709. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2710. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2711. TDEHTimer = 1;
  2712. }
  2713. else
  2714. {
  2715. TDEHTimer = -1;
  2716. TextDrawHideForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2717. TextDrawHideForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2718. }
  2719. return 1;
  2720. }
  2721. if(EditMode == EDITMODE_ADJUST) return false;
  2722. if(key == VK_KEY_C)
  2723. {
  2724. if(EditIndex == INVALID_INDEX_ID) return false;
  2725. if(!IsPSel) return false;
  2726. new Index = GetAvailableIndex();
  2727. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}You can't create more TextDraws.");
  2728. DuplicateTextDraw(EditIndex, Index);
  2729.  
  2730. new string[128];
  2731. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}was duplicated on TextDraw{e2b960} #%d.", EditIndex, Index);
  2732. SendClientMessage(ProjectEditor, -1, string);
  2733. EditIndex = Index;
  2734. return 1;
  2735. }
  2736. if(key == VK_KEY_X)
  2737. {
  2738. if(EditIndex == INVALID_INDEX_ID) return false;
  2739. if(!IsPSel) return false;
  2740. new string[128];
  2741. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}removed.", EditIndex);
  2742. SendClientMessage(ProjectEditor, -1, string);
  2743.  
  2744. RemoveTextDrawTDE(EditIndex);
  2745. SelectTextDraw(ProjectEditor, -1);
  2746. }
  2747. }
  2748. if(key == VK_END)
  2749. {
  2750. if(MouseCursor)
  2751. {
  2752. MouseCursor = false;
  2753. TogglePlayerControllable(ProjectEditor, 1);
  2754. CancelSelectTextDraw(ProjectEditor);
  2755. }
  2756. else
  2757. {
  2758. MouseCursor = true;
  2759. TogglePlayerControllable(ProjectEditor, 0);
  2760. SelectTextDraw(ProjectEditor, -1);
  2761. }
  2762. return 1;
  2763. }
  2764.  
  2765. if(key == VK_HOME)
  2766. {
  2767. if(PixelLock)
  2768. {
  2769. PixelLock = false;
  2770. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Pixel Lock Off");
  2771. }
  2772. else
  2773. {
  2774. PixelLock = true;
  2775. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Pixel Lock On");
  2776. }
  2777. return 1;
  2778. }
  2779.  
  2780.  
  2781.  
  2782. if(EditMode == EDITMODE_ADJUST) return false;
  2783. if(EditIndex == INVALID_INDEX_ID) return false;
  2784. switch(EditMode)
  2785. {
  2786. case EDITMODE_TEXT:
  2787. {
  2788. if(key == VK_KEY_T || key == VK_F6) PressKeyEnter(VK_ENTER);
  2789. if(key == VK_DELETE || key == VK_BACKSPACE)
  2790. {
  2791. new len = strlen(ProjectTD[EditIndex][ETextDrawText]);
  2792. if(len == 0) return 1;
  2793. if(ProjectTD[EditIndex][ETextDrawText][len-1] == '~' && ProjectTD[EditIndex][ETextDrawText][len-2] == 'n' && ProjectTD[EditIndex][ETextDrawText][len-3] == '~')
  2794. {
  2795. strdel(ProjectTD[EditIndex][ETextDrawText], len-3, len);
  2796. }
  2797. else strdel(ProjectTD[EditIndex][ETextDrawText], len-1, len);
  2798. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  2799. DeleteTimer = SetTimer("DeleteTextDrawLetter", 500, 0);
  2800. return 1;
  2801. }
  2802. /*new KEYT[24]; NO HAVE GOOD WORK
  2803. /format(KEYT, 24, "%c", key);*/
  2804. strcat(ProjectTD[EditIndex][ETextDrawText], KeyToString(key), 800);
  2805. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  2806. }
  2807. case EDITMODE_POSITION:
  2808. {
  2809. switch(key)
  2810. {
  2811. case VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: if(MoveTDTimer == -1) MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 50, 0);
  2812. case VK_OEM_PLUS, VK_ADD:
  2813. {
  2814. if(EditMoveSpeed == 0.05)
  2815. {
  2816. EditMoveSpeed = 0.1;
  2817. new SpeedSTR[24];
  2818. format(SpeedSTR, 24, "%.1f", EditMoveSpeed);
  2819. ShowInfoDraw(SpeedSTR, 1000);
  2820. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 0);
  2821. return 1;
  2822. }
  2823. EditMoveSpeed += 0.1;
  2824. new SpeedSTR[24];
  2825. format(SpeedSTR, 24, "%.1f", EditMoveSpeed);
  2826. ShowInfoDraw(SpeedSTR, 1000);
  2827. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 0);
  2828. }
  2829. case VK_OEM_MINUS, VK_SUBTRACT:
  2830. {
  2831. if(EditMoveSpeed <= 0.1)
  2832. {
  2833. EditMoveSpeed = 0.05;
  2834. new SpeedSTR[24];
  2835. format(SpeedSTR, 24, "~r~%.2f", EditMoveSpeed);
  2836. ShowInfoDraw(SpeedSTR, 1000);
  2837. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 1);
  2838. return 1;
  2839. }
  2840. EditMoveSpeed -= 0.1;
  2841. new SpeedSTR[24];
  2842. format(SpeedSTR, 24, "%.1f", EditMoveSpeed);
  2843. ShowInfoDraw(SpeedSTR, 1000);
  2844. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 1);
  2845. }
  2846. }
  2847. }
  2848. case EDITMODE_SIZE:
  2849. {
  2850. switch(key)
  2851. {
  2852. case VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: if(EditSizeTDTimer == -1) EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 50, 0);
  2853. case VK_OEM_PLUS, VK_ADD:
  2854. {
  2855. if(EditSizeSpeed == 0.05)
  2856. {
  2857. EditSizeSpeed = 0.1;
  2858. new SpeedSTR[24];
  2859. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  2860. ShowInfoDraw(SpeedSTR, 1000);
  2861. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 0);
  2862. return 1;
  2863. }
  2864. EditSizeSpeed += 0.1;
  2865. new SpeedSTR[24];
  2866. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  2867. ShowInfoDraw(SpeedSTR, 1000);
  2868. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 0);
  2869. }
  2870. case VK_OEM_MINUS, VK_SUBTRACT:
  2871. {
  2872. if(EditSizeSpeed <= 0.1)
  2873. {
  2874. EditSizeSpeed = 0.05;
  2875. new SpeedSTR[24];
  2876. format(SpeedSTR, 24, "~r~%.2f", EditSizeSpeed);
  2877. ShowInfoDraw(SpeedSTR, 1000);
  2878. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 1);
  2879. return 1;
  2880. }
  2881. EditSizeSpeed -= 0.1;
  2882. new SpeedSTR[24];
  2883. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  2884. ShowInfoDraw(SpeedSTR, 1000);
  2885. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 1);
  2886. }
  2887. }
  2888. }
  2889. case EDITMODE_COLOR, EDITMODE_BGCOLOR, EDITMODE_BOXCOLOR, EDITMODE_MODELS:
  2890. {
  2891. if(key == VK_LBUTTON)
  2892. {
  2893. if(!CursorX && (0 < CursorY < (ScreenHeight - 1)) && ColorMode != COLORMODE_RED) ColorMode = COLORMODE_RED;
  2894. if(CursorX == (ScreenWidth - 1) && (0 < CursorY < (ScreenHeight - 1)) && ColorMode != COLORMODE_BLUE) ColorMode = COLORMODE_BLUE;
  2895. if(!CursorY && (0 < CursorX < (ScreenWidth - 1)) && ColorMode != COLORMODE_GREEN) ColorMode = COLORMODE_GREEN;
  2896. if(CursorY == (ScreenHeight - 1) && (0 < CursorX < (ScreenWidth - 1)) && ColorMode != COLORMODE_ALPHA) ColorMode = COLORMODE_ALPHA;
  2897. }
  2898. }
  2899. case EDITMODE_OUTLINE:
  2900. {
  2901. switch(key)
  2902. {
  2903. case VK_OEM_PLUS, VK_ADD, VK_UP, VK_RIGHT:
  2904. {
  2905. ProjectTD[EditIndex][ETextDrawOutline] += 1;
  2906. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2907. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2908. new SpeedSTR[32];
  2909. format(SpeedSTR, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  2910. ShowInfoDraw(SpeedSTR, 1000);
  2911.  
  2912. OutlineTimer = SetTimerEx("EditOutline", 500, 0, "d", 0);
  2913. }
  2914. case VK_OEM_MINUS, VK_SUBTRACT, VK_DOWN, VK_LEFT:
  2915. {
  2916. ProjectTD[EditIndex][ETextDrawOutline] -= 1;
  2917. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2918. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2919. new SpeedSTR[32];
  2920. format(SpeedSTR, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  2921. ShowInfoDraw(SpeedSTR, 1000);
  2922.  
  2923. OutlineTimer = SetTimerEx("EditOutline", 500, 0, "d", 1);
  2924. }
  2925. }
  2926. }
  2927. case EDITMODE_SHADOW:
  2928. {
  2929. switch(key)
  2930. {
  2931. case VK_OEM_PLUS, VK_ADD, VK_UP, VK_RIGHT:
  2932. {
  2933. ProjectTD[EditIndex][ETextDrawShadow] += 1;
  2934. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2935. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2936. new SpeedSTR[32];
  2937. format(SpeedSTR, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  2938. ShowInfoDraw(SpeedSTR, 1000);
  2939.  
  2940. ShadowTimer = SetTimerEx("EditShadow", 500, 0, "d", 0);
  2941. }
  2942. case VK_OEM_MINUS, VK_SUBTRACT, VK_DOWN, VK_LEFT:
  2943. {
  2944. ProjectTD[EditIndex][ETextDrawShadow] -= 1;
  2945. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2946. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2947. new Speed[32];
  2948. format(Speed, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  2949. ShowInfoDraw(Speed, 1000);
  2950.  
  2951. ShadowTimer = SetTimerEx("EditShadow", 500, 0, "d", 1);
  2952. }
  2953. }
  2954. }
  2955. case EDITMODE_LETTERSIZE:
  2956. {
  2957. switch(key)
  2958. {
  2959. case VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: if(LetterSizeTimer == -1) LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 50, 0);
  2960. case VK_OEM_PLUS, VK_ADD:
  2961. {
  2962. if(EditLetterSizeSpeed == 0.005)
  2963. {
  2964. EditLetterSizeSpeed = 0.01;
  2965. new Speed[24];
  2966. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  2967. ShowInfoDraw(Speed, 1000);
  2968. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 0);
  2969. return 1;
  2970. }
  2971. EditLetterSizeSpeed += 0.01;
  2972. new Speed[24];
  2973. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  2974. ShowInfoDraw(Speed, 1000);
  2975. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 0);
  2976. }
  2977. case VK_OEM_MINUS, VK_SUBTRACT:
  2978. {
  2979. if(EditLetterSizeSpeed <= 0.01)
  2980. {
  2981. EditLetterSizeSpeed = 0.005;
  2982. new Speed[24];
  2983. format(Speed, 24, "~r~%.4f", EditLetterSizeSpeed);
  2984. ShowInfoDraw(Speed, 1000);
  2985. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 1);
  2986. return 1;
  2987. }
  2988. EditLetterSizeSpeed -= 0.01;
  2989. new Speed[24];
  2990. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  2991. ShowInfoDraw(Speed, 1000);
  2992. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 1);
  2993. }
  2994. }
  2995. }
  2996. }
  2997. return true;
  2998. }
  2999.  
  3000. TDE_CALLBACK:EditOutline(key)
  3001. {
  3002. if(EditMode != EDITMODE_OUTLINE) return 1;
  3003. if(key == 0)
  3004. {
  3005. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED] || VirtualKeys[31][KEY_PRESSED] || VirtualKeys[30][KEY_PRESSED])
  3006. {
  3007. ProjectTD[EditIndex][ETextDrawOutline] += 1;
  3008. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  3009. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3010. new Speed[32];
  3011. format(Speed, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  3012. ShowInfoDraw(Speed, 1000);
  3013. OutlineTimer = SetTimerEx("EditOutline", 25, 0, "d", 0);
  3014. }
  3015. }
  3016. else if(key == 1)
  3017. {
  3018. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED] || VirtualKeys[32][KEY_PRESSED] || VirtualKeys[29][KEY_PRESSED])
  3019. {
  3020. ProjectTD[EditIndex][ETextDrawOutline] -= 1;
  3021. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  3022. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3023. new Speed[32];
  3024. format(Speed, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  3025. ShowInfoDraw(Speed, 1000);
  3026. OutlineTimer = SetTimerEx("EditOutline", 25, 0, "d", 1);
  3027. }
  3028. }
  3029. return 1;
  3030. }
  3031.  
  3032. TDE_CALLBACK:EditShadow(key)
  3033. {
  3034. if(EditMode != EDITMODE_SHADOW) return 1;
  3035. if(key == 0)
  3036. {
  3037. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED] || VirtualKeys[31][KEY_PRESSED] || VirtualKeys[30][KEY_PRESSED])
  3038. {
  3039. ProjectTD[EditIndex][ETextDrawShadow] += 1;
  3040. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  3041. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3042. new Speed[32];
  3043. format(Speed, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  3044. ShowInfoDraw(Speed, 1000);
  3045. ShadowTimer = SetTimerEx("EditShadow", 25, 0, "d", 0);
  3046. }
  3047. }
  3048. else if(key == 1)
  3049. {
  3050. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED] || VirtualKeys[32][KEY_PRESSED] || VirtualKeys[29][KEY_PRESSED])
  3051. {
  3052. ProjectTD[EditIndex][ETextDrawShadow] -= 1;
  3053. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  3054. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3055. new Speed[32];
  3056. format(Speed, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  3057. ShowInfoDraw(Speed, 1000);
  3058. ShadowTimer = SetTimerEx("EditShadow", 25, 0, "d", 1);
  3059. }
  3060. }
  3061. return 1;
  3062. }
  3063.  
  3064. TDE_CALLBACK:EditSizeSpeedCallback(key)
  3065. {
  3066. if(EditMode != EDITMODE_SIZE) return 1;
  3067. if(key == 0)
  3068. {
  3069. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED])
  3070. {
  3071. if(EditSizeSpeed == 0.05)
  3072. {
  3073. EditSizeSpeed = 0.1;
  3074. new SpeedSTR[24];
  3075. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  3076. ShowInfoDraw(SpeedSTR, 1000);
  3077. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 0);
  3078. return 1;
  3079. }
  3080. EditSizeSpeed += 0.1;
  3081. new SpeedSTR[24];
  3082. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  3083. ShowInfoDraw(SpeedSTR, 1000);
  3084. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 0);
  3085. }
  3086. }
  3087. else if(key == 1)
  3088. {
  3089. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED])
  3090. {
  3091. if(EditSizeSpeed <= 0.1)
  3092. {
  3093. EditSizeSpeed = 0.05;
  3094. new SpeedSTR[24];
  3095. format(SpeedSTR, 24, "~r~%.2f", EditSizeSpeed);
  3096. ShowInfoDraw(SpeedSTR, 1000);
  3097. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 1);
  3098. return 1;
  3099. }
  3100. EditSizeSpeed -= 0.1;
  3101. new SpeedSTR[24];
  3102. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  3103. ShowInfoDraw(SpeedSTR, 1000);
  3104. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 1);
  3105. }
  3106. }
  3107. return 1;
  3108. }
  3109.  
  3110. TDE_CALLBACK:EditMovementSpeed(key)
  3111. {
  3112. if(EditMode != EDITMODE_POSITION) return 1;
  3113. if(key == 0)
  3114. {
  3115. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED])
  3116. {
  3117. if(EditMoveSpeed == 0.05)
  3118. {
  3119. EditMoveSpeed = 0.1;
  3120. new Speed[24];
  3121. format(Speed, 24, "%.1f", EditMoveSpeed);
  3122. ShowInfoDraw(Speed, 1000);
  3123. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 0);
  3124. return 1;
  3125. }
  3126. EditMoveSpeed += 0.1;
  3127. new Speed[24];
  3128. format(Speed, 24, "%.1f", EditMoveSpeed);
  3129. ShowInfoDraw(Speed, 1000);
  3130. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 0);
  3131. }
  3132. }
  3133. else if(key == 1)
  3134. {
  3135. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED])
  3136. {
  3137. if(EditMoveSpeed <= 0.1)
  3138. {
  3139. EditMoveSpeed = 0.05;
  3140. new Speed[24];
  3141. format(Speed, 24, "~r~%.2f", EditMoveSpeed);
  3142. ShowInfoDraw(Speed, 1000);
  3143. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 1);
  3144. return 1;
  3145. }
  3146. EditMoveSpeed -= 0.1;
  3147. new Speed[24];
  3148. format(Speed, 24, "%.1f", EditMoveSpeed);
  3149. ShowInfoDraw(Speed, 1000);
  3150. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 1);
  3151. }
  3152. }
  3153. return 1;
  3154. }
  3155.  
  3156. TDE_CALLBACK:TEditLetterSizeSpeed(key)
  3157. {
  3158. if(EditMode != EDITMODE_LETTERSIZE) return 1;
  3159. if(key == 0)
  3160. {
  3161. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED])
  3162. {
  3163. if(EditLetterSizeSpeed == 0.005)
  3164. {
  3165. EditLetterSizeSpeed = 0.01;
  3166. new Speed[24];
  3167. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  3168. ShowInfoDraw(Speed, 1000);
  3169. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 0);
  3170. return 1;
  3171. }
  3172. EditLetterSizeSpeed += 0.01;
  3173. new Speed[24];
  3174. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  3175. ShowInfoDraw(Speed, 1000);
  3176. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 25, 0, "d", 0);
  3177. }
  3178. }
  3179. else if(key == 1)
  3180. {
  3181. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED])
  3182. {
  3183. if(EditLetterSizeSpeed <= 0.01)
  3184. {
  3185. EditLetterSizeSpeed = 0.005;
  3186. new Speed[24];
  3187. format(Speed, 24, "~r~%.4f", EditLetterSizeSpeed);
  3188. ShowInfoDraw(Speed, 1000);
  3189. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 1);
  3190. return 1;
  3191. }
  3192. EditLetterSizeSpeed -= 0.01;
  3193. new Speed[24];
  3194. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  3195. ShowInfoDraw(Speed, 1000);
  3196. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 25, 0, "d", 1);
  3197. }
  3198. }
  3199. return 1;
  3200. }
  3201.  
  3202. TDE_CALLBACK:DeleteTextDrawLetter()
  3203. {
  3204. if(EditMode != EDITMODE_TEXT) return 1;
  3205. if(VirtualKeys[52][KEY_PRESSED] || VirtualKeys[37][KEY_PRESSED]) //Delete
  3206. {
  3207. new len = strlen(ProjectTD[EditIndex][ETextDrawText]);
  3208. if(len == 0) return 1;
  3209. if(ProjectTD[EditIndex][ETextDrawText][len-1] == '~' && ProjectTD[EditIndex][ETextDrawText][len-2] == 'n' && ProjectTD[EditIndex][ETextDrawText][len-3] == '~')
  3210. {
  3211. strdel(ProjectTD[EditIndex][ETextDrawText], len-3, len);
  3212. }
  3213. else strdel(ProjectTD[EditIndex][ETextDrawText], len-1, len);
  3214. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  3215. DeleteTimer = SetTimer("DeleteTextDrawLetter", 25, 0);
  3216. }
  3217. return 1;
  3218. }
  3219.  
  3220. TDE_CALLBACK:LetterSizeTextDrawEDITOR()
  3221. {
  3222. if(EditMode != EDITMODE_LETTERSIZE) return 1;
  3223. if(VirtualKeys[31][KEY_PRESSED]) //UP
  3224. {
  3225. ProjectTD[EditIndex][ETextDrawLetterY] -= EditLetterSizeSpeed;
  3226. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3227. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3228.  
  3229. new SpeedSTR[64];
  3230. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3231. ShowInfoDraw(SpeedSTR, 1000);
  3232. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3233. return 1;
  3234. }
  3235. if(VirtualKeys[32][KEY_PRESSED]) //DOWN
  3236. {
  3237. ProjectTD[EditIndex][ETextDrawLetterY] += EditLetterSizeSpeed;
  3238. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3239. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3240.  
  3241. new SpeedSTR[64];
  3242. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3243. ShowInfoDraw(SpeedSTR, 1000);
  3244. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3245. return 1;
  3246. }
  3247. if(VirtualKeys[29][KEY_PRESSED]) //LEFT
  3248. {
  3249. ProjectTD[EditIndex][ETextDrawLetterX] -= floatdiv(EditLetterSizeSpeed, 10);
  3250. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3251. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3252.  
  3253. new SpeedSTR[64];
  3254. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3255. ShowInfoDraw(SpeedSTR, 1000);
  3256. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3257. return 1;
  3258. }
  3259. if(VirtualKeys[30][KEY_PRESSED]) //RIGHT
  3260. {
  3261. ProjectTD[EditIndex][ETextDrawLetterX] += floatdiv(EditLetterSizeSpeed, 10);
  3262. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3263. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3264.  
  3265. new SpeedSTR[64];
  3266. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3267. ShowInfoDraw(SpeedSTR, 1000);
  3268. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3269. return 1;
  3270. }
  3271. KillTimer(LetterSizeTimer);
  3272. LetterSizeTimer = -1;
  3273. return 1;
  3274. }
  3275.  
  3276. TDE_CALLBACK:ReSizeTextDrawEDITOR()
  3277. {
  3278. if(EditMode != EDITMODE_SIZE) return 1;
  3279. if(VirtualKeys[31][KEY_PRESSED]) //UP
  3280. {
  3281.  
  3282. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) )
  3283. {
  3284. ProjectTD[EditIndex][ETextDrawLetterY] -= EditSizeSpeed/10;
  3285. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3286.  
  3287. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3288. new SpeedSTR[64];
  3289. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3290. ShowInfoDraw(SpeedSTR, 1000);
  3291. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3292. return 1;
  3293. }
  3294. ProjectTD[EditIndex][ETextDrawTextY] -= EditSizeSpeed;
  3295. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3296. switch(alignment)
  3297. {
  3298. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3299. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3300. }
  3301. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3302.  
  3303. new SpeedSTR[64];
  3304. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3305. ShowInfoDraw(SpeedSTR, 1000);
  3306. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3307. return 1;
  3308. }
  3309. if(VirtualKeys[32][KEY_PRESSED]) //DOWN
  3310. {
  3311. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) )
  3312. {
  3313. ProjectTD[EditIndex][ETextDrawLetterY] += EditSizeSpeed/10;
  3314. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3315.  
  3316. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3317. new SpeedSTR[64];
  3318. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3319. ShowInfoDraw(SpeedSTR, 1000);
  3320. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3321. return 1;
  3322. }
  3323. ProjectTD[EditIndex][ETextDrawTextY] += EditSizeSpeed;
  3324. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3325. switch(alignment)
  3326. {
  3327. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3328. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3329. }
  3330. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3331.  
  3332. new SpeedSTR[64];
  3333. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3334. ShowInfoDraw(SpeedSTR, 1000);
  3335. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3336. return 1;
  3337. }
  3338. if(VirtualKeys[29][KEY_PRESSED]) //LEFT
  3339. {
  3340. ProjectTD[EditIndex][ETextDrawTextX] -= EditSizeSpeed;
  3341. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3342. switch(alignment)
  3343. {
  3344. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3345. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3346. }
  3347. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3348.  
  3349. new SpeedSTR[64];
  3350. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3351. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) ) format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3352. ShowInfoDraw(SpeedSTR, 1000);
  3353. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3354. return 1;
  3355. }
  3356. if(VirtualKeys[30][KEY_PRESSED]) //RIGHT
  3357. {
  3358. ProjectTD[EditIndex][ETextDrawTextX] += EditSizeSpeed;
  3359. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3360. switch(alignment)
  3361. {
  3362. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3363. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3364. }
  3365. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3366.  
  3367. new SpeedSTR[64];
  3368. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3369. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) ) format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3370. ShowInfoDraw(SpeedSTR, 1000);
  3371. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3372. return 1;
  3373. }
  3374. KillTimer(EditSizeTDTimer);
  3375. EditSizeTDTimer = -1;
  3376. return 1;
  3377. }
  3378.  
  3379. TDE_CALLBACK:MoveTextDrawEDITOR()
  3380. {
  3381. if(EditMode != EDITMODE_POSITION) return 1;
  3382. if(VirtualKeys[31][KEY_PRESSED]) //UP
  3383. {
  3384. ProjectTD[EditIndex][ETextDrawPosY] -= EditMoveSpeed;
  3385. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3386. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3387.  
  3388. new SpeedSTR[64];
  3389. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3390. ShowInfoDraw(SpeedSTR, 1000);
  3391. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3392. return 1;
  3393. }
  3394. if(VirtualKeys[32][KEY_PRESSED]) //DOWN
  3395. {
  3396. ProjectTD[EditIndex][ETextDrawPosY] += EditMoveSpeed;
  3397. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3398. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3399.  
  3400. new SpeedSTR[64];
  3401. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3402. ShowInfoDraw(SpeedSTR, 1000);
  3403. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3404. return 1;
  3405. }
  3406. if(VirtualKeys[29][KEY_PRESSED]) //LEFT
  3407. {
  3408. ProjectTD[EditIndex][ETextDrawPosX] -= EditMoveSpeed;
  3409. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3410.  
  3411. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  3412. {
  3413. if(TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]) != 2)
  3414. {
  3415. ProjectTD[EditIndex][ETextDrawTextX] -= EditMoveSpeed;
  3416. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3417. }
  3418. }
  3419.  
  3420. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3421.  
  3422. new SpeedSTR[64];
  3423. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3424. ShowInfoDraw(SpeedSTR, 1000);
  3425. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3426. return 1;
  3427. }
  3428. if(VirtualKeys[30][KEY_PRESSED]) //RIGHT
  3429. {
  3430. ProjectTD[EditIndex][ETextDrawPosX] += EditMoveSpeed;
  3431. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3432.  
  3433. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  3434. {
  3435. if(TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]) != 2)
  3436. {
  3437. ProjectTD[EditIndex][ETextDrawTextX] += EditMoveSpeed;
  3438. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3439. }
  3440. }
  3441.  
  3442. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3443.  
  3444. new SpeedSTR[64];
  3445. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3446. ShowInfoDraw(SpeedSTR, 1000);
  3447. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3448. return 1;
  3449. }
  3450. KillTimer(MoveTDTimer);
  3451. MoveTDTimer = -1;
  3452. return 1;
  3453. }
  3454.  
  3455. stock ShowEditor()
  3456. {
  3457. TogglePlayerControllable(ProjectEditor, false);
  3458.  
  3459. Loop(0, sizeof(TDE_Menu))
  3460. {
  3461. switch(c)
  3462. {
  3463. case 0:
  3464. {
  3465. TextDrawColor(TDE_Menu[c], 0x000000FF);
  3466. TextDrawSetSelectable(TDE_Menu[c], false);
  3467. }
  3468. case 2:
  3469. {
  3470. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  3471. TextDrawSetSelectable(TDE_Menu[c], true);
  3472. }
  3473. default:
  3474. {
  3475. TextDrawColor(TDE_Menu[c], 0x888888FF);
  3476. TextDrawSetSelectable(TDE_Menu[c], false);
  3477. }
  3478. }
  3479. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  3480. }
  3481. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  3482. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  3483. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  3484. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  3485. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  3486. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  3487. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  3488. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  3489. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  3490. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  3491. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  3492. TextDrawShowForPlayer(ProjectEditor, TD_Status);
  3493. SelectTextDraw(ProjectEditor, -1);
  3494. return true;
  3495. }
  3496.  
  3497. stock ShowEditorEx()
  3498. {
  3499.  
  3500.  
  3501. Loop(0, sizeof(TDE_Menu))
  3502. {
  3503. switch(c)
  3504. {
  3505. case 0:
  3506. {
  3507. TextDrawColor(TDE_Menu[c], 0x000000FF);
  3508. TextDrawSetSelectable(TDE_Menu[c], false);
  3509. }
  3510. default:
  3511. {
  3512. TextDrawColor(TDE_Menu[c], 0x888888FF);
  3513. TextDrawSetSelectable(TDE_Menu[c], false);
  3514. }
  3515. }
  3516. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  3517. }
  3518. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  3519. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  3520. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  3521. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  3522. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  3523. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  3524. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  3525. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  3526. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  3527. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  3528. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  3529. TextDrawShowForPlayer(ProjectEditor, TD_Status);
  3530. SelectTextDraw(ProjectEditor, -1);
  3531. return true;
  3532. }
  3533.  
  3534. stock CreateMenuTextDraws()
  3535. {
  3536. TDE_Menu[0] = TextDrawCreate(0.0, OffsetZ - 2.0, "LD_SPAC:white");
  3537. TextdrawSettings(TDE_Menu[0], Float:{0.5, 1.0, 640.0, 37.0}, {0,0x000000FF,0,0,0,0,255,4,1,0});
  3538.  
  3539. new Float:OffsetX = 0.01;
  3540. TDE_Menu[1] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_manage"); OffsetX += 32.0;
  3541. TDE_Menu[4] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_export"); OffsetX += 32.0;
  3542. TDE_Menu[2] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_new"); OffsetX += 32.0;
  3543. TDE_Menu[3] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_delete"); OffsetX += 32.0;
  3544. TDE_Menu[8] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_duplicate"); OffsetX += 32.0;
  3545. TDE_Menu[24] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font0");
  3546. TDE_Menu[25] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font1");
  3547. TDE_Menu[26] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font2");
  3548. TDE_Menu[27] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font3");
  3549. TDE_Menu[12] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_image");
  3550. TDE_Menu[13] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_previews"); OffsetX += 32.0;
  3551. TDE_Menu[9] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_pos"); OffsetX += 32.0;
  3552. TDE_Menu[10] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_size"); OffsetX += 32.0;
  3553. TDE_Menu[11] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_text");
  3554. TDE_Menu[35] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_modelid"); OffsetX += 32.0;
  3555. TDE_Menu[14] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_color"); OffsetX += 32.0;
  3556. TDE_Menu[15] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_bgcolor"); OffsetX += 32.0;
  3557. TDE_Menu[32] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_boxcolor"); OffsetX += 32.0;
  3558. TDE_Menu[16] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_lettersize"); OffsetX += 32.0;
  3559. TDE_Menu[17] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_outline"); OffsetX += 32.0;
  3560. TDE_Menu[18] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_shadow"); OffsetX += 32.0;
  3561. TDE_Menu[19] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_useboxno");
  3562. TDE_Menu[20] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_useboxyes");
  3563. TDE_Menu[34] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_modeloptions"); OffsetX += 32.0;
  3564. TDE_Menu[21] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_alignmentleft");
  3565. TDE_Menu[22] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_alignmentcenter");
  3566. TDE_Menu[23] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_alignmentright"); OffsetX += 32.0;
  3567. TDE_Menu[5] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_global");
  3568. TDE_Menu[33] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_player"); OffsetX += 32.0;
  3569. TDE_Menu[28] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_selectableno");
  3570. TDE_Menu[29] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_selectableyes"); OffsetX += 32.0;
  3571. TDE_Menu[30] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_proportionno");
  3572. TDE_Menu[31] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_proportionyes"); OffsetX += 32.0;
  3573. Loop(1, sizeof TDE_Menu) TextdrawSettings(TDE_Menu[c], Float:{0.5, 1.0, 32.0, 32.0}, {0,0xDDDDDDFF,0,0,0,0,0,4,1,0});
  3574.  
  3575. TD_Status = TextDrawCreate(2.0, 404.86, "EditMode: EDITMODE_NONE");
  3576. TextDrawLetterSize(TD_Status, 0.179665, 0.857481);
  3577. TextDrawAlignment(TD_Status, 1);
  3578. TextDrawColor(TD_Status, -186);
  3579. TextDrawSetShadow(TD_Status, 0);
  3580. TextDrawSetOutline(TD_Status, 0);
  3581. TextDrawBackgroundColor(TD_Status, 255);
  3582. TextDrawFont(TD_Status, 1);
  3583. TextDrawSetProportional(TD_Status, 1);
  3584.  
  3585. TDEditor_Helper[0] = TextDrawCreate(322.000000, -6.000000, "_");
  3586. TextDrawAlignment(TDEditor_Helper[0], 2);
  3587. TextDrawBackgroundColor(TDEditor_Helper[0], 255);
  3588. TextDrawFont(TDEditor_Helper[0], 1);
  3589. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, 24.000003);
  3590. TextDrawColor(TDEditor_Helper[0], -1);
  3591. TextDrawSetOutline(TDEditor_Helper[0], 0);
  3592. TextDrawSetProportional(TDEditor_Helper[0], 1);
  3593. TextDrawSetShadow(TDEditor_Helper[0], 1);
  3594. TextDrawUseBox(TDEditor_Helper[0], 1);
  3595. TextDrawBoxColor(TDEditor_Helper[0], -16776961);
  3596. TextDrawTextSize(TDEditor_Helper[0], 0.000000, -2.000000);
  3597. TextDrawSetSelectable(TDEditor_Helper[0], 0);
  3598.  
  3599. TDEditor_Helper[1] = TextDrawCreate(324.000000, 150.000000, "_");
  3600. TextDrawBackgroundColor(TDEditor_Helper[1], 255);
  3601. TextDrawFont(TDEditor_Helper[1], 1);
  3602. TextDrawLetterSize(TDEditor_Helper[1], 0.00000, -0.321204);
  3603. TextDrawColor(TDEditor_Helper[1], -1);
  3604. TextDrawSetOutline(TDEditor_Helper[1], 0);
  3605. TextDrawSetProportional(TDEditor_Helper[1], 1);
  3606. TextDrawSetShadow(TDEditor_Helper[1], 1);
  3607. TextDrawUseBox(TDEditor_Helper[1], 1);
  3608. TextDrawBoxColor(TDEditor_Helper[1], -16776961);
  3609. TextDrawTextSize(TDEditor_Helper[1], -30.000000, 0.000000);
  3610. TextDrawSetSelectable(TDEditor_Helper[1], 0);
  3611.  
  3612. TDELOGO = TextDrawCreate(215.000091, 182.933395, "TDE:TDELogo");
  3613. TextDrawLetterSize(TDELOGO, 0.000000, 0.000000);
  3614. TextDrawTextSize(TDELOGO, 190.0, 50.0);
  3615. TextDrawAlignment(TDELOGO, 1);
  3616. TextDrawColor(TDELOGO, -1);
  3617. TextDrawSetShadow(TDELOGO, 0);
  3618. TextDrawSetOutline(TDELOGO, 0);
  3619. TextDrawFont(TDELOGO, 4);
  3620. TextDrawSetSelectable(TDELOGO, 1);
  3621.  
  3622. return 1;
  3623. }
  3624.  
  3625. stock DestroyMenuTextDraws()
  3626. {
  3627. Loop(0, sizeof TDE_Menu)
  3628. {
  3629. TextDrawDestroy(TDE_Menu[c]);
  3630. TDE_Menu[c] = Text:INVALID_TEXT_DRAW;
  3631. }
  3632. TextDrawDestroy(TD_Status);
  3633. TD_Status = Text:INVALID_TEXT_DRAW;
  3634. TextDrawDestroy(TDEditor_Helper[0]);
  3635. TDEditor_Helper[0] = Text:INVALID_TEXT_DRAW;
  3636. TextDrawDestroy(TDEditor_Helper[1]);
  3637. TDEditor_Helper[1] = Text:INVALID_TEXT_DRAW;
  3638. TextDrawDestroy(TDELOGO);
  3639. TDELOGO = Text:INVALID_TEXT_DRAW;
  3640. return 1;
  3641. }
  3642.  
  3643. stock TextdrawSettings(Text:textid, Float:Sizes[4], Options[10]) //By iPleomax
  3644. {
  3645. TextDrawLetterSize (textid, Sizes[0], Sizes[1]);
  3646. TextDrawTextSize (textid, Sizes[2], Sizes[3]);
  3647. TextDrawAlignment (textid, Options[0] ? Options[0] : 1);
  3648. TextDrawColor (textid, Options[1]);
  3649. TextDrawUseBox (textid, Options[2]);
  3650. TextDrawBoxColor (textid, Options[3]);
  3651. TextDrawSetShadow (textid, Options[4]);
  3652. TextDrawSetOutline (textid, Options[5]);
  3653. TextDrawBackgroundColor (textid, Options[6]);
  3654. TextDrawFont (textid, Options[7]);
  3655. TextDrawSetProportional (textid, Options[8]);
  3656. TextDrawSetSelectable (textid, Options[9]);
  3657. }
  3658.  
  3659. stock GetAvailableIndex()
  3660. {
  3661. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  3662. {
  3663. if(ProjectTD[i][ItsFromTDE] == -1)
  3664. {
  3665. if(ProjectTD[i][ETextDrawID] == Text:INVALID_TEXT_DRAW)
  3666. {
  3667. return i;
  3668. }
  3669. }
  3670. }
  3671. return INVALID_INDEX_ID;
  3672. }
  3673.  
  3674. stock KeyToString(key)
  3675. {
  3676. new LETTER[4] = "";
  3677. if((GetKeyState(VK_CAPSLOCK) & 0x0001) != 0)
  3678. {
  3679. if(VirtualKeys[41][KEY_PRESSED]) //Shift
  3680. {
  3681. switch(key)
  3682. {
  3683. case VK_KEY_A: LETTER = "a";//41
  3684. case VK_KEY_B: LETTER = "b";//42
  3685. case VK_KEY_C: LETTER = "c";//43
  3686. case VK_KEY_D: LETTER = "d";//44
  3687. case VK_KEY_E: LETTER = "e";//45
  3688. case VK_KEY_F: LETTER = "f";//46
  3689. case VK_KEY_G: LETTER = "g";//47
  3690. case VK_KEY_H: LETTER = "h";//48
  3691. case VK_KEY_I: LETTER = "i";//49
  3692. case VK_KEY_J: LETTER = "j";//4A
  3693. case VK_KEY_K: LETTER = "k";//4B
  3694. case VK_KEY_L: LETTER = "l";//4C
  3695. case VK_KEY_M: LETTER = "m";//4D
  3696. case VK_KEY_N: LETTER = "n";//4E
  3697. case VK_KEY_O: LETTER = "o";//4F
  3698. case VK_KEY_P: LETTER = "p";//50
  3699. case VK_KEY_Q: LETTER = "q";//51
  3700. case VK_KEY_R: LETTER = "r";//52
  3701. case VK_KEY_S: LETTER = "s";//53
  3702. case VK_KEY_T: LETTER = "t";//54
  3703. case VK_KEY_U: LETTER = "u";//55
  3704. case VK_KEY_V: LETTER = "v";//56
  3705. case VK_KEY_W: LETTER = "w";//57
  3706. case VK_KEY_X: LETTER = "x";//58
  3707. case VK_KEY_Y: LETTER = "y";//59
  3708. case VK_KEY_Z: LETTER = "z";//5A
  3709. case VK_SPACE: LETTER = "_";
  3710. case VK_ENTER: LETTER = "~n~";
  3711. case VK_KEYB0: LETTER = "=";//30
  3712. case VK_KEYB1: LETTER = "!";//!
  3713. case VK_KEYB2: LETTER = "\"";//32
  3714. //case VK_KEYB3: LETTER = "·";//33
  3715. case VK_KEYB4: LETTER = "$";//34
  3716. case VK_KEYB5: LETTER = "%";//35
  3717. case VK_KEYB6: LETTER = "&";//36
  3718. case VK_KEYB7: LETTER = "/";//37
  3719. case VK_KEYB8: LETTER = "(";//38
  3720. case VK_KEYB9: LETTER = ")";//39
  3721. case VK_OEM_PLUS: LETTER = "*";
  3722. case VK_OEM_COMMA: LETTER = ";";
  3723. case VK_OEM_MINUS: LETTER = "_";
  3724. case VK_OEM_PERIOD: LETTER = ":";
  3725. case VK_OEM_2: LETTER = "?";
  3726. case VK_OEM_4: LETTER = "?";
  3727. //case VK_OEM_5: LETTER = "ª";
  3728. case VK_OEM_6: LETTER = "[";
  3729. case VK_OEM_102: LETTER = ">";
  3730. case VK_NUMPAD0: LETTER = "0";
  3731. case VK_NUMPAD1: LETTER = "1";
  3732. case VK_NUMPAD2: LETTER = "2";
  3733. case VK_NUMPAD3: LETTER = "3";
  3734. case VK_NUMPAD4: LETTER = "4";
  3735. case VK_NUMPAD5: LETTER = "5";
  3736. case VK_NUMPAD6: LETTER = "6";
  3737. case VK_NUMPAD7: LETTER = "7";
  3738. case VK_NUMPAD8: LETTER = "8";
  3739. case VK_NUMPAD9: LETTER = "9";
  3740. case VK_MULTIPLY: LETTER = "*";
  3741. case VK_ADD: LETTER = "+";
  3742. //case VK_SEPARATOR: LETTER = "?";
  3743. case VK_SUBTRACT: LETTER = "-";
  3744. case VK_DECIMAL: LETTER = ".";
  3745. case VK_DIVIDE: LETTER = "/";
  3746. }
  3747. }
  3748. else
  3749. {
  3750. switch(key)
  3751. {
  3752. case VK_KEY_A: LETTER = "A";//41
  3753. case VK_KEY_B: LETTER = "B";//42
  3754. case VK_KEY_C: LETTER = "C";//43
  3755. case VK_KEY_D: LETTER = "D";//44
  3756. case VK_KEY_E: LETTER = "E";//45
  3757. case VK_KEY_F: LETTER = "F";//46
  3758. case VK_KEY_G: LETTER = "G";//47
  3759. case VK_KEY_H: LETTER = "H";//48
  3760. case VK_KEY_I: LETTER = "I";//49
  3761. case VK_KEY_J: LETTER = "J";//4A
  3762. case VK_KEY_K: LETTER = "K";//4B
  3763. case VK_KEY_L: LETTER = "L";//4C
  3764. case VK_KEY_M: LETTER = "M";//4D
  3765. case VK_KEY_N: LETTER = "N";//4E
  3766. case VK_KEY_O: LETTER = "O";//4F
  3767. case VK_KEY_P: LETTER = "P";//50
  3768. case VK_KEY_Q: LETTER = "Q";//51
  3769. case VK_KEY_R: LETTER = "R";//52
  3770. case VK_KEY_S: LETTER = "S";//53
  3771. case VK_KEY_T: LETTER = "T";//54
  3772. case VK_KEY_U: LETTER = "U";//55
  3773. case VK_KEY_V: LETTER = "V";//56
  3774. case VK_KEY_W: LETTER = "W";//57
  3775. case VK_KEY_X: LETTER = "X";//58
  3776. case VK_KEY_Y: LETTER = "Y";//59
  3777. case VK_KEY_Z: LETTER = "Z";//5A
  3778. case VK_SPACE: LETTER = "_";
  3779. case VK_ENTER: LETTER = "~n~";
  3780. case VK_KEYB0: LETTER = "0";//30
  3781. case VK_KEYB1: LETTER = "1";//31
  3782. case VK_KEYB2: LETTER = "2";//32
  3783. case VK_KEYB3: LETTER = "3";//33
  3784. case VK_KEYB4: LETTER = "4";//34
  3785. case VK_KEYB5: LETTER = "5";//35
  3786. case VK_KEYB6: LETTER = "6";//36
  3787. case VK_KEYB7: LETTER = "7";//37
  3788. case VK_KEYB8: LETTER = "8";//38
  3789. case VK_KEYB9: LETTER = "9";//39
  3790. case VK_OEM_PLUS: LETTER = "+";
  3791. case VK_OEM_COMMA: LETTER = ",";
  3792. case VK_OEM_MINUS: LETTER = "-";
  3793. case VK_OEM_PERIOD: LETTER = ".";
  3794. case VK_OEM_2: LETTER = "]";
  3795. case VK_OEM_4: LETTER = "'";
  3796. case VK_OEM_5: LETTER = "|";
  3797. case VK_OEM_6: LETTER = "¡";
  3798. case VK_OEM_102: LETTER = "<";
  3799. case VK_NUMPAD0: LETTER = "0";
  3800. case VK_NUMPAD1: LETTER = "1";
  3801. case VK_NUMPAD2: LETTER = "2";
  3802. case VK_NUMPAD3: LETTER = "3";
  3803. case VK_NUMPAD4: LETTER = "4";
  3804. case VK_NUMPAD5: LETTER = "5";
  3805. case VK_NUMPAD6: LETTER = "6";
  3806. case VK_NUMPAD7: LETTER = "7";
  3807. case VK_NUMPAD8: LETTER = "8";
  3808. case VK_NUMPAD9: LETTER = "9";
  3809. case VK_MULTIPLY: LETTER = "*";
  3810. case VK_ADD: LETTER = "+";
  3811. //case VK_SEPARATOR: LETTER = "?";
  3812. case VK_SUBTRACT: LETTER = "-";
  3813. case VK_DECIMAL: LETTER = ".";
  3814. case VK_DIVIDE: LETTER = "/";
  3815.  
  3816.  
  3817. }
  3818. }
  3819. }
  3820. else
  3821. {
  3822. if(VirtualKeys[41][KEY_PRESSED]) //Shift
  3823. {
  3824. switch(key)
  3825. {
  3826. case VK_KEY_A: LETTER = "A";//41
  3827. case VK_KEY_B: LETTER = "B";//42
  3828. case VK_KEY_C: LETTER = "C";//43
  3829. case VK_KEY_D: LETTER = "D";//44
  3830. case VK_KEY_E: LETTER = "E";//45
  3831. case VK_KEY_F: LETTER = "F";//46
  3832. case VK_KEY_G: LETTER = "G";//47
  3833. case VK_KEY_H: LETTER = "H";//48
  3834. case VK_KEY_I: LETTER = "I";//49
  3835. case VK_KEY_J: LETTER = "J";//4A
  3836. case VK_KEY_K: LETTER = "K";//4B
  3837. case VK_KEY_L: LETTER = "L";//4C
  3838. case VK_KEY_M: LETTER = "M";//4D
  3839. case VK_KEY_N: LETTER = "N";//4E
  3840. case VK_KEY_O: LETTER = "O";//4F
  3841. case VK_KEY_P: LETTER = "P";//50
  3842. case VK_KEY_Q: LETTER = "Q";//51
  3843. case VK_KEY_R: LETTER = "R";//52
  3844. case VK_KEY_S: LETTER = "S";//53
  3845. case VK_KEY_T: LETTER = "T";//54
  3846. case VK_KEY_U: LETTER = "U";//55
  3847. case VK_KEY_V: LETTER = "V";//56
  3848. case VK_KEY_W: LETTER = "W";//57
  3849. case VK_KEY_X: LETTER = "X";//58
  3850. case VK_KEY_Y: LETTER = "Y";//59
  3851. case VK_KEY_Z: LETTER = "Z";//5A
  3852. case VK_SPACE: LETTER = "_";
  3853. case VK_ENTER: LETTER = "~n~";
  3854. case VK_KEYB0: LETTER = "=";//30
  3855. case VK_KEYB1: LETTER = "!";//!
  3856. case VK_KEYB2: LETTER = "\"";//32
  3857. //case VK_KEYB3: LETTER = "·";//33
  3858. case VK_KEYB4: LETTER = "$";//34
  3859. case VK_KEYB5: LETTER = "%";//35
  3860. case VK_KEYB6: LETTER = "&";//36
  3861. case VK_KEYB7: LETTER = "/";//37
  3862. case VK_KEYB8: LETTER = "(";//38
  3863. case VK_KEYB9: LETTER = ")";//39
  3864. case VK_OEM_PLUS: LETTER = "*";
  3865. case VK_OEM_COMMA: LETTER = ";";
  3866. case VK_OEM_MINUS: LETTER = "_";
  3867. case VK_OEM_PERIOD: LETTER = ":";
  3868. case VK_OEM_2: LETTER = "?";
  3869. case VK_OEM_4: LETTER = "?";
  3870. //case VK_OEM_5: LETTER = "ª";
  3871. case VK_OEM_6: LETTER = "[";
  3872. case VK_OEM_102: LETTER = ">";
  3873. case VK_NUMPAD0: LETTER = "0";
  3874. case VK_NUMPAD1: LETTER = "1";
  3875. case VK_NUMPAD2: LETTER = "2";
  3876. case VK_NUMPAD3: LETTER = "3";
  3877. case VK_NUMPAD4: LETTER = "4";
  3878. case VK_NUMPAD5: LETTER = "5";
  3879. case VK_NUMPAD6: LETTER = "6";
  3880. case VK_NUMPAD7: LETTER = "7";
  3881. case VK_NUMPAD8: LETTER = "8";
  3882. case VK_NUMPAD9: LETTER = "9";
  3883. case VK_MULTIPLY: LETTER = "*";
  3884. case VK_ADD: LETTER = "+";
  3885. //case VK_SEPARATOR: LETTER = "?";
  3886. case VK_SUBTRACT: LETTER = "-";
  3887. case VK_DECIMAL: LETTER = ".";
  3888. case VK_DIVIDE: LETTER = "/";
  3889. }
  3890. }
  3891. else
  3892. {
  3893. switch(key)
  3894. {
  3895. case VK_KEY_A: LETTER = "a";//41
  3896. case VK_KEY_B: LETTER = "b";//42
  3897. case VK_KEY_C: LETTER = "c";//43
  3898. case VK_KEY_D: LETTER = "d";//44
  3899. case VK_KEY_E: LETTER = "e";//45
  3900. case VK_KEY_F: LETTER = "f";//46
  3901. case VK_KEY_G: LETTER = "g";//47
  3902. case VK_KEY_H: LETTER = "h";//48
  3903. case VK_KEY_I: LETTER = "i";//49
  3904. case VK_KEY_J: LETTER = "j";//4A
  3905. case VK_KEY_K: LETTER = "k";//4B
  3906. case VK_KEY_L: LETTER = "l";//4C
  3907. case VK_KEY_M: LETTER = "m";//4D
  3908. case VK_KEY_N: LETTER = "n";//4E
  3909. case VK_KEY_O: LETTER = "o";//4F
  3910. case VK_KEY_P: LETTER = "p";//50
  3911. case VK_KEY_Q: LETTER = "q";//51
  3912. case VK_KEY_R: LETTER = "r";//52
  3913. case VK_KEY_S: LETTER = "s";//53
  3914. case VK_KEY_T: LETTER = "t";//54
  3915. case VK_KEY_U: LETTER = "u";//55
  3916. case VK_KEY_V: LETTER = "v";//56
  3917. case VK_KEY_W: LETTER = "w";//57
  3918. case VK_KEY_X: LETTER = "x";//58
  3919. case VK_KEY_Y: LETTER = "y";//59
  3920. case VK_KEY_Z: LETTER = "z";//5A
  3921. case VK_SPACE: LETTER = "_";
  3922. case VK_ENTER: LETTER = "~n~";
  3923. case VK_KEYB0: LETTER = "0";//30
  3924. case VK_KEYB1: LETTER = "1";//31
  3925. case VK_KEYB2: LETTER = "2";//32
  3926. case VK_KEYB3: LETTER = "3";//33
  3927. case VK_KEYB4: LETTER = "4";//34
  3928. case VK_KEYB5: LETTER = "5";//35
  3929. case VK_KEYB6: LETTER = "6";//36
  3930. case VK_KEYB7: LETTER = "7";//37
  3931. case VK_KEYB8: LETTER = "8";//38
  3932. case VK_KEYB9: LETTER = "9";//39
  3933. case VK_OEM_PLUS: LETTER = "+";
  3934. case VK_OEM_COMMA: LETTER = ",";
  3935. case VK_OEM_MINUS: LETTER = "-";
  3936. case VK_OEM_PERIOD: LETTER = ".";
  3937. case VK_OEM_2: LETTER = "]";
  3938. case VK_OEM_4: LETTER = "'";
  3939. case VK_OEM_5: LETTER = "|";
  3940. case VK_OEM_6: LETTER = "¡";
  3941. case VK_OEM_102: LETTER = "<";
  3942. case VK_NUMPAD0: LETTER = "0";
  3943. case VK_NUMPAD1: LETTER = "1";
  3944. case VK_NUMPAD2: LETTER = "2";
  3945. case VK_NUMPAD3: LETTER = "3";
  3946. case VK_NUMPAD4: LETTER = "4";
  3947. case VK_NUMPAD5: LETTER = "5";
  3948. case VK_NUMPAD6: LETTER = "6";
  3949. case VK_NUMPAD7: LETTER = "7";
  3950. case VK_NUMPAD8: LETTER = "8";
  3951. case VK_NUMPAD9: LETTER = "9";
  3952. case VK_MULTIPLY: LETTER = "*";
  3953. case VK_ADD: LETTER = "+";
  3954. //case VK_SEPARATOR: LETTER = "?";
  3955. case VK_SUBTRACT: LETTER = "-";
  3956. case VK_DECIMAL: LETTER = ".";
  3957. case VK_DIVIDE: LETTER = "/";
  3958.  
  3959.  
  3960. }
  3961. }
  3962. }
  3963. return LETTER;
  3964. }
  3965.  
  3966. stock HexToRGBA(colour, &r, &g, &b, &a) //By Betamaster
  3967. {
  3968. r = (colour >> 24) & 0xFF;
  3969. g = (colour >> 16) & 0xFF;
  3970. b = (colour >> 8) & 0xFF;
  3971. a = colour & 0xFF;
  3972. }
  3973.  
  3974. stock RGBAToHex(r, g, b, a) //By Betamaster
  3975. {
  3976. return (r<<24 | g<<16 | b<<8 | a);
  3977. }
  3978.  
  3979. stock RemoveTextDrawTDE(Index)
  3980. {
  3981. format(ProjectTD[Index][ETextDrawText], 800, "");
  3982. ProjectTD[Index][ETextDrawPosX] = 0.0;
  3983. ProjectTD[Index][ETextDrawPosY] = 0.0;
  3984. ProjectTD[Index][ETextDrawLetterX] = 0.0;
  3985. ProjectTD[Index][ETextDrawLetterY] = 0.0;
  3986. ProjectTD[Index][ETextDrawTextX] = 0.0;
  3987. ProjectTD[Index][ETextDrawTextY] = 0.0;
  3988. ProjectTD[Index][ETextDrawOutline] = 0;
  3989. ProjectTD[Index][ETextDrawShadow] = 0;
  3990. ProjectTD[Index][ETextDrawModelid] = 0;
  3991. ProjectTD[Index][ETextDrawRotX] = 0.0;
  3992. ProjectTD[Index][ETextDrawRotY] = 0.0;
  3993. ProjectTD[Index][ETextDrawRotZ] = 0.0;
  3994. ProjectTD[Index][ETextDrawZoom] = 0.0;
  3995. ProjectTD[Index][ETextDrawType] = 0;
  3996. ProjectTD[Index][ETextDrawSelectable] = 0;
  3997. ProjectTD[Index][ETextDrawColor] = 0;
  3998. ProjectTD[Index][ETextDrawBGColor] = 0;
  3999. ProjectTD[Index][ETextDrawBoxColor] = 0;
  4000. ProjectTD[Index][ETextDrawVehCol1] = 0;
  4001. ProjectTD[Index][ETextDrawVehCol2] = 0;
  4002. TextDrawDestroy(ProjectTD[Index][ETextDrawID]);
  4003. ProjectTD[Index][ItsFromTDE] = -1;
  4004. ProjectTD[Index][ETextDrawID] = Text:INVALID_TEXT_DRAW;
  4005.  
  4006. new NewIndex = GetAvailableIndexBack(EditIndex);
  4007. EditIndex = NewIndex;
  4008. if(EditIndex == -1)
  4009. {
  4010. Loop(1, sizeof(TDE_Menu))
  4011. {
  4012. TextDrawColor(TDE_Menu[c], 0x888888FF);
  4013. TextDrawSetSelectable(TDE_Menu[c], false);
  4014. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  4015. }
  4016. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4017. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4018. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  4019. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4020. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4021. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4022. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4023. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4024. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  4025. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  4026. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4027. TextDrawColor(TDE_Menu[2], 0xDDDDDDFF);
  4028. TextDrawSetSelectable(TDE_Menu[2], true);
  4029. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[2]);
  4030. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  4031. EditMode = EDITMODE_NONE;
  4032. }
  4033. else
  4034. {
  4035. new string[128];
  4036. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}Now you are editing TextDraw {e2b960}#%d.", EditIndex);
  4037. SendClientMessage(ProjectEditor, -1, string);
  4038. UpdateIcons(EditIndex);
  4039.  
  4040. if(EditMode == EDITMODE_MODELS)
  4041. {
  4042. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  4043. EditMode = EDITMODE_NONE;
  4044. }
  4045. }
  4046. return 1;
  4047. }
  4048.  
  4049. stock RemoveTextDrawTDEOnly(Index)
  4050. {
  4051. format(ProjectTD[Index][ETextDrawText], 800, "");
  4052. ProjectTD[Index][ETextDrawPosX] = 0.0;
  4053. ProjectTD[Index][ETextDrawPosY] = 0.0;
  4054. ProjectTD[Index][ETextDrawLetterX] = 0.0;
  4055. ProjectTD[Index][ETextDrawLetterY] = 0.0;
  4056. ProjectTD[Index][ETextDrawTextX] = 0.0;
  4057. ProjectTD[Index][ETextDrawTextY] = 0.0;
  4058. ProjectTD[Index][ETextDrawOutline] = 0;
  4059. ProjectTD[Index][ETextDrawShadow] = 0;
  4060. ProjectTD[Index][ETextDrawModelid] = 0;
  4061. ProjectTD[Index][ETextDrawRotX] = 0.0;
  4062. ProjectTD[Index][ETextDrawRotY] = 0.0;
  4063. ProjectTD[Index][ETextDrawRotZ] = 0.0;
  4064. ProjectTD[Index][ETextDrawZoom] = 0.0;
  4065. ProjectTD[Index][ETextDrawType] = 0;
  4066. ProjectTD[Index][ETextDrawSelectable] = 0;
  4067. ProjectTD[Index][ETextDrawColor] = 0;
  4068. ProjectTD[Index][ETextDrawBGColor] = 0;
  4069. ProjectTD[Index][ETextDrawBoxColor] = 0;
  4070. ProjectTD[Index][ETextDrawVehCol1] = 0;
  4071. ProjectTD[Index][ETextDrawVehCol2] = 0;
  4072. TextDrawDestroy(ProjectTD[Index][ETextDrawID]);
  4073. ProjectTD[Index][ItsFromTDE] = -1;
  4074. ProjectTD[Index][ETextDrawID] = Text:INVALID_TEXT_DRAW;
  4075. return 1;
  4076. }
  4077.  
  4078. stock GetAvailableIndexBack(start)
  4079. {
  4080. for (new i = start; i != -1; i--)
  4081. {
  4082. if(ProjectTD[i][ItsFromTDE] == 1)
  4083. {
  4084. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4085. {
  4086. return i;
  4087. }
  4088. }
  4089. }
  4090.  
  4091. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4092. {
  4093. if(ProjectTD[i][ItsFromTDE] == 1)
  4094. {
  4095. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4096. {
  4097. return i;
  4098. }
  4099. }
  4100. }
  4101. return INVALID_INDEX_ID;
  4102. }
  4103.  
  4104. stock HexToInt(string[])//DracoBlue
  4105. {
  4106. if (string[0] == 0) return 0;
  4107. new i, cur=1, res = 0;
  4108. for (i=strlen(string);i>0;i--) {
  4109. if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  4110. cur=cur*16;
  4111. }
  4112. return res;
  4113. }
  4114.  
  4115. stock RGB( red, green, blue, alpha )
  4116. {
  4117. return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
  4118. }
  4119.  
  4120. stock ShowManage(playerid)
  4121. {
  4122. new d, c, dialog[310], str[31];
  4123. for (d = PageStart; d < MAX_PROJECT_TEXTDRAWS; d++)
  4124. {
  4125. if(ProjectTD[d][ItsFromTDE] == 1)
  4126. {
  4127. BackManageDialog[c] = 0;
  4128. c ++;
  4129. if(c == 11)
  4130. {
  4131. if(PageStart >= 10)
  4132. {
  4133. format(str, 30, ">>\n");
  4134. strcat(dialog, str);
  4135. }
  4136. else
  4137. {
  4138. format(str, 30, ">>");
  4139. strcat(dialog, str);
  4140. }
  4141. break;
  4142. }
  4143. if(TextDrawGetFont(ProjectTD[d][ETextDrawID]) == 5) format(str, 31, "%s(%i)ModelPreview: %d\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawModelid]);
  4144. else format(str, 31, "%s(%i)%s\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawText]);
  4145.  
  4146. if(strlen(str) >= 30)
  4147. {
  4148. strdel(str, 28, 30);
  4149. strcat(str, "\n");
  4150. }
  4151. strcat(dialog, str);
  4152. }
  4153. }
  4154. if(PageStart >= 10)
  4155. {
  4156. BackManageDialog[c] = 1;
  4157. format(str, 30, "<<");
  4158. strcat(dialog, str);
  4159. }
  4160. ShowPlayerDialog(playerid, DIALOG_MANAGE, DIALOG_STYLE_LIST, "TDEditor - Manage", dialog, ">>", "X");
  4161. IsPSel = false;
  4162. return 1;
  4163. }
  4164.  
  4165. stock DuplicateTextDraw(Index, ToIndex)
  4166. {
  4167. format(ProjectTD[ToIndex][ETextDrawText], 800, "%s", ProjectTD[Index][ETextDrawText]);
  4168. ProjectTD[ToIndex][ETextDrawPosX] = ProjectTD[Index][ETextDrawPosX];
  4169. ProjectTD[ToIndex][ETextDrawPosY] = ProjectTD[Index][ETextDrawPosY];
  4170. ProjectTD[ToIndex][ETextDrawLetterX] = ProjectTD[Index][ETextDrawLetterX];
  4171. ProjectTD[ToIndex][ETextDrawLetterY] = ProjectTD[Index][ETextDrawLetterY];
  4172. ProjectTD[ToIndex][ETextDrawTextX] = ProjectTD[Index][ETextDrawTextX];
  4173. ProjectTD[ToIndex][ETextDrawTextY] = ProjectTD[Index][ETextDrawTextY];
  4174. ProjectTD[ToIndex][ETextDrawOutline] = ProjectTD[Index][ETextDrawOutline];
  4175. ProjectTD[ToIndex][ETextDrawShadow] = ProjectTD[Index][ETextDrawShadow];
  4176. ProjectTD[ToIndex][ETextDrawModelid] = ProjectTD[Index][ETextDrawModelid];
  4177. ProjectTD[ToIndex][ETextDrawRotX] = ProjectTD[Index][ETextDrawRotX];
  4178. ProjectTD[ToIndex][ETextDrawRotY] = ProjectTD[Index][ETextDrawRotY];
  4179. ProjectTD[ToIndex][ETextDrawRotZ] = ProjectTD[Index][ETextDrawRotZ];
  4180. ProjectTD[ToIndex][ETextDrawZoom] = ProjectTD[Index][ETextDrawZoom];
  4181. ProjectTD[ToIndex][ETextDrawType] = ProjectTD[Index][ETextDrawType];
  4182. ProjectTD[ToIndex][ETextDrawSelectable] = ProjectTD[Index][ETextDrawSelectable];
  4183. ProjectTD[ToIndex][ETextDrawColor] = ProjectTD[Index][ETextDrawColor];
  4184. ProjectTD[ToIndex][ETextDrawBGColor] = ProjectTD[Index][ETextDrawBGColor];
  4185. ProjectTD[ToIndex][ETextDrawBoxColor] = ProjectTD[Index][ETextDrawBoxColor];
  4186. ProjectTD[ToIndex][ETextDrawVehCol1] = ProjectTD[Index][ETextDrawVehCol1];
  4187. ProjectTD[ToIndex][ETextDrawVehCol2] = ProjectTD[Index][ETextDrawVehCol2];
  4188.  
  4189. new Float:p[2];
  4190. TextDrawGetFontSize(ProjectTD[Index][ETextDrawID], p[0], p[1]);
  4191. ProjectTD[ToIndex][ETextDrawID] = TextDrawCreate(ProjectTD[ToIndex][ETextDrawPosX], ProjectTD[ToIndex][ETextDrawPosY], ProjectTD[ToIndex][ETextDrawText]);
  4192. TextDrawLetterSize(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawLetterX], ProjectTD[ToIndex][ETextDrawLetterY]);
  4193. TextDrawAlignment(ProjectTD[ToIndex][ETextDrawID], TextDrawGetAlignment(ProjectTD[Index][ETextDrawID]));
  4194. TextDrawColor(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawColor]);
  4195. TextDrawUseBox(ProjectTD[ToIndex][ETextDrawID], TextDrawIsBox(ProjectTD[Index][ETextDrawID]));
  4196. TextDrawTextSize(ProjectTD[ToIndex][ETextDrawID], p[0], p[1]);
  4197. TextDrawBoxColor(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawBoxColor]);
  4198. TextDrawSetShadow(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawShadow]);
  4199. TextDrawSetOutline(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawOutline]);
  4200. TextDrawBackgroundColor(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawBGColor]);
  4201. TextDrawFont(ProjectTD[ToIndex][ETextDrawID], TextDrawGetFont(ProjectTD[Index][ETextDrawID]));
  4202. TextDrawSetProportional(ProjectTD[ToIndex][ETextDrawID], TextDrawIsProportional(ProjectTD[Index][ETextDrawID]));
  4203.  
  4204. if(TextDrawGetFont(ProjectTD[Index][ETextDrawID]) == 5)
  4205. {
  4206. TextDrawSetPreviewModel(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawModelid]);
  4207. TextDrawSetPreviewRot(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawRotX], ProjectTD[ToIndex][ETextDrawRotY], ProjectTD[ToIndex][ETextDrawRotZ], ProjectTD[ToIndex][ETextDrawZoom]);
  4208. if(IsVehicle(ProjectTD[ToIndex][ETextDrawModelid])) TextDrawSetPreviewVehCol(ProjectTD[ToIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawVehCol1], ProjectTD[EditIndex][ETextDrawVehCol2]);
  4209. }
  4210. else
  4211. {
  4212. if(EditMode == EDITMODE_MODELS)
  4213. {
  4214. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  4215. EditMode = EDITMODE_NONE;
  4216. }
  4217. }
  4218. TextDrawShowForPlayer(ProjectEditor, ProjectTD[ToIndex][ETextDrawID]);
  4219. ProjectTD[ToIndex][ItsFromTDE] = ProjectTD[Index][ItsFromTDE];
  4220. return 1;
  4221. }
  4222.  
  4223. stock UpdateIcons(Index)
  4224. {
  4225. switch(TextDrawGetFont(ProjectTD[Index][ETextDrawID]))
  4226. {
  4227. case 0:
  4228. {
  4229. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4230. TextDrawSetSelectable(TDE_Menu[12], true);
  4231. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4232. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4233. TextDrawSetSelectable(TDE_Menu[15], true);
  4234. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4235. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4236. TextDrawSetSelectable(TDE_Menu[32], true);
  4237. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4238. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4239. TextDrawSetSelectable(TDE_Menu[16], true);
  4240. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4241. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4242. TextDrawSetSelectable(TDE_Menu[17], true);
  4243. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4244. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4245. TextDrawSetSelectable(TDE_Menu[18], true);
  4246. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4247. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4248. TextDrawSetSelectable(TDE_Menu[19], true);
  4249. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4250. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4251. TextDrawSetSelectable(TDE_Menu[20], true);
  4252. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4253. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4254. TextDrawSetSelectable(TDE_Menu[34], true);
  4255. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4256. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4257. TextDrawSetSelectable(TDE_Menu[21], true);
  4258. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4259. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4260. TextDrawSetSelectable(TDE_Menu[22], true);
  4261. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4262. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4263. TextDrawSetSelectable(TDE_Menu[23], true);
  4264. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4265. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4266. TextDrawSetSelectable(TDE_Menu[30], true);
  4267. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4268. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4269. TextDrawSetSelectable(TDE_Menu[31], true);
  4270. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4271.  
  4272. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4273. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4274. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4275. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4276. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4277. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4278. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4279. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4280. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[24]);
  4281. }
  4282. case 1:
  4283. {
  4284. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4285. TextDrawSetSelectable(TDE_Menu[12], true);
  4286. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4287. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4288. TextDrawSetSelectable(TDE_Menu[15], true);
  4289. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4290. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4291. TextDrawSetSelectable(TDE_Menu[32], true);
  4292. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4293. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4294. TextDrawSetSelectable(TDE_Menu[16], true);
  4295. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4296. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4297. TextDrawSetSelectable(TDE_Menu[17], true);
  4298. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4299. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4300. TextDrawSetSelectable(TDE_Menu[18], true);
  4301. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4302. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4303. TextDrawSetSelectable(TDE_Menu[19], true);
  4304. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4305. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4306. TextDrawSetSelectable(TDE_Menu[20], true);
  4307. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4308. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4309. TextDrawSetSelectable(TDE_Menu[34], true);
  4310. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4311. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4312. TextDrawSetSelectable(TDE_Menu[21], true);
  4313. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4314. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4315. TextDrawSetSelectable(TDE_Menu[22], true);
  4316. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4317. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4318. TextDrawSetSelectable(TDE_Menu[23], true);
  4319. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4320. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4321. TextDrawSetSelectable(TDE_Menu[30], true);
  4322. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4323. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4324. TextDrawSetSelectable(TDE_Menu[31], true);
  4325. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4326.  
  4327. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4328. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4329. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4330. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4331. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4332. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4333. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4334. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4335. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[25]);
  4336. }
  4337. case 2:
  4338. {
  4339. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4340. TextDrawSetSelectable(TDE_Menu[12], true);
  4341. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4342. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4343. TextDrawSetSelectable(TDE_Menu[15], true);
  4344. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4345. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4346. TextDrawSetSelectable(TDE_Menu[32], true);
  4347. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4348. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4349. TextDrawSetSelectable(TDE_Menu[16], true);
  4350. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4351. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4352. TextDrawSetSelectable(TDE_Menu[17], true);
  4353. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4354. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4355. TextDrawSetSelectable(TDE_Menu[18], true);
  4356. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4357. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4358. TextDrawSetSelectable(TDE_Menu[19], true);
  4359. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4360. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4361. TextDrawSetSelectable(TDE_Menu[20], true);
  4362. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4363. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4364. TextDrawSetSelectable(TDE_Menu[34], true);
  4365. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4366. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4367. TextDrawSetSelectable(TDE_Menu[21], true);
  4368. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4369. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4370. TextDrawSetSelectable(TDE_Menu[22], true);
  4371. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4372. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4373. TextDrawSetSelectable(TDE_Menu[23], true);
  4374. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4375. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4376. TextDrawSetSelectable(TDE_Menu[30], true);
  4377. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4378. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4379. TextDrawSetSelectable(TDE_Menu[31], true);
  4380. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4381.  
  4382. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4383. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4384. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4385. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4386. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4387. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4388. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4389. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4390. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[26]);
  4391. }
  4392. case 3:
  4393. {
  4394. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4395. TextDrawSetSelectable(TDE_Menu[12], true);
  4396. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4397. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4398. TextDrawSetSelectable(TDE_Menu[15], true);
  4399. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4400. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4401. TextDrawSetSelectable(TDE_Menu[32], true);
  4402. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4403. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4404. TextDrawSetSelectable(TDE_Menu[16], true);
  4405. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4406. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4407. TextDrawSetSelectable(TDE_Menu[17], true);
  4408. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4409. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4410. TextDrawSetSelectable(TDE_Menu[18], true);
  4411. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4412. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4413. TextDrawSetSelectable(TDE_Menu[19], true);
  4414. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4415. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4416. TextDrawSetSelectable(TDE_Menu[20], true);
  4417. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4418. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4419. TextDrawSetSelectable(TDE_Menu[34], true);
  4420. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4421. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4422. TextDrawSetSelectable(TDE_Menu[21], true);
  4423. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4424. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4425. TextDrawSetSelectable(TDE_Menu[22], true);
  4426. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4427. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4428. TextDrawSetSelectable(TDE_Menu[23], true);
  4429. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4430. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4431. TextDrawSetSelectable(TDE_Menu[30], true);
  4432. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4433. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4434. TextDrawSetSelectable(TDE_Menu[31], true);
  4435. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4436.  
  4437. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4438. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4439. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4440. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4441. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4442. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4443. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4444. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4445. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[27]);
  4446. }
  4447. case 4:
  4448. {
  4449. TextDrawColor(TDE_Menu[12], 0x888888FF);
  4450. TextDrawSetSelectable(TDE_Menu[12], false);
  4451. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4452. TextDrawColor(TDE_Menu[15], 0x888888FF);
  4453. TextDrawSetSelectable(TDE_Menu[15], false);
  4454. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4455. TextDrawColor(TDE_Menu[32], 0x888888FF);
  4456. TextDrawSetSelectable(TDE_Menu[32], false);
  4457. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4458. TextDrawColor(TDE_Menu[16], 0x888888FF);
  4459. TextDrawSetSelectable(TDE_Menu[16], false);
  4460. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4461. TextDrawColor(TDE_Menu[17], 0x888888FF);
  4462. TextDrawSetSelectable(TDE_Menu[17], false);
  4463. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4464. TextDrawColor(TDE_Menu[18], 0x888888FF);
  4465. TextDrawSetSelectable(TDE_Menu[18], false);
  4466. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4467. TextDrawColor(TDE_Menu[19], 0x888888FF);
  4468. TextDrawSetSelectable(TDE_Menu[19], false);
  4469. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4470. TextDrawColor(TDE_Menu[20], 0x888888FF);
  4471. TextDrawSetSelectable(TDE_Menu[20], false);
  4472. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4473. TextDrawColor(TDE_Menu[34], 0x888888FF);
  4474. TextDrawSetSelectable(TDE_Menu[34], false);
  4475. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4476. TextDrawColor(TDE_Menu[21], 0x888888FF);
  4477. TextDrawSetSelectable(TDE_Menu[21], false);
  4478. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4479. TextDrawColor(TDE_Menu[22], 0x888888FF);
  4480. TextDrawSetSelectable(TDE_Menu[22], false);
  4481. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4482. TextDrawColor(TDE_Menu[23], 0x888888FF);
  4483. TextDrawSetSelectable(TDE_Menu[23], false);
  4484. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4485. TextDrawColor(TDE_Menu[30], 0x888888FF);
  4486. TextDrawSetSelectable(TDE_Menu[30], false);
  4487. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4488. TextDrawColor(TDE_Menu[31], 0x888888FF);
  4489. TextDrawSetSelectable(TDE_Menu[31], false);
  4490. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4491.  
  4492. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4493. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4494. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4495. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4496. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4497. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4498. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4499. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4500. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4501.  
  4502. }
  4503. case 5:
  4504. {
  4505. TextDrawColor(TDE_Menu[12], 0x888888FF);
  4506. TextDrawSetSelectable(TDE_Menu[12], false);
  4507. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4508. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4509. TextDrawSetSelectable(TDE_Menu[15], true);
  4510. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4511. TextDrawColor(TDE_Menu[32], 0x888888FF);
  4512. TextDrawSetSelectable(TDE_Menu[32], false);
  4513. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4514. TextDrawColor(TDE_Menu[16], 0x888888FF);
  4515. TextDrawSetSelectable(TDE_Menu[16], false);
  4516. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4517. TextDrawColor(TDE_Menu[17], 0x888888FF);
  4518. TextDrawSetSelectable(TDE_Menu[17], false);
  4519. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4520. TextDrawColor(TDE_Menu[18], 0x888888FF);
  4521. TextDrawSetSelectable(TDE_Menu[18], false);
  4522. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4523. TextDrawColor(TDE_Menu[19], 0x888888FF);
  4524. TextDrawSetSelectable(TDE_Menu[19], false);
  4525. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4526. TextDrawColor(TDE_Menu[20], 0x888888FF);
  4527. TextDrawSetSelectable(TDE_Menu[20], false);
  4528. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4529. TextDrawColor(TDE_Menu[34], 0x888888FF);
  4530. TextDrawSetSelectable(TDE_Menu[34], false);
  4531. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4532. TextDrawColor(TDE_Menu[21], 0x888888FF);
  4533. TextDrawSetSelectable(TDE_Menu[21], false);
  4534. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4535. TextDrawColor(TDE_Menu[22], 0x888888FF);
  4536. TextDrawSetSelectable(TDE_Menu[22], false);
  4537. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4538. TextDrawColor(TDE_Menu[23], 0x888888FF);
  4539. TextDrawSetSelectable(TDE_Menu[23], false);
  4540. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4541. TextDrawColor(TDE_Menu[30], 0x888888FF);
  4542. TextDrawSetSelectable(TDE_Menu[30], false);
  4543. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4544. TextDrawColor(TDE_Menu[31], 0x888888FF);
  4545. TextDrawSetSelectable(TDE_Menu[31], false);
  4546. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4547.  
  4548. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4549. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4550. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4551. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4552. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4553. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4554. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[13]);
  4555. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[11]);
  4556. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[35]);
  4557. }
  4558. }
  4559.  
  4560. if(TextDrawIsBox(ProjectTD[Index][ETextDrawID]))
  4561. {
  4562. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[19]);
  4563. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  4564. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[34]);
  4565. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4566. }
  4567. else
  4568. {
  4569. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[19]);
  4570. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  4571. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[34]);
  4572. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4573. }
  4574.  
  4575.  
  4576.  
  4577. switch(TextDrawGetAlignment(ProjectTD[Index][ETextDrawID]))
  4578. {
  4579. case 1:
  4580. {
  4581. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  4582. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4583. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4584. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4585. }
  4586. case 2:
  4587. {
  4588. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  4589. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4590. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4591. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4592. }
  4593. case 3:
  4594. {
  4595. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  4596. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4597. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4598. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4599. }
  4600. }
  4601.  
  4602. switch(ProjectTD[Index][ETextDrawType])
  4603. {
  4604. case 0:
  4605. {
  4606. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[5]);
  4607. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  4608. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[5]);
  4609. }
  4610. case 1:
  4611. {
  4612. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[5]);
  4613. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  4614. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[33]);
  4615. }
  4616. }
  4617.  
  4618. switch(ProjectTD[Index][ETextDrawSelectable])
  4619. {
  4620. case 0:
  4621. {
  4622. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[28]);
  4623. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  4624. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[28]);
  4625. }
  4626. case 1:
  4627. {
  4628. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[28]);
  4629. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  4630. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[29]);
  4631. }
  4632. }
  4633.  
  4634. switch(TextDrawIsProportional(ProjectTD[Index][ETextDrawID]))
  4635. {
  4636. case 0:
  4637. {
  4638. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[30]);
  4639. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[31]);
  4640. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4641. }
  4642. case 1:
  4643. {
  4644. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[30]);
  4645. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[31]);
  4646. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4647. }
  4648. }
  4649. return 1;
  4650. }
  4651.  
  4652. stock IsVehicle(modelid)
  4653. {
  4654. if(modelid >= 400 && modelid <= 611) return true;
  4655. return false;
  4656. }
  4657.  
  4658.  
  4659. stock SaveProject()
  4660. {
  4661. if(!strlen(ProjectFile)) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Load the project first.");
  4662. if(fexist(ProjectFile)) fremove(ProjectFile);
  4663. Handler = fopen(ProjectFile, io_append);
  4664. if(!Handler) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Couldn't save the project.");
  4665.  
  4666. new alignment, usebox, font, proportional;
  4667. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4668. {
  4669. if(ProjectTD[i][ItsFromTDE] == 1)
  4670. {
  4671.  
  4672. alignment = TextDrawGetAlignment(ProjectTD[i][ETextDrawID]);
  4673. usebox = TextDrawIsBox(ProjectTD[i][ETextDrawID]);
  4674. font = TextDrawGetFont(ProjectTD[i][ETextDrawID]);
  4675. proportional = TextDrawIsProportional(ProjectTD[i][ETextDrawID]);
  4676. format(Pro_Str, sizeof(Pro_Str),
  4677. "%f|%f|%f|%f|%f|%f|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%s|%d|%f|%f|%f|%f|%d|%d\r\n",
  4678. ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY],
  4679. ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY],
  4680. ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY],
  4681. alignment, ProjectTD[i][ETextDrawColor],
  4682. usebox, ProjectTD[i][ETextDrawBoxColor],
  4683. ProjectTD[i][ETextDrawShadow], ProjectTD[i][ETextDrawOutline],
  4684. ProjectTD[i][ETextDrawBGColor], font,
  4685. proportional, ProjectTD[i][ETextDrawSelectable],
  4686. ProjectTD[i][ETextDrawType], ProjectTD[i][ETextDrawText],
  4687. ProjectTD[i][ETextDrawModelid],
  4688. ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom],
  4689. ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]);
  4690. fwrite(Handler, Pro_Str);
  4691. }
  4692. }
  4693. fclose(Handler);
  4694. return true;
  4695. }
  4696.  
  4697. stock LoadProject()
  4698. {
  4699. if(!strlen(ProjectFile)) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Couldnt load the project.");
  4700. Handler = fopen(ProjectFile, io_read);
  4701. if(!Handler) return false;
  4702. new i, alignment, usebox, font, proportional;
  4703. while(fread(Handler, Pro_Str))
  4704. {
  4705. StripNewLine(Pro_Str);
  4706. if(!sscanf(Pro_Str, "p<|>ffffffiiiiiiiiiiis[128]dffffdd",
  4707. ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY],
  4708. ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY],
  4709. ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY],
  4710. alignment, ProjectTD[i][ETextDrawColor],
  4711. usebox, ProjectTD[i][ETextDrawBoxColor],
  4712. ProjectTD[i][ETextDrawShadow], ProjectTD[i][ETextDrawOutline],
  4713. ProjectTD[i][ETextDrawBGColor], font,
  4714. proportional, ProjectTD[i][ETextDrawSelectable],
  4715. ProjectTD[i][ETextDrawType], ProjectTD[i][ETextDrawText],
  4716. ProjectTD[i][ETextDrawModelid],
  4717. ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom],
  4718. ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]))
  4719. {
  4720. EditIndex = i;
  4721.  
  4722. ProjectTD[i][ETextDrawID] = TextDrawCreate(ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY], ProjectTD[i][ETextDrawText]);
  4723. TextDrawLetterSize(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY]);
  4724. TextDrawAlignment(ProjectTD[i][ETextDrawID], alignment);
  4725. TextDrawColor(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawColor]);
  4726. TextDrawUseBox(ProjectTD[i][ETextDrawID], usebox);
  4727. TextDrawSetShadow(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawShadow]);
  4728. TextDrawSetOutline(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawOutline]);
  4729. TextDrawBackgroundColor(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawBGColor]);
  4730. TextDrawFont(ProjectTD[i][ETextDrawID], font);
  4731. TextDrawSetProportional(ProjectTD[i][ETextDrawID], proportional);
  4732. TextDrawTextSize(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY]);
  4733. TextDrawBoxColor(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawBoxColor]);
  4734. if(font == 5)
  4735. {
  4736. TextDrawSetPreviewModel(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawModelid]);
  4737. TextDrawSetPreviewRot(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom]);
  4738. if(IsVehicle(ProjectTD[i][ETextDrawModelid])) TextDrawSetPreviewVehCol(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]);
  4739. }
  4740. ProjectTD[i][ItsFromTDE] = 1;
  4741. TextDrawShowForPlayer(ProjectEditor, ProjectTD[i][ETextDrawID]);
  4742. i++;
  4743. }
  4744. }
  4745.  
  4746. fclose(Handler);
  4747. PageStart = 0;
  4748. // UpdateIcons(EditIndex);
  4749. return true;
  4750. }
  4751.  
  4752. stock StripNewLine(string[]) //DracoBlue (bugfix idea by Y_Less)
  4753. {
  4754. new len = strlen(string);
  4755. if (string[0]==0) return ;
  4756. if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
  4757. string[len - 1] = 0;
  4758. if (string[0]==0) return ;
  4759. if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
  4760. }
  4761. }
  4762.  
  4763. stock CheckProject(name[])
  4764. {
  4765. if(!fexist("tdelist.txt")) return false;
  4766.  
  4767. Handler = fopen("tdelist.txt", io_read);
  4768. if(!Handler) return -1;
  4769.  
  4770. while(fread(Handler, Pro_Str))
  4771. {
  4772. if(!strcmp(Pro_Str, name, true, strlen(name)))
  4773. {
  4774. fclose(Handler);
  4775. return true;
  4776. }
  4777. }
  4778. fclose(Handler);
  4779. return false;
  4780. }
  4781.  
  4782. stock AddProject(name[])
  4783. {
  4784. Handler = fopen("tdelist.txt", io_append);
  4785. if(!Handler) return false;
  4786.  
  4787. fwrite(Handler, name);
  4788. fwrite(Handler, "\r\n");
  4789. fclose(Handler);
  4790. return true;
  4791. }
  4792.  
  4793. stock CloseProject()
  4794. {
  4795. if(!strlen(ProjectFile)) return false;
  4796.  
  4797. SaveProject();
  4798. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++) RemoveTextDrawTDEOnly(i);
  4799.  
  4800. EditIndex = INVALID_INDEX_ID;
  4801. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  4802. EditMode = EDITMODE_NONE;
  4803. ColorMode = COLORMODE_NONE;
  4804. EmptyString(ProjectFile);
  4805. ShowEditorEx();
  4806. IsPSel = false;
  4807. KillTimer(EditorUpdateTimer);
  4808. EmptyString(ProjectFile);
  4809. return true;
  4810. }
  4811.  
  4812. stock IsValidProjectName(name[])
  4813. {
  4814. Loop(0, strlen(name))
  4815. {
  4816. switch(name[c])
  4817. {
  4818. case 'A' .. 'Z', 'a' .. 'z', '0' .. '9', '-', '_', '(', ')': continue;
  4819. default: return false;
  4820. }
  4821. }
  4822. return true;
  4823. }
  4824.  
  4825. stock ExportProject()
  4826. {
  4827. if(!strlen(ProjectFile)) return false;
  4828.  
  4829. new ExportFile[64];
  4830. format(ExportFile, sizeof(ExportFile), "%s", ProjectFile);
  4831. strins(ExportFile, "TDE_", 0);
  4832. new len = strlen(ExportFile);
  4833. strdel(ExportFile, len - 3, len);
  4834. strcat(ExportFile, "txt");
  4835.  
  4836. if(fexist(ExportFile)) fremove(ExportFile);
  4837.  
  4838. new File:ExportIO = fopen(ExportFile, io_append);
  4839. if(!ExportIO) return false;
  4840.  
  4841. new Index, global, player;
  4842. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4843. {
  4844. if(ProjectTD[i][ItsFromTDE] == 1)
  4845. {
  4846. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4847. {
  4848. if(ProjectTD[i][ETextDrawType] == 0)
  4849. {
  4850. Index++;
  4851. global++;
  4852. }
  4853. }
  4854. }
  4855. }
  4856.  
  4857. if(Index != 0)
  4858. {
  4859. fwrite(ExportIO, "//Global TextDraws: \r\n\r\n\r\n");
  4860. format(line, sizeof(line), "new Text:TDEditor_TD[%i];\r\n", Index); fwrite(ExportIO, line);
  4861. Index = 0;
  4862. new alignment, font, proportion;
  4863. fwrite(ExportIO, "\r\n");
  4864. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4865. {
  4866. if(ProjectTD[i][ItsFromTDE] == 1)
  4867. {
  4868. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4869. {
  4870. if(ProjectTD[i][ETextDrawType] == 0)
  4871. {
  4872. alignment = TextDrawGetAlignment(ProjectTD[i][ETextDrawID]);
  4873. font = TextDrawGetFont(ProjectTD[i][ETextDrawID]);
  4874. proportion = TextDrawIsProportional(ProjectTD[i][ETextDrawID]);
  4875. format(line, sizeof(line), "TDEditor_TD[%i] = TextDrawCreate(%f, %f, \"%s\");\r\n", Index, ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY], ProjectTD[i][ETextDrawText]); fwrite(ExportIO, line);
  4876. format(line, sizeof(line), "TextDrawLetterSize(TDEditor_TD[%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY]); fwrite(ExportIO, line);
  4877. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]) || font == 4 || font == 5)
  4878. {
  4879. if(alignment == 2)
  4880. {
  4881. format(line, sizeof(line), "TextDrawTextSize(TDEditor_TD[%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextY], ProjectTD[i][ETextDrawTextX]);
  4882. fwrite(ExportIO, line);
  4883. }
  4884. else
  4885. {
  4886. format(line, sizeof(line), "TextDrawTextSize(TDEditor_TD[%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY]);
  4887. fwrite(ExportIO, line);
  4888. }
  4889. }
  4890. format(line, sizeof(line), "TextDrawAlignment(TDEditor_TD[%i], %d);\r\n", Index, alignment); fwrite(ExportIO, line);
  4891. format(line, sizeof(line), "TextDrawColor(TDEditor_TD[%i], %i);\r\n", Index, ProjectTD[i][ETextDrawColor]); fwrite(ExportIO, line);
  4892. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]))
  4893. {
  4894. format(line, sizeof(line), "TextDrawUseBox(TDEditor_TD[%i], 1);\r\n", Index); fwrite(ExportIO, line);
  4895. format(line, sizeof(line), "TextDrawBoxColor(TDEditor_TD[%i], %i);\r\n", Index, ProjectTD[i][ETextDrawBoxColor]); fwrite(ExportIO, line);
  4896. }
  4897. format(line, sizeof(line), "TextDrawSetShadow(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4898. format(line, sizeof(line), "TextDrawSetOutline(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawOutline]); fwrite(ExportIO, line);
  4899. format(line, sizeof(line), "TextDrawBackgroundColor(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawBGColor]); fwrite(ExportIO, line);
  4900. format(line, sizeof(line), "TextDrawFont(TDEditor_TD[%i], %d);\r\n", Index, font); fwrite(ExportIO, line);
  4901. format(line, sizeof(line), "TextDrawSetProportional(TDEditor_TD[%i], %d);\r\n", Index, proportion); fwrite(ExportIO, line);
  4902. format(line, sizeof(line), "TextDrawSetShadow(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4903.  
  4904. if(ProjectTD[i][ETextDrawSelectable])
  4905. {
  4906. format(line, sizeof(line), "TextDrawSetSelectable(TDEditor_TD[%i], true);\r\n", Index); fwrite(ExportIO, line);
  4907. }
  4908.  
  4909. if(font == 5)
  4910. {
  4911. format(line, sizeof(line), "TextDrawSetPreviewModel(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawModelid]); fwrite(ExportIO, line);
  4912. format(line, sizeof(line), "TextDrawSetPreviewRot(TDEditor_TD[%i], %f, %f, %f, %f);\r\n", Index, ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom]); fwrite(ExportIO, line);
  4913. if(IsVehicle(ProjectTD[i][ETextDrawModelid]))
  4914. {
  4915. format(line, sizeof(line), "TextDrawSetPreviewVehCol(TDEditor_TD[%i], %d, %d);\r\n", Index, ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]); fwrite(ExportIO, line);
  4916. }
  4917. }
  4918. format(line, sizeof(line), "\r\n"); fwrite(ExportIO, line);
  4919. Index ++;
  4920. }
  4921. }
  4922. }
  4923. }
  4924. }
  4925.  
  4926. Index = 0;
  4927.  
  4928. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4929. {
  4930. if(ProjectTD[i][ItsFromTDE] == 1)
  4931. {
  4932. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4933. {
  4934. if(ProjectTD[i][ETextDrawType] == 1)
  4935. {
  4936. Index++;
  4937. player++;
  4938. }
  4939. }
  4940. }
  4941. }
  4942.  
  4943. if(Index != 0)
  4944. {
  4945. if(global > 0) fwrite(ExportIO, "\r\n\r\n");
  4946. fwrite(ExportIO, "//Player TextDraws: \r\n\r\n\r\n");
  4947. format(line, sizeof(line), "new Text:TDEditor_PTD[MAX_PLAYERS][%i];\r\n", Index); fwrite(ExportIO, line);
  4948. Index = 0;
  4949. new alignment, font, proportion;
  4950. fwrite(ExportIO, "\r\n");
  4951. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4952. {
  4953. if(ProjectTD[i][ItsFromTDE] == 1)
  4954. {
  4955. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4956. {
  4957. if(ProjectTD[i][ETextDrawType] == 1)
  4958. {
  4959. alignment = TextDrawGetAlignment(ProjectTD[i][ETextDrawID]);
  4960. font = TextDrawGetFont(ProjectTD[i][ETextDrawID]);
  4961. proportion = TextDrawIsProportional(ProjectTD[i][ETextDrawID]);
  4962. format(line, sizeof(line), "TDEditor_PTD[playerid][%i] = CreatePlayerTextDraw(playerid, %f, %f, \"%s\");\r\n", Index, ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY], ProjectTD[i][ETextDrawText]); fwrite(ExportIO, line);
  4963. format(line, sizeof(line), "PlayerTextDrawLetterSize(playerid, TDEditor_PTD[playerid][%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY]); fwrite(ExportIO, line);
  4964. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]) || font == 4 || font == 5)
  4965. {
  4966. if(alignment == 2)
  4967. {
  4968. format(line, sizeof(line), "PlayerTextDrawTextSize(playerid, TDEditor_PTD[playerid][%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextY], ProjectTD[i][ETextDrawTextX]);
  4969. fwrite(ExportIO, line);
  4970. }
  4971. else
  4972. {
  4973. format(line, sizeof(line), "PlayerTextDrawTextSize(playerid, TDEditor_PTD[playerid][%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY]);
  4974. fwrite(ExportIO, line);
  4975. }
  4976. }
  4977. format(line, sizeof(line), "PlayerTextDrawAlignment(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, alignment); fwrite(ExportIO, line);
  4978. format(line, sizeof(line), "PlayerTextDrawColor(playerid, TDEditor_PTD[playerid][%i], %i);\r\n", Index, ProjectTD[i][ETextDrawColor]); fwrite(ExportIO, line);
  4979. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]))
  4980. {
  4981. format(line, sizeof(line), "PlayerTextDrawUseBox(playerid, TDEditor_PTD[playerid][%i], 1);\r\n", Index); fwrite(ExportIO, line);
  4982. format(line, sizeof(line), "PlayerTextDrawBoxColor(playerid, TDEditor_PTD[playerid][%i], %i);\r\n", Index, ProjectTD[i][ETextDrawBoxColor]); fwrite(ExportIO, line);
  4983. }
  4984. format(line, sizeof(line), "PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4985. format(line, sizeof(line), "PlayerTextDrawSetOutline(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawOutline]); fwrite(ExportIO, line);
  4986. format(line, sizeof(line), "PlayerTextDrawBackgroundColor(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawBGColor]); fwrite(ExportIO, line);
  4987. format(line, sizeof(line), "PlayerTextDrawFont(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, font); fwrite(ExportIO, line);
  4988. format(line, sizeof(line), "PlayerTextDrawSetProportional(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, proportion); fwrite(ExportIO, line);
  4989. format(line, sizeof(line), "PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4990.  
  4991. if(ProjectTD[i][ETextDrawSelectable])
  4992. {
  4993. format(line, sizeof(line), "PlayerTextDrawSetSelectable(playerid, TDEditor_PTD[playerid][%i], true);\r\n", Index); fwrite(ExportIO, line);
  4994. }
  4995.  
  4996. if(font == 5)
  4997. {
  4998. format(line, sizeof(line), "PlayerTextDrawSetPreviewModel(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawModelid]); fwrite(ExportIO, line);
  4999. format(line, sizeof(line), "PlayerTextDrawSetPreviewRot(playerid, TDEditor_PTD[playerid][%i], %f, %f, %f, %f);\r\n", Index, ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom]); fwrite(ExportIO, line);
  5000. if(IsVehicle(ProjectTD[i][ETextDrawModelid]))
  5001. {
  5002. format(line, sizeof(line), "PlayerTextDrawSetPreviewVehCol(playerid, TDEditor_PTD[playerid][%i], %d, %d);\r\n", Index, ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]); fwrite(ExportIO, line);
  5003. }
  5004. }
  5005. format(line, sizeof(line), "\r\n"); fwrite(ExportIO, line);
  5006. Index ++;
  5007. }
  5008. }
  5009. }
  5010. }
  5011. }
  5012.  
  5013. new Hour, Minute, Second;
  5014. gettime(Hour, Minute, Second);
  5015. new Year, Month, Day;
  5016. getdate(Year, Month, Day);
  5017.  
  5018. format(line, sizeof(line), "\r\n\r\n\r\n//Total textdraws exported: %d (%d global textdraws / %d player textdraws) ~ %d/%d/%d ~ %d:%d:%d", (global+player), global, player, Day, Month, Year, Hour, Minute, Second); fwrite(ExportIO, line);
  5019. format(line, sizeof(line), "\r\nTDEditor V1.14 by adri1"); fwrite(ExportIO, line);
  5020. fclose(ExportIO);
  5021.  
  5022. new str[128];
  5023. format(str, 128, "{e2b960}TDEditor: {FFFFFF}Proyecto exportado (%s, %d global textdraws, %d player textdraws).", ExportFile, global, player);
  5024. SendClientMessage(ProjectEditor, -1, str);
  5025. return 1;
  5026. }
  5027.  
  5028. static DelayShowInfoDrawTimer;
  5029. static Text:InfoDraw = Text:-1;
  5030.  
  5031.  
  5032. static CreateInfoDraws()
  5033. {
  5034. InfoDraw = TextDrawCreate(320.000000, 217.000000, "320.000,_320.000~n~");
  5035. TextDrawLetterSize(InfoDraw, 0.659499, 2.686399);
  5036. TextDrawAlignment(InfoDraw, 2);
  5037. TextDrawColor(InfoDraw, -1);
  5038. TextDrawSetShadow(InfoDraw, 0);
  5039. TextDrawSetOutline(InfoDraw, 2);
  5040. TextDrawBackgroundColor(InfoDraw, 255);
  5041. TextDrawFont(InfoDraw, 2);
  5042. TextDrawSetProportional(InfoDraw, 1);
  5043. TextDrawSetShadow(InfoDraw, 0);
  5044. return 1;
  5045. }
  5046.  
  5047. static DestroyInfoDraws()
  5048. {
  5049. TextDrawDestroy(InfoDraw);
  5050. InfoDraw = Text:-1;
  5051. return 1;
  5052. }
  5053.  
  5054. static ShowInfoDraw(text[], time)
  5055. {
  5056. if(_:InfoDraw == -1) CreateInfoDraws();
  5057. KillTimer(DelayShowInfoDrawTimer);
  5058. TextDrawDestroy(InfoDraw);
  5059. CreateInfoDraws();
  5060. TextDrawSetString(InfoDraw, text);
  5061. TextDrawShowForPlayer(ProjectEditor, InfoDraw);
  5062. DelayShowInfoDrawTimer = SetTimer("HideInfoDraw", time, false);
  5063. return 1;
  5064. }
  5065.  
  5066. forward HideInfoDraw();
  5067. public HideInfoDraw()
  5068. {
  5069. DestroyInfoDraws();
  5070. return 1;
  5071. }
  5072.  
  5073.  
  5074.  
  5075. /*
  5076.  
  5077. ___ __ __
  5078. | | \|_ _|.|_ _ _
  5079. | |__/|__(_|||_(_)|
  5080.  
  5081. TDEditor 1.14 by adri1
  5082.  
  5083. */
Advertisement
Add Comment
Please, Sign In to add comment