Перейти к контенту

Редактирование движка X-Ray


Рекомендуемые сообщения

А собственно что это за команда?

 

Настройка прицеливания оружия (положение и оси) прямо из игры...

Изменено пользователем Cyclone

Freedom

Ссылка на комментарий

Real Wolf, Ну для кого-нибудь может и не проблема, а для меня, как оказалось, очень даже проблема. Пару дней поковырялась и ни какого результата.

 

Поэтому у меня большая просьба, если кому-нибудь не трудно (и кто в этом разбирается) сделать этот xrGame.dll

userbar368.png

Ссылка на комментарий

Товарищи, ни у кого не завалялась правленый файл, позволяющий открывать двери у автомобилей?

Ссылка на комментарий

Вот нашёл неплохую статейку, где объясняется, что является чем: http://hack-expo.void.ru/groups/reversing/...x/fileb010.html

Например:

004013E6 test bl, bl

Команда test выполняет побитно логическую операцию "И" над операндами. В данном случае первый и второй операнды команды - это регистр bl. Логическая операция "И" имеет следующую таблицу истинности

 

Каждая команда описана, вроде.

 

Добавлено через 216 мин.:

http://www.codenet.ru/progr/asm/tasm/39.php

Тут ещё полезный материал...

Ссылка на комментарий

День добрый.

Такой вопрос - как восстановить реакцию аномалий на нпц в зове припяти?

Заранее спасибо.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Помогите, пожалуйста!!! Хочу сделать, что б гранаты как в Call of Duty кидались одной кнопкой, но не знаю как. Подскажите, это надо xrGame изменять или скрипт писать?

Ссылка на комментарий

Ghost8611, а что сейчас разве не одной кнопкой? Хочешь быстро кинуть - левая кнопка мыши. Хочешь размахнуться, что-бы по дальше кинуть - правая кнопка мыши. В обоих случаях одна кнопка юзается.

 

P.S. Мой вопрос от горячих кнопках в мультиплеере, из предыдущего поста больше не актуален :)

Изменено пользователем PUNK-398
S.T.A.L.K.E.R.
Ссылка на комментарий

Ребят,я вот не нашел скрипта,который отвечает за загрузочные экраны.Поясню: Мы имеем текстуру ui_load,в которой есть место,где подставляются экраны локаций.Должен быть скрипт,или хотя бы конфиг,который отвечает за координаты и размеры текстур на этих экранах,таковых не нашел.Скажите,управление этими экранами идет из движка,или все-таки скрипт есть?

Ссылка на комментарий

PUNK-398,

Нееет, ты не понял, как в Crysis первом и в call of Duty, не убирая оружия, а то так медленно очень...

 

Незачем цитировать пост целиком.

Изменено пользователем Cyclone
Ссылка на комментарий

Miller, все в движке, товарищ.

Но один человек (или не один) догадался, как изменить размеры. Ответ - НС, вроде.

 

Ghost8611, надо много кода писать, чтобы сделать так.

Изменено пользователем SkyLoader
Ссылка на комментарий

Ооо, почитал я тему, да.

Так вот, народ, вы смешны.

Вам аж двое спецов обьясняют разные вещи, и какова реакция?

Половина - незнающие, выдает совершенно бредовые фразы, другие спорят.

 

Не выйдет с этим ничего. Для работы с бинарными файлами и IDA нужны не только соответствующие знания (которые весьма и весьма обьемны) но и огромный опыт, время и черт знает еще что.

Даже я, имеющи неплохой опыт в низкоуровневом программировании, знаю современный x86 ассемблер, я пытался разобрать с помощью IDA _свою собственную_ dll, написанную на чистом си - а это значит, что в принципе она оттранслировалась почти дословно, даже в таких условиях я смог найти, разобрать, понять только несколько простейших функций. А уж изменять я и лезть не стал... Потому уж я точно знаю, чтобы реально что-то сделать с дизассемблером - нужен очень большой опыт. И терпение, кстати, тоже, неслабое.

А тут многомегабайтный файл на С++, что означает шаблоны, виртуальные функции, бог знает что еще.

Добавлю еще, что разные компиляторы генерируют разный бинарный код.

Не выйдет ничего, ну максимум - что уже было, изменить константы в хекс редакторе, добавить условие. Но даже и чтобы просто добавить переход на адрес куда-то, что несложно, надо сначала найти то место, в которое вы хотите его добавить, разобрать окружающий код, найти адрес, куда надо переходить - а "найти" - это не просто найти, а в приведенном в теме сгенерированном сишном коде с безумными именами, и предположениями дизассемблера, которые совершенно не обязательно верны. Миллионы переменных, значение каждой из которых надо понять, обозначить.

В общем, гиблое дело, оставьте это профессионалам.

 

Добавлено через 23 мин.:

Я даже больше скажу: проще свой движок написать, чем что-то действительно кардинально поменять в уже существующем.

Изменено пользователем Monnoroch
Ссылка на комментарий

Miller, это есть в НЛС6. Только там они на весь экран...

Прошу прощения за оффтоп.

Изменено пользователем PavelSnork
Жду ли я Сталкер 2? Хм...
Ссылка на комментарий

Monnoroch, я тут узнать хотел:

В финальном длл сделали очень непонятную схему работы с методами. Вот есть такая ф-ция:

.text:10138780 sub_10138780    proc near            ; CODE XREF: sub_10134FE0+F57p
.text:10138780
.text:10138780 var_44          = dword ptr -44h
.text:10138780 var_40          = dword ptr -40h
.text:10138780 var_38          = byte ptr -38h
.text:10138780 arg_0           = dword ptr  4
.text:10138780
.text:10138780                 sub     esp, 48h
.text:10138783                 push    ebx
.text:10138784                 push    ebp
.text:10138785                 mov     ebp, [esp+50h+arg_0]
.text:10138789                 push    esi
.text:1013878A                 push    edi
.text:1013878B                 lea     edi, [esp+58h+var_38]
.text:1013878F                 mov     ebx, eax
.text:10138791                 call    sub_1013B040
.text:10138796                 mov     eax, [ebx]
.text:10138798                 push    eax
.text:10138799                 lea     esi, [esp+5Ch+var_44]
.text:1013879D                 call    sub_1013B0C0
.text:101387A2                 mov     eax, esi
.text:101387A4                 push    eax
.text:101387A5                 mov     ecx, edi
.text:101387A7                 call    ds:?set_match_fun@overload_rep_base@detail@luabind@@QAEXABV?$function1@HPAUlua_State@@V?$allocator@Vfunction_base@boost@@@stlp_std@@@boost@@@Z; luabind::detail::overload_rep_base::set_match_fun(boost::function1<int,lua_State *,stlp_std::allocator<boost::function_base>> const &)
.text:101387AD                 mov     eax, [esp+58h+var_44]
.text:101387B1                 test    eax, eax
.text:101387B3                 jz      short loc_101387C1
.text:101387B5                 mov     ecx, [esp+58h+var_40]
.text:101387B9                 push    1
.text:101387BB                 push    ecx
.text:101387BC                 call    eax
.text:101387BE                 add     esp, 8
.text:101387C1
.text:101387C1 loc_101387C1:                        ; CODE XREF: sub_10138780+33j
.text:101387C1                 mov     ebx, [ebx]
.text:101387C3                 push    ebx
.text:101387C4                 lea     esi, [esp+5Ch+var_44]
.text:101387C8                 call    sub_1013B120
.text:101387CD                 mov     edx, esi
.text:101387CF                 push    edx
.text:101387D0                 lea     ecx, [esp+5Ch+var_38]
.text:101387D4                 call    ds:?set_fun@overload_rep@detail@luabind@@QAEXABV?$function1@HPAUlua_State@@V?$allocator@Vfunction_base@boost@@@stlp_std@@@boost@@@Z; luabind::detail::overload_rep::set_fun(boost::function1<int,lua_State *,stlp_std::allocator<boost::function_base>> const &)
.text:101387DA                 mov     eax, [esp+58h+var_44]
.text:101387DE                 test    eax, eax
.text:101387E0                 jz      short loc_101387EE
.text:101387E2                 mov     ecx, [esp+58h+var_40]
.text:101387E6                 push    1
.text:101387E8                 push    ecx
.text:101387E9                 call    eax
.text:101387EB                 add     esp, 8
.text:101387EE
.text:101387EE loc_101387EE:                        ; CODE XREF: sub_10138780+60j
.text:101387EE                 lea     edx, [esp+58h+var_38]
.text:101387F2                 push    edx
.text:101387F3                 push    offset amоtivation_act; "motivation_action_manager"
.text:101387F8                 mov     ecx, ebp
.text:101387FA                 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 &)
.text:10138800                 lea     ecx, [esp+58h+var_38]
.text:10138804                 call    ds:??1overload_rep@detail@luabind@@QAE@XZ; luabind::detail::overload_rep::~overload_rep(void)
.text:1013880A                 pop     edi
.text:1013880B                 pop     esi
.text:1013880C                 mov     eax, ebp
.text:1013880E                 pop     ebp
.text:1013880F                 pop     ebx
.text:10138810                 add     esp, 48h
.text:10138813                 retn    0Ch
.text:10138813 sub_10138780    endp

 

В ф-циях, которые находятся рядом, такие же графические схемы и циклы. Ты можешь сказать, где идет вызов ф-ции, при вызове motivation_action_manager?

Изменено пользователем SkyLoader
Ссылка на комментарий

Есть вопрос (давно уже не поднимал тему моддинга) как реализовать НРС что бы на левую он стрелял а на правую бил или же наоборот. мне отвечали но я уже забыл это вскрытие движка или сдк? предпологаю что движок вот и интерисуюсь в этой теме. заранее спасибо

Ссылка на комментарий

SkyLoader, Можешь повторить вопрос несколько более развернуто? Честно говоря, не понял в чем он состоит.

 

DIMA-RED, Повесить скрипт, отлавливающий прицеливание и наносящий хит перед актором. Анимацию приделать врятле можно.

 

SkyLoader, с какими методами? кто сделал? какие схемы? что такое циклы я понимаю, но при чем тут они?

вызов функции идет там, где call (=

 

при чем тут акшн мэнэджер?

Ну и вообще, поподробней, что тебе надо извлечь из этого кода?

Ах, да, и больше всего меня озадачило при чем тут функции, которые находятся рядом.

 

ага, я нашел "motivation_action_manager".

только он не вызывается. походу проводится некое действие над этим классом.

 

я не знаю luabund, поэтому ничего утверждать не могу, но по-моему в класс добавляется некий метод (это все судя по названиям функций luabind, с которым сам я поработать не могу по техническим причинам)

 

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

 

Вопрос к администрации, почему через некоторое время пропадает кнопка "изменить?"

А если мне мысль умная пришла в голову, или я ошибку нашел, или опечатку хочу исправить?

Раньше не пропадала. Не понимаю мотивации таково нововведения.

 

Пост можно редактировать в течение 15 минут. А вообще, для таких вопросов есть Административный раздел.

 

Добавлено через 219 мин.:

Cyclone, да, это я уже посчитал, но мотивация ограничения так и не ясна.

 

Вот и баг: я снова могу редактировать пост (=

Изменено пользователем Monnoroch
Ссылка на комментарий

В какой то степени Monnoroch прав. Думаю не стоит переубеждать в обратном, но:

 

Для тех кто только хочет начать изучать программирование (да и вообще новую науку) думаю стоит первым делом почитать и изучить работы Фрейда и других психологов (или пройти базовый курс психологии и социологии). Ну а если вы уже определились, и хотите изучать "редактирования движка" то стоит почитать: "Кип Ирвин. язык ассемблера для процессоров intel. 4-е издание", "Н.Г. Голубь. Искусство программирования на Ассемблере", " книги Ю.Магда"

Изменено пользователем unknown
Ссылка на комментарий

Кто нибудь пытался восстановить блудмарки на ЧН?

(на ТЧ сделали, про ЗП спросили, а про ЧН как всегда забыли <_< )

Сам пытался, ну не выходит :mellow:

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...