-
Постов
632 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Трекер ошибок
Магазин
Галерея
Сообщения, опубликованные worm
-
-
Завтра проверю на Аренке и выложу
В принципе сами можете поправить в файле ..\InstanceManager\Scripts\InstanceManager.lua
строка 167
было
if eventName == "Арена смерти" then
должно быть
if eventName == "Арена Смерти" then
Буковка "С" должна быть написана кириллицей (русские буквы)
-
-- Берем пареметры окна local posConverter = widgetsSystem:GetPosConverterParams() -- Делаем масштабирующий коэф для на шаших координат local ScaleX = posConverter.realSizeX/posConverter.fullVirtualSizeX local ScaleY = posConverter.realSizeY/posConverter.fullVirtualSizeY if xx > x then --p.posX = x+dx --p.posX = x-r.x1 p.posX = r.x1-p.sizeX*ScaleX --p.posX = p.sizeX+r.x1 else p.posX = x - dx - p.sizeX --p.posX = x1 - p.sizeX end if yy > y then --p.posY = y+dy p.posY = r.y1 - p.sizeY*ScaleY else --p.posY = y - dy - p.sizeY p.posY = r.y2 - p.sizeY*ScaleY end w:SetPlacementPlain(p) end
Нашел решение проблемы. Всетаки можно сделать корректирующие коэффициенты при изменение масштаба)
-
Нашел ошибку в кнопочках. теперь они светятся) так здорово)) завтра уже буду тестить доп функции) жалко времени совсем мало(
-
Спасибо. Только вроде в функции они перезаписываются именно с таким выравниваем.( Завтра на работе на свежую голову гляну + начну писать скриншотирование и вывод в файл. там вроде простенько
-
А что значит align=4
я просто запускаю функцию снова и он поидеи ловит снова центр экрана ширину координату и тд и все пересчитывает. Хех завтра на работе поковыряю ДнД
-
function wtChain(w, wBase, dx, dy) --LogToChat(dx..":".. dy) local p, r = w:GetPlacementPlain(), wBase:GetRealRect() local xx, yy = getScreenSizeCenter() p.alignX = WIDGET_ALIGN_LOW_ABS p.alignY = WIDGET_ALIGN_LOW_ABS local x, y = (r.x1 + r.x2)*0.5, 0.5*(r.y1 + r.y2) --- центр берем у базы ---LogInfo(x,":",y, " xx:y",xx, ":", yy) if xx > x then --p.posX = x+dx --p.posX = x-r.x1 p.posX = r.x1-p.sizeX --p.posX = p.sizeX+r.x1 else p.posX = x - dx - p.sizeX --p.posX = x1 - p.sizeX end if yy > y then --p.posY = y+dy p.posY = r.y1 - p.sizeY else --p.posY = y - dy - p.sizeY p.posY = r.y1 end w:SetPlacementPlain(p) end
А вот такой вопрос. Замучился уже(. Код у розочки взял. Поправил строки некоторые. и по Y при изменение разрешения длины окна все нормально стало Но по Х при изменение экрана зверски всеже прыгает аддон(
уж незнаю что делать(
Причем если не отрицательное то есть сдвиг вправо то норм работает(
Хотя нет тоже глючит. Наверное недостаточно просто брать 1 координату и вычитать другую( Надо еще перемножать на коэф Масшатбирования. Но где его взять. или можно самому как получить математически? я Бы по логике вычислил но при изменение мастаба ширина в цифиркахлюбого элемента остается прежней. соотв нельзя взять что было что стало и поделить(
Пробовал обойтись без этого добавить
как ребенка свой аддон в системный
ContextPlayerTrade:AddChild( MainPanel )
т.е. расширить его и ужу в самом системном отпозиционировать но все расширяется кроме главного окна и он не может двигаться(
-
NUMBERS
Спасибо)) а я туда и ссылку на файл фильтр пихал и сам код ))
Ребята спасибо за помощь. Правда трудно понять хотя признаюсь иногда очень туплю и довольно глупые вопросы задаю
-
Вот я пенек дубовый а ведь точно)
string.find
вернет позицию и если смешанная строка то придется проверять какая именно позиция. Причем если первыми цифры шли а в конце буква то это еще гемор.
а это
textEditLine = tonumber( textEditLine )
вернет или цифру или nil а нил мы отрубим. Причем эта штука еще и пробелы обрезает
Уряя хоть немного успокойлся.
Спасибо вам огромное))))
завтра на работке попробую сделать скриншоты на согласие покупки с опцией включения и еще тоже само только логирование в файл.. И минимум функционала готово будет)
Тогда уже подумать можно будет и об панельки с другой стороны торговли)) и о фильтре нормальном
Елки Гениально все))
а Кстати чтобы лог файла в собственный аддон шел ведь можно как то сделать? там в доках сказано следующие
Выводит список строк в консоль/чат с префиксом "script: ". Переданные строки объединяются в одну. В качестве аргументов можно передавать как нелокализованные, так и локализованные строки.
Параметр filter определяет фильтр логирования - если он не включен соответствующими командами (см. DebugGame), команда будет проигнорирована.
Можно использовать глобальную переменную luaLogInfoShowAddonPath (см. DebugGame) для включения/выключения вывода пути до аддона.
где это DebugGame
и также сказано что в чат выводить может. Но на деле это тупо отсылает в mods.txt. Может что то надо настроить7 или это все отрубили?
-
Да я и по твоему примеру вводил он писал на "a" тоже самое про функцию а на "b" и "number" что nil
-- Функция получения данных из поля ввода "TextLineInput" и кнопки "MathBtn" аддона function GetDataItem() for i = 0, 4 do -- Смотрим Текстовое поле и данные из него загоняем в массив "wtEdit[ i ]" (точнее тут детей строки ввода смотрим) wtEdit[ i ] = mainForm:GetChildChecked( "TextLineInput"..tostring( i ), true ) --textTextLineInput[ i ] = userMods.FromWString( wtEdit[ i ]:GetText() ) -- Тут берем текст из виджета "TextLineInput" который находится в массиве "wtEdit[ i ]" и переводим его из локализованного текста в нормальный local textEditLine = userMods.FromWString( wtEdit[ i ]:GetText() ) --[[ textEditLine = string.match (textEditLine, '%s([0-9])') LogInfo( " textEditLine=", textEditLine ) ]] --[[ local textEditLine = string.gfind (textEditLine, '%s([0-9]*)') --textEditLine = tonumber( textEditLine ) LogInfo( " textEditLine=", textEditLine ) ]] -- Задаем логическую операцию. Если текстовое поле пустое то присваеваем "0" если нет то передаем данные. Это нужно чтобы выполнялись матемаческие операции -- Передаем обработанные данные в массив "textTextLineInput[ i ]" if textEditLine == "" then textTextLineInput[ i ] = 0 else textTextLineInput[ i ] = textEditLine end -- Тут смотри состояние кнопки "MathBtn" (0-умножить сумму на стек или 1-сумма равна стеку) wtMathBtn[ i ] = mainForm:GetChildChecked( "MathBtn"..tostring( i ), true ) stateMathBtn[ i ] = wtMathBtn[ i ]:GetVariant() end -- Запускаем функцию обработки данных. Должна будет считать данные с аддона и с торгового фрейма по операции с кнопки "MathBtn" -- ПОКА тут отключим так как запустим в функции по считке данных с торговой формы --MathItem() end
-
угу нашел в луа
он вывел nil
т.е. это не циферки(
по аналогии
textEditLine = type( textEditLine )
он мне выдал функция. И тут совсем тупой вопрос. как заглянуть в функцию? ведь в фунции есть как минимум 2 черты это те данные что нужно задать и то что она возвращает
-
Применил
local textEditLine = string.gfind (textEditLine, '%s([0-9]*)') LogInfo( " textEditLine=", textEditLine )
и выводит
Info: addon TradeManager: 2013-02-17 14:36:14: textEditLine=function: 401C5FD8
Вопрос возник а как посмотрть что это такое?
function: 401C5FD8
какое это значение?
-
.И что же делать?(
в принципе пофиг на события вызывающие работу аддона. Пофиг что он по экрану как цветок в проруби болтается. Но если юзер начинает писать буквы вместо текста то аддон естественно не может сложить букву и цифру и начинает спамить.
Нет конечно можно овсем извращенно подойти к решению проблемы. Это брать строку смотреть ее длину и поэтапно каждый символ строки перебирать на
local resAccept = string.find (val, "0") local resAccept = string.find (val, "1")
и если есть хотя бы 1 не nill значение то идти дальше и так по всей строке?
но это же извращение
-
На данный момент вот что имеем
И это работает при условии что не будут вводить буквы вместо цифр
что не принципиально где расположен аддон и что окно торговли на старом месте
что работает по таймеру а не по событию начала конца торговли(
эти недочеты очень печалят( Никак не могу исправить их. уже все перепробовал перетыкал(
-
--[[ local ContextPlayerTradeW = ContextPlayerTrade:GetChildChecked( "GoldEditLine", true ) local nameA = ContextPlayerTradeW:GetInitialGlobalClass() wtTextLineInput:SetGlobalClasses( nameA ) local names = {} names[1] = "RedColor" names[2] = "Font20" wtEditLine:SetGlobalClasses( names ) ]]
Хотел применить шаблон и опять ругается((
function wtChain(w, wBase, dx, dy)
Использовал это. сответственно тут выходит что при изменение экрана на больше меньше. Виджет как ненормальный прыгает по всемуу игровому пространству(
-
Поскольку не получается фильтр подсоединить хотел хоть отсеять лишнее и опять таки ругается(
textEditLine = string.match (textEditLine, '%s([0-9])') LogInfo( " textEditLine=", textEditLine )
x: (где x - соответствует сам себе. (Он не может быть равен ни одному из волшебных символов ^$()%.[]*+-?)..: (точка) соответствует любому символу.
%a: соответствует любой букве.
%c: соответствует любому управляющему символу.
%d: соответствует любой цифре.
%l: соответствует любой букве в нижнем регистре.
%p: соответствует любому символу пунктуации.
%s: соответствует любому пробельному символу.
%u: соответствует любой букве в верхнем регистре.
%w: соответствует любому алфавитно-цифровые символу.
%x: соответствует любой шестнадцатеричной цифре.
%z: соответствует символу с представлением 0.
%x: (где x - любой не алфавитно-цифровой символ), соответствует сам себе. Это - стандартный способ экранировки волшебных символов. Лучше следить за тем, чтобы любому символу пунктуации (даже не "волшебному") предшествовал '%', когда этот символ применен в шаблоне.
[set]: соответствует любому символу из набора, заданного в set. Диапазон символов может быть определен, с помощью символа '-' отделяющего начало и конец диапазона. Все символьные классы %x описанные выше, могут использоваться как компоненты в наборе. Все другие символы в наборе представляются как есть. Например, [%w_] (или [_%w]) соответствует любому алфавитно-цифровому символу или символу подчеркивания, [0-9] соответствует любой десятичной цифре, и [0-9%l%-] соответствует любой десятичной цифре или любой букве в нижнем регистре или символу дефиса '-'.
Взаимодействие между диапазонами и классами не определено. Поэтому, наборы подобные [%a-z] или [a-%%] не имеют никакого значения.
[^set]: Отрицательный набор символов. Соответствует любому символу, кроме тех, что заданы в наборе set. Содержимое набора интерпретируется аналогично описанному выше [set].
Для всех классов, представляемых одиночными символами (%a, %c, и т.п.), соответствующая прописная буква представляет отрицание класса. Например, %S представляет все НЕ пробельные символы.
Представления символа, пробела и других символьных групп зависят от текущих региональных установок. В частности, класс [a-z] не эквивалентен %l.
Элемент шаблона:
Элементом шаблона может быть
Одиночный символьный класс, который соответствует любому одиночному символу из заданного класса;
Одиночный символьный класс, сопровождаемый '*', что соответствует 0 или большему количеству повторений символов из заданного класса. Эти элементы повторения будут всегда соответствовать самой длинной возможной последовательности.
Одиночный символьный класс, сопровождаемый '+', что соответствует 1 или большему количеству повторений символов из заданного класса. Эти элементы повторения будут всегда соответствовать самой длинной возможной последовательности.
Одиночный символьный класс, сопровождаемый '-', что также соответствует 0 или большему количеству повторений символов из заданного класса. В отличие от *, элементы повторения будут всегда соответствовать самой короткой возможной последовательности;
Одиночный символьный класс, сопровождаемый '?', что соответствует 0 или единственному вхождению символа из заданного класса;
%n, при n от 1 до 9; такой элемент равняется n-й зафиксированной подстроке (см. ниже);
%bxy, здесь x и y - два различных символа. Такой элемент соответствует строкам, которые начинаются с x, заканчиваются на y, и в них сбалансированы x и y. Это означает, что, если читать строку слева направо, подсчитывая +1 для x и -1 для y, то последний y является первым y, для которого счетчик равен 0. Например, элемент %b() соответствует выражениям со сбалансированными круглыми скобками.
Шаблон:
Шаблон представляет собой последовательность описанных выше элементов. Символ '^' в начале шаблона, говорит о том, что заданная последовательность начинается с начала строки. Символ '$' в конце шаблона, говорит о том, что заданной последовательностью строка заканчивается. Символы '^' и '$', размещенные в других местах шаблона, не имеют никакого специального значения и представляются как есть.
И нефига
пишет
Error: addon TradeManager: Error while running the chunkError: addon TradeManager: [string "Mods/Addons/TradeManager/Scripts/TradeManager.lua"]:158: attempt to call field `match' (a nil value)
Error: addon TradeManager: func: match, field, line: -1, defined: C, line: -1, [C]
Error: addon TradeManager: func: GetDataItem, global, line: 158, defined: Lua, line: 149, [string "Mods/Addons/TradeManager/Scripts/TradeManager.lua"]
-
Спасибо)) помогло немного)
А фильтром как Быть? Никто не знает как подключить7(
-
а еще вопрос. Как можно приклеить свой аддон с стандартному окну в игре? делаю чтото на подобие этого. Т.е. получить координаты окна. и приплюсовал чтото передать в свой аддон
-- Получили координаты расположения объекта local placeBuyTrade = ContextPlayerTrade:GetPlacementPlain() -- Считаем новые кординаты для последующего виджета --placeBuyTrade.posX = 40 --placeBuyTrade.posY = 40 -- Получили координаты расположения объекта local place = ContextPlayerTrade:GetPlacementPlain() -- Считаем новые кординаты для последующего виджета place.posX = placeBuyTrade.posX + 40 place.posY = placeBuyTrade.posY + 40 -- Задаем полученные координаты новым виджетам MainPanel:SetPlacementPlain(place)
Но изначально окно торговли находится по центру и координаты Х и У у него равны 0
и еще ругается что передаю какие то пустые значения((
Конечно можно статически подогнать к нужному месту но при изменение разрешения или еще по каким либо причинам все съедит наверное(
-
я сам папонт древний))
-
Ребят помогите с подключением DnD библиотеки . Ведь она отвечает за перемещение по экрану?
Есть код подключения в 2х вариациях
DnD:Init( 527, mainForm:GetChildChecked( "ListButton", true ), mainForm:GetChildChecked( "ListControl", true ), true )
или
MainPanel:DragNDrop( true, 680, nil, true, false )
где
function TWidget:DragNDrop( bDraggable, ID, wtMovable, bUseCfg, bLockedToScreenArea, Padding ) if self.Widget then self.bDraggable = bDraggable if ID then DnD:Init( ID, self.Widget, wtMovable, bUseCfg, bLockedToScreenArea, Padding ) else DnD:Enable( self.Widget, bDraggable ) end end
Собственно
это необходимые данные для передачи
function DnD:Init( ID, wtReacting, wtMovable, fUseCfg, fLockedToScreenArea, Padding )
где
ID, - произвольный инд номер аддона
wtReacting - реакция в виджите на клик мыши
wtMovable, - тот виджет что та форма что будет перемещатся и все то что в ней соответственно тоже
fUseCfg - просто непонятная херня. все пишут true
И я не могу понять в чем проблема
если делаю так например привязавшись к кнопки закрытия то работает
DnD:Init( 527, mainForm:GetChildChecked( "ButtonCornerCross", true ), mainForm:GetChildChecked( "MainPanel", true ), true )
и это не лучший вариант
но если делаю так
MainPanel:DragNDrop( true, 680, nil, true, false )
то скорее всего выходит гдето не реагирую на реакцию мышки
Вопрос. я не прописал гдето в файле реакцию. или гдето был создан виджет с реакцией или что.?
Мне бы хорошо перемещать всю панель зажав мышку на ней а не конкретно в области кнопки.
Или гдето была создана прозрачная кнопка под панелью и щелкая по панели срабатывает с нее реакция на мышь?
-
Так и не понял ничего про фильтр( не подключается(
-
Ммм сейчас гляну... Но если честно не уверен что пойму. Розочка у тебя немного сложноваты аддоны в игре и в коде запутаться легко(
Сетрас очень помог. много объяснил. Почти все готово. Осталось только фильтр этот сделать. и понять как Библиотеку днд использовать чтобы перемещать. и еще понять точнее это понятно что при наведение мыши реакция включает текстуру с прозрачностью и создается эффект свечения но непонятно где ошибка.
Вот но самое главное фильтр.(
Вообще столько интересных знаний появилось)) сейчас добью этот аддончик и перелопачу те 2)
-
Ребят надо фильтр присобачить к строке ввода
Вот нашел в доках
<?xml version="1.0" encoding="UTF-8" ?> <UITextFilter> <ranges> <Item> <minChar>0</minChar> <maxChar>9</maxChar> </Item> </ranges> <isAllowObject>false</isAllowObject> </UITextFilter>
Файл создал с названием EditLineTextFilter.(UITextFilter)
Как его присоединить? или вообще как навести фильтр?
-
Понять бы самому что конкретно там не пашет( Ладно это можно и под конец отложить. Теперь главное с текстовой формой разобраться
Еще с деланна кнопочка при наведение не загорается( Видимо что-то с прозрачностью надо делать. Но это все украшательства. Сначала хочу понять саму механику работы форм
-
А как организовать перетаскивание панельки? Смотрю ДПСметр там всего 1 функция на библиотеку с ДНД. а это поидеи и позволяет все перетаскивать. и вот нефига не работает(
InstanceManager (free)
в Техподдержка
Опубликовано
поправил.