Редактирование движка |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт 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
|
 
|
|
30.09.2019, 15:03
Сообщение
#4101
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
чет я совсем не понял. Экспериментировал с некоторыми моделями (спавнил с одними и теми же координатами)- например булка хлеба спавниться нормально, модель энергетика, аптечка - тоже. т.е. как бы Physics.cpp+ode работает? Коллизии видятся, вылетов нет. Вот только от чего зависит - провалится модель вниз или ее подбросит вверх если она по "размеру" немного "погружается" в материал?
Сообщение отредактировал Winsor - 30.09.2019, 15:12 |
 
|
|
|
|
30.09.2019, 18:12
Сообщение
#4102
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Кстати, попробовал свой код для управляемых ракет, и ракету начало сильно раскачивать, и она закрутилась. Видать придётся, как и реальной ракете, делать специальную стабилизацию.
Сообщение отредактировал NanoBot-AMK - 30.09.2019, 18:13 -------------------- СТАЛКЕР только для ПК!
|
 
|
|
30.09.2019, 18:51
Сообщение
#4103
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
вылетов нет. А что с этими трубками есть вылеты? Еще получается, что сквозь земли трубки никогда не проваливаются, только через эту конструкцию? Можешь выложить object трубок и секцию трубок из конфига? Ну и object конструкции на всякий случай. Кстати, попробовал свой код для управляемых ракет, и ракету начало сильно раскачивать, и она закрутилась. Видать придётся, как и реальной ракете, делать специальную стабилизацию. Ну формула странная. Угол через скалярное произведение - норм. Но вот clamp не нужен: если dir`ы отнормированы, там и так все будет хорошо; если нет, то явно и поделить на длины перед арккосинусом. Иначе ты всегда будешь на +-90 крутить, конечно ракета будет закручиваться. Векторное произведение норм, а синус откуда? Там по идее момент должен быть: масса на угловую скорость, угловая ускорость = угол поделить на fixed_step. Сообщение отредактировал abramcumner - 30.09.2019, 18:51 |
 
|
|
01.10.2019, 00:15
Сообщение
#4104
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Решил в сети ворон завести. Но там эти к...ровы к ГГ привязаны.
Вырезал приязку. Вороны заработали. Кружат в нуле. Что можно придумать для нормально-адекватного поведения ворон? static Fvector vV_centr={0,0,0}; //Это новый центр /* //Diesel cut // At random times, change the direction (goal) of the plane if(fGoalChangeTime<=0) { fGoalChangeTime += fGoalChangeDelta+fGoalChangeDelta*Random.randF(-0.5f,0.5f); Fvector vP = Actor()->Position(); //нет, кроме сингла. vP.y += +fMinHeight; vGoalDir.x = vP.x+vVarGoal.x*Random.randF(-0.5f,0.5f); vGoalDir.y = vP.y+vVarGoal.y*Random.randF(-0.5f,0.5f); vGoalDir.z = vP.z+vVarGoal.z*Random.randF(-0.5f,0.5f); } */ //Diesel cut //Diesel new // At random times, change the direction (goal) of the plane if(fGoalChangeTime<=0) { fGoalChangeTime += fGoalChangeDelta+fGoalChangeDelta*Random.randF(-5.0f,5.0f); //Fvector vP = Actor()->Position(); vV_centr.y += +fMinHeight; vGoalDir.x = vV_centr.x+vVarGoal.x*Random.randF(-5.5f,5.5f); vGoalDir.y = vV_centr.y+vVarGoal.y*Random.randF(-5.5f,5.5f); vGoalDir.z = vV_centr.z+vVarGoal.z*Random.randF(-5.5f,5.5f); } //Diesel new Сообщение отредактировал Дизель - 01.10.2019, 00:17 |
 
|
|
01.10.2019, 00:38
Сообщение
#4105
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
static Fvector vV_centr={0,0,0}; //Это новый центр Ну и зачем вообще прибавлять нулевой вектор? Сразу к высоте прибавляй fMinHeight внизу и всё. -------------------- |
 
|
|
01.10.2019, 02:39
Сообщение
#4106
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Дизель, они там к камере привязаны в ТЧ, и к актору в ЗП.
Надо сделать специальное свойство координату, вот и данная группа ворон и будет кружится во круг этой точки. Точку задают через конфиг, и/или логику, и/или скриптовый метод. Как то так. Есть мысль сделать самолёт-бот (управляет ИИ) для СТАЛКЕРа. Вопрос? Есть ли модели самолётов?, в точности модель штурмовика Су-25. У меня где-то валялась модель беспилотника, и ещё какой-то левый самолёт. Думаете сложно, нет код ещё проще чем у вертолёта. Можно даже скриптами для оригинального движка сделать, на классе машины (БТРа). abramcumner, Я сделал более оптимальный код, но для управляемых ракет придётся дополнительно заморочиться. Надо как-то сделать стабилизацию. Кстати у настоящих ракет ЗРК так же присутствует система гашения раскачки ракеты. Так что всё правильно. ЗЫ Забыл ещё. Зомби-вороны! С виду как живые, но в жизнь у них -1.0 и метод alive даёт фальш, так же при обстреле ракетами, они совсем дохли, но при этом зависали в воздухе и дёргались. Не понял как это вылечить. Появлялись после того как я на уровне всех ворон перебил, а потом на свалку перешёл и обратно на кордон. То же при ручном спавне. Игра ТЧ. Сообщение отредактировал NanoBot-AMK - 01.10.2019, 02:51 -------------------- СТАЛКЕР только для ПК!
|
 
|
|
01.10.2019, 08:33
Сообщение
#4107
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Дизель, самый простой вариант и чтобы более менее красиво, высоту вектора сделать фиксированной, а X и Y брать динамикой по любому алгоритму:
1) Самый тупой способ, интерполировать координаты между ГГ, т.е. условно они стартуют в 0 0, появились игроки, берется первый и динамически до него интерполируется координаты, как только они добрались до него, летят к следующему и т.д. 2) Завести чуть логики которая на геймплей поработает, задавать вектор позиции последнего трупа с таймером, улосно убит игрок, вороны кружат над трупом в течении 1 минуты затем летят к следующему последнему трупу. 3) Пойти еще дальше, брать вектор положения от игрока с наибольшим числом убийств. |
 
|
|
01.10.2019, 09:04
Сообщение
#4108
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
вылетов нет. А что с этими трубками есть вылеты? Еще получается, что сквозь земли трубки никогда не проваливаются, только через эту конструкцию? Можешь выложить object трубок и секцию трубок из конфига? Ну и object конструкции на всякий случай. Нет, вылетов нет. только проваливаются, если модель частично в текстуру "погружена". Сквозь землю тоже проваливается, если в ней частично торчит. если спавнить выше (чтобы весь меш был над землей либо над объектом) - то не проваливается. Причем я нашел объект железной плиты , сквозь которую не падает вниз - то там сама плита тоньше чем меш трубы. Как бы решение я вижу но по своему незнанию не понимаю как определить что меш (скелет, физическая оболочка) при спавне будет частично погружена в объект. конфиг обычный Код [flame_parts]:II_ATTCH visual = dynamics\equipments\flame_prt_gorelka.ogf description = flame_part_desc inv_name = item_flame1_name inv_weight = 0.3 inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 11 inv_grid_y = 3 cost = 50 [trubka]:flame_parts visual = dynamics\equipments\flame_prt_trubka.ogf used_ai_location = false description = trubka_descr inv_name = trubka inv_weight = 0.5 inv_grid_width = 2 inv_grid_height = 1 inv_grid_x = 2 inv_grid_y = 40 cost = 500 модель: модель конструкции - нема к сожалению. подойдет любой "бетонный" блок большой, либо плиты один на один сложенные, как на Свалке у перехода в Бар. |
 
|
|
01.10.2019, 11:53
Сообщение
#4109
|
|
Опытный Геймер Репутация: 50 Группа: Участник Сообщений: 157 Награды: 2 Регистрация: 20.03.2014 |
Как бы решение я вижу но по своему незнанию не понимаю как определить что меш (скелет, физическая оболочка) при спавне будет частично погружена в объект. Конвертнуть в .object и посмотреть в сдк с включенной сеткой, часть модели по оси у будет ниже 0. Трубка как раз такая: Поправить в 3д редакторе положение модели |
 
|
|
01.10.2019, 14:21
Сообщение
#4110
|
|
Геймер Репутация: 4 Группа: Участник Сообщений: 108 Награды: 3 Регистрация: 02.02.2016 |
Спасибо! Ваш совет помог. Но я думал что как то можно движком узнать что модель "вторчалась" во что-то и уже движком ее "выдвинуть" из этого чего-то.
|
 
|
|
01.10.2019, 15:01
Сообщение
#4111
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Интересно, в ЗП отказались от использования моделей трупов мутов которые _dead. В ЧН это работало, а в ЗП этот код в CCustomMonster::visual_name вырезали. И если вернуть, игра начинает вылетать при загрузке трупа в кадре с ошибкой CKinematicsAnimated::ID_Cycle_Safe. Зачем вырезали, неужто глючило что?
Модель _dead, это такая же модель, только без анимации. Типа как ресурсов меньше потребляет. |
 
|
|
01.10.2019, 16:14
Сообщение
#4112
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Zagolski, движок всё равно требует некоторые анимации, даже если спавнишь мертвое тело.
-------------------- СТАЛКЕР только для ПК!
|
 
|
|
01.10.2019, 17:48
Сообщение
#4113
|
|
Мастер Игры Репутация: 248 Группа: Участник Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
Решил в сети ворон завести. Но там эти к...ровы к ГГ привязаны. Вырезал приязку. Вороны заработали. Кружат в нуле. Что можно придумать для нормально-адекватного поведения ворон? static Fvector vV_centr={0,0,0}; //Это новый центр CODE Fvector vP = { Random.randF(-5.0f,5.0f), 0.f, Random.randF(-5.0f,5.0f) }; не? -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
01.10.2019, 22:54
Сообщение
#4114
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
cjayho, рабочий вариант. Тоже самое, что ноль, только рандома больше.
Если у меня не получится привязать к камере, то твой вариант оставлю. Потому как эти вороны уже достали - гадят на голову, да в сети не работают. Вот ТЧ вариант: fGoalChangeTime += fGoalChangeDelta+fGoalChangeDelta*Random.randF(-0.5f,0.5f); Fvector vP; vP.set(Device.vCameraPosition.x,Device.vCameraPosition.y+fMinHeight,Device.vCame raPosition.z); vGoalDir.x = vP.x+vVarGoal.x*Random.randF(-0.5f,0.5f); vGoalDir.y = vP.y+vVarGoal.y*Random.randF(-0.5f,0.5f); vGoalDir.z = vP.z+vVarGoal.z*Random.randF(-0.5f,0.5f); Сообщение отредактировал Дизель - 01.10.2019, 23:53 |
 
|
|
02.10.2019, 00:00
Сообщение
#4115
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Забыл ещё. Зомби-вороны! С виду как живые, но в жизнь у них -1.0 и метод alive даёт фальш, так же при обстреле ракетами, они совсем дохли, но при этом зависали в воздухе и дёргались. Посмотри правки в этом файле если интересно, только это ЗП. Конкретно: Модель _dead, это такая же модель, только без анимации. Типа как ресурсов меньше потребляет. Странно, касательно монстров хз, но по сталкерам мне казалось в СДК наоборот всем трупам анимацию прописывают, что-бы при спавне они в красивой позе лежали. Смотрел давно, возможно это не так. Сообщение отредактировал Shoкer - 02.10.2019, 00:02 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
02.10.2019, 00:03
Сообщение
#4116
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Упал с крыши в сетевой и вылетел двиг. Это о чём?
R_ASSERT2(dMass_valide(&m),"bad bone mass params"); Код CODE
Сообщение отредактировал Дизель - 02.10.2019, 00:07 |
 
|
|
02.10.2019, 00:45
Сообщение
#4117
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Лучше сделай так. Определи свойство(Fvector) в классе ворон, и далее сделай скриптовый джетор и сетор. У саму реализацию пили на Lua, по мне так проще всего, всегда есть возможность переписать скрипт поведения ворон, так кружатся около трупов, или актора, или там в момент выброса летят в укрытие.
-------------------- СТАЛКЕР только для ПК!
|
 
|
|
02.10.2019, 00:51
Сообщение
#4118
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Группа: Припаркованный аккаунт Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
-------------------- Hello worlds!
|
 
|
|
02.10.2019, 01:26
Сообщение
#4119
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Упал с крыши в сетевой и вылетел двиг. Это о чём? [b]R_ASSERT2(dMass_valide(&m),"bad bone mass params"); FATAL ERROR [error]Expression : _valid( c ) [error]Function : CPhysicsShellHolder::correct_spawn_pos [error]File : .\PhysicsShellHolder.cpp [error]Line : 154 [error]Description : object: mp_device_torch model: dynamics\devices\dev_torch_light\dev_torch_light Я тут понял, что за бяка. Это у меня фонарик в сети глючит. После смерти, спавн модели вылетает? А ТЧ вариант с воронами зашел нормально. Только они как будут цепляться на выделеном сервере к юзерам? Или они нифига не синхронизируются - это типа они у каждого будут свои? Сообщение отредактировал Дизель - 02.10.2019, 01:31 |
 
|
|
02.10.2019, 02:09
Сообщение
#4120
|
|
Игровой Бог Репутация: 1690 Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
А ТЧ вариант с воронами зашел нормально. Только они как будут цепляться на выделеном сервере к юзерам? Или они нифига не синхронизируются - это типа они у каждого будут свои? На ТЧ в mp вороны спавнятся только у администратора невыделенного сервера. Чтобы работали и у клиентов, надо им класс в движке менять или где-то там указать, чтобы тоже синхронизировались. Чтобы после спавна не улетали сразу за карту, надо в конфиге angular_speed править, где-то у меня было. ЗЫ: чайки в ТЧ ЗЫ: на ЧН/гипердвижке пробовал тоже ворон в mp спавнить - вроде вылетало. Короче, совсем не работало. Сообщение отредактировал macron - 02.10.2019, 02:20 |
 
|
|
Текстовая версия | Сейчас: 15.06.2024, 18:49 |