Advertisement
Guest User

Untitled

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