Главная | Комментарии | О проекте
Чтение 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 Дата: 17-08-2011, 18:05 Просмотров: 10370

    Ham_Spawn Событие респауна игрока.

    Ham_Spawn - Обратите внимание, что это не отдельная функция, а параметр для функции RegisterHam. Этот параметр обозначает какое то событие, данный параметр (рассматриваемый нами) означает что мы отлавливаем событие когда игрок респавнится. Некоторые скажут что респавнятся все при старте раунда, зачем это?!, но это не совсем так, вернее не полная картинка, игрок может респавнится если зашел чуть позже старта раунда или если это сервер ДМ, то есть игроки респавнятся сразу же после смерти, не дожидаясь конца раунда.

    Так как очень многие плагины завязаны на этом игровом моменте, отлов этого события встречается очень часто.Так же с ее помощью можно отловить когда респавнится любой предмет на карте.

    Ham_Spawn - Когда ентити респавнится
    Из параметров только index - id игрока


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

    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>
    #include <colorchat>

    #define PLUGIN "[http://amxxmodx.ru/]Event Player Spawn"
    #define VERSION "1.0"
    #define AUTHOR "Admin"
      
    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        RegisterHam(Ham_Spawn,"player","player_respawn")
    }
    public player_respawn(id){
        
        new UserName[32]
        get_user_name(id,UserName,31)
        
        if(is_user_admin(id)){
            ColorChat(0,RED,"[Ham Sandwich] ^1Admin %s respawn",UserName[id])
        }else{
            ColorChat(0,RED,"[Ham Sandwich] ^1Player %s respawn",UserName[id])
        }
    }

    Описание:
    Предположим что нам необходимо поймать когда игрок респавнится и проверить админ это или нет.
    Подключив модуль и зарегистрировав событие в plugin_init, мы создаем функцию player_respawn ( можете ее называть как угодно, в пределах разумного конечно и следуя правилам языка)
    Данная функция и будет вызываться каждый раз когда какой то игрок на сервере респавнится.

    Для наглядности мы регистрируем массив под имя игрока и получаем его, затем создаем услове "Админ ли игрок?" и если да, выводим цветое сообщение о том что админ такой то респанится, если игрок не админ,то выводим сообщение что простой игрок респаунится.

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

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Срабатывает на коннект игрока...
    LordNAO

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Хотелось бы сделать свою заметку для читателей.
    Пробывал написать плагин с различными возможностями для VIP, и для проверки работы возможностей зарегистрировал дополнительную команду, пример:

    public plugin_init(){
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_clcmd("say /vip", "round_start") // Команда для проверки работы возможностей
        RegisterHam(Ham_Spawn, "player", "round_start", 1) // Отлов события респауна
    }
    // Команда
    public round_start(id){
        // Дальше код различных возможностей...
    }

    Но заметил, что отлов события респауна не работает, хотя при наборе в чате /vip все работало.
    Не много покапался и понял, что команда клиента и отлов события конфликтуют между собой и переделал код на такой

    public plugin_init(){
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_clcmd("vip", "vip_comand") // Команда для проверки работы возможностей
        RegisterHam(Ham_Spawn, "player", "round_start", 1) // Отлов события респауна
    }
    // Команда для проверки работы
    public vip_comand(id){
        round_start(id)
    }
    // Команда
    public round_start(id){
        // Дальше код различных возможностей...
    }

    И все заработало как надо.
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    LordNAO, ты опять лажанулся.
    Это комментарии, а стати добавляются в другом месте.
    По коду:
    ты не путай событие респавна игрока и начало нового раунда, это в КОРНЕ РАЗНЫЕ вещи. и ни каких конфликтов тут НЕТ!

    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>

    #define PLUGIN "[laga]"
    #define VERSION "1.0"
    #define AUTHOR "dno"


    public plugin_init(){
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_clcmd("say /vip", "round_start") // Команда для проверки работы возможностей
        RegisterHam(Ham_Spawn, "player", "round_start", 1) // Отлов события респауна
    }
    // Команда
    public round_start(id){
        new name[33]
        get_user_name(id,name,32)
        client_print(0,print_chat,"Player spawn [%s]",name)
        
    }


    Вот лог консоли:
    Type 'amx_help' in the console to see available commands
    Time Left: 29:52 min. Next Map: de_aztec
    Player spawn [Svoloch]
    [Potti] Your bot has spawned
    Player spawn [botaname]
    Player spawn [Svoloch]
    Svoloch :  /vip
    --------------------

    Информация

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

Реклама