Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 11
    Гостей: 8
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, The Python Robot, crawl Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 17-12-2011, 00:39 Просмотров: 10867

    Отлов события нового раунда и старта раунда

    Недавно заметил, что не все понимают очевидную разницу между стартом раунда и началом нового раунда. А это принципиально разные вещи. У многих админов на серверах выключен mp_freezetime ( квар поставлен в 0) и по этому событие нового раунда и старта раунда сливается в одну секунду и разница не заметна. Но вы попробуйте поставить этому квару значение скажем в 10 секунд и выполните какую то команду при старте раунда, и сразу заметите очевидную разницу.

    Вот один из примеров: В моде Predaotor, хищник может двигаться сразу после события начала нового раунда, а все игроки только с момента старта раунда. Правда в данном моде допущена еще более серьезная ошибка с этим моментом, что дает возможность хищнику использовать баг и пополнять запасы жизней и плазмы бесконечное количество раз. Но мы не об этом, вернемся к событиям нового раунда и его старта.

    Событие нового раунда.

    Верный способ отловить событие начало нового раунда
    register_event("HLTV", "Function", "a", "1=0", "2=0")

    Функция "Function" будет вызываться каждый раз когда будет начинаться новый уровень.
    Ни каких полезных для нас параметров в обработчик не поступает, по этому если вы хотите что либо сделать для какого то конкретного игрока или сразу же всех игроков, в большинстве случаев придется применять циклы. Но хочу обратить внимание, что если в нутрии цикла будет большой или долго выполнимый код, то это может вызвать лаги на сервере. А так же не рекомендую вставлять какое либо логирование в цикл, так как это тоже вызовет ощутимые задержки в работе.

    Пример отлова начало нового раунда:

    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[register_event] New Round"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_event("HLTV", "NewRound", "a", "1=0", "2=0")

    }
    public NewRound(){

        client_print(0,print_chat,"Event New Round")
        
    }


    Событие старта раунда

    Я смотрю вы правильно думаете и уже сами хотите мне сказать, что событие старта раунда происходит в момент когда закончиться mp_freezetime. И вы абсолютно правы. Вот только отлавливается это событие немного по другому:
    register_logevent("Startround", 2, "1=Round_Start")

    Рабочий пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[register_logevent] Round_Start"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_logevent("StartRound", 2, "1=Round_Start")
        

    }
    public StartRound(){

        client_print(0,print_chat,"Event Start Round")
        
    }


    Если вы объедините два этих примера, то вы получите 2 сообщения, одно при событии нового раунда, второе при его старте. Я бы вам рекомендовал это проделать, что бы боле четко уяснить для себя эту принципиальную разницу.

    Пара слов о событии ResetHUD.
    Это событие не старта раунда или спавна игрока, как многие считают, а событие которое вызывается при обресечивании HUD экрана игрока. Например при начале записи демки.
    Можете проверить это на серверах с предатор модом, когда станете хищником и истратите свои 3 плазмы, просто начните записывать и остановите запись демки и у вас пополняться жизни и количество плазм, так как автор мода допустил ошибку с выбором момента когда нужно обновлять количество жизней и плазм у игроков.

    Надеюсь вы теперь понимаете разницу между этими событиями и научились их отлавливать.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Отлов события нового раунда и старта раунда

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама