Двиг 1.0007 с кучей правок (с известных репо), часть которых не заработает на ориг.геймдате. Содержит необ. минимум для запуска и настройки погоды.
***************************************
env_ambient_color 1,0,0 - ргб (255*1 - красный) - также, как в конфиге. Прога Fluid Studios Color Picker в помощь. env_clouds_color env_fog_color env_hemi_color env_rain_color env_sky_color env_sun_color env_settime 12 - установить время из конфига погоды
Также имеется: g_god jump_to_level run_script run_string time_factor_single
прибавить к текущему времени:
run_string level.change_game_time(1) дни run_string level.change_game_time(0,1) часы run_string level.change_game_time(0,0,1) минуты
***************************************
Изменения не сохраняются (сейв-лоад для сброса), но пишутся в лог, которые после нужно перенести в конфиг (удобнее запускать в оконном режиме).
sergy172
13.09.2020, 04:53
Yara Блин. Я надеялся на что то более удобное. Что бы или внедрить как мод в установленную игру или что то вроде легковесного билда ТЧ-ЗП с минимумом ресурсов и маленькой картой типа мп_агропром, и конечно без работы в консоли. Так или иначе, благодарю.
Winsor
14.09.2020, 12:20
Здравствуйте! ТЧ, хочу добавить анимации смерти. В файл omf анимации добавлены, код с ЗП (который касается class type_motion) перенесен. Вроде все загружается, при выстреле в НПС код
CODE
float hit_angle = 0; MotionID m = m_death_anims.motion(m_EntityAlife, *pHDS, hit_angle);
CAI_Stalker* const holder = m_EntityAlife.cast_stalker(); if (holder && (holder->wounded())) m = MotionID(); if (m.valid()) { xr_delete(m_interactive_motion); m_interactive_motion = xr_new<imotion_position>(); m_interactive_motion->setup(m, m_pPhysicsShell, hit_angle); } if(is_imotion(m_interactive_motion)) m_interactive_motion->play(m_pPhysicsShell);
выбирает анимацию правильно. Но всего чего я смог добиться - труп "подпрыгивает" вверх при смерти... т.е. никакой анимации как на проигрывании в СДК. Те кто занимался этим вопросом - посоветуйте - что я мог забыть перенести?
Yara
14.09.2020, 20:28
Цитата(Winsor @ 14.09.2020, 15:20)
Здравствуйте! ТЧ, хочу добавить анимации смерти. В файл omf анимации добавлены, код с ЗП (который касается class type_motion) перенесен. Но всего чего я смог добиться - труп "подпрыгивает" вверх при смерти... т.е. никакой анимации как на проигрывании в СДК. Те кто занимался этим вопросом - посоветуйте - что я мог забыть перенести?
Для начала стоит проверить анимки, заспавнив нпс как физ.объект с нужной, ибо они могут просто не работать, хз почему. У меня так было, когда переносил всякую динамику с зп, анимки на сканерах аномалий работали, а вот у большого вентилятора нет (в лабе х8 такой), пересохранял по разному в тч-сдк ( и с галкой 16 бит) - результат тот же, но в сдк работают.
XinnogeN
19.09.2020, 16:55
Всем доброго времени суток! Помогите решить проблему. При компиляции xrGame (X-Ray 1.5.10) в vs2019 вылазит вот такая ошибка:
Лог
1>D:\S.T.A.L.K.E.R\Source Code\X-Ray-1.5.10\Engine\xrGame\space_restriction.cpp(319,85): error C2664: "u32 CSpaceRestrictionBridge::accessible_nearest(const Fvector &,Fvector &,bool)": невозможно преобразовать аргумент 1 из "CSpaceRestriction *" в "T &" 1> with 1> [ 1> T=CSpaceRestriction * 1> ] 1>D:\S.T.A.L.K.E.R\Source Code\X-Ray-1.5.10\Engine\xrGame\space_restriction_bridge_inline.h(24,33): message : см. объявление "CSpaceRestrictionBridge::accessible_nearest"
Подскажите, можно аи-сетку подвинуть? Нужно подправить ее по высоте при загрузке игры. Высота ландшафта в данной мировой позиции известна, по ней просто установить ноду на нужную высоту. А то у сглаженного террейна нарушается немного позиция и аи-сетка где-то углубляется, где-то наоборот возвышается (+- 10 см). Нужно это исправить корректируя ноды аи-сетки по высоте. Или даже лучше устанавливать высоту каждой ноды прямо при загрузке локации, из карты высот.
Zagolski
25.09.2020, 17:53
Никто не поможет? У меня мозгов не хватает разобраться. Я копал, там какая-то сложная схема у позиции нодов, их высота, которая как раз и нужна, очень хитро закрученно высчитывается... Думаю, проще наверное будет стороннюю утилиту сделать, чтоб пересчитала позицию аи-сетки в самом файле. Или в СДК такую ф-цию внедрить.
macron
25.09.2020, 19:38
Zagolski, скомпили в сдк новую сетку для своего уровня.
abramcumner
25.09.2020, 21:37
Цитата(Zagolski @ 25.09.2020, 17:53)
Никто не поможет? У меня мозгов не хватает разобраться. Я копал, там какая-то сложная схема у позиции нодов, их высота, которая как раз и нужна, очень хитро закрученно высчитывается... Думаю, проще наверное будет стороннюю утилиту сделать, чтоб пересчитала позицию аи-сетки в самом файле. Или в СДК такую ф-цию внедрить.
Да вроде ничего сложного... Высота хранится в двух байтах. Диапазон - высота бокса уровня. Бери ее из своей карты высот.
stalkergoshawk
13.10.2020, 18:53
Здравствуйте, подскажите по поводу тряски худа. В теме ранее SkyLoader, в сообщении #4460 описал метод решения с худом в нулевых координатах. Тестировал его кто нибудь, есть какие то проблемы, или есть другой вариант получше чтобы тряску убрать?
mortan
13.10.2020, 19:48
stalkergoshawk, отлично работает, но фикс не совместим со статикой, если на неё пофиг то можно смело использовать
XinnogeN
18.10.2020, 12:51
Всем привет! Подскажите пожалуйста, где взять файл buildvm_arch.h для сборки LuaJIT-2.1.0-beta3 ?
xrModder
29.10.2020, 18:15
Где в движке читается и обрабатывается текстуры, бампы bump и bump#?
macron
29.10.2020, 18:25
Цитата(xrModder @ 29.10.2020, 18:15)
Где в движке читается и обрабатывается текстуры, бампы bump и bump#?
В xrRender_R2.dll.
xrModder
29.10.2020, 18:31
Цитата(macron @ 29.10.2020, 21:25)
В xrRender_R2.dll.
Где именно? В каком исходнике? Не могу найти расчёт восстановления качества бампа из bump#.
macron
29.10.2020, 18:51
Цитата(xrModder @ 29.10.2020, 18:31)
В каком исходнике?
bump# видел в xr_3da\xrRender\Texture.cpp. А так, проведи поиск в файлах по слову _bump, наверно найдется.
Modera
29.10.2020, 19:47
Цитата(xrModder @ 29.10.2020, 18:31)
Не могу найти расчёт восстановления качества бампа из bump#.
Это делается шейдерами.
xrModder
29.10.2020, 19:54
Цитата(Modera @ 29.10.2020, 22:47)
Цитата(xrModder @ 29.10.2020, 18:31)
Не могу найти расчёт восстановления качества бампа из bump#.
Это делается шейдерами.
Да, уже нашел. Спасибо.
RayTwitty
18.11.2020, 03:11
Движково-скриптовый вопрос.
В движке имеется стандартный колбек на нажатие клавиши вроде
Код
g_actor->callback(GameObject::eOnKeyPress)(dik);
Есть ли возможность из колбека вернуть значение обратно в движок? Посмотрел, вроде бы таких кейсов не нашел.
Код
function actor_binder:on_key_press(dik) if dik == DIK_keys.DIK_S then return true end return false end
Это например нужно для того, чтобы предотвратить выполнение движковых действий на нажатие клавиши. Кроме каких-то жутких костылей в голову ничего не приходит.
ЗЫ возможно намутить через вызов метода CScriptBinder, только это уже не колбек будет, а новый метод биндера всех геймобъектов...
Infaer
19.11.2020, 16:18
Здравствуйте. Подскажите, пожалуйста, может кто знает как тут поступить. Имеется тут присвоение нулевого указателя.
В рамках нового fastdelegate возникла неопределенность(is ambiguous).
Код
IntelliSense: more than one operator "=" matches these operands : function "fastdelegate::FastDelegate<RetType (Args...)>::operator=(const fastdelegate::FastDelegate<RetType (Args...)>::BaseType &x) [with RetType=void, Args=<>]" function "fastdelegate::FastDelegate<RetType (Args...)>::operator=(const fastdelegate::FastDelegate<void ()> &) [with RetType=void, Args=<>]" operand types are : fastdelegate::FastDelegate<void()> = std::nullptr_t x : \trunk\xray\xr_3da\xrGame\GamePersistent.cpp
Что в GamePersistent.h:
Код
fastdelegate::FastDelegate<void()> m_intro_event;
Есть идеи как это исправить?
Yara
20.11.2020, 05:06
Цитата(RayTwitty @ 18.11.2020, 06:11)
Это например нужно для того, чтобы предотвратить выполнение движковых действий на нажатие клавиши. Кроме каких-то жутких костылей в голову ничего не приходит.
Это например нужно для того, чтобы предотвратить выполнение движковых действий на нажатие клавиши. Кроме каких-то жутких костылей в голову ничего не приходит.
Здесь просто блокировка кнопки (экшена), это не то.
У меня вызов колбека на нажатие идет в самом начале иерархии вызовов обработчика клавиатуры (CLevel::IR_OnKeyboardPress), ниже моего вызова идет обработка всего остального, в том числе UI-обработчиков. ПЫС, для того чтобы прекращать выполнение дальнейших функций после нажатия кнопки (к примеру, если открыли инвентарь на I, то если что-то ниже по коду еще зашито на эту кнопку, то выполняться оно не будет). Именно поэтому во всех скриптовых меню OnKeyboard возвращает булевое значение, которое означает что клавиатура захвачена конкретным меню и всё остальное идет лесом.
Вот тоже самое нужно сделать со скриптовым колбеком, но он насколько я понимаю не возвращает значения обратно из скриптов. Мне это всё нужно в частности, чтобы при открытии скриптового окна по кнопке из колбека, при инициализации окна не отрабатывал OnKeyboard. Одним из решений является перенос вызова колбека ниже
Код
if ( b_ui_exist && pHUD->GetUI()->IR_OnKeyboardPress(key)) return;
но в таком случае колбек не будет работать если открыта хоть одна менюшка, что мне тоже не подходит.
Пока я нашел 2 варианта - новый метод класса CScriptBinder с вызовом из CActor или так, как пыс сделали extrapolate_callback у НПС. Склоняюсь больше ко второму варианту.
Никсон
20.11.2020, 11:04
Вопрос: кто-нибудь переносил на ТЧ систему ".anm" эффектов для худ анимации оружия? Если да, то хотелось-бы глянуть коммиты : )
Yara
20.11.2020, 12:13
Цитата(RayTwitty @ 20.11.2020, 08:38)
Мне это всё нужно в частности, чтобы при открытии скриптового окна по кнопке из колбека, при инициализации окна не отрабатывал OnKeyboard.
А если сделать функцию (enable / disable_input_ui ), схожую с level.disable_input (переключает булеву g_bDisableAllInput), и добавить её проверку в ::OnKeyboard для каждого элемента в папке ui. Потом добавлять функцию отключения в ui_my:__init() super() и включения, вроде, в :__finalize(). Может и ошибся, но больше идей нет.
RayTwitty
21.11.2020, 01:29
Цитата(Yara @ 20.11.2020, 12:13)
Цитата(RayTwitty @ 20.11.2020, 08:38)
Мне это всё нужно в частности, чтобы при открытии скриптового окна по кнопке из колбека, при инициализации окна не отрабатывал OnKeyboard.
А если сделать функцию (enable / disable_input_ui ), схожую с level.disable_input (переключает булеву g_bDisableAllInput), и добавить её проверку в ::OnKeyboard для каждого элемента в папке ui. Потом добавлять функцию отключения в ui_my:__init() super() и включения, вроде, в :__finalize(). Может и ошибся, но больше идей нет.
Не прокатит, по стеку вызовов условный "disable_input" отработает только при следующем вызове CLevel::IR_OnKeyboardPress. Да и это костыль. Тоже самое можно и внутри скриптов сделать.
ForserX
21.11.2020, 17:35
Цитата(Infaer @ 19.11.2020, 16:18)
В рамках нового fastdelegate возникла неопределенность(is ambiguous).
О, прикручивал когда-то. Могу сказать только одно: возьми xrDelegates от RoH. Они куда лучше, имхо
mortan
01.12.2020, 20:29
Обнаружил странный баг, который есть даже в ванили - попробуйте подойти к скадовску, заспавнить себе допустим 3 свд, пострелять с каждой пару раз, зайти продать Сычу, сохраниться, загрузиться - свд никуда не пропадут, хотя лист торговли должен обновиться. Пофиксил так: Это в InventoryOwner.cpp
mortan
02.12.2020, 01:38
Причем иногда смена локации помогает с такими "засисшими" итемами, а иногда - нет.
RayTwitty
02.12.2020, 01:46
Цитата(mortan @ 01.12.2020, 20:29)
свд никуда не пропадут, хотя лист торговли должен обновиться.
Всмысле 3 СВД будут в торговле? Насколько я понимаю, твоя правка убирает из продажи оружие из слотов НПС.
mortan
02.12.2020, 16:25
RayTwitty, не совсем так - это удаление старого ассортимента перед добавлением нового, удаляется всё что лежит вне слотов, но проверку дополнительную дописать забыли. У них по какой-то причине если даже бросить на землю итем то в CurrSlot останется старый слот...
Infaer
12.12.2020, 11:36
Здравствуйте. Как известно, в начале 2005 года разработчики реализовали такую фишку, как эффект соприкосновения ГГ с материалами. Воспроизводился партикл пыли и звук из библиотеки материалов material\human\collide\clothes.ogg(лежит и в релизе вроде как). Но от этой фичи быстро отказались. Осталось ли что-то в движке от этого? Может кто восстанавливал?
macron
12.12.2020, 11:49
Infaer, по логике, скорее это не движок, а настройки из gamemtl.xr (материалов). Редактируя в SDK или вручную декомпилировав через конвертер материалов, можно настроить такие эффекты взаимодействия.
RayTwitty
14.12.2020, 01:34
Стало интересно какого цвета есть сообщения в логе игры и какой цвет обычно выбирался разработчиками в различных случаях.
Консоль поддерживает 6 цветов:
"-" Зеленый - информационные сообщения, которые хочется ярко выделить среди других. "!" Красный - ошибки, критические сообщения, требующие внимания. "~" Желтый - предупреждения, некритические вещи, тем не менее, тоже требующие внимания. "*" Серый - в основном статистика движка, сколько полигонов, текстур, вершин и прочее. Большинство строчек лога именно этого цвета. "#" Бирюзовый - какие-то сообщения в мультиплеере, в движке встречается крайне мало. Белый - обычное информационное сообщение, иногда по смыслу может перекликаться с серым или зеленым цветом. По умолчанию текст сообщения именно этого цвета (без префикса).
Разработчики, в целом, не особо заморачивались, поэтому иногда цвет сообщения выбирался не по смыслу, а просто чтобы "выделить здесь и сейчас".
Никсон
14.12.2020, 09:36
Цитата(Никсон @ 20.11.2020, 11:04)
на ТЧ систему ".anm" эффектов для худ анимации оружия
Чекнул недавно репозиторий ЛА, и нашёл, что искал
В который раз убеждаюсь, что Скай - просто золотце
(для простоты сразу перевел в 10-ую систему). Я добавил новый флаг в конец перечисления
Код
flMyFlag = 64
Всё отлично работало до тех пор, пока дело не дошло до объектов, перенесенных из билдов (у них мой новый флаг игра видит как всегда установленный). Распаковал спавн через ACDC, у ванильных объектов параметр флагов выглядит следующим образом:
Код
light_flags = 0x2a
и простым калькулятором вполне несложно вычислить, какие флаги установлены. Но у билдовских объектов флаги выглядят так:
Код
light_flags = 0xb548 или так light_flags = 0xb57b
и тут я уже чето невкурил. Хотя игра все эти флаги (ну кроме моего) вроде бы нормально переваривает. Как их считать? Такое ощущение, что в билде были заняты последние биты, но тогда по идее ваниль не должна их прочитать... В конструкторе серверного объекта по дефолту установлено три флага:
Код
flags.assign (flTypeSpot|flR1|flR2);
остальные должны быть по нулям...
abramcumner
19.12.2020, 00:40
Цитата(RayTwitty @ 19.12.2020, 00:14)
Как их считать?
Ну точно также они считаются: 0xb548 = 0xb500(какой-то мусор) + 64 + 8 = ... + flMyFlag + flR2 0xb57b = 0xb500 + 64 + 32 + 16 + 8 + 2 + 1 = ... + flMyFlag + flPointAmbient + flTypeSpot + flR2 + flCastShadow + flPhysic И там и там твой новый флаг установлен.
Движок из 16 возможных флагов обрабатывает 7, остальные игнорирует. А откуда у тебя такой спавн? То же асдс собирал? По-видимому криво обрабатываются билдовские лампы. Или классы перепутаны, может это вообще и не лампы?
Цитата
В конструкторе серверного объекта по дефолту установлено три флага
Неважно же, что в конструкторе, из all.spawn читаются кривые флаги.
RayTwitty
19.12.2020, 00:54
Цитата(abramcumner @ 19.12.2020, 00:40)
А откуда у тебя такой спавн? То же асдс собирал?
Универсальный ACDC 1.27 от KD, спавн 2571 билда.
Я кстати заметил, у тех объектов у которых такие флаги, добавлялся в секцию параметр s_flags = 0x23, впрочем это уже вопрос к ACDC.
Цитата(abramcumner @ 19.12.2020, 00:40)
Движок из 16 возможных флагов обрабатывает 7, остальные игнорирует.
А как он понял, какие мусор? Ну грубо говоря ему нужно отнять 46336.
abramcumner
19.12.2020, 01:18
Цитата(RayTwitty @ 19.12.2020, 00:54)
А как он понял, какие мусор? Ну грубо говоря ему нужно отнять 46336.
Движок и не разбирается, где мусор, а где нет. Он просто и не обращается к старшим битам. 0xb57b = 0b101101010'1111011. Движок работает с правыми(младшими) 7 битами, а левые(старшие) 9 его даже не интересуют. Ничего отнимать не надо, просто проверяет установлен или нет соответствующий бит.
Установлены все флаги, кроме flR1. Если от него спуститься вниз, упираешь в нолик.
Цитата
Универсальный ACDC 1.27 от KD, спавн 2571 билда.
Не староват? Точно есть 1.38, а может и старше. И точно в билде 2571 эти секции лампочки? Проверить бы конфиги от него.
RayTwitty
19.12.2020, 01:26
Цитата(abramcumner @ 19.12.2020, 01:18)
0xb57b = 0b101101010 1111011. Движок работает с правыми(младшими) 7 битами, а левые(старшие) 9 его даже не интересуют.
То есть бага тут никакого нет и вопрос лишь заключается в том, почему 7 флаг в 2571 был установлен? Может какие-то тестовые флаги были на тот момент, которые к релизу порезали...
Цитата(abramcumner @ 19.12.2020, 01:18)
Не староват? Точно есть 1.38, а может и старше. И точно в билде 2571 эти секции лампочки? Проверить бы конфиги от него.
Эти лампочки переносились еще при царе горохе, на тот момент 1.27 был видимо актуален А косяк всплыл спустя 8 лет совершенно случайно, когда уже движок начали править. Это хорошо что у меня все бекапы остались вплоть до распакованных спавнов и ридми к ним, можно проследить цепочку событий.
Цитата(abramcumner @ 19.12.2020, 01:18)
И точно в билде 2571 эти секции лампочки?
Да, например объект с именем lamp0004 в подземке Агропрома.
abramcumner
19.12.2020, 02:25
Цитата(RayTwitty @ 19.12.2020, 01:26)
почему 7 флаг в 2571 был установлен?
Да.
xrModder
01.01.2021, 19:04
Как убрать подобного рода предупреждения?
Код
Microsoft Visual Studio 10.0\VC\include\complex(###): warning C4995: cos: имя помечено как #pragma deprecated
Код
Microsoft Visual Studio 10.0\VC\include\xcomplex(###): warning C4995: sin: имя помечено как #pragma deprecated
XR_CPU_PIPE.DLL
01.01.2021, 20:30
Парни, как я давно тут не был то... Слушайте, а что вы намудрили с движком то в последнее время?
Эти предупреждения захардкоржены вроде бы в xrCore.h, можешь их просто убрать. Либо юзай std::cos/std::sin, либо cosf/sinf
XinnogeN
10.01.2021, 16:48
На конец сбылась моя мечта! Собрал оригинальный движок 1.5.10 в Visual Studio 2019. Там всё оригинально, только лишь удалил STLPort и использовал DirectX за Июнь-2010. Остальное осталось как и прежде, были лишь исправлены ошибки компиляции.
Версия Visual Studio 2019 - 16.8.3 Версия Net Framework - 4.8 Версия Windows SDK - 10.0.19041.0
В общем - со всеми последними актуальными компонентами!!!
Особая благодарность за помощь в компиляции движка и за исправления ошибок: abramcumner ForserX xrModder XR_CPU_PIPE.DLL
XinnogeN
10.01.2021, 19:11
Сталкер ЧН 1.5.10 Выставляю в настройках Улучшенное полное освещение (DX10). И вылет окошка с надписью your video does not meet game requirements pixel shaders v1.1 higher reguired . В оригинальной игре всё работает.
macron
10.01.2021, 19:34
Цитата(XinnogeN @ 10.01.2021, 19:11)
Выставляю в настройках Улучшенное полное освещение (DX10). И вылет