Редактирование движка |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Редактирование движка |
11.04.2009, 17:42
Сообщение
#1
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Награды: 2 Регистрация: 11.03.2009 |
Интересует конкретные идеи/возможности, как декомпилить двиг игры и .dll библиотеки, с вшитыми .cpp файлами, через которые можно было бы восстановить множество отключённых фич. Например, открытие дверей в машине перед "усаживанием" за руль. Хекседикальные вьюверы - фигня. Кроме правки байтов и возможности зануливания от них проку мало, в отношении сталкера. Нашёл оч полезную утилиту и смог дизассемблить xrGame.dll нашёл в нём e"\stalker\patch_1_000*\xr_3da\xrgame\cardoors.cpp и все строки в библиотеке, но, увы, не смог сам файл вытащить из библиотеки. Полагаю, если научиться декомпилить и, собственно, компилить обратно .exe и .dll библиотеки ядра и двига игры - можно сделать прорыв в модостроении.. например вернув хотя бы возможность открывать двери/капоты/багажники в машинах И еще много чего, без необходимости издеваться в скриптах. Так же интересует - возможно ли сделать к сталкеру некий расширитель скриптового/с++ языка, как например к Обливиону OBSE?
p.s. если кого интересует утилита для декомпила - велкам в личку. -------------------- нарушение правил п. 7.2
|
 
|
|
05.03.2016, 22:40
Сообщение
#1761
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
SkyLoader, ты не фиксил деформацию оружия при настройке его позиции и ориентации через hud_adjust_mode? В LA вроде бы ничего такого я не нашел, но может быть в дальнейшем где-то правил?
-------------------- |
 
|
|
|
|
06.03.2016, 22:57
Сообщение
#1762
|
|
Геймер Репутация: 19 Группа: Участник Сообщений: 105 Награды: 2 Регистрация: 12.05.2010 |
Поскольку чтобы делать pull request'ы в github'е нужно сделать форк проекта (бредовая система, может я хочу всего лишь один файл поменять) я буду тут периодически постить всякие находки по движку. Ну там всякие исправления, или странное использование и т.д. В принципе так даже лучше, ведь OpenXRay - не единственный проект связанный с XRay (мой проект - тому пример).
Сегодняшний экземпляр хоть и не утечка памяти, но тоже не айс. Файл: FS.cpp Код void IReader::r_string(char* dest, u32 tgt_sz) { char* src = (char*)data + Pos; u32 sz = advance_term_string(); R_ASSERT2(sz < (tgt_sz - 1), "Dest string less than needed."); R_ASSERT(!IsBadReadPtr((void*)src, sz)); #ifdef _EDITOR CopyMemory(dest, src, sz); #else strncpy_s(dest, tgt_sz, src, sz); #endif dest[sz] = 0; } Цитата Important This function is obsolete and should not be used. Despite its name, it does not guarantee that the pointer is valid or that the memory pointed to is safe to use. For more information, see Remarks on this page. И в MSDN человек четко объяснил что лучше не стоит их даже вызывать. Поправьте у себя. Сообщение отредактировал Giperion - 06.03.2016, 23:05 |
 
|
|
06.03.2016, 23:48
Сообщение
#1763
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
|
 
|
|
15.03.2016, 03:41
Сообщение
#1764
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Вот шейдеры: В архиве две папки: final glows и new glows. final glows - оригинальные глоу, которые резко обрезались геометрией, теперь обрезаются плавно. new glows - глоу, которые рисутся поверх геометрии, создавая более реалистичный эффект. Исправлен баг, когда они рисовались поверх худа оружия. Тест варианта "new glows" - Все-таки ещё есть что дорабатывать - часть худа оружия все равно просвечивает, а также глоу при определенных условиях резко начинает обрезаться в стене. Ну и конечно баг с мерцанием глоу через стены. З.Ы. вариант "final glows" вроде бы нормально работает, правда почему-то, чем больше поверхность глоу показана, тем она прозрачнее. Сообщение отредактировал RayTwitty - 15.03.2016, 03:46 -------------------- |
 
|
|
15.03.2016, 07:33
Сообщение
#1765
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
Все-таки ещё есть что дорабатывать - часть худа оружия все равно просвечивает, а также глоу при определенных условиях резко начинает обрезаться в стене. Шейдеры сделаны были для ЗП, там оружие не так далеко расположено. Чтобы часть худа не просвечивало, достаточно увеличить: Цитата // Must be less than view near #define DEPTH_EPSILON 1.1h Резкое обрезание только если вплотную к глоу подлетать. Тут уже ничего не поделаешь. Или глоу через худ просвечивает или нет, но обрезается при приближении к камере. Как вариант, можно сделать мягкость при приближении к камере, чтобы не так заметно было и всё. |
 
|
|
28.03.2016, 00:07
Сообщение
#1766
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Недонаработки по недолаунчеру:
-------------------- В армии по 01.07.2020. |
 
|
|
28.03.2016, 22:27
Сообщение
#1767
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Не знаю насколько тут знают об этой проблеме, но на АМК этому посвящена даже
Проблема - бьются сейвы, при загрузке таких сейвов - безлоговый вылет. Безлоговый он кстати потому, что раньше все юзали кривые кряки, которые ничего не сохраняли в лог. В стимовском экзешнике стек таки сохранился: Код 0023:0418C4E2 xrGame.dll но толку мало - поскольку начальные числа адресов постоянно меняются, гадать на кофейной гуще и искать нужные места в либе как-то некомильфо.0023:041940D1 xrGame.dll 0023:041FA804 xrGame.dll Но есть отладочные патчи, например для 1.0007rc1, с этим движком стек уже куда приятнее: CODE 0023:6868A612 xrGame.dll, CAI_Stalker::agent_manager(), j:\xray_sources\trunk\xray\xr_3da\xrgame\ai\stalker\ai_stalker_impl.h, 20 Проверил в ida - первые три вызова соответствуют функциям в 6 патче, значит точно наш клиент.0023:68A284EE xrGame.dll, CHitMemoryManager::add(), j:\xray_sources\trunk\xray\xr_3da\xrgame\hit_memory_manager.cpp, 165 0023:68A28931 xrGame.dll, CHitMemoryManager::load(), j:\xray_sources\trunk\xray\xr_3da\xrgame\hit_memory_manager.cpp, 350 0023:68A2AA69 xrGame.dll, CMemoryManager::load(), j:\xray_sources\trunk\xray\xr_3da\xrgame\memory_manager.cpp, 353 0023:686C31D4 xrGame.dll, CBaseMonster::load(), j:\xray_sources\trunk\xray\xr_3da\xrgame\ai\monsters\basemonster\base_monster.h, 92 0023:6899160A xrGame.dll, CGameObject::net_Load(), j:\xray_sources\trunk\xray\xr_3da\xrgame\gameobject.cpp, 422 0023:6899229C xrGame.dll, CGameObject::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\gameobject.cpp, 314 0023:6898CC06 xrGame.dll, CPhysicsShellHolder::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\physicsshellholder.cpp, 48 0023:68996F89 xrGame.dll, CEntity::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\entity.cpp, 213 0023:68995DEF xrGame.dll, CEntityAlive::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\entity_alive.cpp, 234 0023:68A0EE7E xrGame.dll, CCustomMonster::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\custommonster.cpp, 641 0023:68A07D9E xrGame.dll, CBaseMonster::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\ai\monsters\basemonster\base_monster_startup.cpp, 169 0023:68AC25DD xrGame.dll, CZombie::net_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\ai\monsters\zombie\zombie.cpp, 131 0023:68AD8675 xrGame.dll, CLevel::g_sv_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\level_network_spawn.cpp, 108 0023:68AD89C7 xrGame.dll, CLevel::cl_Process_Spawn(), j:\xray_sources\trunk\xray\xr_3da\xrgame\level_network_spawn.cpp, 40 0023:689B68C9 xrGame.dll, CLevel::ProcessGameEvents(), j:\xray_sources\trunk\xray\xr_3da\xrgame\level.cpp, 420 0023:689B718B xrGame.dll, CLevel::OnFrame(), j:\xray_sources\trunk\xray\xr_3da\xrgame\level.cpp, 480 0023:013C205E XR_3DA.exe, CRegistrator<pureRender>::Process(), j:\xray_sources\trunk\xray\xr_3da\pure.h, 77 0023:01402E19 XR_3DA.exe, CRenderDevice::FrameMove(), j:\xray_sources\trunk\xray\xr_3da\device.cpp, 359 0023:014032F3 XR_3DA.exe, CRenderDevice::Run(), j:\xray_sources\trunk\xray\xr_3da\device.cpp, 226 0023:0142CB35 XR_3DA.exe, Startup(), j:\xray_sources\trunk\xray\xr_3da\x_ray.cpp, 268 0023:0142D127 XR_3DA.exe, WinMain_impl(), j:\xray_sources\trunk\xray\xr_3da\x_ray.cpp, 685 0023:0142D2A7 XR_3DA.exe, WinMain(), j:\xray_sources\trunk\xray\xr_3da\x_ray.cpp, 745 0023:013DB9CD XR_3DA.exe, __tmainCRTStartup(), f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c, 547 0023:761C33CA kernel32.dll, BaseThreadInitThunk() 0023:77199ED2 ntdll.dll, RtlInitializeExceptionChain() 0023:77199EA5 ntdll.dll, RtlInitializeExceptionChain() Код IC CAgentManager &CAI_Stalker::agent_manager () const валится здесь, при вызове отсюда:{ return (Level().seniority_holder().team(g_Team()).squad(g_Squad()).group(g_Group()).agent_manager()); } Код void CHitMemoryManager::add (const CHitObject &_hit_object) Пока на ум приходит раскрыть вызов... if (!object().g_Alive()) return; CHitObject hit_object = _hit_object; hit_object.m_squad_mask.set (m_stalker->agent_manager().member().mask(m_stalker),TRUE); Код Level().seniority_holder().team(g_Team()).squad(g_Squad()).group(g_Group()).agent_manager() и посмотреть где конкретно проблема. Кто-нибудь работал с неписями, сквадами и т.д.?
Сообщение отредактировал RayTwitty - 28.03.2016, 22:28 -------------------- |
 
|
|
28.03.2016, 22:34
Сообщение
#1768
|
|
Мастер Игры Репутация: 232 Группа: Друзья GM Сообщений: 1299 Награды: 4 Регистрация: 05.03.2012 |
RayTwitty,
Было что-то похожее. Могу посоветовать попробовать удалить все аномалии с уровня в спавне, (включая костры) и попробовать пройти заново этот уровень. -------------------- |
 
|
|
28.03.2016, 22:59
Сообщение
#1769
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
hi_flyer, так тут же проблема с мобами, а не аномалиями.
-------------------- |
 
|
|
28.03.2016, 23:07
Сообщение
#1770
|
|
Мастер Игры Репутация: 232 Группа: Друзья GM Сообщений: 1299 Награды: 4 Регистрация: 05.03.2012 |
RayTwitty,
Ну мне помогло. Тоже была проблема в одном единственном месте. Конкретно удалял аномалии класса ZS_MBALD. -------------------- |
 
|
|
28.03.2016, 23:17
Сообщение
#1771
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Код IC CAgentManager &CAI_Stalker::agent_manager () const { return (Level().seniority_holder().team(g_Team()).squad(g_Squad()).group(g_Group()).agent_manager()); } А все-таки что за вылет? Access Violation или assert какой сработал? С группами, сквадами есть вылет, что мододелы не парятся с группами/скадами в гулагах, в результате все онлайновые нпц оказываются в одной группе. А там не больше 32 человек может быть - дальше маска заканчивается. И что-то там не хорошее случается. Собери дебажную версию и запусти под отладчиком - есть же сейв, потерпишь чуток лагов до вылета. А может в хит-мемори просто остался удаленный НПЦ? Ну мне помогло. Тоже была проблема в одном единственном месте. Конкретно удалял аномалии класса ZS_MBALD. на аномалиях обычно вылеты при неаккуратно сделанном обходе аномалий на рестрикторах. С исходниками обнаруживается на раз. |
 
|
|
29.03.2016, 00:29
Сообщение
#1772
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
А все-таки что за вылет? Access Violation или assert какой сработал? Ну я же стек привел, ассертов там никаких нет. Запускал не под студией. А может в хит-мемори просто остался удаленный НПЦ? С неписями практически не работал, поэтому не могу знать как там это устроено. Но версия с переполнением гулага кажется более правдоподобной, иначе бы на других локациях были проблемы. В оригинальной игре на Янтаре\Х-16 таких проблем же нет? -------------------- |
 
|
|
29.03.2016, 00:32
Сообщение
#1773
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Ну я же стек привел, ассертов там никаких нет. Запускал не под студией. А перед стеком что? Вылет-то почему произошел? Не особо важно, просто для полноты картины, так сказать. Цитата В оригинальной игре на Янтаре\Х-16 таких проблем же нет? В оригинальной игре все прописано как надо. Сообщение отредактировал abramcumner - 29.03.2016, 00:33 |
 
|
|
29.03.2016, 00:41
Сообщение
#1774
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
А перед стеком что? Ничего, что бы имело отношение к делу: Раскрывающийся текст CODE Клиент: Синхронизация... * phase time: 5 ms * phase cmem: 233925 K * [win32]: free[3035336 K], reserved[83400 K], committed[1075504 K] * [ D3D ]: textures[422342 K] * [x-ray]: crt heap[233925 K], process heap[56671 K], game lua[21146 K], engine lua[182 K], render[751 K] * [x-ray]: economy: strings[5341 K], smem[31479 K] [16-9] get_xml_name for[game_tutorials.xml] returns [game_tutorials.xml] [16-9] get_xml_name for[ui_credits.xml] returns [ui_credits.xml] [16-9] get_xml_name for[ui_movies.xml] returns [ui_movies.xml] stack trace: Для macron В данном случае что бы пишется раздельно, поскольку между что и бы можно вставить слово, например: "что имело бы отношение ..." На всякий случай Сообщение отредактировал RayTwitty - 29.03.2016, 00:47 -------------------- |
 
|
|
05.04.2016, 12:38
Сообщение
#1775
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
У вас же система багрепортов есть, она и должна показать конечную причину вылета. Правда, я не помню, умеет ли такое тот обрубок, который использовался до BugTrap, который некоторые зачем-то рвутся вырвать из движка с корнями.
-------------------- |
 
|
|
06.04.2016, 22:55
Сообщение
#1776
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Тут кто-то когда-то говорил о LuaBind без Boost, ЭМНИП. Можно ссылочку на него.
-------------------- В армии по 01.07.2020. |
 
|
|
07.04.2016, 00:27
Сообщение
#1777
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Тут кто-то когда-то говорил о LuaBind без Boost, ЭМНИП. Можно ссылочку на него. |
 
|
|
07.04.2016, 22:39
Сообщение
#1778
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Тут кто-то когда-то говорил о LuaBind без Boost, ЭМНИП. Можно ссылочку на него. Благодарю -------------------- В армии по 01.07.2020. |
 
|
|
13.04.2016, 16:16
Сообщение
#1779
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Уважаемые, помогите разобраться...
ТЧ 1.0007 + НС геймдата + debug конфигурация. Умучили ошибки [LUA] SCRIPT RUNTIME ERROR [LUA] 0 : [C] [C](-1) : [LUA] 1 : [C ] add_precondition [LUA] 2 : [Lua] ...es\stalker_soch\gamedata\scripts\xr_motivator.script(574) : addCommonPrecondition [LUA] 3 : [Lua] ...games\stalker_soch\gamedata\scripts\xrs_armor.script(2448) : add_to_binder [LUA] 4 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_logic.script(544) : assign_storage_and_bind [LUA] 5 : [Lua] ...games\stalker_soch\gamedata\scripts\xrs_armor.script(2461) : set_scheme [LUA] 6 : [Lua] d:\games\stalker_soch\gamedata\scripts\xrs_ai.script(56) : enable_schemes [LUA] 7 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_logic.script(360) : enable_generic_schemes [LUA] 8 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_logic.script(224) : configure_schemes [LUA] 9 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_gulag.script(867) : setup_logic [LUA] 10 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_gulag.script(384) : object_setup_online [LUA] 11 : [Lua] ...\games\stalker_soch\gamedata\scripts\xr_gulag.script(1212) : setup_gulag_and_logic_on_spawn [LUA] 12 : [Lua] ...es\stalker_soch\gamedata\scripts\xr_motivator.script(134) : [LUA] s:\xr_3da\xrgame\condition_state_inline.h(44) : "(I == m_conditions.end()) || ((*I).condition() != condition.condition()) Насколько я понял - в xr_motivator.addCommonPrecondition пытаются добавить евалуатор с condition , id которого уже было добавлено в список conditions ранее. По логике скрипта - эти эвалуаторы должны перекрывать существующие в этом списке, но в коде ни о каком перекрытии (переназначении) речь не идет. Я вообще такого функционала (замещение/перекрытие condition) не нашел в коде... Конечно, можно собрать с undef XRAY_EXCEPTIONS и undef DEBUG - ошибка пропадет, но список conditions будет расти постоянно. Насколько критично наличие дублей в этом списке и на каком принципе вообще работают эти conditions? Спасибо за любую информацию! |
 
|
|
12.05.2016, 17:02
Сообщение
#1780
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Опять результаты баловства с IDA:
скриншоты в формате tga(и только) для 6 патча: -------------------- В армии по 01.07.2020. |
 
|
|
Текстовая версия | Сейчас: 07.06.2024, 23:35 |