1. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    Автор: Mistrick
    Источник: amx-x
    Версия: 2.5.60 от 14.08.2016


    post-103470-1395321639.jpg
    Описание:
    Расширенный плагин смены карты. Делается и фиксится на протяжении 3 лет, так что поддержка есть.

    Особенности:
    - Работает со стандартным nextmap
    - Досрочное голосование
    - Номинация карт
    - Ночной режим
    - Блокировка прошлых карт
    - Последний раунд
    - Выставление приоритета количества игроков для голосования (Важно: это нежесткое ограничение, если у вас мало карт для текущего онлайна, то будут добавлены остальные)

    Требования:
    - АМХХ 1.8.2 и выше (!Работает на 1.8.1, но не исключены баги самого АМХХ с динамическими массивами)
    - Желательно использовать вменяемое значение mp_chattime 3-7 (квар влияет на длительность смены карты)

    Настройки:
    квары в mapmanager.cfg

    PHP:
    mapm_change_type //:: тип смены карты :: 0 - после голосования, 1 - в конце раунда, 2 - в конце карты
    mapm_start_vote_before_end //:: за сколько минут до конца карты начинать голосование
    mapm_show_result_type //:: тип вывода результатов голосования :: 0 - выкл, 1 - menu, 2 - hud ! (Если вам нужен выбор оружия после выбора в голосовании ставте 0 или 2)
    mapm_show_selects //:: вывод информации о выборе :: 0 - disable, 1 - all
    mapm_start_vote_in_new_round //:: начинать голосование в новом раунде (действует на ртв) :: 0 - disable, 1 - enable
    mapm_freeze_in_vote :: заморозить игроков во время голосования (только при включенном mapm_start_vote_in_new_round//:: 0 - disable, 1 - enable
    mapm_black_screen_in_vote //:: затемнять экран на время голосования //:: 0 - disable, 1 - enable
    mapm_last_round //:: последний раунд, дает доиграть независимо от времени до конца карты :: 0 - disable, 1 - enable
    mapm_change_to_default_map //:: через сколько минут поставить карту по умолчанию(когда на сервере нет игроков) :: 0 - выключить
    mapm_default_map
    mapm_extended_map_max 
    //:: максимальное число продления карты
    mapm_extended_time //:: время продления в минутах
    mapm_rtv_mode //:: режим ртв :: 0 - проценты, 1 - игроки
    mapm_rtv_percent //:: значение от 0 до 100
    mapm_rtv_players
    mapm_rtv_change_type 
    //:: тип смены карты при ртв :: 0 - после голосования, 1 - в конце раунда
    mapm_rtv_delay //:: задержка в начале карты для блока ртв
    mapm_nom_dont_close_menu //:: не закрывать меню номинации карт, после выбора карты :: 0 - выключено, 1 - включено
    mapm_nom_del_noncur_online //:: Если включено, то при голосовании будут удалены номинированные карты, не подходящие по онлайну :: 0 - выключено, 1 - включено.
    mapm_night_time //:: время включения ночного режима
    В исходнике:
    Код:
    #define FUNCTION_NEXTMAP - замена стандартного nextmap, если закомментировать плагин будет работать со стандартным
    #define FUNCTION_RTV - добавление функции ртв
    #define FUNCTION_NOMINATION - добавление функции номинации
    #define FUNCTION_NIGHTMODE - добавление функции ночного режима
    #define FUNCTION_NIGHTMODE_BLOCK_CMDS - блокировка стандартных команд при ночном режиме, чтобы настроить/расширить ищите g_szBlockedCmds
    #define FUNCTION_BLOCK_MAPS - добавление функции блокировки прошлых карт
    #define FUNCTION_SOUND - добавление функции воспроизведения звуков
    #define SELECT_MAPS 5 - число карт в голосовании(максимум: 8)
    #define PRE_START_TIME 5 - время до голосования
    #define VOTE_TIME 10 - время голосования в секундах
    #define NOMINATED_MAPS_IN_MENU 3 - число номинированных карт в голосовании
    #define NOMINATED_MAPS_PER_PLAYER 3 - количество карт, которые может номинировать каждый игрок
    #define BLOCK_MAP_COUNT 10 - число, на которое блокируется прошлая карта от голосования
    #define MAX_ROUND_TIME 3.5 - максимальная длительность раунда, при которой будет происходить увеличение квара mapm_start_vote_before_end
    #define MIN_DENOMINATE_TIME 3 - время защиты от спама отмены номинации в секундах
    Команды чата:
    nextmap, currentmap,rtv, timeleft
    maps - вывод меню со списком карт

    Команды консоли:
    mapm_startvote - запуск голосования администратором
    mapm_stopvote - отмена голосования администратором

    Нативы для скриптеров:

    PHP:
    /**
    * Проверка на ночной режим. Если включен вернет true, иначе false.
    */
    native is_night_mode();

    /**
    * Форвард, вызываемый во время начала отсчета.
    */
    forward mapmanager_prestartvote();

    /**
    *  Форвард, вызываемый во время первого вывода меню голосования.
    */
    forward mapmanager_startvote();

    /**
    *  Форвард, вызываемый во время конца голосования.
    */
    forward mapmanager_finishvote();
    О дополнительном плагине mapmanager_subplugin для скриптеров:
    Пример использования форвардов. Позволяет заморозить игроков при mm_start_vote_in_new_round 0.

    О ночном режиме:
    HTML:
    Карты берет из amxmodx/configs/nightmaps.ini
    Нет приоритетов, блокировки, номинации.
    Если в файле одна карта, то при активации режима произойдет переход на эту карту(в зависимости от кваров) и выставлен timelimit 0.
    Если карт несколько, то при активном режиме будет стандартное голосование из ночного списка карт.
    Для блокировки стандартных команд мм должен стоять выше по списку.
    
    Есть натив для сторонних плагинов is_night_mode()
    История версий: GitHub

    [en]
    MAPM_VOTE_WILL_BEGIN = The voting will begin in next round.
    MAPM_CANCEL_VOTE = %s^1 canceled voting.
    MAPM_TIME_TO_END = Time left until map end:^3 %d:%02d
    MAPM_NO_TIMELIMIT = Map has no time limit.
    MAPM_THETIME = Current time^1:^4 %s^1.
    MAPM_NEXTMAP = Next map:
    MAPM_NOT_SELECTED = not selected
    MAPM_CURRENT_MAP = Current map:^3 %s^1.
    MAPM_NIGHT_NOT_AVAILABLE = Unavailable during^4 night mode^1.
    MAPM_RTV_DELAY = You cant vote for rtv. Left:^3 %d:%02d^1.
    MAPM_RTV_VOTED = %s^1 has voted to change map. Left:^3 %d^1
    MAPM_RTV_START_VOTE = Starting early voting for next map.
    MAPM_START_VOTE_NEW_ROUND = Voting will start in next round.
    MAPM_RTV_ALREADY_VOTED = You have already rocked the vote. Left:^3 %d^1
    MAPM_NOM_NOT_AVAILABLE_MAP = This map is not available for nomination.
    MAPM_NOM_REMOVE_NOM = %s^1 has denominated map^3 %s^1.
    MAPM_NOM_ALREADY_NOM = This map is already nominated.
    MAPM_NOM_CANT_NOM = You can't nominate any more maps.
    MAPM_NOM_MAP = %s^1 nominated^3 %s^1.
    MAPM_MENU_MAP_LIST = Maps list
    MAPM_MENU_BACK = Back
    MAPM_MENU_NEXT = Next
    MAPM_MENU_EXIT = Exit
    MAPM_NIGHT_NEXTMAP = Night Mode^1. Next map:^3 %s^1.
    MAPM_NIGHT_ON = Night mode is activated until^3 %02d:%02d^1.
    MAPM_NIGHT_CHANGELEVEL = Changing level to^4 night map^1:^3 %s.
    MAPM_NIGHT_NEXT_ROUND_CHANGE = Changing level to^4 night map^1 in next round^1:^3 %s.
    MAPM_NIGHT_CHANGELEVEL2 = Changing level to^4 night maps^1.
    MAPM_NIGHT_NEXT_ROUND_CHANGE2 = Starting ^4night maps^1 in next round.
    MAPM_NIGHT_OFF = ^4Night mode^1 is deactivated. Night mode is deactivated.
    MAPM_HUD_TIMER = Voting will begin in %d
    MAPM_MENU_VOTE_RESULTS = Voting result
    MAPM_MENU_CHOOSE_MAP = Choose map
    MAPM_MENU_EXTEND = Extend
    MAPM_MENU_LEFT = Left
    MAPM_CHOSE_EXTEND = %s^1 has chosen to extend the current map.
    MAPM_CHOSE_MAP = %s^1 has chosen^3 %s^1.
    MAPM_NOBODY_VOTE = Nobody voted. Next map is^3 %s^1.
    MAPM_LASTROUND = Last round.
    MAPM_MAP_CHANGE = Map will change in^3 %d
    MAPM_MAP_CHANGE_NEXTROUND = Map change will happen after this round.
    MAPM_MAP_EXTEND = Current map has been extended to ^3 %d^1
    MAPM_VOTE1 = votes
    MAPM_VOTE2 = votes
    MAPM_VOTE3 = votes
    MAPM_SECOND1 = seconds
    MAPM_SECOND2 = seconds
    MAPM_SECOND3 = seconds
    MAPM_MINUTE1 = minutes
    MAPM_MINUTE2 = minutes
    MAPM_MINUTE3 = minutes

    [ru]
    MAPM_VOTE_WILL_BEGIN = Голосование начнется в следующем раунде.
    MAPM_CANCEL_VOTE = %s^1 отменил голосование.
    MAPM_TIME_TO_END = До конца карты осталось:^3 %d:%02d
    MAPM_NO_TIMELIMIT = Карта не ограничена по времени.
    MAPM_THETIME = Текущее время^1:^4 %s^1.
    MAPM_NEXTMAP = Следующая карта:
    MAPM_NOT_SELECTED = ещё не выбрана
    MAPM_CURRENT_MAP = Текущая карта:^3 %s^1.
    MAPM_NIGHT_NOT_AVAILABLE = Недоступно в^4 ночном режиме^1.
    MAPM_RTV_DELAY = Вы не можете голосовать за досрочную смену карты. Осталось:^3 %d:%02d^1.
    MAPM_RTV_VOTED = %s^1 проголосовал за смену карты. Осталось:^3 %d^1
    MAPM_RTV_START_VOTE = Начинаем досрочное голосование.
    MAPM_START_VOTE_NEW_ROUND = Голосование начнется в следующем раунде.
    MAPM_RTV_ALREADY_VOTED = Вы уже голосовали. Осталось:^3 %d^1
    MAPM_NOM_NOT_AVAILABLE_MAP = Эта карта недоступна для номинации.
    MAPM_NOM_REMOVE_NOM = %s^1 убрал номинацию с карты^3 %s^1.
    MAPM_NOM_ALREADY_NOM = Эта карта уже номинирована.
    MAPM_NOM_CANT_NOM = Вы не можете больше номинировать карты.
    MAPM_NOM_MAP = %s^1 номинировал на голосование^3 %s^1.
    MAPM_MENU_MAP_LIST = Список карт
    MAPM_MENU_BACK = Назад
    MAPM_MENU_NEXT = Далее
    MAPM_MENU_EXIT = Выход
    MAPM_NIGHT_NEXTMAP = Ночной режим^1. Следующая карта:^3 %s^1.
    MAPM_NIGHT_ON = Включен ночной режим до^3 %02d:%02d^1.
    MAPM_NIGHT_CHANGELEVEL = Переход на^4 ночную карту^1:^3 %s.
    MAPM_NIGHT_NEXT_ROUND_CHANGE = В следующем раунде переход на^4 ночную карту^1:^3 %s.
    MAPM_NIGHT_CHANGELEVEL2 = Переход на^4 ночные карты^1.
    MAPM_NIGHT_NEXT_ROUND_CHANGE2 = В следующем раунде переход на^4 ночные карты^1.
    MAPM_NIGHT_OFF = Выключен^4 ночной режим^1.
    MAPM_HUD_TIMER = До голосования осталось %d
    MAPM_MENU_VOTE_RESULTS = Результаты голосования
    MAPM_MENU_CHOOSE_MAP = Выберите карту
    MAPM_MENU_EXTEND = Продлить
    MAPM_MENU_LEFT = Осталось
    MAPM_CHOSE_EXTEND = %s^1 выбрал продление карты.
    MAPM_CHOSE_MAP = %s^1 выбрал^3 %s^1.
    MAPM_NOBODY_VOTE = Никто не голосовал. Следуйщей будет^3 %s^1.
    MAPM_LASTROUND = Это последний раунд.
    MAPM_MAP_CHANGE = Карта сменится через^3 5^1 секунд.
    MAPM_MAP_CHANGE_NEXTROUND = Карта сменится в следующем раунде.
    MAPM_MAP_EXTEND = Текущая карта продлена на^3 %d^1
    MAPM_VOTE1 = голосов
    MAPM_VOTE2 = голос
    MAPM_VOTE3 = голоса
    MAPM_SECOND1 = секунд
    MAPM_SECOND2 = секунда
    MAPM_SECOND3 = секунды
    MAPM_MINUTE1 = минут
    MAPM_MINUTE2 = минута
    MAPM_MINUTE3 = минуты

    Установка:

    • Скачать архив
    • Распаковать
    • Скомпилировать mapmanager.sma. mapmanager_subplugin.sma можете не заливать и не компилировать, это примеры для скриптеров.
    • Залить на сервер.
    • Настроить плагин. Если вы включили поддержку ночного режима, то в addons\amxmodx\configs\nightmaps.ini впишите свои карты для ночного режима. Если вам не нужна поддержка ночного режима, addons\amxmodx\configs\nightmaps.ini можно удалить.
    • В maps.ini укажите минимальное и максимальное число игроков, при котором карта будет предлагаться в голосовании. Для вывода карты для любого числа игроков пределы указывать не обязательно. Пример maps.ini:
    PHP:
    ;mapname    minplayers   maxplayers
    de_dust2    1            13
    de_inferno   5            32
    de_nuke
    это равносильно  de_nuke  0  32
    de_cbble  10   22
    Если нужна надпись на экране в HUD о том, что идёт последний раунд, поставьте плагин LastRound из аттача. При этом он должен идти после mapmanager.
     

    Вложения:

    Последнее редактирование модератором: 14.09.16
    DizZ, SPIRIT, Julia_Taylor и 11 другим нравится это.
  2. Gatsby Пользователь

    Регистрация:
    29.02.16
    Сообщения:
    180
    Симпатии:
    22
    Пол:
    Мужской
    А файл nightmaps.ini не прилагается или самому создать?
     
  3. Gatsby Пользователь

    Регистрация:
    29.02.16
    Сообщения:
    180
    Симпатии:
    22
    Пол:
    Мужской
    Как работает плагин mapmanager_subplugin.sma из архива, что-то не пойму никак.
     
  4. visual Пользователь

    Регистрация:
    15.03.15
    Сообщения:
    54
    Симпатии:
    19
    Пол:
    Мужской
    На github'e уже VERSION "2.5.31":)
     
  5. Gatsby Пользователь

    Регистрация:
    29.02.16
    Сообщения:
    180
    Симпатии:
    22
    Пол:
    Мужской
    visual, регистрироваться лень :D
     
  6. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.513
    Симпатии:
    1.103
    Пол:
    Мужской
    Gatsby, читайте описание.
    visual, там может быт тестовая, автор ещё не релизил её.
    --- добавлено 12.03.16 ---
    создастся автоматом.
    Впрочем, архив перезалью чуть позже, раз вопросы возникают у людей.
     
  7. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    Нет.
     
  8. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.513
    Симпатии:
    1.103
    Пол:
    Мужской
    Mistrick, ок. Я как-то забыл, что это не c# или delphi.
    Тогда blockedmaps.ini и maps.ini также надо создать вручную?
     
  9. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    gudaus, blockedmaps.ini - создается. maps.ini - дефолтный же файл, значит должен быть в папке. Без карт плагин просто отключится.
     
  10. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.513
    Симпатии:
    1.103
    Пол:
    Мужской
    Зависимость карты от количества игроков планируется?
     
  11. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    gudaus, В описании же есть.
     
  12. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.513
    Симпатии:
    1.103
    Пол:
    Мужской
    Это ты про
    ?
    Я почему спрашиваю, на сервер не ставил, ибо сервера нет, а по описанию не всё могу понять.
     
  13. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    Структура maps.ini. Для вывода карты для любого числа игроков пределы указывать не обязательно.
    Код:
    ;mapname    minplayers   maxplayers
    de_dust2    1            13
     
    gudaus нравится это.
  14. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.513
    Симпатии:
    1.103
    Пол:
    Мужской
    Архив перезалит(ничего нового, просто распихано по папкам), в самом низу 1 поста добавлена информация по установке.
     
    Gatsby нравится это.
  15. Gatsby Пользователь

    Регистрация:
    29.02.16
    Сообщения:
    180
    Симпатии:
    22
    Пол:
    Мужской
    Mistrick, классно было бы, если бы вы реализовали возможность голосования не по истечению времени отведенную на карту, а например по определенному количеству побед одной из команд. Включалось бы это возможность кваром.
     
  16. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    Gatsby, прочитайте оригинальное описание. В кс есть стандартные для этого квары, поддержка этих кваров есть.
     
  17. Gatsby Пользователь

    Регистрация:
    29.02.16
    Сообщения:
    180
    Симпатии:
    22
    Пол:
    Мужской
    Mistrick, а вот, как игрок узнает, что карта не по времени, а по победам? Ведь при вводе команд timeleft, rtv ему ничего из сообщений не будет показываться ... Что нужно закомментировать в исходнике для такой работы плагина ?
     
  18. gudaus Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.513
    Симпатии:
    1.103
    Пол:
    Мужской
    Gatsby, окончание карты по победам - стандартный квар в server.cfg. Ваши игроки не знают, когда меняется карта на сервере?
     
  19. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    160
    Симпатии:
    87
    Пол:
    Мужской
    Gatsby, карта закончится при достижении одного из критериев. Допустим у вас лимит на 40 побед и время карты 20 минут. Если вы не успеете сделать 40 побед карта сменится из-за времени. Дак зачем пихать в команды времени информацию о раундах?
    Плагин хоть и слабо подходит к серверам с лимитами на раунд, но голосование вывести за 2 раунда до смены сможет.
     
  20. Gatsby Пользователь

    Регистрация:
    29.02.16
    Сообщения:
    180
    Симпатии:
    22
    Пол:
    Мужской
    Mistrick, ладно понял.
    Плагин очень понравился по функционалу, код чистый, без всяких непонятных комментариев к каждой строчке. В общем, спасибо за плагин, рад, что дорабатываете его постоянно.