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

[Модуль AMXX] Orpheu

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

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

[Модуль AMXX] Orpheu

Сообщение DJ_WEST » 02 мар 2010, 15:28

Автор: joaquimandrade
Версия: 2.3

Описание:
Данный модуль открывает новые возможности для скриптинга, позволяя использовать функции движка игры, а также фукнции с других Metamod плагинов. Поддерживается как Windows, так и Linux. С версии 2.1 возможен прямой доступ к памяти и ее патчинг.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
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] Orpheu

Сообщение Fedcomp » 04 авг 2012, 01:13

Ну я не силен в дизасемблинге вообще. Я вообще до этого думал что поиск функций и работа с ними через орфей очень хардкорно, оказывается нет, просто почитал туторы на алиеде и темы про орфей.
Еще бы посказал как получить вывод функции и отредачить его (получить для дебага, отредачить собственно суть плагина)
а я пока попробую просто хукнуть ее.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


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

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

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

Еще бы посказал как получить вывод функции и отредачить его (получить для дебага, отредачить собственно суть плагина)

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

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

Сообщение Fedcomp » 04 авг 2012, 01:28

Ну SVC_PlayerInfo насколько я понимаю генерирует список игроков на сервере для отправки по сети в виде A2S_Player (Вы должны зарегистрироваться, чтобы видеть ссылки. ... A2S_PLAYER)
Мне надо получить то что эта функция создает и изменить под себя.

Да кстати, сервер падает :(
Код: Выделить всё
   Parsing functions started.
      Parsing file "SVC_PlayerInfo" started
FOUND
      Parsing file "SVC_PlayerInfo" ended
   Parsing functions ended.


Код: Выделить всё
{
    "name"       : "SVC_PlayerInfo",
    "library"    : "engine",
    "identifiers":
    [
        {
            "os"    : "windows",
            "mod"   : "cstrike",
            "value" : 0x9B0B4
        },
        {
            "os"    : "linux",
            "mod"   : "cstrike",
            "value" : "SVC_PlayerInfo"
        }
    ]
}


[pawn]
  1. /* humanized_bots

  2. */

  3.  

  4. #include <amxmodx>

  5. #include <orpheu>

  6.  

  7. #define PLUGIN "Humanized Bots"

  8. #define VERSION "0.1"

  9. #define AUTHOR "Fedcomp"

  10.  

  11. public plugin_init(){

  12.         register_plugin(PLUGIN, VERSION, AUTHOR)

  13.         OrpheuRegisterHook(OrpheuGetFunction("SVC_PlayerInfo"), "SVC_PlayerInfoPost", OrpheuHookPost)

  14. }

  15.  

  16. public SVC_PlayerInfoPost(){

  17.         server_print("[Orpheu] SVC_PlayerInfoPost")

  18. }
[/pawn]

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


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

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

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

Оффсет неправильный. Это должно быть начало функции, а именно 9B090.
У тебя он указывает на ту её часть, в которой используется строка, которую ты искал.

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

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

Сообщение Fedcomp » 04 авг 2012, 01:49

[pawn]
  1. /**

  2.  * Sets the return value of a function

  3.  *

  4.  * @param any                   Depending on the type of the return of the function, a value to be used as the return as the original hooked function

  5.  */

  6. native OrpheuSetReturn(any:...)

  7.  

  8. /**

  9.  * Sets the value of an argument

  10.  *

  11.  * @param num                   The number of the argument. The first argument would be the number "1"

  12.  * @param any                   Depending on the type of the argument, a value to be replace it to change the behaviour of the hooked function

  13.  */

  14. native OrpheuSetParam(num,any:...)

  15.  

  16. /**

  17.  * Sets the value of member of a struct given the argument number the struct is and the member name

  18.  *

  19.  * @param num                   The number of the argument. The first argument would be the number "1"

  20.  * @param memberName    The name of the member of the struct we want to deal with

  21.  * @param any                   The new value

  22.  */

  23. native OrpheuSetParamStructMember(num,const memberName[],any:...)

  24.  

  25. /**

  26.  * Sets the value of a member of a struct given a struct handler and the member name

  27.  *

  28.  * @param struct                A handler to the struct

  29.  * @param memberName    The name of the member of the struct we want to deal with

  30.  * @param any                   The new value

  31.  */

  32. native OrpheuSetStructMember(OrpheuStruct:struct,const memberName[],any:...)
[/pawn]

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


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

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

Сообщение 6a6kin » 04 авг 2012, 01:54

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

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

Сообщение Fedcomp » 04 авг 2012, 02:04

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


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

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

Сообщение 6a6kin » 04 авг 2012, 02:08

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

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

Сообщение Fedcomp » 04 авг 2012, 02:32

Можно поставить хук на SVC_PlayerInfo
затем в SVC_PlayerInfoPre выставить второй хук на Net_SendPacket, так сказать одноразовый. А уж перед выполнением Net_SendPacket отредачить входящий параметр (аргументы орфей вроде как умеет менять)
но боюсь что все это дело дебажить придется сначала под линухом.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


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

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

Сообщение noo00oob » 04 авг 2012, 10:10

Fedcomp писал(а):Можно поставить хук на SVC_PlayerInfo
затем в SVC_PlayerInfoPre выставить второй хук на Net_SendPacket, так сказать одноразовый. А уж перед выполнением Net_SendPacket отредачить входящий параметр (аргументы орфей вроде как умеет менять)
но боюсь что все это дело дебажить придется сначала под линухом.

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

Пред.След.

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

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

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