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

[Модуль AMXX] Rage

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

В данном разделе форума разрешено выкладывать файлы или модули для AMXX/SM, которые пригодятся при программировании.

[Модуль AMXX] Rage

Сообщение DJ_WEST » 08 авг 2012, 10:07

Авторы: joaquimandrade, Arkshine
Версия: Beta 3
Перевод: DJ_WEST

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

К примеру, вы хотите использовать функцию, которую вы не можете использовать с помощью обычного AMXX. Для этого нам необходимо создать компонент, называемым handler'ом в C++, который чем-то похож на модуль, но его цель прежде всего - это управление хуками и вызовами функций плагинов и rage модулей. Другими словами, он связывает функции плагинов и rage модулей. Handler достаточно легко создать, потому что мы можем использовать уже созданный скелет для создания другого. К примеру:
[pawn]
  1. int CBasePlayerWeapon::AddPrimaryAmmo( int iCount, char *szName, int iMaxClip, int iMaxCarry )
[/pawn]
Функция возвращает целое число (int) и она является членом класса CBasePlayerWeapon, а также имеет аргументы следующих типов: int, char*, int, int.
[pawn]
  1. int CBasePlayerWeapon::AddSecondaryAmmo( int iCount, char *szName, int iMaxClip, int iMaxCarry )
[/pawn]
Данная функция имеет такой же заголовок и ей не обязательно быть членом класса CBasePlayerWeapon, поскольку все объекты должны быть обработаны таким же способом.

Данная реализация более сложна, чем в модуле Orpheu, но она необходима для модуля Rage, потому что не имеет ограничений.

Теперь представим, что у нас есть handler функции, которую мы хотим хукнуть. Для этого нам необходимо создать файл, подобно тому, как мы это делали в модуле Orpheu. После того, как мы создали файл, мы можем вызвать и хукнуть функцию в AMXX плагинах через использования функций, которые предоставляет нам Rage.

Схема работы модуля Rage:

[align=center]
rage.png
[/align]

Примечание:
  • Разработчики выпустили beta версию, потому что хотят удостовериться, что API модуля достаточно для создания обработчиков функций.
  • Rage не имеет ограничений, которые имеет Orpheu, поэтому он может быть свободно интегрирован в AMXX.
  • Rage не имеет функций для патчинга памяти, но это легко сделать путем создания суб-модуля для Rage на основе модуля MemHack.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: [Модуль AMXX] Rage

Сообщение DJ_WEST » 21 авг 2012, 11:44

Вы должны зарегистрироваться, чтобы видеть ссылки.
У нас же noo00oob все может ;) Ждем когда перенесет ZP на Metamod.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: [Модуль AMXX] Rage

Сообщение noo00oob » 21 авг 2012, 12:36

DJ_WEST писал(а):Вы должны зарегистрироваться, чтобы видеть ссылки.
У нас же noo00oob все может ;) Ждем когда перенесет ZP на Metamod.

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

Re: [Модуль AMXX] Rage

Сообщение marikcool » 21 авг 2012, 15:09

каким образом на орфее что то не хукается? не могу понять.
Добавлено спустя 1 минуту 58 секунд:
Chuvi писал(а):DJ_WEST, можно вас попросить дописать в шапку ссылку на оригинальную тему? :)

найди нужный оффсет и хукай, проблем не будет.

Добавлено спустя 22 секунды:
Fedcomp писал(а):орфей не может некоторые функции хукнуть/обработать, а рейж может.

пример в студию.
[ Warmode ][ Progress: open beta ]
делаю плагины: icq 344388533.
Аватара пользователя
marikcool
 
Сообщения: 28
Зарегистрирован: 21 авг 2011, 22:50
Благодарил (а): 3 раз.
Поблагодарили: 38 раз.
Опыт программирования: Около года
Языки программирования: HL/CS1

Re: [Модуль AMXX] Rage

Сообщение KORD_12.7 » 21 авг 2012, 15:26

marikcool, Орфей не может хукать функции, которые Vector возвращают.

_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: [Модуль AMXX] Rage

Сообщение 6a6kin » 21 авг 2012, 16:42

Есть кое-что, чего ни орфей, ни какой-либо еще подобный модуль не сможет — перехват выполнения в произвольном участке кода.
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.

Re: [Модуль AMXX] Rage

Сообщение Fedcomp » 21 авг 2012, 17:29

marikcool писал(а):пример в студию.

эээ сильно_многобайтные типы данных сойдут?

Добавлено спустя 56 секунд:
6a6kin писал(а):Есть кое-что, чего ни орфей, ни какой-либо еще подобный модуль не сможет — перехват выполнения в произвольном участке кода.

поставить брейкпойнт? а там не особые ли привилегии нужны? а патчить память он вроде умеет, не?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: [Модуль AMXX] Rage

Сообщение 6a6kin » 21 авг 2012, 17:38

Причём тут брейкпоинты?

Я имею в виду перехват наподобие перехвата вызова функции, но в любом месте кода. Как бы он там не патчил память, обработать такой перехват он не сможет, ибо в этом случае все команды должны быть до одной продуманы. Небольшое изменение "неправильного" регистра и fatal error. Гарантировать такое поведение компилятор не сможет, под каждый перехват необходимо подбирать особый обработчик.
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.

Пред.

Вернуться в Файлы и модули

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

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