В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга.
Не флудить
Предварительно просматривайте раздел. Ответ на ваш вопрос может быть там.
В своем вопросе указывайте платформу моддинга - Тень Чернобыля, Чистое небо или Зов Припяти.
1. Какая стоит игра, с каким патчем? 2. Какой мод, версия мода? 3. Что правили своими ручками? 4. Конфиг компа. 5. Лог вылета и последние 25 строк (помещать под спойлер).
Структура папок и файлов в корневом каталоге игры:
...\S.T.A.L.K.E.R\gamedata\anims – папка содержит исполнительные файлы эффектов (например от ПНВ).
...\S.T.A.L.K.E.R\gamedata\config – папка содержит основные конфигурационные файлы (т. е. большинство настроек игры)
...\S.T.A.L.K.E.R\gamedata\meshes – содержит модели игровых предметов и персонажей...
...\S.T.A.L.K.E.R\gamedata\scripts – папка со скриптами (рабочими файлами содержащими в себе наборы функций) – основная папка, отвечающая за ответные действия игры и действия производимых игроком в игре.
...\S.T.A.L.K.E.R\gamedata\shaders – папка содержит в себе конфигурационные файлы шейдеров.
...\S.T.A.L.K.E.R\gamedata\sounds – здесь находятся все звуки игры (разложены по своим каталогам и папкам)
...\S.T.A.L.K.E.R\gamedata\spawns – содержит файл спавна – очень важный файл – не трогать без нужды!!!
...\S.T.A.L.K.E.R\gamedata\textures – содержит разложенные по каталогам и папкам текстуры используемые в игре.
Теперь разберем папки в каталоге «config»
...\S.T.A.L.K.E.R\gamedata\config\creatures - содержит массу конфигурационных файлов, в основном отвечающих за взаимодействие Главного героя игры (в дальнейшем ГГ) и прочего окружения в игре и ТТХ самого ГГ.
...\S.T.A.L.K.E.R\gamedata\config\gameplay – содержит конфиг. файлы персонажей игры (НПС) отвечающие за внешний вид, статус, снаряжение. Файлы: character_desc_ххх (где ххх – название локации) и character_desc_general (отвечает за зомбированного персонажа). Также содержит файлы диалогов и профилей НПС.
…\S.T.A.L.K.E.R\gamedata\config\misc – конфиг.файлы торговцев (папки с именами торговцев), артефактов, брони, квестовых предметов, уникальных предметов, файл отвечающий за награды за автозадания, файл эффектов (алкоголизма, ранения, ПНВ и прочих)...
…\S.T.A.L.K.E.R\gamedata\config\mp – среди прочих содержит важный файл mp_ranks – отвечающий за выпадение оружия и патронов из рук ГГ и НПС – без прописывания добавляемого в игру оружия в этот файл при выпадении нового оружия из рук ГГ\НПС будут следовать вылеты.
…\S.T.A.L.K.E.R\gamedata\config\text\rus – содержит файлы описаний всего и вся находящегося в игре (брони, артефактов, оружия, предметов и прочего).
…\S.T.A.L.K.E.R\gamedata\config\weapons – содержит конфиг.файлы оружия и боеприпасов используемых в игре.
…\S.T.A.L.K.E.R\gamedata\config\weathers – содержит конфиг.файлы настройки погоды на локациях.
Теперь немного подробнее о файлах.
...\S.T.A.L.K.E.R\gamedata\config\misc:
Папка shop_ххх (ххх – имя торговца) – содержит конфиг.файлы ассортимента торговца.
outfits – содержит секции конфигов костюмов.
artefacts - содержит секции конфигов артефактов.
items - содержит секции конфигов предметов.
monster_items - содержит секции конфигов частей монстров
postprocess - содержит секции конфигов пост. процессов (например: ПНВ).
quest_items - содержит секции конфигов квестовых предметов.
task_manager - содержит секции наград за автоквесты.
unique_items - содержит секции конфигов уникального оружия и костюмов.
У кого есть желание, создать FAQ по основным вопросам моддинга - обращаемся в ЛС.
У меня возник такой вопрос. В ЧН, не знаю как в ТЧ, реализована такая фишка. Когда добавить пути на локацию, то нпс будет ходит по этим путям. Как только он сталкивается с другим нпс, они меняются "работами", местами. Ето обеспечивает то, что они не тормозят когда "наедут друг на друга". Как такое реализовать в ЗП ??? Это особенно касается патрульный, которые бродят по смарте.
ins33, это можно сделать, создав возле стула смарт, со смарт-ковром, в котором будет прописан анимпоинт сидячего на стуле сталкера. Ах да, название анимпоинта - sit_normal
Сообщение отредактировал Akella-96 - Вторник, 04.06.2013, 01:35
просто - никак. в ТЧ нет анимации сидения на стуле. непросто - пернести все анимы ЧН в формат ТЧ, перевести все модели неписей на 47 костей и формат ЧТ, и тогда уже использовать всё то, что наанимили для ЧН, в том числе сидение на стуле
Приветствую! Накопилось несколько вопросов, касательно ЗП. Итак, начнем 1. Можно ли привязать партикл к брошенной гранате? 2. Можно ли вообще отследить брошенную гранату (позицию и т.д.), если да, то как? 3. Если для НПС указать боевой смарткавер, будет ли он стрелять в Актора из укрытия, юзая указанную анимацию в анимпоинте?
Deathdoor, можно и так, а можно адаптировать только анимации сидения на стуле под ТЧ-шные модели с 45-ю костями.
stalker-MiX, что-то я очень сомневаюсь, что они действительно местами меняются. Ты как это определил? Scarabay, отследить брошенную гранату крайне сложно, если вообще невозможно. Дело в том, что та граната, что в руках ГГ до броска и граната после - это два разных объекта. К сожалению, никакого колбека на бросок - нет.
Получаю безлоговый вылет при загрузке новой игры. Пытался создать новую модель поведения. Модель - достаточно простая, состоит из одного условия и одного действия.
Сам скрипт модели:
Код
local scheme_status={} local property_need_to_trade = 1821327
class "evaluator_need_to_trade" (property_evaluator) function evaluator_need_to_trade:__init(name, storage) super (nil, name) self.st = storage end
function evaluator_need_to_trade:evaluate() amk.ls_send_tip(self.object:character_name().." evaluate()") if self.st==nil or self.st.enabled~=true then -- модель поведения запрещена return false end
if not db.actor then -- ГГ ещё не заспаунился return false end if self.object:best_enemy() then return false -- Блокирование во время боя end local npc = self.object --нет ни одной аптечки, нет всего набора хавчика, при том, что деньги ещё остались if npc:money() < 100 then return false end -- денег нет - и суда нет local vertex = get_nearest_trader_vertex() if npc:level_vertex_id() == vertex then disable_scheme(npc,"npc_want_trade") end --дошёл до торговца if (npc:object("medkit")==nil and npc:object("medkit_army")== nil and npc:object("medkit_scientic")==nil) then return true end
if npc:object("bread") == nil or npc:object("kolbasa") == nil or npc:object("conserva") == nil then return true end
return false end
class "action_go_to_trader" (action_base) function action_go_to_trader:__init(name, storage) super (nil, name) self.st=storage end function action_go_to_trader:initialize() action_base.initialize(self) local npc=self.object npc:set_desired_position() npc:set_desired_direction() npc:clear_animations() npc:set_detail_path_type(move.line) npc:set_body_state(move.standing) npc:set_movement_type(move.run) npc:set_path_type(game_object.level_path) npc:set_mental_state(anim.danger) npc:set_sight(look.danger, nil, 0) npc:remove_all_restrictions() self.offset=vector():set(math.random()*6-3,0,math.random()*6-3) self.offset:normalize() end
function action_go_to_trader:execute() action_base.execute(self) amk.ls_send_tip(self.object:character_name().." execute()") if not actor then -- Хм, что-то не так. Может быть ГГ перешёл на другой уровень? Запрещаем схему поведения self.st.enabled=false end if self.delay and self.delay>time_global() then return end self.delay=time_global()+1000 local npc=self.object local actor=db.actor local vertex_id = get_nearest_trader_vertex() if vertex_id then npc:set_dest_level_vertex_id(vertex_id) end end
function action_go_to_trader:finalize() action_base.finalize (self)
end
function add_to_binder(object, char_ini, scheme, section, st) local manager = object:motivation_action_manager() local property_wounded = xr_evaluators_id.sidor_wounded_base
manager:remove_evaluator(property_need_to_trade) manager:add_evaluator(property_need_to_trade, evaluator_need_to_trade("npc_want_trade",st)) local action = this.action_go_to_trader("action_go_to_trader",st) action:add_precondition(world_property(stalker_ids.property_alive, true)) action:add_precondition(world_property(property_wounded, false)) if anomaly_evader then action:add_precondition (world_property(1099,false)) end action:add_precondition(world_property(property_need_to_trade, true)) action:add_effect (world_property(property_need_to_trade, false)) xr_motivator.addCommonPrecondition(action) manager:add_action (action_go_to_trader, action) -- Теперь подкорректируем стандартные операторы, чтобы помощник не отвлекался на всякую ерунду. action=manager:action(stalker_ids.action_alife_planner) action:add_precondition(world_property(property_need_to_trade, false)) action=manager:action(stalker_ids.action_combat_planner) action:add_precondition(world_property(property_need_to_trade, false)) action=manager:action(stalker_ids.action_danger_planner) action:add_precondition(world_property(property_need_to_trade, false)) end
function set_need_trade(npc,ini) local st = xr_logic.assign_storage_and_bind(npc, ini, "npc_want_trade","npc_want_trade") st.enabled=true scheme_status[npc:id()]=true end
function disable_scheme(npc,scheme) local st = db.storage[npc:id()][scheme] if st then st.enabled = false end scheme_status[npc:id()]=nil end
function get_nearest_trader_vertex() return 64955--заглушка временная, для кордона end
Зарегистрировал в modues.script
if npc_trade then -- в этой строке мы проверяем что наш скрипт действительно существует load_scheme("npc_trade", "npc_want_trade", stype_stalker) end
Запускаю модель автоматом в xr_logic.script, в функции enable_generic_schemes(ini, npc, stype, section)
if npc_trade then npc_trade.set_need_trade(npc,ini) end
Деактивирую так же автоматом в xr_logic.script, в функции disable_generic_schemes(npc, stype)
if npc_trade then npc_trade.disable_scheme(npc,"npc_want_trade") end
В xr_motivator.script в функции addCommonPrecondition(action) чтобы заблокировать стандартные схемы поведения:
if npc_trade then action:add_precondition (world_property(npc_trade.property_need_to_trade,false)) end
Ну и последнее, в функцию xr_motivator.net_spawn()
if npc_trade then local manager = self.object:motivation_action_manager() manager:add_evaluator(npc_trade.property_need_to_trade, property_evaluator_const(false)) end
Где может быть ошибка? Может, ошибка не синтаксическая, а логическая? P.S. извиняюсь за низкую читабельность, отступы почему-то удаляются здесь, на форуме
Сообщение отредактировал DukeKAn - Вторник, 04.06.2013, 15:48
ColR_iT, вот тебе геймдата и сейв понаблюдай за нпс, это ЧН патч10. НПС ходит по всей базе, куда ему захочется, хоть пути он такого не имеет . http://rghost.ru/46496462
stalker-MiX, делать мне более нечего, как наблюдать не пойми за чем. Да и делать выводы из наблюдений, не подкреплённые вообще никакими аргументами из скриптов, - глупо.
что-то я очень сомневаюсь, что они действительно местами меняются.
Как раз я тебе и хочу доказать, что они меняются местами, и все больше ничего, поэтому и забросил геймдату и сейв. Взглянуть это максимум 5ти минутное дело, если конечно установлена игра ЧН. Относительно аргументов. Какие тут могут быть аргументы. Есть старт-терайн. Есть работа в смарте. НПС выполняет ту работу. Заспавнено все через faction_***.ltx Вопрос почему они меняются работами, это меня одно интересует, и что за это отвечает, хоть какой скрипт. Я не знаю, как розрабы это сделали, поэтому и спрашиваю на форуме может кто-то в курсе.