Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kalambur 25 Опубликовано 20 января, 2021 (изменено) condition_progress_bar="1"></dragdrop_belt> Подскажите пожалуйста, в какой файл такое вписывается, чтобы на поясе было видно состояние предмета ? Изменено 20 января, 2021 пользователем Kalambur Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 323 Опубликовано 21 января, 2021 Народ! Чтоб перекинуть обьект из одного сектора в другой, без перекомпиляции никак??? Скомпилил локу на максималке, а вылез косячок, рюкзак от тайника не виден, как оказалось остался в дефолтном секторе. Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 21 января, 2021 (изменено) Policai Никак. Статику только перекомпилировать. Через level cdc можно только пары текстура-шейдер менять, да источники света и глоу. Kalambur actor_menu***.xml Изменено 21 января, 2021 пользователем denis2000 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AziatkaVictor 3 925 Опубликовано 21 января, 2021 День добрый. Как сделать так, чтобы когда подходишь к НПС, он тебя не приветствовал? Потому что у меня НПС спит, но при этом еще и приветствует, когда ГГ подходит к нему. И есть ли функция спавна предмета на точке пути, через скрипты? Как оформить тему Правила форума Вопросы по сайту Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 21 января, 2021 3 часа назад, AziatkaVictor сказал: День добрый. Как сделать так, чтобы когда подходишь к НПС, он тебя не приветствовал? Потому что у меня НПС спит, но при этом еще и приветствует, когда ГГ подходит к нему. И есть ли функция спавна предмета на точке пути, через скрипты? Добавить в meet: close_snd_hello = nil close_snd_bye = nil Спавн объекта: =spawn_object(id_объекта:путь_way) Через скрипт: spawn_object(actor, nil, {"id_объекта","путь_way"}) 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlisowRnn 0 Опубликовано 21 января, 2021 Доброго времени суток, решил на днях вспомнить былое и попробовать сделать "васянку" для личного удовольствия.В общем, мои вопросы:- Есть ли версии ТЧ 1.0006 с полностью вырезанным сюжетом? (Если да, то где их достать) - С чего лучше начать при создании мода на платформе Call of Chernobyl? (Каким образом лучше распаковать архивы и какую версию выбрать) Заранее спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
svi_042 285 Опубликовано 22 января, 2021 Доброго дня. Понимаю, что вопрос дилетантский, но, похоже, я просто что-то не вижу. Суть в следующем - у непися есть 2 стартовых диалога: Спойлер ...профиль... <start_dialog>gorodok_captain_catch_start</start_dialog> <start_dialog>gorodok_captain_catch_forest</start_dialog> <actor_dialog>actor_break_dialog</actor_dialog> </specific_character> Диалоги выглядят таким образом: Спойлер <dialog id="gorodok_captain_catch_start"> <dont_has_info>gorodok_captain_catch_talked</dont_has_info> <has_info>black_valley_sosed_quest_talked</has_info> <phrase_list> <phrase id="0"> <text>gorodok_captain_catch_start_00</text> <next>1</next> </phrase> ...Диалог... <phrase id="7"> <text>gorodok_captain_catch_start_07</text> <give_info>gorodok_captain_catch_talked</give_info> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> <dialog id="gorodok_captain_catch_forest"> <dont_has_info>gorodok_captain_catch_forest_talked</dont_has_info> <has_info>gorodok_captain_catch_talked</has_info> <phrase_list> <phrase id="0"> <text>gorodok_captain_catch_forest_00</text> <next>1</next> </phrase> ... <phrase id="11"> <text>gorodok_captain_catch_forest_11</text> <give_info>gorodok_captain_catch_forest_talked</give_info> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> И идут один за другим таким образом, что сначала проигрывается 1-й, потом сразу же происходит перенос неписей в другое место путём удаления-создания соотв. отряда и, по замыслу, должен проигрываться 2-й, но он по каким-то причинам не проигрывается. Не пойму, в чем проблема. Инфопоршни, вроде, внятные. Возможно, что-то не вижу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 22 января, 2021 Каким образом в игру добавляется озвучка? Я хочу добавить в игру анекдот, озвучка есть. Какой файл нужно редачить? Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 22 января, 2021 (изменено) svi_042 В чем необходимость двух start_dialog? Как вы их подключаете в логике? Изменено 22 января, 2021 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Питбуль 0 Опубликовано 22 января, 2021 1 час назад, Misery сказал: Каким образом в игру добавляется озвучка? Я хочу добавить в игру анекдот, озвучка есть. Какой файл нужно редачить? Тоже интересует. И есть ли нюансы/ограничения? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 22 января, 2021 Как заспавнить объект с прописанной логикой способом alife():create? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
svi_042 285 Опубликовано 22 января, 2021 denis2000 необходимость в том, чтобы непись начинал разговор первым, т.е., таким образом: Спойлер [meet@gorodok_captain] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 use = {=dist_to_actor_le(10.0)} self, true trade_enable = false allow_break = false close_snd_distance = 1 meet_on_talking = false Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 22 января, 2021 (изменено) liner Логика в кастом дате, в секции объекта. Спойлер [jup_b8_actor_visual_stalker]:actor_visual_stalker ... custom_data = scripts\jupiter\jup_b8_actor_visual_stalker.ltx alife():create("jup_b8_actor_visual_stalker",....) svi_042 Значит используйте пареметр meet_dialog. 3 часа назад, Misery сказал: Какой файл нужно редачить? В такой редакции никаких файлов редактировать не нужно просто добавьте звуковой файл в папку/и gamedata\sounds\characters_voice\human_0*\***\talk\jokes с соотвествующим именем joke_***.ogg 1 час назад, Питбуль сказал: И есть ли нюансы/ограничения? Все зависит от конкретных задач... Изменено 22 января, 2021 пользователем denis2000 2 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 143 Опубликовано 23 января, 2021 Сработает ли функция =create_squad, если попытаться создать отряд на другой локации? Есть ли иные способы создания сквадов на локациях, на которых отсутствует игрок? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 24 января, 2021 12 часов назад, Stgs сказал: Сработает ли функция =create_squad, если попытаться создать отряд на другой локации? Если учесть, что именно эта функция используется в начале игры для заселения всех смартов, то очевидный ответ - да! 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 24 января, 2021 Как можно реализовать звуки при поднятий предметов? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 496 Опубликовано 24 января, 2021 Метод on_item_take в bind_stalker.script, это раз. Во-вторых, в интернете информация по этому поводу пылится уже несколько лет. Например, тут. Пусть это и для ТЧ, принцип более чем понятен. Адаптируется очень легко. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mass 95 Опубликовано 24 января, 2021 Подскажите по методу: set_npc_position для объектов. Он для всех, совсем всех?( и живых и мертвых?). Смущает в исходниках строка: obj->movement().detail().make_inactual(); Получается только для монстров и сталкеров? А вот жив он или нет - не важно? Я далеко не копал.Может кто-нибудь прояснить сей момент? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 143 Опубликовано 24 января, 2021 Буквально на днях столкнулся со следующей проблемой: симуляционные НПС, находящиеся в смарт каверах (любых, будь то sit_normal или sit_knee) никак не реагируют на происходящее вокруг них. Перестрелка, нападение, пробегающий рядом мутант - всё это они игнорируют, в отличии от неписей, выполняющих другие работы, например, guard или walk. Даже будучи раненным такой непись остается сидеть в анимке, хотя с ним и можно завести диалог и дать ему аптечку. Перебрал связанные со смартами и каверами скрипты, конфиги, поискал в гугле, но так и не нашел никаких зацепок. Народ, кто-то сталкивался с чем-то подобным? Возможно ли, что этот баг с оригинального ЗП тянется? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 24 января, 2021 Stgs Файл gulag_general.script код ниже метки XR_ANIMPOINT: if smart.base_on_actor_control ~= nil and smart.base_on_actor_control.ignore_zone ~= nil then job_ltx = job_ltx .."combat_ignore_cond = {=npc_in_zone(smart.base_on_actor_control.ignore_zone)} true \n".. "combat_ignore_keep_when_attacked = true \n" end Вывод: Если на смрте есть параметр smart_control, указывающий на соответсвующую секцию, в которой есть параметр ignore_zone, определяющий рестриктор в котором НПС должен инорировать бой, то НПС, занявший неэксклюзивную работу на смарте в смартковере, будет вести себя именно так как вы и описали. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 143 Опубликовано 24 января, 2021 denis2000, такой параметр на смарте отсутствует. Стоит также отметить, что на смарте нет каких-либо рестрикторов, а сам баг вылезает вне зависимости от типа смарта (default_territory, default_base). Более того, данный код в gulag_general.ltx я находил и даже пробовал комментировать с целью проверить: исправиться ли ошибка. Однако, никаких результатов это не принесло. В конце концов, разве не должен непись при ранении падать в соответствующую анимацию? А нет ли других файлов, которые могут быть связаны с подобным поведением? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 24 января, 2021 @makdm, на основе этого сообщения я попытался восстановить боевые смарт ковры. Появился вопрос: а как заставить НПС перестреливаться с противником из боевого ковра, если он находится в нём? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mass 95 Опубликовано 24 января, 2021 2 часа назад, Stgs сказал: В конце концов, разве не должен непись при ранении падать в соответствующую анимацию? Вы правили схемы поведения нпс? Такое некорректное поведение может еще означать ошибки в логике или в планировщике, а также когда эвалуаторы возвращают нил вместо буллева значения или завис алайф\коллбеки\.... Да много всего может быть.... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kalambur 25 Опубликовано 24 января, 2021 (изменено) Спойлер -- Умер сталкер function npc_on_death(npc) local rnd_value = math.random(1,99) if rnd_value > 50 then return end local rank = ranks.get_obj_rank_name(npc) local comm = npc:character_community() local coef = get_comb_coeff(rank,comm)^0.5 local visual = npc:get_visual_name() local outfit_section, helmet_section = get_outfit_sections(visual) if (axr_main.config:r_value("mm_options","enable_outfit_maradeur",1,false)) then if outfit_section then local se_outfit = alife():create(outfit_section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) curent_outfit[se_outfit.id] = coef update_outfit() end if helmet_section then local se_helmet = alife():create(helmet_section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) curent_helmet[se_helmet.id] = coef update_helmet() end end end -- Получим секцию брони и шлема function get_outfit_sections(visual) local s_name = alun_utils.str_explode(visual,"\\") local v_name = s_name[3] local t_vis = visuals[v_name] if t_vis then return t_vis[1], t_vis[2] end end -- update function update_outfit() local function actor_on_update() local param = false for k,v in pairs(curent_outfit) do local outfit_obj = level.object_by_id(k) if outfit_obj then outfit_obj:set_condition(mean_random(10,50,v,1)/100) curent_outfit[k] = nil param = true elseif param == true then UnregisterScriptCallback("actor_on_update",actor_on_update) return end end end RegisterScriptCallback("actor_on_update",actor_on_update) end function update_helmet() local function actor_on_update() local param = false for k,v in pairs(curent_helmet) do local helmet_obj = level.object_by_id(k) if helmet_obj then helmet_obj:set_condition(mean_random(10,50,v,1)/100) curent_helmet[k] = nil param = true elseif param == true then UnregisterScriptCallback("actor_on_update",actor_on_update) return end end end RegisterScriptCallback("actor_on_update",actor_on_update) end --утилиты function mean_random(index_min,index_max,mean_index,left_power,right_power,flag) local index_mean = mean_index or 0 if (index_mean >= 0) and (index_mean <= 1) then index_mean = (index_max-index_min)*index_mean + index_min local mean_down, mean_up = math.floor(index_mean), math.ceil(index_mean) local d_mean_down, d_mean_up = index_mean - mean_down, mean_up - index_mean if d_mean_down == d_mean_up then index_mean = (math.random(0,1) == 1) and mean_down or mean_up else index_mean = (d_mean_down > d_mean_up) and mean_up or mean_down end end local power_left = left_power or 1 local power_right = right_power or power_left local coeffs_list = {} local coeffs_total = 0 local coeff = 0 local power = 0 local base = 0 local shift = math.max(index_mean-index_min,index_max-index_mean) + 1 for i=index_min,index_max do base = shift - math.abs(index_mean - i) if i < index_mean then power = power_left elseif i == index_mean then power = math.max(power_left,power_right) else power = power_right end coeff = base^power coeffs_list = coeff coeffs_total = coeffs_total + coeff end local rnd = math.random(1,coeffs_total) for i=index_min,index_max do if rnd <= coeffs_list then return i end rnd = rnd - coeffs_list endend function get_comb_coeff(rank,comm) local rank_coeffs_table = {novice = 1, trainee = 1, experienced = 1, professional = 1, veteran = 1, expert = 1, master = 1, legend = 1} local comm_coeffs_table = {zombied = 1, ecolog = 1, bandit = 1, freedom = 1, stalker = 1, clearsky = 1, dolg = 1, killer = 1, army = 1, monolith = 1} local rank_coeff = rank_coeffs_table[rank] or 0 local comm_coeff = comm_coeffs_table[comm] or 0 return rank_coeff * comm_coeff end Подскажите пожалуйста, как изменить выпадение комбезов с шанса 100% на 50% ? Изменено 24 января, 2021 пользователем Kalambur Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Сергей Шубин 21 Опубликовано 24 января, 2021 12 минут назад, Kalambur сказал: функция (Скрыть контент) if rnd_value > 50 then return end Подскажите пожалуйста, как изменить выпадение комбезов с шанса 100% на 50% ? Думаю, что причина в этом. Если число больше 50, то эта строка завершает работу. А если меньше, то ничего не делает. А весь ниже лежащий код к этой строке не привязан. Поэтому и вываливаются броники из каждого трупа. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты