Купер 3177 Опубликовано 29 Марта 2020 (изменено) @mole venomous, тут, тут и тут. object_flags возможно? Изменено 29 Марта 2020 пользователем Купер 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 25 Января 2021 (изменено) @strannik-rus , стандартный набор логики ph_door. От части к части, в принципе, не сильно менялся. Пример ingame: gamedata\configs\scripts\jupiter\jup_b1_door.ltx Скрытый текст [logic] active = ph_door@locked [ph_door@locked] locked = true closed = true snd_open_start = trader_door_locked tip_open = jup_b1_door_is_closed on_info = {=actor_in_zone(jup_b1_open_door_zone)} ph_door@close [ph_door@close] locked = false closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = {+jup_b1_give_task} ph_door@open %+jup_b1_already_visited%, ph_door@open tip_open = tip_door_open on_info = {!actor_in_zone(jup_b1_open_door_zone)} ph_door@locked [ph_door@open] locked = false closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop tip_close = jup_b1_bar_door on_info = {+jup_b1_give_task -jup_b1_already_visited} ph_door@locked %+jup_b1_already_visited% Смотри, что мог упустить Изменено 25 Января 2021 пользователем Купер Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 28 Января 2021 @strannik-rus , дык... более общий случай, "с наворотами". Для понимания принципа. Впрочем, вопрос уже решён. Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 2 Февраля 2021 @Colder , а "отсечку" сделать? function take_item_from_box(box, box_story_id) local box_name = box:name() if (math.random() < 0.75) then --* вот туточки --* Вариант 1: по имени if not string.find(box_name, 'уникальная часть имени нашего рюкзака') and (math.random() < 0.75) then --* Вариант 2: по секции if box:section() ~= 'наименование секции нашего рюкзака' and (math.random() < 0.75) then axr_sounds.play_sound([[weapons\generic_checkout]]) mine_box = box mine_timer = time_global()+3000 end end end 1 1 2 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 5 Февраля 2021 К посту. И ведь не поправит никто. Все сидят, ржут мило улыбаются. Детский сад, штаны на лямках. Но... вот из принципа! Вызвали мы функцию start_repair_out(cond,num) . Отлично. А дальше... А дальше пытаемся получить секцию и инвентарное наименование для объекта... local sect = itm:section() local name = tostring(system_ini():r_string(sect,"inv_name_short")) которого в слоте нет Идеологически верное решение: Скрытый текст function start_repair_out(cond,num) local itm = db.actor:item_in_slot(num) local kit = kits[num] if itm ~= nil then local s = cond-2 local sect = itm:section() local name = tostring(system_ini():r_string(sect,"inv_name_short")) ... else ... end end 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 5 Февраля 2021 Скрытый текст @Okichi, и ведь не поспоришь... теоретически. А практически: больше кода Богу кода? Передать сюда - local itm = db.actor:item_in_slot(num) (метод для клиентского объекта) серверную сущность, а потом "грохнуться" гораздо позже с таким логом? Это ещё надо постараться. Хэх, а сколько по форуму таких зависших вопросов, где "...уже ёжики и догадаются"? 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 14 Апреля 2021 @Баба ЯГА , попробуй тут посмотреть. 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 26 Мая 2021 (изменено) @Капрал Хикс, что-то наподобие такого. Не идеально, но должно сработать. Скрытый текст function using_items(obj) local sect = obj:section() local actor = db.actor if obj and tSound[sect] then local snd = xr_sound.get_safe_sound_object(tSound[sect]) --* раз уж выше кэшировали. if sect == "item" then --* отсекаем предмет по секции if has_alife_info("info1") and has_alife_info("info_2") then --* проверяем поршни script.final_action() -- выполнить функцию из другого скрипта snd:play_no_feedback(actor, sound_object.s2d, 0, vector(), 2.0) --* раз уж выше кешировали else amk.spawn_item_in_inv("item") --* иначе спавн обратно в инвентарь end else --* отрабатываем остальные элементы таблицы snd:play_no_feedback(actor, sound_object.s2d, 0, vector(), 2.0) --* раз уж выше кэшировали. end end end Вопрос к знатокам: 1. Насколько здесь необходимо вот это вот: local snd =... if snd then --* проверка на наличие звука??? snd:play_no_feedback() end 2. Потенциальную "дыру" при массовом использовании предметов и методе play_no_feedback только я вижу? play_at_pos с соответствующим обработчиком прерывания не разумнее ли использовать? Изменено 26 Мая 2021 пользователем Купер 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 1 Июня 2021 (изменено) @AndreySol, отчасти гипотетическая, однако, вполне возможная ситуация: последовательное использование нескольких разно озвученных предметов + достаточная продолжительность самой озвучки. Что будет происходить со звуками? play_no_feedback работает же по принципу "выстрелил - забыл": если звук запущен, он будет в любом случае проигран до конца. Тот же play_at_pos, в свою очередь, позволяет проконтролировать наличие звука в игре. Т.е. что-то наподобие этого: --* если старый звук играл, прерываем его воспроизведение. if snd and snd:playing() then snd:stop() end --* далее по тексту: запускаем новый. Изменено 1 Июня 2021 пользователем Купер Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 1 Июня 2021 @AndreySol, и я там увижу вполне очевидные вещи . Это больше к @Капрал Хикс-у на предмет обдумывания о целесообразности использования. @_ХоЗаР_, active_detector - нема такого в ЧН. 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 16 Июня 2021 А вот здесь, субъективно, таймфактор всё-таки надёжнее из конфигов вычитывать. local t = system_ini():r_u32('alife', 'time_factor') Это - как минимум. Впрочем, так, к слову. 2 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 19 Июня 2021 Гы... С самых что ни на есть релизных: Скрытый текст [remark@esc_corps_wounded] snd = esc_tolik_to_wolf target = 006 - возможные значения SID, actor, nil anim = guard on_signal = sound_end| walker@to_gulag_esc_corps_wounded danger = danger_condition@tolik meet = no_meet abuse = false Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 20 Июня 2021 Оффтоп: Скрытый текст Да ладно, чего зря оффтопить, всё равно без предоставленной проблемной логики гадать можно до морковкиного заговенья Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 25 Июля 2021 @Norman Eisenherz , ну так либа-то OGSE-шная собрана из расчёта добавления новых худовых слотов. (нож, бинокль, etc). вар1: добавить эти слоты (config + ui) вар2: пересобрать либу под собственные нужды. Емнип, нужные методы уже добавлены в "стандартный" X-Ray Ext. Недостающее для сборки с репо можно взять со второй ссылки. Ну и батники для сборки при этом поправить. 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 26 Июля 2021 @Norman Eisenherz , честно? Вот шут его знает, что у кого год назад стояло. Сейчас любопытства ради попробовал оригинал - Макрон - обр. 14г. Везде ожидаемый вылет. Впрочем, это уже явно не "скриптовые" вопросы. Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 12 Января 2022 @phalcor , готовое решение "на раздербанивание". Платформа X-Ray Extensions. Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 16 Февраля 2022 @Stalkersof , если по старинке (OGSE+), то как-то так. И посмотреть куда оно по "сигнальной" схеме подключается. 1 1 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 17 Мая 2022 @ARTLantist , попробуй тут и тут почитать. Возможно, что-то покажется полезным. (для 2-ой ссылки прокси/vpn с российских ip) 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 6 Июля 2022 (изменено) @EGER.OVERKILL WF , 31 минуту назад, EGER.OVERKILL WF сказал: [logic] active = sr_idle [sr_idle] on_actor_inside = nil %+kura% И вот здесь всё-таки так, по моему: 31 минуту назад, EGER.OVERKILL WF сказал: ; cse_shape properties shapes = 1 shape0:type = box ... Изменено 6 Июля 2022 пользователем Купер 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3177 Опубликовано 23 Июля 2022 (изменено) @mole venomous , db.actor:get_inventory_weight(). По идее. Пример использования. Скрытый текст Кто-нибудь многострадальный R1 к OGSR всё-таки прикручивал/ет? Никто не в курсе? Изменено 23 Июля 2022 пользователем Купер 1 Поделиться этим сообщением Ссылка на сообщение