Advertisement
EnzoMetlc

[FilterScript] Menu Editor v1.1

Nov 14th, 2016
611
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 18.55 KB | None | 0 0
  1. /**************
  2. * "Menu Editor" by EnzoMetlc - forum.sa-mp.com
  3. * Feel free to use/edit this as you like. Just respect credits.
  4. * Enjoy!
  5. **************/
  6.  
  7. #include <a_samp>
  8. #include <ZCMD>
  9.  
  10.  
  11. #define MSG_COLOR               0xFFFF00
  12. #define MAX_NAME_LEN            (30)
  13.  
  14. #define EDIT_POSITION           (1)
  15. #define EDIT_WIDTH              (2)
  16.  
  17. #define _fdi                    (700) // first dialog id
  18. #define DIALOG_MAIN             (_fdi + 0)
  19. #define DIALOG_PROJECT          (_fdi + 1)
  20. #define DIALOG_CHANGETITTLE     (_fdi + 2)
  21.  
  22. #define DIALOG_COLUMN1          (_fdi + 3)
  23. #define DIALOG_COLUMN2          (_fdi + 4)
  24.  
  25. #define DIALOG_COLUMN1HEADER    (_fdi + 5)
  26. #define DIALOG_COLUMN2HEADER    (_fdi + 6)
  27.  
  28. #define DIALOG_COLUMN1_ITEM     (_fdi + 7)
  29. #define DIALOG_COLUMN2_ITEM     (_fdi + 8)
  30.  
  31. #define DIALOG_SELECTCOLUMN     (_fdi + 9)
  32.  
  33.  
  34. #if !defined SFM // Send Formated Message
  35. #define SFM(%1,%2,%3) format(gStr, 128, %2, %3); SendClientMessage(playerid, %1, gStr)
  36. #endif
  37.  
  38.  
  39.  
  40. enum MenuInfo_main
  41. {
  42.     Menu:Menu_ID,
  43.     Menu_Tittle[32],
  44.     Float:Menu_fX,
  45.     Float:Menu_fY,
  46.     Float:Menu_Width1,
  47.     Float:Menu_Width2,
  48.     Menu_Columns
  49. };
  50.  
  51. static MenuInfo[MenuInfo_main];
  52. static ColumnsText[2][32];
  53. static ItemsText[2][12][128];
  54. static ProjectName[MAX_NAME_LEN + 1];
  55. static Editing;
  56. static gStr[1028];
  57. static ItemEditing;
  58.  
  59.  
  60.  
  61. public OnFilterScriptInit()
  62. {
  63.     if(fexist("Menu Editor/")) return SendRconCommand("hostname [Menu Editor v1.0] Thanks for download!");
  64.  
  65.     print("\n \n* Menu Editor WARNING:");
  66.     printf("* Folder 'Menu Editor' doesn't exists in scriptfiles folder!");
  67.     SendRconCommand("hostname Menu Editor Warning: check out the console!"); // For lazy guys who never see the console
  68.     return 1;
  69. }
  70.  
  71.  
  72. public OnPlayerSpawn(playerid)
  73. {
  74.     SendClientMessage(playerid, MSG_COLOR, "[*] Type (/Menu) to start.");
  75.     return 1;
  76. }
  77.  
  78.  
  79. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  80. {
  81.     switch(dialogid)
  82.     {
  83.         case DIALOG_MAIN: // Create a new project
  84.         {
  85.             if(!response) return TogglePlayerControllable(playerid, true);
  86.             if(!(1 <= strlen(inputtext) <= MAX_NAME_LEN)) return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "{00FFFF}New Menu.", "The project name is too long or small! (min 1 - max 30).", "Create", "Exit");
  87.            
  88.             format(MenuInfo[Menu_Tittle], 32, "New Menu");
  89.             MenuInfo[Menu_ID]       = CreateMenu("test", 2, 200.0, 100.0, 150.0, 150.0);
  90.             MenuInfo[Menu_Columns]  = 2;
  91.             MenuInfo[Menu_fX]       = 200.0;
  92.             MenuInfo[Menu_fY]       = 100.0;
  93.             MenuInfo[Menu_Width1]   = 150.0;
  94.             MenuInfo[Menu_Width2]   = 000.0;
  95.  
  96.             ColumnsText[0] = "Column 1";
  97.             ColumnsText[1] = "Culumn 2";
  98.             ItemsText[0][0] = "New Item";
  99.             ItemsText[1][0] = "New Item";
  100.             format(ProjectName, sizeof(ProjectName), "%s", inputtext);
  101.  
  102.             Menu_Update(playerid);
  103.             SFM(MSG_COLOR, "[*] Project created as '%s'.", inputtext);
  104.             return ShowDialog(playerid, DIALOG_PROJECT);
  105.         }
  106.        
  107.         case DIALOG_PROJECT: // Main dialog
  108.         {
  109.             if(!response) return TogglePlayerControllable(playerid, true);
  110.             switch(listitem)
  111.             {
  112.                 case 0: // Save project
  113.                 {
  114.                     new str[512], File:INI, i, date[3], time[3];
  115.                    
  116.                     format(str, 128, "Menu Editor/%s.pwn", ProjectName);
  117.                     INI = fopen(str, io_append);
  118.                     getdate(date[0], date[1], date[2]);
  119.                     gettime(time[0], time[1], time[2]);
  120.                    
  121.                     if(flength(INI) <= 1) fwrite(INI, "/* Menu Editor done by EnzoMetlc - forum.sa-mp.com. Enjoy! */\r\n\r\n");
  122.                     format(str, 128, "// [date] This project was made in: %i/%02i/%02i around at %02i:%02i.", date[0], date[1], date[2], time[0], time[1]);
  123.                     fwrite(INI, str);
  124.                     fwrite(INI, "\r\n\r\n#include <a_samp>\r\n\r\n");
  125.                     format(str, sizeof(str), "static Menu:%s;\r\n\r\n", ProjectName);
  126.                     fwrite(INI, str);
  127.                     fwrite(INI, "public OnFilterScriptInit()\r\n{\r\n");
  128.                     format(str, sizeof(str), "    %s = CreateMenu(\"%s\", %i, %.6f, %.6f, %.6f, %.6f);\r\n", ProjectName, MenuInfo[Menu_Tittle], MenuInfo[Menu_Columns], MenuInfo[Menu_fX], MenuInfo[Menu_fY], MenuInfo[Menu_Width1], MenuInfo[Menu_Width2]);
  129.                     fwrite(INI, str);
  130.                    
  131.                     for(new c = 0; c < MenuInfo[Menu_Columns]; c++)
  132.                     {
  133.                         format(str, sizeof(str), "\r\n    SetMenuColumnHeader(%s, %i, \"%s\");\r\n", ProjectName, c, ColumnsText[c]);
  134.                         fwrite(INI, str);
  135.                         for(i = 0; i < 12; i++)
  136.                         {
  137.                             if(ItemsText[c][i][0] == EOS) break; // There's no more items
  138.                             format(str, sizeof(str), "    AddMenuItem(%s, %i, \"%s\");\r\n", ProjectName, c, ItemsText[c][i]);
  139.                             fwrite(INI, str);
  140.                         }
  141.                     }
  142.  
  143.                     fwrite(INI, "    return 1;\r\n}\r\n\r\npublic OnPlayerSelectedMenuRow(playerid, row)\r\n{\r\n");
  144.                     format(str, sizeof(str), "    if(GetPlayerMenu(playerid) == %s)\r\n", ProjectName);
  145.                     fwrite(INI, str);
  146.                     fwrite(INI, "    {\r\n        switch(row)\r\n        {\r\n");
  147.                     for(i = 0; i < 12; i++)
  148.                     {
  149.                         if(ItemsText[0][i][0] == EOS) break;
  150.                         format(str, sizeof(str), "            case %i: { } // %s\r\n", i, ItemsText[0][i]);
  151.                         fwrite(INI, str);
  152.                     }
  153.                     fwrite(INI, "        }\r\n    }\r\n    return 1;\r\n}\r\n\r\n\r\n\r\n\r\n//-----------------------------------\r\n");
  154.                     fclose(INI);
  155.                    
  156.                     SFM(MSG_COLOR, "[*] Project saved as '%s.txt' in 'scriptfiles/Menu Editor/'.", ProjectName);
  157.                     return ShowDialog(playerid, DIALOG_PROJECT);
  158.                 }
  159.                 case 1: // Finish/cancel project
  160.                 {
  161.                     //Clear data
  162.                     MenuInfo[Menu_Tittle] = '\0';
  163.                     MenuInfo[Menu_Columns] = 0;
  164.                     MenuInfo[Menu_fX] = MenuInfo[Menu_fY] = MenuInfo[Menu_Width1] = MenuInfo[Menu_Width2] = 0.0;
  165.                     for(new i = 0; i < 24; i++) ItemsText[i / 12][i % 12] = "";
  166.                    
  167.                     // Destroy menu
  168.                     HideMenuForPlayer(MenuInfo[Menu_ID], playerid);
  169.                     DestroyMenu(MenuInfo[Menu_ID]);
  170.                     MenuInfo[Menu_ID] = Menu:0;
  171.                    
  172.                     SFM(MSG_COLOR, "[*] Project finished/canceled: %s.", ProjectName);
  173.                     ProjectName = "";
  174.                 }
  175.                 case 2: // Change menu tittle
  176.                 {
  177.                     return ShowPlayerDialog(playerid, DIALOG_CHANGETITTLE, DIALOG_STYLE_INPUT, "{00FFFF}Change menu tittle.", \
  178.                     "{FFFFFF}Write the menu tittle in 32 chars.", "Aceptar", "Atrás");
  179.                 }
  180.                 case 3: // Change menu pos
  181.                 {
  182.                     Editing = EDIT_POSITION;
  183.                     SFM(MSG_COLOR, " ", 0);
  184.                     SFM(MSG_COLOR, "[*] Changing menu's position.", 0);
  185.                    
  186.                     if(!GetPlayerVehicleID(playerid))
  187.                     {
  188.                         SFM(MSG_COLOR, "[*] Use ~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~ to move. And ~k~~VEHICLE_ENTER_EXIT~ to finish.", 0);
  189.                         SFM(MSG_COLOR, "[*] Boost: [~k~~PED_SPRINT~ = fast] - [~k~~SNEAK_ABOUT~ = slow] - [Nothing = normal]", 0);
  190.                     }
  191.                     else
  192.                     {
  193.                         SFM(MSG_COLOR, "[*] Use ~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~ to move. And ~k~~VEHICLE_ENTER_EXIT~ to finish.", 0);
  194.                         SFM(MSG_COLOR, "[*] Boost: [~k~~VEHICLE_ACCELERATE~ = fast] - [~k~~SNEAK_ABOUT~ = slow] - [Nothing = normal]", 0);
  195.                     }
  196.                     return 1;
  197.                 }
  198.                 case 4: // Change menu width
  199.                 {
  200.                     Editing = EDIT_WIDTH;
  201.                     SFM(MSG_COLOR, "[*] Changing menu's width.", 0);
  202.                    
  203.                     if(!GetPlayerVehicleID(playerid))
  204.                     {
  205.                         SFM(MSG_COLOR, "[*] Use ~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~ to move. And ~k~~VEHICLE_ENTER_EXIT~ to finish.", 0);
  206.                         SFM(MSG_COLOR, "[*] Boost: [~k~~PED_SPRINT~ = fast] - [~k~~SNEAK_ABOUT~ = slow] - [Nothing = normal]", 0);
  207.                     }
  208.                     else
  209.                     {
  210.                         SFM(MSG_COLOR, "[*] Use ~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~ to move. And ~k~~VEHICLE_ENTER_EXIT~ to finish.", 0);
  211.                         SFM(MSG_COLOR, "[*] Boost: [~k~~VEHICLE_ACCELERATE~ = fast] - [~k~~SNEAK_ABOUT~ = slow] - [Nothing = normal]", 0);
  212.                     }
  213.                     return 1;
  214.                 }
  215.                 case 5: // View column 1
  216.                 {
  217.                     ShowDialog(playerid, DIALOG_COLUMN1);
  218.                     SFM(MSG_COLOR, "[*] Column #1", 0);
  219.                     return 1;
  220.                 }
  221.                 case 6: // View column 2
  222.                 {
  223.                     ShowDialog(playerid, DIALOG_COLUMN2);
  224.                     SFM(MSG_COLOR, "[*] Column #2.", 0);
  225.                     return 1;
  226.                 }
  227.             }
  228.         }
  229.         case DIALOG_CHANGETITTLE:
  230.         {
  231.             if(!response) return ShowDialog(playerid, DIALOG_PROJECT);
  232.             if(strlen(inputtext) > 31) return ShowPlayerDialog(playerid, DIALOG_CHANGETITTLE, DIALOG_STYLE_INPUT, "{00FFFF}Change tittle", "{FFFFFF}The tittle lenght shouldn't be more than 31 chars.", "Next", "Back");
  233.            
  234.             format(MenuInfo[Menu_Tittle], 32, "%s", inputtext);
  235.             SFM(MSG_COLOR, "[*] Menu's tittle has setted to '%s'.", inputtext);
  236.             return ShowDialog(playerid, DIALOG_PROJECT);
  237.         }
  238.         case DIALOG_COLUMN1:
  239.         {
  240.             if(!response) return ShowDialog(playerid, DIALOG_PROJECT);
  241.             switch(listitem)
  242.             {
  243.                 case 0: // Add item
  244.                 {
  245.                     for(new i = 0; i < 12; i++)
  246.                     {
  247.                         if(ItemsText[0][i][0] == EOS)
  248.                         {
  249.                             ItemsText[0][i] = "New item";
  250.                             SortItemsList(0);
  251.                             ShowDialog(playerid, DIALOG_COLUMN1);
  252.                             SFM(MSG_COLOR, "[*] Item #%i added to column 1.", i + 1);
  253.                             return 1;
  254.                         }
  255.                     }
  256.                    
  257.                     SendClientMessage(playerid, 0xFF0000FF, "[*] Unable to add a new item in the column 1.");
  258.                     return ShowDialog(playerid, DIALOG_COLUMN1);
  259.                 }
  260.                 case 1: ShowPlayerDialog(playerid, DIALOG_COLUMN1HEADER, DIALOG_STYLE_INPUT, "{00FFFF}[Column 1] - Change header:", "{FFFFFF}Write the header for the column 1.", "Next", "Back");
  261.                 default: // An item selected
  262.                 {
  263.                     ItemEditing = listitem - 2;
  264.                     ShowPlayerDialog(playerid, DIALOG_COLUMN1_ITEM, DIALOG_STYLE_INPUT, "{00FFFF}[Column 1] - Edit item:", \
  265.                     "{FFFFFF}Write in 128 chars the item text.\nIf you want to delete this item, leave the input in blank.", "Next", "Back");
  266.                 }
  267.             }
  268.         }
  269.         case DIALOG_COLUMN2:
  270.         {
  271.             if(!response) return ShowDialog(playerid, DIALOG_PROJECT);
  272.             switch(listitem)
  273.             {
  274.                 case 0: // Add item
  275.                 {
  276.                     for(new i = 0; i < 12; i++)
  277.                     {
  278.                         if(ItemsText[1][i][0] == EOS)
  279.                         {
  280.                             ItemsText[1][i] = "New item";
  281.                             SortItemsList(1);
  282.                             ShowDialog(playerid, DIALOG_COLUMN2);
  283.                             SFM(MSG_COLOR, "[*] Item #%i added to column 2.", i + 1);
  284.                             return 1;
  285.                         }
  286.                     }
  287.  
  288.                     SendClientMessage(playerid, 0xFF0000FF, "[*] Unable to add a new item in the column 2.");
  289.                     return ShowDialog(playerid, DIALOG_COLUMN2);
  290.                 }
  291.                 case 1: ShowPlayerDialog(playerid, DIALOG_COLUMN2HEADER, DIALOG_STYLE_INPUT, "{00FFFF}[Column 2] - Change header:", "{FFFFFF}Write the header for the column 1.\n\n{FFFF00}1. If you don't want to use this column, leave the input in blank.\n2. If you want to keep using this column but in blank, just type \"_\" (sin comillas)", "Next", "Back");
  292.                 default: // An item selected
  293.                 {
  294.                     new str[400];
  295.                     ItemEditing = listitem - 2;
  296.                    
  297.                     if(MenuInfo[Menu_Columns] == 1) format(str, 300, "{FFFFFF}Write in 128 chars the item text.\nIf you want to delete this item, leave the input in blank.\n{FF0000}IMPORTANT: This item won't be shown on the menu. See \"Change header\" for more info.\n\n{FFFFFF}This item in columm 1:\n{00FF00}%s", ItemsText[0][ItemEditing]);
  298.                     else format(str, 300, "{FFFFFF}Write in 128 chars the item text.\nIf you want to delete this item, leave the input in blank.\n\nThis item in columm 1:\n{00FF00}%s", ItemsText[0][ItemEditing]);
  299.                     ShowPlayerDialog(playerid, DIALOG_COLUMN2_ITEM, DIALOG_STYLE_INPUT, "{00FFFF}[Column 2] - Edit item:", str, "Next", "Back");
  300.                 }
  301.             }
  302.         }
  303.         case DIALOG_COLUMN1HEADER: // Change column1 header
  304.         {
  305.             if(!(1 <= strlen(inputtext) <= 32)) return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "{00FFFF}[Column 1] - Change header:", "{FF0000}Header's lenght should be between 0 and 32!\r\n{FFFFFF}Try again:", "Next", "Back");
  306.             if(response)
  307.             {
  308.                 format(ColumnsText[0], 32, "%s", inputtext);
  309.                 SFM(MSG_COLOR, "[*] Colum 1 header setted to '%s'.", inputtext);
  310.             }
  311.             return ShowDialog(playerid, DIALOG_COLUMN1);
  312.         }
  313.         case DIALOG_COLUMN2HEADER: // Change column2 header
  314.         {
  315.             if(response)
  316.             {
  317.                 format(ColumnsText[1], 32, "%s", inputtext);
  318.                 MenuInfo[Menu_Columns] = (strlen(inputtext) == 0) ? (1) : (2);
  319.                 SFM(MSG_COLOR, "[*] Colum 2 header setted to '%s'.", inputtext);
  320.             }
  321.             return ShowDialog(playerid, DIALOG_COLUMN2);
  322.         }
  323.        
  324.         case DIALOG_COLUMN1_ITEM: // Edit an item text in column1
  325.         {
  326.             if(response)
  327.             {
  328.                 format(ItemsText[0][ItemEditing], 128, "%s", inputtext);
  329.                 SFM(MSG_COLOR, "[*] Item %i column 1 text setted to '%s'.", ItemEditing, inputtext);
  330.                 SortItemsList(0);
  331.             }
  332.             return ShowDialog(playerid, DIALOG_COLUMN1);
  333.         }
  334.         case DIALOG_COLUMN2_ITEM: // Edit an item text in column2
  335.         {
  336.             if(response)
  337.             {
  338.                 format(ItemsText[1][ItemEditing], 128, "%s", inputtext);
  339.                 SFM(MSG_COLOR, "[*] Item %i column 2 text setted to '%s'.", ItemEditing, inputtext);
  340.                 SortItemsList(1);
  341.             }
  342.             return ShowDialog(playerid, DIALOG_COLUMN2);
  343.         }
  344.         case DIALOG_SELECTCOLUMN:
  345.         {
  346.             if(!response) return 1;
  347.             OnDialogResponse(playerid, (listitem == 0) ? (DIALOG_COLUMN1) : (DIALOG_COLUMN2), true, ItemEditing + 2, "\0");
  348.         }
  349.     }
  350.     return 1;
  351. }
  352.  
  353.  
  354. public OnPlayerUpdate(playerid)
  355. {
  356.     if(Editing == 0) return 1; // Is editing
  357.    
  358.     static key, ud, lr, Float:speed;
  359.     GetPlayerKeys(playerid, key, ud, lr);
  360.    
  361.     if(key == KEY_SPRINT) speed = 10.0;
  362.     else if(key == KEY_WALK) speed = 0.5;
  363.     else speed = 1.0;
  364.    
  365.     switch(Editing)
  366.     {
  367.         case EDIT_POSITION:
  368.         {
  369.             if(ud < 0) MenuInfo[Menu_fY] -= speed; // Up
  370.             if(ud > 0) MenuInfo[Menu_fY] += speed; // Down
  371.             if(lr < 0) MenuInfo[Menu_fX] -= speed; // Left
  372.             if(lr > 0) MenuInfo[Menu_fX] += speed; // Right
  373.            
  374.             format(gStr, sizeof(gStr), "~n~~n~~n~~n~~n~~n~~n~~w~-position-~n~~r~~h~X: ~w~%0.3f~n~~r~~h~Y: ~w~%0.3f~n~~y~Speed: ~w~%0.1f", MenuInfo[Menu_fX], MenuInfo[Menu_fY], speed);
  375.             GameTextForPlayer(playerid, gStr, 60000, 3);
  376.         }
  377.         case EDIT_WIDTH:
  378.         {
  379.             if(ud < 0) MenuInfo[Menu_Width2] -= speed;  // Up
  380.             if(ud > 0) MenuInfo[Menu_Width2] += speed;  // Down
  381.             if(lr < 0) MenuInfo[Menu_Width1] -= speed;  // Left
  382.             if(lr > 0) MenuInfo[Menu_Width1] += speed;  // Right
  383.            
  384.             format(gStr, sizeof(gStr), "~n~~n~~n~~n~~n~~n~~n~~w~-width-~n~~r~~h~X: ~w~%0.3f~n~~r~~h~Y: ~w~%0.3f~n~~y~Speed: ~w~%0.1f", MenuInfo[Menu_Width1], MenuInfo[Menu_Width2], speed);
  385.             GameTextForPlayer(playerid, gStr, 60000, 3);
  386.         }
  387.     }
  388.    
  389.     TogglePlayerControllable(playerid, false);
  390.     Menu_Update(playerid);
  391.     return 1;
  392. }
  393.  
  394.  
  395. public OnPlayerSelectedMenuRow(playerid, row)
  396. {
  397.     if(!Editing && GetPlayerMenu(playerid) == MenuInfo[Menu_ID]) // He pressed "ENTER" while editing
  398.     {
  399.         ItemEditing = row;
  400.         ShowPlayerDialog(playerid, DIALOG_SELECTCOLUMN, DIALOG_STYLE_LIST, "{00FFFF}Edit item - Select Column",\
  401.         "{FFFFFF}Edit in column 1\nEdit in column 2", "Next", "Back");
  402.         return 1;
  403.     }
  404.     return 1;
  405. }
  406.  
  407.  
  408. public OnPlayerExitedMenu(playerid)
  409. {
  410.     if(GetPlayerMenu(playerid) == MenuInfo[Menu_ID] && Editing) // He pressed "ENTER" while editing
  411.     {
  412.         SetTimerEx("ShowDialog", 200, false, "dd", playerid, DIALOG_PROJECT);
  413.         GameTextForPlayer(playerid, "_", 10, 3);
  414.         SFM(MSG_COLOR, "[*] %s edition finished.", (Editing == 1) ? ("Pos") : ("Width"));
  415.         Editing = 0;
  416.     }
  417.     return 1;
  418. }
  419.  
  420.  
  421.  
  422. CMD:menu(playerid)
  423. {
  424.     ShowDialog(playerid, (!IsValidMenu(MenuInfo[Menu_ID])) ? (DIALOG_MAIN) : (DIALOG_PROJECT));
  425.     return 1;
  426. }
  427.  
  428.  
  429. /* Functions */
  430. forward ShowDialog(playerid, dialogid);
  431. public ShowDialog(playerid, dialogid)
  432. {
  433.     if(IsValidMenu(MenuInfo[Menu_ID])) Menu_Update(playerid);
  434.    
  435.     switch(dialogid)
  436.     {
  437.         case DIALOG_MAIN: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "{00FFFF}Main Menu.", "Type your project name below.\nNote that the project name will be your var name for the menu.", "Next", "Exit");
  438.         case DIALOG_PROJECT:
  439.         {
  440.             new str[20 + MAX_NAME_LEN];
  441.             format(str, sizeof(str), "[%s] - Main.", ProjectName);
  442.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, str, \
  443.             "{FFFF00}Save project.\n" \
  444.             "{FFFF00}Finish/Cancel edition.\n" \
  445.             "{FFFFFF}Change tittle.\n" \
  446.             "Change pos\n" \
  447.             "Change width\n" \
  448.             "View column 1\n" \
  449.             "View column 2", \
  450.             "Next", "Exit");
  451.             return 1;
  452.         }
  453.        
  454.         case DIALOG_COLUMN1:
  455.         {
  456.             gStr = "{FFFF00}[+] Add item\n{FFFF00}Change header\n";
  457.             new tmp[300], len;
  458.  
  459.             for(new i = 0; i < 12; i++)
  460.             {
  461.                 if((len = strlen(ItemsText[0][i])) != 0)
  462.                 {
  463.                     if(len < 12) format(tmp, 128, "{00FF00}Item[%02i] {FFFFFF}- %s\n", i + 1, ItemsText[0][i]);
  464.                     else format(tmp, 128, "{00FF00}Item[%02i] {FFFFFF}- %12s[...]\n", i + 1, ItemsText[0][i]);
  465.  
  466.                     strcat(gStr, tmp);
  467.                 }
  468.             }
  469.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "{00FFFF}Column 1", gStr, "Next", "Back");
  470.             return 1;
  471.         }
  472.         case DIALOG_COLUMN2:
  473.         {
  474.             gStr = "{FFFF00}[+] Add item\n{FFFF00}Change header\n";
  475.             new tmp[300], len;
  476.  
  477.             for(new i = 0; i < 12; i++)
  478.             {
  479.                 if((len = strlen(ItemsText[1][i])) != 0)
  480.                 {
  481.                     if(len < 12) format(tmp, 128, "{%s}Item[%02i] {FFFFFF}- %s\n", (MenuInfo[Menu_Columns] == 1) ? ("FF0000") : ("00FF00"), i + 1, ItemsText[1][i]);
  482.                     else format(tmp, 128, "{%s}Item[%02i] {FFFFFF}- %12s[...]\n", (MenuInfo[Menu_Columns] == 1) ? ("FF0000") : ("00FF00"), i + 1, ItemsText[1][i]);
  483.  
  484.                     strcat(gStr, tmp);
  485.                 }
  486.             }
  487.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "{00FFFF}Column 2", gStr, "Next", "Back");
  488.             return 1;
  489.         }
  490.     }
  491.     return 0;
  492. }
  493.  
  494.  
  495. stock Menu_Update(playerid) // Update current menu with the new info
  496. {
  497.     static c, i;
  498.    
  499.     HideMenuForPlayer(MenuInfo[Menu_ID], playerid);
  500.     DestroyMenu(MenuInfo[Menu_ID]);
  501.  
  502.     MenuInfo[Menu_ID] = CreateMenu(MenuInfo[Menu_Tittle], MenuInfo[Menu_Columns], MenuInfo[Menu_fX], MenuInfo[Menu_fY], MenuInfo[Menu_Width1], MenuInfo[Menu_Width2]);
  503.     for(c = 0; c < MenuInfo[Menu_Columns]; c++)
  504.     {
  505.         SetMenuColumnHeader(MenuInfo[Menu_ID], c, ColumnsText[c]);
  506.         for(i = 0; i < 12; i++)
  507.         {
  508.             if(ItemsText[c][i][0] != EOS) AddMenuItem(MenuInfo[Menu_ID], c, ItemsText[c][i]);
  509.         }
  510.     }
  511.     ShowMenuForPlayer(MenuInfo[Menu_ID], playerid);
  512.     return 1;
  513. }
  514.  
  515.  
  516. stock SortItemsList(idx)
  517. {
  518.     new tmp[12][128], i, count;
  519.  
  520.     for(i = 0; i < 12; i++)
  521.     {
  522.         if(ItemsText[idx][i][0] != EOS) format(tmp[count++], 128, "%s", ItemsText[idx][i]);
  523.     }
  524.     for(i = 0; i < 12; i++) format(ItemsText[idx][i], 128, "%s", tmp[i]);
  525.     return 1;
  526. }
  527.  
  528.  
  529. // --- End of script
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement