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

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


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

@Купер

Аналогичный вопрос, как сделать любого нпс бессмертным?

Добавлено  Купер,

Правила форума, п. 2.6 (оверквотинг).
Рекомендуется к ознакомлению: здесь и здесь.

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

@DiSэmpL , наиболее грамотный и технически правильный вариант: здесь. Там же упоминаются более простые, "костыльные" варианты.

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

Доброго время суток. Кто подскажет, где находится текстуры персонажей квестовых и простых нпс. Чтоб взять их из другого мода и создать квестовых нпс с этими текстурами у себя в моде. И подойдут ли они с чн на зп? 

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

Папка [textures\act\].

Костюмы одинаковые во всей трилогии, обычные головы в ЧН/ЗП идентичны.

Головы именных NPC в ЧН/ЗП сделаны сходно, но зеркально и порядок расположения мелких частей другой – вряд ли совместимы.

  • Спасибо 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@DiSэmpL , используемые текстуры прописаны непосредственно в модели персонажа (файл. ogf).

Сама модель для NPC задаётся в его профиле (см. сводную табл. выше):

<visual>$</visual>

Профили обычно находятся в файлах gamedata\configs\gameplay\character_desc_***.

 

Как посмотреть текстуры, которые используются конкретной моделью? Вариантов на самом деле много на выбор. Достаточно утилит имеют подобный функционал, например: OGF Tool, OGF Data Changer (есть здесь, но с оговоркой и неоднозначной репутацией), или так, допустим, в своё время камрад @Starter делал тулзу с подобным функционалом (есть в личном архиве в подписи), непосредственно сам оф. SDK. Масса вариантов.

 

+ "по диагонали" здесь пробежаться.

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

Подскажите пожалуйста, как спавнить какие то квестовые предметы (например, на столе на 2 этаже Скадовска) после определённого инфопоршня. Чтобы предмет спавнился только после взятия квеста.

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

@Erty123 один из самых простых скриптовых способов - дописать нужную проверку и действия в функцию actor_binder:info_callback(npc, info_id) модуля bind_stalker.script, например:

function actor_binder:info_callback(npc, info_id)
	-- ...все предыдущие строки...
	if has_alife_info(info_id) then -- проверяем, что выдана нужная нам инфопорция
		alife():create("item_section", position, lvid, gvid)
	end
end

А вообще способов что-то сделать после получения инфопорции много, как и заспавнить предмет. Рекомендую поизучать уроки и справочники, а также файлы оригинала, чтобы получить какую-то начальную базу.
 

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

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий
  06.04.2025 в 06:22, Kirgudu сказал:

@Erty123 один из самых простых скриптовых способов - дописать нужную проверку и действия в функцию actor_binder:info_callback(npc, info_id) модуля bind_stalker.script ...

 

alife():create("item_section", position, lvid, gvid)

В эту строчку что куда именно нужно вставлять кроме координат (у меня есть нужные)?

Ссылка на комментарий
  06.04.2025 в 07:12, Erty123 сказал:

что куда именно нужно вставлять

position - координаты в виде объекта с типом vector, можно подставить как vector():set(x, y, z), где x, y, я - соотв. координаты по каждой из осей

lvid - id level вертекса. Например, для текущего положения героя вычисляется функцией db.actor:level_vertex_id()

gvid - id game вертекса. Например, для текущего положения героя вычисляется функцией db.actor:game_vertex_id()

Конкретные значения? Откуда я знаю, это уже определять самостоятельно, смотря куда что должно заспавниться.

А вообще, об это я и говорю. Всё вышеописанное - такие азы, без изучения и знания которых далеко продвинуться не удастся, а водить за ручку слишком накладно. Крайне рекомендую поизучать скрипты оригинала, тему "справочник по функциям и классам" здесь, на форуме, другие темы, и только после этого приходить с более сложными вопросами.

  • Нравится 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

Как узнать что арт - одет на поясе? Искал по belt - нет такого параметра в скриптах.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

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

На старом движке есть только костыльный скрипт, привязанный к порядку перебора в inventory_for_each.

На OGSR есть события callback.on_belt + on_ruck.

  • Спасибо 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Возможно-ли скриптово, чтобы не ковырять all.spawn:

1) спавним некий объект, например: бочка

2) скриптово добавляем ему логику, что-то типа:  custom="[logic]\ncfg = scripts\\my\\my_logic.ltx"

Объект заспавнил:

spawn_o("bochka", db.actor:position().x+2, db.actor:position().y, db.actor:position().z+2, 1010751, 19, 1)

логику простейшую, для теста, написал:

[logic]
active = ph_idle@use

[ph_idle@use]
tips = hello

как скриптово это заставить работать, чтобы не лазить в СДК и all.spawn? Можно и во время игры и при начале новой игры. Форум перерыл, к сожалению, ничего не смог найти.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

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

@Norman Eisenherz где взять этот  [m_netpk.script] ? В оригинальных файлах игры нет... Можешь поделится?

Я пробовал на Народной Солянке ТЧ, там всё работает, но там есть говый скрипт для перезаписи нетпакетов: spawn_restrictor.rewrite_restrictor(se_obj, custom, 5.0)

Сделал так:

function create_restr()
  local se_obj = alife():create("space_restrictor", vector():set(79.319160461426, -0.073770552873611, 462.92016601563), 373155, 199)
  local custom = "[logic]\ncfg = scripts\\my.ltx" --путь к логике рестриктора
  spawn_restrictor.rewrite_restrictor(se_obj, custom, 5.0) -- запись логики для рестриктора через нетпакет
  level.map_add_object_spot_ser(se_obj.id, "habar_location", se_obj:name().."\\n"..se_obj.id )
end
create_restr()

также написал простейшую логику:

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_actor_inside = sr_sound@1
 
[sr_sound@1]
snd = characters_voice\human_03\bandit\help\wounded_thanx\thanx_2
on_timer = 5000 | sr_idle@nil

[sr_idle@nil]

при входе в рестриктор играется звук. В ТЧ - всё работает.

Попробовал перенести скрипт  (spawn_restrictor.script)  из ТЧ в ЗП, сделал всё тоже самое, но при заходе в рестриктор - вылет, видимо несовместимость в функции перезаписи нетпакетов, т.е. если я правильно понял, мне нужен скрипт для перезаписи нетпакетов для ЗП, как ты написал: [m_netpk.script] ? В оригинальных файлах игры такого скрипта нет... Можешь поделится? Сам не осилю... Сегодня до шести утра по форуму лазил, ничего подходящего не нашёл.

П.С. Спустя три часа... Ковыряю... Понаходил разные скрипты для нетпакетов, ни один не подходит для CoP, либо вылеты, либо не все данные записывает в нетпакет, например, то пути не хватает, то параметра active-scheme и т.д. Нужна помощь, всё что хотел - сделал, загвоздка только в записи логики нетпакета для только-что созданного объекта/рестриктора. Комрады, выручайте!

Изменено пользователем Баба ЯГА
Добавлено  Купер,

Здесь.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

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

@Баба ЯГА, логика для объектов задается в его секции параметром "custom_data".

Например, объект [jup_b206_plant] в файле "configs\misc\quest_items.ltx" из оригинальной игры. Для него прописан файл:

custom_data = models\objects\ignore_static.ltx

Всё, что находится в этом файле, после спавна объекта, будет записано в его "custom_data", в том числе и секция [logic], если её там указать.

Есть небольшой нюанс. Содержимое файла, указанного в параметре "custom_data", сохраняется в самом объекте и после спавна его уже не изменить. Для отладки это не очень удобно. Вместо этого в секции [logic] можно указать ссылку на файл с логикой:

[logic]
cfg=scripts\zaton\zat_bochka_logic.ltx

А уже в этом файле прописывать все, что нужно. В этом случае можно производить отладку логики и после спавна объекта.

Это работает не только с предметами, но и одиночными NPC (не в составе squad'а).

  • Спасибо 1
  • Нравится 2

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

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

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

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

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

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

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

Войти

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

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

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