Skocz do zawartości
Pawel

[Poradnik] Proste menu - CS:GO

Rekomendowane odpowiedzi

Witam wszystkich udostępniam tutaj poradnik ze starego forum :)

W ostatnim czasie przybyło nam kilku opiekunów dlatego uznałem ,że może im się przydać umiejętność napisania jakiegoś menu. Z doświadczenia wiem ,że będą oni nie jednokrotnie z tego korzystać, więc zaczynajmy.

Na początku musimy dodać includy. Domyślnie w programie SPEdit przy tworzeniu nowego skryptu mamy 2 includy.

#include <sourcemod>
#include <sdktools>

Nie ma sensu usuwać żadnego include jeśli nie będziemy go używać, ponieważ tak czy tak biblioteka się nie załączy i nie będzie żadnych errorów.

Po includach dodajemy:

#pragma semicolon 1
#pragma newdecls required

Dzięki tym dwóm linijkom będziemy pamiętać o nowej składni .

Jeżeli chcemy możemy również dodać info o autorze pluginu czyli po prostu o sobie.

public Plugin myinfo = 
{
	name = "Nazwa Pluginu",
	author = "Autor",
	description = "Opis Pluginu",
	version = "Wersja Pluginu",
	url = "Link do np. swojego profilu steam lub strony."
};

Po w miarę krótkim wstępie przechodzimy do startu pluginu. 
W tym celu do:

public void OnPluginStart()
{

}

dodajemy:

RegConsoleCmd("sm_tutorial", Tutorial_CMD);

 

W tym momencie zarejestrowaliśmy swoją komendę oraz jej callback.
Eh5hbf3.png

Callback posłuży nam do wywołania akcji podczas wpisania komendy.

Następnym krokiem będzie bezpośrednie zbudowanie menu. W tym celu rozpoczynamy nową akcję z naszym callbackiem.

public Action Tutorial_CMD(int client, int args)
{

}

Po rozpoczęciu akcji tworzymy menu:
 

Menu yMenu = new Menu(yMenu_Handler);

Ja moje menu nazwałem "yMenu" wy możecie wprowadzić tam własną nazwę. Dodatkowo w miejscu gdzie jest "yMenu_Handler" możecie zrobić to samo.
Teraz należy ustawić jakiś tytuł menu. Robimy to poprzez wpisanie.

yMenu.SetTitle("Proste Menu");

Gdy już to zrobimy możemy dodać różne opcje wyboru np. jaki jest link do grupy steam oraz kto jest właścicielem serwera. (Sorry ale nie mam żadnego pomysłu.)

yMenu.AddItem("1", "Grupa Steam");
yMenu.AddItem("2", "Administracja");

Nasze menu automatycznie będzie miało przycisk zamknięcia pod "9". Jednak jeżeli chcemy aby był on pod następną opcją ( w tym przypadku pod 3, ponieważ nasza ostatnia opcja to 2) dodajemy do kodu:

yMenu.AddItem("no", "Zamknij");
yMenu.ExitButton = false;


Możemy również ustalić przez jaki czas nasze menu będzie się wyświetlać w moim przypadku będzie to 30 sekund, więc do kodu dodaję:

yMenu.Display(client, 30);

Następnie odowłujemy się do naszego handlera.

public int yMenu_Handler(Menu menu, MenuAction action, int client, int Position)
{

}

Do tego dodajemy:

if(action == MenuAction_Select)
{
	char Item[32];
	GetMenuItem(menu, Position, Item, sizeof(Item));
	if(StrEqual(Item, "1"))
	{
		PrintToChat(client, "Link do grupy steam: https://steamcommunity.com/groups/ArenaSkilla_pl
	}
	else if(StrEqual(Item, "2"))
	{
		PrintToChat(client, "Wypisana administracja");
	}
}
else if(action == MenuAction_End)
CloseHandle(menu);

 

Krótkie wyjaśnienie jeżeli wybierzemy opcję numer 1 na chacie wyświetli nam się link do grupy steam. Do tego użyliśmy funkcji StrEqual.

Jednak jeżeli wybierzemy zamiast opcji numer 1 opcję numer 2 na chacie wyświeli nam się administracja serwera. Dlatego do:

if(StrEqual(Item, "2"))

dodaliśmy słowo "else".

Funkcja "PrintToChat" jak można się domyślić służy do napisania tekstu na chacie.
 

Cały kod powinien wyglądać tak:

#include <sourcemod>
#include <sdktools>

#pragma newdecls required
#pragma semicolon 1

public Plugin myinfo = 
{
	name = "Proste Menu",
	author = "Yamakashi",
	description = "Proste Menu",
	version = "1.0",
	url = "http://forum.arenaskilla.pl/"
};

public void OnPluginStart()
{
	RegConsoleCmd("sm_tutorial", Tutorial_CMD);
}

public Action Tutorial_CMD(int client, int args)
{
	Menu yMenu = new Menu(yMenu_Handler);
	yMenu.SetTitle("Proste Menu");
	yMenu.AddItem("1", "Grupa Steam");
	yMenu.AddItem("2", "Administracja");
	yMenu.AddItem("no", "Zamknij");
	yMenu.ExitButton = false;
	yMenu.Display(client, 30);
}

public int yMenu_Handler(Menu menu, MenuAction action, int client, int Position)
{
	if(action == MenuAction_Select)
	{
		char Item[32];
		GetMenuItem(menu, Position, Item, sizeof(Item));
		if(StrEqual(Item, "1"))
		{
			PrintToChat(client, "Link do grupy steam: https://steamcommunity.com/groups/ArenaSkilla_pl");
		}
		else if(StrEqual(Item, "2"))
		{
			PrintToChat(client, "Wypisana administracja");
		}
	}
	else if(action == MenuAction_End)
		CloseHandle(menu);
}

Dorzucam plik do pobrania :) 

poradnik.sp

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Stare forum [*]

Nadal fajny poradnik. :pepeOK:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobry poradnik :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Postarałeś się :FeelsOkayMan:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najs 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobry poradnik!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobry poradnik 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeden z lepszych poradników jak był!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobry poradnik :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobry poradnik! 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×