ARTLantist 14 Опубликовано 25 Мая 2021 Поделиться Опубликовано 25 Мая 2021 @Капрал Хикс убери end перед else, странно, что вылета нет, ибо их тут больше, чем надо, да и для else нет подходящего if. Если ты делаешь цепочку "если-иначе", то нужно писать так: if condition then action1 else action2 end Конечно у тебя предмет съедаться будет и не будет спавниться А на счёт проигрываемого звука: тебе его тоже нужно засунуть под проверку с инфопоршнями, ибо у тебя это выглядит так: если есть звук, то устанавливаем переменную и проигрываем этот звук. Тут же ожидать другого и невозможно) 1 Ссылка на комментарий
Купер 2 869 Опубликовано 26 Мая 2021 Поделиться Опубликовано 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 Ссылка на комментарий
I am Dead 912 Опубликовано 28 Мая 2021 Поделиться Опубликовано 28 Мая 2021 Можно ли на OGSR Engine заблокировать какой либо слот по определённой функции не прибегая к db.actor.hide_weapon? Ссылка на комментарий
hArdplAyer22_22 0 Опубликовано 28 Мая 2021 Поделиться Опубликовано 28 Мая 2021 Вопрос к знатокам. Как очистить определенный инвентарный ящик по ID? То-есть, как, к примеру, определенным скриптом удалить все предметы из ящика в деревне новичков? Ссылка на комментарий
Manool 145 Опубликовано 28 Мая 2021 Поделиться Опубликовано 28 Мая 2021 (изменено) 2 часа назад, hArdplAyer22_22 сказал(а): Как очистить определенный инвентарный ящик по ID? Вот так можно - Скрытый текст function clear_box( box_id ) -- ID ящика, который нужно очистить for a = 1, 65535, 1 do local sobj = alife():object( a ) if sobj and sobj.parent_id == box_id then alife():release( sobj, true ) end end end Причём, неважно, в онлайне ящик или нет. Изменено 28 Мая 2021 пользователем Manool Объединённый Пак OGSR Engine Ссылка на комментарий
hetrikWHY 34 Опубликовано 30 Мая 2021 Поделиться Опубликовано 30 Мая 2021 Нужно сделать проверку на наличие детектора "Отклик" в руках. Это возможно? active_item:section() == "detector_simple" не работает, хотя active_item:section() == "wpn_pm" - вполне себе Игра: ЧН (с OGSM) UPD: active_item:clsid() == clsid.device_detector_simple и active_item:clsid() == clsid.detector_simple_s тоже не работают. Хотя например active_item:clsid() == clsid.wpn_pm_s проверку проходит Все эти device_detector_simple, detector_simple_s и wpn_pm_s взяты из m_netpk.ltx Ссылка на комментарий
_ХоЗаР_ 47 Опубликовано 31 Мая 2021 Поделиться Опубликовано 31 Мая 2021 @hetrikWHY В ЗП есть метод active_detector. Используется аналогично методу active_item. Думаю он есть и в ЧН.@Norman Eisenherz Давным - давно, (может пол года назад) Когда я переносил сортировку инвентаря из DMX мода на ЗП (Используя только оригинальный движкок, аля челенж такой). Я делал так. Окно на рендер отправлял в текущем вызове. В основном XML инвентаря убирал фон, и рендерил его из фейкового окна. Скрытый текст 6 ГБ ОЗУ DDR3 1098 мГц (Разносорт) Процессор Intel Xeon E5420 4/4 2.5 ГГц Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 31 Мая 2021 Поделиться Опубликовано 31 Мая 2021 Привет! Задаю анимацию в path_look, проигрывается. Берём анимацию сидения на стуле. А как по высоте анимку подогнать под стул? Выходит что силячий нпс парит над стулом. Как ни ковырял координаты - все никак не выходит. Или высота строго задана в самой анимки и идёт отчёт высоты строго от вертекса на полу? Ссылка на комментарий
AndreySol 215 Опубликовано 1 Июня 2021 Поделиться Опубликовано 1 Июня 2021 @_Sk8_AsTeR_ Видимо проще подобрать стул под высоту анимации. 26.05.2021 в 05:21, Купер сказал(а): Потенциальную "дыру" А где ты ее увидел, эту дыру? Внутри play_no_feedback использует все то-же, что и play_at_pos, просто назначение ф-ций разное. Ссылка на комментарий
Купер 2 869 Опубликовано 1 Июня 2021 Поделиться Опубликовано 1 Июня 2021 (изменено) @AndreySol, отчасти гипотетическая, однако, вполне возможная ситуация: последовательное использование нескольких разно озвученных предметов + достаточная продолжительность самой озвучки. Что будет происходить со звуками? play_no_feedback работает же по принципу "выстрелил - забыл": если звук запущен, он будет в любом случае проигран до конца. Тот же play_at_pos, в свою очередь, позволяет проконтролировать наличие звука в игре. Т.е. что-то наподобие этого: --* если старый звук играл, прерываем его воспроизведение. if snd and snd:playing() then snd:stop() end --* далее по тексту: запускаем новый. Изменено 1 Июня 2021 пользователем Купер Ссылка на комментарий
AndreySol 215 Опубликовано 1 Июня 2021 Поделиться Опубликовано 1 Июня 2021 @Купер Ну так используй каждую ф-цию по назначению - и все будет как надо. Ведь play_no_feedback для того и создана, чтоб запустить воспроизведение и забыть. И еще раз - загляни в исходники, в реализацию обоих ф-ций, сразу поймешь что и как... Ссылка на комментарий
Купер 2 869 Опубликовано 1 Июня 2021 Поделиться Опубликовано 1 Июня 2021 @AndreySol, и я там увижу вполне очевидные вещи . Это больше к @Капрал Хикс-у на предмет обдумывания о целесообразности использования. @_ХоЗаР_, active_detector - нема такого в ЧН. 1 Ссылка на комментарий
Капрал Хикс 531 Опубликовано 1 Июня 2021 Поделиться Опубликовано 1 Июня 2021 1 час назад, Купер сказал(а): на предмет обдумывания о целесообразности использования. Пока вполне подходит при употреблении многих предметов за раз. Ссылка на комментарий
phalcor 60 Опубликовано 6 Июня 2021 Поделиться Опубликовано 6 Июня 2021 Добрый день! Есть ли простой метод определить condition оружия для серверного объекта? Что-то аналогичное клиентскому методу obj:condition() Движок - ОП 2.1 Ссылка на комментарий
AndreySol 215 Опубликовано 6 Июня 2021 Поделиться Опубликовано 6 Июня 2021 @phalcor Использовать модуль для работы с нет-пакетами от Artos'а, к примеру. Там все просто. 1 Ссылка на комментарий
phalcor 60 Опубликовано 6 Июня 2021 Поделиться Опубликовано 6 Июня 2021 (изменено) @AndreySol Теоретически да. Делаю так: Скрытый текст function ph_test_netpk() local item, cl_sid, sect, pk, data for i = 1, 65534 do -- Ищем вообще все существующие объекты в игре item = alife():object(i) --получаем серверный объект if item then cls_id = item:clsid() sect=item:section_name() if iAmWeapon[cls_id] and config:line_exist(sect, "ammo_class") then --НЕТ-ПАКЕТЫ pk = get_netpk( item, 1 ) if pk and pk:isOk() then data = pk:get() log("К="..data.condition) end end end end --for log("It's OK!") end Однако получаю вылет вот такой: Скрытый текст [06.06.21 16:42:30.497] [LUA] SCRIPT RUNTIME ERROR [06.06.21 16:42:30.497] [LUA] z:\op21-repack\gamedata\scripts\m_netpk.script:1231: attempt to index local 'uppk' (a nil value) [06.06.21 16:42:30.497] [06.06.21 16:42:30.497] FATAL ERROR [06.06.21 16:42:30.497] [06.06.21 16:42:30.497] [error]Expression : fatal error [06.06.21 16:42:30.497] [error]Function : CScriptEngine::lua_error [06.06.21 16:42:30.497] [error]File : script_engine.cpp [06.06.21 16:42:30.497] [error]Line : 79 [06.06.21 16:42:30.497] [error]Description : <no expression> [06.06.21 16:42:30.497] [error]Arguments : LUA error: z:\op21-repack\gamedata\scripts\m_netpk.script:1231: attempt to index local 'uppk' (a nil value) Изменено 6 Июня 2021 пользователем phalcor Ссылка на комментарий
vader_33 136 Опубликовано 6 Июня 2021 Поделиться Опубликовано 6 Июня 2021 @phalcor так попробуйте local tbl = netpacket:get(item) local cond = tbl.condition Ссылка на комментарий
AndreySol 215 Опубликовано 7 Июня 2021 Поделиться Опубликовано 7 Июня 2021 @phalcor У меня так работает: local pk = m_netpk.get(item, 1) if pk and pk:isOk() then local data = pk:get() -- читаем данные из нет-пакета if data and data.condition then end end 1 Ссылка на комментарий
phalcor 60 Опубликовано 7 Июня 2021 Поделиться Опубликовано 7 Июня 2021 @AndreySol @vader_33 Проблема решилась только правкой m_netpk.script: было: if stpk:r_elapsed()~=0 or uppk:r_elapsed()~=0 then (вот тут и выдавалась ошибка в момент исполнения команды data = pk:get() ) сделал ТАК: if stpk:r_elapsed()~=0 or (uppk and uppk:r_elapsed()~=0) then (добавил проверку на наличие этого uppk!) (Напомню текст ошибки: m_netpk.script:1231: attempt to index local 'uppk' (a nil value) ) Всё отлично работает, остаётся лишь вопрос - а не приведёт ли это в дальнейшем к какой-то неочевидной сейчас большой проблеме? Кстати, как у вас в m_netpk.script в этом месте, есть ли проверка на наличие uppk? 1 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 7 Июня 2021 Поделиться Опубликовано 7 Июня 2021 Доброго времени! Есть вопрос по проигрыванию анимаций. Получилось НПС посадить на стул. НО с ними иногда происходят какие-то странности. НПС может либо сесть ровно в соответствии с подогнанными координатами, либо сесть мимо стула. Во втором случае если напугать НПС выстрелом под ноги, то он побегает и вернется, чтобы сесть на стул. И садится ровно. Есть мысли, что можно придумать? Есть варик, например, если НПС захочет проиграть определенный стейт, то перед этим заставить его сделать шаг вперед? Типа того, не знаю. То есть чтобы НПС перед тем как сесть (потенциально неправильно) сначала отошел от координат, чтобы затем вернулся и сел правильно. Такая же ерунда, кстати, в Баре у ПЫСов. Все НПС, проигрывая анимацию о барной стойки, стоят чуть дальше чем нужно и опираются о пустоту. Если их напугать, то они возвращаются на место и проигрывают анимацию уже как положено. Есть какие-нибудь мысли, как это пофиксить? 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти