• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.

Разработка CMS Map Manager

@l3x1s, Предлагаю: не делать рулетку из менеджера карт. И скажу 3-й раз- этого не будет)
Не потому, что не хочу (и не хочу- тоже), а потому что не буду использовать старую систему меню.
 
@l3x1s, тогда тем более глупо, поскольку плагин будет для всех, а не конкретно для вас, а большинству так будет неудобно, к тому же есть те, кто убирает блокировку и затемнение. и игроки ориентируются не на цифры, а на название карт. А значит будет дискомфорт и неудобство.
Понимаю что моё мнение никого не интересует, но не проще вам тогда отдельно заказать доработку, нежели изначально пытаться создать неудобства для других игроков? (Сугубо мое мнение)
 
@D1m0n41k, дык у меня все пока стоит, мой чузер раза 3 был переписан под мои предпочтения, но zhorzh78 просил идей, я их добавил)
но нет, так нет)
 
На сегодняшний день реализовано:
- сложно вспомнить ((
* команды:
say /maps
say /rtv
amx_rtv
amx_mapmenu
amx_votemapmenu

Если чего-то не хватает, возможно оно реализовано автоматически и не требует настройки.
Некоторые фразы еще не выведены в словарь.

Код:
gmm_lastmaps                    "4"        //сколько последних сыгранных карт блокировать для голосования и номинации
gmm_mapsource                    "1"        //источник карт для номинации и автоматического голосования(1- файл, 2- папка /maps/)
gmm_show_changelevel_hud        "1"        //отображать HUD сообщение о смене карты (0- выкл, 1- вкл)
gmm_delayed_changelevel            "5"        //задержка при смене карты, секунд (0- выкл)
gmm_votemap_num                    "3"        //количество карт для номинации (0- запретить номинации)
gmm_autovote_num                "4"        //количество карт для автоматического голосования (0- запретить автоматическую смену карты)
gmm_prevote_countdown            "5"        //отсчет времени до начала голосования, секунд (0- выкл)
gmm_vote_time                    "10"    //продолжительность голосования, секунд
gmm_change_map_new_round        "1"        //менять карту после голосования, с учетом gmm_delayed_changelevel (0- сразу, 1- в конце раунда)
gmm_vote_map_new_round            "1"        //создать голосование (0- сразу, 1- в конце раунда (начале следующего))
gmm_show_countdown_hud            "1"        //отображать HUD сообщение с таймером и результатами ДО и ПОСЛЕ голосования (0- выкл, 1- вкл)
gmm_vote_freeze_on                "1"        //"заморозка игроков" в начале раунда(0- выкл, 1- вкл)
gmm_extendmap_step                "10"    //шаг времени для продления карты, минут (0- выкл. проление)
gmm_extendmap_max                "10"    //максимальное время для продления карты, минут
gmm_rtv_ratio                    "0.6"    //% игроков, необходимых для досрочного голосования
gmm_rtv_timeout                    "3"        //блокировка игрока для досрочного голосования, минут от входа на сервер.
CMSMM_CHAT_PREFIX = ^1[^4CMSMM^1]
CMSMM_NOLASTMAPS = ^1Нет последник карт.
CMSMM_DISABLED_NOMS = ^1Номинация карт недоступна.
CMSMM_SUCCESS_NOMS = ^1Игрок ^4%s ^1номинировал карту ^4%s.
CMSMM_EMPTY_NOMS = ^1Нет номинированных карт.
CMSMM_VOTEMAP_COUNT = ^1Номинировано: ^4%d ^1карт из ^4%d.
CMSMM_NO_SUCCESS = ^4Операция не выполнена!
CMSMM_VOTE_IN_PROGRESS = ^1Идет процесс голосования.
CMSMM_PLAYER_RESTRICT_NOMS = ^1Вы уже номинировали карту.
CMSMM_CHAT_VOTE_END = ^1Голосование завершено!
CMSMM_CHAT_NEXT_MAP = Следующая карта ^4%s
CMSMM_VOTE_IS_COMING_SOON = ^1Ожидается голосование
CMSMM_VOTE_IS_COMING_START = Голосование начнется через %s
CMSMM_VOTE_IS_COMING_END = Голосование закончится через %s
CMSMM_PLAYER_RTV_STATUS = ^4%s ^1проголосовал за досрочную смену карты. Необходимо еще: ^4%d.
CMSMM_PLAYER_RTV_STATUS_DONE = ^1Ваш голос уже учтен.
CMSMM_PLAYER_RTV_STATUS_TIMEOUT = ^1Ваш голос не может быть учтен. Попробуйте позже.
CMSMM_HUD_EXTEND_MAP = Карта будет продлена на %d минут.
CMSMM_HUD_LAST_ROUND = Последний раунд
CMSMM_VOTE_FALSE_RESULT = Результат не определен

Нужны желающие для тестирования :). Заодно, и описание придумаем вместе. Слишком много всего..
 
Код:
// CMS Map Manager configuration
echo Executing CMS Map Manager Configuration File

gmm_lastmaps                    "5"            //сколько последних сыгранных карт блокировать для голосования и номинации
gmm_mapsource                    "1"            //источник карт для номинации и автоматического голосования(1- файл, 2- папка /maps/)
gmm_show_changelevel_hud        "1"            //отображать HUD сообщение о смене карты (0- выкл, 1- вкл)
gmm_delayed_changelevel            "5"            //задержка при смене карты, секунд (0- выкл)
gmm_nominated_num                "3"            //количество карт для номинации (0- запретить номинации)
gmm_autovote_num                "4"            //количество карт для автоматического голосования (0- запретить автоматическую смену карты)
gmm_prevote_countdown            "3"            //отсчет времени до начала голосования, секунд (0- выкл)
gmm_vote_time                    "8"            //продолжительность голосования, секунд
gmm_change_map_new_round        "1"            //менять карту после голосования, с учетом gmm_delayed_changelevel (0- сразу, 1- в конце раунда)
gmm_vote_map_new_round            "1"            //создать голосование (0- сразу, 1- в конце раунда (начале следующего))
gmm_show_countdown_hud            "1"            //отображать HUD сообщение с таймером и результатами ДО и ПОСЛЕ голосования (0- выкл, 1- вкл)
gmm_vote_freeze_on                "1"            //"заморозка игроков" в начале раунда(0- выкл, 1- вкл)
gmm_extendmap_step                "10"        //шаг времени для продления карты, минут (0- выкл. проление)
gmm_extendmap_max                "10"        //максимальное время для продления карты, минут
gmm_rtv_ratio                    "0.5"        //% игроков, необходимых для досрочного голосования
gmm_rtv_timeout                    "3"            //блокировка для досрочного голосования игроками (команда /rtv), минут от входа на сервер.
gmm_rtv_admin_timeout            "5"            //таймаут между голосованиями, минут после последнего неудачного голосования , либо начала карты,
                                            //либо если до конца карты осталось меньше минут, чем в кваре
                                            //иммунитет от блокировки смены карты админом: флаг "l"

gmm_screen_fade                    "1"            //затемнение экрана при голосовании и смене карты
gmm_vote_music                    "1"            //музыка при голосовании (1- вкл, 0- выкл). Файл должен находиться в sound/vote.mp3
                                            //не забудьте добавить файл на FastDl

gmm_adminvote_min                "4"            //минимальное количество карт для голосования от админа(лимит для меню - 6 карт)
gmm_hud_lastround_color            "171 57 57"    //информер ожидания голосования (последний раунд), цвет
gmm_hud_lastround_pos            "0.05 0.27"    //информер ожидания голосования (последний раунд), позиция
gmm_hud_progress_color            "0 50 255"    //информер процесса голосования, цвет
gmm_hud_progress_pos            "0.4 0.4"    //информер процесса голосования, позиция
gmm_hud_votestatus_color        "171 57 57"    //информер статуса карты, таймеров отсчета, цвет
gmm_hud_votestatus_pos            "-1.0 0.3"    //информер статуса карты, таймеров отсчета, позиция
gmm_rtv_nomination_required        "0"            //запретить команду /rtv, если не номинирована ни одна карта
gmm_map_players_bounds            "1"            //использовать ограничения карты по количеству игроков

gmm_autovote_default_map        "2000$ de_dust2_2x2"    //карты по-умолчанию для смены на пустом сервере       
gmm_autovote_status                "1"            //если нет игроков, то вместо автоматического голосования:
                                            //0- сделать рестарт карты
                                            //1- менять карту на случайную
                                            //2- менять карту на дефолтную (gmm_autovote_default_map), если она указана (если не указана или неверная карта- будет случайный выбор)

C++:
На 09.11.18 помимо описания в конфиге:
* 4 режима лимита игры на карте
        - mp_maxrounds    - ограничение по раундам
        - mp_winlimit    - ограничение по победам команды
        - mp_fraglimit    - ограничение по фрагам игрока
        - mp_timelimit    - ограничение по времени
        Определение режима проводится по указанному порядку. Выбирается первый установленный лимит.
    
    * продление карты доступно только для режима mp_timelimit
    * если при голосовании нет ни одного голоса, будет продление карты (если карта по времени)
        При достижении максимального времени продления - смена карты на случайную
    * при gmm_autovote_num = 0 (0- запретить автоматическую смену карты) плагин работает как nextmap.amxx
    * полная замена плагинов: mapsmenu.amxx, nextmap.amxx (их необходимо отключить)
    * консольные команды
        "amx_mapmenu"        меню смены карт
        "amx_votemapmenu"    меню голосования за карту
        "amx_rtv"            запуск досрочного голосования
    * команды в чат
        /rtv                голос за досрочную смену карты
        /maps                главное меню карт
        /maplist            главное меню карт
        /nominate            меню номинации карт
        /lastmaps            меню последних карт
        /noms                меню номинированных карт
    *списки карт:
        - карты для номинации
        - номинированные карты
        - последние карты
        - список карт для смены админом
        - список карт для голосования админом
    *фильтры карт:
        - последние карты
        - заблокированные
        - номинированные
    
    * ограничение на использование команды /rtv (gmm_rtv_timeout - в минутах от захода игрока на сервер)
    * ограничение на использование пунктов смены карты админом (gmm_rtv_timeout - в минутах от начала карты)
        (иммунитет от блокировки смены карты: флаг "l")
    * затемнение экрана при голосовании
    * проигрывание музыки при голосовании (см. конфиг)

    * удаление карт из списка mapslist, если они отсутствуют на сервере
    * квар gmm_map_players_bounds "1"    //использовать ограничения карты по количеству игроков
        ! Формат записи в списке maplist:
            "de_dust2_2x2 5 20",    //карта с ограничением по игрокам(мин / мах)
            "cs_assault",            //карта без ограничений
            - минимум игроков- 1
            - можно указать 1 число- это будет минимум (максимум не учитывается)
            "de_dust2 5"            //карта с ограничением по минимальному кол-ву игроков
        ! Если карт будет недостаточно для построения меню, будут добавлены карты без учета кол-ва игроков
        ! Квар работает только:
            - при загрузке списка mapslist (квар gmm_mapsource "1")
            - для автоматического голосования
            - если на сервере есть игроки

    * запрет на смену карты (голосование) админом, если до конца карты осталось меньше минут,
        чем квар gmm_rtv_admin_timeout (т.е. если ожидается стандартное голосование)
    * автоматизация переключения ошибочно выставленных настроек (авто-фикс "криворукости")
 
@zhorzh78, есть предложение по номинации карты:
Сделать дефайн, при котором невозможно будет номинировать карты первые N мин от начала карты.
Объясняю для чего это нужно: меняется карта, первые зашедшие игроки сразу могут номинировать карту, не дав другим это сделать (так как другие игроки ещё могут подключаться/качать карту), так же этот дефайн будет взаимодействовать с кваром
gmm_map_players_bounds "1"

Так же прошу все же сделать блокировку чата, очень нужная вещь
 
первые зашедшие игроки сразу могут номинировать карту, не дав другим это сделать
Сделать не сложно. Сложно решить: принимать подобные предложения или отклонять из-за их невостребованности.
Чем это грозит? Чем это плохо и на что влияет? Номинирование карты не означает ее победу в голосовании.
 
Предложение следующее

Вывод карт в случайном порядке в меню номинации. Ато обычно идёт по списку, как в файле maps.ini

И в голосовании, чтоб был беспорядочный набор. Обычно идёт так, кто первее номинировал та карта и выше, чтоб такого не было.

Спасибо.
 
Вывод карт в случайном порядке в меню номинации.
Смысл? У меня 100 карт. Хочу de_dust. Где ее искать? Я буду искать по алфавиту, а Вы? На неизвестной странице?
Обычно идёт так, кто первее номинировал та карта и выше, чтоб такого не было.
Так и не будет.
Попутно, просьба. Давайте в предложениях ориентироваться на нормальных игроков, которые думают, что выбирают и думают перед тем, как нажать кнопку.
 
Что-то никто не хочет объяснить необходимость своего предложения :(
Давайте скажу свое мнение:
- нет нужды в перемешивании карт. Это неудобно для номинации, для поиска карты админом.
- если человек хочет играть конкретную карту (или какую-то из списка голосования), он ее выберет. Те, кому все равно на какой карте играть, они ткнут любую кнопку. Понятие "я случайно нажал 1"- это не задача для исправления плагином.
- номинация карты не означает ее победу в голосовании. Нет нужды ее рандомить в списке или ограничивать во времени меню номинаций. Я бы вообще убрал лимит номинаций (и вы можете убрать- есть квар для этого) и пусть номинируют хоть все карты. В любом случае, для списка карт для выбора есть свой лимит.
- чем мешает чат во время голосования? Моя ситуация: игроки хотят обсудить какую карту выбрать, чтобы выбор был по душе большинству.
Попробуйте подобным образом аргументировать свои предложения и у них станет больше шансов для появления в плагине.
 
- чем мешает чат во время голосования? Моя ситуация: игроки хотят обсудить какую карту выбрать, чтобы выбор был по душе большинству.
Попробуйте подобным образом аргументировать свои предложения и у них станет больше шансов для появления в плагине.
У меня на сервере около 50 карт, 25 последних в блоке. Многие номинируют деф карты и новые не выбирают, так как в чат пишут и флудят, чтобы выбирали цифру N. Соответственно новую карту никто не увидит опять и серв начинает бомбить на тех, кто просил ту или иную карту выбрать. Поэтому рандом и мут чата нужен
 
C++:
gmm_vote_block_chat          "0"            //блокировка чата при голосовании:
                                            //0 -не блокировать
                                            //1- блокировать текстовый чат
                                            //2- блокировать голосовой чат
                                            //3- блокировать текстовый и голосовой чат
 
@zhorzh78, спасибо)

И в голосовании, чтоб был беспорядочный набор. Обычно идёт так, кто первее номинировал та карта и выше, чтоб такого не было.
При голосовании рандом карт и цифр бы ещё и идеально, буду тестить в пух и прах)
 
Назад
Сверху