Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 2 апреля, 2021 Возможно вытащить текстуру из ПАРТИКЛА артефакта? Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 2 апреля, 2021 (изменено) Misery Нельзя вытащить того, что там не находиться. Партиклы не содержат текстур они только ссылаются на файлы в соответствующей папке. Изменено 2 апреля, 2021 пользователем denis2000 2 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 323 Опубликовано 2 апреля, 2021 Misery А посмотреть на какие текстуры ссылается партикл можно в ParticleEditor 2 Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kalambur 25 Опубликовано 2 апреля, 2021 (изменено) Спойлер [quest_test_give251] icon = ui_inGame2_Karti_mestnosti prior = 2 storyline = false title = {=actor_has_item(letter_stalker_letter_7) =actor_has_item(letter_stalker_letter_8) =actor_has_item(letter_stalker_letter_10) =actor_has_item(letter_stalker_letter_9)}test2-251, test1-251 descr = test3-251 target = {=actor_has_item(letter_stalker_letter_7) =actor_has_item(letter_stalker_letter_8) =actor_has_item(letter_stalker_letter_10) =actor_has_item(letter_stalker_letter_9)} esc_m_trader condlist_0 = {+quest_test_done251} complete, {+esc_m_trader_death} fail condlist_1 = {+quest_test_proval251} fail on_complete = %=reward_random_money(2000:3000) =complete_task_inc_goodwill(50:stalker)% подскажите пожалуйста, как и перед чем поставить метку на например на leter_stalker_leter_7 или рюкзак6 в котором она спавнется вместе с рюкзаком6, читал инфу как метку ставить, вроде легко, но пробовал поразному и не получаеться !? Изменено 2 апреля, 2021 пользователем Kalambur Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stepan_sovok1917 41 Опубликовано 2 апреля, 2021 А есть в иксрее таймеры для скриптов? Ну чтобы срабатывал какой-то скрипт и через n секунд срабатывал другой Паблик ВК Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 3 апреля, 2021 (изменено) Kalambur Объект на который будет установлена метка этого задания указан в параметре target. По сути это кондлист: target = {условие установки метки} стори_ид_объекта, ... Stepan_sovok1917 Логика рестриктора: [logic] active = sr_idle@waiting_1 [sr_idle@waiting_1] on_game_timer = 200 | sr_idle@waiting_1 %=Первая_функция% [sr_idle@waiting_2] on_game_timer = 400 | nil %=Вторая_функция% on_game_timer = 200 - время в игровых секундах. on_timer = 2000 - время в реальных миллисекундах. Изменено 3 апреля, 2021 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stepan_sovok1917 41 Опубликовано 3 апреля, 2021 denis2000 Рестрикторы, как я понимаю - области, при попадании в которых игрока происходит что-то, а мне нужно, чтобы таймер был в самом скрипте, то есть чтобы работало, когда игрок стоит на месте. А если совсем конкретно, мне нужно избавиться от этого: На видео анимация эффекта и телепортация начинаются одновременно, поэтому мы видим, что анимация играет после телепортации. Если телепортировать игрока через 1 секунду после начала эффекта, то мы увидим красивую картинку. Телепортация будет происходить когда экран чёрный и игрок её не увидит. Вопрос: как? Паблик ВК Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 3 апреля, 2021 (изменено) Stepan_sovok1917 Начните с понимания, что такое рестриктор и как его используют. А далее четко ставим техзадачу и средства ее реализации. Видео прикольное, но информации ноль. Задать задержку выполнения функции можно методом level.add_call : local end_of_timer = time_global() + 2000 --Задержка 2000 мс level.add_call( function() if end_of_timer < time_global() then return true end end, function() ..... end ) lua_help.script Цитата namespace level { ... function add_call(const function<boolean>&, const function<void>&); где function<boolean>& - функция которая должна вернуть true, для того чтобы выполнилась функция function<void>& Изменено 3 апреля, 2021 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sidorovich 6 Опубликовано 3 апреля, 2021 Всем привет. Как увеличить время исчезновения декалей (крови, например)? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stepan_sovok1917 41 Опубликовано 3 апреля, 2021 2 часа назад, denis2000 сказал: Задать задержку выполнения функции можно методом level.add_call : local end_of_timer = time_global() + 2000 --Задержка 2000 мс level.add_call( function() if end_of_timer < time_global() then return true end end, function() ..... end ) Большое спасибо, теперь всё выглядит так: Паблик ВК Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 3 апреля, 2021 (изменено) Может кому и пригодится. Спойлер Эта правка позволяет симуляционным НПС занимать смарткаверы во время выброса. В скрипте gulag_general в блоке -- SURGE -- после if it > 1 then table.insert(stalker_jobs.jobs, stalker_surge) end вставить: local stalker_cover = {_prior = 50, jobs = {}} it = 1 while se_smart_cover.registered_smartcovers[gname.."_ap_field_"..it] ~= nil do -- Необходимо вычитать количество работ из названия точки пути. local smartcover_name = gname.."_ap_field_"..it -- добавляем должность t = { _prior = 50, job_id = { section = "logic@"..smartcover_name, job_type = "smartcover_job" }, _precondition_params = { }, _precondition_function = function(se_obj, smart, precond_params) return xr_conditions.surge_started() end } table.insert(stalker_jobs.jobs, t) local cvrs_swall = { "esc_a1_ap_field_1", "esc_a1_ap_field_3", "esc_a2_ap_field_1" } -- добавляем описание должности в лтх. local job_ltx = "[logic@"..smartcover_name.."]\n".. "active = walker@ap_field_"..it.."_walk\n".. "on_combat = combat_surge\n".. "[walker@ap_field_"..it.."_walk]\n".. "path_walk = ap_field_"..it.."_walk\n".. "sound_idle = state\n".. "meet = meet@generic_surge\n".. "cover_name = "..smartcover_name.."\n".. "on_signal = in_ap_field| animpoint@"..smartcover_name.."\n".. "def_state_moving = sprint \n".. "[animpoint@"..smartcover_name.."]\n".. "sound_idle = state\n".. "meet = meet@generic_surge\n".. "cover_name = "..smartcover_name.."\n" if smart.def_restr ~= nil then job_ltx = job_ltx .."out_restr = "..smart.def_restr.."\n" end for k,v in pairs(cvrs_swall) do if smartcover_name == v then job_ltx = job_ltx.."avail_animations = animpoint_stay_wall\n" end end if smart.safe_restr ~= nil and xr_gulag.job_in_restrictor(smart, smart.safe_restr, way_name) then job_ltx = job_ltx .. "invulnerable = {=npc_in_zone(smart.safe_restr)} true\n" end if smart.base_on_actor_control ~= nil and smart.base_on_actor_control.ignore_zone ~= nil and xr_gulag.job_in_restrictor(smart, smart.base_on_actor_control.ignore_zone, way_name) 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" else job_ltx = job_ltx .."combat_ignore_cond = {=dist_to_job_point_ge(5)} false, {=is_enemy_actor =fighting_dist_ge(50)} true, {=fighting_dist_ge(15)} true, false \n".. "combat_ignore_keep_when_attacked = true \n" end ltx = ltx..job_ltx it = it + 1 end if it > 1 then table.insert(stalker_jobs.jobs, stalker_cover) end Пояснения: Для чего нужна таблица cvrs_swall? ------------------------------------------------------------------- Для того, чтобы у стоящего в смарткавере НПС не дёргалась нога, если у него есть оружие. По желанию можно не записывать туда имя смарткавера. ------------------------------------------------------------------- Как использовать? ------------------------------------------------------------------- В СДК добавляем вэйпоинт, и даём ему название вида: имя_смарта_ap_field_номер_вэйпоинта_walk Далее в настройках вэйпоинта ставим галочку на 0, и вместо wp00 пишем "wp00|sig=in_ap_field" Пример: esc_a2_ap_field_1_walk ВНИМАНИЕ! СТАВИТЬ ВЭЙПОИНТ НАДО НА AI-СЕТКЕ И ПРЯМО В СМАРТКАВЕРЕ (если смарткавер находится не на ai-сетке, то поставить вэйпоинт рядом)! Далее добавляем смарткавер, и даём ему название вида: имя_смарта_ap_field_номер_смарткавера. Назначаем анимацию в смартковере. ------------------------------------------------------------------- Изменено 5 апреля, 2021 пользователем liner 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 3 апреля, 2021 Можно ли вызвать сразу титры, без проигрывания финального ролика? Сразу титры. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 3 апреля, 2021 22 минуты назад, Крим сказал: Можно ли вызвать сразу титры, без проигрывания финального ролика? Сразу титры. game.start_tutorial("credits_seq") Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 3 апреля, 2021 Policai спасибо бро Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 3 апреля, 2021 1 час назад, liner сказал: Может кому и пригодится Мне точно не пригодится. 1. on_combat = combat_surge - Это что за байда? Где в ЗП вы это видели? 2. Вы прописываете спринт на точку. Не будут они спринтовать. Вот просто не будут... в ЗП. 3. .....Дальше даже не буду писАть ввиду кучи непонятностей. Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mmccxvii 9 Опубликовано 3 апреля, 2021 Sidorovich, за время существования воллмарков отвечает консольная команда r__wallmark_ttl. Принудительное удлинение "жизни" подобного рода декалей можно реализовать при помощи движка, сдвинув крайнюю границу принимаемого значения в xrGame/console_commands.cpp либо же воспользоваться путём превращения переменной ps_r__WallmarkTTL в константу, увеличив её значение до этапа компиляции (от самой консольной команды в таком случае следует избавиться). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 3 апреля, 2021 makdm Делал по аналогии с вэйпоинтами. У меня всё прекрасно работает, я тестировал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 3 апреля, 2021 7 минут назад, liner сказал: Делал по аналогии с вэйпоинтами. У меня всё прекрасно работает, я тестировал. То, что у вас работает не говорит о том, что будет работать у всех. Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
OP_artovod 4 Опубликовано 4 апреля, 2021 кто знает как та анимка у монолитовца с гаусской что ещё с крыши падает называется. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 4 апреля, 2021 OP_artovod Анимстейт pri_a17_pray_in. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yura001 1 Опубликовано 5 апреля, 2021 denis2000 Спасибо, всё заработало. Но появился вопрос: как телепортировать НПС прямо перед актором? Надо ли вручную указывать координаты или есть способ эффективнее? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kamr4d 21 Опубликовано 5 апреля, 2021 А есть ли возможность сделать прикондишен, который проверял бы количество очков опыта героя или НПС? Тобишь есть НПС имеет ранг МАСТЕР, то кондишен дает НПС возможность давать ГГ квест, в остальных случаях - нет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 5 апреля, 2021 (изменено) Yura001 Получаете координаты ГГ, по ним ищите координаты ближайшего левел вертекса, тепортируете на них НПС. В коде выглядит примерно так: function teleport_npc_to_actor(npc) npc:set_npc_position(level.vertex_position(db.actor:level_vertex_id())) end Дополнено 5 минуты спустя Kamr4d Как то так: ranks.get_obj_rank_name(npc) == "veteran" Изменено 15 апреля, 2021 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kamr4d 21 Опубликовано 5 апреля, 2021 denis2000 44 минуты назад, denis2000 сказал: Kamr4d Как то так: ranks.get_obj_rank_name(npc) == "veteran" Благодарю, попробую Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 6 апреля, 2021 Мне нужно, чтобы нпс стал врагом после получения инфопоршня. Как такое можно сделать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты