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

    Всего на сайте: 5
    Гостей: 2
    Пользователи: - отсутствуют
    Роботы: crawl Bot, Yandex Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 14-10-2012, 01:19 Просмотров: 3244
    Очень редко встречающаяся функция, если точнее всего в одном плагине нашел пример и долго не мог смоделировать ее работу, но в итоге получилось и ее смысл стал понятен мне, теперь делюсь с вами. Представьте себе что у вас на сервере установлено несколько плагинов которые работают с одним и тем же событием, ну скажем получение урона:

    Первый плагин:
    Блокирует урон от своих.

    Второй плагин:
    Показывает нанесенный урон.

    Если зайти на сервер где установлены такие плагины и выстрелить в своего, то будет показано сообщение что нанесен такой то урон, но фактически его нету.
    Так как блокировался урон с помощью return HAM_SUPERCEDE ( это не самый верный способ, просто как самый простой и наглядный пример). И сообщение в итоге будет не верным, что бы такого не было, с помощью функции GetHamReturnStatus можно проверить статус данного события и сделать соответствующие корректировки.
    Автор: Admin Дата: 14-10-2012, 00:10 Просмотров: 2294
    После того как с помощью функции DisableHamForward была приостановлена работа форварда, не редко требуется вновь его запустить, делается это с помощью функции EnableHamForward.

    Инфо из hamsandwich.inc:
    /**
    * Starts a ham forward back up.
    * Use the return value from RegisterHam as the parameter here!
    *
    * @param fwd            The forward to re-enable.
    */
    native EnableHamForward(HamHook:fwd);

    Автор: Admin Дата: 13-10-2012, 22:56 Просмотров: 3206
    Принципиальным отличием функции RegisterHamFromEntity от RegisterHam является то, что форвард создается не для класса объектов, а для конкретного одного объекта ( это может быть и один игрок) все остальное одинаковое.

    Инфо из hamsandwich.inc:
    /**
    * Hooks the virtual table for the specified entity's class.
    * An example would be: RegisterHam(Ham_TakeDamage, id, "player_hurt");
    * Look at the Ham enum for parameter lists.
    * Note: This will cause hooks for the entire internal class that the entity is
    *       not exclusively for the provided entity.
    *
    * @param function        The function to hook.
    * @param EntityId        The entity classname to hook.
    * @param callback        The forward to call.
    * @param post            Whether or not to forward this in post.
    * @return                 Returns a handle to the forward.  Use EnableHamForward/DisableHamForward to toggle the forward on or off.
    */
    native HamHook:RegisterHamFromEntity(Ham:function, EntityId, const Callback[], Post=0);
    Автор: Admin Дата: 13-10-2012, 22:30 Просмотров: 6218
    С помощью функции RegisterHam, можно отловить огромный список событий в игровом мире. События которые происходят не только с игроком, но и оружием или какими то предметами (entiti), полный список которых превышает сотню, посмотреть же его можно в описании модуля Ham Sandwich или файле ham_const.inc

    Инфо из hamsandwich.inc:
    /**
    * Hooks the virtual table for the specified entity class.
    * An example would be: RegisterHam(Ham_TakeDamage, "player", "player_hurt");
    * Look at the Ham enum for parameter lists.
    *
    * @param function        The function to hook.
    * @param EntityClass    The entity classname to hook.
    * @param callback        The forward to call.
    * @param post            Whether or not to forward this in post.
    * @return                 Returns a handle to the forward.  Use EnableHamForward/DisableHamForward to toggle the forward on or off.
    */
    native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0);
    Автор: Monstr™ Дата: 30-04-2012, 15:54 Просмотров: 2976
    Функция выполняет те же действия что и функция SetHamParamFloat только функция устанавливает целое значение.

    Инфо из hamsandwich.inc:
    /**
    * Sets a parameter on the fly of the current hook.  This has no effect in post hooks.
    * Use this on parameters that are integers.
    *
    * @param which                Which parameter to change.  Starts at 1, and works up from the left to right.  1 is always "this".
    * @param value                The value to change it to.
    */
    native SetHamParamInteger(which, value);
    Автор: Admin Дата: 26-03-2012, 10:12 Просмотров: 5656
    Функция аналогична ExecuteHam, но имеет существенную разницу в том, что результат работы данной функции можно отловить( хукнуть)

    Инфо из hamsandwich.inc:
    /**
    * Executes the virtual function on the entity, this will trigger all hooks on that function.
    * Be very careful about recursion!
    * Look at the Ham enum for parameter lists.
    *
    * @param function        The function to call.
    * @param id            The id of the entity to execute it on.
    */
    native ExecuteHamB(Ham:function, this, any:...);
    Автор: Admin Дата: 28-01-2012, 14:56 Просмотров: 3337
    Тем кто не задумывался об оптимизации своих плагинов данная функция будет не интересна, хотя может и нет. Допустим если в вашем плагине есть какая то функция, которая дает ощутимую нагрузку на сервер, но выполняется не всегда, скажем какой то код в Ham_Player_PreThink, данный форвар будет вызываться очень часто, и пускай практически сразу будет прерывание функции, для 32 игроков не зачем в пустую эти операции проводить, если форвар можно просто выключить, до нужного момента.

    Инфо из hamsandwich.inc:

    /**
    * Stops a ham forward from triggering.
    * Use the return value from RegisterHam as the parameter here!
    *
    * @param fwd            The forward to stop.
    */
    native DisableHamForward(HamHook:fwd);
Наверх

Реклама