adri1

TDE 1.13 Español

Oct 25th, 2014
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 203.31 KB | None | 0 0
  1.  
  2.  
  3. #include <a_samp>
  4. #include <sscanf2>
  5. #include <YSF>
  6.  
  7.  
  8. /*
  9.  
  10. ___ __ __
  11. | | \|_ _|.|_ _ _
  12. | |__/|__(_|||_(_)|
  13.  
  14. Version 1.13
  15. TDEditor Credits:
  16.  
  17. - adri1 USER PROFILE: http://forum.sa-mp.com/member.php?u=106967
  18. - iPLEOMAX USER PROFILE: http://forum.sa-mp.com/member.php?u=122705
  19. - Sasino97 (IsKeyDown plugin) USER PROFILE: http://forum.sa-mp.com/member.php?u=111937
  20. - kurta999 (YSF plugin) USER PROFILE: http://forum.sa-mp.com/member.php?u=50263
  21. - Y_Less (sscanf2 plugin & YSF plugin) USER PROFILE: http://forum.sa-mp.com/member.php?u=29176
  22.  
  23.  
  24.  
  25. IsKeyDown plugin was modified by adri1, adding the following functions:
  26.  
  27. native PressKeyEnter(key);
  28. native PressAnyKey(key);
  29. native GetKeyState(key);
  30. native GetDoubleClickTime();
  31. native ActivateAnyKey();
  32. native ActivateAnyKeyVariable(valor);
  33. forward OnAnyKeyDown(key);
  34. */
  35.  
  36.  
  37. #define VK_KEY_A 0x41
  38. #define VK_KEY_B 0x42
  39. #define VK_KEY_C 0x43
  40. #define VK_KEY_D 0x44
  41. #define VK_KEY_E 0x45
  42. #define VK_KEY_F 0x46
  43. #define VK_KEY_G 0x47
  44. #define VK_KEY_H 0x48
  45. #define VK_KEY_I 0x49
  46. #define VK_KEY_J 0x4A
  47. #define VK_KEY_K 0x4B
  48. #define VK_KEY_L 0x4C
  49. #define VK_KEY_M 0x4D
  50. #define VK_KEY_N 0x4E
  51. #define VK_KEY_O 0x4F
  52. #define VK_KEY_P 0x50
  53. #define VK_KEY_Q 0x51
  54. #define VK_KEY_R 0x52
  55. #define VK_KEY_S 0x53
  56. #define VK_KEY_T 0x54
  57. #define VK_KEY_U 0x55
  58. #define VK_KEY_V 0x56
  59. #define VK_KEY_W 0x57
  60. #define VK_KEY_X 0x58
  61. #define VK_KEY_Y 0x59
  62. #define VK_KEY_Z 0x5A
  63. #define VK_LBUTTON 0x01
  64. #define VK_MBUTTON 0x04
  65. #define VK_RBUTTON 0x02
  66. #define VK_UP 0x26
  67. #define VK_DOWN 0x28
  68. #define VK_LEFT 0x25
  69. #define VK_RIGHT 0x27
  70. #define VK_LSHIFT 0xA0
  71. #define VK_RSHIFT 0xA1
  72. #define VK_SPACE 0x20
  73. #define VK_CANCEL 0x03
  74. #define VK_BACKSPACE 0x08
  75. #define VK_TAB 0x09
  76. #define VK_CLEAR 0x0C
  77. #define VK_ENTER 0x0D
  78. #define VK_SHIFT 0x10
  79. #define VK_LSHIFT 0xA0
  80. #define VK_RSHIFT 0xA1
  81. #define VK_CTRL 0x11
  82. #define VK_LCTRL 0xA2
  83. #define VK_RCTRL 0xA3
  84. #define VK_ALT 0x12
  85. #define VK_CAPSLOCK 0x14
  86. #define VK_ESCAPE 0x1B
  87. #define VK_SELECT 0x29
  88. #define VK_INSERT 0x2D
  89. #define VK_DELETE 0x2E
  90. #define VK_HELP 0x2F
  91. #define VK_KEYB0 0x30
  92. #define VK_KEYB1 0x31
  93. #define VK_KEYB2 0x32
  94. #define VK_KEYB3 0x33
  95. #define VK_KEYB4 0x34
  96. #define VK_KEYB5 0x35
  97. #define VK_KEYB6 0x36
  98. #define VK_KEYB7 0x37
  99. #define VK_KEYB8 0x38
  100. #define VK_KEYB9 0x39
  101. #define VK_NUMLOCK 0x90
  102. #define VK_NUMPAD0 0x60
  103. #define VK_NUMPAD1 0x61
  104. #define VK_NUMPAD2 0x62
  105. #define VK_NUMPAD3 0x63
  106. #define VK_NUMPAD4 0x64
  107. #define VK_NUMPAD5 0x65
  108. #define VK_NUMPAD6 0x66
  109. #define VK_NUMPAD7 0x67
  110. #define VK_NUMPAD8 0x68
  111. #define VK_NUMPAD9 0x69
  112. #define VK_MULTIPLY 0x6A
  113. #define VK_ADD 0x6B
  114. #define VK_SEPARATOR 0x6C
  115. #define VK_SUBTRACT 0x6D
  116. #define VK_DECIMAL 0x6E
  117. #define VK_DIVIDE 0x6F
  118. #define VK_OEM_PLUS 0xBB
  119. #define VK_OEM_COMMA 0xBC
  120. #define VK_OEM_MINUS 0xBD
  121. #define VK_OEM_PERIOD 0xBE
  122. #define VK_OEM_2 0xBF
  123. #define VK_OEM_4 0xDB
  124. #define VK_OEM_5 0xDC
  125. #define VK_OEM_6 0xDD
  126. #define VK_XBUTTON1 0x05
  127. #define VK_XBUTTON2 0x06
  128. #define VK_OEM_102 0xE2
  129. #define VK_F6 0x75
  130. #define VK_END 0x23
  131. #define VK_HOME 0x24
  132.  
  133. #define EmptyString(%0) %0[0] = '\0'
  134. #define INVALID_INDEX_ID (-1)
  135. #define TDE_CALLBACK:%0(%1) forward %0(%1); public %0(%1)
  136. #define Loop(%0,%1) for (new c = %0; c < %1; c++)
  137. #define MAX_PROJECT_TEXTDRAWS (500)
  138.  
  139. native GetVirtualKeyState(key);
  140. native GetScreenSize(&Width, &Height);
  141. native GetMousePos(&X, &Y);
  142. native PressKeyEnter(key);
  143. native PressAnyKey(key);
  144. native GetKeyState(key);
  145. native GetDoubleClickTime();
  146. native ActivateAnyKey();
  147. native ActivateAnyKeyVariable(valor);
  148. forward OnAnyKeyDown(key);
  149.  
  150.  
  151. enum
  152. {
  153. DIALOG_PROJECT = 6666,
  154. DIALOG_PROJECT_LIST,
  155. DIALOG_NEWPROJECT,
  156. DIALOG_LOADPROJECT,
  157. DIALOG_CLOSEPROJECT,
  158. DIALOG_DELETETD,
  159. DIALOG_TDLIST,
  160. DIALOG_EDITTEXT,
  161. DIALOG_EDITOUTLINE,
  162. DIALOG_EDITSHADOW,
  163. DIALOG_LETTERX,
  164. DIALOG_LETTERY,
  165. DIALOG_POSX,
  166. DIALOG_POSY,
  167. DIALOG_CONFIRMEDELETE,
  168. DIALOG_EDITCOLOR,
  169. DIALOG_SIZEX,
  170. DIALOG_SIZEY,
  171. DIALOG_NEW,
  172. DIALOG_MODELID,
  173. DIALOG_MODELS,
  174. DIALOG_MODELS_MLD,
  175. DIALOG_MODELS_RX,
  176. DIALOG_MODELS_RY,
  177. DIALOG_MODELS_RZ,
  178. DIALOG_MODELS_ZO,
  179. DIALOG_MODELS_C1,
  180. DIALOG_MODELS_C2,
  181. DIALOG_MANAGE = 7777
  182. };
  183.  
  184. enum E_KEY_STRUCT
  185. {
  186. bool:KEY_PRESSED,
  187. KEY_CODE,
  188. };
  189.  
  190. enum E_TD_STRUCT
  191. {
  192. ItsFromTDE,
  193. Text:ETextDrawID,
  194. ETextDrawText[800],
  195. Float:ETextDrawPosX,
  196. Float:ETextDrawPosY,
  197. Float:ETextDrawLetterX,
  198. Float:ETextDrawLetterY,
  199. Float:ETextDrawTextX,
  200. Float:ETextDrawTextY,
  201. ETextDrawOutline,
  202. ETextDrawShadow,
  203. ETextDrawModelid,
  204. Float:ETextDrawRotX,
  205. Float:ETextDrawRotY,
  206. Float:ETextDrawRotZ,
  207. Float:ETextDrawZoom,
  208. ETextDrawType, //Global/Player
  209. ETextDrawSelectable,
  210. ETextDrawColor,
  211. ETextDrawBGColor,
  212. ETextDrawBoxColor,
  213. ETextDrawVehCol1,
  214. ETextDrawVehCol2
  215. };
  216.  
  217. enum
  218. {
  219. EDITMODE_NONE,
  220. EDITMODE_TEXT,
  221. EDITMODE_POSITION,
  222. EDITMODE_OUTLINE,
  223. EDITMODE_SHADOW,
  224. EDITMODE_LETTERSIZE,
  225. EDITMODE_SIZE,
  226. EDITMODE_COLOR,
  227. EDITMODE_BGCOLOR,
  228. EDITMODE_BOXCOLOR,
  229. EDITMODE_MODELS,
  230. EDITMODE_ADJUST
  231. };
  232.  
  233. enum
  234. {
  235. COLORMODE_NONE,
  236. COLORMODE_RED,
  237. COLORMODE_GREEN,
  238. COLORMODE_BLUE,
  239. COLORMODE_ALPHA
  240. };
  241.  
  242. new PremadeColors[][] =
  243. {
  244. { 0xFF0000FF , "Rojo" },
  245. { 0xFFFFFFFF , "Blanco" },
  246. { 0x00FFFFFF , "Cian" },
  247. { 0xC0C0C0FF , "Plata" },
  248. { 0x0000FFFF , "Azul" },
  249. { 0x808080FF , "Gris" },
  250. { 0x0000A0FF , "Azul oscuro" },
  251. { 0x000000FF , "Negro" },
  252. { 0xADD8E6FF , "Azul claro" },
  253. { 0xFFA500FF , "Naranja" },
  254. { 0x800080FF , "Morado" },
  255. { 0xA52A2AFF , "Marrón" },
  256. { 0xFFFF00FF , "Amarillo" },
  257. { 0x800000FF , "Maroon" },
  258. { 0x00FF00FF , "Lima" },
  259. { 0x008000FF , "Verde" },
  260. { 0xFF00FFFF , "Fuchsia" },
  261. { 0x808000FF , "Oliva" }
  262. };
  263.  
  264. new
  265. ProjectEditor = -1,
  266. bool:EditorEnabled,
  267. bool:IsPSel,
  268. CursorOX, CursorOY,
  269. CursorX, CursorY,
  270. ScreenWidth, ScreenHeight,
  271. VirtualKeys[95][E_KEY_STRUCT],
  272. ProjectTD[MAX_PROJECT_TEXTDRAWS][E_TD_STRUCT],
  273. Text:TDE_Menu[36] = {Text:INVALID_TEXT_DRAW, ...},
  274. Text:TD_Status,
  275. Text:TDELOGO,
  276. Float:OffsetZ = 415.0,
  277. EditIndex = INVALID_INDEX_ID,
  278. EditMode,
  279. Float:EditMoveSpeed = 0.1,
  280. Float:EditLetterSizeSpeed = 0.01,
  281. Float:EditSizeSpeed = 0.01,
  282. DeleteTimer, SpeedTimer, /*DoubleClickCount,*/ MoveTDTimer = -1,
  283. Text:TDEditor_Helper[2], TDEHTimer = -1, OutlineTimer, ShadowTimer,
  284. LetterSizeTimer = -1, LetterTimer, EditSizeTDTimer = -1, EditSizeSpeedT,
  285. ColorMode, Colors[4], BackManageDialog[15], PageStart, Float:Zoom = 1.0,
  286. ProjectFile[64], Pro_Str[5000], File:Handler, str_list[3000], EditorUpdateTimer,
  287. line[800], bool:MouseCursor
  288. ;
  289.  
  290. public OnFilterScriptInit()
  291. {
  292. print(" ");
  293. print(" ");
  294. print(" ");
  295. print(" ");
  296. print("___ __ __");
  297. print(" | | \\|_ _|.|_ _ _ ");
  298. print(" | |__/|__(_|||_(_)| ");
  299. print(" ");
  300. print("TDEditor V1.13 by adri1");
  301. print("TDEditor loaded");
  302. print(" ");
  303.  
  304. Loop(0, MAX_PROJECT_TEXTDRAWS) ProjectTD[c][ItsFromTDE] = -1;
  305. VirtualKeys[0][KEY_CODE] = VK_KEY_A;
  306. VirtualKeys[1][KEY_CODE] = VK_KEY_B;
  307. VirtualKeys[2][KEY_CODE] = VK_KEY_C;
  308. VirtualKeys[3][KEY_CODE] = VK_KEY_D;
  309. VirtualKeys[4][KEY_CODE] = VK_KEY_E;
  310. VirtualKeys[5][KEY_CODE] = VK_KEY_F;
  311. VirtualKeys[6][KEY_CODE] = VK_KEY_G;
  312. VirtualKeys[7][KEY_CODE] = VK_KEY_H;
  313. VirtualKeys[8][KEY_CODE] = VK_KEY_I;
  314. VirtualKeys[9][KEY_CODE] = VK_KEY_J;
  315. VirtualKeys[10][KEY_CODE] = VK_KEY_K;
  316. VirtualKeys[11][KEY_CODE] = VK_KEY_L;
  317. VirtualKeys[12][KEY_CODE] = VK_KEY_M;
  318. VirtualKeys[13][KEY_CODE] = VK_KEY_N;
  319. VirtualKeys[14][KEY_CODE] = VK_KEY_O;
  320. VirtualKeys[15][KEY_CODE] = VK_KEY_P;
  321. VirtualKeys[16][KEY_CODE] = VK_KEY_Q;
  322. VirtualKeys[17][KEY_CODE] = VK_KEY_R;
  323. VirtualKeys[18][KEY_CODE] = VK_KEY_S;
  324. VirtualKeys[19][KEY_CODE] = VK_KEY_T;
  325. VirtualKeys[20][KEY_CODE] = VK_KEY_U;
  326. VirtualKeys[21][KEY_CODE] = VK_KEY_V;
  327. VirtualKeys[22][KEY_CODE] = VK_KEY_W;
  328. VirtualKeys[23][KEY_CODE] = VK_KEY_X;
  329. VirtualKeys[24][KEY_CODE] = VK_KEY_Y;
  330. VirtualKeys[25][KEY_CODE] = VK_KEY_Z;
  331. VirtualKeys[26][KEY_CODE] = VK_LBUTTON;
  332. VirtualKeys[27][KEY_CODE] = VK_MBUTTON;
  333. VirtualKeys[28][KEY_CODE] = VK_RBUTTON;
  334. VirtualKeys[29][KEY_CODE] = VK_LEFT;
  335. VirtualKeys[30][KEY_CODE] = VK_RIGHT;
  336. VirtualKeys[31][KEY_CODE] = VK_UP;
  337. VirtualKeys[32][KEY_CODE] = VK_DOWN;
  338. VirtualKeys[33][KEY_CODE] = VK_LSHIFT;
  339. VirtualKeys[34][KEY_CODE] = VK_RSHIFT;
  340. VirtualKeys[35][KEY_CODE] = VK_SPACE;
  341. VirtualKeys[36][KEY_CODE] = VK_CANCEL; //03
  342. VirtualKeys[37][KEY_CODE] = VK_BACKSPACE; //08
  343. VirtualKeys[38][KEY_CODE] = VK_TAB; //09
  344. VirtualKeys[39][KEY_CODE] = VK_CLEAR; //0C
  345. VirtualKeys[40][KEY_CODE] = VK_ENTER; //0D
  346. VirtualKeys[41][KEY_CODE] = VK_SHIFT; //10
  347. VirtualKeys[42][KEY_CODE] = VK_LSHIFT; //A0
  348. VirtualKeys[43][KEY_CODE] = VK_RSHIFT; //A1
  349. VirtualKeys[44][KEY_CODE] = VK_CTRL; //11
  350. VirtualKeys[45][KEY_CODE] = VK_LCTRL; //A2
  351. VirtualKeys[46][KEY_CODE] = VK_RCTRL; //A3
  352. VirtualKeys[47][KEY_CODE] = VK_ALT; //12
  353. VirtualKeys[48][KEY_CODE] = VK_CAPSLOCK; //14
  354. VirtualKeys[49][KEY_CODE] = VK_ESCAPE; //1B
  355. VirtualKeys[50][KEY_CODE] = VK_SELECT; //29
  356. VirtualKeys[51][KEY_CODE] = VK_INSERT; //2D
  357. VirtualKeys[52][KEY_CODE] = VK_DELETE; //2E
  358. VirtualKeys[53][KEY_CODE] = VK_HELP; //2F
  359. VirtualKeys[54][KEY_CODE] = VK_KEYB0; //30
  360. VirtualKeys[55][KEY_CODE] = VK_KEYB1; //31
  361. VirtualKeys[56][KEY_CODE] = VK_KEYB2; //32
  362. VirtualKeys[57][KEY_CODE] = VK_KEYB3; //33
  363. VirtualKeys[58][KEY_CODE] = VK_KEYB4; //34
  364. VirtualKeys[59][KEY_CODE] = VK_KEYB5; //35
  365. VirtualKeys[60][KEY_CODE] = VK_KEYB6; //36
  366. VirtualKeys[61][KEY_CODE] = VK_KEYB7; //37
  367. VirtualKeys[62][KEY_CODE] = VK_KEYB8; //38
  368. VirtualKeys[63][KEY_CODE] = VK_KEYB9; //39
  369. VirtualKeys[64][KEY_CODE] = VK_NUMLOCK; //90
  370. VirtualKeys[65][KEY_CODE] = VK_NUMPAD0; //60
  371. VirtualKeys[66][KEY_CODE] = VK_NUMPAD1; //61
  372. VirtualKeys[67][KEY_CODE] = VK_NUMPAD2; //62
  373. VirtualKeys[68][KEY_CODE] = VK_NUMPAD3; //63
  374. VirtualKeys[69][KEY_CODE] = VK_NUMPAD4; //64
  375. VirtualKeys[70][KEY_CODE] = VK_NUMPAD5; //65
  376. VirtualKeys[71][KEY_CODE] = VK_NUMPAD6; //66
  377. VirtualKeys[72][KEY_CODE] = VK_NUMPAD7; //67
  378. VirtualKeys[73][KEY_CODE] = VK_NUMPAD8; //68
  379. VirtualKeys[74][KEY_CODE] = VK_NUMPAD9; //69
  380. VirtualKeys[75][KEY_CODE] = VK_MULTIPLY; //6A
  381. VirtualKeys[76][KEY_CODE] = VK_ADD; //6B
  382. VirtualKeys[77][KEY_CODE] = VK_SEPARATOR; //6C
  383. VirtualKeys[78][KEY_CODE] = VK_SUBTRACT; //6D
  384. VirtualKeys[79][KEY_CODE] = VK_DECIMAL; //6E
  385. VirtualKeys[80][KEY_CODE] = VK_DIVIDE; //6F
  386. VirtualKeys[81][KEY_CODE] = VK_OEM_PLUS;
  387. VirtualKeys[82][KEY_CODE] = VK_OEM_COMMA;
  388. VirtualKeys[83][KEY_CODE] = VK_OEM_MINUS;
  389. VirtualKeys[84][KEY_CODE] = VK_OEM_PERIOD;
  390. VirtualKeys[85][KEY_CODE] = VK_OEM_2;
  391. VirtualKeys[86][KEY_CODE] = VK_OEM_4;
  392. VirtualKeys[87][KEY_CODE] = VK_OEM_5;
  393. VirtualKeys[88][KEY_CODE] = VK_OEM_6;
  394. VirtualKeys[89][KEY_CODE] = VK_XBUTTON1;
  395. VirtualKeys[90][KEY_CODE] = VK_XBUTTON2;
  396. VirtualKeys[91][KEY_CODE] = VK_OEM_102;
  397. VirtualKeys[92][KEY_CODE] = VK_F6;
  398. VirtualKeys[93][KEY_CODE] = VK_END;
  399. VirtualKeys[94][KEY_CODE] = VK_HOME;
  400.  
  401. 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 barra - /tde salir - /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], "barra", true)) || (!strcmp(cmdtext[5], "iconos", true)) || (!strcmp(cmdtext[5], "ajustar", 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}Presiona 'ESC' para dejar de editar la posición de la barra.");
  628. return 1;
  629. }
  630. return SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}/tde {e2b960}(barra/ayuda)");
  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", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "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 solo se puede utilizar desde el 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}Presione en la imagen para iniciar...");
  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}Cierra primero el proyecto actual.");
  671. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "X");
  672. return 1;
  673. }
  674. ShowPlayerDialog(playerid, DIALOG_NEWPROJECT, DIALOG_STYLE_INPUT, "TDEditor - Nuevo proyecto", "Nombre del proyecto (si existe se cargará):", ">>", "<<");
  675. }
  676. case 1:
  677. {
  678. if(strlen(ProjectFile))
  679. {
  680. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}Cierra primero el proyecto actual.");
  681. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "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}No hay ningúna lista.");
  705. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "X");
  706. return 1;
  707. }
  708. if(!Found)
  709. {
  710. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}No hay ningúna lista.");
  711. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "X");
  712. return 1;
  713. }
  714. ShowPlayerDialog(playerid, DIALOG_PROJECT_LIST, DIALOG_STYLE_LIST, "TDEditor - Lista de proyectos", str_list, ">>", "<<");
  715. }
  716. case 2:
  717. {
  718. if(!strlen(ProjectFile))
  719. {
  720. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}No has cargado/creado ningún proyecto.");
  721. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "X");
  722. return 1;
  723. }
  724. CloseProject();
  725. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Proyecto cerrado.");
  726. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "X");
  727. }
  728. }
  729. }
  730. else
  731. {
  732. if(ProjectEditor == -1)
  733. {
  734.  
  735. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}TDEditor cerrado.");
  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}Si quieres salir del TDEditor use /tde salir.");
  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 - Nuevo proyecto", "Nombre del proyecto (si existe se cargará):", ">>", "<<");
  753. if(!IsValidProjectName(inputtext)) return ShowPlayerDialog(playerid, DIALOG_NEWPROJECT, DIALOG_STYLE_INPUT, "TDEditor - Nuevo proyecto", "Nombre del proyecto (si existe se cargará):", ">>", "<<");
  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}Proyecto cargado.");
  769. }
  770. else
  771. {
  772. Handler = fopen(ProjectFile, io_write);
  773. fclose(Handler);
  774. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Proyecto creado.");
  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", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "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}No se pudo cargar este proyecto, revise el archivo .tde");
  834. ShowPlayerDialog(playerid, DIALOG_PROJECT, DIALOG_STYLE_LIST, "TDEditor", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "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", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "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}No puedes crear más 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}creado.", 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}No puedes crear más 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}creado.", 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}No puedes crear más 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}creado.", 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}No puedes crear más 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}creado.", 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}seleccionado.", 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 - Edición de texto", "A continuación escriba el texto que desea\npara este TextDraw.", ">>", "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", "Introduzca el modelid:", ">>", "X");
  1205. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Introduzca el modelid:", ">>", "X");
  1206. if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Introduzca el 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}eliminado.", 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", "Introduce el valor de TextSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '18.8'", ">>", "X");
  1245. if(sscanf(inputtext, "f", SizeX)) return ShowPlayerDialog(ProjectEditor, DIALOG_SIZEX, DIALOG_STYLE_INPUT, "TDEditor - TextSizeX", "Introduce el valor de TextSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce el valor de TextSizeY:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce el valor de TextSizeY:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '10.2'", ">>", "<<");
  1264. if(sscanf(inputtext, "f", SizeY)) return ShowPlayerDialog(ProjectEditor, DIALOG_SIZEY, DIALOG_STYLE_INPUT, "TDEditor - TextSizeY", "Introduce el valor de TextSizeY:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce el valor de TextSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce un valor entero para el outline.\n\nIntroduzca 0 para quitar el outline.", ">>", "X");
  1278. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Introduce un valor entero para el outline.\n\nIntroduzca 0 para quitar el outline.", ">>", "X");
  1279. //if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Introduce un valor entero para el outline.\n\nIntroduzca 0 para quitar el 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", "Introduzca el modelid:", ">>", "<<");
  1299. case 1: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RX, DIALOG_STYLE_INPUT, "TDEditor - RotX", "RotaciónX, para introducir un decimal use '.'\nPor ejemplo: '83.4':", ">>", "<<");
  1300. case 2: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RY, DIALOG_STYLE_INPUT, "TDEditor - RotY", "RotaciónY, para introducir un decimal use '.'\nPor ejemplo: '83.4':", ">>", "<<");
  1301. case 3: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RZ, DIALOG_STYLE_INPUT, "TDEditor - RotZ", "RotaciónZ, para introducir un decimal use '.'\nPor ejemplo: '83.4':", ">>", "<<");
  1302. case 4: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_ZO, DIALOG_STYLE_INPUT, "TDEditor - Zoom", "Zoom, para introducir un decimal use '.'\nPor ejemplo: '1.4':", ">>", "<<");
  1303. case 5: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C1, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 1", "Introduzca el color 1 del vehículo:", ">>", "<<");
  1304. case 6: ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C2, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 2", "Introduzca el color 2 del vehículo:", ">>", "<<");
  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", "Introduzca el modelid:", ">>", "<<");
  1318. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_MLD, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Introduzca el modelid:", ">>", "<<");
  1319. if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_MLD, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Introduzca el 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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1330. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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", "RotaciónX, para introducir un decimal use '.'\nPor ejemplo: '83.4':", ">>", "<<");
  1339. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RX, DIALOG_STYLE_INPUT, "TDEditor - RotX", "RotaciónX, para introducir un decimal use '.'\nPor ejemplo: '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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1349. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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", "RotaciónY, para introducir un decimal use '.'\nPor ejemplo: '83.4':", ">>", "<<");
  1358. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RY, DIALOG_STYLE_INPUT, "TDEditor - RotY", "RotaciónY, para introducir un decimal use '.'\nPor ejemplo: '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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1368. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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", "RotaciónZ, para introducir un decimal use '.'\nPor ejemplo: '83.4':", ">>", "<<");
  1377. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_RZ, DIALOG_STYLE_INPUT, "TDEditor - RotZ", "RotaciónZ, para introducir un decimal use '.'\nPor ejemplo: '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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1387. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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, para introducir un decimal use '.'\nPor ejemplo: '1.4':", ">>", "<<");
  1396. if(sscanf(inputtext, "f", coord)) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_ZO, DIALOG_STYLE_INPUT, "TDEditor - Zoom", "Zoom, para introducir un decimal use '.'\nPor ejemplo: '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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1406. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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", "Introduzca el color 1 del vehículo:", ">>", "<<");
  1414. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C1, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 1", "Introduzca el color 1 del vehículo:", ">>", "<<");
  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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1424. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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", "Introduzca el color 2 del vehículo:", ">>", "<<");
  1432. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_MODELS_C2, DIALOG_STYLE_INPUT, "TDEditor - Vehicle Color 2", "Introduzca el color 2 del vehículo:", ">>", "<<");
  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", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  1442. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\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", "Introduce un valor entero para la sombra (shadow).\n\nIntroduzca 0 para quitar la sombra (shadow).", ">>", "X");
  1450. if(sscanf(inputtext, "d", inputtext[0])) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITSHADOW, DIALOG_STYLE_INPUT, "TDEditor - Shadow", "Introduce un valor entero para la sombra (shadow).\n\nIntroduzca 0 para quitar la sombra (shadow).", ">>", "X");
  1451. //if(inputtext[0] < 0) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Introduce un valor entero para el outline.\n\nIntroduzca 0 para quitar el 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", "Introduce el valor de LetteSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '0.4'", ">>", "X");
  1470. if(sscanf(inputtext, "f", LetterSizeX)) return ShowPlayerDialog(ProjectEditor, DIALOG_LETTERX, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeX", "Introduce el valor de LetteSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce el valor de LetteSizeY:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce el valor de LetteSizeY:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '0.4'", ">>", "X");
  1488. if(sscanf(inputtext, "f", LetterSizeY)) return ShowPlayerDialog(ProjectEditor, DIALOG_LETTERY, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeY", "Introduce el valor de LetteSizeY:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce el valor de LetteSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce la posición X:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '298.73'", ">>", "X");
  1503. if(sscanf(inputtext, "f", LetterSizeX)) return ShowPlayerDialog(ProjectEditor, DIALOG_POSX, DIALOG_STYLE_INPUT, "TDEditor - PositionX", "Introduce la posición X:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce la posición Y:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce la posición Y:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '32.3'", ">>", "X");
  1521. if(sscanf(inputtext, "f", LetterSizeY)) return ShowPlayerDialog(ProjectEditor, DIALOG_POSY, DIALOG_STYLE_INPUT, "TDEditor - PositionY", "Introduce la posición Y:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduce la posición X:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '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", "Introduzca el color en HEX RRGGBBAA, por ejemplo: FF0000FF", ">>", "<<");
  1546. case 2: ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Rojo", ">>", "<<");
  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", "Colores principales\nEcribir valor exacto (HEX)\nCombinar colores (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", "Introduzca el color en HEX RRGGBBAA, por ejemplo: 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", "Colores principales\nEcribir valor exacto (HEX)\nCombinar colores (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", "De 0 a 255, introduzca la cantidad de Rojo", ">>", "<<");
  1624. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Rojo", ">>", "<<");
  1625. Colors[0] = inputtext[0];
  1626. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Verde", ">>", "<<");
  1627. }
  1628. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BG/Box/Color", "Colores principales\nEcribir valor exacto (HEX)\nCombinar colores (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", "De 0 a 255, introduzca la cantidad de Verde", ">>", "X");
  1635. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Verde", ">>", "X");
  1636. Colors[1] = inputtext[0];
  1637. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+104, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Azul", ">>", "<<");
  1638. }
  1639. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+102, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Rojo", ">>", "<<");
  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", "De 0 a 255, introduzca la cantidad de Azul", ">>", "X");
  1646. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+104, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Azul", ">>", "X");
  1647. Colors[2] = inputtext[0];
  1648. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+105, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la transparencia", ">>", "<<");
  1649. }
  1650. else ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+103, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la cantidad de Verde", ">>", "<<");
  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", "De 0 a 255, introduzca la transparencia", ">>", "<<");
  1657. if(inputtext[0] < 0 || inputtext[0] > 255) return ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR+105, DIALOG_STYLE_INPUT, "TDEditor - BG/Box/Color", "De 0 a 255, introduzca la transparencia", ">>", "<<");
  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", "De 0 a 255, introduzca la cantidad de Azul", ">>", "<<");
  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 cerrado.");
  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", "Crear un nuevo proyecto\nCargar un proyecto\nCerrar proyecto", ">>", "X");
  1711. SendClientMessage(playerid, -1, "{e2b960}TDEditor: {FFFFFF}TDEditor iniciado, si necesita ayuda puedes usar el comando /tde ayuda...");
  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.  
  1724. if(clickedid == TDE_Menu[1])
  1725. {
  1726. if(EditIndex == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "Error");
  1727. if(EditMode == EDITMODE_COLOR || EditMode == EDITMODE_BGCOLOR || EditMode == EDITMODE_BOXCOLOR || EditMode == EDITMODE_MODELS)
  1728. {
  1729. if(!CursorX && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  1730. if(CursorX == (ScreenWidth - 1) && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  1731. if(CursorY == (ScreenHeight - 1) && (0 < CursorX < (ScreenWidth - 1)) ) return 1;
  1732. }
  1733. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1734. EditMode = EDITMODE_NONE;
  1735. IsPSel = false;
  1736. CancelSelectTextDraw(ProjectEditor);
  1737. //CheckManageDialog();
  1738. new d, c, e = -1, dialog[310], str[31];
  1739. for (d = PageStart; d < MAX_PROJECT_TEXTDRAWS; d++)
  1740. {
  1741. if(ProjectTD[d][ItsFromTDE] == 1)
  1742. {
  1743. e = 1;
  1744. BackManageDialog[c] = 0;
  1745. c ++;
  1746. if(c == 11)
  1747. {
  1748. if(PageStart >= 10)
  1749. {
  1750. format(str, 30, ">>\n");
  1751. strcat(dialog, str);
  1752. }
  1753. else
  1754. {
  1755. format(str, 30, ">>");
  1756. strcat(dialog, str);
  1757. }
  1758. break;
  1759. }
  1760. if(TextDrawGetFont(ProjectTD[d][ETextDrawID]) == 5) format(str, 31, "%s(%i)ModelPreview: %d\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawModelid]);
  1761. else format(str, 31, "%s(%i)%s\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawText]);
  1762. if(strlen(str) >= 30)
  1763. {
  1764. strdel(str, 28, 30);
  1765. strcat(str, "\n");
  1766. }
  1767. strcat(dialog, str);
  1768. }
  1769. }
  1770. if(PageStart >= 10)
  1771. {
  1772. BackManageDialog[c] = 1;
  1773. format(str, 30, "<<");
  1774. strcat(dialog, str);
  1775. }
  1776. if(e == -1)
  1777. {
  1778.  
  1779. new d1, c1, e1 = -1, dialog1[310], str1[31], DC = PageStart - 10;
  1780. for (d1 = DC; d1 < DC+11; d1++)
  1781. {
  1782. if(ProjectTD[d1][ItsFromTDE] == 1)
  1783. {
  1784. e1 = 1;
  1785.  
  1786. BackManageDialog[c] = 0;
  1787. c1 ++;
  1788. if(c1 == 11)
  1789. {
  1790. if(DC >= 10)
  1791. {
  1792. format(str1, 30, ">>\n");
  1793. strcat(dialog1, str1);
  1794. }
  1795. else
  1796. {
  1797. format(str1, 30, ">>");
  1798. strcat(dialog1, str1);
  1799. }
  1800. break;
  1801. }
  1802. if(TextDrawGetFont(ProjectTD[d][ETextDrawID]) == 5) format(str1, 31, "%s(%i)ModelPreview: %d\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawModelid]);
  1803. else format(str1, 31, "%s(%i)%s\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawText]);
  1804.  
  1805. if(strlen(str1) >= 30)
  1806. {
  1807. strdel(str1, 28, 30);
  1808. strcat(str1, "\n");
  1809. }
  1810. strcat(dialog1, str1);
  1811. }
  1812. }
  1813. if(DC >= 10)
  1814. {
  1815. BackManageDialog[c1] = 1;
  1816. format(str1, 30, "<<");
  1817. strcat(dialog1, str1);
  1818. }
  1819. if(e1 == -1) return SelectTextDraw(ProjectEditor, -1), IsPSel = true, SendClientMessage(ProjectEditor, -1, "Error");
  1820. PageStart -= 10;
  1821. ShowPlayerDialog(ProjectEditor, DIALOG_MANAGE, DIALOG_STYLE_LIST, "TDEditor - Manage", dialog1, ">>", "X");
  1822. IsPSel = false;
  1823. return 1;
  1824. }
  1825. ShowPlayerDialog(ProjectEditor, DIALOG_MANAGE, DIALOG_STYLE_LIST, "TDEditor - Manage", dialog, ">>", "X");
  1826. IsPSel = false;
  1827. }
  1828. if(clickedid == TDE_Menu[2])
  1829. {
  1830. new Index = GetAvailableIndex();
  1831. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}No puedes crear más TextDraws.");
  1832. EditIndex = Index;
  1833.  
  1834. if(EditIndex == 0)
  1835. {
  1836. Loop(1, sizeof(TDE_Menu))
  1837. {
  1838. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  1839. TextDrawSetSelectable(TDE_Menu[c], true);
  1840. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  1841. }
  1842. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  1843. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  1844. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  1845. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  1846. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  1847. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  1848. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  1849. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  1850. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  1851. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  1852. }
  1853.  
  1854. ProjectTD[Index][ETextDrawID] = TextDrawCreate(290.0, 190.0, "TDEditor");
  1855. TextDrawLetterSize(ProjectTD[Index][ETextDrawID], 0.4, 1.6);
  1856. TextDrawAlignment(ProjectTD[Index][ETextDrawID], 1);
  1857. TextDrawColor(ProjectTD[Index][ETextDrawID], -1);
  1858. TextDrawUseBox(ProjectTD[Index][ETextDrawID], 0);
  1859. TextDrawSetShadow(ProjectTD[Index][ETextDrawID], 0);
  1860. TextDrawSetOutline(ProjectTD[Index][ETextDrawID], 0);
  1861. TextDrawBackgroundColor(ProjectTD[Index][ETextDrawID], 255);
  1862. TextDrawFont(ProjectTD[Index][ETextDrawID], 1);
  1863. TextDrawSetProportional(ProjectTD[Index][ETextDrawID], 1);
  1864. TextDrawShowForPlayer(ProjectEditor, ProjectTD[Index][ETextDrawID]);
  1865.  
  1866.  
  1867. ProjectTD[EditIndex][ItsFromTDE] = 1;
  1868. format(ProjectTD[EditIndex][ETextDrawText], 800, "TDEditor");
  1869. ProjectTD[EditIndex][ETextDrawPosX] = 290.0;
  1870. ProjectTD[EditIndex][ETextDrawPosY] = 190.0;
  1871. ProjectTD[EditIndex][ETextDrawLetterX] = 0.4;
  1872. ProjectTD[EditIndex][ETextDrawLetterY] = 1.6;
  1873. ProjectTD[EditIndex][ETextDrawColor] = 0xFFFFFFFF;
  1874. ProjectTD[EditIndex][ETextDrawBGColor] = 0x000000FF;
  1875. ProjectTD[EditIndex][ETextDrawBoxColor] = 0x000000FF;
  1876.  
  1877. new string[128];
  1878. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}creado.", EditIndex);
  1879. SendClientMessage(ProjectEditor, -1, string);
  1880. UpdateIcons(EditIndex);
  1881.  
  1882. if(EditMode == EDITMODE_MODELS)
  1883. {
  1884. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1885. EditMode = EDITMODE_NONE;
  1886. }
  1887. return 1;
  1888. }
  1889. if(EditIndex == INVALID_INDEX_ID) return false;
  1890. if(clickedid == TDE_Menu[3])
  1891. {
  1892. IsPSel = false;
  1893. CancelSelectTextDraw(ProjectEditor);
  1894. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1895. EditMode = EDITMODE_NONE;
  1896. ShowPlayerDialog(ProjectEditor, DIALOG_CONFIRMEDELETE, DIALOG_STYLE_MSGBOX, "TDEditor - Eliminar TextDraw", "¿Estás seguro que desea eliminar este TextDraw?", "Eliminar", "Cancelar");
  1897. IsPSel = false;
  1898. return 1;
  1899. }
  1900. if(clickedid == TDE_Menu[4])
  1901. {
  1902. ExportProject();
  1903. return 1;
  1904. }
  1905. if(clickedid == TDE_Menu[8])
  1906. {
  1907. new Index = GetAvailableIndex();
  1908. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}No puedes crear más TextDraws.");
  1909. DuplicateTextDraw(EditIndex, Index);
  1910.  
  1911. new string[128];
  1912. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}ha sido duplicado en TextDraw{e2b960} #%d.", EditIndex, Index);
  1913. SendClientMessage(ProjectEditor, -1, string);
  1914. EditIndex = Index;
  1915. return 1;
  1916. }
  1917. if(clickedid == TDE_Menu[9])
  1918. {
  1919. if(EditMode != EDITMODE_POSITION)
  1920. {
  1921. TextDrawSetString(TD_Status, "EditMode: EDITMODE_POSITION");
  1922. EditMode = EDITMODE_POSITION;
  1923. }
  1924. else TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE"), EditMode = EDITMODE_NONE;
  1925. return 1;
  1926. }
  1927. if(clickedid == TDE_Menu[10])
  1928. {
  1929. if(EditMode != EDITMODE_SIZE)
  1930. {
  1931. TextDrawSetString(TD_Status, "EditMode: EDITMODE_SIZE");
  1932. EditMode = EDITMODE_SIZE;
  1933. }
  1934. else TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE"), EditMode = EDITMODE_NONE;
  1935. return 1;
  1936. }
  1937. if(clickedid == TDE_Menu[11] || clickedid == TDE_Menu[35])
  1938. {
  1939. /*if((GetTickCount() - DoubleClickCount) <= 180)
  1940. {
  1941. ShowPlayerDialog(ProjectEditor, DIALOG_EDITTEXT, DIALOG_STYLE_INPUT, "TDEditor - Español", "Introduzca el texto aquí:", ">>", "X");
  1942. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1943. EditMode = EDITMODE_NONE;
  1944. IsPSel = false;
  1945. CancelSelectTextDraw(ProjectEditor);
  1946. return 1;
  1947. }
  1948. DoubleClickCount = GetTickCount();
  1949. */
  1950. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5)
  1951. {
  1952. IsPSel = false;
  1953. CancelSelectTextDraw(ProjectEditor);
  1954. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1955. EditMode = EDITMODE_NONE;
  1956. ShowPlayerDialog(ProjectEditor, DIALOG_MODELID, DIALOG_STYLE_INPUT, "TDEditor - ModelID", "Introduzca el modelid:", ">>", "X");
  1957. return 1;
  1958. }
  1959. if(EditMode != EDITMODE_TEXT)
  1960. {
  1961. TextDrawSetString(TD_Status, "EditMode: EDITMODE_TEXT");
  1962. EditMode = EDITMODE_TEXT;
  1963. }
  1964. else TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE"), EditMode = EDITMODE_NONE;
  1965. return 1;
  1966. }
  1967. if(clickedid == TDE_Menu[14])
  1968. {
  1969. if(EditMode != EDITMODE_COLOR)
  1970. {
  1971. TextDrawSetString(TD_Status, "EditMode: EDITMODE_COLOR");
  1972. EditMode = EDITMODE_COLOR;
  1973. }
  1974. else
  1975. {
  1976. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1977. EditMode = EDITMODE_NONE;
  1978. }
  1979. return 1;
  1980. }
  1981. if(clickedid == TDE_Menu[15])
  1982. {
  1983. if(EditMode != EDITMODE_BGCOLOR)
  1984. {
  1985. TextDrawSetString(TD_Status, "EditMode: EDITMODE_BGCOLOR");
  1986. EditMode = EDITMODE_BGCOLOR;
  1987. }
  1988. else
  1989. {
  1990. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  1991. EditMode = EDITMODE_NONE;
  1992. }
  1993. return 1;
  1994. }
  1995. if(clickedid == TDE_Menu[32])
  1996. {
  1997. if(EditMode != EDITMODE_BOXCOLOR)
  1998. {
  1999. TextDrawSetString(TD_Status, "EditMode: EDITMODE_BOXCOLOR");
  2000. EditMode = EDITMODE_BOXCOLOR;
  2001. }
  2002. else
  2003. {
  2004. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2005. EditMode = EDITMODE_NONE;
  2006. }
  2007. return 1;
  2008. }
  2009. if(clickedid == TDE_Menu[16])
  2010. {
  2011. if(EditMode != EDITMODE_LETTERSIZE)
  2012. {
  2013. TextDrawSetString(TD_Status, "EditMode: EDITMODE_LETTERSIZE");
  2014. EditMode = EDITMODE_LETTERSIZE;
  2015. }
  2016. else
  2017. {
  2018. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2019. EditMode = EDITMODE_NONE;
  2020. }
  2021. return 1;
  2022. }
  2023. if(clickedid == TDE_Menu[17])
  2024. {
  2025. if(EditMode != EDITMODE_OUTLINE)
  2026. {
  2027. TextDrawSetString(TD_Status, "EditMode: EDITMODE_OUTLINE");
  2028. EditMode = EDITMODE_OUTLINE;
  2029. }
  2030. else
  2031. {
  2032. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2033. EditMode = EDITMODE_NONE;
  2034. }
  2035. return 1;
  2036. }
  2037. if(clickedid == TDE_Menu[18])
  2038. {
  2039. if(EditMode != EDITMODE_SHADOW)
  2040. {
  2041. TextDrawSetString(TD_Status, "EditMode: EDITMODE_SHADOW");
  2042. EditMode = EDITMODE_SHADOW;
  2043. }
  2044. else
  2045. {
  2046. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2047. EditMode = EDITMODE_NONE;
  2048. }
  2049. return 1;
  2050. }
  2051. 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])
  2052. {
  2053. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5)
  2054. {
  2055. if(EditMode != EDITMODE_MODELS)
  2056. {
  2057. Colors[0] = floatround(ProjectTD[EditIndex][ETextDrawRotX]);
  2058. Colors[1] = floatround(ProjectTD[EditIndex][ETextDrawRotY]);
  2059. Colors[2] = floatround(ProjectTD[EditIndex][ETextDrawRotZ]);
  2060. Zoom = ProjectTD[EditIndex][ETextDrawZoom];
  2061.  
  2062. TextDrawSetString(TD_Status, "EditMode: EDITMODE_MODELS");
  2063. EditMode = EDITMODE_MODELS;
  2064. }
  2065. else
  2066. {
  2067. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2068. EditMode = EDITMODE_NONE;
  2069. }
  2070. return 1;
  2071. }
  2072. new font = TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]);
  2073. switch(font)
  2074. {
  2075. case 0:
  2076. {
  2077. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 1);
  2078. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2079. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  2080. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[25]);
  2081. }
  2082. case 1:
  2083. {
  2084. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 2);
  2085. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2086. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  2087. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[26]);
  2088. }
  2089. case 2:
  2090. {
  2091. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 3);
  2092. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2093. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  2094. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[27]);
  2095. }
  2096. case 3:
  2097. {
  2098. TextDrawFont(ProjectTD[EditIndex][ETextDrawID], 0);
  2099. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2100. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  2101. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[24]);
  2102. }
  2103. }
  2104. return 1;
  2105. }
  2106. if(clickedid == TDE_Menu[19] || clickedid == TDE_Menu[20] || clickedid == TDE_Menu[34])
  2107. {
  2108. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  2109. {
  2110. TextDrawUseBox(ProjectTD[EditIndex][ETextDrawID], 0);
  2111. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], 0);
  2112. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2113. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  2114. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  2115. }
  2116. else
  2117. {
  2118. TextDrawUseBox(ProjectTD[EditIndex][ETextDrawID], 1);
  2119. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  2120. if(ProjectTD[EditIndex][ETextDrawTextX] == 0.0)
  2121. {
  2122. switch(alignment)
  2123. {
  2124. case 1: ProjectTD[EditIndex][ETextDrawTextX] = floatadd(ProjectTD[EditIndex][ETextDrawPosX], 5.0);
  2125. case 2: ProjectTD[EditIndex][ETextDrawTextX] = 10.0;
  2126. case 3: ProjectTD[EditIndex][ETextDrawTextX] = floatadd(ProjectTD[EditIndex][ETextDrawPosX], 5.0); //SA-MP BUG?
  2127. }
  2128. }
  2129. if(alignment == 2) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  2130. else TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2131. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], 255);
  2132. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2133. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[19]);
  2134. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  2135. }
  2136. return 1;
  2137. }
  2138. if(clickedid == TDE_Menu[21] || clickedid == TDE_Menu[22] || clickedid == TDE_Menu[23])
  2139. {
  2140. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  2141. switch(alignment)
  2142. {
  2143. case 1:
  2144. {
  2145. TextDrawAlignment(ProjectTD[EditIndex][ETextDrawID], 2);
  2146. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID])) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  2147. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2148. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  2149. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  2150. }
  2151. case 2:
  2152. {
  2153. TextDrawAlignment(ProjectTD[EditIndex][ETextDrawID], 3);
  2154. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID])) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2155. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2156. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  2157. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  2158. }
  2159. case 3:
  2160. {
  2161. TextDrawAlignment(ProjectTD[EditIndex][ETextDrawID], 1);
  2162. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID])) TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2163. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2164. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  2165. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  2166. }
  2167. }
  2168. return 1;
  2169. }
  2170. if(clickedid == TDE_Menu[28] || clickedid == TDE_Menu[29])
  2171. {
  2172. if(ProjectTD[EditIndex][ETextDrawSelectable] == 0)
  2173. {
  2174. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[28]);
  2175. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[29]);
  2176. ProjectTD[EditIndex][ETextDrawSelectable] = 1;
  2177. }
  2178. else
  2179. {
  2180. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  2181. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[28]);
  2182. ProjectTD[EditIndex][ETextDrawSelectable] = 0;
  2183. }
  2184. return 1;
  2185. }
  2186. if(clickedid == TDE_Menu[5] || clickedid == TDE_Menu[33])
  2187. {
  2188. if(ProjectTD[EditIndex][ETextDrawType] == 0)
  2189. {
  2190. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[5]);
  2191. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[33]);
  2192. ProjectTD[EditIndex][ETextDrawType] = 1;
  2193. }
  2194. else
  2195. {
  2196. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  2197. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[5]);
  2198. ProjectTD[EditIndex][ETextDrawType] = 0;
  2199. }
  2200. return 1;
  2201. }
  2202. if(clickedid == TDE_Menu[30] || clickedid == TDE_Menu[31])
  2203. {
  2204. if(EditMode == EDITMODE_COLOR || EditMode == EDITMODE_BGCOLOR || EditMode == EDITMODE_BOXCOLOR || EditMode == EDITMODE_MODELS)
  2205. {
  2206. if(!CursorX && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  2207. if(CursorX == (ScreenWidth - 1) && (0 < CursorY < (ScreenHeight - 1)) ) return 1;
  2208. if(CursorY == (ScreenHeight - 1) && (0 < CursorX < (ScreenWidth - 1)) ) return 1;
  2209. }
  2210. new proportional = TextDrawIsProportional(ProjectTD[EditIndex][ETextDrawID]);
  2211. if(proportional == 0)
  2212. {
  2213. TextDrawSetProportional(ProjectTD[EditIndex][ETextDrawID], 1);
  2214. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[30]);
  2215. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  2216. }
  2217. else
  2218. {
  2219. TextDrawSetProportional(ProjectTD[EditIndex][ETextDrawID], 0);
  2220. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[31]);
  2221. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  2222. }
  2223. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2224. return 1;
  2225. }
  2226. return false;
  2227. }
  2228.  
  2229. stock ActivateCallback_OnAnyKeyDown()
  2230. {
  2231. ActivateAnyKeyVariable(1);
  2232. ActivateAnyKey();
  2233. return 1;
  2234. }
  2235.  
  2236. public OnAnyKeyDown(key)
  2237. {
  2238. printf("%d %c", key, key);
  2239. return 1;
  2240. }
  2241.  
  2242. TDE_CALLBACK:OnEditorUpdate(playerid)
  2243. {
  2244. if(IsPlayerPaused(playerid)) return 0;
  2245. for(new c = 0; c < sizeof(VirtualKeys); c++)
  2246. {
  2247. if(GetVirtualKeyState(VirtualKeys[c][KEY_CODE]) & 0x8000)
  2248. {
  2249. if(!VirtualKeys[c][KEY_PRESSED])
  2250. {
  2251. CallLocalFunction("OnVirtualKeyDown", "id", playerid, VirtualKeys[c][KEY_CODE]);
  2252. VirtualKeys[c][KEY_PRESSED] = true;
  2253. }
  2254. }
  2255. else if(VirtualKeys[c][KEY_PRESSED])
  2256. {
  2257. CallLocalFunction("OnVirtualKeyRelease", "id", playerid, VirtualKeys[c][KEY_CODE]);
  2258. VirtualKeys[c][KEY_PRESSED] = false;
  2259. }
  2260. }
  2261.  
  2262. GetScreenSize(ScreenWidth, ScreenHeight);
  2263. GetMousePos(CursorX, CursorY);
  2264.  
  2265. if(CursorOX != CursorX || CursorOY != CursorY)
  2266. {
  2267. CallLocalFunction("OnCursorPositionChange", "idd", playerid, CursorX, CursorY);
  2268. CursorOX = CursorX;
  2269. CursorOY = CursorY;
  2270. }
  2271. return 1;
  2272. }
  2273.  
  2274. TDE_CALLBACK:OnCursorPositionChange(playerid, NewX, NewY)
  2275. {
  2276. if(!EditorEnabled || ProjectEditor != playerid) return false;
  2277. if(TDEHTimer == 1)
  2278. {
  2279. TextDrawSetPos(TDEditor_Helper[0], ((floatdiv(float(NewX), ScreenWidth) * 640.0)+0.15), -6.000000);
  2280. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, (((floatdiv(float(NewY), ScreenHeight) * 448.0)/9.0)+0.4));
  2281. TextDrawSetPos(TDEditor_Helper[1], ((floatdiv(float(NewX), ScreenWidth) * 640.0)+1.0), (floatdiv(float(NewY), ScreenHeight) * 448.0));
  2282.  
  2283. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2284. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2285. }
  2286. if(EditMode == EDITMODE_ADJUST)
  2287. {
  2288. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2289. {
  2290. OffsetZ -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0;
  2291. TextDrawSetPos(TDE_Menu[0], 0.0, OffsetZ - 2.0);
  2292. TextDrawShowForPlayer(playerid, TDE_Menu[0]);
  2293. if(OffsetZ < 10.0) TextDrawSetPos(TD_Status, 2.0, OffsetZ+35.14);
  2294. else TextDrawSetPos(TD_Status, 2.0, OffsetZ-10.14);
  2295. TextDrawShowForPlayer(playerid, TD_Status);
  2296. return 1;
  2297. }
  2298. return 1;
  2299. }
  2300.  
  2301. if(EditIndex == INVALID_INDEX_ID) return false;
  2302. switch(EditMode)
  2303. {
  2304. case EDITMODE_POSITION:
  2305. {
  2306. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2307. {
  2308. ProjectTD[EditIndex][ETextDrawPosX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0;
  2309. ProjectTD[EditIndex][ETextDrawPosY] -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0;
  2310. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  2311.  
  2312. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  2313. {
  2314. if(TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]) != 2)
  2315. {
  2316. ProjectTD[EditIndex][ETextDrawTextX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0;
  2317. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2318. }
  2319. }
  2320. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2321. }
  2322. }
  2323. case EDITMODE_SIZE:
  2324. {
  2325. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2326. {
  2327. ProjectTD[EditIndex][ETextDrawTextX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0;
  2328. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) ProjectTD[EditIndex][ETextDrawTextY] -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0;
  2329. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0)
  2330. {
  2331. ProjectTD[EditIndex][ETextDrawLetterY] -= (floatdiv(floatsub(CursorOY, NewY), ScreenWidth) * 640.0)/10.0;
  2332. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  2333. }
  2334. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  2335. switch(alignment)
  2336. {
  2337. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  2338. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  2339. }
  2340. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2341. }
  2342. }
  2343. case EDITMODE_MODELS:
  2344. {
  2345. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2346. {
  2347. switch(ColorMode)
  2348. {
  2349. case COLORMODE_RED: Colors[0] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 360.0 );
  2350. case COLORMODE_GREEN: Colors[1] = floatround( floatdiv((NewX - 1), (ScreenWidth - 2)) * 360.0 );
  2351. case COLORMODE_BLUE: Colors[2] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 360.0 );
  2352. case COLORMODE_ALPHA: Zoom = floatdiv((NewX - 1), (ScreenWidth - 2)) * 10.0;
  2353. }
  2354. new str[64];
  2355. format(str, sizeof str, "~n~RX%i~n~RY%i~n~RZ%i~n~Z%.2f", Colors[0], Colors[1], Colors[2], Zoom);
  2356. GameTextForPlayer(ProjectEditor, str, 1000, 5);
  2357. ProjectTD[EditIndex][ETextDrawRotX] = float(Colors[0]);
  2358. ProjectTD[EditIndex][ETextDrawRotY] = float(Colors[1]);
  2359. ProjectTD[EditIndex][ETextDrawRotZ] = float(Colors[2]);
  2360. ProjectTD[EditIndex][ETextDrawZoom] = Zoom;
  2361. TextDrawSetPreviewRot(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawRotX], ProjectTD[EditIndex][ETextDrawRotY], ProjectTD[EditIndex][ETextDrawRotZ], ProjectTD[EditIndex][ETextDrawZoom]);
  2362. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2363. }
  2364. }
  2365. case EDITMODE_COLOR, EDITMODE_BGCOLOR, EDITMODE_BOXCOLOR:
  2366. {
  2367. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2368. {
  2369.  
  2370. if(EditMode == EDITMODE_COLOR) HexToRGBA(ProjectTD[EditIndex][ETextDrawColor], Colors[0], Colors[1], Colors[2], Colors[3]);
  2371. else if(EditMode == EDITMODE_BGCOLOR) HexToRGBA(ProjectTD[EditIndex][ETextDrawBGColor], Colors[0], Colors[1], Colors[2], Colors[3]);
  2372. else if(EditMode == EDITMODE_BOXCOLOR) HexToRGBA(ProjectTD[EditIndex][ETextDrawBoxColor], Colors[0], Colors[1], Colors[2], Colors[3]);
  2373. switch(ColorMode)
  2374. {
  2375. case COLORMODE_RED: Colors[0] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 255.0 );
  2376. case COLORMODE_GREEN: Colors[1] = floatround( floatdiv((NewX - 1), (ScreenWidth - 2)) * 255.0 );
  2377. case COLORMODE_BLUE: Colors[2] = floatround( floatdiv((NewY - 1), (ScreenHeight - 2)) * 255.0 );
  2378. case COLORMODE_ALPHA: Colors[3] = floatround( floatdiv((NewX - 1), (ScreenWidth - 2)) * 255.0 );
  2379. }
  2380. new str[64];
  2381. 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]);
  2382. GameTextForPlayer(ProjectEditor, str, 1000, 5);
  2383. switch(EditMode)
  2384. {
  2385. case EDITMODE_COLOR:
  2386. {
  2387. ProjectTD[EditIndex][ETextDrawColor] = RGBAToHex(Colors[0], Colors[1], Colors[2], Colors[3]);
  2388. TextDrawColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawColor]);
  2389. }
  2390. case EDITMODE_BGCOLOR:
  2391. {
  2392. ProjectTD[EditIndex][ETextDrawBGColor] = RGBAToHex(Colors[0], Colors[1], Colors[2], Colors[3]);
  2393. TextDrawBackgroundColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBGColor]);
  2394. }
  2395. case EDITMODE_BOXCOLOR:
  2396. {
  2397. ProjectTD[EditIndex][ETextDrawBoxColor] = RGBAToHex(Colors[0], Colors[1], Colors[2], Colors[3]);
  2398. TextDrawBoxColor(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawBoxColor]);
  2399. }
  2400. }
  2401. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2402. }
  2403. }
  2404. case EDITMODE_OUTLINE:
  2405. {
  2406. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2407. {
  2408. ProjectTD[EditIndex][ETextDrawOutline] -= floatround(floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0);
  2409. ProjectTD[EditIndex][ETextDrawOutline] -= floatround(floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0);
  2410. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2411. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2412. }
  2413. }
  2414. case EDITMODE_SHADOW:
  2415. {
  2416. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2417. {
  2418. ProjectTD[EditIndex][ETextDrawShadow] -= floatround(floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0);
  2419. ProjectTD[EditIndex][ETextDrawShadow] -= floatround(floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0);
  2420. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2421. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2422. }
  2423. }
  2424. case EDITMODE_LETTERSIZE:
  2425. {
  2426. if(VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2427. {
  2428. ProjectTD[EditIndex][ETextDrawLetterX] -= floatdiv(floatsub(CursorOX, NewX), ScreenWidth) * 640.0 * 0.001;
  2429. ProjectTD[EditIndex][ETextDrawLetterY] -= floatdiv(floatsub(CursorOY, NewY), ScreenHeight) * 448.0 * 0.01;
  2430. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  2431. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2432. }
  2433. }
  2434. }
  2435. return true;
  2436. }
  2437.  
  2438. TDE_CALLBACK:OnVirtualKeyRelease(playerid, key)
  2439. {
  2440. if(!EditorEnabled || ProjectEditor != playerid) return false;
  2441. if(key == VK_ESCAPE)
  2442. {
  2443. if(EditMode == EDITMODE_ADJUST)
  2444. {
  2445. SelectTextDraw(playerid, -1);
  2446. if(!VirtualKeys[26][KEY_PRESSED]) //Left Mouse Button
  2447. {
  2448. new Float:pos[2];
  2449. for(new i = 1; i < sizeof(TDE_Menu); i++)
  2450. {
  2451. TextDrawGetPos(TDE_Menu[i], pos[0], pos[1]);
  2452. TextDrawSetPos(TDE_Menu[i], pos[0], OffsetZ);
  2453. TextDrawShowForPlayer(playerid, TDE_Menu[i]);
  2454. }
  2455.  
  2456. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2457. EditMode = EDITMODE_NONE;
  2458. IsPSel = true;
  2459. return 1;
  2460. }
  2461. }
  2462. }
  2463. if(key == VK_LBUTTON)
  2464. {
  2465. if(ColorMode) ColorMode = 0;
  2466. if(IsPSel) SaveProject();
  2467. }
  2468. if(EditMode == EDITMODE_ADJUST) return false;
  2469. if(key == VK_RBUTTON)
  2470. {
  2471. if(!IsPSel) return false;
  2472. new Float:ConvertedX, Float:ConvertedY;
  2473. ConvertedX = ((floatdiv(float(CursorX), ScreenWidth) * 640.0));
  2474. ConvertedY = (((floatdiv(float(CursorY), ScreenHeight) * 448.0)));
  2475. if( (ConvertedX > 64.01 && ConvertedX < 32.0+64.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //New
  2476. {
  2477. ShowPlayerDialog(ProjectEditor, DIALOG_NEW, DIALOG_STYLE_LIST, "TDEditor - Nuevo TextDraw", "TextDraw de texto (Normal)\nSprite TextDraw (TXD)\nPreview Models (Objetos, vehículos, skins)\nCaja (Box)", ">>", "X");
  2478. IsPSel = false;
  2479. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2480. EditMode = EDITMODE_NONE;
  2481. CancelSelectTextDraw(ProjectEditor);
  2482. return 1;
  2483. }
  2484. if(EditIndex == INVALID_INDEX_ID) return false;
  2485. if( (ConvertedX > 192.01 && ConvertedX < 32.0+192.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Position
  2486. {
  2487. ShowPlayerDialog(ProjectEditor, DIALOG_POSX, DIALOG_STYLE_INPUT, "TDEditor - PositionX", "Introduce la posición X:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '298.73'", ">>", "X");
  2488. IsPSel = false;
  2489. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2490. EditMode = EDITMODE_NONE;
  2491. CancelSelectTextDraw(ProjectEditor);
  2492. return 1;
  2493. }
  2494. if( (ConvertedX > 160.01 && ConvertedX < 32.0+160.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Models/Font
  2495. {
  2496. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5)
  2497. {
  2498. if(IsVehicle(ProjectTD[EditIndex][ETextDrawModelid])) ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom\nVehicle color 1\nVehicle color 2", ">>", "X");
  2499. else ShowPlayerDialog(ProjectEditor, DIALOG_MODELS, DIALOG_STYLE_LIST, "TDEditor - Preview Models", "Cambiar ModelID\nRotación X\nRotación Y\nRotación Z\nZoom", ">>", "X");
  2500. IsPSel = false;
  2501. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2502. EditMode = EDITMODE_NONE;
  2503. CancelSelectTextDraw(ProjectEditor);
  2504. return 1;
  2505. }
  2506. return 1;
  2507. }
  2508. if( (ConvertedX > 224.01 && ConvertedX < 32.0+224.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //TextSize
  2509. {
  2510. ShowPlayerDialog(ProjectEditor, DIALOG_SIZEX, DIALOG_STYLE_INPUT, "TDEditor - TextSizeX", "Introduce el valor de TextSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '18.8'", ">>", "X");
  2511. IsPSel = false;
  2512. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2513. EditMode = EDITMODE_NONE;
  2514. CancelSelectTextDraw(ProjectEditor);
  2515. return 1;
  2516. }
  2517. if( (ConvertedX > 256.01 && ConvertedX < 32.0+256.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Text
  2518. {
  2519. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2520. ShowPlayerDialog(ProjectEditor, DIALOG_EDITTEXT, DIALOG_STYLE_INPUT, "TDEditor - Edición de texto", "A continuación escriba el texto que desea\npara este TextDraw.", ">>", "X");
  2521. IsPSel = false;
  2522. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2523. EditMode = EDITMODE_NONE;
  2524. CancelSelectTextDraw(ProjectEditor);
  2525. return 1;
  2526. }
  2527. if( (ConvertedX > 384.01 && ConvertedX < 32.0+384.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //LetterSize
  2528. {
  2529. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2530. ShowPlayerDialog(ProjectEditor, DIALOG_LETTERX, DIALOG_STYLE_INPUT, "TDEditor - LetterSizeX", "Introduce el valor de LetteSizeX:\nNota: para poner un valor decimal usa '.' en vez de ',' por ejemplo: '0.4'", ">>", "X");
  2531. IsPSel = false;
  2532. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2533. EditMode = EDITMODE_NONE;
  2534. CancelSelectTextDraw(ProjectEditor);
  2535. return 1;
  2536. }
  2537. if( (ConvertedX > 416.01 && ConvertedX < 32.0+416.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Outline
  2538. {
  2539. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2540. ShowPlayerDialog(ProjectEditor, DIALOG_EDITOUTLINE, DIALOG_STYLE_INPUT, "TDEditor - Outline", "Introduce un valor entero para el outline.\n\nIntroduzca 0 para quitar el outline.", ">>", "X");
  2541. IsPSel = false;
  2542. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2543. EditMode = EDITMODE_NONE;
  2544. CancelSelectTextDraw(ProjectEditor);
  2545. return 1;
  2546. }
  2547. if( (ConvertedX > 448.01 && ConvertedX < 32.0+448.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Shadow
  2548. {
  2549. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2550. ShowPlayerDialog(ProjectEditor, DIALOG_EDITSHADOW, DIALOG_STYLE_INPUT, "TDEditor - Shadow", "Introduce un valor entero para la sombra (shadow).\n\nIntroduzca 0 para quitar la sombra (shadow).", ">>", "X");
  2551. IsPSel = false;
  2552. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2553. EditMode = EDITMODE_NONE;
  2554. CancelSelectTextDraw(ProjectEditor);
  2555. return 1;
  2556. }
  2557. if( (ConvertedX > 288.01 && ConvertedX < 32.0+288.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //Colors
  2558. {
  2559. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - Color", "Colores principales\nEcribir valor exacto (HEX)\nCombinar colores (RGBA)", ">>", "X");
  2560. IsPSel = false;
  2561. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2562. EditMode = EDITMODE_COLOR;
  2563. CancelSelectTextDraw(ProjectEditor);
  2564. return 1;
  2565. }
  2566. if( (ConvertedX > 320.01 && ConvertedX < 32.0+320.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //BGColors
  2567. {
  2568. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4) return false;
  2569. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BGColor", "Colores principales\nEcribir valor exacto (HEX)\nCombinar colores (RGBA)", ">>", "X");
  2570. IsPSel = false;
  2571. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2572. EditMode = EDITMODE_BGCOLOR;
  2573. CancelSelectTextDraw(ProjectEditor);
  2574. return 1;
  2575. }
  2576. if( (ConvertedX > 352.01 && ConvertedX < 32.0+352.01) && (ConvertedY > OffsetZ && ConvertedY < 32.0+OffsetZ) ) //BoxColors
  2577. {
  2578. if(TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 4 || TextDrawGetFont(ProjectTD[EditIndex][ETextDrawID]) == 5) return false;
  2579. ShowPlayerDialog(ProjectEditor, DIALOG_EDITCOLOR, DIALOG_STYLE_LIST, "TDEditor - BoxColor", "Colores principales\nEcribir valor exacto (HEX)\nCombinar colores (RGBA)", ">>", "X");
  2580. IsPSel = false;
  2581. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  2582. EditMode = EDITMODE_BOXCOLOR;
  2583. CancelSelectTextDraw(ProjectEditor);
  2584. return 1;
  2585. }
  2586. }
  2587. switch(EditMode)
  2588. {
  2589. case EDITMODE_TEXT:
  2590. {
  2591. if(key == VK_DELETE || key == VK_BACKSPACE) KillTimer(DeleteTimer);
  2592. }
  2593. case EDITMODE_POSITION:
  2594. {
  2595. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_OEM_MINUS || key == VK_SUBTRACT) KillTimer(SpeedTimer);
  2596. }
  2597. case EDITMODE_SIZE:
  2598. {
  2599. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_OEM_MINUS || key == VK_SUBTRACT) KillTimer(EditSizeSpeedT);
  2600. }
  2601. case EDITMODE_OUTLINE:
  2602. {
  2603. 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);
  2604. }
  2605. case EDITMODE_SHADOW:
  2606. {
  2607. 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);
  2608. }
  2609. case EDITMODE_LETTERSIZE:
  2610. {
  2611. if(key == VK_OEM_PLUS || key == VK_ADD || key == VK_OEM_MINUS || key == VK_SUBTRACT) KillTimer(LetterTimer);
  2612. }
  2613. }
  2614. return 1;
  2615. }
  2616.  
  2617. TDE_CALLBACK:OnVirtualKeyDown(playerid, key)
  2618. {
  2619.  
  2620. if(!EditorEnabled || ProjectEditor != playerid) return false;
  2621.  
  2622. if(key == VK_RBUTTON)
  2623. {
  2624. if(TDEHTimer == 1)
  2625. {
  2626. TDEHTimer = 2;
  2627. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Vuelve a hacer click derecho para des-congelar las líneas rojas.");
  2628. }
  2629. else if(TDEHTimer == 2)
  2630. {
  2631. new X, Y;
  2632. GetMousePos(X, Y);
  2633. TextDrawSetPos(TDEditor_Helper[0], ((floatdiv(float(X), ScreenWidth) * 640.0)+0.15), -6.000000);
  2634. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, (((floatdiv(float(Y), ScreenHeight) * 448.0)/9.0)+0.4));
  2635. TextDrawSetPos(TDEditor_Helper[1], ((floatdiv(float(X), ScreenWidth) * 640.0)+1.0), (floatdiv(float(Y), ScreenHeight) * 448.0));
  2636. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2637. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2638. TDEHTimer = 1;
  2639. }
  2640. }
  2641.  
  2642. if(VirtualKeys[44][KEY_PRESSED])
  2643. {
  2644. if(key == VK_KEY_R)
  2645. {
  2646. if(TDEHTimer == -1)
  2647. {
  2648. new X, Y;
  2649. GetMousePos(X, Y);
  2650. TextDrawSetPos(TDEditor_Helper[0], ((floatdiv(float(X), ScreenWidth) * 640.0)+0.15), -6.000000);
  2651. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, (((floatdiv(float(Y), ScreenHeight) * 448.0)/9.0)+0.4));
  2652. TextDrawSetPos(TDEditor_Helper[1], ((floatdiv(float(X), ScreenWidth) * 640.0)+1.0), (floatdiv(float(Y), ScreenHeight) * 448.0));
  2653. SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Haz click derecho para congelar las líneas rojas.");
  2654. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2655. TextDrawShowForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2656. TDEHTimer = 1;
  2657. }
  2658. else
  2659. {
  2660. TDEHTimer = -1;
  2661. TextDrawHideForPlayer(ProjectEditor, TDEditor_Helper[0]);
  2662. TextDrawHideForPlayer(ProjectEditor, TDEditor_Helper[1]);
  2663. }
  2664. return 1;
  2665. }
  2666. if(EditMode == EDITMODE_ADJUST) return false;
  2667. if(key == VK_KEY_C)
  2668. {
  2669. if(EditIndex == INVALID_INDEX_ID) return false;
  2670. if(!IsPSel) return false;
  2671. new Index = GetAvailableIndex();
  2672. if(Index == INVALID_INDEX_ID) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}No puedes crear más TextDraws.");
  2673. DuplicateTextDraw(EditIndex, Index);
  2674.  
  2675. new string[128];
  2676. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}ha sido duplicado en TextDraw{e2b960} #%d.", EditIndex, Index);
  2677. SendClientMessage(ProjectEditor, -1, string);
  2678. EditIndex = Index;
  2679. return 1;
  2680. }
  2681. if(key == VK_KEY_X)
  2682. {
  2683. if(EditIndex == INVALID_INDEX_ID) return false;
  2684. if(!IsPSel) return false;
  2685. new string[128];
  2686. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}TextDraw {e2b960}#%d {FFFFFF}eliminado.", EditIndex);
  2687. SendClientMessage(ProjectEditor, -1, string);
  2688.  
  2689. RemoveTextDrawTDE(EditIndex);
  2690. SelectTextDraw(ProjectEditor, -1);
  2691. }
  2692. }
  2693. if(key == VK_END)
  2694. {
  2695. if(MouseCursor)
  2696. {
  2697. MouseCursor = false;
  2698. CancelSelectTextDraw(ProjectEditor);
  2699. }
  2700. else
  2701. {
  2702. MouseCursor = true;
  2703. SelectTextDraw(ProjectEditor, -1);
  2704. }
  2705. return 1;
  2706. }
  2707. if(EditMode == EDITMODE_ADJUST) return false;
  2708. if(EditIndex == INVALID_INDEX_ID) return false;
  2709. switch(EditMode)
  2710. {
  2711. case EDITMODE_TEXT:
  2712. {
  2713. if(key == VK_KEY_T || key == VK_F6) PressKeyEnter(VK_ENTER);
  2714. if(key == VK_DELETE || key == VK_BACKSPACE)
  2715. {
  2716. new len = strlen(ProjectTD[EditIndex][ETextDrawText]);
  2717. if(len == 0) return 1;
  2718. if(ProjectTD[EditIndex][ETextDrawText][len-1] == '~' && ProjectTD[EditIndex][ETextDrawText][len-2] == 'n' && ProjectTD[EditIndex][ETextDrawText][len-3] == '~')
  2719. {
  2720. strdel(ProjectTD[EditIndex][ETextDrawText], len-3, len);
  2721. }
  2722. else strdel(ProjectTD[EditIndex][ETextDrawText], len-1, len);
  2723. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  2724. DeleteTimer = SetTimer("DeleteTextDrawLetter", 500, 0);
  2725. return 1;
  2726. }
  2727. /*new KEYT[24]; NO HAVE GOOD WORK
  2728. /format(KEYT, 24, "%c", key);*/
  2729. strcat(ProjectTD[EditIndex][ETextDrawText], KeyToString(key), 800);
  2730. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  2731. }
  2732. case EDITMODE_POSITION:
  2733. {
  2734. switch(key)
  2735. {
  2736. case VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: if(MoveTDTimer == -1) MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 50, 0);
  2737. case VK_OEM_PLUS, VK_ADD:
  2738. {
  2739. if(EditMoveSpeed == 0.05)
  2740. {
  2741. EditMoveSpeed = 0.1;
  2742. new SpeedSTR[24];
  2743. format(SpeedSTR, 24, "%.1f", EditMoveSpeed);
  2744. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2745. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 0);
  2746. return 1;
  2747. }
  2748. EditMoveSpeed += 0.1;
  2749. new SpeedSTR[24];
  2750. format(SpeedSTR, 24, "%.1f", EditMoveSpeed);
  2751. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2752. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 0);
  2753. }
  2754. case VK_OEM_MINUS, VK_SUBTRACT:
  2755. {
  2756. if(EditMoveSpeed <= 0.1)
  2757. {
  2758. EditMoveSpeed = 0.05;
  2759. new SpeedSTR[24];
  2760. format(SpeedSTR, 24, "~r~%.2f", EditMoveSpeed);
  2761. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2762. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 1);
  2763. return 1;
  2764. }
  2765. EditMoveSpeed -= 0.1;
  2766. new SpeedSTR[24];
  2767. format(SpeedSTR, 24, "%.1f", EditMoveSpeed);
  2768. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2769. SpeedTimer = SetTimerEx("EditMovementSpeed", 500, 0, "d", 1);
  2770. }
  2771. }
  2772. }
  2773. case EDITMODE_SIZE:
  2774. {
  2775. switch(key)
  2776. {
  2777. case VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: if(EditSizeTDTimer == -1) EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 50, 0);
  2778. case VK_OEM_PLUS, VK_ADD:
  2779. {
  2780. if(EditSizeSpeed == 0.05)
  2781. {
  2782. EditSizeSpeed = 0.1;
  2783. new SpeedSTR[24];
  2784. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  2785. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2786. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 0);
  2787. return 1;
  2788. }
  2789. EditSizeSpeed += 0.1;
  2790. new SpeedSTR[24];
  2791. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  2792. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2793. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 0);
  2794. }
  2795. case VK_OEM_MINUS, VK_SUBTRACT:
  2796. {
  2797. if(EditSizeSpeed <= 0.1)
  2798. {
  2799. EditSizeSpeed = 0.05;
  2800. new SpeedSTR[24];
  2801. format(SpeedSTR, 24, "~r~%.2f", EditSizeSpeed);
  2802. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2803. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 1);
  2804. return 1;
  2805. }
  2806. EditSizeSpeed -= 0.1;
  2807. new SpeedSTR[24];
  2808. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  2809. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2810. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 500, 0, "d", 1);
  2811. }
  2812. }
  2813. }
  2814. case EDITMODE_COLOR, EDITMODE_BGCOLOR, EDITMODE_BOXCOLOR, EDITMODE_MODELS:
  2815. {
  2816. if(key == VK_LBUTTON)
  2817. {
  2818. if(!CursorX && (0 < CursorY < (ScreenHeight - 1)) && ColorMode != COLORMODE_RED) ColorMode = COLORMODE_RED;
  2819. if(CursorX == (ScreenWidth - 1) && (0 < CursorY < (ScreenHeight - 1)) && ColorMode != COLORMODE_BLUE) ColorMode = COLORMODE_BLUE;
  2820. if(!CursorY && (0 < CursorX < (ScreenWidth - 1)) && ColorMode != COLORMODE_GREEN) ColorMode = COLORMODE_GREEN;
  2821. if(CursorY == (ScreenHeight - 1) && (0 < CursorX < (ScreenWidth - 1)) && ColorMode != COLORMODE_ALPHA) ColorMode = COLORMODE_ALPHA;
  2822. }
  2823. }
  2824. case EDITMODE_OUTLINE:
  2825. {
  2826. switch(key)
  2827. {
  2828. case VK_OEM_PLUS, VK_ADD, VK_UP, VK_RIGHT:
  2829. {
  2830. ProjectTD[EditIndex][ETextDrawOutline] += 1;
  2831. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2832. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2833. new SpeedSTR[32];
  2834. format(SpeedSTR, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  2835. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2836.  
  2837. OutlineTimer = SetTimerEx("EditOutline", 500, 0, "d", 0);
  2838. }
  2839. case VK_OEM_MINUS, VK_SUBTRACT, VK_DOWN, VK_LEFT:
  2840. {
  2841. ProjectTD[EditIndex][ETextDrawOutline] -= 1;
  2842. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2843. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2844. new SpeedSTR[32];
  2845. format(SpeedSTR, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  2846. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2847.  
  2848. OutlineTimer = SetTimerEx("EditOutline", 500, 0, "d", 1);
  2849. }
  2850. }
  2851. }
  2852. case EDITMODE_SHADOW:
  2853. {
  2854. switch(key)
  2855. {
  2856. case VK_OEM_PLUS, VK_ADD, VK_UP, VK_RIGHT:
  2857. {
  2858. ProjectTD[EditIndex][ETextDrawShadow] += 1;
  2859. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2860. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2861. new SpeedSTR[32];
  2862. format(SpeedSTR, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  2863. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  2864.  
  2865. ShadowTimer = SetTimerEx("EditShadow", 500, 0, "d", 0);
  2866. }
  2867. case VK_OEM_MINUS, VK_SUBTRACT, VK_DOWN, VK_LEFT:
  2868. {
  2869. ProjectTD[EditIndex][ETextDrawShadow] -= 1;
  2870. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2871. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2872. new Speed[32];
  2873. format(Speed, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  2874. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2875.  
  2876. ShadowTimer = SetTimerEx("EditShadow", 500, 0, "d", 1);
  2877. }
  2878. }
  2879. }
  2880. case EDITMODE_LETTERSIZE:
  2881. {
  2882. switch(key)
  2883. {
  2884. case VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: if(LetterSizeTimer == -1) LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 50, 0);
  2885. case VK_OEM_PLUS, VK_ADD:
  2886. {
  2887. if(EditLetterSizeSpeed == 0.005)
  2888. {
  2889. EditLetterSizeSpeed = 0.01;
  2890. new Speed[24];
  2891. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  2892. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2893. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 0);
  2894. return 1;
  2895. }
  2896. EditLetterSizeSpeed += 0.01;
  2897. new Speed[24];
  2898. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  2899. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2900. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 0);
  2901. }
  2902. case VK_OEM_MINUS, VK_SUBTRACT:
  2903. {
  2904. if(EditLetterSizeSpeed <= 0.01)
  2905. {
  2906. EditLetterSizeSpeed = 0.005;
  2907. new Speed[24];
  2908. format(Speed, 24, "~r~%.4f", EditLetterSizeSpeed);
  2909. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2910. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 1);
  2911. return 1;
  2912. }
  2913. EditLetterSizeSpeed -= 0.01;
  2914. new Speed[24];
  2915. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  2916. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2917. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 1);
  2918. }
  2919. }
  2920. }
  2921. }
  2922. return true;
  2923. }
  2924.  
  2925. TDE_CALLBACK:EditOutline(key)
  2926. {
  2927. if(EditMode != EDITMODE_OUTLINE) return 1;
  2928. if(key == 0)
  2929. {
  2930. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED] || VirtualKeys[31][KEY_PRESSED] || VirtualKeys[30][KEY_PRESSED])
  2931. {
  2932. ProjectTD[EditIndex][ETextDrawOutline] += 1;
  2933. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2934. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2935. new Speed[32];
  2936. format(Speed, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  2937. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2938. OutlineTimer = SetTimerEx("EditOutline", 25, 0, "d", 0);
  2939. }
  2940. }
  2941. else if(key == 1)
  2942. {
  2943. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED] || VirtualKeys[32][KEY_PRESSED] || VirtualKeys[29][KEY_PRESSED])
  2944. {
  2945. ProjectTD[EditIndex][ETextDrawOutline] -= 1;
  2946. TextDrawSetOutline(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawOutline]);
  2947. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2948. new Speed[32];
  2949. format(Speed, 24, "OUTLINE: %d", ProjectTD[EditIndex][ETextDrawOutline]);
  2950. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2951. OutlineTimer = SetTimerEx("EditOutline", 25, 0, "d", 1);
  2952. }
  2953. }
  2954. return 1;
  2955. }
  2956.  
  2957. TDE_CALLBACK:EditShadow(key)
  2958. {
  2959. if(EditMode != EDITMODE_SHADOW) return 1;
  2960. if(key == 0)
  2961. {
  2962. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED] || VirtualKeys[31][KEY_PRESSED] || VirtualKeys[30][KEY_PRESSED])
  2963. {
  2964. ProjectTD[EditIndex][ETextDrawShadow] += 1;
  2965. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2966. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2967. new Speed[32];
  2968. format(Speed, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  2969. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2970. ShadowTimer = SetTimerEx("EditShadow", 25, 0, "d", 0);
  2971. }
  2972. }
  2973. else if(key == 1)
  2974. {
  2975. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED] || VirtualKeys[32][KEY_PRESSED] || VirtualKeys[29][KEY_PRESSED])
  2976. {
  2977. ProjectTD[EditIndex][ETextDrawShadow] -= 1;
  2978. TextDrawSetShadow(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawShadow]);
  2979. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  2980. new Speed[32];
  2981. format(Speed, 24, "SHADOW: %d", ProjectTD[EditIndex][ETextDrawShadow]);
  2982. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  2983. ShadowTimer = SetTimerEx("EditShadow", 25, 0, "d", 1);
  2984. }
  2985. }
  2986. return 1;
  2987. }
  2988.  
  2989. TDE_CALLBACK:EditSizeSpeedCallback(key)
  2990. {
  2991. if(EditMode != EDITMODE_SIZE) return 1;
  2992. if(key == 0)
  2993. {
  2994. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED])
  2995. {
  2996. if(EditSizeSpeed == 0.05)
  2997. {
  2998. EditSizeSpeed = 0.1;
  2999. new SpeedSTR[24];
  3000. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  3001. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3002. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 0);
  3003. return 1;
  3004. }
  3005. EditSizeSpeed += 0.1;
  3006. new SpeedSTR[24];
  3007. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  3008. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3009. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 0);
  3010. }
  3011. }
  3012. else if(key == 1)
  3013. {
  3014. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED])
  3015. {
  3016. if(EditSizeSpeed <= 0.1)
  3017. {
  3018. EditSizeSpeed = 0.05;
  3019. new SpeedSTR[24];
  3020. format(SpeedSTR, 24, "~r~%.2f", EditSizeSpeed);
  3021. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3022. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 1);
  3023. return 1;
  3024. }
  3025. EditSizeSpeed -= 0.1;
  3026. new SpeedSTR[24];
  3027. format(SpeedSTR, 24, "%.1f", EditSizeSpeed);
  3028. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3029. EditSizeSpeedT = SetTimerEx("EditSizeSpeedCallback", 25, 0, "d", 1);
  3030. }
  3031. }
  3032. return 1;
  3033. }
  3034.  
  3035. TDE_CALLBACK:EditMovementSpeed(key)
  3036. {
  3037. if(EditMode != EDITMODE_POSITION) return 1;
  3038. if(key == 0)
  3039. {
  3040. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED])
  3041. {
  3042. if(EditMoveSpeed == 0.05)
  3043. {
  3044. EditMoveSpeed = 0.1;
  3045. new Speed[24];
  3046. format(Speed, 24, "%.1f", EditMoveSpeed);
  3047. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3048. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 0);
  3049. return 1;
  3050. }
  3051. EditMoveSpeed += 0.1;
  3052. new Speed[24];
  3053. format(Speed, 24, "%.1f", EditMoveSpeed);
  3054. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3055. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 0);
  3056. }
  3057. }
  3058. else if(key == 1)
  3059. {
  3060. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED])
  3061. {
  3062. if(EditMoveSpeed <= 0.1)
  3063. {
  3064. EditMoveSpeed = 0.05;
  3065. new Speed[24];
  3066. format(Speed, 24, "~r~%.2f", EditMoveSpeed);
  3067. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3068. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 1);
  3069. return 1;
  3070. }
  3071. EditMoveSpeed -= 0.1;
  3072. new Speed[24];
  3073. format(Speed, 24, "%.1f", EditMoveSpeed);
  3074. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3075. SpeedTimer = SetTimerEx("EditMovementSpeed", 25, 0, "d", 1);
  3076. }
  3077. }
  3078. return 1;
  3079. }
  3080.  
  3081. TDE_CALLBACK:TEditLetterSizeSpeed(key)
  3082. {
  3083. if(EditMode != EDITMODE_LETTERSIZE) return 1;
  3084. if(key == 0)
  3085. {
  3086. if(VirtualKeys[81][KEY_PRESSED] || VirtualKeys[76][KEY_PRESSED])
  3087. {
  3088. if(EditLetterSizeSpeed == 0.005)
  3089. {
  3090. EditLetterSizeSpeed = 0.01;
  3091. new Speed[24];
  3092. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  3093. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3094. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 0);
  3095. return 1;
  3096. }
  3097. EditLetterSizeSpeed += 0.01;
  3098. new Speed[24];
  3099. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  3100. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3101. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 25, 0, "d", 0);
  3102. }
  3103. }
  3104. else if(key == 1)
  3105. {
  3106. if(VirtualKeys[83][KEY_PRESSED] || VirtualKeys[78][KEY_PRESSED])
  3107. {
  3108. if(EditLetterSizeSpeed <= 0.01)
  3109. {
  3110. EditLetterSizeSpeed = 0.005;
  3111. new Speed[24];
  3112. format(Speed, 24, "~r~%.4f", EditLetterSizeSpeed);
  3113. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3114. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 500, 0, "d", 1);
  3115. return 1;
  3116. }
  3117. EditLetterSizeSpeed -= 0.01;
  3118. new Speed[24];
  3119. format(Speed, 24, "%.3f", EditLetterSizeSpeed);
  3120. GameTextForPlayer(ProjectEditor, Speed, 1000, 5);
  3121. LetterTimer = SetTimerEx("TEditLetterSizeSpeed", 25, 0, "d", 1);
  3122. }
  3123. }
  3124. return 1;
  3125. }
  3126.  
  3127. TDE_CALLBACK:DeleteTextDrawLetter()
  3128. {
  3129. if(EditMode != EDITMODE_TEXT) return 1;
  3130. if(VirtualKeys[52][KEY_PRESSED] || VirtualKeys[37][KEY_PRESSED]) //Delete
  3131. {
  3132. new len = strlen(ProjectTD[EditIndex][ETextDrawText]);
  3133. if(len == 0) return 1;
  3134. if(ProjectTD[EditIndex][ETextDrawText][len-1] == '~' && ProjectTD[EditIndex][ETextDrawText][len-2] == 'n' && ProjectTD[EditIndex][ETextDrawText][len-3] == '~')
  3135. {
  3136. strdel(ProjectTD[EditIndex][ETextDrawText], len-3, len);
  3137. }
  3138. else strdel(ProjectTD[EditIndex][ETextDrawText], len-1, len);
  3139. TextDrawSetString(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawText]);
  3140. DeleteTimer = SetTimer("DeleteTextDrawLetter", 25, 0);
  3141. }
  3142. return 1;
  3143. }
  3144.  
  3145. TDE_CALLBACK:LetterSizeTextDrawEDITOR()
  3146. {
  3147. if(EditMode != EDITMODE_LETTERSIZE) return 1;
  3148. if(VirtualKeys[31][KEY_PRESSED]) //UP
  3149. {
  3150. ProjectTD[EditIndex][ETextDrawLetterY] -= EditLetterSizeSpeed;
  3151. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3152. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3153.  
  3154. new SpeedSTR[64];
  3155. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3156. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3157. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3158. return 1;
  3159. }
  3160. if(VirtualKeys[32][KEY_PRESSED]) //DOWN
  3161. {
  3162. ProjectTD[EditIndex][ETextDrawLetterY] += EditLetterSizeSpeed;
  3163. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3164. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3165.  
  3166. new SpeedSTR[64];
  3167. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3168. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3169. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3170. return 1;
  3171. }
  3172. if(VirtualKeys[29][KEY_PRESSED]) //LEFT
  3173. {
  3174. ProjectTD[EditIndex][ETextDrawLetterX] -= floatdiv(EditLetterSizeSpeed, 10);
  3175. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3176. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3177.  
  3178. new SpeedSTR[64];
  3179. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3180. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3181. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3182. return 1;
  3183. }
  3184. if(VirtualKeys[30][KEY_PRESSED]) //RIGHT
  3185. {
  3186. ProjectTD[EditIndex][ETextDrawLetterX] += floatdiv(EditLetterSizeSpeed, 10);
  3187. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3188. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3189.  
  3190. new SpeedSTR[64];
  3191. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3192. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3193. LetterSizeTimer = SetTimer("LetterSizeTextDrawEDITOR", 25, 0);
  3194. return 1;
  3195. }
  3196. KillTimer(LetterSizeTimer);
  3197. LetterSizeTimer = -1;
  3198. return 1;
  3199. }
  3200.  
  3201. TDE_CALLBACK:ReSizeTextDrawEDITOR()
  3202. {
  3203. if(EditMode != EDITMODE_SIZE) return 1;
  3204. if(VirtualKeys[31][KEY_PRESSED]) //UP
  3205. {
  3206.  
  3207. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) )
  3208. {
  3209. ProjectTD[EditIndex][ETextDrawLetterY] -= EditSizeSpeed/10;
  3210. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3211.  
  3212. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3213. new SpeedSTR[64];
  3214. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3215. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3216. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3217. return 1;
  3218. }
  3219. ProjectTD[EditIndex][ETextDrawTextY] -= EditSizeSpeed;
  3220. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3221. switch(alignment)
  3222. {
  3223. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3224. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3225. }
  3226. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3227.  
  3228. new SpeedSTR[64];
  3229. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3230. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3231. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3232. return 1;
  3233. }
  3234. if(VirtualKeys[32][KEY_PRESSED]) //DOWN
  3235. {
  3236. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) )
  3237. {
  3238. ProjectTD[EditIndex][ETextDrawLetterY] += EditSizeSpeed/10;
  3239. TextDrawLetterSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawLetterX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3240.  
  3241. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3242. new SpeedSTR[64];
  3243. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3244. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3245. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3246. return 1;
  3247. }
  3248. ProjectTD[EditIndex][ETextDrawTextY] += EditSizeSpeed;
  3249. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3250. switch(alignment)
  3251. {
  3252. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3253. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3254. }
  3255. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3256.  
  3257. new SpeedSTR[64];
  3258. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3259. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3260. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3261. return 1;
  3262. }
  3263. if(VirtualKeys[29][KEY_PRESSED]) //LEFT
  3264. {
  3265. ProjectTD[EditIndex][ETextDrawTextX] -= EditSizeSpeed;
  3266. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3267. switch(alignment)
  3268. {
  3269. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3270. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3271. }
  3272. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3273.  
  3274. new SpeedSTR[64];
  3275. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3276. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) ) format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3277. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3278. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3279. return 1;
  3280. }
  3281. if(VirtualKeys[30][KEY_PRESSED]) //RIGHT
  3282. {
  3283. ProjectTD[EditIndex][ETextDrawTextX] += EditSizeSpeed;
  3284. new alignment = TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]);
  3285. switch(alignment)
  3286. {
  3287. case 1, 3: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3288. case 2: TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextY], ProjectTD[EditIndex][ETextDrawTextX]);
  3289. }
  3290. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3291.  
  3292. new SpeedSTR[64];
  3293. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3294. if( (TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]) && ProjectTD[EditIndex][ETextDrawLetterX] == 0.0) ) format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawLetterY]);
  3295. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3296. EditSizeTDTimer = SetTimer("ReSizeTextDrawEDITOR", 25, 0);
  3297. return 1;
  3298. }
  3299. KillTimer(EditSizeTDTimer);
  3300. EditSizeTDTimer = -1;
  3301. return 1;
  3302. }
  3303.  
  3304. TDE_CALLBACK:MoveTextDrawEDITOR()
  3305. {
  3306. if(EditMode != EDITMODE_POSITION) return 1;
  3307. if(VirtualKeys[31][KEY_PRESSED]) //UP
  3308. {
  3309. ProjectTD[EditIndex][ETextDrawPosY] -= EditMoveSpeed;
  3310. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3311. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3312.  
  3313. new SpeedSTR[64];
  3314. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3315. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3316. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3317. return 1;
  3318. }
  3319. if(VirtualKeys[32][KEY_PRESSED]) //DOWN
  3320. {
  3321. ProjectTD[EditIndex][ETextDrawPosY] += EditMoveSpeed;
  3322. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3323. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3324.  
  3325. new SpeedSTR[64];
  3326. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3327. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3328. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3329. return 1;
  3330. }
  3331. if(VirtualKeys[29][KEY_PRESSED]) //LEFT
  3332. {
  3333. ProjectTD[EditIndex][ETextDrawPosX] -= EditMoveSpeed;
  3334. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3335.  
  3336. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  3337. {
  3338. if(TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]) != 2)
  3339. {
  3340. ProjectTD[EditIndex][ETextDrawTextX] -= EditMoveSpeed;
  3341. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3342. }
  3343. }
  3344.  
  3345. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3346.  
  3347. new SpeedSTR[64];
  3348. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3349. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3350. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3351. return 1;
  3352. }
  3353. if(VirtualKeys[30][KEY_PRESSED]) //RIGHT
  3354. {
  3355. ProjectTD[EditIndex][ETextDrawPosX] += EditMoveSpeed;
  3356. TextDrawSetPos(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3357.  
  3358. if(TextDrawIsBox(ProjectTD[EditIndex][ETextDrawID]))
  3359. {
  3360. if(TextDrawGetAlignment(ProjectTD[EditIndex][ETextDrawID]) != 2)
  3361. {
  3362. ProjectTD[EditIndex][ETextDrawTextX] += EditMoveSpeed;
  3363. TextDrawTextSize(ProjectTD[EditIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawTextX], ProjectTD[EditIndex][ETextDrawTextY]);
  3364. }
  3365. }
  3366.  
  3367. TextDrawShowForPlayer(ProjectEditor, ProjectTD[EditIndex][ETextDrawID]);
  3368.  
  3369. new SpeedSTR[64];
  3370. format(SpeedSTR, 64, "%.4f, %.4f", ProjectTD[EditIndex][ETextDrawPosX], ProjectTD[EditIndex][ETextDrawPosY]);
  3371. GameTextForPlayer(ProjectEditor, SpeedSTR, 1000, 5);
  3372. MoveTDTimer = SetTimer("MoveTextDrawEDITOR", 25, 0);
  3373. return 1;
  3374. }
  3375. KillTimer(MoveTDTimer);
  3376. MoveTDTimer = -1;
  3377. return 1;
  3378. }
  3379.  
  3380. stock ShowEditor()
  3381. {
  3382. TogglePlayerControllable(ProjectEditor, false);
  3383.  
  3384. Loop(0, sizeof(TDE_Menu))
  3385. {
  3386. switch(c)
  3387. {
  3388. case 0:
  3389. {
  3390. TextDrawColor(TDE_Menu[c], 0x000000FF);
  3391. TextDrawSetSelectable(TDE_Menu[c], false);
  3392. }
  3393. case 2:
  3394. {
  3395. TextDrawColor(TDE_Menu[c], 0xDDDDDDFF);
  3396. TextDrawSetSelectable(TDE_Menu[c], true);
  3397. }
  3398. default:
  3399. {
  3400. TextDrawColor(TDE_Menu[c], 0x888888FF);
  3401. TextDrawSetSelectable(TDE_Menu[c], false);
  3402. }
  3403. }
  3404. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  3405. }
  3406. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  3407. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  3408. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  3409. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  3410. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  3411. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  3412. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  3413. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  3414. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  3415. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  3416. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  3417. TextDrawShowForPlayer(ProjectEditor, TD_Status);
  3418. SelectTextDraw(ProjectEditor, -1);
  3419. return true;
  3420. }
  3421.  
  3422. stock ShowEditorEx()
  3423. {
  3424.  
  3425.  
  3426. Loop(0, sizeof(TDE_Menu))
  3427. {
  3428. switch(c)
  3429. {
  3430. case 0:
  3431. {
  3432. TextDrawColor(TDE_Menu[c], 0x000000FF);
  3433. TextDrawSetSelectable(TDE_Menu[c], false);
  3434. }
  3435. default:
  3436. {
  3437. TextDrawColor(TDE_Menu[c], 0x888888FF);
  3438. TextDrawSetSelectable(TDE_Menu[c], false);
  3439. }
  3440. }
  3441. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  3442. }
  3443. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  3444. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  3445. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  3446. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  3447. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  3448. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  3449. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  3450. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  3451. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  3452. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  3453. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  3454. TextDrawShowForPlayer(ProjectEditor, TD_Status);
  3455. SelectTextDraw(ProjectEditor, -1);
  3456. return true;
  3457. }
  3458.  
  3459. stock CreateMenuTextDraws()
  3460. {
  3461. TDE_Menu[0] = TextDrawCreate(0.0, OffsetZ - 2.0, "LD_SPAC:white");
  3462. TextdrawSettings(TDE_Menu[0], Float:{0.5, 1.0, 640.0, 37.0}, {0,0x000000FF,0,0,0,0,255,4,1,0});
  3463.  
  3464. new Float:OffsetX = 0.01;
  3465. TDE_Menu[1] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_manage"); OffsetX += 32.0;
  3466. TDE_Menu[4] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_export"); OffsetX += 32.0;
  3467. TDE_Menu[2] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_new"); OffsetX += 32.0;
  3468. TDE_Menu[3] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_delete"); OffsetX += 32.0;
  3469. TDE_Menu[8] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_duplicate"); OffsetX += 32.0;
  3470. TDE_Menu[24] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font0");
  3471. TDE_Menu[25] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font1");
  3472. TDE_Menu[26] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font2");
  3473. TDE_Menu[27] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_font3");
  3474. TDE_Menu[12] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_image");
  3475. TDE_Menu[13] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_previews"); OffsetX += 32.0;
  3476. TDE_Menu[9] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_pos"); OffsetX += 32.0;
  3477. TDE_Menu[10] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_size"); OffsetX += 32.0;
  3478. TDE_Menu[11] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_text");
  3479. TDE_Menu[35] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_modelid"); OffsetX += 32.0;
  3480. TDE_Menu[14] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_color"); OffsetX += 32.0;
  3481. TDE_Menu[15] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_bgcolor"); OffsetX += 32.0;
  3482. TDE_Menu[32] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_boxcolor"); OffsetX += 32.0;
  3483. TDE_Menu[16] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_lettersize"); OffsetX += 32.0;
  3484. TDE_Menu[17] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_outline"); OffsetX += 32.0;
  3485. TDE_Menu[18] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_shadow"); OffsetX += 32.0;
  3486. TDE_Menu[19] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_useboxno");
  3487. TDE_Menu[20] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_useboxyes");
  3488. TDE_Menu[34] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_modeloptions"); OffsetX += 32.0;
  3489. TDE_Menu[21] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_alignmentleft");
  3490. TDE_Menu[22] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_alignmentcenter");
  3491. TDE_Menu[23] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_alignmentright"); OffsetX += 32.0;
  3492. TDE_Menu[5] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_global");
  3493. TDE_Menu[33] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_player"); OffsetX += 32.0;
  3494. TDE_Menu[28] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_selectableno");
  3495. TDE_Menu[29] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_selectableyes"); OffsetX += 32.0;
  3496. TDE_Menu[30] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_proportionno");
  3497. TDE_Menu[31] = TextDrawCreate(OffsetX, OffsetZ, "TDE:btn_proportionyes"); OffsetX += 32.0;
  3498. 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});
  3499.  
  3500. TD_Status = TextDrawCreate(2.0, 404.86, "EditMode: EDITMODE_NONE");
  3501. TextDrawLetterSize(TD_Status, 0.179665, 0.857481);
  3502. TextDrawAlignment(TD_Status, 1);
  3503. TextDrawColor(TD_Status, -186);
  3504. TextDrawSetShadow(TD_Status, 0);
  3505. TextDrawSetOutline(TD_Status, 0);
  3506. TextDrawBackgroundColor(TD_Status, 255);
  3507. TextDrawFont(TD_Status, 1);
  3508. TextDrawSetProportional(TD_Status, 1);
  3509.  
  3510. TDEditor_Helper[0] = TextDrawCreate(322.000000, -6.000000, "_");
  3511. TextDrawAlignment(TDEditor_Helper[0], 2);
  3512. TextDrawBackgroundColor(TDEditor_Helper[0], 255);
  3513. TextDrawFont(TDEditor_Helper[0], 1);
  3514. TextDrawLetterSize(TDEditor_Helper[0], 0.000000, 24.000003);
  3515. TextDrawColor(TDEditor_Helper[0], -1);
  3516. TextDrawSetOutline(TDEditor_Helper[0], 0);
  3517. TextDrawSetProportional(TDEditor_Helper[0], 1);
  3518. TextDrawSetShadow(TDEditor_Helper[0], 1);
  3519. TextDrawUseBox(TDEditor_Helper[0], 1);
  3520. TextDrawBoxColor(TDEditor_Helper[0], -16776961);
  3521. TextDrawTextSize(TDEditor_Helper[0], 0.000000, -2.000000);
  3522. TextDrawSetSelectable(TDEditor_Helper[0], 0);
  3523.  
  3524. TDEditor_Helper[1] = TextDrawCreate(324.000000, 150.000000, "_");
  3525. TextDrawBackgroundColor(TDEditor_Helper[1], 255);
  3526. TextDrawFont(TDEditor_Helper[1], 1);
  3527. TextDrawLetterSize(TDEditor_Helper[1], 0.00000, -0.321204);
  3528. TextDrawColor(TDEditor_Helper[1], -1);
  3529. TextDrawSetOutline(TDEditor_Helper[1], 0);
  3530. TextDrawSetProportional(TDEditor_Helper[1], 1);
  3531. TextDrawSetShadow(TDEditor_Helper[1], 1);
  3532. TextDrawUseBox(TDEditor_Helper[1], 1);
  3533. TextDrawBoxColor(TDEditor_Helper[1], -16776961);
  3534. TextDrawTextSize(TDEditor_Helper[1], -30.000000, 0.000000);
  3535. TextDrawSetSelectable(TDEditor_Helper[1], 0);
  3536.  
  3537. TDELOGO = TextDrawCreate(215.000091, 182.933395, "TDE:TDELogo");
  3538. TextDrawLetterSize(TDELOGO, 0.000000, 0.000000);
  3539. TextDrawTextSize(TDELOGO, 190.0, 50.0);
  3540. TextDrawAlignment(TDELOGO, 1);
  3541. TextDrawColor(TDELOGO, -1);
  3542. TextDrawSetShadow(TDELOGO, 0);
  3543. TextDrawSetOutline(TDELOGO, 0);
  3544. TextDrawFont(TDELOGO, 4);
  3545. TextDrawSetSelectable(TDELOGO, 1);
  3546. return 1;
  3547. }
  3548.  
  3549. stock DestroyMenuTextDraws()
  3550. {
  3551. Loop(0, sizeof TDE_Menu)
  3552. {
  3553. TextDrawDestroy(TDE_Menu[c]);
  3554. TDE_Menu[c] = Text:INVALID_TEXT_DRAW;
  3555. }
  3556. TextDrawDestroy(TD_Status);
  3557. TD_Status = Text:INVALID_TEXT_DRAW;
  3558. TextDrawDestroy(TDEditor_Helper[0]);
  3559. TDEditor_Helper[0] = Text:INVALID_TEXT_DRAW;
  3560. TextDrawDestroy(TDEditor_Helper[1]);
  3561. TDEditor_Helper[1] = Text:INVALID_TEXT_DRAW;
  3562. TextDrawDestroy(TDELOGO);
  3563. TDELOGO = Text:INVALID_TEXT_DRAW;
  3564. return 1;
  3565. }
  3566.  
  3567. stock TextdrawSettings(Text:textid, Float:Sizes[4], Options[10]) //By iPleomax
  3568. {
  3569. TextDrawLetterSize (textid, Sizes[0], Sizes[1]);
  3570. TextDrawTextSize (textid, Sizes[2], Sizes[3]);
  3571. TextDrawAlignment (textid, Options[0] ? Options[0] : 1);
  3572. TextDrawColor (textid, Options[1]);
  3573. TextDrawUseBox (textid, Options[2]);
  3574. TextDrawBoxColor (textid, Options[3]);
  3575. TextDrawSetShadow (textid, Options[4]);
  3576. TextDrawSetOutline (textid, Options[5]);
  3577. TextDrawBackgroundColor (textid, Options[6]);
  3578. TextDrawFont (textid, Options[7]);
  3579. TextDrawSetProportional (textid, Options[8]);
  3580. TextDrawSetSelectable (textid, Options[9]);
  3581. }
  3582.  
  3583. stock GetAvailableIndex()
  3584. {
  3585. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  3586. {
  3587. if(ProjectTD[i][ItsFromTDE] == -1)
  3588. {
  3589. if(ProjectTD[i][ETextDrawID] == Text:INVALID_TEXT_DRAW)
  3590. {
  3591. return i;
  3592. }
  3593. }
  3594. }
  3595. return INVALID_INDEX_ID;
  3596. }
  3597.  
  3598. stock KeyToString(key)
  3599. {
  3600. new LETTER[4] = "";
  3601. if((GetKeyState(VK_CAPSLOCK) & 0x0001) != 0)
  3602. {
  3603. if(VirtualKeys[41][KEY_PRESSED]) //Shift
  3604. {
  3605. switch(key)
  3606. {
  3607. case VK_KEY_A: LETTER = "a";//41
  3608. case VK_KEY_B: LETTER = "b";//42
  3609. case VK_KEY_C: LETTER = "c";//43
  3610. case VK_KEY_D: LETTER = "d";//44
  3611. case VK_KEY_E: LETTER = "e";//45
  3612. case VK_KEY_F: LETTER = "f";//46
  3613. case VK_KEY_G: LETTER = "g";//47
  3614. case VK_KEY_H: LETTER = "h";//48
  3615. case VK_KEY_I: LETTER = "i";//49
  3616. case VK_KEY_J: LETTER = "j";//4A
  3617. case VK_KEY_K: LETTER = "k";//4B
  3618. case VK_KEY_L: LETTER = "l";//4C
  3619. case VK_KEY_M: LETTER = "m";//4D
  3620. case VK_KEY_N: LETTER = "n";//4E
  3621. case VK_KEY_O: LETTER = "o";//4F
  3622. case VK_KEY_P: LETTER = "p";//50
  3623. case VK_KEY_Q: LETTER = "q";//51
  3624. case VK_KEY_R: LETTER = "r";//52
  3625. case VK_KEY_S: LETTER = "s";//53
  3626. case VK_KEY_T: LETTER = "t";//54
  3627. case VK_KEY_U: LETTER = "u";//55
  3628. case VK_KEY_V: LETTER = "v";//56
  3629. case VK_KEY_W: LETTER = "w";//57
  3630. case VK_KEY_X: LETTER = "x";//58
  3631. case VK_KEY_Y: LETTER = "y";//59
  3632. case VK_KEY_Z: LETTER = "z";//5A
  3633. case VK_SPACE: LETTER = "_";
  3634. case VK_ENTER: LETTER = "~n~";
  3635. case VK_KEYB0: LETTER = "=";//30
  3636. case VK_KEYB1: LETTER = "!";//!
  3637. case VK_KEYB2: LETTER = "\"";//32
  3638. //case VK_KEYB3: LETTER = "·";//33
  3639. case VK_KEYB4: LETTER = "$";//34
  3640. case VK_KEYB5: LETTER = "%";//35
  3641. case VK_KEYB6: LETTER = "&";//36
  3642. case VK_KEYB7: LETTER = "/";//37
  3643. case VK_KEYB8: LETTER = "(";//38
  3644. case VK_KEYB9: LETTER = ")";//39
  3645. case VK_OEM_PLUS: LETTER = "*";
  3646. case VK_OEM_COMMA: LETTER = ";";
  3647. case VK_OEM_MINUS: LETTER = "_";
  3648. case VK_OEM_PERIOD: LETTER = ":";
  3649. case VK_OEM_2: LETTER = "?";
  3650. case VK_OEM_4: LETTER = "?";
  3651. //case VK_OEM_5: LETTER = "ª";
  3652. case VK_OEM_6: LETTER = "[";
  3653. case VK_OEM_102: LETTER = ">";
  3654. case VK_NUMPAD0: LETTER = "0";
  3655. case VK_NUMPAD1: LETTER = "1";
  3656. case VK_NUMPAD2: LETTER = "2";
  3657. case VK_NUMPAD3: LETTER = "3";
  3658. case VK_NUMPAD4: LETTER = "4";
  3659. case VK_NUMPAD5: LETTER = "5";
  3660. case VK_NUMPAD6: LETTER = "6";
  3661. case VK_NUMPAD7: LETTER = "7";
  3662. case VK_NUMPAD8: LETTER = "8";
  3663. case VK_NUMPAD9: LETTER = "9";
  3664. case VK_MULTIPLY: LETTER = "*";
  3665. case VK_ADD: LETTER = "+";
  3666. //case VK_SEPARATOR: LETTER = "?";
  3667. case VK_SUBTRACT: LETTER = "-";
  3668. case VK_DECIMAL: LETTER = ".";
  3669. case VK_DIVIDE: LETTER = "/";
  3670. }
  3671. }
  3672. else
  3673. {
  3674. switch(key)
  3675. {
  3676. case VK_KEY_A: LETTER = "A";//41
  3677. case VK_KEY_B: LETTER = "B";//42
  3678. case VK_KEY_C: LETTER = "C";//43
  3679. case VK_KEY_D: LETTER = "D";//44
  3680. case VK_KEY_E: LETTER = "E";//45
  3681. case VK_KEY_F: LETTER = "F";//46
  3682. case VK_KEY_G: LETTER = "G";//47
  3683. case VK_KEY_H: LETTER = "H";//48
  3684. case VK_KEY_I: LETTER = "I";//49
  3685. case VK_KEY_J: LETTER = "J";//4A
  3686. case VK_KEY_K: LETTER = "K";//4B
  3687. case VK_KEY_L: LETTER = "L";//4C
  3688. case VK_KEY_M: LETTER = "M";//4D
  3689. case VK_KEY_N: LETTER = "N";//4E
  3690. case VK_KEY_O: LETTER = "O";//4F
  3691. case VK_KEY_P: LETTER = "P";//50
  3692. case VK_KEY_Q: LETTER = "Q";//51
  3693. case VK_KEY_R: LETTER = "R";//52
  3694. case VK_KEY_S: LETTER = "S";//53
  3695. case VK_KEY_T: LETTER = "T";//54
  3696. case VK_KEY_U: LETTER = "U";//55
  3697. case VK_KEY_V: LETTER = "V";//56
  3698. case VK_KEY_W: LETTER = "W";//57
  3699. case VK_KEY_X: LETTER = "X";//58
  3700. case VK_KEY_Y: LETTER = "Y";//59
  3701. case VK_KEY_Z: LETTER = "Z";//5A
  3702. case VK_SPACE: LETTER = "_";
  3703. case VK_ENTER: LETTER = "~n~";
  3704. case VK_KEYB0: LETTER = "0";//30
  3705. case VK_KEYB1: LETTER = "1";//31
  3706. case VK_KEYB2: LETTER = "2";//32
  3707. case VK_KEYB3: LETTER = "3";//33
  3708. case VK_KEYB4: LETTER = "4";//34
  3709. case VK_KEYB5: LETTER = "5";//35
  3710. case VK_KEYB6: LETTER = "6";//36
  3711. case VK_KEYB7: LETTER = "7";//37
  3712. case VK_KEYB8: LETTER = "8";//38
  3713. case VK_KEYB9: LETTER = "9";//39
  3714. case VK_OEM_PLUS: LETTER = "+";
  3715. case VK_OEM_COMMA: LETTER = ",";
  3716. case VK_OEM_MINUS: LETTER = "-";
  3717. case VK_OEM_PERIOD: LETTER = ".";
  3718. case VK_OEM_2: LETTER = "]";
  3719. case VK_OEM_4: LETTER = "'";
  3720. case VK_OEM_5: LETTER = "|";
  3721. case VK_OEM_6: LETTER = "¡";
  3722. case VK_OEM_102: LETTER = "<";
  3723. case VK_NUMPAD0: LETTER = "0";
  3724. case VK_NUMPAD1: LETTER = "1";
  3725. case VK_NUMPAD2: LETTER = "2";
  3726. case VK_NUMPAD3: LETTER = "3";
  3727. case VK_NUMPAD4: LETTER = "4";
  3728. case VK_NUMPAD5: LETTER = "5";
  3729. case VK_NUMPAD6: LETTER = "6";
  3730. case VK_NUMPAD7: LETTER = "7";
  3731. case VK_NUMPAD8: LETTER = "8";
  3732. case VK_NUMPAD9: LETTER = "9";
  3733. case VK_MULTIPLY: LETTER = "*";
  3734. case VK_ADD: LETTER = "+";
  3735. //case VK_SEPARATOR: LETTER = "?";
  3736. case VK_SUBTRACT: LETTER = "-";
  3737. case VK_DECIMAL: LETTER = ".";
  3738. case VK_DIVIDE: LETTER = "/";
  3739.  
  3740.  
  3741. }
  3742. }
  3743. }
  3744. else
  3745. {
  3746. if(VirtualKeys[41][KEY_PRESSED]) //Shift
  3747. {
  3748. switch(key)
  3749. {
  3750. case VK_KEY_A: LETTER = "A";//41
  3751. case VK_KEY_B: LETTER = "B";//42
  3752. case VK_KEY_C: LETTER = "C";//43
  3753. case VK_KEY_D: LETTER = "D";//44
  3754. case VK_KEY_E: LETTER = "E";//45
  3755. case VK_KEY_F: LETTER = "F";//46
  3756. case VK_KEY_G: LETTER = "G";//47
  3757. case VK_KEY_H: LETTER = "H";//48
  3758. case VK_KEY_I: LETTER = "I";//49
  3759. case VK_KEY_J: LETTER = "J";//4A
  3760. case VK_KEY_K: LETTER = "K";//4B
  3761. case VK_KEY_L: LETTER = "L";//4C
  3762. case VK_KEY_M: LETTER = "M";//4D
  3763. case VK_KEY_N: LETTER = "N";//4E
  3764. case VK_KEY_O: LETTER = "O";//4F
  3765. case VK_KEY_P: LETTER = "P";//50
  3766. case VK_KEY_Q: LETTER = "Q";//51
  3767. case VK_KEY_R: LETTER = "R";//52
  3768. case VK_KEY_S: LETTER = "S";//53
  3769. case VK_KEY_T: LETTER = "T";//54
  3770. case VK_KEY_U: LETTER = "U";//55
  3771. case VK_KEY_V: LETTER = "V";//56
  3772. case VK_KEY_W: LETTER = "W";//57
  3773. case VK_KEY_X: LETTER = "X";//58
  3774. case VK_KEY_Y: LETTER = "Y";//59
  3775. case VK_KEY_Z: LETTER = "Z";//5A
  3776. case VK_SPACE: LETTER = "_";
  3777. case VK_ENTER: LETTER = "~n~";
  3778. case VK_KEYB0: LETTER = "=";//30
  3779. case VK_KEYB1: LETTER = "!";//!
  3780. case VK_KEYB2: LETTER = "\"";//32
  3781. //case VK_KEYB3: LETTER = "·";//33
  3782. case VK_KEYB4: LETTER = "$";//34
  3783. case VK_KEYB5: LETTER = "%";//35
  3784. case VK_KEYB6: LETTER = "&";//36
  3785. case VK_KEYB7: LETTER = "/";//37
  3786. case VK_KEYB8: LETTER = "(";//38
  3787. case VK_KEYB9: LETTER = ")";//39
  3788. case VK_OEM_PLUS: LETTER = "*";
  3789. case VK_OEM_COMMA: LETTER = ";";
  3790. case VK_OEM_MINUS: LETTER = "_";
  3791. case VK_OEM_PERIOD: LETTER = ":";
  3792. case VK_OEM_2: LETTER = "?";
  3793. case VK_OEM_4: LETTER = "?";
  3794. //case VK_OEM_5: LETTER = "ª";
  3795. case VK_OEM_6: LETTER = "[";
  3796. case VK_OEM_102: LETTER = ">";
  3797. case VK_NUMPAD0: LETTER = "0";
  3798. case VK_NUMPAD1: LETTER = "1";
  3799. case VK_NUMPAD2: LETTER = "2";
  3800. case VK_NUMPAD3: LETTER = "3";
  3801. case VK_NUMPAD4: LETTER = "4";
  3802. case VK_NUMPAD5: LETTER = "5";
  3803. case VK_NUMPAD6: LETTER = "6";
  3804. case VK_NUMPAD7: LETTER = "7";
  3805. case VK_NUMPAD8: LETTER = "8";
  3806. case VK_NUMPAD9: LETTER = "9";
  3807. case VK_MULTIPLY: LETTER = "*";
  3808. case VK_ADD: LETTER = "+";
  3809. //case VK_SEPARATOR: LETTER = "?";
  3810. case VK_SUBTRACT: LETTER = "-";
  3811. case VK_DECIMAL: LETTER = ".";
  3812. case VK_DIVIDE: LETTER = "/";
  3813. }
  3814. }
  3815. else
  3816. {
  3817. switch(key)
  3818. {
  3819. case VK_KEY_A: LETTER = "a";//41
  3820. case VK_KEY_B: LETTER = "b";//42
  3821. case VK_KEY_C: LETTER = "c";//43
  3822. case VK_KEY_D: LETTER = "d";//44
  3823. case VK_KEY_E: LETTER = "e";//45
  3824. case VK_KEY_F: LETTER = "f";//46
  3825. case VK_KEY_G: LETTER = "g";//47
  3826. case VK_KEY_H: LETTER = "h";//48
  3827. case VK_KEY_I: LETTER = "i";//49
  3828. case VK_KEY_J: LETTER = "j";//4A
  3829. case VK_KEY_K: LETTER = "k";//4B
  3830. case VK_KEY_L: LETTER = "l";//4C
  3831. case VK_KEY_M: LETTER = "m";//4D
  3832. case VK_KEY_N: LETTER = "n";//4E
  3833. case VK_KEY_O: LETTER = "o";//4F
  3834. case VK_KEY_P: LETTER = "p";//50
  3835. case VK_KEY_Q: LETTER = "q";//51
  3836. case VK_KEY_R: LETTER = "r";//52
  3837. case VK_KEY_S: LETTER = "s";//53
  3838. case VK_KEY_T: LETTER = "t";//54
  3839. case VK_KEY_U: LETTER = "u";//55
  3840. case VK_KEY_V: LETTER = "v";//56
  3841. case VK_KEY_W: LETTER = "w";//57
  3842. case VK_KEY_X: LETTER = "x";//58
  3843. case VK_KEY_Y: LETTER = "y";//59
  3844. case VK_KEY_Z: LETTER = "z";//5A
  3845. case VK_SPACE: LETTER = "_";
  3846. case VK_ENTER: LETTER = "~n~";
  3847. case VK_KEYB0: LETTER = "0";//30
  3848. case VK_KEYB1: LETTER = "1";//31
  3849. case VK_KEYB2: LETTER = "2";//32
  3850. case VK_KEYB3: LETTER = "3";//33
  3851. case VK_KEYB4: LETTER = "4";//34
  3852. case VK_KEYB5: LETTER = "5";//35
  3853. case VK_KEYB6: LETTER = "6";//36
  3854. case VK_KEYB7: LETTER = "7";//37
  3855. case VK_KEYB8: LETTER = "8";//38
  3856. case VK_KEYB9: LETTER = "9";//39
  3857. case VK_OEM_PLUS: LETTER = "+";
  3858. case VK_OEM_COMMA: LETTER = ",";
  3859. case VK_OEM_MINUS: LETTER = "-";
  3860. case VK_OEM_PERIOD: LETTER = ".";
  3861. case VK_OEM_2: LETTER = "]";
  3862. case VK_OEM_4: LETTER = "'";
  3863. case VK_OEM_5: LETTER = "|";
  3864. case VK_OEM_6: LETTER = "¡";
  3865. case VK_OEM_102: LETTER = "<";
  3866. case VK_NUMPAD0: LETTER = "0";
  3867. case VK_NUMPAD1: LETTER = "1";
  3868. case VK_NUMPAD2: LETTER = "2";
  3869. case VK_NUMPAD3: LETTER = "3";
  3870. case VK_NUMPAD4: LETTER = "4";
  3871. case VK_NUMPAD5: LETTER = "5";
  3872. case VK_NUMPAD6: LETTER = "6";
  3873. case VK_NUMPAD7: LETTER = "7";
  3874. case VK_NUMPAD8: LETTER = "8";
  3875. case VK_NUMPAD9: LETTER = "9";
  3876. case VK_MULTIPLY: LETTER = "*";
  3877. case VK_ADD: LETTER = "+";
  3878. //case VK_SEPARATOR: LETTER = "?";
  3879. case VK_SUBTRACT: LETTER = "-";
  3880. case VK_DECIMAL: LETTER = ".";
  3881. case VK_DIVIDE: LETTER = "/";
  3882.  
  3883.  
  3884. }
  3885. }
  3886. }
  3887. return LETTER;
  3888. }
  3889.  
  3890. stock HexToRGBA(colour, &r, &g, &b, &a) //By Betamaster
  3891. {
  3892. r = (colour >> 24) & 0xFF;
  3893. g = (colour >> 16) & 0xFF;
  3894. b = (colour >> 8) & 0xFF;
  3895. a = colour & 0xFF;
  3896. }
  3897.  
  3898. stock RGBAToHex(r, g, b, a) //By Betamaster
  3899. {
  3900. return (r<<24 | g<<16 | b<<8 | a);
  3901. }
  3902.  
  3903. stock RemoveTextDrawTDE(Index)
  3904. {
  3905. format(ProjectTD[Index][ETextDrawText], 800, "");
  3906. ProjectTD[Index][ETextDrawPosX] = 0.0;
  3907. ProjectTD[Index][ETextDrawPosY] = 0.0;
  3908. ProjectTD[Index][ETextDrawLetterX] = 0.0;
  3909. ProjectTD[Index][ETextDrawLetterY] = 0.0;
  3910. ProjectTD[Index][ETextDrawTextX] = 0.0;
  3911. ProjectTD[Index][ETextDrawTextY] = 0.0;
  3912. ProjectTD[Index][ETextDrawOutline] = 0;
  3913. ProjectTD[Index][ETextDrawShadow] = 0;
  3914. ProjectTD[Index][ETextDrawModelid] = 0;
  3915. ProjectTD[Index][ETextDrawRotX] = 0.0;
  3916. ProjectTD[Index][ETextDrawRotY] = 0.0;
  3917. ProjectTD[Index][ETextDrawRotZ] = 0.0;
  3918. ProjectTD[Index][ETextDrawZoom] = 0.0;
  3919. ProjectTD[Index][ETextDrawType] = 0;
  3920. ProjectTD[Index][ETextDrawSelectable] = 0;
  3921. ProjectTD[Index][ETextDrawColor] = 0;
  3922. ProjectTD[Index][ETextDrawBGColor] = 0;
  3923. ProjectTD[Index][ETextDrawBoxColor] = 0;
  3924. ProjectTD[Index][ETextDrawVehCol1] = 0;
  3925. ProjectTD[Index][ETextDrawVehCol2] = 0;
  3926. TextDrawDestroy(ProjectTD[Index][ETextDrawID]);
  3927. ProjectTD[Index][ItsFromTDE] = -1;
  3928. ProjectTD[Index][ETextDrawID] = Text:INVALID_TEXT_DRAW;
  3929.  
  3930. new NewIndex = GetAvailableIndexBack(EditIndex);
  3931. EditIndex = NewIndex;
  3932. if(EditIndex == -1)
  3933. {
  3934. Loop(1, sizeof(TDE_Menu))
  3935. {
  3936. TextDrawColor(TDE_Menu[c], 0x888888FF);
  3937. TextDrawSetSelectable(TDE_Menu[c], false);
  3938. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[c]);
  3939. }
  3940. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  3941. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  3942. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  3943. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  3944. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  3945. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  3946. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  3947. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  3948. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  3949. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  3950. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  3951. TextDrawColor(TDE_Menu[2], 0xDDDDDDFF);
  3952. TextDrawSetSelectable(TDE_Menu[2], true);
  3953. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[2]);
  3954. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  3955. EditMode = EDITMODE_NONE;
  3956. }
  3957. else
  3958. {
  3959. new string[128];
  3960. format(string, sizeof(string), "{e2b960}TDEditor: {FFFFFF}Ahora estás editando el TextDraw {e2b960}#%d.", EditIndex);
  3961. SendClientMessage(ProjectEditor, -1, string);
  3962. UpdateIcons(EditIndex);
  3963.  
  3964. if(EditMode == EDITMODE_MODELS)
  3965. {
  3966. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  3967. EditMode = EDITMODE_NONE;
  3968. }
  3969. }
  3970. return 1;
  3971. }
  3972.  
  3973. stock RemoveTextDrawTDEOnly(Index)
  3974. {
  3975. format(ProjectTD[Index][ETextDrawText], 800, "");
  3976. ProjectTD[Index][ETextDrawPosX] = 0.0;
  3977. ProjectTD[Index][ETextDrawPosY] = 0.0;
  3978. ProjectTD[Index][ETextDrawLetterX] = 0.0;
  3979. ProjectTD[Index][ETextDrawLetterY] = 0.0;
  3980. ProjectTD[Index][ETextDrawTextX] = 0.0;
  3981. ProjectTD[Index][ETextDrawTextY] = 0.0;
  3982. ProjectTD[Index][ETextDrawOutline] = 0;
  3983. ProjectTD[Index][ETextDrawShadow] = 0;
  3984. ProjectTD[Index][ETextDrawModelid] = 0;
  3985. ProjectTD[Index][ETextDrawRotX] = 0.0;
  3986. ProjectTD[Index][ETextDrawRotY] = 0.0;
  3987. ProjectTD[Index][ETextDrawRotZ] = 0.0;
  3988. ProjectTD[Index][ETextDrawZoom] = 0.0;
  3989. ProjectTD[Index][ETextDrawType] = 0;
  3990. ProjectTD[Index][ETextDrawSelectable] = 0;
  3991. ProjectTD[Index][ETextDrawColor] = 0;
  3992. ProjectTD[Index][ETextDrawBGColor] = 0;
  3993. ProjectTD[Index][ETextDrawBoxColor] = 0;
  3994. ProjectTD[Index][ETextDrawVehCol1] = 0;
  3995. ProjectTD[Index][ETextDrawVehCol2] = 0;
  3996. TextDrawDestroy(ProjectTD[Index][ETextDrawID]);
  3997. ProjectTD[Index][ItsFromTDE] = -1;
  3998. ProjectTD[Index][ETextDrawID] = Text:INVALID_TEXT_DRAW;
  3999. return 1;
  4000. }
  4001.  
  4002. stock GetAvailableIndexBack(start)
  4003. {
  4004. for (new i = start; i != -1; i--)
  4005. {
  4006. if(ProjectTD[i][ItsFromTDE] == 1)
  4007. {
  4008. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4009. {
  4010. return i;
  4011. }
  4012. }
  4013. }
  4014.  
  4015. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4016. {
  4017. if(ProjectTD[i][ItsFromTDE] == 1)
  4018. {
  4019. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4020. {
  4021. return i;
  4022. }
  4023. }
  4024. }
  4025. return INVALID_INDEX_ID;
  4026. }
  4027.  
  4028. stock HexToInt(string[])//DracoBlue
  4029. {
  4030. if (string[0] == 0) return 0;
  4031. new i, cur=1, res = 0;
  4032. for (i=strlen(string);i>0;i--) {
  4033. if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  4034. cur=cur*16;
  4035. }
  4036. return res;
  4037. }
  4038.  
  4039. stock RGB( red, green, blue, alpha )
  4040. {
  4041. return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
  4042. }
  4043.  
  4044. stock ShowManage(playerid)
  4045. {
  4046. new d, c, dialog[310], str[31];
  4047. for (d = PageStart; d < MAX_PROJECT_TEXTDRAWS; d++)
  4048. {
  4049. if(ProjectTD[d][ItsFromTDE] == 1)
  4050. {
  4051. BackManageDialog[c] = 0;
  4052. c ++;
  4053. if(c == 11)
  4054. {
  4055. if(PageStart >= 10)
  4056. {
  4057. format(str, 30, ">>\n");
  4058. strcat(dialog, str);
  4059. }
  4060. else
  4061. {
  4062. format(str, 30, ">>");
  4063. strcat(dialog, str);
  4064. }
  4065. break;
  4066. }
  4067. if(TextDrawGetFont(ProjectTD[d][ETextDrawID]) == 5) format(str, 31, "%s(%i)ModelPreview: %d\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawModelid]);
  4068. else format(str, 31, "%s(%i)%s\n", EditIndex == d ? ("{FFCC00}"):("{CCCCCC}"), d, ProjectTD[d][ETextDrawText]);
  4069.  
  4070. if(strlen(str) >= 30)
  4071. {
  4072. strdel(str, 28, 30);
  4073. strcat(str, "\n");
  4074. }
  4075. strcat(dialog, str);
  4076. }
  4077. }
  4078. if(PageStart >= 10)
  4079. {
  4080. BackManageDialog[c] = 1;
  4081. format(str, 30, "<<");
  4082. strcat(dialog, str);
  4083. }
  4084. ShowPlayerDialog(playerid, DIALOG_MANAGE, DIALOG_STYLE_LIST, "TDEditor - Manage", dialog, ">>", "X");
  4085. IsPSel = false;
  4086. return 1;
  4087. }
  4088.  
  4089. stock DuplicateTextDraw(Index, ToIndex)
  4090. {
  4091. format(ProjectTD[ToIndex][ETextDrawText], 800, "%s", ProjectTD[Index][ETextDrawText]);
  4092. ProjectTD[ToIndex][ETextDrawPosX] = ProjectTD[Index][ETextDrawPosX];
  4093. ProjectTD[ToIndex][ETextDrawPosY] = ProjectTD[Index][ETextDrawPosY];
  4094. ProjectTD[ToIndex][ETextDrawLetterX] = ProjectTD[Index][ETextDrawLetterX];
  4095. ProjectTD[ToIndex][ETextDrawLetterY] = ProjectTD[Index][ETextDrawLetterY];
  4096. ProjectTD[ToIndex][ETextDrawTextX] = ProjectTD[Index][ETextDrawTextX];
  4097. ProjectTD[ToIndex][ETextDrawTextY] = ProjectTD[Index][ETextDrawTextY];
  4098. ProjectTD[ToIndex][ETextDrawOutline] = ProjectTD[Index][ETextDrawOutline];
  4099. ProjectTD[ToIndex][ETextDrawShadow] = ProjectTD[Index][ETextDrawShadow];
  4100. ProjectTD[ToIndex][ETextDrawModelid] = ProjectTD[Index][ETextDrawModelid];
  4101. ProjectTD[ToIndex][ETextDrawRotX] = ProjectTD[Index][ETextDrawRotX];
  4102. ProjectTD[ToIndex][ETextDrawRotY] = ProjectTD[Index][ETextDrawRotY];
  4103. ProjectTD[ToIndex][ETextDrawRotZ] = ProjectTD[Index][ETextDrawRotZ];
  4104. ProjectTD[ToIndex][ETextDrawZoom] = ProjectTD[Index][ETextDrawZoom];
  4105. ProjectTD[ToIndex][ETextDrawType] = ProjectTD[Index][ETextDrawType];
  4106. ProjectTD[ToIndex][ETextDrawSelectable] = ProjectTD[Index][ETextDrawSelectable];
  4107. ProjectTD[ToIndex][ETextDrawColor] = ProjectTD[Index][ETextDrawColor];
  4108. ProjectTD[ToIndex][ETextDrawBGColor] = ProjectTD[Index][ETextDrawBGColor];
  4109. ProjectTD[ToIndex][ETextDrawBoxColor] = ProjectTD[Index][ETextDrawBoxColor];
  4110. ProjectTD[ToIndex][ETextDrawVehCol1] = ProjectTD[Index][ETextDrawVehCol1];
  4111. ProjectTD[ToIndex][ETextDrawVehCol2] = ProjectTD[Index][ETextDrawVehCol2];
  4112.  
  4113. new Float:p[2];
  4114. TextDrawGetFontSize(ProjectTD[Index][ETextDrawID], p[0], p[1]);
  4115. ProjectTD[ToIndex][ETextDrawID] = TextDrawCreate(ProjectTD[ToIndex][ETextDrawPosX], ProjectTD[ToIndex][ETextDrawPosY], ProjectTD[ToIndex][ETextDrawText]);
  4116. TextDrawLetterSize(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawLetterX], ProjectTD[ToIndex][ETextDrawLetterY]);
  4117. TextDrawAlignment(ProjectTD[ToIndex][ETextDrawID], TextDrawGetAlignment(ProjectTD[Index][ETextDrawID]));
  4118. TextDrawColor(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawColor]);
  4119. TextDrawUseBox(ProjectTD[ToIndex][ETextDrawID], TextDrawIsBox(ProjectTD[Index][ETextDrawID]));
  4120. TextDrawTextSize(ProjectTD[ToIndex][ETextDrawID], p[0], p[1]);
  4121. TextDrawBoxColor(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawBoxColor]);
  4122. TextDrawSetShadow(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawShadow]);
  4123. TextDrawSetOutline(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawOutline]);
  4124. TextDrawBackgroundColor(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawBGColor]);
  4125. TextDrawFont(ProjectTD[ToIndex][ETextDrawID], TextDrawGetFont(ProjectTD[Index][ETextDrawID]));
  4126. TextDrawSetProportional(ProjectTD[ToIndex][ETextDrawID], TextDrawIsProportional(ProjectTD[Index][ETextDrawID]));
  4127.  
  4128. if(TextDrawGetFont(ProjectTD[Index][ETextDrawID]) == 5)
  4129. {
  4130. TextDrawSetPreviewModel(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawModelid]);
  4131. TextDrawSetPreviewRot(ProjectTD[ToIndex][ETextDrawID], ProjectTD[ToIndex][ETextDrawRotX], ProjectTD[ToIndex][ETextDrawRotY], ProjectTD[ToIndex][ETextDrawRotZ], ProjectTD[ToIndex][ETextDrawZoom]);
  4132. if(IsVehicle(ProjectTD[ToIndex][ETextDrawModelid])) TextDrawSetPreviewVehCol(ProjectTD[ToIndex][ETextDrawID], ProjectTD[EditIndex][ETextDrawVehCol1], ProjectTD[EditIndex][ETextDrawVehCol2]);
  4133. }
  4134. else
  4135. {
  4136. if(EditMode == EDITMODE_MODELS)
  4137. {
  4138. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  4139. EditMode = EDITMODE_NONE;
  4140. }
  4141. }
  4142. TextDrawShowForPlayer(ProjectEditor, ProjectTD[ToIndex][ETextDrawID]);
  4143. ProjectTD[ToIndex][ItsFromTDE] = ProjectTD[Index][ItsFromTDE];
  4144. return 1;
  4145. }
  4146.  
  4147. stock UpdateIcons(Index)
  4148. {
  4149. switch(TextDrawGetFont(ProjectTD[Index][ETextDrawID]))
  4150. {
  4151. case 0:
  4152. {
  4153. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4154. TextDrawSetSelectable(TDE_Menu[12], true);
  4155. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4156. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4157. TextDrawSetSelectable(TDE_Menu[15], true);
  4158. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4159. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4160. TextDrawSetSelectable(TDE_Menu[32], true);
  4161. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4162. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4163. TextDrawSetSelectable(TDE_Menu[16], true);
  4164. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4165. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4166. TextDrawSetSelectable(TDE_Menu[17], true);
  4167. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4168. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4169. TextDrawSetSelectable(TDE_Menu[18], true);
  4170. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4171. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4172. TextDrawSetSelectable(TDE_Menu[19], true);
  4173. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4174. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4175. TextDrawSetSelectable(TDE_Menu[20], true);
  4176. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4177. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4178. TextDrawSetSelectable(TDE_Menu[34], true);
  4179. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4180. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4181. TextDrawSetSelectable(TDE_Menu[21], true);
  4182. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4183. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4184. TextDrawSetSelectable(TDE_Menu[22], true);
  4185. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4186. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4187. TextDrawSetSelectable(TDE_Menu[23], true);
  4188. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4189. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4190. TextDrawSetSelectable(TDE_Menu[30], true);
  4191. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4192. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4193. TextDrawSetSelectable(TDE_Menu[31], true);
  4194. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4195.  
  4196. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4197. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4198. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4199. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4200. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4201. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4202. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4203. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4204. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[24]);
  4205. }
  4206. case 1:
  4207. {
  4208. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4209. TextDrawSetSelectable(TDE_Menu[12], true);
  4210. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4211. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4212. TextDrawSetSelectable(TDE_Menu[15], true);
  4213. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4214. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4215. TextDrawSetSelectable(TDE_Menu[32], true);
  4216. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4217. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4218. TextDrawSetSelectable(TDE_Menu[16], true);
  4219. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4220. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4221. TextDrawSetSelectable(TDE_Menu[17], true);
  4222. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4223. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4224. TextDrawSetSelectable(TDE_Menu[18], true);
  4225. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4226. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4227. TextDrawSetSelectable(TDE_Menu[19], true);
  4228. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4229. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4230. TextDrawSetSelectable(TDE_Menu[20], true);
  4231. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4232. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4233. TextDrawSetSelectable(TDE_Menu[34], true);
  4234. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4235. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4236. TextDrawSetSelectable(TDE_Menu[21], true);
  4237. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4238. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4239. TextDrawSetSelectable(TDE_Menu[22], true);
  4240. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4241. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4242. TextDrawSetSelectable(TDE_Menu[23], true);
  4243. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4244. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4245. TextDrawSetSelectable(TDE_Menu[30], true);
  4246. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4247. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4248. TextDrawSetSelectable(TDE_Menu[31], true);
  4249. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4250.  
  4251. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4252. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4253. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4254. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4255. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4256. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4257. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4258. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4259. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[25]);
  4260. }
  4261. case 2:
  4262. {
  4263. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4264. TextDrawSetSelectable(TDE_Menu[12], true);
  4265. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4266. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4267. TextDrawSetSelectable(TDE_Menu[15], true);
  4268. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4269. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4270. TextDrawSetSelectable(TDE_Menu[32], true);
  4271. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4272. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4273. TextDrawSetSelectable(TDE_Menu[16], true);
  4274. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4275. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4276. TextDrawSetSelectable(TDE_Menu[17], true);
  4277. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4278. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4279. TextDrawSetSelectable(TDE_Menu[18], true);
  4280. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4281. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4282. TextDrawSetSelectable(TDE_Menu[19], true);
  4283. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4284. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4285. TextDrawSetSelectable(TDE_Menu[20], true);
  4286. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4287. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4288. TextDrawSetSelectable(TDE_Menu[34], true);
  4289. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4290. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4291. TextDrawSetSelectable(TDE_Menu[21], true);
  4292. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4293. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4294. TextDrawSetSelectable(TDE_Menu[22], true);
  4295. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4296. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4297. TextDrawSetSelectable(TDE_Menu[23], true);
  4298. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4299. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4300. TextDrawSetSelectable(TDE_Menu[30], true);
  4301. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4302. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4303. TextDrawSetSelectable(TDE_Menu[31], true);
  4304. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4305.  
  4306. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4307. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4308. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4309. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4310. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4311. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4312. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4313. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4314. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[26]);
  4315. }
  4316. case 3:
  4317. {
  4318. TextDrawColor(TDE_Menu[12], 0xDDDDDDFF);
  4319. TextDrawSetSelectable(TDE_Menu[12], true);
  4320. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4321. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4322. TextDrawSetSelectable(TDE_Menu[15], true);
  4323. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4324. TextDrawColor(TDE_Menu[32], 0xDDDDDDFF);
  4325. TextDrawSetSelectable(TDE_Menu[32], true);
  4326. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4327. TextDrawColor(TDE_Menu[16], 0xDDDDDDFF);
  4328. TextDrawSetSelectable(TDE_Menu[16], true);
  4329. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4330. TextDrawColor(TDE_Menu[17], 0xDDDDDDFF);
  4331. TextDrawSetSelectable(TDE_Menu[17], true);
  4332. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4333. TextDrawColor(TDE_Menu[18], 0xDDDDDDFF);
  4334. TextDrawSetSelectable(TDE_Menu[18], true);
  4335. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4336. TextDrawColor(TDE_Menu[19], 0xDDDDDDFF);
  4337. TextDrawSetSelectable(TDE_Menu[19], true);
  4338. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4339. TextDrawColor(TDE_Menu[20], 0xDDDDDDFF);
  4340. TextDrawSetSelectable(TDE_Menu[20], true);
  4341. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4342. TextDrawColor(TDE_Menu[34], 0xDDDDDDFF);
  4343. TextDrawSetSelectable(TDE_Menu[34], true);
  4344. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4345. TextDrawColor(TDE_Menu[21], 0xDDDDDDFF);
  4346. TextDrawSetSelectable(TDE_Menu[21], true);
  4347. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4348. TextDrawColor(TDE_Menu[22], 0xDDDDDDFF);
  4349. TextDrawSetSelectable(TDE_Menu[22], true);
  4350. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4351. TextDrawColor(TDE_Menu[23], 0xDDDDDDFF);
  4352. TextDrawSetSelectable(TDE_Menu[23], true);
  4353. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4354. TextDrawColor(TDE_Menu[30], 0xDDDDDDFF);
  4355. TextDrawSetSelectable(TDE_Menu[30], true);
  4356. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4357. TextDrawColor(TDE_Menu[31], 0xDDDDDDFF);
  4358. TextDrawSetSelectable(TDE_Menu[31], true);
  4359. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4360.  
  4361. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4362. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4363. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4364. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4365. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4366. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4367. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4368. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4369. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[27]);
  4370. }
  4371. case 4:
  4372. {
  4373. TextDrawColor(TDE_Menu[12], 0x888888FF);
  4374. TextDrawSetSelectable(TDE_Menu[12], false);
  4375. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4376. TextDrawColor(TDE_Menu[15], 0x888888FF);
  4377. TextDrawSetSelectable(TDE_Menu[15], false);
  4378. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4379. TextDrawColor(TDE_Menu[32], 0x888888FF);
  4380. TextDrawSetSelectable(TDE_Menu[32], false);
  4381. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4382. TextDrawColor(TDE_Menu[16], 0x888888FF);
  4383. TextDrawSetSelectable(TDE_Menu[16], false);
  4384. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4385. TextDrawColor(TDE_Menu[17], 0x888888FF);
  4386. TextDrawSetSelectable(TDE_Menu[17], false);
  4387. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4388. TextDrawColor(TDE_Menu[18], 0x888888FF);
  4389. TextDrawSetSelectable(TDE_Menu[18], false);
  4390. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4391. TextDrawColor(TDE_Menu[19], 0x888888FF);
  4392. TextDrawSetSelectable(TDE_Menu[19], false);
  4393. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4394. TextDrawColor(TDE_Menu[20], 0x888888FF);
  4395. TextDrawSetSelectable(TDE_Menu[20], false);
  4396. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4397. TextDrawColor(TDE_Menu[34], 0x888888FF);
  4398. TextDrawSetSelectable(TDE_Menu[34], false);
  4399. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4400. TextDrawColor(TDE_Menu[21], 0x888888FF);
  4401. TextDrawSetSelectable(TDE_Menu[21], false);
  4402. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4403. TextDrawColor(TDE_Menu[22], 0x888888FF);
  4404. TextDrawSetSelectable(TDE_Menu[22], false);
  4405. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4406. TextDrawColor(TDE_Menu[23], 0x888888FF);
  4407. TextDrawSetSelectable(TDE_Menu[23], false);
  4408. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4409. TextDrawColor(TDE_Menu[30], 0x888888FF);
  4410. TextDrawSetSelectable(TDE_Menu[30], false);
  4411. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4412. TextDrawColor(TDE_Menu[31], 0x888888FF);
  4413. TextDrawSetSelectable(TDE_Menu[31], false);
  4414. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4415.  
  4416. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4417. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4418. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4419. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4420. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4421. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4422. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[35]);
  4423. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[11]);
  4424. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4425.  
  4426. }
  4427. case 5:
  4428. {
  4429. TextDrawColor(TDE_Menu[12], 0x888888FF);
  4430. TextDrawSetSelectable(TDE_Menu[12], false);
  4431. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[12]);
  4432. TextDrawColor(TDE_Menu[15], 0xDDDDDDFF);
  4433. TextDrawSetSelectable(TDE_Menu[15], true);
  4434. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[15]);
  4435. TextDrawColor(TDE_Menu[32], 0x888888FF);
  4436. TextDrawSetSelectable(TDE_Menu[32], false);
  4437. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[32]);
  4438. TextDrawColor(TDE_Menu[16], 0x888888FF);
  4439. TextDrawSetSelectable(TDE_Menu[16], false);
  4440. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[16]);
  4441. TextDrawColor(TDE_Menu[17], 0x888888FF);
  4442. TextDrawSetSelectable(TDE_Menu[17], false);
  4443. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[17]);
  4444. TextDrawColor(TDE_Menu[18], 0x888888FF);
  4445. TextDrawSetSelectable(TDE_Menu[18], false);
  4446. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[18]);
  4447. TextDrawColor(TDE_Menu[19], 0x888888FF);
  4448. TextDrawSetSelectable(TDE_Menu[19], false);
  4449. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4450. TextDrawColor(TDE_Menu[20], 0x888888FF);
  4451. TextDrawSetSelectable(TDE_Menu[20], false);
  4452. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4453. TextDrawColor(TDE_Menu[34], 0x888888FF);
  4454. TextDrawSetSelectable(TDE_Menu[34], false);
  4455. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[34]);
  4456. TextDrawColor(TDE_Menu[21], 0x888888FF);
  4457. TextDrawSetSelectable(TDE_Menu[21], false);
  4458. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4459. TextDrawColor(TDE_Menu[22], 0x888888FF);
  4460. TextDrawSetSelectable(TDE_Menu[22], false);
  4461. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4462. TextDrawColor(TDE_Menu[23], 0x888888FF);
  4463. TextDrawSetSelectable(TDE_Menu[23], false);
  4464. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4465. TextDrawColor(TDE_Menu[30], 0x888888FF);
  4466. TextDrawSetSelectable(TDE_Menu[30], false);
  4467. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4468. TextDrawColor(TDE_Menu[31], 0x888888FF);
  4469. TextDrawSetSelectable(TDE_Menu[31], false);
  4470. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4471.  
  4472. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[24]);
  4473. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[25]);
  4474. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[26]);
  4475. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[27]);
  4476. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[12]);
  4477. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[13]);
  4478. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[13]);
  4479. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[11]);
  4480. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[35]);
  4481. }
  4482. }
  4483.  
  4484. if(TextDrawIsBox(ProjectTD[Index][ETextDrawID]))
  4485. {
  4486. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[19]);
  4487. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  4488. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[34]);
  4489. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[20]);
  4490. }
  4491. else
  4492. {
  4493. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[19]);
  4494. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[20]);
  4495. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[34]);
  4496. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[19]);
  4497. }
  4498.  
  4499.  
  4500.  
  4501. switch(TextDrawGetAlignment(ProjectTD[Index][ETextDrawID]))
  4502. {
  4503. case 1:
  4504. {
  4505. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  4506. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4507. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4508. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[21]);
  4509. }
  4510. case 2:
  4511. {
  4512. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  4513. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4514. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4515. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[22]);
  4516. }
  4517. case 3:
  4518. {
  4519. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[21]);
  4520. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[22]);
  4521. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[23]);
  4522. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[23]);
  4523. }
  4524. }
  4525.  
  4526. switch(ProjectTD[Index][ETextDrawType])
  4527. {
  4528. case 0:
  4529. {
  4530. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[5]);
  4531. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  4532. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[5]);
  4533. }
  4534. case 1:
  4535. {
  4536. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[5]);
  4537. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[33]);
  4538. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[33]);
  4539. }
  4540. }
  4541.  
  4542. switch(ProjectTD[Index][ETextDrawSelectable])
  4543. {
  4544. case 0:
  4545. {
  4546. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[28]);
  4547. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  4548. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[28]);
  4549. }
  4550. case 1:
  4551. {
  4552. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[28]);
  4553. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[29]);
  4554. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[29]);
  4555. }
  4556. }
  4557.  
  4558. switch(TextDrawIsProportional(ProjectTD[Index][ETextDrawID]))
  4559. {
  4560. case 0:
  4561. {
  4562. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[30]);
  4563. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[31]);
  4564. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[30]);
  4565. }
  4566. case 1:
  4567. {
  4568. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[30]);
  4569. TextDrawHideForPlayer(ProjectEditor, TDE_Menu[31]);
  4570. TextDrawShowForPlayer(ProjectEditor, TDE_Menu[31]);
  4571. }
  4572. }
  4573. return 1;
  4574. }
  4575.  
  4576. stock IsVehicle(modelid)
  4577. {
  4578. if(modelid >= 400 && modelid <= 611) return true;
  4579. return false;
  4580. }
  4581.  
  4582.  
  4583. stock SaveProject()
  4584. {
  4585. if(!strlen(ProjectFile)) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}Primero tienes que cargarlo.");
  4586. if(fexist(ProjectFile)) fremove(ProjectFile);
  4587. Handler = fopen(ProjectFile, io_append);
  4588. if(!Handler) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}No se puede guarda el archivo.");
  4589.  
  4590. new alignment, usebox, font, proportional;
  4591. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4592. {
  4593. if(ProjectTD[i][ItsFromTDE] == 1)
  4594. {
  4595.  
  4596. alignment = TextDrawGetAlignment(ProjectTD[i][ETextDrawID]);
  4597. usebox = TextDrawIsBox(ProjectTD[i][ETextDrawID]);
  4598. font = TextDrawGetFont(ProjectTD[i][ETextDrawID]);
  4599. proportional = TextDrawIsProportional(ProjectTD[i][ETextDrawID]);
  4600. format(Pro_Str, sizeof(Pro_Str),
  4601. "%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",
  4602. ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY],
  4603. ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY],
  4604. ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY],
  4605. alignment, ProjectTD[i][ETextDrawColor],
  4606. usebox, ProjectTD[i][ETextDrawBoxColor],
  4607. ProjectTD[i][ETextDrawShadow], ProjectTD[i][ETextDrawOutline],
  4608. ProjectTD[i][ETextDrawBGColor], font,
  4609. proportional, ProjectTD[i][ETextDrawSelectable],
  4610. ProjectTD[i][ETextDrawType], ProjectTD[i][ETextDrawText],
  4611. ProjectTD[i][ETextDrawModelid],
  4612. ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom],
  4613. ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]);
  4614. fwrite(Handler, Pro_Str);
  4615. }
  4616. }
  4617. fclose(Handler);
  4618. return true;
  4619. }
  4620.  
  4621. stock LoadProject()
  4622. {
  4623. if(!strlen(ProjectFile)) return SendClientMessage(ProjectEditor, -1, "{e2b960}TDEditor: {FFFFFF}No se pudo cargar este proyecto.");
  4624. Handler = fopen(ProjectFile, io_read);
  4625. if(!Handler) return false;
  4626. new i, alignment, usebox, font, proportional;
  4627. while(fread(Handler, Pro_Str))
  4628. {
  4629. StripNewLine(Pro_Str);
  4630. if(!sscanf(Pro_Str, "p<|>ffffffiiiiiiiiiiis[128]dffffdd",
  4631. ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY],
  4632. ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY],
  4633. ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY],
  4634. alignment, ProjectTD[i][ETextDrawColor],
  4635. usebox, ProjectTD[i][ETextDrawBoxColor],
  4636. ProjectTD[i][ETextDrawShadow], ProjectTD[i][ETextDrawOutline],
  4637. ProjectTD[i][ETextDrawBGColor], font,
  4638. proportional, ProjectTD[i][ETextDrawSelectable],
  4639. ProjectTD[i][ETextDrawType], ProjectTD[i][ETextDrawText],
  4640. ProjectTD[i][ETextDrawModelid],
  4641. ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom],
  4642. ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]))
  4643. {
  4644. EditIndex = i;
  4645.  
  4646. ProjectTD[i][ETextDrawID] = TextDrawCreate(ProjectTD[i][ETextDrawPosX], ProjectTD[i][ETextDrawPosY], ProjectTD[i][ETextDrawText]);
  4647. TextDrawLetterSize(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY]);
  4648. TextDrawAlignment(ProjectTD[i][ETextDrawID], alignment);
  4649. TextDrawColor(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawColor]);
  4650. TextDrawUseBox(ProjectTD[i][ETextDrawID], usebox);
  4651. TextDrawSetShadow(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawShadow]);
  4652. TextDrawSetOutline(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawOutline]);
  4653. TextDrawBackgroundColor(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawBGColor]);
  4654. TextDrawFont(ProjectTD[i][ETextDrawID], font);
  4655. TextDrawSetProportional(ProjectTD[i][ETextDrawID], proportional);
  4656. TextDrawTextSize(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY]);
  4657. TextDrawBoxColor(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawBoxColor]);
  4658. if(font == 5)
  4659. {
  4660. TextDrawSetPreviewModel(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawModelid]);
  4661. TextDrawSetPreviewRot(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawRotX], ProjectTD[i][ETextDrawRotY], ProjectTD[i][ETextDrawRotZ], ProjectTD[i][ETextDrawZoom]);
  4662. if(IsVehicle(ProjectTD[i][ETextDrawModelid])) TextDrawSetPreviewVehCol(ProjectTD[i][ETextDrawID], ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]);
  4663. }
  4664. ProjectTD[i][ItsFromTDE] = 1;
  4665. TextDrawShowForPlayer(ProjectEditor, ProjectTD[i][ETextDrawID]);
  4666. i++;
  4667. }
  4668. }
  4669.  
  4670. fclose(Handler);
  4671. PageStart = 0;
  4672. // UpdateIcons(EditIndex);
  4673. return true;
  4674. }
  4675.  
  4676. stock StripNewLine(string[]) //DracoBlue (bugfix idea by Y_Less)
  4677. {
  4678. new len = strlen(string);
  4679. if (string[0]==0) return ;
  4680. if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
  4681. string[len - 1] = 0;
  4682. if (string[0]==0) return ;
  4683. if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
  4684. }
  4685. }
  4686.  
  4687. stock CheckProject(name[])
  4688. {
  4689. if(!fexist("tdelist.txt")) return false;
  4690.  
  4691. Handler = fopen("tdelist.txt", io_read);
  4692. if(!Handler) return -1;
  4693.  
  4694. while(fread(Handler, Pro_Str))
  4695. {
  4696. if(!strcmp(Pro_Str, name, true, strlen(name)))
  4697. {
  4698. fclose(Handler);
  4699. return true;
  4700. }
  4701. }
  4702. fclose(Handler);
  4703. return false;
  4704. }
  4705.  
  4706. stock AddProject(name[])
  4707. {
  4708. Handler = fopen("tdelist.txt", io_append);
  4709. if(!Handler) return false;
  4710.  
  4711. fwrite(Handler, name);
  4712. fwrite(Handler, "\r\n");
  4713. fclose(Handler);
  4714. return true;
  4715. }
  4716.  
  4717. stock CloseProject()
  4718. {
  4719. if(!strlen(ProjectFile)) return false;
  4720.  
  4721. SaveProject();
  4722. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++) RemoveTextDrawTDEOnly(i);
  4723.  
  4724. EditIndex = INVALID_INDEX_ID;
  4725. TextDrawSetString(TD_Status, "EditMode: EDITMODE_NONE");
  4726. EditMode = EDITMODE_NONE;
  4727. ColorMode = COLORMODE_NONE;
  4728. EmptyString(ProjectFile);
  4729. ShowEditorEx();
  4730. IsPSel = false;
  4731. KillTimer(EditorUpdateTimer);
  4732. EmptyString(ProjectFile);
  4733. return true;
  4734. }
  4735.  
  4736. stock IsValidProjectName(name[])
  4737. {
  4738. Loop(0, strlen(name))
  4739. {
  4740. switch(name[c])
  4741. {
  4742. case 'A' .. 'Z', 'a' .. 'z', '0' .. '9', '-', '_', '(', ')': continue;
  4743. default: return false;
  4744. }
  4745. }
  4746. return true;
  4747. }
  4748.  
  4749. stock ExportProject()
  4750. {
  4751. if(!strlen(ProjectFile)) return false;
  4752.  
  4753. new ExportFile[64];
  4754. format(ExportFile, sizeof(ExportFile), "%s", ProjectFile);
  4755. strins(ExportFile, "TDE_", 0);
  4756. new len = strlen(ExportFile);
  4757. strdel(ExportFile, len - 3, len);
  4758. strcat(ExportFile, "txt");
  4759.  
  4760. if(fexist(ExportFile)) fremove(ExportFile);
  4761.  
  4762. new File:ExportIO = fopen(ExportFile, io_append);
  4763. if(!ExportIO) return false;
  4764.  
  4765. new Index, global, player;
  4766. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4767. {
  4768. if(ProjectTD[i][ItsFromTDE] == 1)
  4769. {
  4770. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4771. {
  4772. if(ProjectTD[i][ETextDrawType] == 0)
  4773. {
  4774. Index++;
  4775. global++;
  4776. }
  4777. }
  4778. }
  4779. }
  4780.  
  4781. if(Index != 0)
  4782. {
  4783. fwrite(ExportIO, "//Global TextDraws: \r\n\r\n\r\n");
  4784. format(line, sizeof(line), "new Text:TDEditor_TD[%i];\r\n", Index); fwrite(ExportIO, line);
  4785. Index = 0;
  4786. new alignment, font, proportion;
  4787. fwrite(ExportIO, "\r\n");
  4788. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4789. {
  4790. if(ProjectTD[i][ItsFromTDE] == 1)
  4791. {
  4792. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4793. {
  4794. if(ProjectTD[i][ETextDrawType] == 0)
  4795. {
  4796. alignment = TextDrawGetAlignment(ProjectTD[i][ETextDrawID]);
  4797. font = TextDrawGetFont(ProjectTD[i][ETextDrawID]);
  4798. proportion = TextDrawIsProportional(ProjectTD[i][ETextDrawID]);
  4799. 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);
  4800. format(line, sizeof(line), "TextDrawLetterSize(TDEditor_TD[%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY]); fwrite(ExportIO, line);
  4801. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]) || font == 4 || font == 5)
  4802. {
  4803. if(alignment == 2)
  4804. {
  4805. format(line, sizeof(line), "TextDrawTextSize(TDEditor_TD[%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextY], ProjectTD[i][ETextDrawTextX]);
  4806. fwrite(ExportIO, line);
  4807. }
  4808. else
  4809. {
  4810. format(line, sizeof(line), "TextDrawTextSize(TDEditor_TD[%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY]);
  4811. fwrite(ExportIO, line);
  4812. }
  4813. }
  4814. format(line, sizeof(line), "TextDrawAlignment(TDEditor_TD[%i], %d);\r\n", Index, alignment); fwrite(ExportIO, line);
  4815. format(line, sizeof(line), "TextDrawColor(TDEditor_TD[%i], %i);\r\n", Index, ProjectTD[i][ETextDrawColor]); fwrite(ExportIO, line);
  4816. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]))
  4817. {
  4818. format(line, sizeof(line), "TextDrawUseBox(TDEditor_TD[%i], 1);\r\n", Index); fwrite(ExportIO, line);
  4819. format(line, sizeof(line), "TextDrawBoxColor(TDEditor_TD[%i], %i);\r\n", Index, ProjectTD[i][ETextDrawBoxColor]); fwrite(ExportIO, line);
  4820. }
  4821. format(line, sizeof(line), "TextDrawSetShadow(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4822. format(line, sizeof(line), "TextDrawSetOutline(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawOutline]); fwrite(ExportIO, line);
  4823. format(line, sizeof(line), "TextDrawBackgroundColor(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawBGColor]); fwrite(ExportIO, line);
  4824. format(line, sizeof(line), "TextDrawFont(TDEditor_TD[%i], %d);\r\n", Index, font); fwrite(ExportIO, line);
  4825. format(line, sizeof(line), "TextDrawSetProportional(TDEditor_TD[%i], %d);\r\n", Index, proportion); fwrite(ExportIO, line);
  4826. format(line, sizeof(line), "TextDrawSetShadow(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4827.  
  4828. if(ProjectTD[i][ETextDrawSelectable])
  4829. {
  4830. format(line, sizeof(line), "TextDrawSetSelectable(TDEditor_TD[%i], true);\r\n", Index); fwrite(ExportIO, line);
  4831. }
  4832.  
  4833. if(font == 5)
  4834. {
  4835. format(line, sizeof(line), "TextDrawSetPreviewModel(TDEditor_TD[%i], %d);\r\n", Index, ProjectTD[i][ETextDrawModelid]); fwrite(ExportIO, line);
  4836. 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);
  4837. if(IsVehicle(ProjectTD[i][ETextDrawModelid]))
  4838. {
  4839. format(line, sizeof(line), "TextDrawSetPreviewVehCol(TDEditor_TD[%i], %d, %d);\r\n", Index, ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]); fwrite(ExportIO, line);
  4840. }
  4841. }
  4842. format(line, sizeof(line), "\r\n"); fwrite(ExportIO, line);
  4843. Index ++;
  4844. }
  4845. }
  4846. }
  4847. }
  4848. }
  4849.  
  4850. Index = 0;
  4851.  
  4852. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4853. {
  4854. if(ProjectTD[i][ItsFromTDE] == 1)
  4855. {
  4856. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4857. {
  4858. if(ProjectTD[i][ETextDrawType] == 1)
  4859. {
  4860. Index++;
  4861. player++;
  4862. }
  4863. }
  4864. }
  4865. }
  4866.  
  4867. if(Index != 0)
  4868. {
  4869. if(global > 0) fwrite(ExportIO, "\r\n\r\n");
  4870. fwrite(ExportIO, "//Player TextDraws: \r\n\r\n\r\n");
  4871. format(line, sizeof(line), "new Text:TDEditor_PTD[MAX_PLAYERS][%i];\r\n", Index); fwrite(ExportIO, line);
  4872. Index = 0;
  4873. new alignment, font, proportion;
  4874. fwrite(ExportIO, "\r\n");
  4875. for (new i = 0; i < MAX_PROJECT_TEXTDRAWS; i++)
  4876. {
  4877. if(ProjectTD[i][ItsFromTDE] == 1)
  4878. {
  4879. if(ProjectTD[i][ETextDrawID] != Text:INVALID_TEXT_DRAW)
  4880. {
  4881. if(ProjectTD[i][ETextDrawType] == 1)
  4882. {
  4883. alignment = TextDrawGetAlignment(ProjectTD[i][ETextDrawID]);
  4884. font = TextDrawGetFont(ProjectTD[i][ETextDrawID]);
  4885. proportion = TextDrawIsProportional(ProjectTD[i][ETextDrawID]);
  4886. 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);
  4887. format(line, sizeof(line), "PlayerTextDrawLetterSize(playerid, TDEditor_PTD[playerid][%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawLetterX], ProjectTD[i][ETextDrawLetterY]); fwrite(ExportIO, line);
  4888. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]) || font == 4 || font == 5)
  4889. {
  4890. if(alignment == 2)
  4891. {
  4892. format(line, sizeof(line), "PlayerTextDrawTextSize(playerid, TDEditor_PTD[playerid][%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextY], ProjectTD[i][ETextDrawTextX]);
  4893. fwrite(ExportIO, line);
  4894. }
  4895. else
  4896. {
  4897. format(line, sizeof(line), "PlayerTextDrawTextSize(playerid, TDEditor_PTD[playerid][%i], %f, %f);\r\n", Index, ProjectTD[i][ETextDrawTextX], ProjectTD[i][ETextDrawTextY]);
  4898. fwrite(ExportIO, line);
  4899. }
  4900. }
  4901. format(line, sizeof(line), "PlayerTextDrawAlignment(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, alignment); fwrite(ExportIO, line);
  4902. format(line, sizeof(line), "PlayerTextDrawColor(playerid, TDEditor_PTD[playerid][%i], %i);\r\n", Index, ProjectTD[i][ETextDrawColor]); fwrite(ExportIO, line);
  4903. if(TextDrawIsBox(ProjectTD[i][ETextDrawID]))
  4904. {
  4905. format(line, sizeof(line), "PlayerTextDrawUseBox(playerid, TDEditor_PTD[playerid][%i], 1);\r\n", Index); fwrite(ExportIO, line);
  4906. format(line, sizeof(line), "PlayerTextDrawBoxColor(playerid, TDEditor_PTD[playerid][%i], %i);\r\n", Index, ProjectTD[i][ETextDrawBoxColor]); fwrite(ExportIO, line);
  4907. }
  4908. format(line, sizeof(line), "PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4909. format(line, sizeof(line), "PlayerTextDrawSetOutline(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawOutline]); fwrite(ExportIO, line);
  4910. format(line, sizeof(line), "PlayerTextDrawBackgroundColor(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawBGColor]); fwrite(ExportIO, line);
  4911. format(line, sizeof(line), "PlayerTextDrawFont(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, font); fwrite(ExportIO, line);
  4912. format(line, sizeof(line), "PlayerTextDrawSetProportional(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, proportion); fwrite(ExportIO, line);
  4913. format(line, sizeof(line), "PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawShadow]); fwrite(ExportIO, line);
  4914.  
  4915. if(ProjectTD[i][ETextDrawSelectable])
  4916. {
  4917. format(line, sizeof(line), "PlayerTextDrawSetSelectable(playerid, TDEditor_PTD[playerid][%i], true);\r\n", Index); fwrite(ExportIO, line);
  4918. }
  4919.  
  4920. if(font == 5)
  4921. {
  4922. format(line, sizeof(line), "PlayerTextDrawSetPreviewModel(playerid, TDEditor_PTD[playerid][%i], %d);\r\n", Index, ProjectTD[i][ETextDrawModelid]); fwrite(ExportIO, line);
  4923. 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);
  4924. if(IsVehicle(ProjectTD[i][ETextDrawModelid]))
  4925. {
  4926. format(line, sizeof(line), "PlayerTextDrawSetPreviewVehCol(playerid, TDEditor_PTD[playerid][%i], %d, %d);\r\n", Index, ProjectTD[i][ETextDrawVehCol1], ProjectTD[i][ETextDrawVehCol2]); fwrite(ExportIO, line);
  4927. }
  4928. }
  4929. format(line, sizeof(line), "\r\n"); fwrite(ExportIO, line);
  4930. Index ++;
  4931. }
  4932. }
  4933. }
  4934. }
  4935. }
  4936.  
  4937. new Hour, Minute, Second;
  4938. gettime(Hour, Minute, Second);
  4939. new Year, Month, Day;
  4940. getdate(Year, Month, Day);
  4941.  
  4942. 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);
  4943. format(line, sizeof(line), "\r\nTDEditor V1.13 by adri1"); fwrite(ExportIO, line);
  4944. fclose(ExportIO);
  4945.  
  4946. new str[128];
  4947. format(str, 128, "{e2b960}TDEditor: {FFFFFF}Proyecto exportado (%s, %d global textdraws, %d player textdraws).", ExportFile, global, player);
  4948. SendClientMessage(ProjectEditor, -1, str);
  4949. return 1;
  4950. }
  4951.  
  4952. /*
  4953.  
  4954. ___ __ __
  4955. | | \|_ _|.|_ _ _
  4956. | |__/|__(_|||_(_)|
  4957.  
  4958. TDEditor 1.13 by adri1
  4959.  
  4960. */
Advertisement
Add Comment
Please, Sign In to add comment