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

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


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

gulag_dark_valley.script:

 

gulags.val_lager_bandits.job = function(sj, gname, type, squad, groups)

...

-- БОРОВ

t = { section = "logic@" .. gname .. "_leader_normal",

 

...

 

ltx = ltx.."[logic@" .. gname .. "_leader_normal]\n" .. и т.д.

 

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

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

То есть своей конкретной логики у него нет, как например у Сидоровича.

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

 

 

То есть своей конкретной логики у него нет, как например у Сидоровича

Как это нет ? Просто логика для всей Темной долины прописана в скрипте gulag_dark_valley.script, использовано динамическое заполнение ltx-конфига. Там и Борову все прописано, для всех трех состояний, предусмотренных для бандитского гулага...

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

Такой вот вопрос: при хэд-шотах НПСы частенько помирают со всякими смертными изречениями\стонами. А это не логично... Можно как-то побороть ? В какую сторону смотреть\копать ?

state_manager.script, но не нужно. Овчинка выделки не стоит. dc

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

Товарищи модостроители.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Не 100% утверждаю, но видимо смотреть логику, в которой прописана "юзабельность" трупов и править параметры, отвечающие за доступность инвентаря и таскание...

P.S. сразу признаюсь, что не знаю где эта логика запрятана. А может ее вообще нет - и это зашито в двигло...

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

Добрый день.

Давно пытаюсь найти ответ вот на такой вопрос:

При стрельбе НПС безбожно мажут как по друг другу, так и по ГГ.

Сначала я думал, что в этом виноваты характеристики оружия (НПС не могут корректировать смещение ствола при стрельбе),  раздел FIRE DISPERSIONS в m_stalker.ltx, параметр hit_probability_gd в actor.ltx, или защитные свойства моделей брони.

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

Можно сидеть хоть голым (без брони), и на расстоянии 5 метров - НПС всё равно стреляет куда угодно, только не в ГГ.

Доходит до смешного - НПС высаживает целый рожок в ГГ на расстоянии 5-10 метров, а тому хоть бы что.

И только после довольно длительного времени (для боя) какая нибудь шальная пуля всё таки задевает ГГ.

Далее:

В моде SGM команда Альфа преследовавшая ГГ очень точно стреляла. Значит точные выстрелы для НПС всё же возможны.

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

Вопрос:

Что же всё таки влияет на эту точность ?

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

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

Ссылка на комментарий
а можно сделать то же для монстра?

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

Изменено пользователем Капрал Хикс
Ссылка на комментарий
Мне нужно конкретному кровососу со 100% вероятностью добавить в труп челюсть

Вопрос в догонку: а если попробовать сделать запчасть квестовым предметом и прописать в all.spawn в инвентарь монстру ? Не знаю только - а есть инвентарь у монстра пока он жив ?

 

 Лучше спавн челюсти прописать в логике этого кровососа в on_death

 

 А детч_менеджер не подчистит ?

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

"А детч_менеджер не подчистит ?" - а у кого-то кровососы стали неписями ?

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

Я и хотел прописать спавн челюсти в секцию on deth - это самый удобный вариант. Можно назначить этому кровососу story id и заспавнить челюсть, скриптом по аналогии со спавном в инвентарь сталкеров?

Я разрешаю. Если будут спрашивать - ссылайтесь на меня. dc

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

При переходе на локацию некоторые НПС по новой выполняют действия: Шустрый респавниться в АТП и его убивают бандиты из Темной Долины; Профессор Сахаров снова собирает прототип. Почему так происходит и как это исправить?

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

"При переходе на локацию некоторые НПС по новой выполняют действия: Шустрый респавниться в АТП".

 

Переписать работы и логику. Типа вот так:

-- Шустрый

{ section = "logic@esc_lager_shustryi_sleep",

idle = 0, prior = 18, state = {0, 2}, in_rest = "", out_rest = "",

predicate = function(obj_info) return ( obj_info["profile_name"] == "esc_shustryi" )

and has_alife_info( "tutorial_wounded_give_info" ) end },

{ section = "logic@esc_lager_kamp1",

idle = 0, prior = 18, state = {1}, in_rest = "", out_rest = "",

predicate = function(obj_info) return ( obj_info["profile_name"] == "esc_shustryi" )

and has_alife_info( "tutorial_wounded_give_info" ) end },

{ section = "logic@esc_lager_shustryi",

idle = 0, prior = 17, state = {0, 1, 2}, in_rest = "", out_rest = "",

predicate = function(obj_info) return ( obj_info["profile_name"] == "esc_shustryi" )

and has_alife_info( "tutorial_wounded_start" ) end },

{ section = "logic@esc_lager_shustryi",

idle = 0, prior = 16, state = {0, 1, 2}, in_rest = "", out_rest = "", online = false,

predicate = function(obj_info) return obj_info["profile_name"] == "esc_shustryi" end },

-- резерв на случай смерти Шустрого

{ section = "logic@esc_lager_sleeper2",

idle = 0, prior = 2, state = {0}, in_rest = "", out_rest = "esc_lager_guard_kill_zone" },

{ section = "logic@esc_lager_kamp1",

idle = 0, prior = 2, state = {1}, in_rest = "", out_rest = "esc_lager_guard_kill_zone" },

{ section = "logic@esc_lager_defend3", -- ХРЕНОВЫЙ. Но резерв.

idle = 0, prior = 2, state = {2}, in_rest = "", out_rest = "esc_lager_guard_kill_zone" },

Sorry, это под "расширенный формат" - оригинальные скрипты не поймут, но идея в принципе должна быть понятна.

Кстати, заодно вообще резервных работ добавить стоит.

  • Нравится 1
Ссылка на комментарий

Кто подскажет, как выдрать из Солянки рюкзак, в котором можно хранить свои вещи? С чего начать?

 

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

 

Или проще: какая функция отвечает за спавн рюкзака и откуда ее вызывать?

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

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

@AndrewMor, не надо путать рюкзак как предмет инвентаря, и рюкзак как некий ящик, в который можно что-то складывать - это разные вещи.

При использовании инвентарного рюкзака необходимо спавнить скриптом рюкзак-ящик по текущим координатам (функцию спавна повесить на коллбек, например, use_object, правда, не в курсе, есть ли такой в ТЧ - в ЧН есть).

В свою очередь, секция рюкзака-ящика в его конфиге должна наследовать секцию inventory_box и, кроме того, иметь кастом дату, которая в ЧН берётся из файла «treasure_inventory_box.ltx». Если в ТЧ есть аналогичные ресурсы, в принципе, в поисках по Солянке можно отталкиваться от них.
Точнее подсказать не могу, так как работаю с ЧН. Может быть, кто-то меня дополнит или поправит.

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

@Kirgudu, В том-то и дело что в Солянке это было. Рюкзак покупается у торговца, как предмет и появляется в инвентаре. Но при его использовании он из инвентаря пропадает и спавнится под ногами ГГ как обычный рюкзак, т.е. инвентори_бокс.

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

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

типа такого:

	if sect == "treasure_item" then
		local gvid = actor:game_vertex_id()
		if gvid and game_graph():valid_vertex_id( gvid ) then
			local obj = sim:create( "m_inventory_box", actor:position(), actor:level_vertex_id(), gvid )
			if obj then
				local t = amk.get_invbox_data( obj )
				t.custom = "[logic]\ncfg = scripts\\treasure_inventory_box.ltx"
				amk.set_invbox_data( t, obj )
				return
		end	end
		sim:create( "treasure_item", vector(), 0, 0, 0 )
...

actor и sim определяются как обычно где-нибудь.
Вешается на on_use()

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

 

 

Причем все строго в подполье с редкими выкриками на форумах, уткнувшись во что-то элементарное, но малознакомое.
Да.

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

 

 

определяются как обычно где-нибудь
"всунуть".

 

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

bind_stalker.script, функция function actor_binder:update(delta). Сколько ни копался (скорее, тупо ковырялся) в скриптах, иногда даже удачно - работали без вылетов, но так и не смог понять, где задается эта самая delta? Что это такое? Для примера - может есть какой-то вызов, где это смещение реально (понятно для дурака) указано?

Долго рассматривал amk.script и вот этот пост:http://www.amk-team.ru/forum/index.php?showtopic=6185&p=867513. Понимаю, что все это как то связано, но как работает - убей, понять не могу. Как этот watchdog работает? Откуда берутся значения?
 

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

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

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

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

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

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

Войти

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

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

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