_Sk8_AsTeR_ 117 Опубликовано 31 Июля 2017 Поделиться Опубликовано 31 Июля 2017 Господа, нужна ваша помощь. Кто шарит в скриптах? Хочу сделать комментарии к сообщениям о смерти сталкеров( чтобы сами НПЦ комментировали чью-либо смерть). Вот функция, отвечающая за выдачу новости о смерти сталкера: Скрытый текст -- Погиб сталкер. -- Собираем инфу о погибшем -- Собираем инфу о виновнике смерти -- Готовим сообщение function on_stalker_death(victim_, killer_) local rnd = math.random if (victim_ == nil) then return end local m_killer = "" local m_killer_s = "" local m_victim = "" local victim if (isGameObject(victim_)) then victim = victim_ else victim = get_obj(victim_.id) end local killer local m_name = get_npc_name(victim) m_victim = format_death_stalker_corpse(victim) local m_level = get_level_name(get_object_levelname(victim)) if (killer_) then if (isGameObject(killer_)) then killer = killer_ else killer = get_obj(killer_.id) end if (IAmAMonster[killer:clsid()]) then m_killer = format_death_by_monster(killer) m_killer_str = get_monster_name(killer, 2) elseif (IsAnomaly(killer)) then m_killer = format_death_by_anomaly(killer) m_killer_str = get_anomaly_name(killer, 1) elseif (IsNpcStalker(killer)) then local m_o_weapon = get_npc_weapon(killer) local m_s_weapon = "" if (m_o_weapon) then m_s_weapon = get_weapon_type(m_o_weapon) if (m_s_weapon < 5) then m_killer_str = "пулевое ранение" end if (m_s_weapon == 6) then m_killer_str = "нож" end if (m_s_weapon == 8) then m_killer_str = "ожоги" end if (m_s_weapon == 7 or m_s_weapon == 5) then m_killer_str = "граната" end end if (IsNpcActor(killer)) then add_killed_by_actor(victim) -- Отметим, что это ГГ постарался. end m_killer = format_death_by_stalker(killer) elseif (IsNpcOther(killer)) then local m_o_weapon2 = get_npc_weapon(killer) local m_s_weapon2 = "" if (m_o_weapon2) then m_s_weapon2 = get_weapon_type(m_o_weapon2) if (m_s_weapon2 < 5) then m_killer_str = "пулевое ранение" end if (m_s_weapon2 == 6) then m_killer_str = "нож" end if (m_s_weapon == 8) then m_killer_str = "ожоги" end if (m_s_weapon2 == 7 or m_s_weapon2 == 5) then m_killer_str = "граната" end end m_killer = format_death_by_stalker(killer) else m_killer_str = "причина смерти - неизвестна" m_killer = "" if _debug == true then mylog("On stalker death - unknown killer. "..killer:name().." clsid="..get_clsid(killer)) end end end if (m_killer_str==nil or m_killer_str=="") then m_killer_str = "причина смерти - неизвестна" end local m_string = m_name..". "..m_level..", "..m_killer_str.."." do_news(m_string, "Погиб сталкер:", rnd(timer_stalker_death, timer_stalker_death * 3), 10, "death", nil, 1) --------оригинальная строчка вывода сообщения на экран amk.send_tip("ТЕКСТ КОММЕНТАРИЯ НПЦ", "ИМЯ НПЦ ", time, show time, "death(иконка)") ---------этой строчкой рандомные НПЦ должны оставлять комментарии end end Суть проблемы вот в чем: строчка Do_News - тут прописан хитрый механизм, чтобы не засорять нам экран сообщениями о смертях, когда мы убили разом целую группу сталкеров (гранатой, например). Поэтому если мы разом убьем сразу 10 человек, придет только одно сообщение о смерти какого-нибудь из этих жмуриков.. Зато тут же через amk.send_tip покажутся сразу 10 сообщений с комментариями. И вот тут мне нужна ваша помощь, скриптеры. Помогите как-нибудь реализовать такой механизм, чтобы либо: 1) Комментарий (amk.send_tip) вызывался бы только после вывода сообщения (do_news) о смерти НПЦ на экран (сделать какую-то зависимость, не знаю), либо 2) тоже сделать "антиспам", чтобы на 10 практически одновременных сообщений о смерти сталкеров (do_news) отобразился бы только один комментарий (amk.send_tip). Есть какие-нибудь идеи? Добавлено Ixterra, 1 Августа 2017 Для таких сообщений на сайте есть свой форум "Школа моддинга", а в нем тема "Скрипты\конфиги\движок". Спроси там. Удачи. Ixterra. Добавлено HellRatz, 1 Августа 2017 Перемещено. Ссылка на комментарий
vampirnik77 121 Опубликовано 1 Августа 2017 Поделиться Опубликовано 1 Августа 2017 Здравствуйте, где-то видел фишку, в CoM кажется, там вроде в инвентаре лом перетаскиваешь на оружие и оно разбирается, не подскажите код? 1 Официальная страница проекта Neof-One Crew Ссылка на комментарий
Graff46 596 Опубликовано 17 Августа 2017 Поделиться Опубликовано 17 Августа 2017 Не нахожу нет-пакета куда записываются не стартовые диалоги НПС, есть пакет только для стартовых диалогов. Кроме как в XML профиле, больше ни как нельзя НПС задать нестартовые диалоги? Ссылка на комментарий
naxac 2 372 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 @Graff46 , да, только в xml Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Wlad777 24 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 Камрады скриптовики! Не дайте помереть, да поможите провести дебаг! В моей сборке что-то адски жрёт fps. Адски именно. Движок от ОГСЕ. При максимальных настройках на паузе имею 150 fps. А при игре 20-30 fps на открытых уровнях и 40-50 fps в подземельях. Жрёт что-то в скриптах, ибо если иногда происходит какой-то сбой у актора при загрузке, то в игре подскакивают до этих 150 fps. Если при этом сохраниться, то сейв будет битый из-за nil актора. Вещи, висящие на апдейте актора, пробовал отключать - изменений нет. Где пробовать копать? --------------------------------- www.amk-zone.de Ссылка на комментарий
abramcumner 1 020 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 1 час назад, Wlad777 сказал: Где пробовать копать? Понатыкать profile_timer в апдейте и увидеть, где надо копать? Ссылка на комментарий
Wlad777 24 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 А можно чуть подробнее, для слабо разбирающегося, пожалуйста? --------------------------------- www.amk-zone.de Ссылка на комментарий
abramcumner 1 020 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 С помощью profile_timer можно замерить время выполнения куска кода(методы в lua_help.script). Расставляешь пару замеров в апдейте, находишь тормозящий кусок, расставляешь в нем, и так пока не поймешь в чем дело. 1 Ссылка на комментарий
dsh 3 820 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 @Wlad777 вот так как-то local pt = profile_timer() pt:start() -- подозрительный код pt:stop() log2( "работало %s ms", pt:time() ) 2 2 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Джива 0 Опубликовано 18 Августа 2017 Поделиться Опубликовано 18 Августа 2017 Хаюшки. Будьте любезны, подскажите, как спавнить вертолёт через скрипт. На Кордоне. Цель- актёр и нпс кроме армии. Ссылка на комментарий
Капрал Хикс 460 Опубликовано 19 Августа 2017 Поделиться Опубликовано 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 Ссылка на комментарий
Graff46 596 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 (изменено) У меня вопрос из области GUI, можно ли сделать скролл InitStatic'ку, а то большой текст за статик вылазит? Скрытый текст Изменено 19 Августа 2017 пользователем Graff46 Ссылка на комментарий
Lebedev30 7 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 (изменено) Вопрос: можно через скрипты или как-то блокировать срабатывание перехода с локации на локацию до того, пока определённый квест не получит ГГ? Или к примеру поставить ворота и чтобы они не открывались т.к. скрипт проверяет и не видит, что у ГГ активен или выполнен определённый квест. Если это реально. То как. Прошу примера т.к. подобного не встречается ни в одной из игр оригинала? Изменено 19 Августа 2017 пользователем Lebedev30 Ссылка на комментарий
Graff46 596 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 Только что, Lebedev30 сказал: можно через скрипты или как-то блокировать срабатывание перехода с локации на локацию Можно спавнить переход по условию, до определённого события перехода просто не будет. 1 Ссылка на комментарий
dsh 3 820 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 1 hour ago, Graff46 said: сделать скролл InitStatic'ку Я делаю scroll <descr_scroll x="247" y="10" width="355" height="150" always_show_scroll="0"/> self.descr_scroll = xml:InitScrollView( "main_dialog:descr_scroll", self.dialog ) и к нему уже аттачу статик с текстом <descr_text x="0" y="0" width="335" height="250" complex_mode="1"> <font font="letterica16" r="255" g="255" b="255"/> </descr_text> self.item_descr = self.xml:InitStatic( "main_dialog:descr_text", self.descr_scroll ) self.item_descr:SetText( self:get_item_description( ui_item.data ) ) self.item_descr:AdjustHeightToText() dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
UnLoaded 313 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 1 час назад, dsh сказал: self.item_descr:AdjustHeightToText() этой ф-ции ведь нет в чистом ТЧ ? Ссылка на комментарий
Graff46 596 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 Только что, UnLoaded сказал: этой ф-ции ведь нет в чистом ТЧ ? Нету Ссылка на комментарий
TIGER_VLAD 360 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 @Lebedev30 Как вариант: перед переходом поставить большой рестриктор и в логике вызывать функцию, когда ГГ будет внутри. А в функции телепортировать (например 2 метра назад) и развернуть ГГ и написать сообщение на экран типа "Переход заблокирован". После выполнения квеста, рестриктор удаляем. 1 Ссылка на комментарий
TIGER_VLAD 360 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 5 часов назад, Graff46 сказал: Можно спавнить переход по условию, до определённого события перехода просто не будет. Вот только тогда игрок сможет выйти за пределы локации и упасть например) Ссылка на комментарий
nego 35 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 Здравствуйте ВАМ. Как можно в ТЧ...04 сделать арты, увеличивающие переносимый вес? Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти