Капрал Хикс 558 Опубликовано 7 Мая 2013 @Снайпер56, function spawn_npc() local obj = alife():create("clear_sky_1",vector():set(-133.097,1.284,-277.065),79374,3377) local params = amk.read_stalker_params(obj) params.custom = "[logic]\ncfg = scripts\\new\\clear_sky_1.ltx" - путь к файлу логики НПС и имя самого файла.лтх amk.write_stalker_params(params,obj) end Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 23 Июля 2013 (изменено) Столкнулся со со следующей задачей: добавить в однотипные квесты возможность поиска предметов на классах, отличных от классов оружия и брони. Благодаря совету Dennis_Chikin http://www.amk-team.ru/forum/index.php?showtopic=5525&page=533#entry787682 попробовал выполнить отрегистрацию предметов в se_item.script по аналогии с: function se_weapon_magazined_w_gl:on_register() cse_alife_item_weapon_magazined_w_gl.on_register( self ) -- Регистрация в таскменеджере task_manager.get_random_task():register_target(self) -- Собираем статистику по предметам. if registred_items[self:section_name()] == nil then registred_items[self:section_name()] = 1 else registred_items[self:section_name()] = registred_items[self:section_name()] + 1 end end function se_weapon_magazined_w_gl:on_unregister() --' Отрегистрация в таскменеджере task_manager.get_random_task():unregister_target(self) end вот так: class "se_item_detector" (cse_alife_item_detector) function se_item_detector:__init (section) super (section) end function se_item_detector:on_register() cse_alife_item_detector.on_register( self ) -- Регистрация в таскменеджере task_manager.get_random_task():register_target(self) -- Собираем статистику по предметам. if registred_items[self:section_name()] == nil then registred_items[self:section_name()] = 1 else registred_items[self:section_name()] = registred_items[self:section_name()] + 1 end end function se_item_detector:on_unregister() --' Отрегистрация в таскменеджере task_manager.get_random_task():unregister_target(self) end Также добавил класс в class_rehistrator.script (насколько я понял, туда тоже нужно): cs_register (object_factory, "CDetector", "se_item.se_item_detector", "D_SIMDET", "detector_s") Поставил в поле таска target = detector_simple - и квест не появляется. Что не так? Изменено 23 Июля 2013 пользователем ColR_iT Неужели так сложно вставить теги? Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 27 Февраля 2014 Нигде не запрашивается и нигде не используется. Т.е., можно удалять без опаски этот рудимент? Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 25 Мая 2014 Заранее извиняюсь, если было - ткните куда копать. Как скриптово узнать, что открыта вкладка КПК "Карта"? Дано: прикручиваю к своей сборке установку своих меток на карте в КПК из адддона Shadows'а 0.6 к РМА... Так вот, всё работает, но эти кнопки установки-удаления меток рисуются поверх всех окон и вкладок КПК... Ранее уже сталкивался с подобным, решения не нашёл. Заранее спасибо всем. Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 26 Мая 2014 Как оказалось, всё проще, без движковых правок. http://www.amk-team.ru/forum/index.php?showtopic=7450&page=4#entry463992. Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 26 Мая 2014 Рано я возрадовался... Все инфопоршни вкладок в КПК, кроме ui_pda, не работают. Похоже, без движковых правок тут всё же не обойтись. А жаль... Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 26 Мая 2014 Проверил через мобилу модмейкера от Singapur22 выдачу нужного мне поршня ui_pda_map_global - не выдаётся он. ui_pda - выдаётся исправно, тот нет. P.S. В Shadows Addon кнопки меток кстати тоже поверх всех вкладок и окон висят. Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 26 Мая 2014 Хм, поршень ui_pda_map_local выдался. Но при попытке завязать на него появление меток схлопотал уже от скрипта Shadows'а вылет при попытке открыть КПК. Дескать, в строке self.owner:AttachChild(self.stat) onwer = nil Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 27 Мая 2014 Если честно, я в этих оконнных скриптах так и не разобрался... сам скрипт, если кому интересно покопаться, вот: Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 3 Января 2017 Можно ли в ТЧ скриптовым способом, в обход движка, запретить перемещать артефакты на пояс при отсутствии надетого на ГГ определённого костюма (со встроенным контейнером для артов)? В идеале бы неплохо разное количество переносимых артов для разных костюмов как в ЧН / ЗП... Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 4 Января 2017 @Kondr48, окей, параметр в костюмы дописать не проблема... А что конкретно из X-ray extensions подключать? У меня SVN_portable_r230, если что. И где подсмотреть примеры скриптов? Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 4 Февраля 2017 Где-то в темах скриптования или логики НПС помню, было что-то о том, что если в оригинале ТЧ сталкера, который в начале Агропрома встречает нас с обрезом дробовика, дать любое другое оружие, то это вызовет какой-то хитрый вылет из-за его кривой логики. Хочу поправить сиё недоразумение, где копать? Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 19 Февраля 2017 @Maksud, пользуйся script Syntax Checker для Lua... --Сообщение о гибели сталкеровfunction necrolog(oVictim)local level_name = {["la01_escape"] = "Кордон",["la02_garbage"] = "Свалка",["la03_agroprom"] = "НИИ Агропром",["la04_darkdolina"] = "Тёмная долина",["la17u_labx7"] = "Лаборатория X-7",["la05_bar_rostok"] = "Бар",["la14_rostok_factory"] = "Завод Росток",["la07_military"] = "Арм.склады",["la06_yantar"] = "Янтарь",["la16u_labx16"] = "Лаборатория X-16",["la19_country"] = "Деревня",["la10_radar"] = "Радар",["la11_pripyat"] = "Припять",["la12_stancia"] = "ЧАЭС",["la10u_bunker"] = "Бункер Х-10",["la12u_sarcofag"] = "Саркофаг",["la13u_warlab"] = "Варлаб",["la22_forest"] = "Лес",["la08_deadcity"] = "Мертвый город",["la09_swamp"] = "Большие болота",["la13_generators"] = "Генераторы",["la04u_darklab"] = "Лаборатория Х-18",["la13u_oso"] = "Осознание",["la14u_secret_lab"] = "Секретная лаборатория ЧАЭС",["la15_darkscape"] = "Темная Лощина",["la15u_mines"] = "Неизвестная територия",["la16_lost_factory"] = "Цементный Завод",["la18_damned"] = "Подземелье припяти",["la20_forgotten"] = "Стройплощадка",["la21_generators_2"] = "Генераторы 2",["la17_outskirts"] = "Чернобыль",["la20_test"] = "Тест",["la20_final_test"] = "Тест финальный"}local death_komment = {"Я знал, что он допрыгается...","[Вырезано цензурой]","Ещё один...","Таак...","Мдя, ни дня без этого.","Одним больше, одним меньше...","Все там будем","Помянуть надо бы...","Зона тебе пухом.","Как в воду глядел - скопытился!"}local community = {["actor"] = "Сталкер",["stalker"] = "Сталкер",["monolith"] = "Монолит",["army"] = "Военные",["bandit"] = "Бандит",["killer"] = "Наемник",["ecolog"] = "Эколог",["dolg"] = "Долг",["freedom"] = "Свобода",["dark_stalker"] = "Грех",["arena_enemy"] = "Опонент",["zombied"] = "Зомбированный"}--Сообщение о гибели сталкеровlocal necrolog_text = "\\n%c[255,160,160,160]Погиб сталкер: %c[default]"..oVictim:character_name().."\\n%c[255,160,160,160]Группировка: %c[default]"..community[oVictim:character_community()].."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""local shans = math.random(1,100)local comment_text = death_komment[math.random(table.getn(death_komment))]if oVictim and IsStalker(oVictim) and shans>27 thendb.actor:give_game_news(necrolog_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)xr_sound.set_sound_play(db.actor:id(), "pda_tips")if shans>70 thendb.actor:give_game_news(comment_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)endendend--Сообщение о гибели сталкеров 1 Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 19 Августа 2017 (изменено) Вопрос по воронам - их класс вообще полностью поддерживает скриптовую обвязку bind_monster? Попробовал добавить строку вида: script_binding = bind_monster.bind в конфиг, вроде эффект есть, функция хита при обыске трупа вороны срабатывает, например, но выдача инфопоршня при убийстве - нет. Последнее делал по аналогии с OGSM, где при убийстве монстра даётся статья о нём. Код: --if string.find(self.object:section(), "m_crow") then - не работает if self.object:section() == "m_crow" then - тоже метод не работает if not has_alife_info("crow_dead") then db.actor:give_info_portion("crow_dead") end end Upd. подсмотрел метод в моде OLR, кому интересно - смотрите скрипт bind_crow. Изменено 19 Августа 2017 пользователем Капрал Хикс неактуальность помощи 1 Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 29 Сентября 2017 Вопрос такой - как монстрячую логику Сидоровича отвязать от скрипта mob_trader.script? Есть нормальная модель с сидячими анимациями из ЗП, хочу её посадить в каморку, так скрипт ругается на анимки. Если нужно, предоставлю логи вылетов и переписанную логику Сидора без анимок оригинального. По-хорошему, можно конечно удалить оригинального и заспавнить нового НПС с его диалогами, но не хочется дополнительной возни. 1 Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 29 Сентября 2017 15 минут назад, aka_sektor сказал: @Капрал Хикс модель Сидоровича NPC. она и у меня есть, для ТЧ, из новой Соли, меня логика интересует. Как я понял, в НС 2016 эта новая модель используется для кат-сцен, в каморке же сидит обычный монстрячий Сидор. 1 1 Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 1 Октября 2017 Мда, не удалось мне настроить логику Сидоровича под новую модель. Можно конечно, сделать ему стандартную, с приветствиями и прощаниями, но хотелось бы конечно, чтобы он говорил фразы при торговле с ним. При вот такой логике: Скрытый текст [logic] active = trader@new_idle on_trade = trade@new trade = misc\trade_trader.ltx ;---------------------------------- ;------------- Idle --------------- ;---------------------------------- [trader@new_idle] anim = sit_idle on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | trader@new_wait ;---------------------------------- ;-------------- New --------------- ;---------------------------------- [trade@new] anim = sit_idle on_info = {=trading =trade_exchanged} trader@new_trade_exchanged on_info2 = {!trading =trade_exchanged} trader@new_trade_good on_info3 = {!trading !trade_exchanged} trader@new_trade_bad [trader@new_trade_exchanged] anim = sit_idle anim_head = head_talk_0 sound_phrase = trader_exchanged on_signal = sound_phrase_end | trader@new_idle on_actor_dist_ge_nvis = 12 | trader@new_wait [trader@new_trade_good] anim = sit_idle anim_head = head_talk_0 sound_phrase = trader_good_trade on_signal = sound_phrase_end | trader@new_idle on_actor_dist_ge_nvis = 12 | trader@new_wait [trader@new_trade_bad] anim = sit_idle anim_head = head_talk_0 sound_phrase = trader_bad_trade on_signal = sound_phrase_end | trader@new_idle on_actor_dist_ge_nvis = 12 | trader@new_wait [trader@new_hello] anim = sit_idle anim_head = head_talk_0 sound_phrase = trader_hello_what_have_you_got on_signal = animation_end | trader@new_idle [trader@new_bye] on_actor_dist_ge_nvis = 12 |trader@new_wait anim = sit_idle anim_head = head_talk_0 sound_phrase = trader_bye on_signal = animation_end | trader@new_wait [trader@new_wait] anim = sit_idle on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played} trader@new_hello %+esc_trader_hello_played% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | %-esc_trader_hello_played -esc_trader_bye_played% он просто исчезает, хотя в спавне числится. 1 Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 1 Октября 2017 47 минут назад, abramcumner сказал: @Капрал Хикс, точно исчезает? Точно, вот: http://prntscr.com/grxljw Не видать Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 13 Октября 2017 (изменено) Дано: скриптовая эмуляция невидимых слотов (нож, болт, ПДА, бинокль). У меня два бинокля и при попытке вставить бинокль в слот, где уже есть другой, происходит движковый вылет, лог,: Скрытый текст 0023:0494C077 xrGame.dll 0023:0494C513 xrGame.dll 0023:049A8C3A xrGame.dll 0023:049A7BD6 xrGame.dll 0023:049892B0 xrGame.dll 0023:049A91B0 xrGame.dll 0023:049892B0 xrGame.dll 0023:0494AC39 xrGame.dll 0023:04A111DC xrGame.dll 0023:04737410 xrGame.dll Есть ли где подсмотреть готовое решение / костыль / затычку от вылета? Поиском решение не нашёл, DMX мод пока не предлагать, там немного другая система реализации скриптовых слотов, нежели Кираговская, попытки совместить решения оттуда не увенчались успехом. Изменено 14 Октября 2017 пользователем Капрал Хикс Поделиться этим сообщением Ссылка на сообщение
Капрал Хикс 558 Опубликовано 25 Ноября 2017 Пытаюсь сделать разные звуки дыхания при разных надетых противогазах. Оригинальный скрипт из DMX мода для НарСоли... И... мне не хватает умений переписать функцию function breathing(): Скрытый текст local outfit_type = 0 local breathing_sound function get_wearing_suit_with_helmet() local outfit = db.actor:get_current_outfit() if outfit then local section = outfit:section() if string.find(section, "_gaz") or string.find(section, "neytral_exo_antigas") then outfit_type = outfit_type +1 end if string.find(section, "specnaz_m1") or string.find(section, "military_outfit") or string.find(section, "militaryspec_outfit") or string.find(section, "exo_") or string.find(section, "_exoskeleton") then outfit_type = outfit_type +2 end if string.find(section, "military_commander_outfit") or string.find(section, "ecolog_outfit") or string.find(section, "protection_outfit") or string.find(section, "scientific") then outfit_type = outfit_type +3 end function breathing() if get_wearing_suit_with_helmet() and amk.load_variable("option_hud",2)==2 and db.actor.power > 0.18 then if not (breathing_sound and breathing_sound:playing()) and outfit_type = 1 then breathing_sound = xr_sound.get_safe_sound_object([[actor\gasmask_idle_1]])) breathing_sound:play_at_pos(db.actor, vector(), 0, sound_object.s2d + sound_object.looped) end if outfit_type = 2 then breathing_sound = xr_sound.get_safe_sound_object([[actor\gasmask_idle_2]])) breathing_sound:play_at_pos(db.actor, vector(), 0, sound_object.s2d + sound_object.looped) end if outfit_type = 3 then breathing_sound = xr_sound.get_safe_sound_object([[actor\gasmask_idle_3]])) breathing_sound:play_at_pos(db.actor, vector(), 0, sound_object.s2d + sound_object.looped) end elseif breathing_sound and breathing_sound:playing() then breathing_sound:stop() breathing_sound = nil end end Прошу помощи :). Поделиться этим сообщением Ссылка на сообщение