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

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


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

Профиль NPC.

Параметры:

<money min="$" max="$" infinitive="$"/>

См. пояснения к этим параметрам.

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

@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
22 часа назад, Kirgudu сказал:

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

 

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

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

43 минуты назад, 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

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

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

  • Спасибо 1
  • Нравится 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? Можно и во время игры и при начале новой игры. Форум перерыл, к сожалению, ничего не смог найти.

Логика – часть custom_data, которая хранится в нетпакете объекта. Перезаписать через [m_netpk.script].

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

@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
  • Нравится 3

В Тенях Чернобыля заменил всё оружие оригинальное моделями которые сделал Mari и нового ещё добавил, и патронов разных, восстановил имевшиеся в конфигах, но не использовавшиеся в игре. На его основе сделал себе новые образцы - увеличенные магазины, новые съёмные прицелы с увеличенной кратностью для снайперских винтовок. Всё работает! Спасибо Евгению. Никаких нервов не тратил. Просто ставь и вперёд. Но решил на Зов Припяти поставить замену АКС-74У с правым затвором. Нашёл в интернете десяток модов и разных реплейсеров. Они и целиком не работают если просто поставить на оригинал версии 1.6.02 такую геймдату, и по отдельности не работает даже АКС-74У или если выбрать один из образцов. Просто не запускается игра. Нет никакой информации об ошибке в логе, потому, что и лога в таком случае нет. В чём может быть причина? Ведь эти сборки кочуют по сети уже 10 лет, и на А-про, и на других сайтах. Если не в ту тему написал, Купер не ругайся, перенеси куда нужно :huh:

Изменено пользователем Челдон

@Челдон ,

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

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

И смотреть внимательно всё-таки для какой именно платформы оружейка разрабатывалась. С учётом нынешнего обилия кастомных движков на базе COP... Условная Аномали далеко не факт, что будет тождественна оригинальному Зову Припяти в данном случае.

 

  • Спасибо 1

Купер

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

Как предоставить вводные? Ведь вы, которые разбираются в этой кухне, заняты работой с сайтом. А остальные, как я, просто игроки. К кому нужно обратиться? Мне предлагали тут раньше в личном сообщении консультацию, но только за деньги. К сожалению свободных денег у меня нет. Буду бесплатно дальше ковырять. Как получится "что то" путное выложу в свободный доступ где нибудь, где можно, пусть люди поиграют, мне не жалко. На работе у меня 6 человек уже прошли оригинал ТЧ с разными "добавками", все довольные, мужикам понравилось, хоть это обычный оригинал, в который уже никто почти не играет лет 15. Главное - вылетов нет. Спасибо, что отвечаешь на мои комментарии!

 

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

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

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

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

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

Войти

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

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

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