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

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

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

Такая ситуация. Мне нужно сделать так, чтобы НПС достал водку и выпил её. Пишу ему в логику remark использование анимации eat_vodka. Он достаёт водку, но не пьёт её, а просто прячет. Почему так?

Ещё один момент. Есть у меня гражданские зомби. Когда они падают, то НПС продолжает стрелять по ним так, будто они стоят. Это можно как-то исправить?

И ещё по поводу слепых псов. Когда он остаётся один, он всегда убегает. Можно как-то сделать так, чтобы будучи одним он всё равно нападал на ГГ?

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

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

Привет всем. Скажите, возможно ли оживить мёртвый диалог, т.е. при срабатывании поршня включается другая часть диалога, а нужный диалог остаётся мёртвым и никогда больше не включается. Попробую по полочкам разложить и речь идёт о ОП 2.1. После диалога с НПС и с отправкой за помощью в Припять включается таймер - 3ч. Не успел, включается поршень квестовик(Искра) умирает и включается поршень Искра мертва и со всеми последствиями - самое главное, не получаешь достижение Солянщик, а на нём держатся многие квесты. Хочу вернуть нужный диалог Дока, но не получается, т.к. опыта нет или это вовсе не возможен. Вот данные с файлов:

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

 

<!--- Диалог с БД в Припяти --->
    <dialog id="doc_iskra_dialog">
        <has_info>parfumer_x10</has_info>
    <dont_has_info>iskra_death</dont_has_info>
    <dont_has_info>doc_iskra_stop</dont_has_info>
        <phrase_list>
         <phrase id="0">
       <text>doc_iskra_dialog_0</text>
          <next>1</next>
          <next>2</next>
       </phrase>
       <phrase id="1">
<precondition>buusty_dialog.is_timer_iskra</precondition>
       <text>doc_iskra_dialog_1</text>
          <next>4</next>
       </phrase>
       <phrase id="2">
<precondition>buusty_dialog.isnt_timer_iskra</precondition>
       <text>doc_iskra_dialog_2</text>
         <next>3</next>
       </phrase>
       <phrase id="3">
       <text>doc_iskra_dialog_3</text>
       <action>dialogs.break_dialog</action>      
       </phrase>
      <phrase id="4">      
       <text>doc_iskra_dialog_4</text>
       <action>buusty_dialog.spawn_parfumer_iskra_norman</action>
        <next>5</next>
       </phrase>
      <phrase id="5">
       <text>doc_iskra_dialog_5</text>
        <next>6</next>
         </phrase>
      <phrase id="6">
       <text>doc_iskra_dialog_6</text>
        <next>7</next>
         </phrase>
      <phrase id="7">
       <text>doc_iskra_dialog_7</text>
        <next>8</next>
         </phrase>
      <phrase id="8">     
       <text>doc_iskra_dialog_8</text>
       <give_info>doc_iskra_stop</give_info>
       <action>buusty_dialog.doc_dal_lekarstvo</action>
       </phrase>
      </phrase_list>
      </dialog>

<!--- Диалог с Парфюмером в Припяти --->
       <dialog id="parfumer_pripyat_dialog">
    <precondition>buusty_dialog.lekarstvo_soul_have</precondition>
       <dont_has_info>parfumer_pripyat_stop</dont_has_info>
       <dont_has_info>iskra_death</dont_has_info>
       <has_info>doc_iskra_stop</has_info>
         <phrase_list>
         <phrase id="0">
       <text>parfumer_pripyat_dialog_0</text>
  <action>buusty_dialog.lekarstvo_soul_otday</action>
         <next>1</next>
         </phrase>
         <phrase id="1">
        <text>parfumer_pripyat_dialog_1</text>
         <next>2</next>
         </phrase>
         <phrase id="2">
       <text>parfumer_pripyat_dialog_2</text>
         <next>3</next>
         </phrase>
         <phrase id="3">
        <text>parfumer_pripyat_dialog_3</text>
         <next>4</next>
         </phrase>
        <phrase id="4">
       <text>parfumer_pripyat_dialog_4</text>
       <give_info>parfumer_pripyat_stop</give_info>
      <action>spawn_restrictor.final_soli_sr</action>
      <action>akill.klenov_cube_sms</action>
       <action>dialogs.break_dialog</action>
          </phrase>
          </phrase_list>
          </dialog>

 

Толкать поршень <info_portion id="final_solyanki"/> уже не возможен. Что подскажите?

 

Т.Ч. Наследство Коллекционера-форум

Ссылка на комментарий
12.01.2021 в 15:51, Houdini_one сказал(а):

по поводу слепых псов

Попробуй поиграться с параметром panic_threshold. Вроде чем он ниже, тем "бесстрашнее" монстры.

  • Спасибо 1

New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

Русификатор для игры Vendetta: Curse of Raven's Cry

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

@Jekyll Вот поглядел, у всех монстров panic_threshold в конфигах равен 0,1, только у слепышей - 0,01, у котов - 0,02, а у тушканов - вообще 0,0. Может, где-то в логике надо чего указать?

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

Ссылка на комментарий
2 часа назад, AndrewMor сказал(а):

panic_threshold в конфигах равен 0,1, только у слепышей - 0,01, у котов - 0,02, а у тушканов - вообще 0,0

Это во всех секциях (_weak, _normal, _strong etc.) одни и те же цифры? Или только в базовой для каждого монстра? Я точно знаю, что в оригинальном ТЧ чем выше panic_threshold, тем более трусливые монстры. Только что проверил на псах. При 0.0 ни один не удрал в бою, при 0.7 удирают едва завидев ГГ.

Кроме того, паника зависит и от тяжести ранения монстра. Возможно есть какая-то логика у "стайных" монстров типа тех же собак, но мне к ней прибегать не приходилось - хватало конфигов.

Изменено пользователем Jekyll
  • Согласен 1

New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

Русификатор для игры Vendetta: Curse of Raven's Cry

Ссылка на комментарий
16 минут назад, Jekyll сказал(а):

Это во всех секциях (_weak, _normal, _strong etc.) одни и те же цифры?

Цифры разные. Чем сильнее подвид животинки, тем меньше паника.

17 минут назад, Jekyll сказал(а):

Или только в базовой для каждого монстра?

Это базовые параметры, общие для всего конфига мутанта. Отдельные подвиды (weak, normal, _strong) имеют свои значения.

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

Товарищи спецы, кому не лень, объясните, в чём цимус конструкции.

function prot_release(sobj)
    alife():release(sobj, true)
end

Ну и в соответствующих местах вызов при удалении объекта:

local result = pcall(prot_release, obj)

 

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

@Jekyll ,@shahvkit Да, точно. Про отдельные секции забыл, общий параметр смотрел. Все верно, чем сильнее мутант, тем меньше значение.

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

Ссылка на комментарий
4 часа назад, Купер сказал(а):

объясните, в чём цимус конструкции

Цитата из PIL3:

"Если вам надо обрабатывать ошибки в Lua, то вы должны использовать функцию pcall(protected_call) для инкапсуляции своего кода. Вызов pcall вызывает свой первый аргумент в защищенном режиме, так что перехватываются все ошибки во время выполнения функции. Если нет никаких ошибок, то вызов pcall возвращает true и все значения, возвращенные функцией. Иначе он возвращает false и сообщение об ошибке."

  • Полезно 3

S.T.A.L.K.E.R. CoP Objects (upd 11.03.24)

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

@Купер

Как по мне, то это, конкретно для Сталкера, бесполезно и даже вредно. Т.е. в случае ошибки при вызове release движок крашнеться и скриптер сразу увидит, что чегось напортачил. А в случае pcall - краша не будет и можно просто прозевать сбойное место. Так что, надо четко понимать, зачем использовать pcall и где это безопасно для игрового процесса.

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

@WinCap , ну не настолько же мы люди тёмные :biggrin:. Разумеется, предварительно прочитано и предпринята попытка к осознанию. Вопрос больше прикладного характера:

стандартный alife():release vs "безопасная обёртка" в виде pcall.

Насколько оно именно тут обосновано и целесообразно?

 

@AndreySol , вот и сгрыз незнайку червячок сомнения :biggrin:: при получении "всякого", лучше же сразу "с треском грохнуться", чем получить неявно-отложенное.

 

Ссылка на комментарий
19 часов назад, AndreySol сказал(а):

в случае ошибки при вызове release движок крашнеться ... А в случае pcall - краша не будет

Не правда! Функция pcall() от движкового "краша" не спасёт, вылет будет. Она защищает только от Lua-ошибок.

 

2 часа назад, Купер сказал(а):

Вопрос больше прикладного характера: стандартный alife():release vs "безопасная обёртка" в виде pcall.

Насколько оно именно тут обосновано и целесообразно?

В данном случае цель может быть только одна - защита от случая когда alife() возвращает nil. От ошибок внутри release() это не спасёт.

Нужно смотреть как используется результат, возвращаемый pcall().

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

S.T.A.L.K.E.R. CoP Objects (upd 11.03.24)

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

Товарищи-спецы, а можно заставить как-то бандита стрелять в бандита? Т.е. сделать их врагами? Пробовал через родную функцию обидеть гулаг на НПС по сид:

function kozea_gsk_enemy()
    xr_gulag.setGulagEnemy("simeiz_gsk_lager", level_object_by_sid (1612))
end

но никакой реакции, а я рассчитывал на перестрелку :biggrin: . Они стоят лицом к лицу

 

@Houdini_one  Не уверен, что поможет, но вот логика пса возле вертолета на Ростке:

[smart_terrains]
none = true

[spawner]
cond = {+yan_find_scientist_done}

[logic]
active = mob_home

[mob_home]
path_home = ros_heli_dogs_home
panic = 0

Чем ближе игрок к path_home, тем меньше вероятность, что собака убежит. Еще я бы обратил внимание на радиус, в котором игрок будет атакован. В этом примере он не задан (по умолчанию мин 20 м, макс 40 м)

  • Спасибо 1
Ссылка на комментарий
12 часов назад, Muzafir сказал(а):

В этом примере он не задан (по умолчанию мин 20 м, макс 40 м)

Ну так его можно и задать, я у себя прописывал min = 15, max = 30, А можно вообще 0 поставить, наверное. И кстати, при мин. радиусе 15 м все равно последний живой слепыш из гулага начинает убегать от ГГ. Правда, строку panic = 0 не указывал.

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

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

Ссылка на комментарий
8 часов назад, AndrewMor сказал(а):

Ну так его можно и задать

Конечно, можно. У меня с заданным panic = 0 псевды атакуют ГГ до последнего. С обычными собаками не экспериментировал

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

Даже не знаю, сюда ли писать, поиском проблему вроде не нашёл. Дано: мод RMA + Shadows Addon, там есть отдельный слот для фонарика. Создал уникальный фонарик на основе стандартного, поменял для тестов только название в инвентаре и цену. Модель - переназванная оригинальная. В итоге в слот и обратно уникальный фонарик ставится, но включаться не хочет. Слышны звуки щелчка включения и выключения, эффекта света нет.

Стандартный фонарик при этом работает как положено. Не могу понять, куда копать - в скриптах и конфигах какой-то особой регистрации секции фонарика нет, ведь перемещается в слот! Но не работает. То ли движок такие фокусы не одобряет, то ли я не знаю.

Ссылка на комментарий
1 час назад, Капрал Хикс сказал(а):

То ли движок такие фокусы не одобряет, то ли я не знаю.

Камрад @Купер опередил немного с правильной подсказкой. Пока я видео грузил.

Видео

Изменено пользователем Marafon6540
  • Спасибо 1
  • Нравится 1
Ссылка на комментарий

По поводу ворот на Свалке... Можно как-нибудь запретить ГГ открывать их, что называется, пузом? А то вроде ignore_static стоит, логика приведена в порядок:

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

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
closed = true
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_info = {+gar_free_pass} ph_door@open, {=gulag_empty(gar_dolg_blokpost)} ph_door@closed

[ph_door@closed]
locked = false
closed = true
on_use = ph_door@open
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

[ph_door@open]
locked = false
closed = false
on_use = ph_door@closed
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

А всё равно ГГ упирается - ворота открываются.

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

×
×
  • Создать...