Перейти к содержанию

Neptun

Разработчики
  • Публикаций

    687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    9

Весь контент Neptun

  1. Должны быть выполнены все условия. function bar_balamut_kpk_items(first_speaker, second_speaker) local item_sections = { [1] = "device_pda_quest_bar" } local needed = 5 local count = 0 local item_section local function calc(temp, item) if item:section() == item_section then count = count + 1 end end for k,v in pairs(item_sections) do item_section = v get_story_object("actor"):iterate_inventory(calc, actor) -- printf("?bar_balamut_kpk_items? : section [%s] count [%s]", tostring(v), tostring(count)) end return count >= needed end function bar_relocate_items_balamut(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_pda_quest_bar", 3) end
  2. Пардон, а как вы её ставили? Я делаю так: local box_1 = get_story_object_id("ид_объекта") level.map_add_object_spot_ser(box_1, "иконка_метки", "описание") Потом удалить метку этой функцией: level.map_remove_object_spot(box_1, "иконка_метки")
  3. Никакой. В смарте создаются специальные точки, которые НПС займут, если начнётся выброс, никакие другие схемы поведения именно из-за выброса мне неизвестны.
  4. Ничего не понял. Как правильно: в вейпоинте название должно быть таким: [имя_смарта_Название_пути] А в самой логике путь читается таким образом: path_walk = Название_пути
  5. У тебя написано в смарте: zat_skad_sniper_1 А в логике уже: [logic@zat_skad_sniper] Единицу потерял.
  6. В meet этого НПС добавляешь строчку: use = {=dist_to_actor_le(5)} self, true Когда игрок приблизится к нему на 5 метров, он автоматом начнёт беседу. Дополнено 1 минуту спустя Проблема не в смарте, а, вероятно, в логике подключённого к нему НПС.
  7. =enable_ui() Без скобок. %=run_postprocess(black:1:false)% У тебя уже написано false, этот процесс не надо останавливать, хотя это не влияет на игру, просто к слову. Дополнено 1 минуту спустя После взаимодействия с тутором логика уходит в nil, как я понимаю. Так вот, останавливать тутор уже не надо. Дополнено 2 минуты спустя Можно сделать и так: =turn_on(second_level_light_2:second_level_light_3)
  8. Что, правда? Вы тестировали на СЛЕПОЙ СОБАКЕ? [hit@dog_1] on_info = {=hitted_on_bone(bip01_head)} %=messege_head_shot%, {!hitted_on_bone(bip01_head)} %=messege_loser% Как бы я не изворачивался, но всё время прилетало сообщение, что я промахнулся, то есть срабатывала вторая часть проверки. Дополнено 25 минуты спустя Серьёзно, именно этой гадской собаке невозможно сделать хедшот.
  9. Ок, и что? Я прописываю в hit мутанта, что: {=hitted_on_bone(bip01_head)} %+info% - ничего не происходит. Вплотную стреляю в голову, точно не промахнулся, и ничего. Что, вызывать проверку из самого бинда?
  10. Не могу сделать проверку, что слепой собаке был нанесен хит в голову. Использую ту же проверку хита по кости, что и для НПС, но что-то не срабатывает она. Такая проверка вообще доступна для монстров и как её реализовать?
  11. Тип звука: undefined. Дополнено 4 минуты спустя Ну, смотри, одна функция выключает фонарик, другая - включает: function disable_actor_torch(actor, npc) local torch = db.actor:object("device_torch") if torch ~= nil and torch:torch_enabled() then torch:enable_torch(false) actor_torch = true end end function enable_actor_torch(actor, npc) db.actor:object("device_torch"):enable_torch(true) end Осталось написать скрипт, который бы вызывал их поочерёдно с радномным интервалом времени.
  12. gamedata\scripts\cam_effector_sets.script В конце создаёшь секцию, типа: название_секции = { start = { }, idle = { {anim = "scenario_cam\\путь\\кат_сцена_1", looped = "false", global_cameffect = true}, {anim = "scenario_cam\\путь\\кат_сцена_2", looped = "false", global_cameffect = true}, }, finish = { } } А потом просто запускаешь как обычную кат-сцену, только изменена будет эта строчка: cam_effector = название_секции Ну и глобальный эффект можешь не прописывать, так как он уже учтён.
  13. on_info = {+info} %=spawn_art_anomal_zone(аномальная_зона:артефакт)% В xr_effects.script добавить: function spawn_art_anomal_zone(actor, obj, p) _g.add_art(p[1], p[2]) end В _g.script добавить: function add_art(zone_name, art_section) local binder = db.anomaly_by_name[zone_name] binder:set_forced_override(art_section) binder:spawn_artefact_randomly() end
  14. Через ActorEditor открой модель и присвой ей новую текстуру.
  15. Всё гораздо прозаичнее. Зашел в сдк, поставил камеру и перевернул её, зациклил на одной секунде и запустил через xr_effects.
  16. У меня только такое получилось: максимально странно, но забавно.
  17. Братан, открой PaintNET и расширенную палитру, всегда оттуда беру значения.
  18. В статье всё максимально разжёвано, и все ответы на ваши вопросы там тоже есть. Всё то же самое, что и в ТЧ, только логика теперь прописывается не внутри, а в отдельном файле.
  19. В meet данного НПС добавь строчки: close_anim = nil close_victim = nil far_anim = nil far_victim = nil Дополнено 0 минут спустя Это тема по ЗП. Дополнено 6 минуты спустя Создаёшь рестриктор на этой локации и самое банальное: [logic] active = sr_idle@process [sr_idle@process] on_info = {=actor_on_level(локация)} %=процесс% on_info2 = {+info} sr_idle@nil [sr_idle@nil] Рандомные звуки для кого? Для ГГ, для НПС, для объекта. Без названных параметров суть будет в этих строчках: path = путь\название_ shuffle = rnd Потом в папку со звуками кидаешь свои дорожки с именами: название_1, название_2 и тд.
  20. %=relocate_actor_inventory_to_box(ид_ящика)% Но прежде в xr_effects функцию нужно раскомментить.