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

Вызов/перехват takedamage и других...

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

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


Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник плагина.

Вызов/перехват takedamage и других...

Сообщение PRoSToTeM@ » 06 ноя 2011, 18:55

Как сделать вызов и перехват takedamage и других виртуальных функций?...
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Вызов/перехват takedamage и других...

Сообщение PRoSToTeM@ » 07 ноя 2011, 19:41

Или я туплю или хз... крешит...
[pawn]
  1. void Hook_Spawn()

  2. {

  3.         void *pthis;

  4.        

  5.         __asm mov pthis, ecx;

  6.  

  7.         entvars_t *pev;

  8.         __asm mov eax, [ ecx + 4 ];

  9.         __asm mov pev, eax;

  10.  

  11.         char *szMsg;

  12.  

  13.         _snprintf(szMsg, sizeof(szMsg) - 1, "::Spawn(void) prehook!%d\n", ENTINDEX(ENT(pev)));

  14.  

  15.         SERVER_PRINT(szMsg);

  16.        

  17.         __asm mov ecx, pthis;

  18.         __asm call [pOriginalFunction];

  19.        

  20.         SERVER_PRINT("::Spawn(void) posthook!\n");

  21. }
[/pawn]
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Вызов/перехват takedamage и других...

Сообщение noo00oob » 07 ноя 2011, 19:45

Уменя тот код работает прекрасно, однако крашит этот, попробуй без него, тоесть без вызова оригинальной функции:
Код: Выделить всё
        __asm mov ecx, pthis;
        __asm call [pOriginalFunction];
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
noo00oob
 
Сообщения: 1061
Зарегистрирован: 09 янв 2010, 21:52
Благодарил (а): 258 раз.
Поблагодарили: 394 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Вызов/перехват takedamage и других...

Сообщение PRoSToTeM@ » 08 ноя 2011, 00:17

Cleaned. Done.
Последний раз редактировалось PRoSToTeM@ 09 ноя 2011, 11:57, всего редактировалось 1 раз.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Вызов/перехват takedamage и других...

Сообщение KORD_12.7 » 08 ноя 2011, 07:52

PRoSToTeM@ писал(а):Или я туплю или хз... крешит...
[pawn]
  1. void Hook_Spawn()

  2. {

  3.         void *pthis;

  4.        

  5.         __asm mov pthis, ecx;

  6.  

  7.         entvars_t *pev;

  8.         __asm mov eax, [ ecx + 4 ];

  9.         __asm mov pev, eax;

  10.  

  11.         char *szMsg;

  12.  

  13.         _snprintf(szMsg, sizeof(szMsg) - 1, "::Spawn(void) prehook!%d\n", ENTINDEX(ENT(pev)));

  14.  

  15.         SERVER_PRINT(szMsg);

  16.        

  17.         __asm mov ecx, pthis;

  18.         __asm call [pOriginalFunction];

  19.        

  20.         SERVER_PRINT("::Spawn(void) posthook!\n");

  21. }
[/pawn]

PRoSToTeM@, можешь выложить полностью все что выдрал из Хама для хука спауна? Я пока что не допер еще :(.

_http://aghl.ru/ - Half-Life и Adrenaline Gamer: за пределами возможного
Аватара пользователя
KORD_12.7
Скриптер
 
Сообщения: 298
Зарегистрирован: 28 сен 2009, 10:14
Откуда: Владивосток
Благодарил (а): 142 раз.
Поблагодарили: 257 раз.
Опыт программирования: Больше трех лет
Языки программирования: Half-Life
Opposing Force
Adrenaline Gamer
Counter-Strike

Re: Вызов/перехват takedamage и других...

Сообщение PRoSToTeM@ » 08 ноя 2011, 10:15

Это из темы с оленей, я щас попробую выдрать с хама хук, вызов который я выложил взял с хама.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Вызов/перехват takedamage и других...

Сообщение noo00oob » 08 ноя 2011, 10:28

Тю. Вызвать то легко, перехват покажи, уменя не выходит чет.
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
noo00oob
 
Сообщения: 1061
Зарегистрирован: 09 янв 2010, 21:52
Благодарил (а): 258 раз.
Поблагодарили: 394 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Вызов/перехват takedamage и других...

Сообщение PRoSToTeM@ » 08 ноя 2011, 11:56

Блин, застрял на хук форварде, так-то зарегал и вроде правильно...
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Вызов/перехват takedamage и других...

Сообщение noo00oob » 08 ноя 2011, 13:07

Я надеюсь ты понимаешь, что если делать хуки в своем модуле, то возникнут проблемы с hamsandwich'ом?
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
noo00oob
 
Сообщения: 1061
Зарегистрирован: 09 янв 2010, 21:52
Благодарил (а): 258 раз.
Поблагодарили: 394 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Вызов/перехват takedamage и других...

Сообщение PRoSToTeM@ » 08 ноя 2011, 13:29

А точно... щас выгружу хам.

Добавлено спустя 8 минут 22 секунды:
Тоже самое...
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Вызов/перехват takedamage и других...

Сообщение KORD_12.7 » 08 ноя 2011, 15:13

Короче ничего кроме крашей на
Код: Выделить всё
__asm mov eax, [ ecx + 4 ];

не вышло :-D

Добавлено спустя 59 секунд:
Кто-нибудь разобрался? :crazy:

_http://aghl.ru/ - Half-Life и Adrenaline Gamer: за пределами возможного
Аватара пользователя
KORD_12.7
Скриптер
 
Сообщения: 298
Зарегистрирован: 28 сен 2009, 10:14
Откуда: Владивосток
Благодарил (а): 142 раз.
Поблагодарили: 257 раз.
Опыт программирования: Больше трех лет
Языки программирования: Half-Life
Opposing Force
Adrenaline Gamer
Counter-Strike

Пред.След.

Вернуться в Скриптинг

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

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