Caiotesio

TEXTDRAWN CRIADOR

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