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

[SoC] Ковыряемся в файлах


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

08.06.2023 в 22:22, boneset-hq сказал:

Если можно то убрать полностью.

Чтобы убрать полностью, нужно редачить олл.спавн (и не только). Удалять секции с НПС, респавнеры, смарты, логику и прочее (все, что связано с конкретным смартом - ищем в файлах распакованной игры).  И НИ обязательна.

Сталкер - наше всё!

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

Да с чего же НИ обязательна? Да all.spawn тоже... Откуда такой миф? Ведь в игре что угодно можно удалить "на ходу".

 

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

  • Нравится 1
  • Согласен 1
  • Полезно 2
Ссылка на комментарий

В ТЧ какой конфиг бинокля используется: в weapon или misc-items? Имеется ли в игре нормальное название Бинокль или же аля "binocular".?

Изменено пользователем bsanek628
Ссылка на комментарий
4 часа назад, dsh сказал:

Да с чего же НИ обязательна?

Ну как минимум потому что при правке спавна появляется такое:
 

Скрытый текст

5 вариант

Expression    : header().graph_guid() == ai().game_graph().header().guid()
Function    : CALifeSpawnRegistry::load
File        : E:\stalker\sources\trunk\xr_3da\xrGame\alife_spawn_registry.cpp
Line        : 167
Description    : Spawn doesn't correspond to the graph : REBUILD SPAWN!

Ошибка[4]

all.spawn не соответствует game.graph.
Возможно при компиляции AI, не был пересобран спавн.

Решение

Привести all.spawn и game.graph в соответствие.

 

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

Распаковал один мод через акдк, закинул спавн в папку с модом, ловлю такой вылет:
 

Скрытый текст

Создание новой игры...
* Creating new game...
* Loading spawn registry...
! Cannot find saved game ~~~ wrong condlist =actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet on_info2 = {+yantar_attack_start} nil [sr_psy_antenna@bad_psy_helmet] eff_intensity = 20 hit_intensity = 0 on_info = {=actor_has_item(good_psy_helmet)
* Log file has been saved successfully!
! Cannot find saved game ~~~ wrong condlist =actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet on_info2 = {+yantar_attack_start} nil [sr_psy_antenna@bad_psy_helmet] eff_intensity = 20 hit_intensity = 0 on_info = {=actor_has_item(good_psy_helmet)
* Log file has been saved successfully!
* 1535 spawn points are successfully loaded
! Cannot find saved game ~~~ wrong condlist =actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet on_info2 = {+yantar_attack_start} nil [sr_psy_antenna@bad_psy_helmet] eff_intensity = 20 hit_intensity = 0 on_info = {=actor_has_item(good_psy_helmet)
* Log file has been saved successfully!
! Cannot find saved game ~~~ wrong condlist =actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet on_info2 = {+yantar_attack_start} nil [sr_psy_antenna@bad_psy_helmet] eff_intensity = 20 hit_intensity = 0 on_info = {=actor_has_item(good_psy_helmet)
* Log file has been saved successfully!
* Saving spawns...
* Saving objects...
* 3691 objects are successfully saved
* Game diana.sav is successfully saved to file 'd:\1\_user_\savedgames\diana.sav'
* New game is successfully created!
* phase time: 423 ms
* phase cmem: 187797 K
Сервер: Соединяемся...
MaxPlayers = 32
! Cannot find saved game ~~~ trying to set infos then actor is nil
* Log file has been saved successfully!
 
FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: d:\1\gamedata\scripts\xr_logic.script:708: attempt to call method 'give_info_portion' (a nil value)
 

stack trace:

 

Даже без правок спавна такое.
Декомпилировал так:
 

Скрытый текст

universal_acdc.pl -d diana.spawn -out diana -scan config -g graph -sort complex
pause


Собирал так:
 

Скрытый текст

universal_acdc.pl -compile diana -out all.spawn
pause

В чём проблема?

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

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
12.06.2023 в 12:26, dsh сказал:

Да с чего же НИ обязательна? ... И ни разу за все это время не было необходимости НИ для игроков.

Вопрос что за НИ?

"Do you like what you see?" © Billy Herrington

Boneset-HQ.gif

Ссылка на комментарий
12.06.2023 в 16:39, imcrazyhoudini сказал:

при правке спавна появляется такое:

Изначально речь шла о том чтобы просто удалить нпс из игры.
Зачем для этого редачить all.spawn?

Все спокойно удаляется/выключается по ходу игры, не требуя никакой НИ и никакой правки all.spawn. И неписи, и работы в гулагах, и гулаги целиком.

13.06.2023 в 17:22, imcrazyhoudini сказал:

В чём проблема?

В используемых инструментах.

  • Согласен 1
  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Подскажите тупому, как прописать ожидание. Типо строчка wait(время) не работает. При использовании предмета надо немного подождать и воспроизвести звук.

Изменено пользователем boneset-hq
Не дописал

"Do you like what you see?" © Billy Herrington

Boneset-HQ.gif

Ссылка на комментарий
1 час назад, boneset-hq сказал:

ожидание

Таймеры использовать.

Если максимально просто на пальцах, то для этого надо:

1) Использовать какую-нибудь систему сохранения данных. xvars из OGSR или se_stor by Artos или еще что-то подобное.

2) Написать свою или взять готовую (они есть но не особо удобные имхо), скриптовую систему таймеров, реализующую такой функционал что мы (сейчас) взводим таймер, в который записываем что нам надо через время X, вызвать функцию Y, и (опционально) передать ей аргументы Z.

3) Если вы пишете в коде скрипта строчки вида wait(время) даже не задавая себе вопроса, а каким вообще образом это могло бы сработать, если бы даже "гипотетически", как-то там могло бы, то наверное вам пока рано вдаваться в такие задачи. X-Ray вместе с Lua-скриптами представляет собой однопоточное приложение, и приостановка выполнения потока на некое время, неважно каким образом реализованная, привела бы к приостановке всей вообще игры на то же самое время. Так что статус приложения в диспетчере стал бы == "Не отвечает". Естественно такой фичи делать не стали.

  • Нравится 1
  • Согласен 1
  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
15.06.2023 в 14:27, Zander_driver сказал:

Зачем для этого редачить all.spawn?

Ну знаншь, если тебе легче скриптовой функцией удалить, то пускай так будет)

 

Мне проще спавн пересобрать, мне так больше нравится.

 

  • Согласен 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
15.06.2023 в 14:51, boneset-hq сказал:

Подскажите тупому, как прописать ожидание. Типо строчка wait(время) не работает. При использовании предмета надо немного подождать и воспроизвести звук.

Если только звук - при проигрывании звуков можно задать время задержки штатными средствами: https://xray-engine.org/index.php?title=Класс_sound_object

Параметр timeout (если я правильно помню, float-число, например 0.5 означает 500 мс).

 

Для более сложных задач, как уже написали выше, можно использовать расширенные системы таймеров с сохранением и различными параметрами. Такие системы используются прежде всего при реализации сюжета, однако в игре есть и собственные механизмы на основе игровой логики (xr_logic) с параметрами on_timer, spawner и т.д.

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

Как сделать выбор в меню быстрее. Что-то вроде ЗПшного варианта. Тоесть вот этот ползунок которым выбираешь кнопки. Просто в тч ну очень медленно двигается. Надеюсь не придётся править движок?

"Do you like what you see?" © Billy Herrington

Boneset-HQ.gif

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

Придется. Единственный уникальный метод класса CUIMMShniaga(), доступный в скриптах – вкл./выкл. эффекта увеличительного стекла.

  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Требуется помощь зала.

Что может быть не так в регулярках вида:

%s*([_%w]+)%s*%=%s*([+=-\|}{)(/@_%s%,%.%w]+)%s*

и

%s*([%\%.-_%w]+)%s*%|%s*([-_%w]+)%s*

 

Используются в качестве шаблонов для функции string.gmatch()

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

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

 

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

как мне убрать эту неразговорчивость и негатив со стороны одиночек из деревни новичков? 

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

@agden , гулагу лагеря новичков (gulag_escape.ltx) в настройках прописан диалог при встрече:

Скрытый текст
[logic@esc_lager_walker1]
active = walker1@esc_lager

[walker1@esc_lager]
path_walk  = guard_walk1
path_look  = guard_look1
meet = meet@lager <- вот здесь

[meet@lager]
meet_dialog = esc_lager_no_talk <- сам диалог

 

В самом диалоге настроен прекондишен для начала общения по поршню, полученному ГГ (dialogs_escape.xml):

Скрытый текст
<dialog id="esc_lager_no_talk">
            <phrase id="0">
                <text />
                <next>1</next>
...
            </phrase>

            <phrase id="1">
                <text />
это поршень, необходимый для начала диалога
                <dont_has_info>tutorial_wounded_start</dont_has_info>
                <next>11</next>
            </phrase>
иначе с ГГ общаться не будем
           <phrase id="11">
                <text>esc_lager_no_talk_11</text>
                <next>111</next>
            </phrase>

            <phrase id="111">
                <text>esc_lager_no_talk_111</text>
                <action>dialogs.break_dialog</action>
            </phrase>


А этот поршень как раз и выдаётся при стартовом диалоге Сидоровича.

Скрытый текст
    <dialog id="escape_trader_start_dialog">

...
             <phrase id="199">
                <text>escape_trader_start_dialog_199</text>
                <action>escape_dialog.give_weapon_to_actor</action>
                <action>escape_dialog.give_knife_to_actor</action>
                <give_info>esc_trader_direct</give_info>
Вот здесь
                <give_info>tutorial_wounded_start</give_info>
                <next>1999</next>
            </phrase>

 

 

Изменено пользователем Купер
  • Согласен 1
Ссылка на комментарий

@Купер спасибо большое, дружище, но я не очень разобрался.

я вставил функцию 

 <give_info>tutorial_wounded_start</give_info>

в начало диалога с сидоровичем, но мне выдается задание "Забрать флешку у разведчика", которое мне вообще не нужно. помоги пожалуйста.

 

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

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

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

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

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

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

Войти

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

Войти
×
×
  • Создать...