Купер 2 992 Опубликовано 18 Июня 2022 (изменено) @Stalkersof , не буду спорить, конечно. Проверял на XRE. Это уже надо непосредственно у разработчиков консультироваться. А быстрее всего самому в игре проверить . Изменено 18 Июня 2022 пользователем Купер 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 25 Июня 2022 (изменено) Навеяло вертолётами из Солянки. Скрытый текст логика вертолёта: [heli_move@idle] path_move = esc_desant_heli_2_idle_move engine_sound = false combat_safe_altitude = 85 invulnerable = true immortal = true on_info = {+esc_blocpost_pust} heli_move@fly_sound %+esc_lager_alarm% логика солдат на блокпосте, для "включения" вертушки: [death@soldier_arhara] on_info = {=killed_by_actor} %+esc_blocpost_pust% [logic@esc_blockpost_patrol1] active = patrol@esc_blokpost_day_patrol_commander on_death = death@soldier_arhara сама функция в xr_conditions.script -- проверка, что убийца нпс - актер /amk_embankment/ function killed_by_actor(actor,npc) local tab = actor and npc and db.storage[npc:id()].death if tab and tab.killer then return tab.killer == actor:id() end return false end Почему проверка на именно actora в качестве убивца {=killed_by_actor} не срабатывает? Или просто нам что-то не договаривают? Изменено 25 Июня 2022 пользователем Купер Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 1 Июля 2022 @h0N0r , ни разу не специалист, но там же вроде булев (true/false) ключ добавлен: function generic_object_binder:__init(obj) super(obj) ... self.used = false end function generic_object_binder:save(packet) ... packet:w_bool(self.used) end function generic_object_binder:load(reader) ... self.used = reader:r_bool() end А в самом теле функции уже проверка на предмет "первого раза": generic_object_binder:use_callback(obj, who): ... if self.object:alive() or self.used then return end + выше там же ещё одна "отсечка". 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 2 Июля 2022 Забавно, а ведь оно действительно в таком виде не желает работать. По крайней мере, на "классике". Интересно, почему? Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 3 Июля 2022 (изменено) @Ali_Babai_45 , для оригинала: ui_main_menu.script-> function main_menu:InitControls() ... local _ver = xml:InitStatic ("static_version",self) local mm = _G.main_menu.get_main_menu() _ver:SetText ("ver. " .. mm:GetGSVer()) end Тут более подробно. Изменено 3 Июля 2022 пользователем Купер 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 3 Июля 2022 (изменено) @Ali_Babai_45 , а пламенный привет борцунам за всё хорошее против всего плохого. Они весь домен gameru.net в РФ грохнули. Тут есть копипаста. Боюсь ошибиться, вот это вот GetGSVer() движком вычитывается по-моему. Сам формат текста здесь: ui_mm_main.xml (gamedata\config\ui) -> <static_version>...</static_version> Т.е., что-то наподобие такого можно соорудить: ver:TextControl():SetText ("ver. "..mm:GetGSVer().." + здесь название и версия"). То, что в "..." можно менять/мучить, а mm:GetGSVer() вряд ли изменить получится. Изменено 3 Июля 2022 пользователем Купер 1 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 3 Июля 2022 @андрей дронав , Скрытый текст да обойти несложно, конечно, хотелось бы понять почему в такой конфигурации не работает? Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 3 Июля 2022 10 часов назад, phalcor сказал: Бьюсь уже долго со схемой добивания раненых в попытке её отключить полностью, но безуспешно. (Платформа ОП, rx_kill_wounded.script). Какой из? Их же уже столько, а в каждом по своему! По идее, достаточно в rx_ai.script просто откомментировать загрузку и включение ненужной схемы: function load_schemes() function enable_schemes(ini,npc) В оригинале модулей AI, кстати, достаточно просто удалить/переместить нужный/ненужный файл с соответствующим модулем. 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 5 Июля 2022 А где-то можно почитать предметно относительно недоработок оригинальной движковой GSC схемы добивания подранков? В смысле: " подводные камни", что сделано через пень колоду, etc. Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 6 Июля 2022 5 часов назад, EGER.OVERKILL WF сказал: У меня там следующая билеберда: (брал из этого же файла, с другого рестриктора) Настройки шейпа (Скрыть) ; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 4.5480751991272 @EGER.OVERKILL WF, давай-ка полную выкладку, как оно сейчас выглядит? ; cse_shape propertiesshapes = shape0 <- ??? - кол-во шейпов shape0:type = sphere - тип (сфера/параллелепипед) shape0:offset = 0,0,0 - смещение shape0:radius = 5 - радиус (для типа "сфера") ; cse_alife_space_restrictor properties restrictor_type = 0 В логике я бы лично подстраховался (хотя, в принципе, и лишнее, наверное): [logic] active = sr_idle [sr_idle] on_actor_inside = {-kura} nil %+kura% {...} - условия для выполнения %...% - действия Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 6 Июля 2022 @EGER.OVERKILL WF , 36 минут назад, EGER.OVERKILL WF сказал: ; cse_shape properties shapes = shape0 вот здесь, по идее, число: 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 7 Июля 2022 (изменено) @EGER.OVERKILL WF, вот тут ещё посмотри. --- Не, какая-то ерундистика получается. Скрытый текст Для коробки: shape_0:axis_x = 1,0,0 Длина по оси X shape_0:axis_y = 0,1,0 Длина по оси Y shape_0:axis_z = 0,0,1 Длина по оси Z shape_0:offset = 0,0,0 Смещение центра коробки от координат объекта, указанных в position. Длины коробки так странно выглядят, потому что в спавне они заданы как матрица трансформации объекта, поскольку движок оперирует именно ими. Если описываете объект правильным параллелепипедом, значение имеют только «диагональные» координаты: первая для X, вторая для Y, третья для Z. Остальные должны быть нулевые. Если же меняете их, грани шейпа в игре не будут параллельны, коробка будет «кривой». Для аномалий обычно используется сфера, для всего остального – коробка. K.D. Изменено 7 Июля 2022 пользователем Купер Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 11 Июля 2022 (изменено) @EGER.OVERKILL WF , что-то наподобие такого в простейшем варианте: ; начальная секция логики [logic] active = sr_idle ; если актор в рестрикторе, проверяем {..} наличие поршня stiq, переключаемся на схему sr_territory@1 выдаём %..% поршень kura [sr_idle] on_actor_inside = {+stiq} sr_territory@1 %+kura% ; при выполнении условий отключаем рестриктор и выдаём конечный поршень. [sr_territory@1] territory_death = {+lox_dead +lox2_dead -loxi_dead} nil %+loxi_dead% NB! 1: sr_territory отслеживает только события хита и смерти NPC, засчитанные от актора. 2: смутно припоминается, что глючная она (вот чем, пардон, навскидку не вспомню). Требуется консультация. Вообще, изначальную задумку бы озвучить, чтобы понять приблизительно, что именно хочется. p.s.: вот зря карланом обозвался, придёт разработчик Prosectors Project, ругаться будет --- @EGER.OVERKILL WF, да про карлана шутка. Вряд ли, как мне кажется, человек обидится. Просто бывают и вот такие курьёзы в нашем славном королевстве. Изменено 11 Июля 2022 пользователем Купер 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 12 Июля 2022 @EGER.OVERKILL WF , решений на самом деле много, в зависимости от того какие именно npc: под гулагом, с отдельной логикой, "именованные" (co story_id). В логике можно использовать не только поршни, но и функции. тынц тынц тынц Если поршни lox_dead, lox2_dead уже выдаются без проблем, например так. [logic] active = sr_idle ; если актор в рестрикторе, проверяем {..} наличие поршня stiq, выдаём %..% поршень kura [sr_idle] on_actor_inside = {+stiq} %+kura% ; при выполнении условий отключаем рестриктор и выдаём конечный поршень. on_info = {+lox_dead +lox2_dead -loxi_dead} nil %+loxi_dead% 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 13 Июля 2022 (изменено) @Ворон545 , @AndrewMor , Скрытый текст Движок у вас какой? В последнем патче у себя (тынц) @RayTwitty как раз, в том числе и перепаковщиком занимался в связке "пояс-инвентарь" (X-Ray Ext). Там, правда, своя экосистема, но "отвязать", в принципе, несложно. И да, без фактуры оно действительно разговор глухого со слепым получается. Одна голова хорошо, а две хуже. Изменено 13 Июля 2022 пользователем Купер 2 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 15 Июля 2022 (изменено) @Houdini_one , 1. Cама реализация переключателя тут. А дальше настройка логики объекта. Товарищи спецы, что-то меня озадачило, посмотрев различные реализации. А почему нельзя вот так напрямую делать, чем плохо? Cхематично: [logic] active = ph_sound@on [ph_sound@on] snd = radio_blockpost_kordon tips = tip_radio_off on_use = ph_idle@off [ph_idle@off] tips = tip_radio_on on_use = ph_sound@on Ну, возможно, поршнем состояния ещё подстраховаться. 2. Не знаю насколько костыльно, можно попробовать что-то такое. Т.е. "прикрутить" к объекту биндер и проверяя нужное расстояние просто хитовать актора. Изменено 15 Июля 2022 пользователем Купер 1 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 15 Июля 2022 @dsh , в чём сомнения появились: наскоро ingame попробовал. Как ни странно, но даже работает , (триггер переключения, "холодная", "горячая" загрузки. Даже состояние сохраняет - вкл/выкл). Посмотрел здесь тынц реализацию. LA-шники, так вообще, отдельную ph_ схему делали под такие объекты, с ключом текущего статуса. Ну и сомнения загрызли по поводу "подводных камней". Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 26 Июля 2022 @Norman Eisenherz , тут 3 Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 27 Июля 2022 Скрытый текст Оно , кстати, на ТЧ действительно в таком виде НЕ работает. Поделиться этим сообщением Ссылка на сообщение
Купер 2 992 Опубликовано 28 Июля 2022 @actual_time , как оно выглядит? "Спавнер на ТЧ" - настолько размытое понятие, что - ух . Хотя бы откуда позаимствовано. Вполне серьёзно. Вариантов реализации слишком много, чтобы угадать. 2 Поделиться этим сообщением Ссылка на сообщение