Any game Add Admin Menu

steelxxl

Участник
Сообщения
5
Реакции
3
Add Admin Menu
Не большой плагин, добавляющий несколько функций в админ-меню, которые могут пригодиться в управлении сервером.
Идеи, реализованные в данном плагине, взяты из других подобных. Так что на первоисточник не претендую:) Делалось всё это для своего сервера, для удобства.
И так.
Прикреплены три файла:
- собственно плагин mc_adminmenu.smx (его сюда /addons/sourcemod/plugins/)
- файл mc_adminmenu.ini (его сюда /addons/sourcemod/configs/)
- ну и, сам исходник

В админ-меню появится дополнительный пункт "Дополнительные функции".

В плагине реализованы три основные функции:
  1. 1. Управление игроками: (*)
    - Переместить конкретного игрока в другую команду (T, CT, Spec)
    - Переместить всех игроков в спектаторы
    - Поменять команды местами
  2. 2. Управление сервером: (*)
    - Установить пароль на сервер (с возможностью снять его без перезагрузки сервера)
    - Перезагрузка сервера (по таймаутам, с возможностью отмены перезагрузки)
  3. 3. Управление плагинами: (**)
    - Изменить конкретный плагин
    - Выгрузить все плагины (***)
    - Загрузить все плагины (***)
    - Переместить все плагины из папки plugins в папку plugins/disabled

  • * - Доступ к опции имеют админы с флагом ADMFLAG_CUSTOM1
  • ** - Доступ к опции имеют админы с флагом ADMFLAG_ROOT
  • *** - Выгрузить/Загрузить - имеется ввиду, что плагины будут выгружены из памяти сервера, но останутся в папке plugins. Если вы выгрузите плагин, то после перезагрузки выгруженный плагин снова будит работать как и прежде.

Касательно файла mc_adminmenu.ini.
Файл имеет следующую структуру:
PHP:
[PASSWORDS]
pass1
pass2

[PLUGINS]
plugins1.smx
plugins2.smx
plugins3.smx
После строки
PHP:
[PASSWORDS]
идёт список паролей, который будит отображаться в меню. Обращаю внимание, что те же ограничения по символам, что приняты в названиях файлов, применимы и здесь. Вы, конечно, можете в файле вписать какой угодно пароль, но вот на сервер зайти, после установки подобного пароля, вы едва ли сможете. Так что аккуратнее :)
После строки
PHP:
[PLUGINS]
идёт список плагинов-исключений. Т.е. на те плагины, что есть в данном списки никак не повлияют действия из админ-меню. При попытки изменить их работу в игре вы увидите следующие сообщение:
PHP:
[warning] Работу этого плагина нельзя изменить из меню

Вот вроде и всё что касается описания. Спасибо за внимание!:)
 

Вложения

  • mc_adminmenu.smx
    13.5 КБ · Просмотры: 249
  • mc_adminmenu.ini
    258 байт · Просмотры: 275
  • mc_adminmenu.sp
    30.1 КБ · Просмотры: 261
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
2. Управление сервером:
- Установить пароль на сервер (с возможностью снять его без перезагрузки сервера)
- Перезагрузка сервера (по таймаутам, с возможностью отмены перезагрузки)
3. Управление плагинами: (**)
- Изменить конкретный плагин
- Выгрузить все плагины (***)
- Загрузить все плагины (***)
- Переместить все плагины из папки plugins в папку plugins/disabled

На это всё лучше бы от рут сделать.
 

steelxxl

Участник
Сообщения
5
Реакции
3

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
PHP:
	AddMenuItem(menu_, "ChTeamClnt_", 	"[1] Сменить команду игроку"); 
	AddMenuItem(menu_, "AllToSpec_", 	"[2] Переместить всех в спектаторы"); 
	AddMenuItem(menu_, "ChTeamsClnts_", "[3] Поменять команды местами");
А циферки зачем, они же и так те же будут в меню

И да, собственно для вывода списка игроков (я про код перемещения) есть AddTargetsToMenu, однако в этом случае было бы лучше использовать идею TeamSwitch (правда этот код немного подправлен мной....):
PHP:
	new cTeam;
	decl String:buffer[64], String:cBuffer[5];
	
	for( new i = 1; i < MaxClients; i++ )
		if( IsClientInGame(i) )
		{
			cTeam = GetClientTeam(i);
			if( cTeam > 1 )
			{
				if( event == TeamSwitchEvent_ToSpec)
					Format(buffer, sizeof(buffer),"[%s] %N", ( cTeam == 2 ? teamName1 : teamName2 ),i);
				else
					Format(buffer, sizeof(buffer),"[%s] [%s] %N",( switchOn[i] ? 'X' : ' ' ),( cTeam == 2 ? teamName1 : teamName2 ),i);
				IntToString(i, cBuffer, sizeof(cBuffer));
				AddMenuItem(playerMenu, cBuffer, buffer);
			}
		}
teamName1 и 2 это в моем случае "T" и "CT", и данное меню не выводит наблюдателей. Зато ник выводится вроде "[CT] [x] NICK", [x] это метка о перемещении, у меня перемещение происходит только при смерти или начале раунда (кроме перехода в наблюдатели)

В конце куча пустых строк....
 

steelxxl

Участник
Сообщения
5
Реакции
3
А циферки зачем, они же и так те же будут в меню
Хотелось сделать какое-то подобие списка, сделал так, как пришло в голову:)

По поводу, AddTargetsToMenu - не помню точно (скрипт писался давно), но если мне не изменяет память, в списке был еще SourceTV бот, которого я никак не смог вытравить от туда. Вероятно, просто знаний не хватает:)

По поводу идеи TeamSwitch и обозначения команды игрока. Это конечно информативно, но, по моему, перегружает информацией.

В конце куча пустых строк....
Виновен, каюсь :pardon: Перед тем как сюда закидывать скрипт я его чистил от всякого хлама, строки остались как побочный эффект этого процесса.
 

Konstantin

Участник
Сообщения
1,775
Реакции
759
steelxxl, Подожди, а что с adminmenu_custom.txt? Может, я туплю, но, по-моему, всё это можно реализовать именно с помощью этого файла (за исключением, наверное, загрузки/выгрузки плагинов)! Или есть какая-то особенность?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #7
Konstantin, Не всё. Без дополнительных плагинов (team switch, например) ты сможешь только устанавливать пароль на сервер и перезапускать его.
 
Последнее редактирование:
Сверху Снизу