Русское сообщество по скриптингу

Virtual Hook System

Статьи или фрагменты кода для новичков и уже опытных скриптеров по Metamod.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по Metamod.

Re: Virtual Hook System

Сообщение Asmodai » 19 апр 2016, 01:00

Ну так совсем же не дело. Даже когда будешь в студии наводить на название функции, будет неправильный хелп выводить.

Тебе, кстати, от шела набор 300-шуточек. На свое усмотрение.
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: Virtual Hook System

Сообщение Kaido Ren » 27 апр 2016, 10:42

так и не понял, а как блокнуть одно, а вызвать другое?
Например в хнс моде вместо primary attack на ноже идет secondary, как мне блокнуть ивент primary и вызвать вместо него secondary?
Аватара пользователя
Kaido Ren
 
Сообщения: 56
Зарегистрирован: 20 апр 2016, 18:17
Забанен
Благодарил (а): 8 раз.
Поблагодарили: 15 раз.

Re: Virtual Hook System

Сообщение Honey Cocaine » 04 май 2016, 23:21

как можно связаться с автором, подскажите пожалуйста? на alliedmods со дня публикации автор не появлялся, есть вопросы по данной системе
Аватара пользователя
Honey Cocaine
 
Сообщения: 1
Зарегистрирован: 04 май 2016, 22:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Virtual Hook System

Сообщение Depresie » 06 май 2016, 14:53

Ms. Ostrog писал(а):так и не понял, а как блокнуть одно, а вызвать другое?
Например в хнс моде вместо primary attack на ноже идет secondary, как мне блокнуть ивент primary и вызвать вместо него secondary?

Код: Выделить всё
#include "amxxmodule.h"
#include "virtual_hook.h"

VIRTUAL_CALLBACK(void) PrimaryOrSecondaryAttack_Handler(void *pEnt VIRTUAL_ARG); //declaration handler function

virtualHook g_vhPrimaryAttack("weapon_knife", virtualHookName::weapon_primaryattack, (void *)PrimaryOrSecondaryAttack_Handler); //declaration virtualhook primaryattack pointer
virtualHook g_vhSecondaryAttack("weapon_knife", virtualHookName::weapon_secondaryattack, (void *)PrimaryOrSecondaryAttack_Handler); //declaration virtualhook secondaryattack pointer

VIRTUAL_CALLBACK(void) PrimaryOrSecondaryAttack_Handler(void *pEnt VIRTUAL_ARG) { //definition handler function
    VIRTUAL_CALL<void>(/*call in both cases the secondary attack*/g_vhSecondaryAttack.getAddress(), pEnt);

    //your code
}

void OnAmxxAttach() {
    checkCompiler();
}

void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax) {
    g_vhPrimaryAttack.registerHook();
    g_vhSecondaryAttack.registerHook();
}

void ServerDeactivate() {
    g_vhPrimaryAttack.removeHook();
    g_vhSecondaryAttack.removeHook();
}


Juli, good job.
Аватара пользователя
Depresie
 
Сообщения: 14
Зарегистрирован: 24 фев 2016, 13:24
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.

Re: Virtual Hook System

Сообщение sa1me » 12 авг 2016, 12:49

Мельком код глянул ради интереса. Идея неплоха, но реализовано не совсем правильно. При хуке некоторых виртуальных событий будет тупо сегфолт. К примеру, отловив событие смерти и при этом умерев в игре, получим сегфолт. Поэтому не советую использовать в своих проектах.
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Virtual Hook System

Сообщение Asmodai » 12 авг 2016, 23:56

РОФЛ
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Пред.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5