Norman Eisenherz 316 Опубликовано 13 Июля 2022 Поделиться Опубликовано 13 Июля 2022 @MTomich Это рестриктор: при входе актера в область проверить наличие баллона, при действии удалить баллон из инвентаря и отспавнить в заданных координатах, плюс набор инфо-поршней. [spawns\all.spawn\alife_zaton.ltx] -- объекты и координаты [configs\scripts\zaton\zat_b57_gas_actor.ltx] -- логика 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
egorkaufman1 0 Опубликовано 14 Июля 2022 Поделиться Опубликовано 14 Июля 2022 (изменено) Здравствуйте, опять ищу помощи. Сделал кат-сцену с "растяжкой" и оглушением ГГ при входе в рестриктор. Написал логику: Скрытый текст [logic] active = sr_idle@idle [sr_idle@idle] on_info = {=actor_in_zone(wiz_rastyashka)} sr_idle@timer%=play_sound(generic_checkout)=spawn_object(pri_a25_enter_door_explosive_grenade:wiz_rast_point)% [sr_idle@timer] on_game_timer = 10|{-wiz_cam_start_nauch =object_exist(pri_a25_enter_door_explosive_grenade)} sr_cutsene %=barrel_explode(pri_a25_enter_door_explosive_grenade) = run_postprocess(alcohol) +wiz_cam_start_nauch% [sr_cutsene] point = wiz_spawn_umnik cam_effector = scenario_cam\way_in_zone\nachalo_kam on_signal = cameff_end | sr_idle@end % =run_postprocess(alcohol) = set_time(14:0) +wiz_cam_start_nauch_end% global_cameffect = true outdoor = true [sr_idle@end] Но при входе на рестриктор происходит вылет: Скрытый текст [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : ..\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ....l.k.e.r. call of pripyat\gamedata\scripts\_g.script:480: bad argument #2 to 'format' (string expected, got nil) Помогите найти ошибку, пожалуйста. Изменено 14 Июля 2022 пользователем egorkaufman1 Ссылка на комментарий
WinCap 316 Опубликовано 14 Июля 2022 Поделиться Опубликовано 14 Июля 2022 2 часа назад, egorkaufman1 сказал: Помогите найти ошибку Искать её придется самому. Для начала убери из логики все эффекты (заключены в %%) и добавь отладочное сообщение типа =send_tip(perehod_na_sekciyu_xxx). Посмотришь как происходит переход и есть ли ошибки, а потом добавляй по одному эффекту и выявляй "косячный". 1 1 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Graff46 598 Опубликовано 14 Июля 2022 Поделиться Опубликовано 14 Июля 2022 (изменено) На только одной локации враждебные НПС не видят ГГ вплотную. Если выстрелить, то НПС начинают паниковать, изредка стреляя в ГГ, но кидают гранаты. Пересобирал АИ сетку и спавн несколько раз, сетка не драфт. Также я проверял видимость ГГ для НПС функцией npc:see(db.actor) Возвращает false. Подскажите в чем может дело быть? Изменено 14 Июля 2022 пользователем Graff46 Ссылка на комментарий
Zander_driver 10 334 Опубликовано 14 Июля 2022 Поделиться Опубликовано 14 Июля 2022 7 часов назад, egorkaufman1 сказал: scripts\_g.script:480: bad argument #2 to 'format' (string expected, got nil) Для устранения таких вылетов неплохо было бы привести в порядок _g.script, заменив в нем древние и убогие функции вывода лога, на более логически адекватные. Ведь есть же уже куча примеров как это сделать. А так, вам _g.script буквально сообщает, что "вылет произошел потому, что не получилось сообщить причину вылета в логе". Это практически анекдот "вскрытие показало, что пациент умер от вскрытия" - ну неужели вас это не смущает в вашем моде? Не приводит к мысли, что может быть, этот скрипт должен работать не так? Скрытый текст Чтобы не быть голословным. --============================================================================================== local tostring_all_tbl = { ["table"] = function(table, ind) --Распечатка таблиц local res = "{" --Начало local end_res = ind and "\n"..ind.."}" or "\n}" --Конец local def_ind = " " --Отступ от начала строки ind = ind and ind..def_ind or def_ind --Для каждой "таблицы внутри таблицы" отступ увеличивается в 2 раза for k, v in pairs(table) do res = res.."\n"..ind.."["..tostring_all(k, ind).."] = "..tostring_all(v, ind).."," end return res..end_res end, ["string"] = function(v) return "'"..v.."'" end, --Строки берём в кавычки. Это нужно, чтобы можно было отличить строку "123" от числа 123, "nil" от nil и тд... ["number"] = function(v) return tostring(v) end, ["boolean"] = function(v) return tostring(v) end, ["nil"] = function(v) return tostring(v) end, ["function"] = function() return "[[FUNCTION]]" end, --Function, Userdata и Thread распечатать нельзя, просто заменим на строки ["userdata"] = function() return "[[USERDATA]]" end, ["thread"] = function() return "[[THREAD]]" end, } --Конвертирование чего угодно в строку. Использовать только для вывода в лог! function tostring_all(obj, ind) --ind - служебный аргумент для распечатки "таблиц в таблицах". return tostring_all_tbl[type(obj)](obj, ind) end --Функциональная обёртка для log1. --Делает дополнительную работу по конвертации параметров, которые не воспринимаются родной функцией string.format. --Параметры можно передавать ЛЮБОГО ТИПА! В строке формата они должны стоять как %s (потому, что будут сконвертированы в строки). function log3(fmt, ...) local args = {...} for i=1, #args do args[i] = tostring_all(args[i]) end local res, msg = pcall(string.format, fmt, unpack(args)) if not res then --Если произошла ошибка msg = "!!log3 failed: "..msg.."\n"..debug.traceback() end log1(msg) end --============================================================================================== function abort(fmt, ...) log1("!!****************************[ABORT]*********************************") log1(debug.traceback()) log3(fmt, ...) log1("!!********************************************************************") error(tostring(fmt)) end Вот из OGSR для примера. Тоже старый, не лучший (имхо) вариант, но хорош тем что не подтягивает функций из других файлов - тут все перед глазами, наглядно. Он не пишет сообщений в духе "вскрытие показало, что пациент умер от вскрытия" - а пишет по делу. 1 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
h0N0r 340 Опубликовано 15 Июля 2022 Поделиться Опубликовано 15 Июля 2022 @Graff46 проверить в сдк, у актора должен быть включен флажок: Used AI Locations, и сетка на драфте не влияет на видимость нпс. 1 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Graff46 598 Опубликовано 16 Июля 2022 Поделиться Опубликовано 16 Июля 2022 @h0N0r это проверял, галочка есть. Да и ситуация с невидимостью ГГ для НПС только на 1 локации, а спавниться ГГ на другой локации Ссылка на комментарий
WinCap 316 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 Здравствуйте. Понадобилось сделать своё собственное диалоговое окно. Следуя многочисленным советам с форума, взял за основу "ui_numpad.script". Скрытый текст function main() super_dlg = ui_MyDialog.MyDialog() super_dlg:ShowDialog(true) end class "MyDialog" (CUIScriptWnd) function MyDialog:__init() super() self:InitControls() end function MyDialog:__finalize() end function MyDialog:InitControls() local xml = CScriptXmlInit() xml:ParseFile("ui_numpad_wnd.xml") xml:InitStatic("background", self) self.st = xml:InitStatic("edit_box", self) self.st:SetWindowName("edit_box") self:AddCallback("edit_box", ui_events.BUTTON_CLICKED, self.On_BUTTON_CLICKED, self) <-- "Проблемная" строчка end function MyDialog:On_BUTTON_CLICKED() end function MyDialog:OnKeyboard(dik, keyboard_action) CUIScriptWnd.OnKeyboard(self, dik, keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:HideDialog() end end return true end В целом всё получилось, но столкнулся с одной непонятной проблемой: Мне не требуется обработка событий для отдельных элементов окна, хватает общего "OnKeyboard", но я не могу удалить строчку с установкой Callback'а. Если её удалить то при открытии окна, через несколько секунд происходит стабильный вылет. Скрытый текст [STACK TRACE UF] : 0023:0377AC2E luabind.beta7-devel.rc4.dll, luabind::detail::do_call_member_selection() 0023:054191DA xrGame.dll, CDialogHolder::OnFrame() Unhandled Error [error][ 183] : Невозможно создать файл, так как он уже существует. Подскажите, пожалуйста, в чем дело? S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 (изменено) Закомментил указанную строчку и function MyDialog:On_BUTTON_CLICKED(), сделал запуск function main() через съедание бинта: окно с задником выводится и отображается без вылетов, правильно реагирует на выход через [Esc] и перезагрузку. Видимо, конфликт еще с каким-то модом… Зачем нужен вывод "return true" в OnKeyboard? Изменено 4 Августа 2022 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
WinCap 316 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 10 минут назад, Norman Eisenherz сказал: отображается без вылетов Попробуй подождать подольше. 11 минут назад, Norman Eisenherz сказал: Зачем нужен вывод "return true" в OnKeyboard? Не знаю. Был в оригинальном "ui_numpad.script". S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 Пять минут – ни зависания, ни вылета. Выложи свой скрипт. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
WinCap 316 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 2 минуты назад, Norman Eisenherz сказал: Выложи свой скрипт. Он выложен постом выше. Я только начал оформлять диалог, удалив ненужное из "ui_numpad.script", поэтому там ничего особенного и нет. Единственное, что могу добавить, это то, что я для теста вставил этот диалог вместо "ui_numpad" в "ph_code.script". Кстати, если в оригинальном "ui_numpad.script" закомментировать все "AddCallback", то при срабатывании "ph_code" происходит такой же вылет. Может и правда ещё где-то "накосячил". S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 Выложен текст, а нужен файл для испытаний. Как раз хотел спросить, откуда выполняется вызов. Для теста в [ph_code.script] нужно точно знать, какого ввода он ожидает. Задача в создании своего окна или именно в изменении логики [ui_numpad]? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 4 Августа 2022 Поделиться Опубликовано 4 Августа 2022 @WinCap Ты пытаешься из скриптовой схемы сделать некое рандомное окно. Разве это правильно? Я не работаю с ЗП, по этому не знаю как там правильно вывести свое срипт-окно на худ, но в ТЧ уж точно нет нужды переделывать какие-то скриптовые схемы, там есть нормальный ф-ционал для такого. Опять-же, ты используешь диалоговое окно, которое изначально подразумевает взаимодействие с пользователем. так может по этому, при отсутствии обработчиков взаимодействия получается вылет. Сделай окно на базе чего-то типа UIStatic, там может и без обработчиков будет все нормально. Ссылка на комментарий
spirt17 0 Опубликовано 17 Августа 2022 Поделиться Опубликовано 17 Августа 2022 Здравствуйте. Не знаю куда и писать. Стоит call of chernobyl 1.5 r6, и имеется баг - в инвентаре у артефактов не отображается параметр "fire_wound_immunity", то есть пулестойкость. И по всей видимости, он и не учитывается при расчетах. Подскажите, как это исправить? Только через изменения в движке? Ссылка на комментарий
Lieutenant Novikov 15 Опубликовано 19 Августа 2022 Поделиться Опубликовано 19 Августа 2022 @spirt17 а ты точно проверял что он не действует? Зайди в файл с параметрами артефактов и повысь его до предела, а затем побегай под пулями. Если будешь неуязвимым значит он действует, а проблема скорее всего в отображении параметра. Тогда надо искать файл отвечающий за отображение параметров в папке ui. Вообще у меня этот параметр fire_wound_immunity стоит на нуле и относить к иммунитету самого артефакта. Но у меня другая версия так-что... Ссылка на комментарий
wiegy 1 Опубликовано 7 Сентября 2022 Поделиться Опубликовано 7 Сентября 2022 (изменено) Добрый день. Я начал разрабатывать мод для Зова Припяти и захотелось мне портировать инвентарь и HUD из аддона "Чистое небо". Но как это сделать? Какие файлы из ЧН надо портировать в ЗП? Как исправить баг с квадратной миникартой (то есть, текстура карты квадратная, а сама она круглая)? Как сделать так, чтобы в 1 первый слот можно будет брать только пистолеты, а во второй - все остальное? И если не сложно, то можно прикрепить файлы инвентаря и HUD из ЧН. Заранее спасибо! Изменено 7 Сентября 2022 пользователем wiegy Небольшие ошибки Добавлено Опричник, 7 Сентября 2022 Перемещено. Ссылка на комментарий
ZeeK 57 Опубликовано 11 Сентября 2022 Поделиться Опубликовано 11 Сентября 2022 (изменено) 18.08.2022 в 01:58, spirt17 сказал: в инвентаре у артефактов не отображается параметр "fire_wound_immunity Насколько я помню в ЧН и ЗП этот параметр не учитывается, а берется коэффициент сопротивления костюма. Посмотрите как сделаны кевларовые пластины в COC и Anomaly и сделайте по аналогии. Изменено 11 Сентября 2022 пользователем ZeeK Не соответствует. N6260 Ссылка на комментарий
WinCap 316 Опубликовано 12 Сентября 2022 Поделиться Опубликовано 12 Сентября 2022 Здравствуйте. Подскажите, пожалуйста, почему в биндере физических объектов (bind_physic_object) все callback'и устанавливаются в функции "update", а не, например, в "reinit"? Это ошибка или какая-то военная хитрость? S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
dsh 3 824 Опубликовано 12 Сентября 2022 Поделиться Опубликовано 12 Сентября 2022 Когда-то я тоже задался этим вопросом, и перенес установку коллбеков. Работать перестало, т.ч. я вернул все обратно. Подробнее разбираться не стал. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти