Skocz do zawartości

Rekomendowane odpowiedzi

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.

 

 

 

Sygnatura użytkownika

creativve.pro

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

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);

Sygnatura użytkownika

ŁAJCIOR 😎🤙

 

» Steam

» Discord: MartinezMajkutez#0001
» PluginyCS.pl - Rynek pluginów SourceMod

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Bioły czy zrobić tak?

 

@edit dobra źle zrozumiałem, ale mógłbyś mi napisać jak ta funkcja ma wyglądać?

Edytowane przez Elite

Sygnatura użytkownika

creativve.pro

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

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;
	}
}

 

Sygnatura użytkownika

ŁAJCIOR 😎🤙

 

» Steam

» Discord: MartinezMajkutez#0001
» PluginyCS.pl - Rynek pluginów SourceMod

  • Dziękuję
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...