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

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


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

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 28.10.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 28.10.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

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

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

@Капрал Хикс ignore_static здесь вообще ни при чем. Это же для того чтобы движущиеся части игнорировали статическую геометрию при при движении (типа дверь со стороны петель не цеплялась за косяк и т.п.) Тут, наверное, нужно поэкспериментировать с массой кости, чтобы ГГ не смог ее сдвинуть. Хотя непонятно, сможет ли он открыть ее тогда вообще.

По логике: не совсем понятно условие {=gulag_empty(gar_dolg_blokpost)} зачем дверь переходит в  ph_door@closed? Если застава долга мертва, пропуск  ГГ уже не получит. А дверь пузом все равно можно открыть в любой секции :biggrin:

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

ph_door@closed

Здесь она просто закрыта, но не на ключ, так сказать, можно открыть на 'F'. А на счёт кости надо прикинуть опытным путём, спасибо.

 

UPD. Не работает смена массы у кости.

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

Жаль, что с костью не получилось.

Если цель - не пустить игрока раньше времени в Бар, может поставить за воротами рестриктор, который будет "обижать" Долг на ГГ при отсутствии gar_free_pass? В xr_effects.scripts даже что-то похожее есть. Этот же рестриктор может и предупреждение игроку послать. Вряд ли кто-то захочет портить отношение с Долгом в начале игры.

Можно, конечно, и убивать через рестриктор, но это очень радикально:biggrin:

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

Масса кости это на динамику.  Не влияет.  Логика не при чём.  Ковырялся я для НС Лет 6 назад с дверями. Модели правил.  Но увы,  уже позабыл.  Пичаль. 

В Х16 так же решётка работает,  от толчка. Так многие модели работают.  Некоторые с коллизией,  большинство статика и просто переступаешь.  Смотреть оллспавн,  флаги. И конфиг.  

Скорее всего,  в конфиге нет указания на  привязку на главную кость.  Обычно - bone.  Вот ей уже можно в SDK повесить тонну веса. 

"Кругом зомби.....у меня кончаются патроны...."

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

Скорее всего,  в конфиге нет указания на  привязку на главную кость.  Обычно - bone.  Вот ей уже можно в SDK повесить тонну веса. 

Вот окончание секции ворот из all.spawn:

; cse_alife_object_physic properties
physic_type = 0x3
mass = 30
fixed_bones = link

 

На link вешал через SDK массу побольше - не работает.

mass = 30 - мож тут поменять?

Или где ещё конфиг крутить?

 

Добавлено BFG,

Хммммм... 

Вот не упомню уже.  Глянь,  совпадает ли масса главной кости по весу в СДК и в конфиге.  Хотя.  Вроде кто-то из гуру писал,  что там есть приоритет одной массы над другой.  А скинь в лс модельку,  гляну,  может что и увижу в Майке.  Просто  очень давно не лез в моддинг по таким делам,  да и не особо спец.  Щас локации для Терры только. И всё. 

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

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

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

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

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

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

Войти

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

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

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