[Любая игра] Add Admin Menu

Тема в разделе "Новые плагины", создана пользователем steelxxl, 24 май 2013.

  1. steelxxl

    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 КБ
      Просмотров:
      166
    • mc_adminmenu.ini
      Размер файла:
      258 байт
      Просмотров:
      161
    • mc_adminmenu.sp
      Размер файла:
      30,1 КБ
      Просмотров:
      159
    Последнее редактирование: 24 май 2013
    R1KO и CTe6eJIeK_vRn нравится это.
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    На это всё лучше бы от рут сделать.
     
  3. steelxxl

    steelxxl

    Сообщения:
    5
    Симпатии:
    3
    Не большая очипятка в описании к
    имеют доступ админ с флагом ADMFLAG_CUSTOM1. Так, мне кажется, правильнее.
    Выше поправил.
     
    Pricolist нравится это.
  4. KorDen

    KorDen Atra esterní ono thelduin!

    Сообщения:
    2.194
    Симпатии:
    1.398
    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 
    1MaxClientsi++ )
            if( 
    IsClientInGame(i) )
            {
                
    cTeam GetClientTeam(i);
                if( 
    cTeam )
                {
                    if( 
    event == TeamSwitchEvent_ToSpec)
                        
    Format(buffersizeof(buffer),"[%s] %N", ( cTeam == teamName1 teamName2 ),i);
                    else
                        
    Format(buffersizeof(buffer),"[%s] [%s] %N",( switchOn[i] ? 'X' ' ' ),( cTeam == teamName1 teamName2 ),i);
                    
    IntToString(icBuffersizeof(cBuffer));
                    
    AddMenuItem(playerMenucBufferbuffer);
                }
            }
    teamName1 и 2 это в моем случае "T" и "CT", и данное меню не выводит наблюдателей. Зато ник выводится вроде "[CT] [x] NICK", [x] это метка о перемещении, у меня перемещение происходит только при смерти или начале раунда (кроме перехода в наблюдатели)

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

    steelxxl

    Сообщения:
    5
    Симпатии:
    3
    Хотелось сделать какое-то подобие списка, сделал так, как пришло в голову:)

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

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

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

    Konstantin

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

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    Konstantin, Не всё. Без дополнительных плагинов (team switch, например) ты сможешь только устанавливать пароль на сервер и перезапускать его.
     
    Последнее редактирование: 24 май 2013
    Konstantin нравится это.