Перейти к контенту
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"/> уже не возможен. Что подскажите?

 

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


Подарки

  • 5
  • 3
  • 2
  • Ссылка на комментарий
    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 10.04.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 10.04.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

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


    Подарки

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

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