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

    Всего на сайте: 9
    Гостей: 1
    Пользователи: Ewer
    Роботы: robot Bot, crawl Bot, robot Bot, crawl Bot, Yandex Bot, Yahoo Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 28-08-2011, 18:56 Просмотров: 10061

    register_logevent Функция отлавливает события

    Функция register_logevent ловит игровые события которые записываются в логах.
    Отловить с помощью данной функции можно такие события игры как:
    • Game_Commencing - (грубо говоря рестарт карты)
    • say - Когда игрок что либо говорит в чат
    • Terrorists_Win - Победа Террористов
    • entered the game - Игрок входит в игру
    • Server cvar - Изменение кваров сервера
    • Planted_The_Bomb - Установка бомбы
    • Defused_The_Bomb - Разминирование бомбы
    • Round_Start - Старт раунда
    • Round_End - Конец раунда

    И многие другие...

    Инфо из amxmodx.inc:
    /* Registers log event on which the given function will be called
    * Examples for conditions:
    * "0=World triggered" "1=Game_Commencing"
    * "1=say"
    * "3=Terrorists_Win"
    * "1=entered the game"
    * "0=Server cvar"
    */
    native register_logevent(const function[], argsnum,  ... );


    Синтаксис:
    register_logevent ( const function[], argsnum, ... )

    • const function[] - Вызываемая функция при наступлении события
    • argsnum - Количество аргументов
    • ... - Какое событие произошло


    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "Register log events"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        //регистрируем конец раунда
        register_logevent("round_end", 2, "1=Round_End")
        //регистрируем Старт раунда
        register_logevent("round_start",2,"1=Round_Start")
        //регистрируем Вроде все события связанные с бомбой
        register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb","2=Defused_The_Bomb","2=Target_Bombed")
        //регистрируем использование заложников ( следуют за вами)
        register_logevent("hostage_touched",3,"2=Touched_A_Hostage")
        //регистрируем Вывод заложников в безомасную зону
        register_logevent("hostage_rescued",3,"2=Rescued_A_Hostage")
        //регистрируем Убийство заложников
        register_logevent("hostage_killed",3,"2=Killed_A_Hostage")
        //регистрируем Присоединение к какой либо команде
        register_logevent("team_join",3,"1=joined team")
        
    }
    //зарегистрированные функции для отшлавливаемых нами событий
    public round_end(){
        client_print(0,print_chat,"Log event Round End")
    }
    public round_start(){
        client_print(0,print_chat,"Log event Round Start")
    }
    public bomb_events(){
        client_print(0,print_chat,"Log event bomb_events")
    }
    public hostage_touched(){
        client_print(0,print_chat,"Log event Hostege Touched")
    }
    public hostage_rescued(){
        client_print(0,print_chat,"Log event Hostege Rescued")
    }
    public hostage_killed(){
        client_print(0,print_chat,"Log event Hostege killed")
    }
    public team_join(){
        client_print(0,print_chat,"Log event team Join")

        new Arg1[64],Arg2[64]
        
        read_logargv(0,Arg1,63)
        read_logargv(2,Arg2,63)

        client_print(0,print_chat,"Arg1: %s ^nArg2: %s",Arg1,Arg2)
    }


    Описание:
    У нас есть 7 различных функций, которые будут вызываться в тот момент, когда происходит какое то события, нами зарегистрированное в plugin_init, функцией register_logevent.
    Запустив плагин и просто начав выполнять миссии карты, вы сразу заметите в чате сообщения при пределенных событиях. Это вам сразу поможет понять что к чему.

    Но с бомбой будет все по иному, если вы просматривали внимательно код, то заметили:
    register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb","2=Defused_The_Bomb","2=Target_Bombed")
    , и сразу возник вопрос, почему в других функциях на много меньше записей, отвечаю: Представьте что вы хотете добавлять по 3 фрага за установку бомбы и взрыв бомбы, действие то одно и тоже, но не делать же 2 разные функции, по этому можно для оной функции отлавливать сразу несколько событий.

    Теперь немного о том какую мы можем получить информацию, обратим свое внимание на функцию:
    public team_join(){
        client_print(0,print_chat,"Log event team Join")

        new Arg1[64],Arg2[64]
        
        read_logargv(0,Arg1,63)
        read_logargv(2,Arg2,63)

        client_print(0,print_chat,"Arg1: %s ^nArg2: %s",Arg1,Arg2)
    }

    Регистрируем 2 массива и с помощью функции read_logargv, получаем аргумент ( получается аргумент в текстовом виде, даже если это числа)
    И выводим их в текстовом сообщении.

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

Реклама