-
Публикаций
2 089 -
Зарегистрирован
-
Посещение
-
Победитель дней
13
Сообщения, опубликованные Prostomod
-
-
-
AziatkaVictor А в 4 этапе можно предоставить скриншот, сделанный в коллекторах Янтаря? А то я, делая свой квест, смог заснять, как по мне, неплохой скриншот. (тушканчики злые, снимал демо рекордом)
Картина "Броню купили", Prostomod, ЗП + мод, 2023:)
-
3
-
1
-
1
-
-
Ещё хочу задать вопрос: есть ли какой-то способ заставить НПС выстрелить в члена своей группировки (и даже больше - в НПС, который в том же скваде, что и стрелок), причём так, чтобы жерва не меняла группировку? Или только писать скрипт для симуляции такого?
Анимация threat_fire в walker не работает - НПС не стреляет, если на траектории выстрела есть дружественный НПС.
Я хочу достичь такого эффекта: один НПС убивает своего товарища, однако после если ГГ глянет на группировки жертвы и убийцы, то она будет совпадать.
Дополнено 6 минуты спустяSoDizzari Я так понял, тут надо поработать с параметрами hp_state и hp_state_see: первое - поведение при определённом ХП когда не видит игрока, а второе - тоже самое, но когда видит игрока. Вот на этой сайте (тык) нашёл огромную шпаргалку по настройке логики, в т.ч. по секциям разного вида.
Спойлерhp_state= 30|help_me@help|10|wounded_heavy@help_heavy
hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy
psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20|psy_shoot,psy_pain@wounded_psy_shoot,wounded_psy hp_victim = 30|actor|10|nil
hp_cover = 30|true|10|false
hp_fight = 30|true|10|false
syndata = wounded@help
;best_pistol – проверка на то, что лучшее оружие NPC является пистолетом.
Дополнено 52 минуты спустяИ ещё сразу вопрос: в зп есть возможность смены эмбиента локации прямо во время игры? Например, играет одно на вей локации, но при заходе в какой-нибудь коллектор композиция меняется.
-
Что-то мне стало любопытно: а какой продолжительности у всех моды сейчас получаются? А то у меня, если спидранить (в смысле быстро проходить, без читов или багов), то 3-4 минуты уходит на весь контент (хоть, конечно, это не весь сюжет, но где-то 30-40% от планируемого).
-
2
-
1
-
2
-
-
Neptun попробовал с ремарком, анимация отработала как надо, но результат мне не понравился т.к. хотелось бы сохранить возможность вести диалог ГГ с конвоиром. Решил заменить анимацию пленника, чтобы сгладить эту проблему, но возник другой вопрос: как можно сделать, чтобы НПС, с которым я веду диалог, продолжал отыгрывать анимацию в нужную сторону?
Если в секции meet просто поставить victim (любой) = story_id, то НПС начинает колбаситься.Спойлерvictim = 30 | yan_expedition_dolg_1_copy ;стори_ид персонажа, на которого должен смотреть собеседник
victim_wpn = 30 | yan_expedition_dolg_1_copy
snd_on_use = nil
use = true
use_wpn = true
meet_dialog = yan_psi_oko_kudrischev_in_tubes
trade_enable = false -
Есть идеи, как мне сделать так, чтобы НПС смотрел строго в определённую точку? Планирую сделать такую сцену: один НПС сидит с руками за головой, а второй стоит рядом и тычет в него стволом. Я попытался сделать по аналогии с пленником в контейнерах, однако НПС с оружием смотрит выше, чем сидит пленник.
Вейпоинт взгляда НПС с оружием ставит и в точно такой-же позиции, что и положение пленника, и в позиции чуть ниже (вейпоинт утопал в меше).Спойлер[logic@yan_tube_threaten_dolg]
suitable = {=check_npc_name(yan_expedition_dolg_1_copy)}
on_hit = hit
on_death = death
active = walker@walker_start
prior = 200[walker@walker_start]
on_info = { +yan_psi_oko_kudrischev_in_tubes_dialog } remark@walker_death
def_state_standing = prisoner
corpse_detection_enabled = false
gather_items_enabled = false
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
path_walk = dolg_threat_walk
path_look = dolg_threat_look
meet = no_meet...
[walker@kudrischev_base]
corpse_detection_enabled = false
gather_items_enabled = false
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true[logic@yan_tube_kudrischev]
suitable = {=check_npc_name(kudrischev_copy)}
active = walker@kudrischev_start
prior = 200[walker@kudrischev_start]:walker@kudrischev_base
on_info = {=actor_in_zone(yan_tubes_kurdischev_force_kill) -yan_psi_oko_kudrischev_in_tubes_dialog } % +yan_psi_oko_kudrischev_in_tubes_dialog %
on_info2 = { +yan_psi_oko_kudrischev_in_tubes_dialog } walker@kudrischev_kill
def_state_standing = threat_na
path_walk = kudrischev_threating_walk
path_look = kudrischev_threating_look
meet = meet -
20 минут назад, ScR1pt сказал:ВЫ не представляете, насколько мало я сделал.
ВЫ не представляете, насколько я делаю кринж в своём квесте.
Paracetamol это самодельная анимация, или где-то уже была?
-
Кто может объяснить, в чём проблема: мне нужно, в определённый момент, переместить скриптом весь инвентарь ГГ в ящик. Я написал скрипт на основе скрипта переноса хабара из личного ящика на Янове в сейф Коряги, а так-же назначил ящику story_id (в этот раз я перепроверил несколько раз - story_id в логике верный). Проблема в том, что скрипт отрабатывает своё, однако ничего не переносится, все вещи остаются у ГГ. Где у меня ошибка?
Спойлерfunction relocate_actor_inventory_to_box(actor, npc, p)
local box = get_story_object_id(p[1])
if box ~= nil then
local function transfer_items(item)
if item:section()~="wpn_binoc" and item:section()~="wpn_knife" and item:section()~="device_torch" then
db.actor:transfer_item(item, box)
end
end
db.actor:inventory_for_each(transfer_items)
else
abort("Cannot find box for inventory relocation with story_id [%s]", p[1])
end
end -
1 час назад, Крим сказал:Как у всех успехи?
Кулер с блока питания отправляется в верхнюю тундру, менять надо. А квест делается, правда, пока показать что не знаю, да и появляется мысль, что делаю я откровенную фигню.
-
vasyan54636 у тебя в логике тоже on_info имеет перенос строки посередине, или это сайт шалит? Вроде как перенос строки там, где не надо, может поломать её.
Либо мб проблема в том, что у тебя из условий on_info только нахождение игрока в рестрикторе, причём без перехода на другую секцию логики (в т.ч. пустую), что означает, что анимация будет постоянно пытаться проиграться сначала при каждом тике логики.
Дополнено 0 минут спустяГлупый вопрос: какой story_id у игрока?
-
-
-
59 минут назад, Mass сказал:секция walker@start существует в данном файле?
Забыл добавить. Да, существует:
Спойлер
[walker@start]
team = yan_expedition_squad
def_state_standing = hide
def_state_moving = assault
corpse_detection_enabled = false
gather_items_enabled = false
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
meet = no_meet59 минут назад, Mass сказал:А если анимку поменять на hide_na?
Вроде в списке (тут) анимаций она указывалась как анимация со стрельбой, но попробую.
-
Появилась такая неприятность: у НПС настроена логика, которая работает корректно за исключением одной детали: переключение по on_info у некоторых НПС стабильно происходит только после перезагрузки, причём переключение аналогичной логики у других НПС происходит корректно сразу же после получения инфопоршня. В чём может быть проблема и как с ней бороться?
Если что, все НПС сидят в анимации hide, прописанной в look вейпоинте:|a=hide
Спойлер
[logic@yan_expedition_dolg_guard_4]
suitable = {=npc_community(dolg)} true
active = walker@dolg_guard_4_start
prior = 190
post_combat_time = 0, 0[walker@dolg_guard_4_start]:walker@start
path_walk = dolg_guard_4_walk
path_look = dolg_guard_4_look
on_info = {+yan_psi_oko_expedition_p2_start} walker@dolg_guard_4_phase_2[walker@dolg_guard_4_phase_2]:walker@start
path_walk = dolg_4_phase_2_walk
path_look = dolg_4_phase_2_look
Дополнено 0 минут спустяMindallius Спавн после этого пересобрал? И проверь ещё, актуальные ли файлы спавна и сетки в папках с уровнем и spawns в самой игре.
Дополнено 10 минуты спустяvasyan54636 тут описан способ получения более подробной информации о вылете. Фактически, игра начинает придираться к некоторым деталям и вылетать из-за каждой ошибки, зато их исправлять намного легче + выявляются скрытые, благодаря чему мод становится стабильнее. http://sigerous.ru/forum/322-2824-37
Дополнено 52 минуты спустяКасательно моей проблемы заметил такое: багаются так НПС с Отбойниками, а нормально работают те, у кого другое оружие (Абаканы), причём, кстати, багаются и в других секциях так-же. Конечно, можно и перевооружить, но хотелось бы докопаться до причины проблемы.
Если что, оружейный пак полностью оригинальный.-
1
-
-
5 минут назад, denis2000 сказал:пишите лог в отдельный файл LUA методами
Интересно... Можете подсказать мод, где подобное уже реализовано? Навскидку я не могу ни один такой вспомнить.
Могу, конечно, и сам с 0 попробовать сделать, но с ориентиром это будет попроще.
-
denis2000 я увеличил таймеры до 20 - всё равно не переключает. Пробовал даже избавиться от таймеров (заменил на простое on_info без условий) - всё равно не переключает дальше 1 сообщения.
Мб есть какое-то ограничение на количество состояний в логике? А то она планируется довольно сложная, и это будет неприятный сюрприз если часть состояний просто не будет читается.
Спойлер[logic]
active = sr_idle@start[sr_idle@start]
on_info = {+yan_psi_oko_teleport_expedition_squad} sr_idle@teleport_expedition %=teleport_squad(yan_expedition_smart_squad:yan_expedition_smart_spawn)%[sr_idle@teleport_expedition]
on_info = {+yan_psi_oko_vasil_about_expedition_dialog} sr_idle@teleport %=run_postprocess(fade_in_out)%[sr_idle@teleport]
on_game_timer = 30 | sr_idle@teleport_end %=teleport_actor(yan_expedition_smart_actor_teleport_walk:yan_expedition_smart_actor_teleport_look)%[sr_idle@teleport_end]
on_game_timer = 30 | sr_idle@after_teleport %=enable_ui() =stop_postprocess()%[sr_idle@after_teleport]
on_info = {!actor_in_zone(yan_expedition_start_restrictor)} sr_idle@return_actor_start %=disable_ui() =run_postprocess(fade_in_out)%
on_info2 = {+yan_psi_oko_kudr_about_expedition_dialog} sr_idle@phase_1[sr_idle@return_actor_start]
on_game_timer = 10 | sr_idle@return_actor_start_end %=teleport_actor(yan_expedition_smart_actor_teleport_walk:yan_expedition_smart_actor_teleport_look)%[sr_idle@return_actor_start_end]
on_game_timer = 10 | sr_idle@after_teleport %=enable_ui() =stop_postprocess()%[sr_idle@phase_1]
on_info = {+yan_psi_oko_expedition_p1_recon_1_checked +yan_psi_oko_expedition_p1_recon_2_checked} sr_idle@phase_1_blame %=send_tip(st_recon_first_confurm_clear:yan_expedition_dolg_1:yan_expedition_dolg_1)%[sr_idle@phase_1_blame]
on_game_timer = 20 | sr_idle@phase_1_confurm %=send_tip(st_recon_first_blame:kudrischev:kudrischev)%[sr_idle@phase_1_confurm]
on_game_timer = 20 | sr_idle@phase_1_next %=send_tip(st_recon_second_confurm_clear:yan_expedition_dolg_2:yan_expedition_dolg_2)%[sr_idle@phase_1_next]
on_game_timer = 20 | sr_idle@phase_2 %=send_tip(st_recon_kudrischev_confurm:kudrischev:kudrischev)%[sr_idle@phase_2]
Логика НПС не менялась.
Дополнено 19 минуты спустяВсё, я нашёл у себя ошибку - логика останавливалась т.к. в send_tip передавался неверный story_id.
Тогда вопрос: а как в стриптах мне делать проверку на валидность story_id (story_id существует - true, иначе false)? Хочу дополнительный abort воткнуть в скрипт отправки сообщения.И да, всё ещё хочу узнать: есть ли лимит на количество состояний в логике?
Дополнено 32 минуты спустяИ ещё вопрос: а можно как-то реанимировать оригинальный printf? Я раскомментировал тело функции в _g.script, но функция всё-равно не работает. Видел способ логгирования через преобразование сообщения в команду консоли и попыткой её выполнения, но этот способ очень нестабилен (может вылететь при неправильных параметрах, да ещё и лога не будет).
Если это на уровне движка выключено - мб есть где правка на его включение? -
Что-то я не пойму, где косяк:
Есть 2 НПС в одном скваде и рестриктор с логикой. Сквад находится в смарте и НПС выполняют там работу: сначала стоять на точке, после получения инфопоршня идти по пути, на конце которого установлен сигнал, при вызове которого даётся инфопоршень, а после получения обоих поршней начинается обмен сообщениями. И вроде по отдельности всё работает: каждый НПС приходит на точку, сигналы на обоих путях срабатывают, логика рестриктора переключается корректно, сообщение может корректно отправиться, однако в сборе, когда оба НПС достигают финальной точки маршрута, отправляется только одно сообщение из 4. Где я допустил ошибку?
Спойлер;presets
[walker@start]
def_state_standing = hide
def_state_moving = assault
corpse_detection_enabled = false
gather_items_enabled = false
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
meet = no_meet; dolg guard 1
[logic@yan_expedition_dolg_guard_1]
suitable = {=npc_community(dolg)) true
active = walker@dolg_guard_1_start
prior = 190
post_combat_time = 0, 0[walker@dolg_guard_1_start]:walker@start
path_walk = dolg_guard_1_walk
path_look = dolg_guard_1_look
on_info = {+yan_psi_oko_kudr_about_expedition_dialog} walker@dolg_guard_1_phase_1 ;переключение работает - НПС идёт[walker@dolg_guard_1_phase_1]:walker@start
path_walk = dolg_1_recon_walk
path_look = dolg_1_recon_look
on_signal = recon_end | %+yan_psi_oko_expedition_p1_recon_1_checked% ;если прописать тут вызов сообщения - оно вызовется; dolg guard 2
[logic@yan_expedition_dolg_guard_2]
suitable = {=npc_community(dolg)} true
active = walker@dolg_guard_2_start
prior = 190
post_combat_time = 0, 0[walker@dolg_guard_2_start]:walker@start
path_walk = dolg_guard_2_walk
path_look = dolg_guard_2_look
on_info = {+yan_psi_oko_kudr_about_expedition_dialog} walker@dolg_guard_2_phase_1 ;переключение работает - НПС идёт[walker@dolg_guard_2_phase_1]:walker@start
path_walk = dolg_2_recon_walk
path_look = dolg_2_recon_look
on_signal = recon_end | %+yan_psi_oko_expedition_p1_recon_2_checked% ;если прописать тут вызов сообщения - оно вызоветсяСпойлер[logic]
active = sr_idle@start[sr_idle@start]
on_info = {+yan_psi_oko_teleport_expedition_squad} sr_idle@teleport_expedition %=teleport_squad(yan_expedition_smart_squad:yan_expedition_smart_spawn)%[sr_idle@teleport_expedition]
on_info = {+yan_psi_oko_vasil_about_expedition_dialog} sr_idle@teleport %=run_postprocess(fade_in_out)%[sr_idle@teleport]
on_game_timer = 30 | sr_idle@teleport_end %=teleport_actor(yan_expedition_smart_actor_teleport_walk:yan_expedition_smart_actor_teleport_look)%[sr_idle@teleport_end]
on_game_timer = 30 | sr_idle@after_teleport %=enable_ui() =stop_postprocess()%[sr_idle@after_teleport]
on_info = {!actor_in_zone(yan_expedition_start_restrictor)} sr_idle@return_actor_start %=disable_ui() =run_postprocess(fade_in_out)%
on_info2 = {+yan_psi_oko_kudr_about_expedition_dialog} sr_idle@phase_1[sr_idle@return_actor_start]
on_game_timer = 10 | sr_idle@return_actor_start_end %=teleport_actor(yan_expedition_smart_actor_teleport_walk:yan_expedition_smart_actor_teleport_look)%[sr_idle@return_actor_start_end]
on_game_timer = 10 | sr_idle@after_teleport %=enable_ui() =stop_postprocess()%[sr_idle@phase_1]
on_info = {+yan_psi_oko_expedition_p1_recon_1_checked +yan_psi_oko_expedition_p1_recon_2_checked} sr_idle@phase_1_blame %=send_tip(st_recon_first_confurm_clear:yan_expedition_dolg_1:yan_expedition_dolg_1)%[sr_idle@phase_1_blame]
on_game_timer = 5 | sr_idle@phase_1_confurm %=send_tip(st_recon_first_blame:kudrischev:kudrischev)%[sr_idle@phase_1_confurm]
on_game_timer = 5 | sr_idle@phase_1_next %=send_tip(st_recon_second_confurm_clear:yan_expedition_dolg_2:yan_expedition_dolg_2)%[sr_idle@phase_1_next]
on_game_timer = 5 | sr_idle@phase_2 %=send_tip(st_recon_kudrischev_confurm:kudrischev:kudrischev)%[sr_idle@phase_2]
-
2 часа назад, AziatkaVictor сказал:Раньше же приходилось на каждый смарт, где было от силы персонажей 2-3 тратить целый день. Сейчас можно без проблем всю локацию за день или два заселить.
Согласен: в начале создания квеста я вообще не мог сквад создать, а теперь делаю уже и довольно сложную логику с ними.
Вообще, после анрила моддинг сталкера выглядит как создание игры в каком-нибудь гейммейкере: просто конструктор из всего заготовленного, бери и делать что хочешь (правда, часть не работает, часть не очень хорошо известна по интернету, а часть ломается от мысли "только не ломайся").-
1
-
1
-
-
-
AziatkaVictor Явно ошибка СДК: я альтернативным способом переименовал вейпоинт напрямую в .part через блокнот - СДК принял спокойно (а вот как-раз, видимо, я где-то ошибся в названии и поломал файл со спавном - тут уже мой косяк 100%). Так как СДК влёт перезагружает уровень, теперь спавню вейпоин (он без названия появляется), обновляю открытый way.part в notepad++, вписываю вручную имя вейпоинту там, сохраняю и переоткрываю уровень в СДК, иногда делаю бекапы... Мб и извращение, но, мне кажется, переустановка, настройка и остальные проблемы оригинального СДК займут больше времени, нежели такая махинация.
Дополнено 54 минуты спустяЯ успел поверить в себя, разочароваться в себе, потерять веру в возможность сделать мод, вернуть веру в возможность сделать мод, убить несколько нервных клеток, получить удовольствие от успешного запуска, вспомнить почему бросил крупный моддинг и за что его любил... пока заселял этот долбанный бункер, причём без особо сложной логики... Зато вспомнил хотя бы базу, как делать смарты.
-
1
-
-
1 минуту назад, AziatkaVictor сказал:Я так понимаю, СДК от Панды?
Что-то я догадывался, что от кого СДК сразу угадают... Да, от него. Знаю, что не доделан, но ИМХО с ним всё-таки поприятнее работать, чем с оригинальным.
-
Я, значит, придумал квест, подобрал локацию (Янтарь ТЧ + ЧН из Ветра времени, вроде разрешено), красиво подключил в игру (без костылей, насколько можно, и со всеми приколюхами из оригинальных лок), получил кураж и уверенность, что получится сделать годноту, так как даже когда я активно занимался моддингом у меня не получалось всё настолько чисто... SDK тупо стал вылетать при переименовании вейпоинта
. Говорит, получается: "Уходи, пока цел" (говорить голосом контроллёра). Благо, нашлось у меня, хоть и костыльное, но решение этой беды.
Короче, походу я всё-таки смогу выложить что-то на конкурс.UPD: А теперь ещё и спавн весь в исходнике поломал... Будет весело.
-
1
-
2
-
-
AziatkaVictor Если необходимо - не вопрос, честное соревнование интереснее. Или это рекомендация во избежания багов?
-
AziatkaVictor Ещё вопрос: если я беру локацию из мода, то мне надо полностью вычистить спавн и делать заново всё или можно им пользоваться. Естественно, квест делается с нуля, речь только про заселение.
2 часа назад, Крим сказал:Думаю, вы как раз займете первое место.
Действующие моддеры с портфолио из релизнутых модов или недомоддер с 1,5 недоделанными локациями - битва будет легендарной:). Участвую по приколу, на топ-5 (или топ-3, смотря как много будет призовых мест) не надеюсь. Хотя и правда - хз как всё получится.
-
1
-
[CoP] Модострой: вопросница
в Уроки, вопросы и советы по созданию модов
Опубликовано · Изменено пользователем Prostomod
Drive А проверь, у тебя вообще тот спавн в игре стоит? Мб ты что-то двигал, или рестрикторы не так назвал, или что-то исправлял. А потом забыл закинуть исправленный спавн в игру.