Elite Napisano 8 Stycznia Witam, Mam pytanie dotyczące tworzenia menu. A mianowicie piszę pewien plugin. To akurat nie ważne jaki, ale chciałbym zrobić coś takiego, że stworzę jakieś przykładowe menu. I chciałbym zrobić, aby komendą sm_menu2 od razu odpaliło się 2 menu. To które, włącza się po kliknięciu na pierwszą opcje. Nie wiem czy napisałem to zrozumiale także jakby co to pisać. Spoiler #include <sourcemod> public void OnPluginStart() { RegConsoleCmd("sm_menu", MenuCommand); } public Action MenuCommand(int client, int args) { Menu menu = new Menu(MenuCommand_Handler); menu.SetTitle("Moje menu :)"); menu.AddItem("", "Opcja"); menu.AddItem("", "Opcja druga"); menu.ExitButton = true; menu.Display(client, MENU_TIME_FOREVER); } public int MenuCommand_Handler(Menu menu, MenuAction action, int client, int position) { if (action == MenuAction_End) { delete menu; } switch (action) { case MenuAction_Select: { switch (position) { case 0:Opcja(client); case 1:OpcjaDruga(client); } } case MenuAction_End:delete menu; } } void Opcja(int client) { Menu menu = new Menu(Opcja_Handler); menu.SetTitle("Moje drugie menu :)"); menu.AddItem("", "Opcja"); menu.AddItem("", "Opcja druga"); menu.ExitButton = true; menu.Display(client, MENU_TIME_FOREVER); } public int Opcja_Handler(Menu menu, MenuAction action, int client, int position) { if (action == MenuAction_End) { delete menu; } void OpcjaDruga(int client) { Menu menu = new Menu(OpcjaDruga_Handler); menu.SetTitle("Moje trzecie menu :)"); menu.AddItem("", "Opcja"); menu.AddItem("", "Opcja druga"); menu.ExitButton = true; menu.Display(client, MENU_TIME_FOREVER); } public int OpcjaDruga_Handler(Menu menu, MenuAction action, int client, int position) { if (action == MenuAction_End) { delete menu; } // Mogą być jakiś błędy, ale pisałem na szybko. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Bioły 1 Napisano 8 Stycznia Możesz to zrobić na 2 sposoby. Sposób 1 Tworzysz komendę sm_menu2 która będzie wywoływać funkcje Opcja(client). Sposób 2 Tworzysz komendę sm_menu2 która będzie zawierać całą funkcje Opcja(...), a w pierwszym menu będziesz to wywoływać w taki sposób: CallbackKomendy(client, 0); Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite Napisano 8 Stycznia (edytowane) @Bioły czy zrobić tak? @edit dobra źle zrozumiałem, ale mógłbyś mi napisać jak ta funkcja ma wyglądać? Edytowane 8 Stycznia przez Elite Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Bioły 1 Napisano 8 Stycznia Sposób 1 public void OnPluginStart() { RegConsoleCmd("sm_menu", MenuCommand); RegConsoleCmd("sm_menu2", Menu2Command); } public Action Menu2Command(int client, int args) { Opcja(client); return Plugin_Handled; } Sposób 2 public void OnPluginStart() { RegConsoleCmd("sm_menu", MenuCommand); RegConsoleCmd("sm_menu2", Menu2Command); } public Action Menu2Command(int client, int args) { Menu menu = new Menu(Opcja_Handler); menu.SetTitle("Moje drugie menu :)"); menu.AddItem("", "Opcja"); menu.AddItem("", "Opcja druga"); menu.ExitButton = true; menu.Display(client, MENU_TIME_FOREVER); return Plugin_Handled; } public int MenuCommand_Handler(Menu menu, MenuAction action, int client, int position) { if (action == MenuAction_End) { delete menu; } switch (action) { case MenuAction_Select: { switch (position) { case 0:Menu2Command(client, 0); case 1:OpcjaDruga(client); } } case MenuAction_End:delete menu; } } Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite Napisano 8 Stycznia Wszystko działa można zamknąć dzięki. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach