borivit Опубликовано 25 сентября, 2023 Жалоба Поделиться Опубликовано 25 сентября, 2023 Доброе утро. Глюки я вылечил:) Но появился вопрос как правильно использовать функцию tes3ui.showInventorySelectMenu Идея такая, нужно показать в контейнере только те ингредиенты которые имеют определенный магический эффект, но у меня ничего не заработало. Если можно, сделайте пример. И еще, можно ли добавить закладки в инвентарь контейнера? И если да, то будут ли они прокручиваться, если их много? И как их добавить? Ссылка на комментарий Поделиться на другие сайты Поделиться
mintmike Опубликовано 25 сентября, 2023 Автор Жалоба Поделиться Опубликовано 25 сентября, 2023 (изменено) 10 часов назад, borivit сказал: tes3ui.showInventorySelectMenu. Идея такая, нужно показать в контейнере только те ингредиенты которые имеют определенный магический эффект В доках есть примеры использования. Фильтр можно сделать так (это просто пример, я не проверял): local function ingredientEffectFilter(e) if e.item.objectType == tes3.objectType.ingredient then local effects = e.item.effects local fire = tes3.effect.fireDamage for i = 1,#effects do if effects[i] == fire then return true end end end return false end 10 часов назад, borivit сказал: можно ли добавить закладки в инвентарь контейнера? И если да, то будут ли они прокручиваться, если их много? И как их добавить? Вкладки в инвенрать можно посмотреть как пример в моде UI Expansion, но помнится, работал он плохо Изменено 25 сентября, 2023 пользователем mintmike Ссылка на комментарий Поделиться на другие сайты Поделиться
borivit Опубликовано 25 сентября, 2023 Жалоба Поделиться Опубликовано 25 сентября, 2023 (изменено) Цитата В доках есть примеры использования. Фильтр можно сделать так (это просто пример, я не проверял): В доках оч. скупое описание того как сделать такой фильтр, попробую вашу идею:) Сегодня пытался запустить мой плагин на сборке 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.: Я так понял что данные не сохраняет из-за этой ошибки, но в чем там ошибка... Изменено 26 сентября, 2023 пользователем borivit Ссылка на комментарий Поделиться на другие сайты Поделиться
mintmike Опубликовано 26 сентября, 2023 Автор Жалоба Поделиться Опубликовано 26 сентября, 2023 В той старой версии mwse просто ещё нет tes3.hasSpell() Ссылка на комментарий Поделиться на другие сайты Поделиться
borivit Опубликовано 26 сентября, 2023 Жалоба Поделиться Опубликовано 26 сентября, 2023 (изменено) Значит, я не зря сегодня скачал последнюю версию MFR:) завтра буду пробовать P.S.: в последней версии все работает:) Изменено 27 сентября, 2023 пользователем borivit Ссылка на комментарий Поделиться на другие сайты Поделиться
borivit Опубликовано 2 октября, 2023 Жалоба Поделиться Опубликовано 2 октября, 2023 (изменено) Здравствуйте, я снова с вопросом:) У меня не создаются кнопки в скрол панели. Это на базе вашей функции создающей окна. Просто в конце ваше функции добавил этот код. Спойлер 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, но результат тот же. Может у меня есть ошибка. В логах ошибок нет. Изменено 3 октября, 2023 пользователем borivit Ссылка на комментарий Поделиться на другие сайты Поделиться
borivit Опубликовано 3 октября, 2023 Жалоба Поделиться Опубликовано 3 октября, 2023 (изменено) В 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 Теперь можно делать списки из кнопок:) Изменено 3 октября, 2023 пользователем borivit Ссылка на комментарий Поделиться на другие сайты Поделиться
borivit Опубликовано 7 января Жалоба Поделиться Опубликовано 7 января (изменено) Здравствуйте, у меня возникает странная ошибка при перемещении вещей из инвентаря игрока в контейнер. Вот код: 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 вообще выкидывает из игры и даже не ясно почему. Изменено 8 февраля пользователем borivit Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти