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

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


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

 

 

  AndreySol писал(а):
ошибкой "Can't open section..."

Если движок ругается, значит у вас нет секции на которую вы хотите переключить логику нпс. Или же не читается ваш файл с логикой.


 

 

  Хемуль36рус писал(а):
почему не работает от имени Прапора

Если начинается диалог со слов "Привет", значит твой стартовый диалог перебивается дефолтным старотовым(dm_hello_dialog). Значит, возможно, либо не выполняются условия твоего диалога, либо в профиле нпс дефолтный диалог стоит первым. Так же такое бывает, если нажать на диалог, когда нпс говорит в ремарке.

  • Спасибо 1
  • Полезно 2

Вообще-то я белая и пушистая...

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

 

 

  lsclon писал(а):
Если движок ругается, значит у вас нет секции на которую вы хотите переключить логику нпс. Или же не читается ваш файл с логикой.
[logic@gar_angar_drug2]
active = walker@gar_angar_drug2
 
[walker@gar_angar_drug2]
..........
 
[kamp@gar_angar_drug2]
..........

в таком виде все прекрасно. Делаю так:

[logic@gar_angar_drug2]
active = {+gar_breakthrough_complete} kamp@gar_angar_drug2, walker@gar_angar_drug2

[walker@gar_angar_drug2]
..........

[kamp@gar_angar_drug2]
..........

при загрузке сохранения и при начале НИ вылет, с вышеописанной руганью. Тестю это на 1.0005, похоже что для тега active такой способ не поддерживается. Может в 1.0006 добавлено ? Вы на какой версии это проверяли ?

  • Не нравится 1
Ссылка на комментарий
  1.0006 (Показать)
Изменено пользователем Dennis_Chikin
  • Нравится 1
Ссылка на комментарий

@AndreySol,  вообще такой метод работает и на четвертом.

Кстати из твоего описания я так и не понял, чего ты хочешь добиться. Чтобы при выдаче поршня непись переходил в другую секцию?

У тебя как-то так...

[logic@gar_angar_drug3]
active = walker@gar_angar_drug3

[walker@gar_angar_drug3]
path_walk = drug3_walk
path_look = drug3_look
on_info = {+gar_breakthrough_rush} walker@gar_angar_rush_drug3
on_info2 = {+gar_breakthrough_complete} kamp@gar_angar_drug3

А я бы сделал так...

[logic@gar_angar_drug3]
active = {-gar_breakthrough_rush}walker@gar_angar_drug3, {+gar_breakthrough_rush -gar_breakthrough_complete} walker@gar_angar_rush_drug3...

[walker@gar_angar_drug3]
path_walk = drug3_walk
path_look = drug3_look
on_info = {+gar_breakthrough_rush} walker@gar_angar_rush_drug3
on_info2 = {+gar_breakthrough_complete} kamp@gar_angar_drug3

Секции актив читаются слева направо с проверкой условий. Непись переходит в секцию, условие для которой будет выполнено первым.

И для четкого разграничения условий актив не бойся выдавать дополнительные поршни.

Откуда угодно. Из логики непися при переходе в другую секцию, по сигналу из точек пути.

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

А вы бы таки в приведенный кусочек кода распечаточку-то вставили бы... ;)

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

 

 

  AndreySol писал(а):
с вышеописанной руганью

Оффтоп...

Вообще вылета быть не должно, если правильно написана секция, в которую нужно переходить. То бишь 

.......
on_info = {+info} walker@1 

[walker@1]
.........

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

А я один раз, пока не изменил стиль и шрифт Нотепада++ не мог избавится от вылета из-за того, что было написано не look, а 1ook)))

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

 

 

  AndreySol писал(а):
похоже что для тега active такой способ не поддерживается

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

Тогда есть три варианта решения этой проблемы.

1. Менять состояние гулага по этим инфопоршням, не забывая расписывать логику всему гулагу для новых состояний.

2. Не меняя состояние гулага, выдавать логику заданному нпс в соответствии с инфопоршнями. Приблизительно вот так.
   if type == "esc_blokpost" then
        if has_alife_info("info1") then
                t = { section = "logic@esc_blockpost_patrol1",....}
        else
                t = { section = "logic@esc_blockpost_patrol2",....}

При этом надо будет добавить новые секции логики в .ltx гулага.

3. Открываем xr_gulag.script и добавляем поддержку конд листа.

В function gulag:get_job_path_name( job ), вместо строки local active_section = self.ltx:r_string( section, "active" ) пишем вот так:

    local active_section_cond = xr_logic.cfg_get_condlist(self.ltx, section, "active", self)
    local active_section = xr_logic.pick_section_from_condlist(db.actor, self, active_section_cond.condlist)

  • Спасибо 1

Вообще-то я белая и пушистая...

Ссылка на комментарий
  offtop, может поднимет кому то настроение (Показать)
  • Нравится 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.

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

Ребят, есть вопрос по поводу логики...

  Скрипт (Показать)
Ссылка на комментарий

@Wolkodav, можно попробовать так:

  Показать

Но нужно тестировать.

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

@Wolkodav, если есть рандомные фразы, пиши звуковую схему (удобнее в дальнейшем юзать), если одна фраза, то можно и функцию написать, а по поводу воспроизведения вот у себя взял:

on_actor_dist_le = 10 | walker 
; когда игрок подойдет ближе 10 м.
on_actor_dist_le_nvis = 10 | walker 
; то же самое, но без проверки на видимость
on_actor_dist_ge = 10 | walker 
; когда игрок будет на расстоянии больше 10 м.
on_actor_dist_ge_nvis = 10 | walker 
; то же самое, но без проверки на видимость
Ссылка на комментарий

Wolkodav Я бы попробовал вот так, на тест:

  тест (Показать)
Изменено пользователем amik

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий
  29.10.2014 в 06:35, Dennis_Chikin сказал:

[smart_terrain]

type = gar_ost

capacity = 1

cond = {+freeplay}

 

Ну и где этот самый freeplay выдается ?

Этот самый freeplay выдается вручную, для проверки.

 

 

  Struck писал(а):
путь напиши, и проверь существующие.

Написать - в каком смысле? А существующие пути вроде правильны. Или их надо в way_l03_agroprom.ltx прописывать?

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

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

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

Зачем оно вообще в смарте ?

 

А вообще, слона обычно едят по частям.

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

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

 

 

  Dennis_Chikin писал(а):
Зачем оно вообще в смарте ?

Крот должен пойти под этот смарт после выдачи поршня. До его выдачи он должен быть под своей сюжетной логикой.

 

 

 

  Dennis_Chikin писал(а):
Если убрать все переключения отовсюду, крота сразу прописать эксклюзивом в смарт, он с начала игры в него пойдет ?

Не проверял, поэтому не знаю.

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

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

"Крот должен пойти под этот смарт после выдачи поршня."

 

Ну так условие тогда прописывается Кроту, а не смарту.

[smart_terrains]

none = {-freeplay}

gar_ost = {+freeplay}

- вполне достаточно.

 

А для поверки вообще оставить gar_ost = true

 

Угум, сначала делаем все сразу , а потом начинаем гадать, что не работает.

 

И, да, предикаты в работах прописываются тогда, когда их много, и сталкеров много. Чтобы ни кто чужую работу не занял. Если смарт на одного сталкера с одной работой - только тормоза лишние, и место для ошибок понаделать.

  • Полезно 1
Ссылка на комментарий
  Dennis_Chikin писал(а):
И, да, предикаты в работах прописываются тогда, когда их много, и сталкеров много. Чтобы ни кто чужую работу не занял.

А такой вот вопрос: к примеру имеем три работы с одинаковым предикатом, допустим по секции спавна. Приоритеты будут работать для этих предикатных работ ? И что главнее: предикат или приоритет ?

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

Если предикат не проходит - отлуп: пусть занимает какую-нибудь другую. Далее - по приоритету. Если приоритеты одинаковые... Теоретически - первая в таблице, на практике - там довольно странный и загадочный код переназначения.

 

Гм... Еще раз перечитал, и сам ничего не понял.

 

Если по другому сформулировать, то любой непись стремится занять свободную работу с наибольшим приоритетом. Но, если там есть предикат, и непись не прошел по условию, на эту работу его не пустят.

Пример с Кордоном: работа для Волка имеет наивысший приоритет. Поэтому, пока она свободна, на нее пытаются назначить всех подряд. Но подходит только Волк, так что он на ней в итоге и оказывается.

Если таких работ будет 3 - Волк займет одну, с максимальным приоритетом, остальные 2 останутся свободными.

 

upd: А, да, самое главное западло: если работа для Волка будет иметь приоритет ниже, чем другие, Волк может попасть на любую, а его работа останется свободной, и, соответственно, кто-то из неписей может оказаться без работы.

 

Просто у работ с предикатами приоритеты должны быть максимальны.

И, да, я гулаговый скрипт переписал: там если есть предикат - приоритет автоматически поднимается, + альтернативный формат описания работ.

 

типа вот так:

  Показать

- это уже со всеми фиксами типа бегающего Шустрого, вылета по нехватке работ, переключениях при дохлых неписях и т.д. - и все равно гораздо нагляднее.

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий
  AndreySol писал(а):
как можно внимательнее выставлять предикаты и приоритеты

И это далеко не всегда помогает, вроде смотришь - все логично и хорошо, а на деле нифига не работает. По уму нужно переписывать и xr_gulag и gulag_general и вообще все, так как кривоту работы этого всего барахла не описать. А когда подходишь к финальной стадии правки этой системы перед тобой открывается нечто... Система начинает работать как задумывалось, но не как на деле, и да, при желании можно написать систему жизни как в ЗП (и даже лучше), причем без лишней муки создания кучи гулагов и кучи работ.

 

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

 

  stalk9r писал(а):
Подскажите, как правильно передать аргументы?

Мсье знает толк...

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

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

Как убрать это недоразумение(читерство, а то горючка на халяву), не подскажете? 

Хотя сейчас только два раза заспавнилось. Взорвал три бочки возле кпп, потом ту бочку возле казармы, пришёл к кпп они уже стоят, взорвал пошёл к казарме, тоже стоит, взорвал, пошёл к кпп там уже нет, пошёл к казарме тоже нет. Короче не появились больше. Всего по два раза заспавнились сейчас.

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

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

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

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

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

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

Войти

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

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

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