borivit
-
Постов
20 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Календарь
Сообщения, опубликованные borivit
-
-
Как опубликовать свой плагин на fullrest? Когда я нажимаю добавить файл, то там нет возможности его загрузить на сайт или нужно его загрузить на сторонний ресурс, а потом просто указать ссылку?
-
6 часов назад, Марк К. Марцелл сказал:
Оригинальное дополнение не включено в репак. Будет версия форта от команды ТР - когда они его закончат.
Благодарю, получается я искал то чего нет:)
-
Я почему-то не могу найти форт огненой бабочки и даже в конструкторе найти не могу, может кто знает как найти его...
-
Здравствуйте, у меня возникает странная ошибка при перемещении вещей из инвентаря игрока в контейнер. Вот код:
local mumia_1 = tes3.getObject("A_RZZ_mumia_1") local equip = {} -- создаём новую пустую таблицу for i, node in pairs(tes3.player.object.equipment) do -- запоминаем id и ссылки на надетые на ГГ вещи equip[node.object.id] = node end for i, stack in pairs(tes3.player.object.inventory) do if (stack.object) then local obj_id = stack.object.id if (equip[obj_id] or string.find(obj_id,'Gold_')) then goto continue end tes3.transferItem{from=tes3.player, to=mumia_1.id, item=obj_id, count=stack.count, playSound=true} end ::continue:: end
Вот ошибка:
ЦитатаMorrowind has raised a warning with a lua stack trace: Not able to find Upper Leg part in c_m_pants_expensive_1_u_ul.
stack traceback:
[C]: in function 'transferItem'
.\Data Files\MWSE\mods\rzz_cwa\inventorysort.lua:75: in function 'cosort'
.\Data Files\MWSE\mods\rzz_cwa\main.lua:166: in function <.\Data Files\MWSE\mods\rzz_cwa\main.lua:165>Может кто знает в чем может быть дело. В оригинальной игре таких ошибок не возникает. Я вообще не понимаю при чем здесь mesh штанов т.к эти штаны не перемещаются, но они экипированы на игроке.
P.S.: Когда меняю файл меша, то ошибка исчезает...очень странно
P.S.2: Жаль что тема умерла...кстати с addItem вообще выкидывает из игры и даже не ясно почему.
-
В 02.10.2023 в 12:12 PM, borivit сказал:
У меня не создаются кнопки в скрол панели.
Отвечаю сам себе, может кому пригодится:)
Сделал вот такую функцию на базе той что написал mintmike:
Спойлерlocal this = {} this.new = function(name) -- функция, создающая новое окно и возвращающая нам его данные local m = { -- данные нашего нового окна id = tes3ui.registerID(name), ltext = ' Enter: ', block = {[1] = ''}, } m.menu = tes3ui.createMenu{id = m.id, fixedFrame = true} m.menu.alpha = 1.0 -- нулевая прозрачность m.show = function() -- отобразить окно m.menu:updateLayout() tes3ui.enterMenuMode(m.id) end m.hide = function() -- спрятать окно if not tes3ui.findMenu(m.id) then return end m.menu:destroy() if tes3ui.menuMode then tes3ui.leaveMenuMode() end end m.addBlock = function(n, width, ltext) -- добавить блок с номером n, шириной [и необязательным текстом надписи] m.block[n] = m.menu:createBlock{} m.block[n].width = width or 360 m.block[n].autoHeight = true m.block[n].childAlignX = 0.5 m.block[n].childAlignY = 0.5 m.block[n].flowDirection = 'top_to_bottom' if ltext then -- если указан 3 параметр - текст надписи, то добавляем её m.block[n]:createLabel {text = ltext} end end m.addBlockButton = function(n, buttext, func) -- добавить в блок номер n кнопку с текстом buttext local button = m.block[n]:createButton { id = tes3ui.registerID(buttext), text = buttext, } button:register("mouseClick", func) -- при нажатии на кнопку будет вызываться функция func end m.addScrollPane = function(n) -- добавить скрол-панель в блок с номером n local ThinBorder = m.block[n]:createThinBorder{} ThinBorder.flowDirection = "top_to_bottom" ThinBorder.width = width or 150 ThinBorder.height = height or 200 ThinBorder.childAlignX = 0.5 ThinBorder.childAlignY = 0.5 paneList = ThinBorder:createVerticalScrollPane{} paneList.widthProportional = 1.0 paneList.height = height or 200 end m.addScrollPaneBtn = function(buttext, func) --Добавляем кнопку в список local paneButton = paneList:createButton { id = tes3ui.registerID(buttext), text = buttext } paneButton:register("mouseClick", func) -- при нажатии на кнопку будет вызываться функция func end m.addScrollPaneTxt = function(buttext, func) --Добавляем текстовую кнопку в список local paneTextSelect = paneList:createTextSelect { id = tes3ui.registerID(buttext), text = buttext } paneTextSelect:register("mouseClick", func) -- при нажатии на кнопку будет вызываться функция func end return m -- возвращаем созданную таблицу с данными и функциями для нашего нового окна end return this
Теперь можно делать списки из кнопок:)
-
Здравствуйте, я снова с вопросом:)
У меня не создаются кнопки в скрол панели.
Это на базе вашей функции создающей окна.
Просто в конце ваше функции добавил этот код.
Спойлерm.addBlockPane = function(n) m.block[n]:createThinBorder{} m.block[n].flowDirection = "top_to_bottom" m.block[n].width = 250 m.block[n].height = 500 m.block[n].childAlignX = 0.5 m.block[n].childAlignY = 0.5 end m.addScrollPane = function(n) m.block[n] = m.menu:createVerticalScrollPane{} m.block[n].height = 400 end m.addScrollPaneBtn = function(n, buttext, func) local paneButton = m.block[n]:createButton { id = tes3ui.registerID(buttext), text = buttext } paneButton:register("mouseClick", func) end
А это я запускаю окно:
СпойлерMenuRZZ_4 = function() -- меню ингредиентов local width = 360 myMenuRZZ = win.new('myMenuRZZ') -- создадим новое окно myMenuRZZ.addBlock(1, width, "Чего желаеете?") -- добавим блок номер 1 myMenuRZZ.addBlock(2, width, "")-- добавим блок номер 2 myMenuRZZ.addBlockPane(2) myMenuRZZ.addScrollPane(2) myMenuRZZ.addScrollPaneBtn(2, 'Фильтровать', filter) myMenuRZZ.addScrollPaneBtn(2, 'Открыть все', abrirRZZ_3) myMenuRZZ.addBlock(3, width, "") myMenuRZZ.addBlockButton(3, 'Отмена', myMenuRZZ.hide) -- добавим в блок номер 3 кнопку назад myMenuRZZ.show() -- а теперь выведем окно end
Это функция которая должна вывести окно со скрол панелькой, но выводится только окно, в нем есть createThinBorder, createVerticalScrollPane - это тоже вроде есть в виде линии т.е. пустой список и соответственно кнопок нет. Я пробовал createTextSelect вместо createButton, но результат тот же. Может у меня есть ошибка. В логах ошибок нет.
-
Значит, я не зря сегодня скачал последнюю версию MFR:) завтра буду пробовать
P.S.: в последней версии все работает:)
-
Цитата
В доках есть примеры использования. Фильтр можно сделать так (это просто пример, я не проверял):
В доках оч. скупое описание того как сделать такой фильтр, попробую вашу идею:)
Сегодня пытался запустить мой плагин на сборке MFR3.2, но так и не смог заставить его сохранять данные и чтобы он не выдавал эту ошибку: Error in event callback: Data Files\MWSE\mods\rzz_cwa\main.lua:69: attempt to call field 'hasSpell' (a nil value)
local function addRZZSpell() --добавление заклинания RZZ local hasSpell = tes3.hasSpell({ reference = tes3.player, spell = "A_RZZ_Enter" }) --ругается на эту строку if (not hasSpell) then tes3.addSpell({ reference = tes3.player, spell = "A_RZZ_Enter" }) end end
И что самое итересное - на стандартной игре все работает великолепно. Я ничего не понимаю, может у вас возникнут идеи почему так выходит...
P.S.: Я так понял что данные не сохраняет из-за этой ошибки, но в чем там ошибка...
-
Доброе утро. Глюки я вылечил:) Но появился вопрос как правильно использовать функцию tes3ui.showInventorySelectMenu
Идея такая, нужно показать в контейнере только те ингредиенты которые имеют определенный магический эффект, но у меня ничего не заработало. Если можно, сделайте пример.
И еще, можно ли добавить закладки в инвентарь контейнера? И если да, то будут ли они прокручиваться, если их много? И как их добавить?
-
Цитата
Благодарю:)
Я пытаюсь поставить пометку и после телепортировать главного героя, но пометка телепортируется вместе с ним. Как это можно исправить?
12 часов назад, borivit сказал:Я пытаюсь поставить пометку и после телепортировать главного героя, но пометка телепортируется вместе с ним. Как это можно исправить?
Вопрос снят:) Сделал свою пометку и теперь не портит стандартную пометку.
Теперь мой плагин полностью работает на lua за исключением запрета активации некоторых предметов т.к. это удобнее через конструктор.
Благодарю вас за помощь:) Если возникнут еще вопросы, то буду писать сюда:)
P.S.: Интересный глюк нарисовался, я когда открываю контейнер через свое меню и беру оттуда предмет, то после закрытия контейнера мое меню уже не открывается, а просто открывается контейнер, а когда возвращаешь предмет на место, то после закрытия контейнера опять начинает открывается мое меню.
-
Рассказываю что у меня получилось:)
1. Заменить меню контейнера на свое при его активации
local function eActivate(e) if (e.target.object.id == "A_RZZ_chest_tomb") then if (not RZZ_activate) then timer.delayOneFrame(function() if tes3ui.menuMode then tes3ui.leaveMenuMode() end --закрываем контейнер myMenuShow() --Открываем меню end) return false end RZZ_activate = nil --метка активации контейнера end end event.register("activate", eActivate)
2. Открыть контейнер при нажатии кнопки своего меню
local function abrirRZZ() local tomb = tes3.getReference("A_RZZ_chest_tomb") cerrarMenu() --закрываем свое меню timer.delayOneFrame(function() RZZ_activate = true --метка активации контейнера tes3.player:activate(tomb) --открываем контейнер end) end
3. Убрать helpMenu т.е. окошко всплывающее при наведении прицела на предмет
local function onUIObjectTooltip(e) if string.find(e.reference.id,'muestra') then --выборка нужных предметов e.tooltip.absolutePosAlignX = 4 e.tooltip.absolutePosAlignY = 4 else e.tooltip.absolutePosAlignX = nil e.tooltip.absolutePosAlignY = nil end end event.register("uiObjectTooltip", onUIObjectTooltip)
Теперь оталось выяснить как отследить запуск заклинания, как запустить проклятие, как остановить выполнение заклинания, как телепортироваться в нужное место и тогда я свой плагин полностью переведу на lua:)
-
Цитата
Например, перемещать или сделать disable предметы, а по нажатии кнопки снова переместить или enable. Кстати, при удалении вещей из контейнера/инвентаря, лучше делать это в следующем кадре (меньше шансов вылета на рабочий стол):
Это не совсем то что я имел ввиду. Видимо я не правильно изложил вопрос. Мне нужно при активации контейнера получить вместо окна с содержимым контейнера, мое окно с кнопками.
Я здесь нашел такую функцию:
local tomb = tes3.getReference("A_RZZ_chest_tomb") --контейнер tes3.player:activate(tomb) --открывает содержиме контейнера
это работает как activate в tes3 конструкторе, но у меня не получается запретить показ или закрыть меню с содержимым при стандартной активации т.е. как отследить меню контейнера при его активации и сразу же его закрыть? или может можно его запретить по событию? Кстати -> myObject:clearActionFlag(flagIndex) - это не помогло.
И я никак не могу понять как правильно заполнять поле buttons и callbackParams
tes3ui.showMessageMenu({ id = ..., buttons = ..., callbackParams = ..., cancels = ..., cancelText = ..., cancelCallback = ..., header = ..., message = ..., customBlock = ..., page = ..., pageSize = ... })
ЦитатаКак удобно распечатать таблицу, чтобы посмотреть все содержимое, все ключи и значения? Есть удобная функция deepToString(value, maxDepth) для распечатки в лог содержимого таблицы (взято из OpenMW util.lua)
Благодарю, еще не попробовал, но обязательно испытаю:)
Как работает menu:destroy? Я почему-то не могу найти описания. Я заметил что когда запущено мое меню и меню контейнера, то если я закрываю свое меню, закрывается и меню контейнера.
P.S.: я нашел описание myObject:destroy(), но мне это не очень помогло, я так понимаю что вместо myObject нужна переменная с объектом окна, но как найти id окна контейнера, а потом получить его объект я пока незнаю или может я не в ту сторону копаю.
-
В 9/18/2023 в 8:35 PM, mintmike сказал:
Не находит armorWeightClass, должно быть просто weightClass
Завтра буду дома, попробую. Но у меня такая же история и с weaponType хотя здесь проще т.к. почти все id имеют указание на тип оружия и можно просто искать нужное через id.
P.S.: А можно ли как-то вытянуть все значения и ключи относящиеся к объекту? Чтобы можно было увидеть какие есть у объекта свойства и соответственно тогда будет понятно как их узнать.
P.S.S.: Только что до читался что через for можно посмотреть все ключи и значения. Завтра попробую. О результатах напишу.
Всех приветствую.
С weightClass заработало:) а для оружия нужно писать просто type.
Это не совсем по теме, но может вы знаете как отключить показ названия и характеристик оружия. Я доступ отключил, а название и характеристики не получается отключить.
ЦитатаP.S.S.: Только что до читался что через for можно посмотреть все ключи и значения. Завтра попробую. О результатах напишу.
Ничего с этой затеей не вышло т.к. pairs нельзя запускать внутри pairs.
У меня есть еще одна маленькая проблемка. Хочу сделать создание объекта при активации другого объекта, а потом при активации того же объекта удалить созданный объект, но lua почему-то ругается на createReference хотя 1н раз объект создается и 1н раз он удаляется, а потом уже ничего не создается.
local function basurero(e) if (e.target.object.id == "A_RZZ_active_bell_01") then if (saco == nil) then local cell = tes3.getPlayerCell() local vector_pos = tes3vector3.new(-346, 250, 25) local vector_orient = tes3vector3.new(0, 0, 25) basura = tes3.createReference{object="A_RZZ_basura", position=vector_pos, orientation=vector_orient, cell=cell} saco = true else saco = nil tes3.deleteObject(basura) end end end event.register("activate", basurero)
Ошибку выдает такую: invalid 'object' parameter privided
В 9/19/2023 в 7:47 PM, borivit сказал:Ошибку выдает такую: invalid 'object' parameter privided
Я так понимаю что удаляется полностью объект и потому выдает эту ошибку. В tes3 конструкторе для точно такой же операции(placeAtPC) я использовал disable и setdelete, а здесь я нашел только disable, а setdelete нет или может я не увидел.
P.S.: я нашел в tes3reference - myObject:delete() там пишут что ссылка помечается как удаленная и потом полностью удаляется - это похоже на setdelete в tes3. Завтра буду пробовать.
В 9/19/2023 в 9:51 PM, borivit сказал:P.S.: я нашел в tes3reference - myObject:delete() там пишут что ссылка помечается как удаленная и потом полностью удаляется - это похоже на setdelete в tes3. Завтра буду пробовать.
Это сработало. Вместо tes3.deleteObject(basura) я вставил basura:delete() и теперь все работает
Как через lua запретить показ содержимого контейнера, а потом показать это содержимое после нажатия кнопки в меню?
-
Здравствуйте, если еще есть кто живой в этой теме, то может быть он мне поможет разобраться.
Я перебираю объекты в инвентаре, выбираю там броню и пытаюсь узнать класс брони(легкая, средняя, тяжелая), но у меня в результате выдает nil. Может кто может мне объяснить что я делаю не так.
for i, stack in pairs(tes3.player.object.inventory) do if (stack.object) then if (stack.object.objectType == tes3.objectType.armor) then tes3.messageBox{ message = "armorClass=" .. tostring(stack.object.armorWeightClass)} end end end
Быстрый вопрос - быстрый ответ по ПЛАГИНАМ
в TES III: Плагины
Опубликовано
Благодарю