SkyLoader 53 Опубликовано 27 Июля 2011 Поделиться Опубликовано 27 Июля 2011 (изменено) Monnoroch, вообще меня интересует ф-ция работы с "bind_object". Она находится выше предыдущей ("motivation_action_manager"). Строка с "bind_object" встречается в движке только один раз - это там. Ну а если идет регистрация, как ты говоришь, то можно как-то узнать, куда в итоге идет ф-ция. Изменено 27 Июля 2011 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612714
Monnoroch 6 Опубликовано 27 Июля 2011 Поделиться Опубликовано 27 Июля 2011 (изменено) SkyLoader, Я все еще ничего не понимаю. Теперь ты говоришь, что тебя интересует другая проблема, нежели ты описал выше. Напиши подробно что тебе надо от движка? И функция никуда не идет. Функции ходить не умеют, инфа 100%. Изменено 27 Июля 2011 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612736
SkyLoader 53 Опубликовано 27 Июля 2011 Поделиться Опубликовано 27 Июля 2011 Monnoroch, это я просто пример приводил. Мне нужно знать, по какому адресу находится ф-ция, которая выполняет действия "bind_object". Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612744
Monnoroch 6 Опубликовано 27 Июля 2011 Поделиться Опубликовано 27 Июля 2011 (изменено) SkyLoader, а мне откуда знать по какому она адресу? О_о с чего, опять же ты взял, что существует некое действие "bind_object"? и в чем, по твоему оно выражается? Изменено 27 Июля 2011 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612754
Malandrinus 615 Опубликовано 27 Июля 2011 Поделиться Опубликовано 27 Июля 2011 Что касается технологии Luabind, то там нет функции которая "всё биндит". Это потому, что Luabind построен на шаблонах C++ и для каждого экспорта при компиляции создаётся своя функция, причём не одна, а целая куча, и имён у них нет, поскольку они не выходят за пределы xrgame, да ещё и оптимизатор зачастую превращает это всё в малопонятную мешанину. Это кстати чертовски усложняет доэкспорт существующих в движке функций. Например, я совсем не представляю, как можно экспортировать некий класс. Я даже не понимаю, как можно экспортировать метод уже экспортированного класса, если нет экспортированного метода с таким же прототипом. В некоторых случаях удаётся это сделать, втиснув метод в другой, с похожим прототипом, оставив часть аргументов неиспользуемыми. Вот примерно на таком уровне удаётся работать, и лично мне дальше продвинуться не удалось. А о чём вы здесь беседы ведёте - я просто не понимаю. Видимо мне мозгов не хватает. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612765
Monnoroch 6 Опубликовано 27 Июля 2011 Поделиться Опубликовано 27 Июля 2011 (изменено) malandrinus, я примерно о том же и говорю, что понять мало что с такого кода можно. просто из приведенного кода явно видно, что вызывается метод luabind::detail::class_base::add_method(char const *,luabind::detail::overload_rep const &) с первым аргументом "motivation_action_manager" push offset amоtivation_act; "motivation_action_manager" call ds:?add_method@class_base@detail@luabind@@QAEXPBDABUoverload_rep@23@@Z; luabind::detail::class_base::add_method(char const *,luabind::detail::overload_rep const &) вот, собственно и все, что на первый взгляд видно. возникает ощущение, что в класс "motivation_action_manager" добавляется некоторый метод. Тут важно, что имеется ввиду класс LUA. То есть конечно в с++ класс что-то добавить это нонсенс. какой - а черт его знает. я даже не знаю что такое luabind::detail::overload_rep. далее, чуть выше есть код: lea edx, [esp+58h+var_38] push edx что наводит на мысль о связи var_38 и той самой добавляемой функцией типа luabind::detail::overload_rep (это вообще функция ли?), которая походу в коде представляла собой указатель, поскольку по-видимому выделена на стеке, ибо [esp+58h+var_38]. И собственно постоение которой, походу и есть в коде выше. собственно, вот и все, что можно сказать (= Ну, вернее, я больше ничего там разобрать не могу. Изменено 27 Июля 2011 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612773
SkyLoader 53 Опубликовано 28 Июля 2011 Поделиться Опубликовано 28 Июля 2011 В итоге я нашел то, что искал. Оно находилось там, где находится "script_binding". Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-612933
Monnoroch 6 Опубликовано 28 Июля 2011 Поделиться Опубликовано 28 Июля 2011 SkyLoader, Ага, нашел-то нашел, только обьяснить никому не смог Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613064
SkyLoader 53 Опубликовано 28 Июля 2011 Поделиться Опубликовано 28 Июля 2011 (изменено) Monnoroch, да я на самом деле тупанул. Просто в билде я сначала искал "script_binding", чтобы изменить там кой-чего, а потом, бегая по ф-циям, забрел в "bind_object", искал. Там было 2 вызова ф-ций. Одна просто CScriptBinder_что-то там...Bind_Object, а другая - CScriptBinder__set_object. Во второй ф-ции я нашел и изменил одну проверку, которая мне нужна была. Хотел перенести это на оригинал и по привычке начал искать "bind_object", а там все изменено до неузнаваемости. В итоге оказалось, что все это лежит в "script_binding". Изменено 28 Июля 2011 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613071
_Призрак_ 11 Опубликовано 28 Июля 2011 Поделиться Опубликовано 28 Июля 2011 Поделишься дллокой чтобы биндеры работали в мп? Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613073
SkyLoader 53 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 (изменено) _Призрак_, хех, я только место нашел, поэтому на стадии ковыряния. При изменении одной проверки биндер отключается в сп. Я уже пробовал раз 8 различными подходами, без результата. Если есть желание, можешь сам глянуть: .text:101C9883 cmp byte ptr [ecx], 0 Если 0 заменить на 1, то в сп биндер отключается, однако если следующую строчку с jnz убрать вообще, то ничего не изменится. Изменено 29 Июля 2011 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613079
KD87 720 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 SkyLoader, _Призрак_, в CScriptBinder::set_object() есть проверка на сингловый тип игры. Надо не на нуль там заменять, а убрать проверку. На билде 2947 выглядит вот так: .text:1006F91F call ?IsGameTypeSingle@@YA_NXZ; IsGameTypeSingle(void) .text:1006F924 test al, al .text:1006F926 jz short loc_1006F92F Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613100
SkyLoader 53 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 (изменено) KD87, ну я и говорю, что я билде я так делал, а в оригинале все по-другому. В оригинале даже вроде нет проверок на IsGameTypeSingle, все вручную проверяется. Изменено 29 Июля 2011 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613141
Monnoroch 6 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 (изменено) Если 0 заменить на 1, то в сп биндер отключается, однако если следующую строчку с jnz убрать вообще, то ничего не изменится. логично. у тебя зеро флаг был 1, выполняется cmp - становится 0.jnz не выполняется. убираешь cmp - остается 1 - jnz выполняется всегда. а тебе походу надо отключить jnz. так ты замени его на nop. Изменено 29 Июля 2011 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613167
SkyLoader 53 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 (изменено) Monnoroch, вот я и говорю, что заменил на nop, а ничего не изменилось. mov ecx, ds:?g_dedicated_server@@3_NA cmp byte ptr [ecx], 0 jnz short loc_101C98AB --тут на nop заменил Изменено 29 Июля 2011 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613171
KD87 720 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 SkyLoader, билд 2947 - это фактически билд финалки. Для какого патча ты пытаешься что-то поменять? Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613198
SkyLoader 53 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 KD87, четвертый патч. Я билдовые копания делаю на билде 18.. Там много отличий. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613258
KD87 720 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 (изменено) SkyLoader, скажи, а зачем пытаться перенести найденное в билдах 18xx в финалку? тебе недостаточно билдов 29xx с _отладочной информацией_? Как бы то ни было, я нашел нужную тебе функцию в dll от четвертого патча: .text:1012B4B0 sub_1012B4B0 proc near ; DATA XREF: sub_10134FE0+F2Bo .text:1012B4B0 .text:1012B4B0 arg_0 = dword ptr 4 .text:1012B4B0 .text:1012B4B0 push esi .text:1012B4B1 mov esi, ecx .text:1012B4B3 push edi .text:1012B4B4 mov edi, [esi+4] .text:1012B4B7 test edi, edi .text:1012B4B9 jz short loc_1012B4C0 .text:1012B4BB call sub_101CA330 .text:1012B4C0 .text:1012B4C0 loc_1012B4C0: ; CODE XREF: sub_1012B4B0+9j .text:1012B4C0 mov eax, ds:?g_pGamePersistent@@3PAVIGame_Persistent@@A; IGame_Persistent * g_pGamePersistent .text:1012B4C5 mov ecx, [eax] .text:1012B4C7 mov eax, [ecx+424h] .text:1012B4CD cmp eax, 1 .text:1012B4D0 mov esi, [esi+4] .text:1012B4D3 jz short loc_1012B4D9 .text:1012B4D5 test eax, eax .text:1012B4D7 jnz short loc_1012B4E3 .text:1012B4D9 .text:1012B4D9 loc_1012B4D9: ; CODE XREF: sub_1012B4B0+23j .text:1012B4D9 mov edx, [esp+8+arg_0] .text:1012B4DD mov [esi+114h], edx .text:1012B4E3 .text:1012B4E3 loc_1012B4E3: ; CODE XREF: sub_1012B4B0+27j .text:1012B4E3 pop edi .text:1012B4E4 pop esi .text:1012B4E5 retn 4 .text:1012B4E5 sub_1012B4B0 endp На всякий случай - то же самое в псевдокоде: int __thiscall sub_1012B4B0(int this, int a2) { int v2; // esi@1 int result; // eax@3 int v4; // esi@3 v2 = this; if ( *(_DWORD *)(this + 4) ) sub_101CA330(); result = *((_DWORD *)g_pGamePersistent + 265); v4 = *(_DWORD *)(v2 + 4); if ( result == 1 || !result ) *(_DWORD *)(v4 + 276) = a2; return result; } Чуешь, что надо менять? проверка на тип игры тут: .text:1012B4CD cmp eax, 1 Для общей информации приведу перечисление для game_id: enum s_gameid { GAME_ANY => 0; GAME_SINGLE => 0x01; GAME_DEATHMATCH => 0x02; GAME_CTF => 0x03; GAME_ASSAULT => 0x04; GAME_CS => 0x05; GAME_TEAMDEATHMATCH => 0x06; GAME_ARTEFACTHUNT => 0x07; GAME_LASTSTANDING => 0x64; GAME_DUMMY => 0xFF; } Изменено 29 Июля 2011 пользователем KD87 Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613344
SkyLoader 53 Опубликовано 29 Июля 2011 Поделиться Опубликовано 29 Июля 2011 (изменено) KD87, скоро этот билд скачаю себе. 1) Про псевдокод я вообще не знал, что он встроен, спасибо! F5 2) Как ты ф-цию нашел? Я ее искал две недели. Неужели в этот билде все настолько схоже? 3) Я проверку и на 0 менял и на 2 (может в деатматче заработает), но ничего не работает - биндер отключается в сингле и не работает в мульте. Я пробовал следующую jz short loc_1012B4D9 заменить на jmp. Ведь на на проверку это больше влиять не будет? Но, тоже самое - отключение биндера везде. Изменено 29 Июля 2011 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613388
KD87 720 Опубликовано 30 Июля 2011 Поделиться Опубликовано 30 Июля 2011 SkyLoader, а чего там искать? имена всех экспортированных функций есть в функциях script_register_... Выполняешь поиск по нужному имени, дальше дело техники. Если отладочной информации нет и нужное имя не находится, можно взять ближайший билд с оной и с умом сравнивать - обычно удается найти то, что нужно (в этом случае так и сделал). Это в данном конкретном случае. В общем случае, конечно, сложнее - когда я составлял список версий спавна по билдам, искал вообще по битовым маскам, применяемым в CAE_Abstract::Spawn_read(). В общем, свой подход каждый раз. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/19/#findComment-613404
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти