Menu Basic Commands

Menu Basic Commands 1.0.0

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #1
Menu Basic Commands

Описание:
  • Специальное меню серверных команд игрока, собранных воедино для удобства:
44d2221fc426.jpg


Требования:
  • SourceMod версии 1.5.0 или выше

Поддерживаются игры:
  • Любая игра

Установка:
  • Переместите или скопируйте файл "MenuBasicCommands.sp" в директорию addons\sourcemod\scripting сервера.
  • Скомпилируйте плагин. Переместите или скопируйте полученный файл "MenuBasicCommands.smx" в директорию addons\sourcemod\plugins сервера.

Команды:
  • !com или !команды.

Настройка:
  • C-подобный:
    String:s[I]Command[/I][][] = {"[B]nominate[/B]", "[B]rtv[/B]", "[B]voteban[/B]", "[B]votekick[/B]", "[B]votemute[/B]", "[B]!rs[/B]", "[B]!settings[/B]", "[B][/B]"},
    String:s[I]Display[/I][][] = {"[B]Предложить карту[/B]", "[B]Голосовать за смену карты[/B]", "[B]Голосовать за бан игрока[/B]", "[B]Голосовать за кик игрока[/B]", "[B]Голосовать за мут игрока[/B]",
    "[B]Сбросить свой счёт[/B]", "[B]Настройки игры[/B]", "[B]Меню VIP[/B]"};
    sCommand - команды от плагинов, sDisplay - вписать текст для отображения в меню.
    Если sCommand оставляется пустым, а sDisplay заполнено, то это будет выделенный белым текст/будущее меню.

PHP:
v1.0.0  (??.??.2014) - пробная версия (индивидуума);
v1.0.0  (19.12.2015) - официальная публичная версия.
 
Последнее редактирование модератором:

★$$StOk$$★

Участник
Сообщения
629
Реакции
187
Re: [SourceMod] ServerInfoMenu (Приват)

Пусть у тебя лучше берут. А иначе я сам обломаю ему "кайф". :-D

Ладно, коли он всё равно спёр идею, то пусть тогда пользуются все! Оффтоп
PHP:
new const String:sMD[][] = {"Предложить карту", "Голосовать за смену карты", "Голосовать за бан игрока", "Голосовать за кик игрока", "Голосовать за мут игрока",
    "Сбросить свой счёт", "Правила сервера", "Настройки игры", "Статистика", "Меню жетонов", "Меню VIP"},
    String:sMI[][] = {"nominate", "rtv", "voteban", "votekick", "votemute", "!rs", "rules", "!settings", "gameme", "", ""};
new Handle:hMC;

public Plugin:myinfo = 
{
    name = "Menu Basic Commands",
    author = "AlmazON",
    description = "Меню основных команд",
    version = "1.0.0",
    url = "http://www.hlmod.ru"
}

public OnPluginStart()
{
    if (AddCommandListener(SC, "say") && AddCommandListener(SC, "say_team"))
    {
        hMC = CreateMenu(SM);
        SetMenuTitle(hMC, "Команды игрока:\n \n");
        for (new i; i < 11; i++)
        {
            if (sMD[i][0] != '\0') AddMenuItem(hMC, sMI[i], sMD[i], sMI[i][0] != '\0' ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
        }
    }else SetFailState("AddCommandListener is not available on the current game!");
}

public Action:SC(c, String:n[], a)
{
    if (c && IsClientInGame(c))
    {
        decl String:t[16];
        if (GetCmdArg(1, t, 16) && !(strcmp(t, "!com", false) && strcmp(t, "!команды")))
        {
            DisplayMenu(hMC, c, 60);
            return Plugin_Handled;
        }
    }return Plugin_Continue;
}

public SM(Handle:h, MenuAction:a, c, o)
{
    if (a == MenuAction_Select)
    {
        decl String:b[10];
        if (GetMenuItem(h, o, b, 10)) FakeClientCommand(c, "say %s", b);
    }
}
Команды для вызова меню игроком, в чате: !com или !команды.
sMD[][] - вписываем отображение самого меню, sMI[][] - команды от плагинов.
Где строчка for (new i; i < 11; i++): 11 - это количество добавленных вами команд.
Если sMI[][] оставляется пустым, а sMD[][] заполнено, то это будет как некий текст (выделено белым), точнее - будущее меню.
Данный поступок заслуживает уважения.
 

SlavON

Добрая душа
Сообщения
1,582
Реакции
326
А можно сделать чтобы меню не пропадало после выбора команды?
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #11
биндить игрокам команды?
Именно биндить - нельзя, но выполнять команду от имени клавиши - можно.
Можно вспомнить и
PHP:
forward Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon, &subtype, &cmdnum, &tickcount, &seed, mouse[2]);
 

Kaptain

Школьник
Сообщения
912
Реакции
489
!com не открывает.

PHP:
L 11/08/2015 - 10:38:57: [SM] Displaying call stack trace for plugin "MenuBasicCommands.smx":
L 11/08/2015 - 10:38:57: [SM]   [0]  Line 23, MenuBasicCommands.sp::OnPluginStart()

PHP:
new const String:sMD[][] = {"[ADMIN МЕНЮ]", "[VIP TEST]", "[VIP МЕНЮ]", "[СБРОС СЧЁТА]", "[СМЕНА КАРТЫ]",
 "[БАН ИГРОКА]", "[КИК ИГРОКА]", "[МУТ ИГРОКА]", "[ПРЕДЛОЖИТЬ КАРТУ]"},
	String:sMI[][] = {"!admin", "!viptest", "!vip", "!rs", "votemap", "voteban", "votekick", "votemute", "nomination"};
new Handle:hMC;

public Plugin:myinfo = 
{
	name = "Menu Basic Commands",
	author = "AlmazON",
	description = "Меню основных команд",
	version = "1.0.0",
	url = "http://www.hlmod.ru"
}

public OnPluginStart()
{
	if (AddCommandListener(SC, "say") && AddCommandListener(SC, "say_team"))
	{
		hMC = CreateMenu(SM);
		SetMenuTitle(hMC, "Команды сервера:\n \n");
		for (new i; i < 11; i++)
		{
			if (sMD[i][0] != '\0') AddMenuItem(hMC, sMI[i], sMD[i], sMI[i][0] != '\0' ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
		}
	}else SetFailState("AddCommandListener is not available on the current game!");
}

public Action:SC(c, String:n[], a)
{
	if (c && IsClientInGame(c))
	{
		decl String:t[16];
		if (GetCmdArg(1, t, 16) && !(strcmp(t, "!com", false) && strcmp(t, "!команды")))
		{
			DisplayMenu(hMC, c, 60);
			return Plugin_Handled;
		}
	}return Plugin_Continue;
}

public SM(Handle:h, MenuAction:a, c, o)
{
	if (a == MenuAction_Select)
	{
		decl String:b[10];
		if (GetMenuItem(h, o, b, 10)) FakeClientCommand(c, "say %s", b);
	}
}
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #14
Кирилл Спиридонов, кинул не ссаму ошибку, а только её описание
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #17
Замените все:
На
PHP:
for (new i; i < sizeof(sMI); i++)
И считать ничего не надо, только заполнять обе "колонки" строк. Оффтоп
 

Kaptain

Школьник
Сообщения
912
Реакции
489
Замените все:На
PHP:
for (new i; i < sizeof(sMI); i++)
И считать ничего не надо, только заполнять обе "колонки" строк. Оффтоп

Заменил,всё работает! Спасибо большое!
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #19
Menu Basic Commands v1.0.0 (релиз)

Обновлено до версии 1.0.0 (оф).
Изменения:
Оптимизация всего кода (поддерживается SM от v1.5.0).
Удобное добавление команд в меню, путём заполнения лишь sCommand (сами команды других плагинов) и sDisplay (текст, отображаемый в меню).
Если sCommand оставляется пустым, а sDisplay заполнено, то это некая заметка для игроков, типа "Скоро появится" - будущее меню.
Команды для открытия спецменю (com и команды) теперь могут быть с любым знаком перед собой, например: *Com
 
Последнее редактирование:

BosscoSport

Участник
Сообщения
199
Реакции
24
Кто либо компили плагин? скиньте пожалуйста
 
Сверху Снизу