Faskis

iText Object Editor for Streamer

Sep 10th, 2012
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.59 KB | None | 0 0
  1. #include <a_samp>
  2. #include <streamer>
  3. #include <../include/gl_common.inc>
  4.  
  5. new Object[MAX_PLAYERS],
  6.     Text[MAX_PLAYERS][128],
  7.     Size[MAX_PLAYERS] = 50,
  8.     Index[MAX_PLAYERS] = 0,
  9.     UseBold[MAX_PLAYERS] = 0,
  10.     TextAlign[MAX_PLAYERS] = 1,
  11.     FontName[MAX_PLAYERS][128],
  12.     FontSize[MAX_PLAYERS] = 24,
  13.     TextColor[MAX_PLAYERS],
  14.     BackgColor[MAX_PLAYERS],
  15.     OName[MAX_PLAYERS][30],
  16.     ObjectID[MAX_PLAYERS] = 19353,
  17.     Float:Pos[4], Float:Rot[3];
  18.    
  19. new bool:ObjectType[MAX_PLAYERS] = false,
  20.     bool:CreatingTextO[MAX_PLAYERS] = false;
  21.  
  22. #define R               "{FF0000}" //Red
  23. #define G               "{C4C4C4}" //Grey
  24. #define Y               "{EEEA00}" //Yellow
  25. #define B               "{00A7EE}" //Blue
  26.  
  27.  
  28. #define MainDialog      0
  29. #define OTypeDialog     1
  30. #define OModelDialog    2
  31. #define TextDialog      3
  32. #define IndexDialog     4
  33. #define SizesDialog     5
  34. #define FontNDialog     6
  35. #define FontSDialog     7
  36. #define BoldDialog      8
  37. #define ColorDialog     9
  38. #define BackgDialog     10
  39. #define BackgColorD     11
  40. #define AlignDialog     12
  41. #define SaveDialog      13
  42. #define ColorDialog2    14
  43. #define ColorDialog3    15
  44. #define ColorDialog4    16
  45. #define ColorDialog5    17
  46.  
  47. public OnFilterScriptInit()
  48. {
  49.     print("       ____________________________");
  50.     print("      |-Text Object Editor Loaded- |");
  51.     print("      |   Scripted by irinel1996   |");
  52.     print("      |    Copyright Β© 2012-2013   |");
  53.     print("      |      Keep the credits!     |");
  54.     print("      |____________________________|");
  55.     return 1;
  56. }
  57.  
  58. public OnPlayerCommandText(playerid, cmdtext[])
  59. {
  60.     if(!strcmp(cmdtext, "/createot", true) || !strcmp(cmdtext, "/cto", true) || !strcmp(cmdtext, "/create", true))
  61.     {
  62.         if(CreatingTextO[playerid] == false)
  63.         {
  64.             TextAlign[playerid] = 1,
  65.             Text[playerid] = "Example",
  66.             FontName[playerid] = "Arial",
  67.             TextColor[playerid] = HexToInt("0xFFFF8200"),
  68.             BackgColor[playerid] = HexToInt("0xFF000000");
  69.            
  70.             CreatingTextO[playerid] = true, ShowMainMenu(playerid);
  71.             GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetPlayerFacingAngle(playerid, Pos[3]);
  72.             new Float:x = Pos[0] + (5.0 * floatsin(-Pos[3], degrees));
  73.             new Float:y = Pos[1] + (5.0 * floatcos(-Pos[3], degrees));
  74.            
  75.             Object[playerid] = CreateDynamicObject(ObjectID[playerid], x, y, Pos[2]+0.5, 0.0, 0.0, Pos[3] - 90.0);
  76.            
  77.             SetDynamicObjectMaterialText(Object[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  78.             FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  79.            
  80.             SendClientMessage(playerid,-1,""R"* "B"INFO: "Y"New Text Object created.");
  81.         } else { ShowMainMenu(playerid); }
  82.         return 1;
  83.     }
  84.     if(!strcmp(cmdtext, "/test", true))
  85.     {
  86.         new MiObjeto = CreateDynamicObject(19353, 1965.633911, 1343.049560, 15.874607, 0.000000, 0.000000, 179.142486);
  87.         SetDynamicObjectMaterialText(MiObjeto, 0, "Example", 50, "Arial", 24, 0, -32256, -16777216, 1);
  88.         return 1;
  89.     }
  90.     return 0;
  91. }
  92.  
  93. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  94. {
  95.     if(dialogid == MainDialog){
  96.         if(response){
  97.             switch(listitem) {
  98.                 case 0:{
  99.                     new string[128], type[30];
  100.                     if(ObjectType[playerid] == false) type = "Normal Object";
  101.                     else if(ObjectType[playerid] == true) type = "Player Object";
  102.                     format(string, sizeof(string),""B"Curret Object Type: "Y"%s\
  103.                     \n"G"Please, select your Object Type below:",type);
  104.                     ShowPlayerDialog(playerid,OTypeDialog,DIALOG_STYLE_MSGBOX,"    "R"Object Type",string,"Normal O.","Player O.");
  105.                 }
  106.                 case 1:{
  107.                     new string[128];
  108.                     format(string, sizeof(string), ""B"Current Object Model ID: "Y"%d\
  109.                     \n"G"Please, type below a Model ID for the object (example = 19353):",ObjectID[playerid]);
  110.                     ShowPlayerDialog(playerid,OModelDialog,DIALOG_STYLE_INPUT,"    "R"Object Model ID",string,"Change","Back");
  111.                 }
  112.                 case 2:{
  113.                     new string[300];
  114.                     format(string, sizeof(string),""B"Current Object Text: "Y"%s\
  115.                     \n"G"Please, type below your text for the object:",Text[playerid]);
  116.                     ShowPlayerDialog(playerid,TextDialog,DIALOG_STYLE_INPUT,"    "R"Object Text",string,"Change","Back");
  117.                 }
  118.                 case 3: {
  119.                     new string[128];
  120.                     format(string, sizeof(string),""B"Current Material Index: "Y"%d\
  121.                     \n"G"Please, type below the Material Index which you want use (default = 0):",Index[playerid]);
  122.                     ShowPlayerDialog(playerid,IndexDialog,DIALOG_STYLE_INPUT,"    "R"Material Index",string,"Change","Back");
  123.                 }
  124.                 case 4: {
  125.                     new sizes[600];
  126.                     strcat(sizes,""Y"1. "B"32x32 "G"(10)\
  127.                                 \n"Y"2. "B"64x32 "G"(20)\
  128.                                 \n"Y"3. "B"64x64 "G"(30)\
  129.                                 \n"Y"4. "B"128x32 "G"(40)\
  130.                                 \n"Y"5. "B"128x64 "G"(50)\
  131.                                 \n"Y"6. "B"128x128 "G"(60)\
  132.                                 \n"Y"7. "B"256x32 "G"(70)");
  133.                     strcat(sizes,"\n"Y"8. "B"256x64 "G"(80)\
  134.                                 \n"Y"9. "B"256x128 "G"(90)\
  135.                                 \n"Y"10. "B"256x256 "G"(100)\
  136.                                 \n"Y"11. "B"512x64 "G"(110)\
  137.                                 \n"Y"12. "B"512x128 "G"(120)\
  138.                                 \n"Y"13. "B"512x256 "G"(130)\
  139.                                 \n"Y"14. "B"512x512 "G"(140)");
  140.                     new current[128];
  141.                     format(current, sizeof(current),""R"Material Size "G"| "B"Current size: "Y"%d",Size[playerid]);
  142.                     ShowPlayerDialog(playerid,SizesDialog,DIALOG_STYLE_LIST,current,sizes,"Change","Back");
  143.                 }
  144.                 case 5: {
  145.                     new string[128];
  146.                     format(string, sizeof(string), ""B"Current Text Font: "Y"%s\
  147.                     \n"G"Please, type below the Text Font name which you want use:",FontName[playerid]);
  148.                     ShowPlayerDialog(playerid,FontNDialog,DIALOG_STYLE_INPUT,"    "R"Text Font",string,"Change","Back");
  149.                 }
  150.                 case 6: {
  151.                     new string[128];
  152.                     format(string, sizeof(string), ""B"Current Text Size: "Y"%d\
  153.                     \n"G"Please, type below the Text Size which you want use:",FontSize[playerid]);
  154.                     ShowPlayerDialog(playerid,FontSDialog,DIALOG_STYLE_INPUT,"    "R"Text Size",string,"Change","Back");
  155.                 }
  156.                 case 7: {
  157.                     new title[100]; new yesorno[10];
  158.                     if(UseBold[playerid] == 0) yesorno = "No";
  159.                     else if(UseBold[playerid] == 1) yesorno = "Yes";
  160.                     format(title, sizeof(title), ""R"Bold Text "G"| "B"Using Bold Text: "Y"%s",yesorno);
  161.                     ShowPlayerDialog(playerid,BoldDialog,DIALOG_STYLE_LIST,title,""Y"1. "B"No\n"Y"2. "B"Yes","Change","Back");
  162.                 }
  163.                 case 8: {
  164.                     new titulo[100];
  165.                     format(titulo, sizeof(titulo),""R"Text Color "G"| "B"Current Text Color: "Y"%i",TextColor[playerid]);
  166.                     ShowPlayerDialog(playerid,ColorDialog,DIALOG_STYLE_LIST,titulo,""Y"1. "B"Type a ARGB color code\
  167.                     \n"Y"2. "B"Select a predefinded color","Next","Back");
  168.                 }
  169.                 case 9: {
  170.                     new titulo[100];
  171.                     format(titulo, sizeof(titulo),""R"Object Background "G"| "B"Current Text Color: "Y"%i",BackgColor[playerid]);
  172.                     ShowPlayerDialog(playerid,BackgColorD,DIALOG_STYLE_LIST,titulo,""Y"1. "B"Disable Background\n"Y"2. "B"Type a ARGB color code\
  173.                     \n"Y"3. "B"Select a predefinded color","Next","Back");
  174.                 }
  175.                 case 10: {
  176.                     new title[100]; new position[30];
  177.                     if(TextAlign[playerid] == 0) position = "Left";
  178.                     else if(TextAlign[playerid] == 1) position = "Center";
  179.                     else if(TextAlign[playerid] == 2) position = "Right";
  180.                     format(title, sizeof(title), ""R"Text Alignment "G"| "B"Current Alignment: "Y"%s",position);
  181.                     ShowPlayerDialog(playerid,AlignDialog,DIALOG_STYLE_LIST,title,""Y"1. "B"Left\n"Y"2. "B"Center\n"Y"3. "B"Right","Change","Back");
  182.                 }
  183.                 case 11: {
  184.                     EditDynamicObject(playerid, Object[playerid]);
  185.                     SendClientMessage(playerid,-1,""R"* "B"INFO: "Y"Use "G"ESC "Y"to cancel the object edition.");
  186.                 }
  187.                 case 12: {
  188.                     ShowPlayerDialog(playerid,SaveDialog,DIALOG_STYLE_INPUT,"    "R"Exporting Lines",
  189.                     "Please, type a name for the object below (example = MyObject):","Export","Back");
  190.                 }
  191.                 case 13: {
  192.                     CreatingTextO[playerid] = false, DestroyDynamicObject(Object[playerid]);
  193.                     TextAlign[playerid] = 1, Text[playerid] = "Example", FontName[playerid] = "Arial",
  194.                     TextColor[playerid] = HexToInt("0xFFFF8200"), BackgColor[playerid] = HexToInt("0xFF000000"),
  195.                     Size[playerid] = 50, Index[playerid] = 0, UseBold[playerid] = 0,
  196.                     FontSize[playerid] = 24, OName[playerid] = "0", ObjectID[playerid] = 19353;
  197.                     SendClientMessage(playerid,-1,""R"* "B"INFO: "Y"All settings have been reseted.");
  198.                 }
  199.             }
  200.         }
  201.         return 1;
  202.     }
  203.     if(dialogid == OTypeDialog)
  204.     {
  205.         if(response)
  206.         {
  207.             ObjectType[playerid] = false;
  208.             SendClientMessage(playerid,-1,""R"* "B"Object Type: "Y"Normal Object"); ShowMainMenu(playerid);
  209.         } else {
  210.             ObjectType[playerid] = true;
  211.             SendClientMessage(playerid,-1,""R"* "B"Object Type: "Y"Player Object"); ShowMainMenu(playerid);
  212.         }
  213.         return 1;
  214.     }
  215.     if(dialogid == OModelDialog)
  216.     {
  217.         if(response)
  218.         {
  219.             if(!isNumeric(inputtext)) return SendClientMessage(playerid,-1,""Y"* "R"ERROR: "G"Please, use a numeric value"R"!"), ShowMainMenu(playerid);
  220.             new string[128];
  221.             ObjectID[playerid] = strval(inputtext);
  222.             format(string, sizeof(string), ""R"* "B"Object Model ID: "Y"%d",ObjectID[playerid]);
  223.             SendClientMessage(playerid,-1,string); UpdateObject(playerid), ShowMainMenu(playerid);
  224.         } else { ShowMainMenu(playerid); }
  225.         return 1;
  226.     }
  227.     if(dialogid == TextDialog){
  228.         if(response){
  229.             new string[128];
  230.             format(string, sizeof(string),"%s",inputtext);
  231.             Text[playerid] = string; format(string, sizeof(string), ""R"* "B"Object Text: "Y"%s",Text[playerid]);
  232.             SendClientMessage(playerid,-1,string); UpdateObject(playerid), ShowMainMenu(playerid);
  233.         } else { ShowMainMenu(playerid); }
  234.         return 1;
  235.     }
  236.     if(dialogid == IndexDialog){
  237.         if(response){
  238.             if(!isNumeric(inputtext)) return SendClientMessage(playerid,-1,""Y"* "R"ERROR: "G"Please, use a numeric value"R"!"), ShowMainMenu(playerid);
  239.             new string[100];
  240.             Index[playerid] = strval(inputtext);
  241.             format(string, sizeof(string),""R"* "B"Object Material Index: "Y"%d",Index[playerid]);
  242.             SendClientMessage(playerid,-1,string); UpdateObject(playerid), ShowMainMenu(playerid);
  243.         } else { ShowMainMenu(playerid); }
  244.         return 1;
  245.     }
  246.     if(dialogid == SizesDialog){
  247.         if(response)
  248.         {
  249.             switch(listitem) {
  250.                 case 0: Size[playerid] = 10;
  251.                 case 1:  Size[playerid] = 20;
  252.                 case 2:  Size[playerid] = 30;
  253.                 case 3:  Size[playerid] = 40;
  254.                 case 4:  Size[playerid] = 50;
  255.                 case 5:  Size[playerid] = 60;
  256.                 case 6:  Size[playerid] = 70;
  257.                 case 7:  Size[playerid] = 80;
  258.                 case 8:  Size[playerid] = 90;
  259.                 case 9:  Size[playerid] = 100;
  260.                 case 10:  Size[playerid] = 110;
  261.                 case 11:  Size[playerid] = 120;
  262.                 case 12:  Size[playerid] = 130;
  263.                 case 13:  Size[playerid] = 140;
  264.                 default: Size[playerid] = 70;
  265.             }
  266.             new string[128];
  267.             format(string, sizeof(string), ""R"* "B"Object Material Size: "Y"%d",Size[playerid]);
  268.             SendClientMessage(playerid,-1,string); UpdateObject(playerid), ShowMainMenu(playerid);
  269.         } else { ShowMainMenu(playerid); }
  270.         return 1;
  271.     }
  272.     if(dialogid == FontNDialog)
  273.     {
  274.         if(response) {
  275.             new string[128]; format(string, sizeof(string),"%s",inputtext); FontName[playerid] = string;
  276.             format(string, sizeof(string), ""R"* "B"Text Font: "Y"%s",FontName[playerid]); SendClientMessage(playerid,-1,string);
  277.             UpdateObject(playerid), ShowMainMenu(playerid);
  278.         } else { ShowMainMenu(playerid); }
  279.         return 1;
  280.     }
  281.     if(dialogid == FontSDialog)
  282.     {
  283.         if(response) {
  284.             if(!isNumeric(inputtext)) return SendClientMessage(playerid,-1,""Y"* "R"ERROR: "G"Please, use a numeric value"R"!"), ShowMainMenu(playerid);
  285.             new string[128]; FontSize[playerid] = strval(inputtext);
  286.             format(string, sizeof(string), ""R"* "B"Text Size: "Y"%d",FontSize[playerid]); SendClientMessage(playerid,-1,string);
  287.             UpdateObject(playerid), ShowMainMenu(playerid);
  288.         } else { ShowMainMenu(playerid); }
  289.         return 1;
  290.     }
  291.     if(dialogid == BoldDialog)
  292.     {
  293.         if(response)
  294.         {
  295.             switch(listitem)
  296.             {
  297.                 case 0: {
  298.                     UseBold[playerid] = 0;
  299.                     SendClientMessage(playerid,-1,""R"* "B"Bold Text: "Y"No");
  300.                     UpdateObject(playerid), ShowMainMenu(playerid);
  301.                 }
  302.                 case 1: {
  303.                     UseBold[playerid] = 1;
  304.                     SendClientMessage(playerid,-1,""R"* "B"Bold Text: "Y"Yes");
  305.                     UpdateObject(playerid), ShowMainMenu(playerid);
  306.                 }
  307.             }
  308.         } else { ShowMainMenu(playerid); }
  309.         return 1;
  310.     }
  311.     if(dialogid == ColorDialog)
  312.     {
  313.         if(response)
  314.         {
  315.             switch(listitem)
  316.             {
  317.                 case 0: {
  318.                     ShowPlayerDialog(playerid,ColorDialog2,DIALOG_STYLE_INPUT,"    "R"Text Color",
  319.                     ""G"Please, type a ARGB color code below (example = 0xFFFF0000):","Change","Back");
  320.                 }
  321.                 case 1: {
  322.                     ShowPlayerDialog(playerid,ColorDialog3,DIALOG_STYLE_LIST,""R"Color List",
  323.                     "{FF0000}Red\n{04B404}Green\n{00B5CD}Sky-Blue\n{FFFF00}Yellow\
  324.                     \n{0000FF}Blue\n{848484}Grey\n{FF00FF}Pink\n{FFFFFF}White","Change","Back");
  325.                 }
  326.             }
  327.         } else { ShowMainMenu(playerid); }
  328.         return 1;
  329.     }
  330.     if(dialogid == ColorDialog2)
  331.     {
  332.         if(response) {
  333.             new string[80]; TextColor[playerid] = HexToInt(inputtext);
  334.             format(string, sizeof(string),""R"* "B"Text Color: "Y"%i", TextColor[playerid]);
  335.             SendClientMessage(playerid,-1,string); UpdateObject(playerid), ShowMainMenu(playerid);
  336.         } else {
  337.             new titulo[100];
  338.             format(titulo, sizeof(titulo),""R"Text Color "G"| "B"Current Text Color: "Y"%i",TextColor[playerid]);
  339.             ShowPlayerDialog(playerid,ColorDialog,DIALOG_STYLE_LIST,titulo,""Y"1. "B"Type a ARGB color code\
  340.             \n"Y"2. "B"Select a predefinded color","Next","Back");
  341.         }
  342.         return 1;
  343.     }
  344.     if(dialogid == ColorDialog3)
  345.     {
  346.         if(response) {
  347.             switch(listitem)
  348.             {
  349.                 case 0: { TextColor[playerid] = HexToInt("0xFFFF0000"); } //Red
  350.                 case 1: { TextColor[playerid] = HexToInt("0xFF04B404"); }
  351.                 case 2: { TextColor[playerid] = HexToInt("0xFF00B5CD"); }
  352.                 case 3: { TextColor[playerid] = HexToInt("0xFFFFFF00"); } //Yellow
  353.                 case 4: { TextColor[playerid] = HexToInt("0xFF0000FF"); }
  354.                 case 5: { TextColor[playerid] = HexToInt("0xFF848484"); }
  355.                 case 6: { TextColor[playerid] = HexToInt("0xFFFF00FF"); }
  356.                 case 7: { TextColor[playerid] = HexToInt("0xFFFFFFFF"); } //White
  357.             }
  358.             new string[80]; UpdateObject(playerid);
  359.             format(string, sizeof(string),""R"* "B"Text Color: "Y"%i", TextColor[playerid]);
  360.             SendClientMessage(playerid,-1,string); ShowMainMenu(playerid);
  361.         } else {
  362.             new titulo[100];
  363.             format(titulo, sizeof(titulo),""R"Text Color "G"| "B"Current Text Color: "Y"%i",TextColor[playerid]);
  364.             ShowPlayerDialog(playerid,ColorDialog,DIALOG_STYLE_LIST,titulo,""Y"1. "B"Type a ARGB color code\
  365.             \n"Y"2. "B"Select a predefinded color","Next","Back");
  366.         }
  367.         return 1;
  368.     }
  369.     if(dialogid == BackgColorD)
  370.     {
  371.         if(response)
  372.         {
  373.             switch(listitem)
  374.             {
  375.                 case 0: { BackgColor[playerid] = 0; UpdateObject(playerid);  ShowMainMenu(playerid); SendClientMessage(playerid,-1,""R"* "B"Background Color: "Y"Disabled"); }
  376.                 case 1: {
  377.                     ShowPlayerDialog(playerid,ColorDialog4,DIALOG_STYLE_INPUT,"    "R"Background Color",
  378.                     ""G"Please, type a ARGB color code below (example = 0xFFFF0000):","Change","Back");
  379.                 }
  380.                 case 2: {
  381.                     ShowPlayerDialog(playerid,ColorDialog5,DIALOG_STYLE_LIST,""R"Color List",
  382.                     "{FF0000}Red\n{04B404}Green\n{00B5CD}Sky-Blue\n{FFFF00}Yellow\
  383.                     \n{0000FF}Blue\n{848484}Grey\n{FF00FF}Pink\n{FFFFFF}White","Change","Back");
  384.                 }
  385.             }
  386.         } else { ShowMainMenu(playerid); }
  387.         return 1;
  388.     }
  389.     if(dialogid == ColorDialog4)
  390.     {
  391.         if(response) {
  392.             new string[80]; BackgColor[playerid] = HexToInt(inputtext);
  393.             format(string, sizeof(string),""R"* "B"Background Color: "Y"%i", BackgColor[playerid]);
  394.             SendClientMessage(playerid,-1,string); UpdateObject(playerid), ShowMainMenu(playerid);
  395.         } else {
  396.             new titulo[100];
  397.             format(titulo, sizeof(titulo),""R"Object Background "G"| "B"Current Text Color: "Y"%i",BackgColor[playerid]);
  398.             ShowPlayerDialog(playerid,BackgColorD,DIALOG_STYLE_LIST,titulo,""Y"1. "B"Disable Background\n"Y"2. "B"Type a ARGB color code\
  399.             \n"Y"3. "B"Select a predefinded color","Next","Back");
  400.         }
  401.         return 1;
  402.     }
  403.     if(dialogid == ColorDialog5)
  404.     {
  405.         if(response) {
  406.             switch(listitem)
  407.             {
  408.                 case 0: { BackgColor[playerid] = HexToInt("0xFFFF0000"); } //Red
  409.                 case 1: { BackgColor[playerid] = HexToInt("0xFF04B404"); }
  410.                 case 2: { BackgColor[playerid] = HexToInt("0xFF00B5CD"); }
  411.                 case 3: { BackgColor[playerid] = HexToInt("0xFFFFFF00"); } //Yellow
  412.                 case 4: { BackgColor[playerid] = HexToInt("0xFF0000FF"); }
  413.                 case 5: { BackgColor[playerid] = HexToInt("0xFF848484"); }
  414.                 case 6: { BackgColor[playerid] = HexToInt("0xFFFF00FF"); }
  415.                 case 7: { BackgColor[playerid] = HexToInt("0xFFFFFFFF"); } //White
  416.             }
  417.             new string[80]; UpdateObject(playerid); ShowMainMenu(playerid);
  418.             format(string, sizeof(string),""R"* "B"Background Color: "Y"%i", BackgColor[playerid]);
  419.             SendClientMessage(playerid,-1,string);
  420.         } else {
  421.             new titulo[100];
  422.             format(titulo, sizeof(titulo),""R"Object Background "G"| "B"Current Text Color: "Y"%i",BackgColor[playerid]);
  423.             ShowPlayerDialog(playerid,BackgColorD,DIALOG_STYLE_LIST,titulo,""Y"1. "B"Disable Background\n"Y"2. "B"Type a ARGB color code\
  424.             \n"Y"3. "B"Select a predefinded color","Next","Back");
  425.         }
  426.         return 1;
  427.     }
  428.     if(dialogid == AlignDialog)
  429.     {
  430.         if(response) {
  431.             switch(listitem)
  432.             {
  433.                 case 0: {
  434.                     TextAlign[playerid] = 0; UpdateObject(playerid);
  435.                     SendClientMessage(playerid,-1,""R"* "B"Text Alignment: "Y"Left"), ShowMainMenu(playerid);
  436.                 }
  437.                 case 1: {
  438.                     TextAlign[playerid] = 1; UpdateObject(playerid);
  439.                     SendClientMessage(playerid,-1,""R"* "B"Text Alignment: "Y"Center"), ShowMainMenu(playerid);
  440.                 }
  441.                 case 2: {
  442.                     TextAlign[playerid] = 2; UpdateObject(playerid);
  443.                     SendClientMessage(playerid,-1,""R"* "B"Text Alignment: "Y"Right"), ShowMainMenu(playerid);
  444.                 }
  445.             }
  446.         } else { ShowMainMenu(playerid); }
  447.     }
  448.     if(dialogid == SaveDialog)
  449.     {
  450.         if(response)
  451.         {
  452.             if(strlen(inputtext) <= 0) return SendClientMessage(playerid,-1,""Y"* "R"ERROR: "G"Please, type something for the object name"R"!"), ShowMainMenu(playerid);
  453.             new string[600], soname[30];
  454.             format(soname, sizeof(soname),"%s",inputtext); OName[playerid] = soname;
  455.             new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
  456.             GetDynamicObjectPos(Object[playerid], x, y, z),
  457.             GetDynamicObjectRot(Object[playerid], rx, ry, rz);
  458.             if(!fexist("textobjects.txt"))
  459.             {
  460.                 new File:archivo = fopen("textobjects.txt", io_write);
  461.                 if(ObjectType[playerid] == false) {
  462.                     format(string, sizeof(string),"new %s = CreateDynamicObject(%d, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f);\
  463.                     \r\nSetDynamicObjectMaterialText(%s, %d, \"%s\", %d, \"%s\", %d, %d, %i, %i, %d);",OName[playerid], ObjectID[playerid],
  464.                     x, y, z, rx, ry, rz, OName[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  465.                     FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  466.                     fwrite(archivo,string);
  467.                     fclose(archivo);
  468.                 } else {
  469.                     format(string, sizeof(string),"new %s = CreateDynamicObject(%d, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f);\
  470.                     \r\nSetDynamicObjectMaterialText(%s, %d, \"%s\", %d, \"%s\", %d, %d, %i, %i, %d);",OName[playerid], ObjectID[playerid],
  471.                     x, y, z, rx, ry, rz, OName[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  472.                     FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  473.                     fwrite(archivo,string); fclose(archivo);
  474.                 }
  475.             } else {
  476.                 new File:archivo = fopen("textobjects.txt", io_append);
  477.                 if(ObjectType[playerid] == false) {
  478.                     format(string, sizeof(string),"\r\n\r\nnew %s = CreateDynamicObject(%d, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f);\
  479.                     \r\nSetDynamicObjectMaterialText(%s, %d, \"%s\", %d, \"%s\", %d, %d, %i, %i, %d);",OName[playerid], ObjectID[playerid],
  480.                     x, y, z, rx, ry, rz, OName[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  481.                     FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  482.                     fwrite(archivo,string); fclose(archivo);
  483.                 } else {
  484.                     format(string, sizeof(string),"\r\n\r\nnew %s = CreateDynamicObject(%d, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f);\
  485.                     \r\nSetDynamicObjectMaterialText(playerid, %s, %d, \"%s\", %d, \"%s\", %d, %d, %i, %i, %d);",OName[playerid], ObjectID[playerid],
  486.                     x, y, z, rx, ry, rz, OName[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  487.                     FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  488.                     fwrite(archivo,string); fclose(archivo);
  489.                 }
  490.             }
  491.             //---
  492.             CreatingTextO[playerid] = false, DestroyDynamicObject(Object[playerid]);
  493.             TextAlign[playerid] = 1, Text[playerid] = "Example", FontName[playerid] = "Arial",
  494.             TextColor[playerid] = HexToInt("0xFFFF8200"), BackgColor[playerid] = HexToInt("0xFF000000"),
  495.             Size[playerid] = 50, Index[playerid] = 0, UseBold[playerid] = 0,
  496.             FontSize[playerid] = 24, OName[playerid] = "0", ObjectID[playerid] = 19353;
  497.             //---
  498.             SendClientMessage(playerid,-1,""R"* "B"INFO: "Y"Script saved, check your "G"textobjects.txt "Y"in "G"scriptfiles"Y".");
  499.             SendClientMessage(playerid,-1,""R"* "B"INFO: "Y"All settings have been reseted.");
  500.         } else { ShowMainMenu(playerid); }
  501.         return 1;
  502.     }
  503.     return 0;
  504. }
  505.  
  506. ShowMainMenu(playerid)
  507. {
  508.     new string[600];
  509.     strcat(string,""Y"1. "B"Set Object Type\n"Y"2. "B"Set Object Model ID\n"Y"3. "B"Set Object Text\
  510.     \n"Y"4. "B"Set Material Index\n"Y"5. "B"Set Material Size\n");
  511.     strcat(string, ""Y"6. "B"Set Text Font\n"Y"7. "B"Set Text Size\n"Y"8. "B"Set Bold Text\
  512.     \n"Y"9. "B"Set Text Color\n"Y"10. "B"Set Background Color\n"Y"11. "B"Set Text Alignment\n"Y"12. "G"Edit Object\
  513.     \n"Y"13. "G"Export Lines\n"Y"14. "G"Reset Object");
  514.     ShowPlayerDialog(playerid,MainDialog,DIALOG_STYLE_LIST,""R"Text Object | Main Menu",string,"Continue","Exit");
  515.     return 1;
  516. }
  517.  
  518. UpdateObject(playerid)
  519. {
  520.     GetDynamicObjectPos(Object[playerid], Pos[0], Pos[1], Pos[2]);
  521.     GetDynamicObjectRot(Object[playerid], Rot[0], Rot[1], Rot[2]); DestroyDynamicObject(Object[playerid]);
  522.     Object[playerid] = CreateDynamicObject(ObjectID[playerid], Pos[0], Pos[1], Pos[2], Rot[0], Rot[1], Rot[2]);
  523.  
  524.     SetDynamicObjectMaterialText(Object[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  525.     FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  526. }
  527.  
  528. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  529. {
  530.     if(objectid == Object[playerid]) {
  531.         if(response == EDIT_RESPONSE_FINAL)
  532.         {
  533.             SendClientMessage(playerid,-1,""R"* "B"Object Edition: "Y"Updated");
  534.             DestroyDynamicObject(Object[playerid]);
  535.             Object[playerid] = CreateDynamicObject(ObjectID[playerid], x, y, z, rx, ry, rz);
  536.             SetDynamicObjectMaterialText(Object[playerid], Index[playerid], Text[playerid], Size[playerid], FontName[playerid],
  537.             FontSize[playerid], UseBold[playerid], TextColor[playerid], BackgColor[playerid], TextAlign[playerid]);
  538.             ShowMainMenu(playerid);
  539.         } else if(response == EDIT_RESPONSE_CANCEL) {
  540.             SendClientMessage(playerid,-1,""R"* "B"Object Edition: "Y"No updated"); UpdateObject(playerid), ShowMainMenu(playerid);
  541.         }
  542.     }
  543. }
  544. stock HexToInt(string[]) //By Zamaroht, I think... =/
  545. {
  546.   if (string[0]==0) return 0;
  547.   new i;
  548.   new cur=1;
  549.   new res=0;
  550.   for (i=strlen(string);i>0;i--) {
  551.     if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  552.     cur=cur*16;
  553.   }
  554.   return res;
  555. }
Add Comment
Please, Sign In to add comment