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

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


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

@dsh Сразу вопросик возник, что бы не ковырять попусту. Дирекция объектов при таком спавне не нарушается (после save/load)?

В принципе, не думаю, что сырое станешь выкладывать, но всё же поинтересуюсь, что бы понимать, стоит ли отходить от привычного спавна через all.

UPD: Глянул, сниму вопрос.

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

Здесь могла быть ваша реклама.

@mole venomous что значит не нарушается. В том примере она просто не задается. Имей ввиду, это просто пример, а не готовая копипаста. Если нужно задавать направление, то его нужно задать. В OGSR можно напрямую, через sobj.angle, в других движках - как минимум через нетпакет.

 

  • Полезно 1
3 минуты назад, dsh сказал(а):

В том примере она просто не задается

Да, я уже глянул, поэтому "отменил тревогу".

 

4 минуты назад, dsh сказал(а):

В OGSR можно напрямую, через sobj.angle

А вот это интересно. У меня прям патологическое везение узнавать всякие интересности внезапно.

Здесь могла быть ваша реклама.

Всем привет! Помогите разобраться с ошибками:

 

Intro start 2206
* MEMORY USAGE: 325281 K
stack trace:
[error][     258]    : Время ожидания операции истекло.

 

FATAL ERROR
 
[error]Expression    : assertion failed
[error]Function      : CSE_InventoryBox::add_offline
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\alife_dynamic_object.cpp
[error]Line          : 230
[error]Description   : child
 

stack trace:

 

Тень Чернобыля 1.0006

 

Pir%40t%40s.gif

@Pir@t@s ,

скриптовый вылет, происходит при попытке переместить предмет в контейнер (или из него) и одновременно удалить этот контейнер.

Движок игры пытается переместить предмет, но из-за удаленного родительского объекта (контейнера) не может выполнить операцию с дочерним (child) для контейнера предметом.

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

 

Скриптовый перенос в ящик предметов и сразу скриптовая отправка ящика в оффлайн, чтобы он пропал. Предметы не успели переместиться и произошел вылет. Под отправкой в онлайн/оффлайн подразумевается, использование скриптовых методов can_switch_online/can_switch_offline. В этом случае надо было сложить барахло actor'а во временный ящик и скрыть его от глаз, отправив ящик в принудительный оффлайн. А когда понадобится барахло, перевести ящик в онлайн и вернуть вещи actor'у, после чего удалить этот ящик.

Забирание барахла actor'а может произойти в любой момент на любой локации.

Решение:

Надо отправлять ящик в оффлайн по таймеру, а не сразу.

 

Решение:

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

Изменено пользователем ed_rez
  • Спасибо 1

ed_rez.gif

c1f11b67ff360413e81b4e4dcf21eb41.jpg

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

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

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

Нужен 3D-артист для правок геометрии локаций.
Кто может помочь - пишите в ЛС.

Привет всем. Скажите, возможно ли оживить мёртвый диалог, т.е. при срабатывании поршня включается другая часть диалога, а нужный диалог остаётся мёртвым и никогда больше не включается. Попробую по полочкам разложить и речь идёт о ОП 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) имеют свои значения.

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

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

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

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

Цитата из PIL3:

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

  • Полезно 2

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 16.10.26) - Скачать  (Яндекс-диск)

@Купер

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

  • Согласен 1
19 часов назад, AndreySol сказал(а):

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

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

 

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

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

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

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

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

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 16.10.26) - Скачать  (Яндекс-диск)

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

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, там есть отдельный слот для фонарика. Создал уникальный фонарик на основе стандартного, поменял для тестов только название в инвентаре и цену. Модель - переназванная оригинальная. В итоге в слот и обратно уникальный фонарик ставится, но включаться не хочет. Слышны звуки щелчка включения и выключения, эффекта света нет.

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

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

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

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

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

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

Войти

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

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

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