Guest User

Zamaroht's Textdraw Editor

a guest
Aug 25th, 2014
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 149.17 KB | None | 0 0
  1. #include <a_samp>
  2. #include <Dini>
  3.  
  4. // =============================================================================
  5. // Declarações Internas .
  6. // =============================================================================
  7.  
  8. #define MAX_TEXTDRAWS 90 // Máximo textdraws mostrados na tela do cliente é de 92.
  9. #define MSG_COLOR 0xFAF0CEFF // Cor que irá ser mostrado nas mensagens.
  10. #define PREVIEW_CHARS 35 // Quantidade de caracteres que aparecem na visualização textdraws.
  11.  
  12.  
  13. // Usado com P_Aux
  14. #define DELETING 0
  15. #define LOADING 1
  16.  
  17. // Usado com P_KeyEdition
  18. #define EDIT_NONE 0
  19. #define EDIT_POSITION 1
  20. #define EDIT_SIZE 2
  21. #define EDIT_BOX 3
  22.  
  23. // Usado com P_ColorEdition
  24. #define COLOR_TEXT 0
  25. #define COLOR_OUTLINE 1
  26. #define COLOR_BOX 2
  27.  
  28. enum enum_tData // Textdraw dados
  29. {
  30. bool:T_Created, // Se o ID TextDraw é criado ou não.
  31. Text:T_Handler, // Onde o id TD é poupado.
  32. T_Text[1536], // A seqüência de TextDraw.
  33. Float:T_X,
  34. Float:T_Y,
  35. T_Alignment,
  36. T_BackColor,
  37. T_BoxColor,
  38. T_Color,
  39. T_Font,
  40. Float:T_XSize,
  41. Float:T_YSize,
  42. T_Outline,
  43. T_Proportional,
  44. T_Shadow,
  45. Float:T_TextSizeX,
  46. Float:T_TextSizeY,
  47. T_UseBox,
  48. T_Selectable,
  49. T_PreviewModel,
  50. Float:PMRotX,
  51. Float:PMRotY,
  52. Float:PMRotZ,
  53. Float:PMZoom
  54. };
  55.  
  56. enum enum_pData // Dados do jogador.
  57. {
  58. bool:P_Editing, // Se o jogador está editando ou não no momento (permitir / menu).
  59. P_DialogPage, // Página da caixa de diálogo de seleção TextDraw estão.
  60. P_CurrentTextdraw, // TextDraw está sendo editado no momento.
  61. P_CurrentMenu, // Apenas utilizado no início, para saber se o jogador está a carregar ou excluir.
  62. P_KeyEdition, // Usado para saber quais as edições estão sendo realizadas com teclado. Verifique define.
  63. P_Aux, // Variável auxiliar, usado como uma variável temporária em vários casos.
  64. P_ColorEdition, // Usado para saber o que o jogador está a mudar a cor de. Verifique definido.
  65. P_Color[4], // Detém RGBA ao usar combinação de cores.
  66. P_ExpCommand[128], // Mantém temporariamente o comando que será usado para uma exportação de script de comando.
  67. P_Aux2 // Apenas usado em casos especiais de exportação.
  68. };
  69.  
  70. new tData[MAX_TEXTDRAWS][enum_tData],
  71. pData[MAX_PLAYERS][enum_pData];
  72.  
  73. new CurrentProject[128]; // String contendo a localização do arquivo de projeto aberto atual.
  74.  
  75. // =============================================================================
  76. // Callbacks.
  77. // =============================================================================
  78.  
  79. public OnFilterScriptInit()
  80. {
  81. print("\n--------------------------------------");
  82. print(" Text Draw Editor 1.0RC2 (v3.1) by Zamaroht for SA-MP 0.3 Loaded.");
  83. print("--------------------------------------\n");
  84. for(new i; i < MAX_PLAYERS; i ++) if(IsPlayerConnected(i)) ResetPlayerVars(i);
  85. for(new i; i < MAX_TEXTDRAWS; i ++)
  86. {
  87. tData[i][T_Handler] = TextDrawCreate(0.0, 0.0, " ");
  88. tData[i][T_PreviewModel] = -1;
  89. tData[i][PMZoom] = 1.0;
  90. tData[i][PMRotX] = -16.0;
  91. tData[i][PMRotY] = 0.0;
  92. tData[i][PMRotZ] = -55.0;
  93. }
  94. return 1;
  95. }
  96.  
  97. public OnFilterScriptExit()
  98. {
  99. for(new i; i < MAX_TEXTDRAWS; i ++)
  100. {
  101. TextDrawHideForAll(tData[i][T_Handler]);
  102. TextDrawDestroy(tData[i][T_Handler]);
  103. }
  104. return 1;
  105. }
  106.  
  107. public OnPlayerConnect(playerid)
  108. {
  109. for(new i; i < MAX_TEXTDRAWS; i ++)
  110. {
  111. if(tData[i][T_Created])
  112. TextDrawShowForPlayer(playerid, tData[i][T_Handler]);
  113. }
  114. }
  115.  
  116. public OnPlayerSpawn(playerid)
  117. {
  118. SendClientMessage(playerid, MSG_COLOR, "Use /texto para mostrar o menu de Edição.");
  119. return 1;
  120. }
  121.  
  122. public OnPlayerDisconnect(playerid, reason)
  123. {
  124. ResetPlayerVars(playerid);
  125. return 1;
  126. }
  127.  
  128. public OnPlayerCommandText(playerid, cmdtext[])
  129. {
  130. if(!strcmp("/texto", cmdtext))
  131. {
  132. if(pData[playerid][P_Editing]) return SendClientMessage(playerid, MSG_COLOR, "[ERROR] Termine a edição atual antes de usar /texto !");
  133. else if(!strlen(CurrentProject) || !strcmp(CurrentProject, " "))
  134. {
  135. if(IsPlayerMinID(playerid))
  136. {
  137. ShowTextDrawDialog(playerid, 0);
  138. pData[playerid][P_Editing] = true;
  139. }
  140. else
  141. SendClientMessage(playerid, MSG_COLOR, "Apenas o jogador de menor ID pode gerenciar projetos. Peça-lhe para abrir um.");
  142. return 1;
  143. }
  144. else
  145. {
  146. ShowTextDrawDialog(playerid, 4, 0);
  147. pData[playerid][P_Editing] = true;
  148. return 1;
  149. }
  150. }
  151. return 0;
  152. }
  153.  
  154. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  155. {
  156. if(response == 1) PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0); // Som de Confirmação
  157. else PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0); // Som de Cancelamento
  158.  
  159. switch(dialogid)
  160. {
  161. case 1574: // Primeiro diálogo.
  162. {
  163. if(response) // Se ele pressionou aceitar.
  164. {
  165. strmid(CurrentProject, "", 0, 1, 128);
  166.  
  167. if(listitem == 0) // Ele pressionou novo projeto.
  168. ShowTextDrawDialog(playerid, 1);
  169. else if(listitem == 1) // Ele pressionou projeto de carga.
  170. ShowTextDrawDialog(playerid, 2, 1);
  171. else if(listitem == 2) // Ele pressionou projeto de exclusão.
  172. ShowTextDrawDialog(playerid, 2, 2);
  173. }
  174. else pData[playerid][P_Editing] = false;
  175. }
  176.  
  177. case 1575: // Novo projeto
  178. {
  179. if(response)
  180. {
  181. if(strlen(inputtext) > 120) ShowTextDrawDialog(playerid, 1, 1); // Muito tempo.
  182.  
  183. else if(
  184. strfind(inputtext, "/") != -1 || strfind(inputtext, "\\") != -1 ||
  185. strfind(inputtext, ":") != -1 || strfind(inputtext, "*") != -1 ||
  186. strfind(inputtext, "?") != -1 || strfind(inputtext, "\"") != -1 ||
  187. strfind(inputtext, "<") != -1 || strfind(inputtext, ">") != -1 ||
  188. strfind(inputtext, "|") != -1 || !strlen(inputtext) ||
  189. inputtext[0] == ' ' )
  190. ShowTextDrawDialog(playerid, 1, 3); // Caracteres ilegais.
  191.  
  192. else // Está tudo bem, criar o novo arquivo.
  193. {
  194. new filename[128];
  195. format(filename, sizeof(filename), "%s.tde", inputtext);
  196. if(fexist(filename)) ShowTextDrawDialog(playerid, 1, 2); // Já existe.
  197. else
  198. {
  199. CreateNewProject(filename);
  200. strmid(CurrentProject, filename, 0, strlen(inputtext), 128);
  201.  
  202. new tmpstr[128];
  203. format(tmpstr, sizeof(tmpstr), "Agora você está trabalhando no projeto '%s'.", filename);
  204. SendClientMessage(playerid, MSG_COLOR, tmpstr);
  205.  
  206. ShowTextDrawDialog(playerid, 4); // Mostrar o menu de edição principal.
  207. }
  208. }
  209. }
  210. else
  211. ShowTextDrawDialog(playerid, 0);
  212. }
  213.  
  214. case 1576: // Carregar/Deletar Projeto
  215. {
  216. if(response)
  217. {
  218. if(listitem == 0) // nome personalizado
  219. {
  220. if(pData[playerid][P_CurrentMenu] == LOADING) ShowTextDrawDialog(playerid, 3);
  221. else if(pData[playerid][P_CurrentMenu] == DELETING) ShowTextDrawDialog(playerid, 0);
  222. }
  223. else
  224. {
  225. if(pData[playerid][P_CurrentMenu] == DELETING)
  226. {
  227. pData[playerid][P_Aux] = listitem - 1;
  228. ShowTextDrawDialog(playerid, 6);
  229. }
  230. else if(pData[playerid][P_CurrentMenu] == LOADING)
  231. {
  232. new filename[135];
  233. format(filename, sizeof(filename), "%s", GetFileNameFromLst("tdlist.lst", listitem - 1));
  234. LoadProject(playerid, filename);
  235. }
  236. }
  237. }
  238. else
  239. ShowTextDrawDialog(playerid, 0);
  240. }
  241.  
  242. case 1577: // Carregar projeto personalizado
  243. {
  244. if(response)
  245. {
  246. new ending[5];
  247. strmid(ending, inputtext, strlen(inputtext) - 4, strlen(inputtext));
  248. if(strcmp(ending, ".tde") != 0)
  249. {
  250. new filename[128];
  251. format(filename, sizeof(filename), "%s.tde", inputtext);
  252. LoadProject(playerid, filename);
  253. }
  254. else LoadProject(playerid, inputtext);
  255. }
  256. else
  257. {
  258. if(pData[playerid][P_CurrentMenu] == DELETING) ShowTextDrawDialog(playerid, 2, 2);
  259. else if(pData[playerid][P_CurrentMenu] == LOADING) ShowTextDrawDialog(playerid, 2);
  260. }
  261. }
  262.  
  263. case 1578: // TextDraw seleção
  264. {
  265. if(response)
  266. {
  267. if(listitem == 0) // Eles selecionaram novo TextDraw
  268. {
  269. pData[playerid][P_CurrentTextdraw] = -1;
  270. for(new i; i < MAX_TEXTDRAWS; i++)
  271. {
  272. if(!tData[i][T_Created]) // Se não é criado no entanto, utilizar.
  273. {
  274. ClearTextdraw(i);
  275. CreateDefaultTextdraw(i);
  276. pData[playerid][P_CurrentTextdraw] = i;
  277. ShowTextDrawDialog(playerid, 4, pData[playerid][P_DialogPage]);
  278. break;
  279. }
  280. }
  281. if(GetPVarInt(playerid, "Use2DTD") == 1)
  282. {
  283. DeletePVar(playerid, "Use2DTD");
  284. }
  285. if(pData[playerid][P_CurrentTextdraw] == -1)
  286. {
  287. SendClientMessage(playerid, MSG_COLOR, "Você não pode criar mais textdraws !");
  288. ShowTextDrawDialog(playerid, 4, pData[playerid][P_DialogPage]);
  289. }
  290. else
  291. {
  292. new string[128];
  293. format(string, sizeof(string), "TextDraw #%d criado com sucesso.", pData[playerid][P_CurrentTextdraw]);
  294. SendClientMessage(playerid, MSG_COLOR, string);
  295. }
  296. }
  297. else if(listitem == 1) // Eles selecionaram exportação
  298. {
  299. ShowTextDrawDialog(playerid, 25);
  300. }
  301. else if(listitem == 2) // Eles selecionaram próximo projeto
  302. {
  303. if(IsPlayerMinID(playerid))
  304. {
  305. for(new i; i < MAX_TEXTDRAWS; i ++)
  306. {
  307. ClearTextdraw(i);
  308. }
  309. new string[128];
  310. format(string, sizeof(string), "Projeto '%s' fechado.", CurrentProject);
  311. SendClientMessage(playerid, MSG_COLOR, string);
  312.  
  313. strmid(CurrentProject, " ", 128, 128);
  314. ShowTextDrawDialog(playerid, 0);
  315. }
  316. else
  317. {
  318. SendClientMessage(playerid, MSG_COLOR, "Apenas o jogador de menor ID pode gerenciar projetos. Peça-lhe para abrir um.");
  319. ShowTextDrawDialog(playerid, 4);
  320. }
  321. }
  322. else if(listitem <= 10) // Teles selecionam um TD
  323. {
  324. new id = 3;
  325. for(new i = pData[playerid][P_DialogPage]; i < MAX_TEXTDRAWS; i ++)
  326. {
  327. if(tData[i][T_Created])
  328. {
  329. if(id == listitem)
  330. {
  331. // Achamos
  332. pData[playerid][P_CurrentTextdraw] = i;
  333. ShowTextDrawDialog(playerid, 5);
  334. break;
  335. }
  336. id ++;
  337. }
  338. }
  339. if(tData[pData[playerid][P_CurrentTextdraw]][T_Font] == 5)
  340. {
  341. if(GetPVarInt(playerid, "Use2DTD") == 0)
  342. {
  343. SetPVarInt(playerid, "Use2DTD", 1);
  344. }
  345. }
  346. else
  347. {
  348. if(GetPVarInt(playerid, "Use2DTD") == 1)
  349. {
  350. DeletePVar(playerid, "Use2DTD");
  351. }
  352. }
  353. new string[128];
  354. format(string, sizeof(string), "Você agora está editando TextDraw #%d", pData[playerid][P_CurrentTextdraw]);
  355. SendClientMessage(playerid, MSG_COLOR, string);
  356. }
  357. else
  358. {
  359. new BiggestID, itemcount;
  360. for(new i = pData[playerid][P_DialogPage]; i < MAX_TEXTDRAWS; i ++)
  361. {
  362. if(tData[i][T_Created])
  363. {
  364. itemcount ++;
  365. BiggestID = i;
  366. if(itemcount == 9) break;
  367. }
  368. }
  369. ShowTextDrawDialog(playerid, 4, BiggestID);
  370. }
  371. }
  372. else
  373. {
  374. pData[playerid][P_Editing] = false;
  375. pData[playerid][P_DialogPage] = 0;
  376. }
  377. }
  378.  
  379. case 1579: // Menu de edição principal
  380. {
  381. if(response)
  382. {
  383. switch(listitem)
  384. {
  385. case 0: // alterar texto
  386. {
  387. ShowTextDrawDialog(playerid, 8);
  388. }
  389. case 1: // Alterar posição
  390. {
  391. ShowTextDrawDialog(playerid, 9);
  392. }
  393. case 2: // Altere o alinhamento
  394. {
  395. ShowTextDrawDialog(playerid, 11);
  396. }
  397. case 3: // Alterar a cor da fonte
  398. {
  399. pData[playerid][P_ColorEdition] = COLOR_TEXT;
  400. ShowTextDrawDialog(playerid, 13);
  401. }
  402. case 4: // Alterar Fonte
  403. {
  404. ShowTextDrawDialog(playerid, 17);
  405. }
  406. case 5: // Mude proporcionalidade
  407. {
  408. ShowTextDrawDialog(playerid, 12);
  409. }
  410. case 6: // Alterar o tamanho da letra
  411. {
  412. ShowTextDrawDialog(playerid, 18);
  413. }
  414. case 7: // Editar esboço
  415. {
  416. ShowTextDrawDialog(playerid, 20);
  417. }
  418. case 8: // Editar caixa
  419. {
  420. if(tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] == 0) ShowTextDrawDialog(playerid, 23);
  421. else if(tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] == 1) ShowTextDrawDialog(playerid, 24);
  422. }
  423. case 9: // TextDrawSetSelectable
  424. {
  425. ShowTextDrawDialog(playerid, 32);
  426. }
  427. case 10: // PreviewModel
  428. {
  429. ShowTextDrawDialog(playerid, 33);
  430. }
  431. case 11: // duplicar TextDraw
  432. {
  433. new from, to;
  434. for(new i; i < MAX_TEXTDRAWS; i++)
  435. {
  436. if(!tData[i][T_Created]) // Se não é criado no entanto, utilizar.
  437. {
  438. ClearTextdraw(i);
  439. CreateDefaultTextdraw(i);
  440. from = pData[playerid][P_CurrentTextdraw];
  441. to = i;
  442. DuplicateTextdraw(pData[playerid][P_CurrentTextdraw], i);
  443. pData[playerid][P_CurrentTextdraw] = -1;
  444. ShowTextDrawDialog(playerid, 4);
  445. break;
  446. }
  447. }
  448. if(pData[playerid][P_CurrentTextdraw] != -1)
  449. {
  450. SendClientMessage(playerid, MSG_COLOR, "Você não pode criar mais textdraws !");
  451. ShowTextDrawDialog(playerid, 5);
  452. }
  453. else
  454. {
  455. new string[128];
  456. format(string, sizeof(string), "TextDraw #%d copiado com sucesso para TextDraw #%d .", from, to);
  457. SendClientMessage(playerid, MSG_COLOR, string);
  458. }
  459. }
  460. case 12: // excluir textdraw
  461. {
  462. ShowTextDrawDialog(playerid, 7);
  463. }
  464. }
  465. }
  466. else
  467. {
  468. ShowTextDrawDialog(playerid, 4, 0);
  469. }
  470. }
  471.  
  472. case 1580: // Diálogo de confirmação projeto Excluir
  473. {
  474. if(response)
  475. {
  476. new filename[128];
  477. format(filename, sizeof(filename), "%s", GetFileNameFromLst("tdlist.lst", pData[playerid][P_Aux]));
  478. fremove(filename);
  479. DeleteLineFromFile("tdlist.lst", pData[playerid][P_Aux]);
  480.  
  481. format(filename, sizeof(filename), "O projeto salvo como '%s' foi excluído com sucesso.", filename);
  482. SendClientMessage(playerid, MSG_COLOR, filename);
  483.  
  484. ShowTextDrawDialog(playerid, 0);
  485. }
  486. else
  487. {
  488. ShowTextDrawDialog(playerid, 0);
  489. }
  490. }
  491.  
  492. case 1581: // Excluir confirmação TD
  493. {
  494. if(response)
  495. {
  496. DeleteTDFromFile(pData[playerid][P_CurrentTextdraw]);
  497. ClearTextdraw(pData[playerid][P_CurrentTextdraw]);
  498.  
  499. new string[128];
  500. format(string, sizeof(string), "Você excluiu á TextDraw #%d", pData[playerid][P_CurrentTextdraw]);
  501. SendClientMessage(playerid, MSG_COLOR, string);
  502. if(tData[pData[playerid][P_CurrentTextdraw]][T_Font] == 5)
  503. {
  504. if(GetPVarInt(playerid, "Use2DTD") == 1)
  505. {
  506. DeletePVar(playerid, "Use2DTD");
  507. }
  508. }
  509. pData[playerid][P_CurrentTextdraw] = 0;
  510. ShowTextDrawDialog(playerid, 4);
  511. }
  512. else
  513. {
  514. ShowTextDrawDialog(playerid, 5);
  515. }
  516. }
  517.  
  518. case 1582: // Mude o texto de TextDraw
  519. {
  520. if(response)
  521. {
  522. if(!strlen(inputtext)) ShowTextDrawDialog(playerid, 8);
  523. else
  524. {
  525. format(tData[pData[playerid][P_CurrentTextdraw]][T_Text], 1024, "%s", inputtext);
  526. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  527. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Text");
  528. ShowTextDrawDialog(playerid, 5);
  529. }
  530. }
  531. else
  532. {
  533. ShowTextDrawDialog(playerid, 5);
  534. }
  535. }
  536.  
  537. case 1583: // Mude a posição da TextDraw: exata ou movimento
  538. {
  539. if(response)
  540. {
  541. switch(listitem)
  542. {
  543. case 0: // posição exata
  544. {
  545. pData[playerid][P_Aux] = 0;
  546. ShowTextDrawDialog(playerid, 10, 0, 0);
  547. }
  548. case 1: // Mova-a
  549. {
  550. new string[512];
  551. string = "~n~~n~~n~~n~~n~~n~~n~~n~~w~";
  552. if(!IsPlayerInAnyVehicle(playerid)) format(string, sizeof(string), "%s~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~~n~", string);
  553. else format(string, sizeof(string), "%s~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~", string);
  554. format(string, sizeof(string), "%sand ~k~~PED_SPRINT~ to move. ", string);
  555. if(!IsPlayerInAnyVehicle(playerid)) format(string, sizeof(string), "%s~k~~VEHICLE_ENTER_EXIT~", string);
  556. else format(string, sizeof(string), "%s~k~~VEHICLE_FIREWEAPON_ALT~", string);
  557. format(string, sizeof(string), "%s to finish.~n~", string);
  558.  
  559. GameTextForPlayer(playerid, string, 9999999, 3);
  560. SendClientMessage(playerid, MSG_COLOR, "Use as setas [Cima], [Baixo], [Esquerda] e a tecla [Direita] para mover o TextDraw. [Espaço] para velocidade. [Enter] para terminar.");
  561. TogglePlayerControllable(playerid, 0);
  562. pData[playerid][P_KeyEdition] = EDIT_POSITION;
  563. SetTimerEx("KeyEdit", 200, 0, "i", playerid);
  564. }
  565. }
  566. }
  567. else
  568. {
  569. ShowTextDrawDialog(playerid, 5);
  570. }
  571. }
  572.  
  573. case 1584: // Defina a posição manualmente
  574. {
  575. if(response)
  576. {
  577. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 10, pData[playerid][P_Aux], 1);
  578. else
  579. {
  580. if(pData[playerid][P_Aux] == 0) // Se ele editou X
  581. {
  582. tData[pData[playerid][P_CurrentTextdraw]][T_X] = floatstr(inputtext);
  583. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  584. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_X");
  585. ShowTextDrawDialog(playerid, 10, 1, 0);
  586. }
  587. else if(pData[playerid][P_Aux] == 1) // Se ele editou y
  588. {
  589. tData[pData[playerid][P_CurrentTextdraw]][T_Y] = floatstr(inputtext);
  590. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  591. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Y");
  592. ShowTextDrawDialog(playerid, 5);
  593.  
  594. SendClientMessage(playerid, MSG_COLOR, "TextDraw movido com êxito.");
  595. }
  596. }
  597. }
  598. else
  599. {
  600. if(pData[playerid][P_Aux] == 1) // Se ele está editando Y, movê-lo para X.
  601. {
  602. pData[playerid][P_Aux] = 0;
  603. ShowTextDrawDialog(playerid, 10, 0, 0);
  604. }
  605. else // Se ele estava editando X, mova-o de volta para selecionar o menu
  606. {
  607. ShowTextDrawDialog(playerid, 9);
  608. }
  609. }
  610. }
  611.  
  612. case 1585: // Mude textdraws alinhamento
  613. {
  614. if(response)
  615. {
  616. tData[pData[playerid][P_CurrentTextdraw]][T_Alignment] = listitem+1;
  617. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  618. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Alignment");
  619.  
  620. new string[128];
  621. format(string, sizeof(string), "Textdraw #%d's alterado para alinhamento %d.", pData[playerid][P_CurrentTextdraw], listitem+1);
  622. SendClientMessage(playerid, MSG_COLOR, string);
  623.  
  624. ShowTextDrawDialog(playerid, 5);
  625. }
  626. else
  627. {
  628. ShowTextDrawDialog(playerid, 5);
  629. }
  630. }
  631.  
  632. case 1586: // Mude textdraws proporcionalidade
  633. {
  634. if(response)
  635. {
  636. tData[pData[playerid][P_CurrentTextdraw]][T_Proportional] = listitem;
  637. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  638. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Proportional");
  639.  
  640. new string[128];
  641. format(string, sizeof(string), "Textdraw #%d's proportionalidade alterado para %d.", pData[playerid][P_CurrentTextdraw], listitem);
  642. SendClientMessage(playerid, MSG_COLOR, string);
  643.  
  644. ShowTextDrawDialog(playerid, 5);
  645. }
  646. else
  647. {
  648. ShowTextDrawDialog(playerid, 5);
  649. }
  650. }
  651.  
  652. case 1587: // Alterar a cor
  653. {
  654. if(response)
  655. {
  656. switch(listitem)
  657. {
  658. case 0: // escrever hex
  659. {
  660. ShowTextDrawDialog(playerid, 14);
  661. }
  662. case 1: // combinação de cores
  663. {
  664. ShowTextDrawDialog(playerid, 15, 0, 0);
  665. }
  666. case 2: // Pré cor Feito
  667. {
  668. ShowTextDrawDialog(playerid, 16);
  669. }
  670. }
  671. }
  672. else
  673. {
  674. if(pData[playerid][P_ColorEdition] == COLOR_TEXT) ShowTextDrawDialog(playerid, 5);
  675. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE) ShowTextDrawDialog(playerid, 20);
  676. else if(pData[playerid][P_ColorEdition] == COLOR_BOX) ShowTextDrawDialog(playerid, 24);
  677. }
  678. }
  679.  
  680. case 1588: // TextDraw cor: custom hex
  681. {
  682. if(response)
  683. {
  684. new red[3], green[3], blue[3], alpha[3];
  685.  
  686. if(inputtext[0] == '0' && inputtext[1] == 'x') // Ele está usando o formato 0xFFFFFF
  687. {
  688. if(strlen(inputtext) != 8 && strlen(inputtext) != 10) return ShowTextDrawDialog(playerid, 14, 1);
  689. else
  690. {
  691. format(red, sizeof(red), "%c%c", inputtext[2], inputtext[3]);
  692. format(green, sizeof(green), "%c%c", inputtext[4], inputtext[5]);
  693. format(blue, sizeof(blue), "%c%c", inputtext[6], inputtext[7]);
  694. if(inputtext[8] != '\0')
  695. format(alpha, sizeof(alpha), "%c%c", inputtext[8], inputtext[9]);
  696. else
  697. alpha = "FF";
  698. }
  699. }
  700. else if(inputtext[0] == '#') // Ele está usando formato #FFFFFF
  701. {
  702. if(strlen(inputtext) != 7 && strlen(inputtext) != 9) return ShowTextDrawDialog(playerid, 14, 1);
  703. else
  704. {
  705. format(red, sizeof(red), "%c%c", inputtext[1], inputtext[2]);
  706. format(green, sizeof(green), "%c%c", inputtext[3], inputtext[4]);
  707. format(blue, sizeof(blue), "%c%c", inputtext[5], inputtext[6]);
  708. if(inputtext[7] != '\0')
  709. format(alpha, sizeof(alpha), "%c%c", inputtext[7], inputtext[8]);
  710. else
  711. alpha = "FF";
  712. }
  713. }
  714. else // Ele está usando formato #FFFFFF
  715. {
  716. if(strlen(inputtext) != 6 && strlen(inputtext) != 8) return ShowTextDrawDialog(playerid, 14, 1);
  717. else
  718. {
  719. format(red, sizeof(red), "%c%c", inputtext[0], inputtext[1]);
  720. format(green, sizeof(green), "%c%c", inputtext[2], inputtext[3]);
  721. format(blue, sizeof(blue), "%c%c", inputtext[4], inputtext[5]);
  722. if(inputtext[6] != '\0')
  723. format(alpha, sizeof(alpha), "%c%c", inputtext[6], inputtext[7]);
  724. else
  725. alpha = "FF";
  726. }
  727. }
  728. // Temos a cor
  729. if(pData[playerid][P_ColorEdition] == COLOR_TEXT)
  730. tData[pData[playerid][P_CurrentTextdraw]][T_Color] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
  731. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)
  732. tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
  733. else if(pData[playerid][P_ColorEdition] == COLOR_BOX)
  734. tData[pData[playerid][P_CurrentTextdraw]][T_BoxColor] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
  735. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  736. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Color");
  737. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
  738. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BoxColor");
  739.  
  740. new string[128];
  741. format(string, sizeof(string), "Textdraw #%d's cor foi alterada", pData[playerid][P_CurrentTextdraw]);
  742. SendClientMessage(playerid, MSG_COLOR, string);
  743.  
  744. if(pData[playerid][P_ColorEdition] == COLOR_TEXT) ShowTextDrawDialog(playerid, 5);
  745. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE) ShowTextDrawDialog(playerid, 20);
  746. else if(pData[playerid][P_ColorEdition] == COLOR_BOX) ShowTextDrawDialog(playerid, 24);
  747. }
  748. else
  749. {
  750. ShowTextDrawDialog(playerid, 13);
  751. }
  752. }
  753.  
  754. case 1589: // TextDraw cor: Combinação de cores
  755. {
  756. if(response)
  757. {
  758. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 2);
  759. else if(strval(inputtext) < 0 || strval(inputtext) > 255) ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 1);
  760. else
  761. {
  762. pData[playerid][P_Color][pData[playerid][P_Aux]] = strval(inputtext);
  763.  
  764. if(pData[playerid][P_Aux] == 3) // Ele terminou a edição alfa, ele tem o resto.
  765. {
  766. // Temos a cor
  767. if(pData[playerid][P_ColorEdition] == COLOR_TEXT)
  768. tData[pData[playerid][P_CurrentTextdraw]][T_Color] = RGB(pData[playerid][P_Color][0], pData[playerid][P_Color][1], \
  769. pData[playerid][P_Color][2], pData[playerid][P_Color][3] );
  770. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)
  771. tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = RGB(pData[playerid][P_Color][0], pData[playerid][P_Color][1], \
  772. pData[playerid][P_Color][2], pData[playerid][P_Color][3] );
  773. else if(pData[playerid][P_ColorEdition] == COLOR_BOX)
  774. tData[pData[playerid][P_CurrentTextdraw]][T_BoxColor] = RGB(pData[playerid][P_Color][0], pData[playerid][P_Color][1], \
  775. pData[playerid][P_Color][2], pData[playerid][P_Color][3] );
  776. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  777. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Color");
  778. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
  779. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BoxColor");
  780.  
  781. new string[128];
  782. format(string, sizeof(string), "Textdraw #%d's cor foi alterada.", pData[playerid][P_CurrentTextdraw]);
  783. SendClientMessage(playerid, MSG_COLOR, string);
  784.  
  785. if(pData[playerid][P_ColorEdition] == COLOR_TEXT) ShowTextDrawDialog(playerid, 5);
  786. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE) ShowTextDrawDialog(playerid, 20);
  787. else if(pData[playerid][P_ColorEdition] == COLOR_BOX) ShowTextDrawDialog(playerid, 24);
  788. }
  789. else
  790. {
  791. pData[playerid][P_Aux] += 1;
  792. ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 0);
  793. }
  794. }
  795. }
  796. else
  797. {
  798. if(pData[playerid][P_Aux] >= 1) // Se ele está editando alfa, azul, etc
  799. {
  800. pData[playerid][P_Aux] -= 1;
  801. ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 0);
  802. }
  803. else // Se ele estava editando vermelho, mova-o de volta para seleccionar o menu de cores.
  804. {
  805. ShowTextDrawDialog(playerid, 13);
  806. }
  807. }
  808. }
  809.  
  810. case 1590: // TextDraw cor: cores premade
  811. {
  812. if(response)
  813. {
  814. new col;
  815. switch(listitem)
  816. {
  817. case 0: col = 0xff0000ff;
  818. case 1: col = 0x00ff00ff;
  819. case 2: col = 0x0000ffff;
  820. case 3: col = 0xffff00ff;
  821. case 4: col = 0xff00ffff;
  822. case 5: col = 0x00ffffff;
  823. case 6: col = 0xffffffff;
  824. case 7: col = 0x000000ff;
  825. }
  826. if(pData[playerid][P_ColorEdition] == COLOR_TEXT)
  827. tData[pData[playerid][P_CurrentTextdraw]][T_Color] = col;
  828. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)
  829. tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = col;
  830. else if(pData[playerid][P_ColorEdition] == COLOR_BOX)
  831. tData[pData[playerid][P_CurrentTextdraw]][T_BoxColor] = col;
  832. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  833. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Color");
  834. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
  835. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BoxColor");
  836.  
  837. new string[128];
  838. format(string, sizeof(string), "Textdraw #%d's cor foi alterada.", pData[playerid][P_CurrentTextdraw]);
  839. SendClientMessage(playerid, MSG_COLOR, string);
  840.  
  841. if(pData[playerid][P_ColorEdition] == COLOR_TEXT) ShowTextDrawDialog(playerid, 5);
  842. else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE) ShowTextDrawDialog(playerid, 20);
  843. else if(pData[playerid][P_ColorEdition] == COLOR_BOX) ShowTextDrawDialog(playerid, 24);
  844. }
  845. else
  846. {
  847. ShowTextDrawDialog(playerid, 13);
  848. }
  849. }
  850.  
  851. case 1591: // Mude TextDraw fonte
  852. {
  853. if(response)
  854. {
  855. tData[pData[playerid][P_CurrentTextdraw]][T_Font] = listitem;
  856. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  857. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Font");
  858.  
  859. new string[128];
  860. format(string, sizeof(string), "Textdraw #%d'fonte alterada para %d.", pData[playerid][P_CurrentTextdraw], listitem);
  861. SendClientMessage(playerid, MSG_COLOR, string);
  862. if(listitem < 5)
  863. {
  864. if(GetPVarInt(playerid, "Use2DTD") == 1)
  865. {
  866. DeletePVar(playerid, "Use2DTD");
  867. }
  868. }
  869. if(listitem == 4)
  870. {
  871. SendClientMessage(playerid, -1, "Importante: caixa foi Auto Permitido - fundo removido!");
  872. SendClientMessage(playerid, -1, "Alterar o tamanho da caixa para alterar o tamanho do TD - Default Seta para cima Criado a (ld_beat:up).");
  873. format(tData[pData[playerid][P_CurrentTextdraw]][T_Text], 16, "ld_beat:up");
  874. tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = 0x00000000;
  875. tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 1;
  876. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] = 30.0;
  877. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] = 30.0;
  878. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  879. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Text");
  880. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
  881. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
  882. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeX");
  883. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeY");
  884.  
  885. SendClientMessage(playerid, MSG_COLOR, "TextDraw caixa habilitada. Prosseguindo com a edição ...");
  886. }
  887. if(listitem == 5)
  888. {
  889. SetPVarInt(playerid, "Use2DTD", 1);
  890. SendClientMessage(playerid, -1, "Importante: caixa foi Auto Ativado!");
  891. tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 1;
  892. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] = 30.0;
  893. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] = 30.0;
  894. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  895. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
  896. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeX");
  897. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeY");
  898.  
  899. SendClientMessage(playerid, MSG_COLOR, "TextDraw caixa habilitada. Prosseguindo com a edição ...");
  900. }
  901. ShowTextDrawDialog(playerid, 5);
  902. }
  903. else
  904. {
  905. ShowTextDrawDialog(playerid, 5);
  906. }
  907. }
  908.  
  909. case 1592: // Alterar o tamanho da letra textdraws: exata ou movimento
  910. {
  911. if(response)
  912. {
  913. switch(listitem)
  914. {
  915. case 0: // tamanho exato
  916. {
  917. pData[playerid][P_Aux] = 0;
  918. ShowTextDrawDialog(playerid, 19, 0, 0);
  919. }
  920. case 1: // redimensioná-la
  921. {
  922. new string[512];
  923. string = "~n~~n~~n~~n~~n~~n~~n~~n~~w~";
  924. if(!IsPlayerInAnyVehicle(playerid)) format(string, sizeof(string), "%s~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~~n~", string);
  925. else format(string, sizeof(string), "%s~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~", string);
  926. format(string, sizeof(string), "%sand ~k~~PED_SPRINT~ to resize. ", string);
  927. if(!IsPlayerInAnyVehicle(playerid)) format(string, sizeof(string), "%s~k~~VEHICLE_ENTER_EXIT~", string);
  928. else format(string, sizeof(string), "%s~k~~VEHICLE_FIREWEAPON_ALT~", string);
  929. format(string, sizeof(string), "%s to finish.~n~", string);
  930.  
  931. GameTextForPlayer(playerid, string, 9999999, 3);
  932. SendClientMessage(playerid, MSG_COLOR, "Use as setas [Cima], [Baixo], [Esquerda] e a tecla [Direita] para mover o TextDraw. [Espaço] para velocidade. [Enter] para terminar.");
  933.  
  934. TogglePlayerControllable(playerid, 0);
  935. pData[playerid][P_KeyEdition] = EDIT_SIZE;
  936. SetTimerEx("KeyEdit", 200, 0, "i", playerid);
  937. }
  938. }
  939. }
  940. else
  941. {
  942. ShowTextDrawDialog(playerid, 5);
  943. }
  944. }
  945.  
  946. case 1593: // Alterar o tamanho da letra manualmente
  947. {
  948. if(response)
  949. {
  950. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 19, pData[playerid][P_Aux], 1);
  951. else
  952. {
  953. if(pData[playerid][P_Aux] == 0) // Se ele editou X
  954. {
  955. tData[pData[playerid][P_CurrentTextdraw]][T_XSize] = floatstr(inputtext);
  956. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  957. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_XSize");
  958. ShowTextDrawDialog(playerid, 19, 1, 0);
  959. }
  960. else if(pData[playerid][P_Aux] == 1) // Se ele editou Y
  961. {
  962. tData[pData[playerid][P_CurrentTextdraw]][T_YSize] = floatstr(inputtext);
  963. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  964. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_YSize");
  965. ShowTextDrawDialog(playerid, 5);
  966.  
  967. SendClientMessage(playerid, MSG_COLOR, "TextDraw redimensionada com sucesso");
  968. }
  969. }
  970. }
  971. else
  972. {
  973. if(pData[playerid][P_Aux] == 1) // Se ele está editando Y, movê-lo para X.
  974. {
  975. pData[playerid][P_Aux] = 0;
  976. ShowTextDrawDialog(playerid, 19, 0, 0);
  977. }
  978. else // Se ele estava editando X, mova-o de volta para selecionar o menu
  979. {
  980. ShowTextDrawDialog(playerid, 18);
  981. }
  982. }
  983. }
  984.  
  985. case 1594: // main outline menu
  986. {
  987. if(response)
  988. {
  989. switch(listitem)
  990. {
  991. case 0: // Toggle outline
  992. {
  993. if(tData[pData[playerid][P_CurrentTextdraw]][T_Outline]) tData[pData[playerid][P_CurrentTextdraw]][T_Outline] = 0;
  994. else tData[pData[playerid][P_CurrentTextdraw]][T_Outline] = 1;
  995. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  996. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Outline");
  997. ShowTextDrawDialog(playerid, 20);
  998.  
  999. SendClientMessage(playerid, MSG_COLOR, "Textdraws esquema alternado.");
  1000. }
  1001. case 1: // Change shadow
  1002. {
  1003. ShowTextDrawDialog(playerid, 21);
  1004. }
  1005. case 2: // Change color
  1006. {
  1007. pData[playerid][P_ColorEdition] = COLOR_OUTLINE;
  1008. ShowTextDrawDialog(playerid, 13);
  1009. }
  1010. case 3: // Finish
  1011. {
  1012. SendClientMessage(playerid, MSG_COLOR, "Personalização esboço terminado.");
  1013. ShowTextDrawDialog(playerid, 5);
  1014. }
  1015. }
  1016. }
  1017. else
  1018. {
  1019. ShowTextDrawDialog(playerid, 5);
  1020. }
  1021. }
  1022.  
  1023. case 1595: // Esboço sombra
  1024. {
  1025. if(response)
  1026. {
  1027. if(listitem == 6) // selected custom
  1028. {
  1029. ShowTextDrawDialog(playerid, 22);
  1030. }
  1031. else
  1032. {
  1033. tData[pData[playerid][P_CurrentTextdraw]][T_Shadow] = listitem;
  1034. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1035. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Shadow");
  1036. ShowTextDrawDialog(playerid, 20);
  1037.  
  1038. new string[128];
  1039. format(string, sizeof(string), "Textdraw #%d's esboço sombra alterado para %d.", pData[playerid][P_CurrentTextdraw], listitem);
  1040. SendClientMessage(playerid, MSG_COLOR, string);
  1041. }
  1042. }
  1043. else
  1044. {
  1045. ShowTextDrawDialog(playerid, 20);
  1046. }
  1047. }
  1048.  
  1049. case 1596: // Esboço sombra customized
  1050. {
  1051. if(response)
  1052. {
  1053. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 22, 1);
  1054. else
  1055. {
  1056. tData[pData[playerid][P_CurrentTextdraw]][T_Shadow] = strval(inputtext);
  1057. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1058. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Shadow");
  1059. ShowTextDrawDialog(playerid, 20);
  1060.  
  1061. new string[128];
  1062. format(string, sizeof(string), "Textdraw #%d's esboço sombra alterado para %d.", pData[playerid][P_CurrentTextdraw], strval(inputtext));
  1063. SendClientMessage(playerid, MSG_COLOR, string);
  1064. }
  1065. }
  1066. else
  1067. {
  1068. ShowTextDrawDialog(playerid, 21);
  1069. }
  1070. }
  1071.  
  1072. case 1597: // Box on - off
  1073. {
  1074. if(response)
  1075. {
  1076. switch(listitem)
  1077. {
  1078. case 0: // Turned box on
  1079. {
  1080. tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 1;
  1081. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1082. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
  1083.  
  1084. SendClientMessage(playerid, MSG_COLOR, "TextDraw caixa habilitada. Prosseguindo com a edição ...");
  1085.  
  1086. ShowTextDrawDialog(playerid, 24);
  1087. }
  1088. case 1: // He disabled it, nothing more to edit.
  1089. {
  1090. tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 0;
  1091. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1092. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
  1093.  
  1094. SendClientMessage(playerid, MSG_COLOR, "Caixa TextDraw desativado.");
  1095.  
  1096. ShowTextDrawDialog(playerid, 5);
  1097. }
  1098. }
  1099. }
  1100. else
  1101. {
  1102. ShowTextDrawDialog(playerid, 5);
  1103. }
  1104. }
  1105.  
  1106. case 1598: // Box main menu
  1107. {
  1108. if(response)
  1109. {
  1110. switch(listitem)
  1111. {
  1112. case 0: // Turned box off
  1113. {
  1114. tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 0;
  1115. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1116. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
  1117.  
  1118. SendClientMessage(playerid, MSG_COLOR, "Caixa TextDraw desativado.");
  1119.  
  1120. ShowTextDrawDialog(playerid, 23);
  1121. }
  1122. case 1: // box size
  1123. {
  1124. new string[512];
  1125. string = "~n~~n~~n~~n~~n~~n~~n~~n~~w~";
  1126. if(!IsPlayerInAnyVehicle(playerid)) format(string, sizeof(string), "%s~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~~n~", string);
  1127. else format(string, sizeof(string), "%s~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~", string);
  1128. format(string, sizeof(string), "%sand ~k~~PED_SPRINT~ to resize. ", string);
  1129. if(!IsPlayerInAnyVehicle(playerid)) format(string, sizeof(string), "%s~k~~VEHICLE_ENTER_EXIT~", string);
  1130. else format(string, sizeof(string), "%s~k~~VEHICLE_FIREWEAPON_ALT~", string);
  1131. format(string, sizeof(string), "%s to finish.~n~", string);
  1132.  
  1133. GameTextForPlayer(playerid, string, 9999999, 3);
  1134. SendClientMessage(playerid, MSG_COLOR, "Use as setas [Cima], [Baixo], [Esquerda] e a tecla [Direita] para mover o TextDraw. [Espaço] para velocidade. [Enter] para terminar.");
  1135.  
  1136. TogglePlayerControllable(playerid, 0);
  1137. pData[playerid][P_KeyEdition] = EDIT_BOX;
  1138. SetTimerEx("KeyEdit", 200, 0, "i", playerid);
  1139. }
  1140. case 2: // box color
  1141. {
  1142. pData[playerid][P_ColorEdition] = COLOR_BOX;
  1143. ShowTextDrawDialog(playerid, 13);
  1144. }
  1145. }
  1146. }
  1147. else
  1148. {
  1149. ShowTextDrawDialog(playerid, 5);
  1150. }
  1151. }
  1152. case 1606: // Change textdraw's selectable
  1153. {
  1154. if(response)
  1155. {
  1156. tData[pData[playerid][P_CurrentTextdraw]][T_Selectable] = 1;
  1157. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1158. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Selectable");
  1159.  
  1160. new string[128];
  1161. format(string, sizeof(string), "Textdraw #%d's NÃO é seleccionável pelo clique do mouse. (seleção foi ligada)", pData[playerid][P_CurrentTextdraw]);
  1162. SendClientMessage(playerid, MSG_COLOR, string);
  1163. ShowTextDrawDialog(playerid, 5);
  1164. }
  1165. else
  1166. {
  1167. tData[pData[playerid][P_CurrentTextdraw]][T_Selectable] = 0;
  1168. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1169. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Selectable");
  1170.  
  1171. new string[128];
  1172. format(string, sizeof(string), "Textdraw #%d's iNÃO é seleccionável pelo clique do mouse (a seleção foi desligado).", pData[playerid][P_CurrentTextdraw]);
  1173. SendClientMessage(playerid, MSG_COLOR, string);
  1174. ShowTextDrawDialog(playerid, 5);
  1175. }
  1176. }
  1177.  
  1178. case 1607: // Preview model
  1179. {
  1180. // Model Index\nRot X\nRot Y\nRot Z\nZoom
  1181. if(response)
  1182. {
  1183. if(listitem == 0)
  1184. {
  1185. ShowTextDrawDialog(playerid, 34);
  1186. }
  1187. if(listitem == 1)
  1188. {
  1189. ShowTextDrawDialog(playerid, 35);
  1190. }
  1191. if(listitem == 2)
  1192. {
  1193. ShowTextDrawDialog(playerid, 36);
  1194. }
  1195. if(listitem == 3)
  1196. {
  1197. ShowTextDrawDialog(playerid, 37);
  1198. }
  1199. if(listitem == 4)
  1200. {
  1201. ShowTextDrawDialog(playerid, 38);
  1202. }
  1203. }
  1204. else
  1205. {
  1206. ShowTextDrawDialog(playerid, 5);
  1207. }
  1208. }
  1209. case 1608: // Model Index
  1210. {
  1211. if(response)
  1212. {
  1213. if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
  1214. tData[pData[playerid][P_CurrentTextdraw]][T_PreviewModel] = strval(inputtext);
  1215. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1216. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_PreviewModel");
  1217.  
  1218. new string[128];
  1219. format(string, sizeof(string), "Textdraw #%d's visualização Modelo alterada para \"%d\".", pData[playerid][P_CurrentTextdraw], strval(inputtext));
  1220. SendClientMessage(playerid, MSG_COLOR, string);
  1221. ShowTextDrawDialog(playerid, 33);
  1222. }
  1223. else
  1224. {
  1225. ShowTextDrawDialog(playerid, 33);
  1226. }
  1227. }
  1228. case 1609: // Rot X
  1229. {
  1230. if(response)
  1231. {
  1232. if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
  1233. tData[pData[playerid][P_CurrentTextdraw]][PMRotX] = floatstr(inputtext);
  1234. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1235. SaveTDData(pData[playerid][P_CurrentTextdraw], "PMRotX");
  1236.  
  1237. new string[128];
  1238. format(string, sizeof(string), "Textdraw #%d's visualização Modelo RX alterada para \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
  1239. SendClientMessage(playerid, MSG_COLOR, string);
  1240. ShowTextDrawDialog(playerid, 33);
  1241. }
  1242. else
  1243. {
  1244. ShowTextDrawDialog(playerid, 33);
  1245. }
  1246. }
  1247. case 1610: // Rot Y
  1248. {
  1249. if(response)
  1250. {
  1251. if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
  1252. tData[pData[playerid][P_CurrentTextdraw]][PMRotY] = floatstr(inputtext);
  1253. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1254. SaveTDData(pData[playerid][P_CurrentTextdraw], "PMRotY");
  1255.  
  1256. new string[128];
  1257. format(string, sizeof(string), "Textdraw #%d'mudou visualização Modelo RY para \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
  1258. SendClientMessage(playerid, MSG_COLOR, string);
  1259. ShowTextDrawDialog(playerid, 33);
  1260. }
  1261. else
  1262. {
  1263. ShowTextDrawDialog(playerid, 33);
  1264. }
  1265. }
  1266. case 1611: // Rot Z
  1267. {
  1268. if(response)
  1269. {
  1270. if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
  1271. tData[pData[playerid][P_CurrentTextdraw]][PMRotZ] = floatstr(inputtext);
  1272. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1273. SaveTDData(pData[playerid][P_CurrentTextdraw], "PMRotZ");
  1274.  
  1275. new string[128];
  1276. format(string, sizeof(string), "Textdraw #%d's mudou visualização Modelo RZ para \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
  1277. SendClientMessage(playerid, MSG_COLOR, string);
  1278. ShowTextDrawDialog(playerid, 33);
  1279. }
  1280. else
  1281. {
  1282. ShowTextDrawDialog(playerid, 33);
  1283. }
  1284. }
  1285. case 1612: // Zoom
  1286. {
  1287. if(response)
  1288. {
  1289. if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
  1290. tData[pData[playerid][P_CurrentTextdraw]][PMZoom] = floatstr(inputtext);
  1291. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  1292. SaveTDData(pData[playerid][P_CurrentTextdraw], "PMZoom");
  1293.  
  1294. new string[128];
  1295. format(string, sizeof(string), "Textdraw #%d'mudou visualização Modelo Zoom para \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
  1296. SendClientMessage(playerid, MSG_COLOR, string);
  1297. ShowTextDrawDialog(playerid, 33);
  1298. }
  1299. else
  1300. {
  1301. ShowTextDrawDialog(playerid, 33);
  1302. }
  1303. }
  1304. case 1599: // exportação menu
  1305. {
  1306. if(response)
  1307. {
  1308. switch(listitem)
  1309. {
  1310. case 0: // classic mode
  1311. {
  1312. ExportProject(playerid, 0);
  1313. }
  1314. case 1: // self-working fs
  1315. {
  1316. ShowTextDrawDialog(playerid, 26);
  1317. }
  1318. case 2: // PlayerTextDraw
  1319. {
  1320. ExportProject(playerid, 7);
  1321. }
  1322. }
  1323. }
  1324. else
  1325. {
  1326. ShowTextDrawDialog(playerid, 4);
  1327. }
  1328. }
  1329.  
  1330. case 1600: // Export to self working filterscript
  1331. {
  1332. if(response)
  1333. {
  1334. switch(listitem)
  1335. {
  1336. case 0: // Show all the time.
  1337. {
  1338. ExportProject(playerid, 1);
  1339. }
  1340. case 1: // Show on class selection.
  1341. {
  1342. ExportProject(playerid, 2);
  1343. }
  1344. case 2: // Show while in vehicle
  1345. {
  1346. ExportProject(playerid, 3);
  1347. }
  1348. case 3: // Show with command
  1349. {
  1350. ShowTextDrawDialog(playerid, 27);
  1351. }
  1352. case 4: // Show automatly repeteadly after some time
  1353. {
  1354. ShowTextDrawDialog(playerid, 29);
  1355. }
  1356. case 5: // Show after player killed someone
  1357. {
  1358. ShowTextDrawDialog(playerid, 31);
  1359. }
  1360. }
  1361. }
  1362. else
  1363. {
  1364. ShowTextDrawDialog(playerid, 25);
  1365. }
  1366. }
  1367.  
  1368. case 1601: // Write command for export
  1369. {
  1370. if(response)
  1371. {
  1372. if(!strlen(inputtext)) ShowTextDrawDialog(playerid, 27);
  1373. else
  1374. {
  1375. if(inputtext[0] != '/')
  1376. format(pData[playerid][P_ExpCommand], 128, "/%s", inputtext);
  1377. else
  1378. format(pData[playerid][P_ExpCommand], 128, "%s", inputtext);
  1379.  
  1380. ShowTextDrawDialog(playerid, 28);
  1381. }
  1382. }
  1383. else
  1384. {
  1385. ShowTextDrawDialog(playerid, 26);
  1386. }
  1387. }
  1388.  
  1389. case 1602: // Time after command for export
  1390. {
  1391. if(response)
  1392. {
  1393. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 28);
  1394. else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 28);
  1395. else
  1396. {
  1397. pData[playerid][P_Aux] = strval(inputtext);
  1398. ExportProject(playerid, 4);
  1399. }
  1400. }
  1401. else
  1402. {
  1403. ShowTextDrawDialog(playerid, 27);
  1404. }
  1405. }
  1406.  
  1407. case 1603: // Write time in secs to appear for export
  1408. {
  1409. if(response)
  1410. {
  1411. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 29);
  1412. else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 29);
  1413. else
  1414. {
  1415. pData[playerid][P_Aux] = strval(inputtext);
  1416. ShowTextDrawDialog(playerid, 30);
  1417. }
  1418. }
  1419. else
  1420. {
  1421. ShowTextDrawDialog(playerid, 26);
  1422. }
  1423. }
  1424.  
  1425. case 1604: // Time after appeared to dissapear for export
  1426. {
  1427. if(response)
  1428. {
  1429. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 30);
  1430. else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 30);
  1431. else
  1432. {
  1433. pData[playerid][P_Aux2] = strval(inputtext);
  1434. ExportProject(playerid, 5);
  1435. }
  1436. }
  1437. else
  1438. {
  1439. ShowTextDrawDialog(playerid, 29);
  1440. }
  1441. }
  1442.  
  1443. case 1605: // Time after appeared to dissapear when kill for export
  1444. {
  1445. if(response)
  1446. {
  1447. if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 31);
  1448. else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 31);
  1449. else
  1450. {
  1451. pData[playerid][P_Aux] = strval(inputtext);
  1452. ExportProject(playerid, 6);
  1453. }
  1454. }
  1455. else
  1456. {
  1457. ShowTextDrawDialog(playerid, 26);
  1458. }
  1459. }
  1460. }
  1461.  
  1462. return 1;
  1463. }
  1464.  
  1465. // =============================================================================
  1466. // Functions.
  1467. // =============================================================================
  1468.  
  1469. forward ShowTextDrawDialogEx( playerid, dialogid );
  1470. public ShowTextDrawDialogEx( playerid, dialogid ) ShowTextDrawDialog( playerid, dialogid );
  1471.  
  1472. stock ShowTextDrawDialog( playerid, dialogid, aux=0, aux2=0 )
  1473. {
  1474. /* Shows a specific dialog for a specific player
  1475. @playerid: ID of the player to show the dialog to.
  1476. @dialogid: ID of the dialog to show.
  1477. @aux: Auxiliary variable. Works to make variations of certain dialogs.
  1478. @aux2: Auxiliary variable. Works to make variations of certain dialogs.
  1479.  
  1480. -Returns:
  1481. true on success, false on fail.
  1482. */
  1483.  
  1484. switch(dialogid)
  1485. {
  1486. case 0: // Select project.
  1487. {
  1488. new info[256];
  1489. format(info, sizeof(info), "%sNovo projeto\n", info);
  1490. format(info, sizeof(info), "%sCarregar projeto\n", info);
  1491. format(info, sizeof(info), "%sDeletar Projeto", info);
  1492. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Startup"), info, "Aceitar", "Cancelar");
  1493. return true;
  1494. }
  1495.  
  1496. case 1:
  1497. {
  1498. new info[256];
  1499. if(!aux) info = "Escreva o nome do novo arquivo de projeto.\n";
  1500. else if(aux == 1) info = "ERRO: O nome é muito longo, por favor, tente novamente.\n";
  1501. else if(aux == 2) info = "ERRO: Esse nome já existe, tente novamente.\n";
  1502. else if(aux == 3) info = "ERRO: o nome do arquivo contém caracteres ilegais. Você não tem permissão para\ncriar subdiretórios. Por favor, tente novamente.";
  1503. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Novo projeto"), info, "Aceitar", "Voltar");
  1504. return true;
  1505. }
  1506.  
  1507. case 2:
  1508. {
  1509. // Store in a var if he's deleting or loading.
  1510. if(aux == 2) pData[playerid][P_CurrentMenu] = DELETING;
  1511. else pData[playerid][P_CurrentMenu] = LOADING;
  1512.  
  1513. new info[1024];
  1514. if(fexist("tdlist.lst"))
  1515. {
  1516. if(aux != 2) info = "Nome personalizado ...";
  1517. else info = "<< Voltar";
  1518. new File:tdlist = fopen("tdlist.lst", io_read),
  1519. line[128];
  1520. while(fread(tdlist, line))
  1521. {
  1522. format(info, sizeof(info), "%s\n%s", info, line);
  1523. }
  1524.  
  1525. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Carregar projeto"), info, "Aceitar", "Voltar");
  1526. fclose(tdlist);
  1527. }
  1528. else
  1529. {
  1530. if(aux) format(info, sizeof(info), "%sNão foi possível encontrar tdlist.lst.\n", info);
  1531. format(info, sizeof(info), "%sEscreva manualmente o nome do arquivo de projeto que você deseja\n", info);
  1532. if(aux != 2) format(info, sizeof(info), "%sPara abrir:\n", info);
  1533. else format(info, sizeof(info), "%sPara apagar:\n", info);
  1534.  
  1535. if(aux != 2) ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Carregar projeto"), info, "Aceitar", "Voltar");
  1536. else ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Excluir Projeto"), info, "Aceitar", "Voltar");
  1537. }
  1538. return true;
  1539. }
  1540.  
  1541. case 3:
  1542. {
  1543. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Carregar projeto"), \
  1544. "Escreva manualmente o nome do arquivo de projeto\n que você deseja carregar\n", "Aceitar", "Voltar");
  1545. return true;
  1546. }
  1547.  
  1548. case 4: // Menu principal edição (mostra todos os textdraws e permite que você crie um novo).
  1549. {
  1550. new info[1024],
  1551. shown;
  1552. format(info, sizeof(info), "%sCriar uma nova TextDraw ...", info);
  1553. shown ++;
  1554. format(info, sizeof(info), "%s\nExportar projeto ...", info);
  1555. shown ++;
  1556. format(info, sizeof(info), "%s\nFechar projeto ...", info);
  1557. shown ++;
  1558. // Aux aqui é usado para indicar a partir do qual TV mostrar a lista de.
  1559. pData[playerid][P_DialogPage] = aux;
  1560. for(new i=aux; i < MAX_TEXTDRAWS; i++)
  1561. {
  1562. if(tData[i][T_Created])
  1563. {
  1564. shown ++;
  1565. if(shown == 12)
  1566. {
  1567. format(info, sizeof(info), "%s\nMais >>", info);
  1568. break;
  1569. }
  1570.  
  1571. new PieceOfText[PREVIEW_CHARS];
  1572. if(strlen(tData[i][T_Text]) > sizeof(PieceOfText))
  1573. {
  1574. strmid(PieceOfText, tData[i][T_Text], 0, PREVIEW_CHARS, PREVIEW_CHARS);
  1575. format(info, sizeof(info), "%s\nTDraw %d: '%s [...]'", info, i, PieceOfText);
  1576. }
  1577. else
  1578. {
  1579. format(info, sizeof(info), "%s\nTDraw %d: '%s'", info, i, tData[i][T_Text]);
  1580. }
  1581. }
  1582. }
  1583. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "TextDraw seleção"), info, "Aceitar", "Cancelar");
  1584. return true;
  1585. }
  1586.  
  1587. case 5:
  1588. {
  1589. new info[1024];
  1590. format(info, sizeof(info), "%sAlterar texto\n", info);
  1591. format(info, sizeof(info), "%sAlterar posição\n", info);
  1592. format(info, sizeof(info), "%sAltere Alinhamento\n", info);
  1593. format(info, sizeof(info), "%sMude a cor do texto\n", info);
  1594. format(info, sizeof(info), "%sMude a Fonte\n", info);
  1595. format(info, sizeof(info), "%sMude proporcionalidade\n", info);
  1596. format(info, sizeof(info), "%sAlterar o tamanho da fonte\n", info);
  1597. format(info, sizeof(info), "%sEditar Esboço\n", info);
  1598. format(info, sizeof(info), "%sEditar Caixa\n", info);
  1599. format(info, sizeof(info), "%sTextDraw selecionáveis\n", info);
  1600. format(info, sizeof(info), "%sOpções de visualizar modelo\n", info);
  1601. format(info, sizeof(info), "%sDuplicar TextDraw\n", info);
  1602. format(info, sizeof(info), "%sExcluir TextDraw ...", info);
  1603.  
  1604. new title[40];
  1605. format(title, sizeof(title), "Textdraw %d", pData[playerid][P_CurrentTextdraw]);
  1606.  
  1607. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, title), info, "Aceitar", "Cancelar");
  1608. return true;
  1609. }
  1610.  
  1611. case 6:
  1612. {
  1613. new info[256];
  1614. format(info, sizeof(info), "%sTem certeza de que deseja excluir o\n", info);
  1615. format(info, sizeof(info), "%s%s projeto ?\n\n", info, GetFileNameFromLst("tdlist.lst", pData[playerid][P_Aux]));
  1616. format(info, sizeof(info), "%sATENÇÃO: Não há maneira de desfazer esta operação.", info);
  1617.  
  1618. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_MSGBOX, CreateDialogTitle(playerid, "Confirme a eliminação"), info, "Sim", "Não");
  1619. return true;
  1620. }
  1621.  
  1622. case 7:
  1623. {
  1624. new info[256];
  1625. format(info, sizeof(info), "%sTem certeza de que deseja excluir o numero\n", info);
  1626. format(info, sizeof(info), "%sTextdraw %d?\n\n", info, pData[playerid][P_CurrentTextdraw]);
  1627. format(info, sizeof(info), "%sATENÇÃO: Não há maneira de desfazer esta operação.", info);
  1628.  
  1629. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_MSGBOX, CreateDialogTitle(playerid, "Confirme a eliminação"), info, "Sim", "Não");
  1630. return true;
  1631. }
  1632.  
  1633. case 8:
  1634. {
  1635. new info[1024];
  1636. info = "Escreva o novo texto textdraws. O texto atual é:\n\n";
  1637. format(info, sizeof(info), "%s%s\n\n", info, tData[pData[playerid][P_CurrentTextdraw]][T_Text]);
  1638. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "TextDraw corda"), info, "Aceitar", "Voltar");
  1639. return true;
  1640. }
  1641.  
  1642. case 9:
  1643. {
  1644. new info[256];
  1645. info = "Escrever posição exata\n";
  1646. format(info, sizeof(info), "%sMova o TextDraw", info);
  1647. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraws posição"), info, "Aceitar", "Voltar");
  1648. return true;
  1649. }
  1650.  
  1651. case 10:
  1652. {
  1653. // aux is 0 for X, 1 for Y.
  1654. // aux2 is the type of error message. 0 for no error.
  1655. new info[256];
  1656. if(aux2 == 1) info = "ERRO: Você tem que escrever um número.\n\n";
  1657.  
  1658. format(info, sizeof(info), "%sEscreva em numeros ", info);
  1659. if(aux == 0) format(info, sizeof(info), "%sX", info);
  1660. else if(aux == 1) format(info, sizeof(info), "%sY", info);
  1661. format(info, sizeof(info), "%s posição do TextDraw\n", info);
  1662.  
  1663. pData[playerid][P_Aux] = aux; // To know if he's editing X or Y.
  1664. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraws posição"), info, "Aceitar", "Voltar");
  1665. return true;
  1666. }
  1667.  
  1668. case 11:
  1669. {
  1670. new info[256];
  1671. info = "Esquerda (tipo 1)\nCentrado (tipo 2)\nDireita (tipo 3)";
  1672. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraws alinhamento"), info, "Aceitar", "Voltar");
  1673. return true;
  1674. }
  1675.  
  1676. case 12:
  1677. {
  1678. new info[256];
  1679. info = "Proporcionalidade On\nProporcionalidade Off";
  1680. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraws Proporcionalidade"), info, "Aceitar", "Voltar");
  1681. return true;
  1682. }
  1683.  
  1684. case 13:
  1685. {
  1686. new info[256];
  1687. info = "Escrever um número hexadecimal\nUse combinação de cores\nSelecione uma cor pré feitas";
  1688. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "TextDraw cor"), info, "Aceitar", "Voltar");
  1689. return true;
  1690. }
  1691.  
  1692. case 14:
  1693. {
  1694. new info[256];
  1695. if(aux) info = "ERRO: Você escreveu um número hexadecimal inválido.\n\n";
  1696. format(info, sizeof(info), "%sEscreva o número hexadecimal que você deseja:\n", info);
  1697. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "TextDraw cor"), info, "Aceitar", "Voltar");
  1698. return true;
  1699. }
  1700.  
  1701. case 15:
  1702. {
  1703. // aux is 0 for red, 1 for green, 2 for blue, and 3 for alpha.
  1704. // aux2 is the type of error message. 0 for no error.
  1705. new info[256];
  1706. if(aux2 == 1) info = "ERRO: O número tem que ser entre 0 e 255.\n\n";
  1707. else if(aux2 == 2) info = "ERRO: Você tem que escrever um número.\n\n";
  1708.  
  1709. format(info, sizeof(info), "%sEscreva a quantidade de ", info);
  1710. if(aux == 0) format(info, sizeof(info), "%sVERMELHO", info);
  1711. else if(aux == 1) format(info, sizeof(info), "%sVERDE", info);
  1712. else if(aux == 2) format(info, sizeof(info), "%sAZUL", info);
  1713. else if(aux == 3) format(info, sizeof(info), "%sOPACIDADE", info);
  1714. format(info, sizeof(info), "%s você quer.\n", info);
  1715. format(info, sizeof(info), "%sO número tem que estar entre 0 e 255.", info);
  1716.  
  1717. pData[playerid][P_Aux] = aux; // Para saber de que cor ele é edição.
  1718. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "TextDraw cor"), info, "Aceitar", "Voltar");
  1719. return true;
  1720. }
  1721.  
  1722. case 16:
  1723. {
  1724. new info[256];
  1725. info = "Vermelho\nVerde\nAzul\nAmarelo\nRosa\nAzul Claro\nBranco\nPreto";
  1726. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "TextDraw cor"), info, "Aceitar", "Voltar");
  1727. return true;
  1728. }
  1729.  
  1730. case 17:
  1731. {
  1732. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "TextDraw fonte"), "Tipo de fonte 0\nTipo de fonte 1\nTipo de fonte 2\nTipo de fonte 3\nTipo de fonte 4\nTipo de fonte 5 (( TEXT_DRAW_FONT_MODEL_PREVIEW ))", "Aceitar", "Voltar");
  1733. return true;
  1734. }
  1735.  
  1736. case 18:
  1737. {
  1738. new info[256];
  1739. info = "Write exact size\n";
  1740. format(info, sizeof(info), "%sRedimensionar a TextDraw", info);
  1741. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "TextDraw tamanho da fonte"), info, "Aceitar", "Voltar");
  1742. return true;
  1743. }
  1744.  
  1745. case 19:
  1746. {
  1747. // aux is 0 for X, 1 for Y.
  1748. // aux2 is the type of error message. 0 for no error.
  1749. new info[256];
  1750. if(aux2 == 1) info = "ERRO: Você tem que escrever um número.\n\n";
  1751.  
  1752. format(info, sizeof(info), "%sEscreve um número exato ", info);
  1753. if(aux == 0) format(info, sizeof(info), "%sX", info);
  1754. else if(aux == 1) format(info, sizeof(info), "%sY", info);
  1755. format(info, sizeof(info), "%s comprimento das cartas de fonte.\n", info);
  1756.  
  1757. pData[playerid][P_Aux] = aux; // To know if he's editing X or Y.
  1758. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraws tamanho"), info, "Aceitar", "Voltar");
  1759. return true;
  1760. }
  1761. case 20:
  1762. {
  1763. new info[256];
  1764. if(tData[pData[playerid][P_CurrentTextdraw]][T_Outline] == 1) info = "Esboço Off";
  1765. else info = "Esboço On";
  1766. format(info, sizeof(info), "%s\nTamanho Sombra\nEsboço/Cor da Sombra\nTerminar edição esboço ...", info);
  1767. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraws esboço"), info, "Aceitar", "Voltar");
  1768. return true;
  1769. }
  1770.  
  1771. case 21:
  1772. {
  1773. new info[256];
  1774. info = "Esboço sombra 0\nEsboço sombra 1\nEsboço sombra 2\nEsboço sombra 3\nEsboço sombra 4\nEsboço sombra 5\nCustom...";
  1775. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's Esboço sombra"), info, "Aceitar", "Voltar");
  1776. return true;
  1777. }
  1778.  
  1779. case 22:
  1780. {
  1781. new info[256];
  1782. if(aux) info = "ERRO: Você escreveu um número inválido.\n\n";
  1783. format(info, sizeof(info), "%sEscrever um número que indica o tamanho da sombra;\n", info);
  1784. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's Esboço sombra"), info, "Aceitar", "Voltar");
  1785. return true;
  1786. }
  1787.  
  1788. case 23:
  1789. {
  1790. new info[256];
  1791. info = "Box On\nBox Off";
  1792. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's box"), info, "Aceitar", "Voltar");
  1793. return true;
  1794. }
  1795.  
  1796. case 24:
  1797. {
  1798. new info[256];
  1799. info = "Box Off\nBox Tamanho\nBox Cor";
  1800. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's box"), info, "Aceitar", "Voltar");
  1801. return true;
  1802. }
  1803.  
  1804. case 25:
  1805. {
  1806. new info[256];
  1807. info = "Modelo de exportação clássico filterscript Self-trabalho\nPlayerTextDraw";
  1808. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's Exportação"), info, "Aceitar", "Voltar");
  1809. return true;
  1810. }
  1811.  
  1812. case 26:
  1813. {
  1814. new info[512];
  1815. info = "FScript: Show TextDraw o tempo todo\nFScript: Show TextDraw na seleção de classe\nFScript: Show TextDraw enquanto em veículo\n\
  1816. FScript: Mostrar TextDraw com comando\nFScript: Mostrar todos os X quantidade de tempo\nFScript: Show depois de matar alguém";
  1817. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's exportação"), info, "Aceitar", "Voltar");
  1818. return true;
  1819. }
  1820.  
  1821. case 27:
  1822. {
  1823. new info[128];
  1824. info = "Escreva o comando que você quer mostrar o TextDraw\n";
  1825. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's exportação"), info, "Aceitar", "Voltar");
  1826. return true;
  1827. }
  1828.  
  1829. case 28:
  1830. {
  1831. new info[128];
  1832. info = "Quanto tempo (em segundos) que permanecerá na tela?\n";
  1833. format(info, sizeof(info), "%sEscreve 0 se você quiser esconder-lo digitando o comando novamente\n", info);
  1834. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's exportação"), info, "Aceitar", "Voltar");
  1835. return true;
  1836. }
  1837.  
  1838. case 29:
  1839. {
  1840. new info[128];
  1841. info = "Todo o tempo que você quer que os textdraws aparecer?\nEscrever um tempo em segundos:\n";
  1842. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's exportação"), info, "Aceitar", "Voltar");
  1843. return true;
  1844. }
  1845.  
  1846. case 30:
  1847. {
  1848. new info[128];
  1849. info = "Uma vez que ele aparece, por quanto tempo ele permanecerá na tela?\nEscrever um tempo em segundos:\n";
  1850. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's exportação"), info, "Aceitar", "Voltar");
  1851. return true;
  1852. }
  1853.  
  1854. case 31:
  1855. {
  1856. new info[128];
  1857. info = "Uma vez que ele aparece, por quanto tempo ele permanecerá na tela?\nEscrever um tempo em segundos:\n";
  1858. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's exportação"), info, "Aceitar", "Voltar");
  1859. return true;
  1860. }
  1861. case 32:
  1862. {
  1863. new info[1024];
  1864. format(info, sizeof(info), "Selecionável TextDraw. O selecionável atual é: %d\n",tData[pData[playerid][P_CurrentTextdraw]][T_Selectable]);
  1865.  
  1866. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_MSGBOX, CreateDialogTitle(playerid, "Textdraw's selectable"), info, "Select ON", "Select OFF");
  1867. return true;
  1868. }
  1869. case 33:
  1870. {
  1871. if(GetPVarInt(playerid, "Use2DTD") == 1)
  1872. {
  1873. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Opções de visualização TextDraw modelo"), "Índice Modelo\nRot X\nRot Y\nRot Z\nZoom", "Aceitar", "Cancel");
  1874. }
  1875. else if(!GetPVarInt(playerid, "Use2DTD"))
  1876. {
  1877. SendClientMessage(playerid, -1, "Selecione Fonte #5 para criar uma visualização de TextDraw");
  1878. ShowTextDrawDialog(playerid, 5);
  1879. }
  1880. return true;
  1881. }
  1882. case 34:
  1883. {
  1884. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Prévia do índice Modelo TextDraw"), "Insira Index Modelo: (( ObjectID ))", "Aceitar", "Cancel");
  1885. return true;
  1886. }
  1887. case 35:
  1888. {
  1889. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Prévia do índice Modelo TextDraw"), "Insira Index Modelo RX:", "Go", "Back");
  1890. return true;
  1891. }
  1892. case 36:
  1893. {
  1894. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Prévia do índice Modelo TextDraw"), "Insira Index Modelo RY:", "Go", "Back");
  1895. return true;
  1896. }
  1897. case 37:
  1898. {
  1899. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Prévia do índice Modelo TextDraw"), "Insira Index Modelo RZ:", "Go", "Back");
  1900. return true;
  1901. }
  1902. case 38:
  1903. {
  1904. ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Prévia do índice Modelo TextDraw"), "Insira Index Modelo Zoom:", "Go", "Back");
  1905. return true;
  1906. }
  1907. }
  1908. return false;
  1909. }
  1910.  
  1911. stock CreateDialogTitle( playerid, text[] )
  1912. {
  1913. /* Cria um título padrão para os diálogos.
  1914.         playerid: ID do jogador de receber seu título de diálogo gerada.
  1915. Text []: O texto a ser anexado ao título.
  1916. */
  1917. #pragma unused playerid
  1918.  
  1919. new string[128];
  1920. if(!strlen(CurrentProject) || !strcmp(CurrentProject, " "))
  1921. format(string, sizeof(string), "Zamaroth TextDraw Editor: %s", text);
  1922. else
  1923. format(string, sizeof(string), "%s - Zamaroth TextDraw Editor: %s", CurrentProject, text);
  1924. return string;
  1925. }
  1926.  
  1927. stock ResetPlayerVars( playerid )
  1928. {
  1929. /* Rredefine um jogador específico Informações pData.
  1930. playerid: ID do jogador para repor os dados de.
  1931. */
  1932.  
  1933. pData[playerid][P_Editing] = false;
  1934. strmid(CurrentProject, "", 0, 1, 128);
  1935. }
  1936.  
  1937. forward KeyEdit( playerid );
  1938. public KeyEdit( playerid )
  1939. {
  1940. /* Manipula a edição pelo teclado.
  1941. playerid: edição Player.
  1942. */
  1943. if(pData[playerid][P_KeyEdition] == EDIT_NONE) return 0;
  1944.  
  1945. new string[256]; // Buffer para todos os gametexts e outras mensagens.
  1946. new keys, updown, leftright;
  1947. GetPlayerKeys(playerid, keys, updown, leftright);
  1948.  
  1949. if(updown < 0) // Ele está pressionando para cima
  1950. {
  1951. switch(pData[playerid][P_KeyEdition])
  1952. {
  1953. case EDIT_POSITION:
  1954. {
  1955. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_Y] -= 10.0;
  1956. else tData[pData[playerid][P_CurrentTextdraw]][T_Y] -= 1.0;
  1957.  
  1958. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Posição: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  1959. tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
  1960. }
  1961.  
  1962. case EDIT_SIZE:
  1963. {
  1964. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_YSize] -= 1.0;
  1965. else tData[pData[playerid][P_CurrentTextdraw]][T_YSize] -= 0.1;
  1966.  
  1967. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  1968. tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
  1969. }
  1970.  
  1971. case EDIT_BOX:
  1972. {
  1973. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] -= 10.0;
  1974. else tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] -= 1.0;
  1975.  
  1976. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  1977. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
  1978. }
  1979. }
  1980. }
  1981. else if(updown > 0) // Ele está pressionando para baixo
  1982. {
  1983. switch(pData[playerid][P_KeyEdition])
  1984. {
  1985. case EDIT_POSITION:
  1986. {
  1987. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_Y] += 10.0;
  1988. else tData[pData[playerid][P_CurrentTextdraw]][T_Y] += 1.0;
  1989.  
  1990. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Posição: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  1991. tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
  1992. }
  1993.  
  1994. case EDIT_SIZE:
  1995. {
  1996. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_YSize] += 1.0;
  1997. else tData[pData[playerid][P_CurrentTextdraw]][T_YSize] += 0.1;
  1998.  
  1999. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2000. tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
  2001. }
  2002.  
  2003. case EDIT_BOX:
  2004. {
  2005. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] += 10.0;
  2006. else tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] += 1.0;
  2007.  
  2008. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2009. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
  2010. }
  2011. }
  2012. }
  2013.  
  2014. if(leftright < 0) // Ele está pressionando esquerda
  2015. {
  2016. switch(pData[playerid][P_KeyEdition])
  2017. {
  2018. case EDIT_POSITION:
  2019. {
  2020. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_X] -= 10.0;
  2021. else tData[pData[playerid][P_CurrentTextdraw]][T_X] -= 1.0;
  2022.  
  2023. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Position: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2024. tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
  2025. }
  2026.  
  2027. case EDIT_SIZE:
  2028. {
  2029. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_XSize] -= 0.1;
  2030. else tData[pData[playerid][P_CurrentTextdraw]][T_XSize] -= 0.01;
  2031.  
  2032. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2033. tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
  2034. }
  2035.  
  2036. case EDIT_BOX:
  2037. {
  2038. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] -= 10.0;
  2039. else tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] -= 1.0;
  2040.  
  2041. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2042. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
  2043. }
  2044. }
  2045. }
  2046. else if(leftright > 0) // Ele está pressionando direita
  2047. {
  2048. switch(pData[playerid][P_KeyEdition])
  2049. {
  2050. case EDIT_POSITION:
  2051. {
  2052. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_X] += 10.0;
  2053. else tData[pData[playerid][P_CurrentTextdraw]][T_X] += 1.0;
  2054.  
  2055. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Posição: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2056. tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
  2057. }
  2058.  
  2059. case EDIT_SIZE:
  2060. {
  2061. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_XSize] += 0.1;
  2062. else tData[pData[playerid][P_CurrentTextdraw]][T_XSize] += 0.01;
  2063.  
  2064. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2065. tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
  2066. }
  2067.  
  2068. case EDIT_BOX:
  2069. {
  2070. if(keys == KEY_SPRINT) tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] += 10.0;
  2071. else tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] += 1.0;
  2072.  
  2073. format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~~h~Tamanho ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
  2074. tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
  2075. }
  2076. }
  2077. }
  2078.  
  2079. GameTextForPlayer(playerid, string, 999999999, 3);
  2080. UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
  2081. if(pData[playerid][P_KeyEdition] == EDIT_POSITION)
  2082. {
  2083. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_X");
  2084. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Y");
  2085. }
  2086. else if(pData[playerid][P_KeyEdition] == EDIT_SIZE)
  2087. {
  2088. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_XSize");
  2089. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_YSize");
  2090. }
  2091. else if(pData[playerid][P_KeyEdition] == EDIT_BOX)
  2092. {
  2093. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeX");
  2094. SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeY");
  2095. }
  2096. SetTimerEx("KeyEdit", 200, 0, "i", playerid);
  2097. return 1;
  2098. }
  2099.  
  2100. public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
  2101. {
  2102. if(pData[playerid][P_KeyEdition] != EDIT_NONE && newkeys == KEY_SECONDARY_ATTACK)
  2103. {
  2104. GameTextForPlayer(playerid, " ", 100, 3);
  2105. TogglePlayerControllable(playerid, 1);
  2106.  
  2107. new string[128];
  2108. switch(pData[playerid][P_KeyEdition])
  2109. {
  2110. case EDIT_POSITION:
  2111. {
  2112. format(string, sizeof(string), "Textdraw #%d movida com sucesso.", pData[playerid][P_CurrentTextdraw]);
  2113. }
  2114. case EDIT_SIZE:
  2115. {
  2116. format(string, sizeof(string), "Textdraw #%d redimensionada com êxito.", pData[playerid][P_CurrentTextdraw]);
  2117. }
  2118. case EDIT_BOX:
  2119. {
  2120. format(string, sizeof(string), "Textdraw #%d's caixa redimensionada com êxito.", pData[playerid][P_CurrentTextdraw]);
  2121. }
  2122. }
  2123.  
  2124. if(pData[playerid][P_KeyEdition] == EDIT_BOX) SetTimerEx("ShowTextDrawDialogEx", 500, 0, "ii", playerid, 24);
  2125. else SetTimerEx("ShowTextDrawDialogEx", 500, 0, "ii", playerid, 5);
  2126. SendClientMessage(playerid, MSG_COLOR, string);
  2127. pData[playerid][P_KeyEdition] = EDIT_NONE;
  2128. }
  2129. return 1;
  2130. }
  2131.  
  2132. stock CreateNewProject( name[] )
  2133. {
  2134. /* Cria um novo arquivo de projeto .tde.
  2135. name []: Nome para ser usado no nome do ficheiro.
  2136. */
  2137.  
  2138. new string[128], File:File;
  2139.  
  2140. // Adicioná-lo à lista.
  2141. format(string, sizeof(string), "%s\r\n", name);
  2142. File = fopen("tdlist.lst", io_append);
  2143. fwrite(File, string);
  2144. fclose(File);
  2145.  
  2146. // Crie o arquivo padrão.
  2147. File = fopen(name, io_write);
  2148. fwrite(File, "TDFile=yes");
  2149. fclose(File);
  2150. }
  2151.  
  2152. stock ClearTextdraw( tdid )
  2153. {
  2154. /* Redefine as variáveis ??de um TextDraw e destrói.
  2155. tdid: TextDraw ID
  2156. */
  2157. TextDrawHideForAll(tData[tdid][T_Handler]);
  2158. tData[tdid][T_Created] = false;
  2159. strmid(tData[tdid][T_Text], "", 0, 1, 2);
  2160. tData[tdid][T_X] = 0.0;
  2161. tData[tdid][T_Y] = 0.0;
  2162. tData[tdid][T_Alignment] = 0;
  2163. tData[tdid][T_BackColor] = 0;
  2164. tData[tdid][T_UseBox] = 0;
  2165. tData[tdid][T_BoxColor] = 0;
  2166. tData[tdid][T_TextSizeX] = 0.0;
  2167. tData[tdid][T_TextSizeY] = 0.0;
  2168. tData[tdid][T_Color] = 0;
  2169. tData[tdid][T_Font] = 0;
  2170. tData[tdid][T_XSize] = 0.0;
  2171. tData[tdid][T_YSize] = 0.0;
  2172. tData[tdid][T_Outline] = 0;
  2173. tData[tdid][T_Proportional] = 0;
  2174. tData[tdid][T_Shadow] = 0;
  2175. tData[tdid][T_Selectable] = 0;
  2176. tData[tdid][T_PreviewModel] = -1;
  2177. tData[tdid][PMZoom] = 0;
  2178. tData[tdid][PMRotX] = 0;
  2179. tData[tdid][PMRotY] = 0.0;
  2180. tData[tdid][PMRotZ] = 0;
  2181. }
  2182.  
  2183. stock CreateDefaultTextdraw( tdid, save = 1 )
  2184. {
  2185. /* Cria um novo TextDraw com as configurações padrão.
  2186. tdid: TextDraw ID
  2187. */
  2188. tData[tdid][T_Created] = true;
  2189. format(tData[tdid][T_Text], 1024, "Nova Textdraw", 1);
  2190. tData[tdid][T_X] = 250.0;
  2191. tData[tdid][T_Y] = 10.0;
  2192. tData[tdid][T_Alignment] = 0;
  2193. tData[tdid][T_BackColor] = RGB(0, 0, 0, 255);
  2194. tData[tdid][T_UseBox] = 0;
  2195. tData[tdid][T_BoxColor] = RGB(0, 0, 0, 255);
  2196. tData[tdid][T_TextSizeX] = 0.0;
  2197. tData[tdid][T_TextSizeY] = 0.0;
  2198. tData[tdid][T_Color] = RGB(255, 255, 255, 255);
  2199. tData[tdid][T_Font] = 1;
  2200. tData[tdid][T_XSize] = 0.5;
  2201. tData[tdid][T_YSize] = 1.0;
  2202. tData[tdid][T_Outline] = 0;
  2203. tData[tdid][T_Proportional] = 1;
  2204. tData[tdid][T_Shadow] = 1;
  2205. tData[tdid][T_Selectable] = 0;
  2206. tData[tdid][T_PreviewModel] = -1;
  2207. tData[tdid][PMZoom] = 1.0;
  2208. tData[tdid][PMRotX] = -16.0;
  2209. tData[tdid][PMRotY] = 0.0;
  2210. tData[tdid][PMRotZ] = -55.0;
  2211.  
  2212. UpdateTextdraw(tdid);
  2213. if(save) SaveTDData(tdid, "T_Created");
  2214. }
  2215.  
  2216. stock DuplicateTextdraw( source, to )
  2217. {
  2218. /* Duplica uma TextDraw de outro. Atualiza o novo.
  2219. source: Onde copiar o TextDraw partir.
  2220. Ao: Onde copiar o TextDraw para.
  2221. */
  2222. tData[to][T_Created] = tData[source][T_Created];
  2223. format(tData[to][T_Text], 1024, "%s", tData[source][T_Text]);
  2224. tData[to][T_X] = tData[source][T_X];
  2225. tData[to][T_Y] = tData[source][T_Y];
  2226. tData[to][T_Alignment] = tData[source][T_Alignment];
  2227. tData[to][T_BackColor] = tData[source][T_BackColor];
  2228. tData[to][T_UseBox] = tData[source][T_UseBox];
  2229. tData[to][T_BoxColor] = tData[source][T_BoxColor];
  2230. tData[to][T_TextSizeX] = tData[source][T_TextSizeX];
  2231. tData[to][T_TextSizeY] = tData[source][T_TextSizeY];
  2232. tData[to][T_Color] = tData[source][T_Color];
  2233. tData[to][T_Font] = tData[source][T_Font];
  2234. tData[to][T_XSize] = tData[source][T_XSize];
  2235. tData[to][T_YSize] = tData[source][T_YSize];
  2236. tData[to][T_Outline] = tData[source][T_Outline];
  2237. tData[to][T_Proportional] = tData[source][T_Proportional];
  2238. tData[to][T_Shadow] = tData[source][T_Shadow];
  2239. tData[to][T_Selectable] = tData[source][T_Selectable];
  2240. tData[to][T_PreviewModel] = tData[source][T_PreviewModel];
  2241. tData[to][PMRotX] = tData[source][PMRotX];
  2242. tData[to][PMRotY] = tData[source][PMRotY];
  2243. tData[to][PMRotZ] = tData[source][PMRotZ];
  2244. tData[to][PMZoom] = tData[source][PMZoom];
  2245.  
  2246. UpdateTextdraw(to);
  2247. SaveTDData(to, "T_Criado");
  2248. SaveTDData(to, "T_Texto");
  2249. SaveTDData(to, "T_X");
  2250. SaveTDData(to, "T_Y");
  2251. SaveTDData(to, "T_Alinhamento");
  2252. SaveTDData(to, "T_VoltarCor");
  2253. SaveTDData(to, "T_UseCaixa");
  2254. SaveTDData(to, "T_CaixaCor");
  2255. SaveTDData(to, "T_TamanhoTextoX");
  2256. SaveTDData(to, "T_TamanhoTextoY");
  2257. SaveTDData(to, "T_Cor");
  2258. SaveTDData(to, "T_Fonte");
  2259. SaveTDData(to, "T_XTamanho");
  2260. SaveTDData(to, "T_YTamanho");
  2261. SaveTDData(to, "T_Escoco");
  2262. SaveTDData(to, "T_Proporcional");
  2263. SaveTDData(to, "T_Sombra");
  2264. SaveTDData(to, "T_Selecionavel");
  2265. SaveTDData(to, "T_VisualizarModelo");
  2266. SaveTDData(to, "PMRotX");
  2267. SaveTDData(to, "PMRotY");
  2268. SaveTDData(to, "PMRotZ");
  2269. SaveTDData(to, "PMZoom");
  2270. }
  2271.  
  2272. stock UpdateTextdraw( tdid )
  2273. {
  2274. if(!tData[tdid][T_Created]) return false;
  2275. TextDrawHideForAll(tData[tdid][T_Handler]);
  2276. TextDrawDestroy(tData[tdid][T_Handler]);
  2277.  
  2278. // Recreate it
  2279. tData[tdid][T_Handler] = TextDrawCreate(tData[tdid][T_X], tData[tdid][T_Y], tData[tdid][T_Text]);
  2280. TextDrawAlignment(tData[tdid][T_Handler], tData[tdid][T_Alignment]);
  2281. TextDrawBackgroundColor(tData[tdid][T_Handler], tData[tdid][T_BackColor]);
  2282. TextDrawColor(tData[tdid][T_Handler], tData[tdid][T_Color]);
  2283. TextDrawFont(tData[tdid][T_Handler], tData[tdid][T_Font]);
  2284. TextDrawLetterSize(tData[tdid][T_Handler], tData[tdid][T_XSize], tData[tdid][T_YSize]);
  2285. TextDrawSetOutline(tData[tdid][T_Handler], tData[tdid][T_Outline]);
  2286. TextDrawSetProportional(tData[tdid][T_Handler], tData[tdid][T_Proportional]);
  2287. TextDrawSetShadow(tData[tdid][T_Handler], tData[tdid][T_Shadow]);
  2288. TextDrawSetSelectable(tData[tdid][T_Handler], tData[tdid][T_Selectable]);
  2289. if(tData[tdid][T_PreviewModel] > -1)
  2290. {
  2291. TextDrawSetPreviewModel(tData[tdid][T_Handler], tData[tdid][T_PreviewModel]);
  2292. TextDrawSetPreviewRot(tData[tdid][T_Handler], tData[tdid][PMRotX], tData[tdid][PMRotY], tData[tdid][PMRotZ], tData[tdid][PMZoom]);
  2293. }
  2294. if(tData[tdid][T_UseBox])
  2295. {
  2296. TextDrawUseBox(tData[tdid][T_Handler], tData[tdid][T_UseBox]);
  2297. TextDrawBoxColor(tData[tdid][T_Handler], tData[tdid][T_BoxColor]);
  2298. TextDrawTextSize(tData[tdid][T_Handler], tData[tdid][T_TextSizeX], tData[tdid][T_TextSizeY]);
  2299. }
  2300. TextDrawShowForAll(tData[tdid][T_Handler]);
  2301. return true;
  2302. }
  2303.  
  2304. stock DeleteTDFromFile( tdid )
  2305. {
  2306. /* Exclui um TextDraw específica de seu arquivo .tde
  2307. tdid: TextDraw ID.
  2308. */
  2309. new string[128], filename[135];
  2310. format(filename, sizeof(filename), "%s.tde", CurrentProject);
  2311.  
  2312. format(string, sizeof(string), "%dT_Criado", tdid);
  2313. dini_Unset(filename, string);
  2314. format(string, sizeof(string), "%dT_Texto", tdid);
  2315. dini_Unset(filename, string);
  2316. format(string, sizeof(string), "%dT_X", tdid);
  2317. dini_Unset(filename, string);
  2318. format(string, sizeof(string), "%dT_Y", tdid);
  2319. dini_Unset(filename, string);
  2320. format(string, sizeof(string), "%dT_Alinhamento", tdid);
  2321. dini_Unset(filename, string);
  2322. format(string, sizeof(string), "%dT_VoltarCor", tdid);
  2323. dini_Unset(filename, string);
  2324. format(string, sizeof(string), "%dT_UseCaixa", tdid);
  2325. dini_Unset(filename, string);
  2326. format(string, sizeof(string), "%dT_CaixaCor", tdid);
  2327. dini_Unset(filename, string);
  2328. format(string, sizeof(string), "%dT_TamanhoTextoX", tdid);
  2329. dini_Unset(filename, string);
  2330. format(string, sizeof(string), "%dT_TamanhoTextoY", tdid);
  2331. dini_Unset(filename, string);
  2332. format(string, sizeof(string), "%dT_Cor", tdid);
  2333. dini_Unset(filename, string);
  2334. format(string, sizeof(string), "%dT_Fonte", tdid);
  2335. dini_Unset(filename, string);
  2336. format(string, sizeof(string), "%dT_XTamanho", tdid);
  2337. dini_Unset(filename, string);
  2338. format(string, sizeof(string), "%dT_YTamanho", tdid);
  2339. dini_Unset(filename, string);
  2340. format(string, sizeof(string), "%dT_Esboco", tdid);
  2341. dini_Unset(filename, string);
  2342. format(string, sizeof(string), "%dT_Proportional", tdid);
  2343. dini_Unset(filename, string);
  2344. format(string, sizeof(string), "%dT_Sombra", tdid);
  2345. dini_Unset(filename, string);
  2346. format(string, sizeof(string), "%dT_Selecionavel", tdid);
  2347. dini_Unset(filename, string);
  2348. format(string, sizeof(string), "%dT_VisualizarModelo", tdid);
  2349. dini_Unset(filename, string);
  2350. format(string, sizeof(string), "%dPMRotX", tdid);
  2351. dini_Unset(filename, string);
  2352. format(string, sizeof(string), "%dPMRotY", tdid);
  2353. dini_Unset(filename, string);
  2354. format(string, sizeof(string), "%dPMRotZ", tdid);
  2355. dini_Unset(filename, string);
  2356. format(string, sizeof(string), "%dPMZoom", tdid);
  2357. dini_Unset(filename, string);
  2358. }
  2359.  
  2360. stock SaveTDData( tdid, data[] )
  2361. {
  2362. /* Salva de dados específica de um TextDraw específica para projetar arquivo.
  2363. tdid: TextDraw ID.
  2364. Data []: Os dados a serem salvos.
  2365. */
  2366. new string[128], filename[135];
  2367. format(string, sizeof(string), "%d%s", tdid, data);
  2368. format(filename, sizeof(filename), "%s.tde", CurrentProject);
  2369.  
  2370. if(!strcmp("T_Criado", data))
  2371. dini_IntSet(filename, string, 1);
  2372. else if(!strcmp("T_Texto", data))
  2373. dini_Set(filename, string, tData[tdid][T_Text]);
  2374. else if(!strcmp("T_X", data))
  2375. dini_FloatSet(filename, string, tData[tdid][T_X]);
  2376. else if(!strcmp("T_Y", data))
  2377. dini_FloatSet(filename, string, tData[tdid][T_Y]);
  2378. else if(!strcmp("T_Alinhamento", data))
  2379. dini_IntSet(filename, string, tData[tdid][T_Alignment]);
  2380. else if(!strcmp("T_VoltarCor", data))
  2381. dini_IntSet(filename, string, tData[tdid][T_BackColor]);
  2382. else if(!strcmp("T_UseCaixa", data))
  2383. dini_IntSet(filename, string, tData[tdid][T_UseBox]);
  2384. else if(!strcmp("T_CaixaCor", data))
  2385. dini_IntSet(filename, string, tData[tdid][T_BoxColor]);
  2386. else if(!strcmp("T_TamanhoTextoX", data))
  2387. dini_FloatSet(filename, string, tData[tdid][T_TextSizeX]);
  2388. else if(!strcmp("T_TamanhoTextoY", data))
  2389. dini_FloatSet(filename, string, tData[tdid][T_TextSizeY]);
  2390. else if(!strcmp("T_Cor", data))
  2391. dini_IntSet(filename, string, tData[tdid][T_Color]);
  2392. else if(!strcmp("T_Fonte", data))
  2393. dini_IntSet(filename, string, tData[tdid][T_Font]);
  2394. else if(!strcmp("T_XTamanho", data))
  2395. dini_FloatSet(filename, string, tData[tdid][T_XSize]);
  2396. else if(!strcmp("T_YTamanho", data))
  2397. dini_FloatSet(filename, string, tData[tdid][T_YSize]);
  2398. else if(!strcmp("T_Esboco", data))
  2399. dini_IntSet(filename, string, tData[tdid][T_Outline]);
  2400. else if(!strcmp("T_Proporcional", data))
  2401. dini_IntSet(filename, string, tData[tdid][T_Proportional]);
  2402. else if(!strcmp("T_Sombra", data))
  2403. dini_IntSet(filename, string, tData[tdid][T_Shadow]);
  2404. else if(!strcmp("T_Selecionavel", data))
  2405. dini_IntSet(filename, string, tData[tdid][T_Selectable]);
  2406. else if(!strcmp("T_VisualizarModelo", data))
  2407. dini_IntSet(filename, string, tData[tdid][T_PreviewModel]);
  2408. else if(!strcmp("PMRotX", data))
  2409. dini_FloatSet(filename, string, tData[tdid][PMRotX]);
  2410. else if(!strcmp("PMRotY", data))
  2411. dini_FloatSet(filename, string, tData[tdid][PMRotY]);
  2412. else if(!strcmp("PMRotZ", data))
  2413. dini_FloatSet(filename, string, tData[tdid][PMRotZ]);
  2414. else if(!strcmp("PMZoom", data))
  2415. dini_FloatSet(filename, string, tData[tdid][PMZoom]);
  2416. else
  2417. SendClientMessageToAll(MSG_COLOR, "Incorrect data parsed, textdraw autosave failed");
  2418. }
  2419.  
  2420. stock LoadProject( playerid, filename[] )
  2421. {
  2422. /* Carrega um projeto para a edição.
  2423. FileName []: Nome do arquivo onde o projeto é salvo no momento
  2424. */
  2425. new string[128];
  2426. if(!dini_Isset(filename, "TDFile"))
  2427. {
  2428. SendClientMessage(playerid, MSG_COLOR, "Arquivo TextDraw inválido.");
  2429. ShowTextDrawDialog(playerid, 0);
  2430. }
  2431. else
  2432. {
  2433. for(new i; i < MAX_TEXTDRAWS; i ++)
  2434. {
  2435. format(string, sizeof(string), "%dT_Criado", i);
  2436. if(dini_Isset(filename, string))
  2437. {
  2438. CreateDefaultTextdraw(i, 0); // Criar, mas não salve.
  2439.  
  2440. format(string, sizeof(string), "%dT_Texto", i);
  2441. if(dini_Isset(filename, string))
  2442. format(tData[i][T_Text], 1536, "%s", dini_Get(filename, string));
  2443.  
  2444. format(string, sizeof(string), "%dT_X", i);
  2445. if(dini_Isset(filename, string))
  2446. tData[i][T_X] = dini_Float(filename, string);
  2447.  
  2448. format(string, sizeof(string), "%dT_Y", i);
  2449. if(dini_Isset(filename, string))
  2450. tData[i][T_Y] = dini_Float(filename, string);
  2451.  
  2452. format(string, sizeof(string), "%dT_Alinhamento", i);
  2453. if(dini_Isset(filename, string))
  2454. tData[i][T_Alignment] = dini_Int(filename, string);
  2455.  
  2456. format(string, sizeof(string), "%dT_VoltarCor", i);
  2457. if(dini_Isset(filename, string))
  2458. tData[i][T_BackColor] = dini_Int(filename, string);
  2459.  
  2460. format(string, sizeof(string), "%dT_UseCaixa", i);
  2461. if(dini_Isset(filename, string))
  2462. tData[i][T_UseBox] = dini_Int(filename, string);
  2463.  
  2464. format(string, sizeof(string), "%dT_CaixaCor", i);
  2465. if(dini_Isset(filename, string))
  2466. tData[i][T_BoxColor] = dini_Int(filename, string);
  2467.  
  2468. format(string, sizeof(string), "%dT_TamanhoTextoX", i);
  2469. if(dini_Isset(filename, string))
  2470. tData[i][T_TextSizeX] = dini_Float(filename, string);
  2471.  
  2472. format(string, sizeof(string), "%dT_TamanhoTextoY", i);
  2473. if(dini_Isset(filename, string))
  2474. tData[i][T_TextSizeY] = dini_Float(filename, string);
  2475.  
  2476. format(string, sizeof(string), "%dT_Cor", i);
  2477. if(dini_Isset(filename, string))
  2478. tData[i][T_Color] = dini_Int(filename, string);
  2479.  
  2480. format(string, sizeof(string), "%dT_Fonte", i);
  2481. if(dini_Isset(filename, string))
  2482. tData[i][T_Font] = dini_Int(filename, string);
  2483.  
  2484. format(string, sizeof(string), "%dT_XTamanho", i);
  2485. if(dini_Isset(filename, string))
  2486. tData[i][T_XSize] = dini_Float(filename, string);
  2487.  
  2488. format(string, sizeof(string), "%dT_YTamanho", i);
  2489. if(dini_Isset(filename, string))
  2490. tData[i][T_YSize] = dini_Float(filename, string);
  2491.  
  2492. format(string, sizeof(string), "%dT_Esboco", i);
  2493. if(dini_Isset(filename, string))
  2494. tData[i][T_Outline] = dini_Int(filename, string);
  2495.  
  2496. format(string, sizeof(string), "%dT_Proporcional", i);
  2497. if(dini_Isset(filename, string))
  2498. tData[i][T_Proportional] = dini_Int(filename, string);
  2499.  
  2500. format(string, sizeof(string), "%dT_Sombra", i);
  2501. if(dini_Isset(filename, string))
  2502. tData[i][T_Shadow] = dini_Int(filename, string);
  2503.  
  2504. format(string, sizeof(string), "%dT_Selecionavel", i);
  2505. if(dini_Isset(filename, string))
  2506. tData[i][T_Selectable] = dini_Int(filename, string);
  2507.  
  2508. format(string, sizeof(string), "%dT_VisualizarModelo", i);
  2509. if(dini_Isset(filename, string))
  2510. tData[i][T_PreviewModel] = dini_Int(filename, string);
  2511.  
  2512. format(string, sizeof(string), "%dPMRotX", i);
  2513. if(dini_Isset(filename, string))
  2514. tData[i][PMRotX] = dini_Float(filename, string);
  2515.  
  2516. format(string, sizeof(string), "%dPMRotY", i);
  2517. if(dini_Isset(filename, string))
  2518. tData[i][PMRotY] = dini_Float(filename, string);
  2519.  
  2520. format(string, sizeof(string), "%dPMRotZ", i);
  2521. if(dini_Isset(filename, string))
  2522. tData[i][PMRotZ] = dini_Float(filename, string);
  2523.  
  2524. format(string, sizeof(string), "%dPMZoom", i);
  2525. if(dini_Isset(filename, string))
  2526. tData[i][PMZoom] = dini_Float(filename, string);
  2527.  
  2528. UpdateTextdraw(i);
  2529. }
  2530. }
  2531. strmid(CurrentProject, filename, 0, strlen(filename) - 4, 128);
  2532. ShowTextDrawDialog(playerid, 4);
  2533. }
  2534. }
  2535.  
  2536. stock ExportProject( playerid, type )
  2537. {
  2538. /* Exportações de um projeto.
  2539. playerid: ID do jogador exportar o projeto.
  2540. type: Tipo de exportação solicitado:
  2541. - Tipo 0: Tipo exportação clássico
  2542. */
  2543. SendClientMessage(playerid, MSG_COLOR, "O projeto agora está sendo importado, por favor aguarde ...");
  2544.  
  2545. new filename[135], tmpstring[1152];
  2546. if(type == 0) format(filename, sizeof(filename), "%s.txt", CurrentProject);
  2547. else if(type == 7) format(filename, sizeof(filename), "%s.txt", CurrentProject);
  2548. else format(filename, sizeof(filename), "%s.pwn", CurrentProject);
  2549. new File:File = fopen(filename, io_write);
  2550. switch(type)
  2551. {
  2552. case 0: // Exportação Classic.
  2553. {
  2554. fwrite(File, "// TextDraw desenvolvido utilizando Zamaroth TextDraw Editor 1.0\r\n\r\n");
  2555. fwrite(File, "// Em cima do script::\r\n");
  2556. for(new i; i < MAX_TEXTDRAWS; i++)
  2557. {
  2558. if(tData[i][T_Created])
  2559. {
  2560. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  2561. fwrite(File, tmpstring);
  2562. }
  2563. }
  2564. fwrite(File, "\r\n// Em OnGameModeInit preferência, passamos a criar nossos textdraws:\r\n");
  2565. for(new i; i < MAX_TEXTDRAWS; i++)
  2566. {
  2567. if(tData[i][T_Created])
  2568. {
  2569. format(tmpstring, sizeof(tmpstring), "Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  2570. fwrite(File, tmpstring);
  2571. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  2572. {
  2573. format(tmpstring, sizeof(tmpstring), "TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  2574. fwrite(File, tmpstring);
  2575. }
  2576. format(tmpstring, sizeof(tmpstring), "TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  2577. fwrite(File, tmpstring);
  2578. format(tmpstring, sizeof(tmpstring), "TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  2579. fwrite(File, tmpstring);
  2580. format(tmpstring, sizeof(tmpstring), "TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  2581. fwrite(File, tmpstring);
  2582. format(tmpstring, sizeof(tmpstring), "TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  2583. fwrite(File, tmpstring);
  2584. format(tmpstring, sizeof(tmpstring), "TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  2585. fwrite(File, tmpstring);
  2586. format(tmpstring, sizeof(tmpstring), "TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  2587. fwrite(File, tmpstring);
  2588. if(tData[i][T_Outline] == 0)
  2589. {
  2590. format(tmpstring, sizeof(tmpstring), "TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  2591. fwrite(File, tmpstring);
  2592. }
  2593. if(tData[i][T_UseBox] == 1)
  2594. {
  2595. format(tmpstring, sizeof(tmpstring), "TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  2596. fwrite(File, tmpstring);
  2597. format(tmpstring, sizeof(tmpstring), "TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  2598. fwrite(File, tmpstring);
  2599. format(tmpstring, sizeof(tmpstring), "TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  2600. fwrite(File, tmpstring);
  2601. }
  2602. if(tData[i][T_PreviewModel] > -1)
  2603. {
  2604. format(tmpstring, sizeof(tmpstring), "TextDrawSetPreviewModel(Textdraw%d, %d);\r\n", i, tData[i][T_PreviewModel]);
  2605. fwrite(File, tmpstring);
  2606. format(tmpstring, sizeof(tmpstring), "TextDrawSetPreviewRot(Textdraw%d, %f, %f, %f, %f);\r\n", i, tData[i][PMRotX], tData[i][PMRotY], tData[i][PMRotZ], tData[i][PMZoom]);
  2607. fwrite(File, tmpstring);
  2608. }
  2609. format(tmpstring, sizeof(tmpstring), "TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  2610. fwrite(File, tmpstring);
  2611. fwrite(File, "\r\n");
  2612. }
  2613. }
  2614. fwrite(File, "// Agora você pode usar TextDrawShowForPlayer (-ForAll), TextDrawShowForPlayer (-ForAll) e\r\n");
  2615. fwrite(File, "// TextDraw Destrua funções para exibir, ocultar e destruir o TextDraw.");
  2616.  
  2617. format(tmpstring, sizeof(tmpstring), "Projeto para exportação %s.text em arquivos de script do diretório.", CurrentProject);
  2618. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  2619. }
  2620. case 1: // Mostrar o tempo todo
  2621. {
  2622. fwrite(File, "/*\r\n");
  2623. fwrite(File, "Filterscript gerado usando Zamaroth TextDraw Editor Version 1.0 (atual v3.1).\r\n");
  2624. fwrite(File, "Projetado para SA-MP 0.3z.\r\n\r\n");
  2625. new ye,mo,da,ho,mi,se;
  2626. getdate(ye,mo,da);
  2627. gettime(ho,mi,se);
  2628. format(tmpstring, sizeof(tmpstring), "Data e Hora: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
  2629. fwrite(File, tmpstring);
  2630. fwrite(File, "Instruções:\r\n");
  2631. fwrite(File, "1- Compilar este arquivo usando o compilador fornecido com o pacote do servidor sa-mp.\r\n");
  2632. fwrite(File, "2- Copie o arquivo para o diretório .amx filterscripts.\r\n");
  2633. fwrite(File, "3- Adicione os filterscripts no arquivo server.cfg (mais informações aqui:\r\n");
  2634. fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg\r\n");
  2635. fwrite(File, "4- Execute o servidor!\r\n\r\n");
  2636. fwrite(File, "Disclaimer:\r\n");
  2637. fwrite(File, "Você tem direitos totais sobre este arquivo. Você pode distribuí-lo, modificá-lo e\r\n");
  2638. fwrite(File, "mudá-lo tanto quanto você quiser, sem ter que dar todos os créditos especiais.\r\n");
  2639. fwrite(File, "*/\r\n\r\n");
  2640. fwrite(File, "#include <a_samp>\r\n\r\n");
  2641. for(new i; i < MAX_TEXTDRAWS; i++)
  2642. {
  2643. if(tData[i][T_Created])
  2644. {
  2645. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  2646. fwrite(File, tmpstring);
  2647. }
  2648. }
  2649. fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
  2650. fwrite(File, "{\r\n");
  2651. fwrite(File, " print(\"TextDraw arquivo gerada pela\");\r\n");
  2652. fwrite(File, " print(\" Editor Zamaroth TextDraw foi carregado.\");\r\n\r\n");
  2653. fwrite(File, " // Crie os textdraws:\r\n");
  2654. for(new i; i < MAX_TEXTDRAWS; i++)
  2655. {
  2656. if(tData[i][T_Created])
  2657. {
  2658. format(tmpstring, sizeof(tmpstring), " Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  2659. fwrite(File, tmpstring);
  2660. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  2661. {
  2662. format(tmpstring, sizeof(tmpstring), " TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  2663. fwrite(File, tmpstring);
  2664. }
  2665. format(tmpstring, sizeof(tmpstring), " TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  2666. fwrite(File, tmpstring);
  2667. format(tmpstring, sizeof(tmpstring), " TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  2668. fwrite(File, tmpstring);
  2669. format(tmpstring, sizeof(tmpstring), " TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  2670. fwrite(File, tmpstring);
  2671. format(tmpstring, sizeof(tmpstring), " TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  2672. fwrite(File, tmpstring);
  2673. format(tmpstring, sizeof(tmpstring), " TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  2674. fwrite(File, tmpstring);
  2675. format(tmpstring, sizeof(tmpstring), " TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  2676. fwrite(File, tmpstring);
  2677. if(tData[i][T_Outline] == 0)
  2678. {
  2679. format(tmpstring, sizeof(tmpstring), " TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  2680. fwrite(File, tmpstring);
  2681. }
  2682. if(tData[i][T_UseBox] == 1)
  2683. {
  2684. format(tmpstring, sizeof(tmpstring), " TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  2685. fwrite(File, tmpstring);
  2686. format(tmpstring, sizeof(tmpstring), " TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  2687. fwrite(File, tmpstring);
  2688. format(tmpstring, sizeof(tmpstring), " TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  2689. fwrite(File, tmpstring);
  2690. }
  2691. format(tmpstring, sizeof(tmpstring), " TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  2692. fwrite(File, tmpstring);
  2693. fwrite(File, "\r\n");
  2694. }
  2695. }
  2696. fwrite(File, " for(new i; i < MAX_PLAYERS; i ++)\r\n");
  2697. fwrite(File, " {\r\n");
  2698. fwrite(File, " if(IsPlayerConnected(i))\r\n");
  2699. fwrite(File, " {\r\n");
  2700. for(new i; i < MAX_TEXTDRAWS; i ++)
  2701. {
  2702. if(tData[i][T_Created])
  2703. {
  2704. format(tmpstring, sizeof(tmpstring), " TextDrawShowForPlayer(i, Textdraw%d);\r\n", i);
  2705. fwrite(File, tmpstring);
  2706. }
  2707. }
  2708. fwrite(File, " }\r\n");
  2709. fwrite(File, " }\r\n");
  2710. fwrite(File, " return 1;\r\n");
  2711. fwrite(File, "}\r\n\r\n");
  2712. fwrite(File, "public OnFilterScriptExit()\r\n");
  2713. fwrite(File, "{\r\n");
  2714. for(new i; i < MAX_TEXTDRAWS; i ++)
  2715. {
  2716. if(tData[i][T_Created])
  2717. {
  2718. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  2719. fwrite(File, tmpstring);
  2720. format(tmpstring, sizeof(tmpstring), " TextDrawDestroy(Textdraw%d);\r\n", i);
  2721. fwrite(File, tmpstring);
  2722. }
  2723. }
  2724. fwrite(File, " return 1;\r\n");
  2725. fwrite(File, "}\r\n\r\n");
  2726. fwrite(File, "public OnPlayerConnect(playerid)\r\n");
  2727. fwrite(File, "{\r\n");
  2728. for(new i; i < MAX_TEXTDRAWS; i ++)
  2729. {
  2730. if(tData[i][T_Created])
  2731. {
  2732. format(tmpstring, sizeof(tmpstring), " TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
  2733. fwrite(File, tmpstring);
  2734. }
  2735. }
  2736. fwrite(File, " return 1;\r\n");
  2737. fwrite(File, "}\r\n");
  2738.  
  2739. format(tmpstring, sizeof(tmpstring), "Projeto para exportação %s.pen em arquivos de script de diretório como um filterscript.", CurrentProject);
  2740. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  2741. }
  2742.  
  2743. case 2: // Mostrar no seleção de classe
  2744. {
  2745. fwrite(File, "/*\r\n");
  2746. fwrite(File, "Filterscript gerado usando Zamaroth TextDraw Editor Version 1.0 (atual v3.1).\r\n");
  2747. fwrite(File, "Projetado para SA-MP 0.3z.\r\n\r\n");
  2748. new ye,mo,da,ho,mi,se;
  2749. getdate(ye,mo,da);
  2750. gettime(ho,mi,se);
  2751. format(tmpstring, sizeof(tmpstring), "Hora e Data: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
  2752. fwrite(File, tmpstring);
  2753. fwrite(File, "Instruções:\r\n");
  2754. fwrite(File, "1- Compilar este arquivo usando o compilador fornecido com o pacote do servidor sa-mp.\r\n");
  2755. fwrite(File, "2- Copie o arquivo para o diretório .amx filterscripts.\r\n");
  2756. fwrite(File, "3- Adicione os filterscripts no arquivo server.cfg (mais informações aqui:\r\n");
  2757. fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg\r\n");
  2758. fwrite(File, "4- Execute o servidor!\r\n\r\n");
  2759. fwrite(File, "Disclaimer:\r\n");
  2760. fwrite(File, "Você tem direitos totais sobre este arquivo. Você pode distribuí-lo, modificá-lo e\r\n");
  2761. fwrite(File, "mudá-lo tanto quanto você quiser, sem ter que dar todos os créditos especiais.\r\n");
  2762. fwrite(File, "*/\r\n\r\n");
  2763. fwrite(File, "#include <a_samp>\r\n\r\n");
  2764. for(new i; i < MAX_TEXTDRAWS; i++)
  2765. {
  2766. if(tData[i][T_Created])
  2767. {
  2768. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  2769. fwrite(File, tmpstring);
  2770. }
  2771. }
  2772. fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
  2773. fwrite(File, "{\r\n");
  2774. fwrite(File, " print(\"TextDraw arquivo gerada pela\");\r\n");
  2775. fwrite(File, " print(\" Editor Zamaroth TextDraw foi carregado.\");\r\n\r\n");
  2776. fwrite(File, " // Create the textdraws:\r\n");
  2777. for(new i; i < MAX_TEXTDRAWS; i++)
  2778. {
  2779. if(tData[i][T_Created])
  2780. {
  2781. format(tmpstring, sizeof(tmpstring), " Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  2782. fwrite(File, tmpstring);
  2783. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  2784. {
  2785. format(tmpstring, sizeof(tmpstring), " TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  2786. fwrite(File, tmpstring);
  2787. }
  2788. format(tmpstring, sizeof(tmpstring), " TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  2789. fwrite(File, tmpstring);
  2790. format(tmpstring, sizeof(tmpstring), " TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  2791. fwrite(File, tmpstring);
  2792. format(tmpstring, sizeof(tmpstring), " TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  2793. fwrite(File, tmpstring);
  2794. format(tmpstring, sizeof(tmpstring), " TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  2795. fwrite(File, tmpstring);
  2796. format(tmpstring, sizeof(tmpstring), " TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  2797. fwrite(File, tmpstring);
  2798. format(tmpstring, sizeof(tmpstring), " TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  2799. fwrite(File, tmpstring);
  2800. if(tData[i][T_Outline] == 0)
  2801. {
  2802. format(tmpstring, sizeof(tmpstring), " TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  2803. fwrite(File, tmpstring);
  2804. }
  2805. if(tData[i][T_UseBox] == 1)
  2806. {
  2807. format(tmpstring, sizeof(tmpstring), " TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  2808. fwrite(File, tmpstring);
  2809. format(tmpstring, sizeof(tmpstring), " TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  2810. fwrite(File, tmpstring);
  2811. format(tmpstring, sizeof(tmpstring), " TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  2812. fwrite(File, tmpstring);
  2813. }
  2814. format(tmpstring, sizeof(tmpstring), " TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  2815. fwrite(File, tmpstring);
  2816. fwrite(File, "\r\n");
  2817. }
  2818. }
  2819. fwrite(File, " return 1;\r\n");
  2820. fwrite(File, "}\r\n\r\n");
  2821. fwrite(File, "public OnFilterScriptExit()\r\n");
  2822. fwrite(File, "{\r\n");
  2823. for(new i; i < MAX_TEXTDRAWS; i ++)
  2824. {
  2825. if(tData[i][T_Created])
  2826. {
  2827. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  2828. fwrite(File, tmpstring);
  2829. format(tmpstring, sizeof(tmpstring), " TextDrawDestroy(Textdraw%d);\r\n", i);
  2830. fwrite(File, tmpstring);
  2831. }
  2832. }
  2833. fwrite(File, " return 1;\r\n");
  2834. fwrite(File, "}\r\n\r\n");
  2835. fwrite(File, "public OnPlayerRequestClass(playerid, classid)\r\n");
  2836. fwrite(File, "{\r\n");
  2837. for(new i; i < MAX_TEXTDRAWS; i ++)
  2838. {
  2839. if(tData[i][T_Created])
  2840. {
  2841. format(tmpstring, sizeof(tmpstring), " TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
  2842. fwrite(File, tmpstring);
  2843. }
  2844. }
  2845. fwrite(File, " return 1;\r\n");
  2846. fwrite(File, "}\r\n\r\n");
  2847. fwrite(File, "public OnPlayerSpawn(playerid)\r\n");
  2848. fwrite(File, "{\r\n");
  2849. for(new i; i < MAX_TEXTDRAWS; i ++)
  2850. {
  2851. if(tData[i][T_Created])
  2852. {
  2853. format(tmpstring, sizeof(tmpstring), " TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
  2854. fwrite(File, tmpstring);
  2855. }
  2856. }
  2857. fwrite(File, " return 1;\r\n");
  2858. fwrite(File, "}\r\n\r\n");
  2859.  
  2860. format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
  2861. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  2862. }
  2863.  
  2864. case 3: // Show while in vehicle
  2865. {
  2866. fwrite(File, "/*\r\n");
  2867. fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0 (v3.1 Current).\r\n");
  2868. fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
  2869. new ye,mo,da,ho,mi,se;
  2870. getdate(ye,mo,da);
  2871. gettime(ho,mi,se);
  2872. format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
  2873. fwrite(File, tmpstring);
  2874. fwrite(File, "Instruções:\r\n");
  2875. fwrite(File, "1- Compilar este arquivo usando o compilador fornecido com o pacote do servidor sa-mp.\r\n");
  2876. fwrite(File, "2- Copie o arquivo para o diretório .amx filterscripts.\r\n");
  2877. fwrite(File, "3- Adicione os filterscripts no arquivo server.cfg (mais informações aqui:\r\n");
  2878. fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg\r\n");
  2879. fwrite(File, "4- Execute o servidor!\r\n\r\n");
  2880. fwrite(File, "Disclaimer:\r\n");
  2881. fwrite(File, "Você tem direitos totais sobre este arquivo. Você pode distribuí-lo, modificá-lo e\r\n");
  2882. fwrite(File, "mudá-lo tanto quanto você quiser, sem ter que dar todos os créditos especiais.\r\n");
  2883. fwrite(File, "*/\r\n\r\n");
  2884. fwrite(File, "#include <a_samp>\r\n\r\n");
  2885. for(new i; i < MAX_TEXTDRAWS; i++)
  2886. {
  2887. if(tData[i][T_Created])
  2888. {
  2889. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  2890. fwrite(File, tmpstring);
  2891. }
  2892. }
  2893. fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
  2894. fwrite(File, "{\r\n");
  2895. fwrite(File, " print(\"Textdraw file generated by\");\r\n");
  2896. fwrite(File, " print(\" Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
  2897. fwrite(File, " // Create the textdraws:\r\n");
  2898. for(new i; i < MAX_TEXTDRAWS; i++)
  2899. {
  2900. if(tData[i][T_Created])
  2901. {
  2902. format(tmpstring, sizeof(tmpstring), " Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  2903. fwrite(File, tmpstring);
  2904. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  2905. {
  2906. format(tmpstring, sizeof(tmpstring), " TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  2907. fwrite(File, tmpstring);
  2908. }
  2909. format(tmpstring, sizeof(tmpstring), " TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  2910. fwrite(File, tmpstring);
  2911. format(tmpstring, sizeof(tmpstring), " TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  2912. fwrite(File, tmpstring);
  2913. format(tmpstring, sizeof(tmpstring), " TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  2914. fwrite(File, tmpstring);
  2915. format(tmpstring, sizeof(tmpstring), " TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  2916. fwrite(File, tmpstring);
  2917. format(tmpstring, sizeof(tmpstring), " TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  2918. fwrite(File, tmpstring);
  2919. format(tmpstring, sizeof(tmpstring), " TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  2920. fwrite(File, tmpstring);
  2921. if(tData[i][T_Outline] == 0)
  2922. {
  2923. format(tmpstring, sizeof(tmpstring), " TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  2924. fwrite(File, tmpstring);
  2925. }
  2926. if(tData[i][T_UseBox] == 1)
  2927. {
  2928. format(tmpstring, sizeof(tmpstring), " TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  2929. fwrite(File, tmpstring);
  2930. format(tmpstring, sizeof(tmpstring), " TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  2931. fwrite(File, tmpstring);
  2932. format(tmpstring, sizeof(tmpstring), " TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  2933. fwrite(File, tmpstring);
  2934. }
  2935. format(tmpstring, sizeof(tmpstring), " TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  2936. fwrite(File, tmpstring);
  2937. fwrite(File, "\r\n");
  2938. }
  2939. }
  2940. fwrite(File, " return 1;\r\n");
  2941. fwrite(File, "}\r\n\r\n");
  2942. fwrite(File, "public OnFilterScriptExit()\r\n");
  2943. fwrite(File, "{\r\n");
  2944. for(new i; i < MAX_TEXTDRAWS; i ++)
  2945. {
  2946. if(tData[i][T_Created])
  2947. {
  2948. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  2949. fwrite(File, tmpstring);
  2950. format(tmpstring, sizeof(tmpstring), " TextDrawDestroy(Textdraw%d);\r\n", i);
  2951. fwrite(File, tmpstring);
  2952. }
  2953. }
  2954. fwrite(File, " return 1;\r\n");
  2955. fwrite(File, "}\r\n\r\n");
  2956. fwrite(File, "public OnPlayerStateChange(playerid, newstate, oldstate)\r\n");
  2957. fwrite(File, "{\r\n");
  2958. fwrite(File, " if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)\r\n");
  2959. fwrite(File, " {\r\n");
  2960. for(new i; i < MAX_TEXTDRAWS; i ++)
  2961. {
  2962. if(tData[i][T_Created])
  2963. {
  2964. format(tmpstring, sizeof(tmpstring), " TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
  2965. fwrite(File, tmpstring);
  2966. }
  2967. }
  2968. fwrite(File, " }\r\n");
  2969. fwrite(File, " else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)\r\n");
  2970. fwrite(File, " {\r\n");
  2971. for(new i; i < MAX_TEXTDRAWS; i ++)
  2972. {
  2973. if(tData[i][T_Created])
  2974. {
  2975. format(tmpstring, sizeof(tmpstring), " TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
  2976. fwrite(File, tmpstring);
  2977. }
  2978. }
  2979. fwrite(File, " }\r\n");
  2980. fwrite(File, " return 1;\r\n");
  2981. fwrite(File, "}\r\n");
  2982.  
  2983. format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
  2984. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  2985. }
  2986.  
  2987. case 4: // Use command
  2988. {
  2989. fwrite(File, "/*\r\n");
  2990. fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0 (v3.1 Current).\r\n");
  2991. fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
  2992. new ye,mo,da,ho,mi,se;
  2993. getdate(ye,mo,da);
  2994. gettime(ho,mi,se);
  2995. format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
  2996. fwrite(File, tmpstring);
  2997. fwrite(File, "Instruções:\r\n");
  2998. fwrite(File, "1- Compilar este arquivo usando o compilador fornecido com o pacote do servidor sa-mp.\r\n");
  2999. fwrite(File, "2- Copie o arquivo para o diretório .amx filterscripts.\r\n");
  3000. fwrite(File, "3- Adicione os filterscripts no arquivo server.cfg (mais informações aqui:\r\n");
  3001. fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg\r\n");
  3002. fwrite(File, "4- Execute o servidor!\r\n\r\n");
  3003. fwrite(File, "Disclaimer:\r\n");
  3004. fwrite(File, "Você tem direitos totais sobre este arquivo. Você pode distribuí-lo, modificá-lo e\r\n");
  3005. fwrite(File, "mudá-lo tanto quanto você quiser, sem ter que dar todos os créditos especiais.\r\n");
  3006. fwrite(File, "*/\r\n\r\n");
  3007. fwrite(File, "#include <a_samp>\r\n\r\n");
  3008. fwrite(File, "new Showing[MAX_PLAYERS];\r\n\r\n");
  3009. for(new i; i < MAX_TEXTDRAWS; i++)
  3010. {
  3011. if(tData[i][T_Created])
  3012. {
  3013. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  3014. fwrite(File, tmpstring);
  3015. }
  3016. }
  3017. fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
  3018. fwrite(File, "{\r\n");
  3019. fwrite(File, " print(\"Textdraw file generated by\");\r\n");
  3020. fwrite(File, " print(\" Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
  3021. fwrite(File, " // Create the textdraws:\r\n");
  3022. for(new i; i < MAX_TEXTDRAWS; i++)
  3023. {
  3024. if(tData[i][T_Created])
  3025. {
  3026. format(tmpstring, sizeof(tmpstring), " Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  3027. fwrite(File, tmpstring);
  3028. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  3029. {
  3030. format(tmpstring, sizeof(tmpstring), " TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  3031. fwrite(File, tmpstring);
  3032. }
  3033. format(tmpstring, sizeof(tmpstring), " TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  3034. fwrite(File, tmpstring);
  3035. format(tmpstring, sizeof(tmpstring), " TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  3036. fwrite(File, tmpstring);
  3037. format(tmpstring, sizeof(tmpstring), " TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  3038. fwrite(File, tmpstring);
  3039. format(tmpstring, sizeof(tmpstring), " TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  3040. fwrite(File, tmpstring);
  3041. format(tmpstring, sizeof(tmpstring), " TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  3042. fwrite(File, tmpstring);
  3043. format(tmpstring, sizeof(tmpstring), " TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  3044. fwrite(File, tmpstring);
  3045. if(tData[i][T_Outline] == 0)
  3046. {
  3047. format(tmpstring, sizeof(tmpstring), " TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  3048. fwrite(File, tmpstring);
  3049. }
  3050. if(tData[i][T_UseBox] == 1)
  3051. {
  3052. format(tmpstring, sizeof(tmpstring), " TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  3053. fwrite(File, tmpstring);
  3054. format(tmpstring, sizeof(tmpstring), " TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  3055. fwrite(File, tmpstring);
  3056. format(tmpstring, sizeof(tmpstring), " TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  3057. fwrite(File, tmpstring);
  3058. }
  3059. format(tmpstring, sizeof(tmpstring), " TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  3060. fwrite(File, tmpstring);
  3061. fwrite(File, "\r\n");
  3062. }
  3063. }
  3064. fwrite(File, " return 1;\r\n");
  3065. fwrite(File, "}\r\n\r\n");
  3066. fwrite(File, "public OnFilterScriptExit()\r\n");
  3067. fwrite(File, "{\r\n");
  3068. for(new i; i < MAX_TEXTDRAWS; i ++)
  3069. {
  3070. if(tData[i][T_Created])
  3071. {
  3072. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  3073. fwrite(File, tmpstring);
  3074. format(tmpstring, sizeof(tmpstring), " TextDrawDestroy(Textdraw%d);\r\n", i);
  3075. fwrite(File, tmpstring);
  3076. }
  3077. }
  3078. fwrite(File, " return 1;\r\n");
  3079. fwrite(File, "}\r\n\r\n");
  3080. fwrite(File, "public OnPlayerConnect(playerid)\r\n");
  3081. fwrite(File, "{\r\n");
  3082. fwrite(File, " Showing[playerid] = 0;\r\n");
  3083. fwrite(File, "}\r\n\r\n");
  3084. fwrite(File, "public OnPlayerCommandText(playerid, cmdtext[])\r\n");
  3085. fwrite(File, "{\r\n");
  3086. if(pData[playerid][P_Aux] != 0)
  3087. {
  3088. format(tmpstring, sizeof(tmpstring), " if(!strcmp(cmdtext, \"%s\") && Showing[playerid] == 0)\r\n", pData[playerid][P_ExpCommand]);
  3089. fwrite(File, tmpstring);
  3090. }
  3091. else
  3092. {
  3093. format(tmpstring, sizeof(tmpstring), " if(!strcmp(cmdtext, \"%s\"))\r\n", pData[playerid][P_ExpCommand]);
  3094. fwrite(File, tmpstring);
  3095. }
  3096. fwrite(File, " {\r\n");
  3097. fwrite(File, " if(Showing[playerid] == 1)\r\n");
  3098. fwrite(File, " {\r\n");
  3099. fwrite(File, " Showing[playerid] = 0;\r\n");
  3100. for(new i; i < MAX_TEXTDRAWS; i ++)
  3101. {
  3102. if(tData[i][T_Created])
  3103. {
  3104. format(tmpstring, sizeof(tmpstring), " TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
  3105. fwrite(File, tmpstring);
  3106. }
  3107. }
  3108. fwrite(File, " }\r\n");
  3109. fwrite(File, " else\r\n");
  3110. fwrite(File, " {\r\n");
  3111. fwrite(File, " Showing[playerid] = 1;\r\n");
  3112. for(new i; i < MAX_TEXTDRAWS; i ++)
  3113. {
  3114. if(tData[i][T_Created])
  3115. {
  3116. format(tmpstring, sizeof(tmpstring), " TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
  3117. fwrite(File, tmpstring);
  3118. }
  3119. }
  3120. if(pData[playerid][P_Aux] != 0)
  3121. {
  3122. format(tmpstring, sizeof(tmpstring), " SetTimerEx(\"HideTextdraws\", %d, 0, \"i\", playerid);\r\n", pData[playerid][P_Aux]*1000);
  3123. fwrite(File, tmpstring);
  3124. }
  3125. fwrite(File, " }\r\n");
  3126. fwrite(File, " }\r\n");
  3127. fwrite(File, " return 1;\r\n");
  3128. fwrite(File, "}\r\n");
  3129. if(pData[playerid][P_Aux] != 0)
  3130. {
  3131. fwrite(File, "\r\n");
  3132. fwrite(File, "forward HideTextdraws(playerid);\r\n");
  3133. fwrite(File, "public HideTextdraws(playerid)\r\n");
  3134. fwrite(File, "{\r\n");
  3135. fwrite(File, " Showing[playerid] = 0;\r\n");
  3136. for(new i; i < MAX_TEXTDRAWS; i ++)
  3137. {
  3138. if(tData[i][T_Created])
  3139. {
  3140. format(tmpstring, sizeof(tmpstring), " TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
  3141. fwrite(File, tmpstring);
  3142. }
  3143. }
  3144. fwrite(File, "}\r\n");
  3145. }
  3146.  
  3147. format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
  3148. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  3149. }
  3150.  
  3151. case 5: // Every X time
  3152. {
  3153. fwrite(File, "/*\r\n");
  3154. fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0 (v3.1 Current).\r\n");
  3155. fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
  3156. new ye,mo,da,ho,mi,se;
  3157. getdate(ye,mo,da);
  3158. gettime(ho,mi,se);
  3159. format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
  3160. fwrite(File, tmpstring);
  3161. fwrite(File, "Instruções:\r\n");
  3162. fwrite(File, "1- Compilar este arquivo usando o compilador fornecido com o pacote do servidor sa-mp.\r\n");
  3163. fwrite(File, "2- Copie o arquivo para o diretório .amx filterscripts.\r\n");
  3164. fwrite(File, "3- Adicione os filterscripts no arquivo server.cfg (mais informações aqui:\r\n");
  3165. fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg\r\n");
  3166. fwrite(File, "4- Execute o servidor!\r\n\r\n");
  3167. fwrite(File, "Disclaimer:\r\n");
  3168. fwrite(File, "Você tem direitos totais sobre este arquivo. Você pode distribuí-lo, modificá-lo e\r\n");
  3169. fwrite(File, "mudá-lo tanto quanto você quiser, sem ter que dar todos os créditos especiais.\r\n");
  3170. fwrite(File, "*/\r\n\r\n");
  3171. fwrite(File, "#include <a_samp>\r\n\r\n");
  3172. fwrite(File, "new Timer;\r\n\r\n");
  3173. for(new i; i < MAX_TEXTDRAWS; i++)
  3174. {
  3175. if(tData[i][T_Created])
  3176. {
  3177. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  3178. fwrite(File, tmpstring);
  3179. }
  3180. }
  3181. fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
  3182. fwrite(File, "{\r\n");
  3183. fwrite(File, " print(\"Textdraw file generated by\");\r\n");
  3184. fwrite(File, " print(\" Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
  3185. fwrite(File, " // Create the textdraws:\r\n");
  3186. for(new i; i < MAX_TEXTDRAWS; i++)
  3187. {
  3188. if(tData[i][T_Created])
  3189. {
  3190. format(tmpstring, sizeof(tmpstring), " Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  3191. fwrite(File, tmpstring);
  3192. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  3193. {
  3194. format(tmpstring, sizeof(tmpstring), " TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  3195. fwrite(File, tmpstring);
  3196. }
  3197. format(tmpstring, sizeof(tmpstring), " TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  3198. fwrite(File, tmpstring);
  3199. format(tmpstring, sizeof(tmpstring), " TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  3200. fwrite(File, tmpstring);
  3201. format(tmpstring, sizeof(tmpstring), " TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  3202. fwrite(File, tmpstring);
  3203. format(tmpstring, sizeof(tmpstring), " TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  3204. fwrite(File, tmpstring);
  3205. format(tmpstring, sizeof(tmpstring), " TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  3206. fwrite(File, tmpstring);
  3207. format(tmpstring, sizeof(tmpstring), " TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  3208. fwrite(File, tmpstring);
  3209. if(tData[i][T_Outline] == 0)
  3210. {
  3211. format(tmpstring, sizeof(tmpstring), " TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  3212. fwrite(File, tmpstring);
  3213. }
  3214. if(tData[i][T_UseBox] == 1)
  3215. {
  3216. format(tmpstring, sizeof(tmpstring), " TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  3217. fwrite(File, tmpstring);
  3218. format(tmpstring, sizeof(tmpstring), " TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  3219. fwrite(File, tmpstring);
  3220. format(tmpstring, sizeof(tmpstring), " TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  3221. fwrite(File, tmpstring);
  3222. }
  3223. format(tmpstring, sizeof(tmpstring), " TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  3224. fwrite(File, tmpstring);
  3225. fwrite(File, "\r\n");
  3226. }
  3227. }
  3228. format(tmpstring, sizeof(tmpstring), " Timer = SetTimer(\"ShowMessage\", %d, 1);\r\n", pData[playerid][P_Aux]*1000);
  3229. fwrite(File, tmpstring);
  3230. fwrite(File, " return 1;\r\n");
  3231. fwrite(File, "}\r\n\r\n");
  3232. fwrite(File, "public OnFilterScriptExit()\r\n");
  3233. fwrite(File, "{\r\n");
  3234. for(new i; i < MAX_TEXTDRAWS; i ++)
  3235. {
  3236. if(tData[i][T_Created])
  3237. {
  3238. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  3239. fwrite(File, tmpstring);
  3240. format(tmpstring, sizeof(tmpstring), " TextDrawDestroy(Textdraw%d);\r\n", i);
  3241. fwrite(File, tmpstring);
  3242. }
  3243. }
  3244. fwrite(File, " KillTimer(Timer);\r\n");
  3245. fwrite(File, " return 1;\r\n");
  3246. fwrite(File, "}\r\n\r\n");
  3247. fwrite(File, "forward ShowMessage( );\r\n");
  3248. fwrite(File, "public ShowMessage( )\r\n");
  3249. fwrite(File, "{\r\n");
  3250. for(new i; i < MAX_TEXTDRAWS; i ++)
  3251. {
  3252. if(tData[i][T_Created])
  3253. {
  3254. format(tmpstring, sizeof(tmpstring), " TextDrawShowForAll(Textdraw%d);\r\n", i);
  3255. fwrite(File, tmpstring);
  3256. }
  3257. }
  3258. format(tmpstring, sizeof(tmpstring), " SetTimer(\"HideMessage\", %d, 1);\r\n", pData[playerid][P_Aux2]*1000);
  3259. fwrite(File, tmpstring);
  3260. fwrite(File, "}\r\n\r\n");
  3261. fwrite(File, "forward HideMessage( );\r\n");
  3262. fwrite(File, "public HideMessage( )\r\n");
  3263. fwrite(File, "{\r\n");
  3264. for(new i; i < MAX_TEXTDRAWS; i ++)
  3265. {
  3266. if(tData[i][T_Created])
  3267. {
  3268. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  3269. fwrite(File, tmpstring);
  3270. }
  3271. }
  3272. fwrite(File, "}");
  3273.  
  3274. format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
  3275. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  3276. }
  3277.  
  3278. case 6: // After kill
  3279. {
  3280. fwrite(File, "/*\r\n");
  3281. fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0 (v3.1 Current).\r\n");
  3282. fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
  3283. new ye,mo,da,ho,mi,se;
  3284. getdate(ye,mo,da);
  3285. gettime(ho,mi,se);
  3286. format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
  3287. fwrite(File, tmpstring);
  3288. fwrite(File, "Instruções:\r\n");
  3289. fwrite(File, "1- Compilar este arquivo usando o compilador fornecido com o pacote do servidor sa-mp.\r\n");
  3290. fwrite(File, "2- Copie o arquivo para o diretório .amx filterscripts.\r\n");
  3291. fwrite(File, "3- Adicione os filterscripts no arquivo server.cfg (mais informações aqui:\r\n");
  3292. fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg\r\n");
  3293. fwrite(File, "4- Execute o servidor!\r\n\r\n");
  3294. fwrite(File, "Disclaimer:\r\n");
  3295. fwrite(File, "Você tem direitos totais sobre este arquivo. Você pode distribuí-lo, modificá-lo e\r\n");
  3296. fwrite(File, "mudá-lo tanto quanto você quiser, sem ter que dar todos os créditos especiais.\r\n");
  3297. fwrite(File, "*/\r\n\r\n");
  3298. fwrite(File, "#include <a_samp>\r\n\r\n");
  3299. for(new i; i < MAX_TEXTDRAWS; i++)
  3300. {
  3301. if(tData[i][T_Created])
  3302. {
  3303. format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
  3304. fwrite(File, tmpstring);
  3305. }
  3306. }
  3307. fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
  3308. fwrite(File, "{\r\n");
  3309. fwrite(File, " print(\"Textdraw file generated by\");\r\n");
  3310. fwrite(File, " print(\" Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
  3311. fwrite(File, " // Create the textdraws:\r\n");
  3312. for(new i; i < MAX_TEXTDRAWS; i++)
  3313. {
  3314. if(tData[i][T_Created])
  3315. {
  3316. format(tmpstring, sizeof(tmpstring), " Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  3317. fwrite(File, tmpstring);
  3318. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  3319. {
  3320. format(tmpstring, sizeof(tmpstring), " TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  3321. fwrite(File, tmpstring);
  3322. }
  3323. format(tmpstring, sizeof(tmpstring), " TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  3324. fwrite(File, tmpstring);
  3325. format(tmpstring, sizeof(tmpstring), " TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  3326. fwrite(File, tmpstring);
  3327. format(tmpstring, sizeof(tmpstring), " TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  3328. fwrite(File, tmpstring);
  3329. format(tmpstring, sizeof(tmpstring), " TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  3330. fwrite(File, tmpstring);
  3331. format(tmpstring, sizeof(tmpstring), " TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  3332. fwrite(File, tmpstring);
  3333. format(tmpstring, sizeof(tmpstring), " TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  3334. fwrite(File, tmpstring);
  3335. if(tData[i][T_Outline] == 0)
  3336. {
  3337. format(tmpstring, sizeof(tmpstring), " TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  3338. fwrite(File, tmpstring);
  3339. }
  3340. if(tData[i][T_UseBox] == 1)
  3341. {
  3342. format(tmpstring, sizeof(tmpstring), " TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  3343. fwrite(File, tmpstring);
  3344. format(tmpstring, sizeof(tmpstring), " TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  3345. fwrite(File, tmpstring);
  3346. format(tmpstring, sizeof(tmpstring), " TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  3347. fwrite(File, tmpstring);
  3348. }
  3349. format(tmpstring, sizeof(tmpstring), " TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  3350. fwrite(File, tmpstring);
  3351. fwrite(File, "\r\n");
  3352. }
  3353. }
  3354. fwrite(File, " return 1;\r\n");
  3355. fwrite(File, "}\r\n\r\n");
  3356. fwrite(File, "public OnFilterScriptExit()\r\n");
  3357. fwrite(File, "{\r\n");
  3358. for(new i; i < MAX_TEXTDRAWS; i ++)
  3359. {
  3360. if(tData[i][T_Created])
  3361. {
  3362. format(tmpstring, sizeof(tmpstring), " TextDrawHideForAll(Textdraw%d);\r\n", i);
  3363. fwrite(File, tmpstring);
  3364. format(tmpstring, sizeof(tmpstring), " TextDrawDestroy(Textdraw%d);\r\n", i);
  3365. fwrite(File, tmpstring);
  3366. }
  3367. }
  3368. fwrite(File, " return 1;\r\n");
  3369. fwrite(File, "}\r\n\r\n");
  3370. fwrite(File, "public OnPlayerDeath(playerid, killerid, reason)\r\n");
  3371. fwrite(File, "{\r\n");
  3372. for(new i; i < MAX_TEXTDRAWS; i ++)
  3373. {
  3374. if(tData[i][T_Created])
  3375. {
  3376. format(tmpstring, sizeof(tmpstring), " TextDrawShowForPlayer(killerid, Textdraw%d);\r\n", i);
  3377. fwrite(File, tmpstring);
  3378. }
  3379. }
  3380. format(tmpstring, sizeof(tmpstring), " SetTimerEx(\"HideMessage\", %d, 0, \"i\", killerid);\r\n", pData[playerid][P_Aux]*1000);
  3381. fwrite(File, tmpstring);
  3382. fwrite(File, "}\r\n\r\n");
  3383. fwrite(File, "forward HideMessage(playerid);\r\n");
  3384. fwrite(File, "public HideMessage(playerid)\r\n");
  3385. fwrite(File, "{\r\n");
  3386. for(new i; i < MAX_TEXTDRAWS; i ++)
  3387. {
  3388. if(tData[i][T_Created])
  3389. {
  3390. format(tmpstring, sizeof(tmpstring), " TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
  3391. fwrite(File, tmpstring);
  3392. }
  3393. }
  3394. fwrite(File, "}");
  3395.  
  3396. format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
  3397. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  3398. }
  3399. case 7: // PlayerTextDraw by adri1.
  3400. {
  3401. fwrite(File, "// PlayerTextDraw developed using Zamaroht's Textdraw Editor 1.0 [R3]\r\n\r\n");
  3402. for(new i; i < MAX_TEXTDRAWS; i++)
  3403. {
  3404. if(tData[i][T_Created])
  3405. {
  3406. format(tmpstring, sizeof(tmpstring), "new PlayerText:Textdraw%d;\r\n", i);
  3407. fwrite(File, tmpstring);
  3408. }
  3409. }
  3410. fwrite(File, "\r\n// In OnPlayerConnect prefferably, we procced to create our textdraws:\r\n");
  3411. for(new i; i < MAX_TEXTDRAWS; i++)
  3412. {
  3413. if(tData[i][T_Created])
  3414. {
  3415. format(tmpstring, sizeof(tmpstring), "Textdraw%d = CreatePlayerTextDraw(playerid, %f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
  3416. fwrite(File, tmpstring);
  3417. if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
  3418. {
  3419. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawAlignment(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
  3420. fwrite(File, tmpstring);
  3421. }
  3422. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawBackgroundColor(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
  3423. fwrite(File, tmpstring);
  3424. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawFont(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
  3425. fwrite(File, tmpstring);
  3426. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawLetterSize(playerid, Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
  3427. fwrite(File, tmpstring);
  3428. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawColor(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
  3429. fwrite(File, tmpstring);
  3430. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetOutline(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
  3431. fwrite(File, tmpstring);
  3432. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetProportional(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
  3433. fwrite(File, tmpstring);
  3434. if(tData[i][T_Outline] == 0)
  3435. {
  3436. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetShadow(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
  3437. fwrite(File, tmpstring);
  3438. }
  3439. if(tData[i][T_UseBox] == 1)
  3440. {
  3441. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawUseBox(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
  3442. fwrite(File, tmpstring);
  3443. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawBoxColor(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
  3444. fwrite(File, tmpstring);
  3445. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawTextSize(playerid, Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
  3446. fwrite(File, tmpstring);
  3447. }
  3448. if(tData[i][T_PreviewModel] > -1)
  3449. {
  3450. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetPreviewModel(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_PreviewModel]);
  3451. fwrite(File, tmpstring);
  3452. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetPreviewRot(playerid, Textdraw%d, %f, %f, %f, %f);\r\n", i, tData[i][PMRotX], tData[i][PMRotY], tData[i][PMRotZ], tData[i][PMZoom]);
  3453. fwrite(File, tmpstring);
  3454. }
  3455. format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetSelectable(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
  3456. fwrite(File, tmpstring);
  3457. fwrite(File, "\r\n");
  3458. }
  3459. }
  3460. fwrite(File, "// Agora você pode usar PlayerTextDrawShow, PlayerTextDrawHide e\r\n");
  3461. fwrite(File, "// PlayerTextDrawDestroy funções para exibir, ocultar e destruir o TextDraw.");
  3462.  
  3463. format(tmpstring, sizeof(tmpstring), "Projeto exportado para %s.txt no diretório scriptfiles.", CurrentProject);
  3464. SendClientMessage(playerid, MSG_COLOR, tmpstring);
  3465. }
  3466. }
  3467. fclose(File);
  3468.  
  3469. ShowTextDrawDialog(playerid, 4);
  3470. }
  3471.  
  3472. // ================================================================================================================================
  3473. // -------------------------------------------------------- Funções Auxiliares ----------------------------------------------------
  3474. // ================================================================================================================================
  3475.  
  3476.  
  3477. stock GetFileNameFromLst( file[], line )
  3478. {
  3479. /* Retorna a linha na linha especificada do arquivo especificado.
  3480. file []: Arquivo para retornar a linha.
  3481. line: Número da linha para retornar
  3482. */
  3483. new string[150];
  3484.  
  3485. new CurrLine,
  3486. File:Handler = fopen(file, io_read);
  3487.  
  3488. if(line >= 0 && CurrLine != line)
  3489. {
  3490. while(CurrLine != line)
  3491. {
  3492. fread(Handler, string);
  3493. CurrLine ++;
  3494. }
  3495. }
  3496.  
  3497. // Leia a próxima linha, o qual é o mascarado.
  3498. fread(Handler, string);
  3499. fclose(Handler);
  3500.  
  3501. // Cut the last two characters (\n)
  3502. strmid(string, string, 0, strlen(string) - 2, 150);
  3503.  
  3504. return string;
  3505. }
  3506.  
  3507. stock DeleteLineFromFile( file[], line )
  3508. {
  3509. /* Exclui uma linha específica de um arquivo específico.
  3510. file []: Arquivo para apagar a linha de.
  3511. line: Número da linha a ser excluída.
  3512. */
  3513.  
  3514. if(line < 0) return false;
  3515.  
  3516. new tmpfile[140];
  3517. format(tmpfile, sizeof(tmpfile), "%s.tmp", file);
  3518. fcopytextfile(file, tmpfile);
  3519. // Copiados para um arquivo temporário, agora analisá-lo de volta.
  3520.  
  3521. new CurrLine,
  3522. File:FileFrom = fopen(tmpfile, io_read),
  3523. File:FileTo = fopen(file, io_write);
  3524.  
  3525. new tmpstring[200];
  3526. if(CurrLine != line)
  3527. {
  3528. while(CurrLine != line)
  3529. {
  3530. fread(FileFrom, tmpstring);
  3531. fwrite(FileTo, tmpstring);
  3532. CurrLine ++;
  3533. }
  3534. }
  3535.  
  3536. // Skip a line
  3537. fread(FileFrom, tmpstring);
  3538.  
  3539. // Write the rest
  3540. while(fread(FileFrom, tmpstring))
  3541. {
  3542. fwrite(FileTo, tmpstring);
  3543. }
  3544.  
  3545. fclose(FileTo);
  3546. fclose(FileFrom);
  3547. // Remove tmp file.
  3548. fremove(tmpfile);
  3549. return true;
  3550. }
  3551.  
  3552. /** POR DRACOBLUE
  3553.   * Tiras de nova linha a partir do final de uma string.
  3554.   * Idéia: Y_Less, para correções de erros (quando o comprimento = 1) por DracoBlue
  3555.   * @ Param string de
  3556. */
  3557. stock StripNewLine(string[])
  3558. {
  3559. new len = strlen(string);
  3560. if (string[0]==0) return ;
  3561. if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
  3562. string[len - 1] = 0;
  3563. if (string[0]==0) return ;
  3564. if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
  3565. }
  3566. }
  3567.  
  3568. /** POR DRACOBLUE
  3569.   * Copia um arquivo de texto (arquivo de origem não vai ser apagado!)
  3570.   * @ Param oldname
  3571.   * newname
  3572. */
  3573. stock fcopytextfile(oldname[],newname[]) {
  3574. new File:ohnd,File:nhnd;
  3575. if (!fexist(oldname)) return false;
  3576. ohnd=fopen(oldname,io_read);
  3577. nhnd=fopen(newname,io_write);
  3578. new tmpres[256];
  3579. while (fread(ohnd,tmpres)) {
  3580. StripNewLine(tmpres);
  3581. format(tmpres,sizeof(tmpres),"%s\r\n",tmpres);
  3582. fwrite(nhnd,tmpres);
  3583. }
  3584. fclose(ohnd);
  3585. fclose(nhnd);
  3586. return true;
  3587. }
  3588.  
  3589. stock RGB( red, green, blue, alpha )
  3590. {
  3591. /* Combina uma cor e devolve-o, por isso, pode ser utilizado em funções.
  3592. red: Quantidade de cor vermelha.
  3593. green: Quantidade de cor verde.
  3594. blue: Quantidade de cor azul.
  3595. alpha: Quantidade de transparência alfa.
  3596.  
  3597. -retorna:
  3598. Um inteiro com a cor combinado.
  3599. */
  3600. return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
  3601. }
  3602.  
  3603. IsNumeric2(const string[])
  3604. {
  3605. // É verificar Numérico 2
  3606. // ------------------
  3607. // Por DracoBlue ... lida com números negativos
  3608.  
  3609. new length=strlen(string);
  3610. if (length==0) return false;
  3611. for (new i = 0; i < length; i++)
  3612. {
  3613. if((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+' && string[i]!='.') // Not a number,'+' or '-' or '.'
  3614. || (string[i]=='-' && i!=0) // A '-' but not first char.
  3615. || (string[i]=='+' && i!=0) // A '+' but not first char.
  3616. ) return false;
  3617. }
  3618. if (length==1 && (string[0]=='-' || string[0]=='+' || string[0]=='.')) return false;
  3619. return true;
  3620. }
  3621.  
  3622. /** BY DRACOBLUE
  3623. * Return the value of an hex-string
  3624. * @param string
  3625. */
  3626. stock HexToInt(string[]) {
  3627. if (string[0]==0) return 0;
  3628. new i;
  3629. new cur=1;
  3630. new res=0;
  3631. for (i=strlen(string);i>0;i--) {
  3632. if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  3633. cur=cur*16;
  3634. }
  3635. return res;
  3636. }
  3637.  
  3638. stock IsPlayerMinID(playerid)
  3639. {
  3640. /* Verifica se o jogador é o ID minumum no servidor.
  3641. playerid: ID para verificar.
  3642.  
  3643. -retorna:
  3644. verdade se ele é, falso se ele não é.
  3645. */
  3646. for(new i; i < playerid; i ++)
  3647. {
  3648. if(IsPlayerConnected(i))
  3649. {
  3650. if(IsPlayerNPC(i)) continue;
  3651. else return false;
  3652. }
  3653. }
  3654. return true;
  3655. }
  3656. // ================================================================================================================================
  3657. // ----------------------------------------------------- FIM DE FUNÇÕES AUXULIAR ------------------------------------------------
  3658. // ================================================================================================================================
Advertisement
Add Comment
Please, Sign In to add comment