dsh 3 824 Опубликовано 4 Июня 2020 Поделиться Опубликовано 4 Июня 2020 @phalcor, посмотри, что у них в [spawner] dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
phalcor 60 Опубликовано 4 Июня 2020 Поделиться Опубликовано 4 Июня 2020 @dsh, знал бы точно, что и где искать? Вот в all.spawn есть семь секий (по числу наёмников), это оно? Скрытый текст [3118] ; cse_abstract properties section_name = stalker name = esc_killer1 position = -99.2369918823242,-4.79276275634766,-77.2306289672852 direction = 0.0865945741534233,-0.0213616397231817,0.147721081972122 unknown_id = 0 script_version = 7 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_killer_specnaz ; cse_alife_object properties game_vertex_id = 75 distance = 8.39999961853027 level_vertex_id = 161287 object_flags = 0xffffffbf custom_data = <<END [spawner] cond = {+escape_lager_spawn_killers} [smart_terrains] esc_killers = true END ; cse_visual properties Ссылка на комментарий
AndrewMor 527 Опубликовано 5 Июня 2020 Поделиться Опубликовано 5 Июня 2020 (изменено) @phalcor, Да, оно. Но в секции [spawner] тут только инфо escape_lager_spawn_killers на перевод наймов в онлайн. Вот кусок из gulag_espace.script Скрытый текст if type == "esc_killers" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("escape_lager_spawn_killers") then return 0 -- offline elseif has_alife_info("escape_lager_spawn_killers") and not has_alife_info("esc_killers_raid") then return 3 -- wait elseif has_alife_info("esc_killers_raid") and not has_alife_info("esc_open_killer_fire") then return 4 -- raid elseif has_alife_info("esc_open_killer_fire") and xr_gulag.getGulagPopulationComed("esc_lager") > 0 then return 1 -- fight elseif has_alife_info("esc_open_killer_fire") and xr_gulag.getGulagPopulationComed("esc_lager") <= 0 then return 2 -- kamp end return gulag.state end end Состояние 2 - это вот не для него случаем: Скрытый текст t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, position_threshold = 400, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_killer_kamp_offline", idle = 0, prior = 5, state = {0}, online = false, position_threshold = 400, in_rest = "", out_rest = "" } table.insert(sj, t) Сама логика: Скрытый текст [logic@esc_killer_kamp_offline] active = kamp@esc_killer_kamp_offline [kamp@esc_killer_kamp_offline] center_point = kamp_wait Изменено 5 Июня 2020 пользователем AndrewMor 2 Сталкер - наше всё! Ссылка на комментарий
phalcor 60 Опубликовано 5 Июня 2020 Поделиться Опубликовано 5 Июня 2020 @AndrewMor, спасибо за подробный ответ! Начинаю понимать, где собака зарыта, но пока ещё ясности нет. Пробовал менять возвращаемые статусы в условии elseif has_alife_info("esc_open_killer_fire") and xr_gulag.getGulagPopulationComed("esc_lager") <= 0 then, но безрезультатно. Если объяснять долго, какой именно параметр отвечает за "исчезновение" трупов, подскажи пожалуйста, можно ли об этом где-то почитать? Ссылка на комментарий
abramcumner 1 157 Опубликовано 5 Июня 2020 Поделиться Опубликовано 5 Июня 2020 (изменено) @phalcor, config/gameplay/info_l01escape.xml Цитата <info_portion id="escape_lager_killers_die"> <disable>escape_lager_spawn_killers</disable> </info_portion> Инфопоршень escape_lager_killers_die убирает escape_lager_spawn_killers и наемники уходят в оффлайн из-за условия в cекции spawner в all.spawn. Похоже надо удалить disable из выше процитированного кода. Или в секции spawner написать как-то так cond = {+escape_lager_spawn_killers}, {+escape_lager_killers_die} Изменено 5 Июня 2020 пользователем abramcumner 2 1 Ссылка на комментарий
Okichi 922 Опубликовано 5 Июня 2020 Поделиться Опубликовано 5 Июня 2020 (изменено) @phalcor, Похоже, что здесь, когда лагерь переходит в состояние 0 и неписи получают соотв. работы - им на этих работах запрещено переходить в онлайн. Вот они и "пропадают". Возможно, что в момент гибели _всех_ наймов у актора забирают поршень "escape_lager_spawn_killers" - и поэтому трупы наймов снова сразу уходят в оффлайн. Но состояние 2 - это если все _сталки_ в лагере убиты, и тогда наймы пойдут и займут их место. Но вот это для состояния 2 выглядит странно - не знаю, как может быть _меньше нуля_ количество НПС в лагере ) Даже если это "пришедших" посчитали. 4 часа назад, AndrewMor сказал: xr_gulag.getGulagPopulationComed("esc_lager") <= 0 Изменено 5 Июня 2020 пользователем Okichi 1 След от кругов на воде - это тоже след (с) Ссылка на комментарий
phalcor 60 Опубликовано 5 Июня 2020 Поделиться Опубликовано 5 Июня 2020 @abramcumner, @Okichi, парни, спасибо за внимание к моей проблеме! Сработало удаление <disable>escape_lager_spawn_killers</disable> - теперь трупы после load на месте, Фанат выдаёт награду, и я смогу утолить свой мародёрский интерес не спеша Посмотрел, вроде в дальнейшем этот поршн ни на что не влияет, а трупы при переходе на другую локацию сожрёт уборщик, так и закончится эта история. 1 1 Ссылка на комментарий
Это популярное сообщение. dsh 3 824 Опубликовано 5 Июня 2020 Это популярное сообщение. Поделиться Опубликовано 5 Июня 2020 @phalcor, возможно не все так просто. Вот исправление этой ситуации из моего мода https://github.com/dsh2dsh/op2ogse/commit/14a92a6afbf7201c9aec15fbdd92598ed5ae853d Прочти там коммит сообщение. 2 3 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 5 Июня 2020 Поделиться Опубликовано 5 Июня 2020 On 5/23/2020 at 10:20 AM, Norman Eisenherz said: если текстура элемента списка указана ссылкой на описание в [ui_common.xls], текст этого элемента смещается вправо на ширину текстуры Нашел причину: [xr_3da\xrGame\ui\UIListItem.cpp]void CUIListItem::InitTexture(LPCSTR tex_name) { CUIButton::InitTexture(tex_name); SetTextX(m_UIStaticItem.GetRect().width()); } Видимо, таким способом предполагалось облегчить создание списков "иконка + название", но это смещение только мешает, если требуется сделать подложку _под_ текстом. Сбросив значение SetTextX(0), можно выравнивать текст как обычно – может, кому пригодится. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndrewMor 527 Опубликовано 7 Июня 2020 Поделиться Опубликовано 7 Июня 2020 05.06.2020 в 11:34, abramcumner сказал: config/gameplay/info_l01escape.xml Вот куда я не догадался глянуть. Этот оно самое. 05.06.2020 в 11:34, abramcumner сказал: Или в секции spawner написать как-то так Если так сделать, нужно пересобирать спавн и начинать НИ. Проще в инфо убрать строчку и загрузить сейв до разговора с Фанатом. 05.06.2020 в 11:36, Okichi сказал: Но вот это для состояния 2 выглядит странно - не знаю, как может быть _меньше нуля_ количество НПС в лагере ) Ага, я тоже внимание обратил. 05.06.2020 в 17:35, dsh сказал: возможно не все так просто. Вот исправление этой ситуации из моего мода А разве их уборщик не подберет потом? Они вроде без уникальных стори айди. 1 Сталкер - наше всё! Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 12 Июня 2020 Поделиться Опубликовано 12 Июня 2020 Здрасьте. [ТЧ 1.0006] Оконный класс на базе CUIScriptWnd(), безлоговый вылет через несколько секунд после вывода нового окна. Если зарегистрировать в окне хотя бы одно событие, окно остается сколько угодно долго и к вылету не приводит. Почему так? Spoiler -- // actor_binder:use_object(obj) -- custom // -- function use_check(obj) if obj:section() == "bandage" then level.start_stop_menu(wnd(), true) end end class "wnd" (CUIScriptWnd) function wnd:__init() super() self:Init(1024/2, 768/2, 128, 128) local bk = CUIStatic() self:AttachChild(bk) bk:Init("ui\\ui_frame_back", 0, 0, self:GetWidth(), self:GetHeight()) bk:SetColor( GetARGB(255, 0, 255, 255) ) self:Register(bk, "name") -- self:AddCallback("name", ui_events.WINDOW_LBUTTON_DB_CLICK, function() end, self) end function wnd:__finalize() end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Graff46 598 Опубликовано 13 Июня 2020 Поделиться Опубликовано 13 Июня 2020 @Norman Eisenherz, сборщик мусора удаляет экземпляр класса окна. Создайте переменную, запишите в нее екземляр класса, потом вызываете level.start_stop_menu с этой переменной 1 Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 13 Июня 2020 Поделиться Опубликовано 13 Июня 2020 @Graff46 Переменную вне функции вызова окна, если точно. Почему все-таки окно не удаляется тем же уборщиком при наличии привязанного события? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
phalcor 60 Опубликовано 14 Июня 2020 Поделиться Опубликовано 14 Июня 2020 А что означают вот такие параметры смарт-террейнов? 1) esc_dogs_to_fox: population=0 comed=0 State=1 (это вроде как собаки, которые должны нападать на лагерь 2) - по факту - пусто, нет ни одной собаки. 2) esc_stalker_camp: population=1 comed=1 State=0 (это на Кордоне, где Лис стоял) по факту - никого нет. Или может есть тема, где такие тонкости описываются? Ссылка на комментарий
naxac 2 447 Опубликовано 14 Июня 2020 Поделиться Опубликовано 14 Июня 2020 @Norman Eisenherz, потому что при регистрации коллбэка ссылка на окно остаётся в движке. @phalcor, population - общее количество неписей в гулаге; comed - количество неписей в гулаге, которые пришли на место работы и начали выполнять свою работу; state - текущее состояние гулага, задаётся соответствущими функциями в скриптe гулага (файлы gulag_*.script). Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
phalcor 60 Опубликовано 14 Июня 2020 Поделиться Опубликовано 14 Июня 2020 (изменено) @naxac, да, поизучал xr_gulag.script, но так и не понял, что значит State=1 или 0. Просто пытаюсь найти, в чём затык Циклического Задания Фаната на защиту лагеря - ну никак не закрывается это задание. Вот пытаюсь выяснить необходимые для этого условия. Уже и cycle_task.script перелопатил - там условием на закрытие задания является if xr_gulag.getGulagState(task_desc.defend_target) == 0 then task_desc.status = self.status.completed return true end Изменено 14 Июня 2020 пользователем phalcor Ссылка на комментарий
Zander_driver 10 334 Опубликовано 14 Июня 2020 Поделиться Опубликовано 14 Июня 2020 Только что, phalcor сказал: что значит State=1 или 0. Это разные состояния гулага. В которых могут быть различные наборы работ или их условий. В качестве простого примера, представим лагерь в котором ночью сталкеры патрулируют периметр, а днем собираются у костра и травят байки, оставив лишь пару часовых на входе. Тут получится состояние "день" и состояние "ночь", в каждом из которых свой набор работ. Состояний может быть и больше. 0, 1, и т.д. - это просто номер состояния. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
naxac 2 447 Опубликовано 15 Июня 2020 Поделиться Опубликовано 15 Июня 2020 @phalcor, это тебе надо брать твой смарт и смотреть в скрипте, по каким условиям он переключается в состояние 0. Вот пример для гулага pri_ambush7 (gulag_pripyat.script): -- States ---------------------------------------------------------------- gulags.pri_ambush7.state = function(gulag) if has_alife_info("pri_wave7_start") then return 1 else return 0 end end Тут при наличии инфопорции "pri_wave7_start" он переключается в состояние 1, иначе - в состояние 0. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Shennondoah 130 Опубликовано 15 Июня 2020 Поделиться Опубликовано 15 Июня 2020 РыбятЫ, привет. В общем такой вопрос, а можно как-то реализовать как-то чтение записок в виде текстуры, как книга например в Солянке, но чтоб при чтении игра ставилась на паузу автоматически, как в том же Метро? Оц тоц перевертоц, бабушка здорова, Оц тоц перевертоц кушает компот. Оц тоц перевертоц и мечтает снова Оц тоц перевертоц пережить налет! Ссылка на комментарий
crew_ 0 Опубликовано 15 Июня 2020 Поделиться Опубликовано 15 Июня 2020 Всем добра. У меня почему-то нпс при спавне через скрипт смотрит не в ту сторону. С чем это может быть связано? Скрытый текст [logic] active = remark@base danger = danger_ignore invulnerable = true [remark@base] anim = wait meet = meet combat_ignore_cond = true combat_ignore_keep_when_attacked = true [meet] close_snd_hello = nil close_snd_bye = nil close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 use = {!actor_enemy} true trade_enable = false allow_break = false Скрытый текст -- Спавн нпс при старте игры function start_game_spawn() -- Охотник alife():create("stalker_hunter", vector():set(111.529, -3.936, 190.043), 11576, 316) end Скрытый текст local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Координаты:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) Пробовал смотреть в другую сторону и снимать координаты, но при спавне нпс всеравно смотрит в стену. target = story | actor мне не подходит. Нужно чтобы непись смотрел в одну сторону. Платформа: COP 1.6.02 + Atmosfear + Shoker Weapon Mod Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти