Labadal 68 Опубликовано 17 Декабря 2020 (изменено) пишу так: Скрытый текст if db.actor:is_on_belt("af_medusa") then скрипт вешаю на апдейт Как итог - ничего не происходит, а всё остальное тупо перестаёт работать: (оружие не достаётся, другие скрипты, висящие на апдейте, тоже не функционируют. следовательно вопрос, что я делаю не так? спасибоньки Убрал кавычки: Скрытый текст if db.actor:is_on_belt(af_medusa) then функция по-прежнему не работает, но всё другое больше не ломается. Что подскажете? Изменено 17 Декабря 2020 пользователем Labadal God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 18 Декабря 2020 8 часов назад, Romann сказал: Ну во первых - это в тему скриптования. Почему в тему скриптования? функция db.actor:is_on_belt - это функция, добавленная проектом Xray extensions, так что логичней спрашивать об этом здесь. А что дальше, не важно, проблема заключалась именно с этой новой функцией проверки нахождения предмета на поясе. God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 6 Августа 2021 (изменено) возможно с помощью данной функции скриптово открыть окно торговли? (вызвав в диалоге с тем, с кем нужно открыть торговлю). Если да, то как? CUIDialogWnd*<trade_wnd> get_trade_wnd() Изменено 6 Августа 2021 пользователем Labadal God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 6 Августа 2021 2 минуты назад, naxac сказал: @Labadal , local wnd = level.get_trade_wnd() if wnd and wnd:IsShown() then level.start_stop_menu(wnd, true) end local wnd = level.get_trade_wnd() if wnd and wnd:IsShown() then level.start_stop_menu(wnd, true) end Вызываю функцию из диалога, ничего не происходит, есть идеи? @naxac Попробовал так: function trade_init() local wnd = level.get_trade_wnd() if wnd and wnd:IsShown() then level.start_stop_menu(wnd, true) end end При вызове из диалога - ничего не происходит. Полагаю, что IsShown() - проверка открыто окно или нет. Если правильно полагаю, тогда понятно почему ничего не происходит, ведь в момент вызова торговля не открыта. Попробовал так: function trade_init() local wnd = level.get_talk_wnd() if wnd and wnd:IsShown() then level.start_stop_menu(level.get_trade_wnd(), true) end end То есть проверяю открыто ли в данный момент окно разговора, чтобы вызвать торговлю, и при вызове ловлю следующий вылет: Скрытый текст Expression : assertion failed Function : CUIWindow::SetParent File : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIWindow.cpp Line : 634 Description : !(m_pParentWnd && m_pParentWnd->IsChild(this)) На этом идеи кончились, в какую сторону думать? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 6 Августа 2021 @UriZzz Думаешь, перед открытием окна торговли из окна диалога мне необходимо закрыть окно диалога? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 6 Августа 2021 @UriZzz не-а, в любом случае ловлю вылет Скрытый текст Expression : assertion failed Function : CUIWindow::SetParent File : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIWindow.cpp Line : 634 Description : !(m_pParentWnd && m_pParentWnd->IsChild(this)) В общем, играясь, до меня неожиданно дошло, что в чс можно назначить горячую клавишу на открытие окно торговли с помощью параметра accel. Скрытый текст В файлах talk.xml и talk_16.xml найти тег button и вписать в конце тега accel="Ваша клавиша". А затем, замечательной функцией, имеющейся в X-Ray extensions, имитирующей события нажатия кнопки send_event_key_press(int<DIK_keys>) можно открыть торговлю, вызвав функцию через диалог. level.send_event_key_press(DIK_keys.DIK_mouse4) И что самое замечательное, почему-то если назначить кнопку mouse4 (другие mouse кнопки не пробовал) - то при попытке отрыть торговлю, самому нажав клавишу mouse4 - торговля не откроется, но если открывать вышеуказанной функцией - то откроется. То есть, можно исключить открытие торговли актором у других нпс, которым ты не хочешь выдавать возможность торговли. God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 13 Августа 2021 Всем привет, у меня такой вопрос. Допустим, есть некая функция: function f_name() local target = level.get_target_obj() if target and IsStalker(target) then local name = target:chracter_name() end end То есть, в переменную target мы поместили игровой объект и если этот объект - Сталкер, мы получаем его имя. Если вызывать из апдейта биндсталкер, все работает прекрасно, но если вызывать из файл: xr_motivator.script функция: function motivator_binder:death_callback(victim, who) То сама функция level.get_target_obj() работает как-то через раз. То есть, вызывая свою функцию из xr_motivator.script я подразумеваю, что она будет воспроизводиться всякий раз, когда гг убьёт непися. Так вот, при каждом убийстве непися актором, мне нужно получать имя убитого нпс. Но level.get_target_obj() в этом случае работает через раз, один раз возвращает объект и его имя, а другой - ничего. что подскажете, господа? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 13 Августа 2021 @Zander_driver 43 минуты назад, Zander_driver сказал: ГГ мог вообще гранату бросать за угол не глядя, что вам тогда вернет get_target_obj ? ничего, естественно. А существует возможность сделать проверку, что нпс умер именно от гранаты? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 14 Августа 2021 @dsh А как получить то, чем был нанес последний хит перед тем, как сохранить? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 15 Августа 2021 @dsh Слушай, а ведь в мультиплеере, при убийстве показывает кого и из чего убил, нельзя использовать это, для определения оружия (или хотя бы типа хита), которым был убит нпс? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 25 Августа 2021 Если я изменил в движке xrgame.dll (забиндил некоторые кнопки), как мне потом объединить его с XRE? Upd: я хочу перейти на движок 1.0007 со своими некоторыми правками, можно ли на него накатить XRE? Вот конкретней, что мне нужен. God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 26 Августа 2021 @macron А причем тут хекс? XRE ведь на ассемблере? А, все, дошло) Может, есть какой-то другой способ забиндить 6 кнопок, чтобы их можно было изменять в меню и остаться на XRE? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 22 Октября 2021 @macron у меня забиндены через кейлоггер, но их, увы, не поменяешь) God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 25 Ноября 2021 Всем привет! Возникла проблема, следующего рода: Я подключил ogse.dll, в _g.script следующим образом ------------------------------------------------------------------------------- -- OGSE.DLL -- ------------------------------------------------------------------------------- local dir = "$fs_root$" local ext_path = "bin\\extensions" local path = getFS():update_path(dir, ext_path) package.cpath = package.cpath..";"..path.."\\?.dll" local function IsDll(fname) return fname:sub(-4) == ".dll" end if type(init_external_libs) == "function" then init_external_libs() end if not lfs then fail("check lfs namespace") end for file in lfs.dir(path) do log1("file: "..file) if file ~= "." and file ~= ".." then if IsDll(file) then local mod = file:sub(1, -5) log1("--try to load " .. file) log1("fname: "..mod) local rez, msg = pcall(require, mod) if (not(not rez)) then log1("~~ loaded") else log1("!! error, msg : " .. tostring(msg)) end end end end ------------------------------------------------------------------------------- -- OGSE.DLL -- ------------------------------------------------------------------------------- В самое начало добавил RvP() - уже и не помню что это, но без него не работает. Суть такая, что на статике данная фишка работает. И только, в случае запуска не на статике имею следующий вылет: Expression : assertion failed Function : File : Line : 0 Description : extensions\ogse.dll Только сейчас проблему заметил, намекните, лечится? God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение
Labadal 68 Опубликовано 16 Декабря 2021 @naxac Я ещё установил какой-то пакет RvP, и в самом начале _g скрипта прописал RvP() - не помню, что это, но оно нужно. да, ogse.dll я сам брал из dsh мода. Нужна была функция, я кое-как подключил, спасибо dsh за советы. Моя задумка сработала, но потом я перешел на динамику, кое что потестить, и поймал вылет)) God save Hatsune Miku! Поделиться этим сообщением Ссылка на сообщение