Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
-
Постов
3 118 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Магазин
Галерея
Весь контент icreator
-
видео качаю на ютуб - скоро будет. сами билды аддон не запоминает - только раскладку действий на быстрой панели и 2-х доп панеля
-
бегала мелким персом по квестам и поняла что есть неудобство, поэтому сделала новую фишку: SHORT PANEL на ней отражается общее количество юнитов вокруг вас, разделенное на 6 категорий: Враг-игрок моб для квеста моб-агресивный моб-нейтральный игрок-нейтральный игрок-друг причем если кликнуть мышкой по панели опредленного типа категории, то в цель будет взят юнит из этой категории. повторное нажатие - перебор (взятие в цель поочереди) всех юнитов этой категории вокруг вас. Данную панель можно убрать или опять показать - если связать с аддоном EAP - по нажатию кнопки на панели быстрых клавиш (не мышкой а пальчиком) размеры, цвета, фонты панели можно настраивать в GUI_user.lua
-
в настройках сделай чтобы имя по центру выводило
-
а блин я не читала... мучалась день - все никак понять не могла почему выделения не делает ...
-
прикол в том что невозможно чисто программным путем выбрать цель для игрока!!!! avatar.SelectTarget( id ) несрабатывает! только если ты нажмешь на кнопку МЫШКОЙ, которая вызовет "реакцию" виджета и только после этого цель будет переназначена... блин гады
-
так написано же что продление 6мес. хотя это не значит что она через 6 мес перестанет работать ))) мож 2 года будет все норм работать а смысл убирать увеличение если он в цели? я не заметила неудовств
-
-
а обработчик нажатий на виджет (реакций виджета) и функция открывание виджета из меню будут такие: ---- пример как использовать библиотеку Script.LIB --- на примере создания окна из аддона AucEDSman local wtMainPanel, wtMess, wtStatusLine, wtRun, wtStop, wtClose, wtRandInput, wtCheck local function showMPanel() wtMainPanel:Show ( not wtMainPanel:IsVisible()) end --- какие реакции у виджетов, созданых через описателив dsc можно посмотреть в файде AddonsTools/Scripts/menuCls3.lua --- тут обрабатывам только нажатие мышки onReact.mouse_left_click = function ( pars ) local name = pars.widget:GetName() local IID = pars.widget:GetInstanceId() if false then elseif IID == wtRun:GetInstanceId() then wtSetVal( wtStatusLine, L("I'd go to RUN")) elseif IID == wtStop:GetInstanceId() then wtSetVal( wtStatusLine, L("I'd STOP")) elseif IID == wtClose:GetInstanceId() then showMPanel() elseif IID == wtCheck:GetInstanceId() then local b = pars.widget:GetVariant() == 1 if pars.widget:GetVariantCount() > 1 then pars.widget:SetVariant( b and 0 or 1 ) end wtSetVal( W("cristal_txt", wtMainPanel), "in CRI" .. ( b and "+++" or "---" ) ) end end получим вот такой виджет:
-
допустим сама инициализация виджета будет такая: --- создадим виджет на лету из описаний виджетов local function widgetInit() local w, wBase, n, p, pBase, txt wtMainPanel = WCD(dsc.Menu, "MainPanel" , nil, { sizeX = 300, sizeY = 300}, false ) w = wtMainPanel --- зададим ДнД - без указания оригинального номера - благодаря DnD_ic.lua DnD:Init(w, w, true ) wtMess = WCD(dsc.Text, "Mess", w, { alignX = 3, posX=35, highPosX = 35, sizeY = 100, alignY = 2 }, true ) wtMess:SetMultiline( true ) wtMess:SetWrapText( true ) wtMess:SetEllipsis( false ) wtStatusLine = WCD(dsc.Text, "StatusLine", w, { alignX = 3, posX=15, highPosX = 15, sizeY = 30, alignY=1, highPosY=60 }, true ) --- wtSetVal - функция определяет тип виджета по концовке в названии: _txt(по умолчанию) _btn _chk _mnu и т.д. -see in ScriptLIB --- и присваивает значение в соотсвествии с типом wtSetVal(wtMess, L("type any message here ... its a mess khk jh kjhkjhkjhk hkjh kjhkjh kjh kjhkjh kj")) wtSetVal(wtStatusLine, "this is STATUS LINE") wtRun = WCD(dsc.Button, "Run_btn", w, { alignX = 0, posX = 20, alignY=1, highPos=20}, true ) wtSetVal(wtRun, L("RUN")) wtStop = WCD(dsc.Button, "Stop_btn", w, { alignX = 1, highPosX = 20, alignY=1, highPos=20}, true ) wtSetVal(wtStop, L("STOP")) wtClose = WCD(dsc.ButtonCornerCross, nil, w, nil, true ) wtRandInput = WCD(dsc.EditLineNum,"RandInput_eld", w, { alignX = 0, posX = 20, alignY=0, pos=30}, true ) wtSetVal(wtRandInput, "2") n = WCD( dsc.Check, "cristal_chk", w, { posX = 20, posY = 40}, true ) n:SetVariant( 1 ) wtCheck = n wBase = n n = WCD( dsc.Text, "cristal_txt", w, { posX = 20, posY = 40, sizeX = 100, sizeY = 30}, true ) n:SetFormat(ToWS("<html alignx='left' fontsize='14'><r name='value'/></html>")) wtSetVal(n,L("in CRI")) --- прицепляет к заданному виджету (как к базе) - чтобы на надо было следить за его положением. --- See also wtChain, wtAttach, wtAttRight, wtAttLeft wtAttRight( n, wBase, 5 ) n = WCD(dsc.Text, "calcCost_txt", w, { sizeX = 200, sizeY = 30, posX = 50, alignX = 0 }, true) wtAttach(n, wtCheck, 0, 30) n:SetFormat(ToWS("<html alignx='center' fontsize='16'><r name='rate1'/>" .. "<body fontsize='14'><r name='rate1m'/></body>" .. " / <r name='rate2'/>" .. "<body fontsize='14'><r name='rate2m'/></body>" .. "</html>" )) n:SetVal("rate1", ToWS( "3" ) ) n:SetVal("rate1m", ToWS( 14 .."" ) ) n:SetVal("rate2", ToWS( "".. 22 ) ) n:SetVal("rate2m", ToWS( "01" ) ) end
-
если вы хотите свой виджет создать и ловить нажатия кнопок по нему то нужно добавить в конец иницализации CUI создание этого виджета и задать обработчик для реакций виджетов: widgetInit() RegisterReactionHandlers( onReact ) вставить это в конце function GUIinit() файла GUI.lua а чтобы вызвать свой виджет зададим в меню команду: { name = "show", label = "Show Main Panel", onclick = showMPanel }, тогда инициализация GUI у нас будет такая: function GUIinit() local pr = get_PS( "mfPrior" ) if mainForm and pr then mainForm:SetPriority( pr ) end local strucMenu = { { token = "_", label = "COMMANDS", }, --- создать разделитель { name = "load", label = "Load Settings", onclick = fromConfig }, --- создать пункт меню { name = "save", label = "Save Settings", onclick = toConfig }, { name = "show", label = "Show Main Panel", onclick = showMPanel }, { token = "_", label = "SETTINGS", }, ... ... ... { token = "_", label = "", }, { token = "_3", label = "------***------", }, { name = "prior", label = "Inteface Priority", type = "_edl", chars=5 }, { name = "reset", label = "Reset to Config.txt", onclick = reset_PS }, } mnu = menu{ strucMenu = strucMenu, priority = 500, mouse_overRun = true, fadeOn = 100, fadeOff = 600, valGet = valGet, --- функция для получения значений для полей меню labelShapes = L, --- просто локализация valOnSet = valOnSet, --- функция, которая запомнит изменения сделанные пользователем и выполняет соотвествующие реакции valFormats = valFormats, --- форматы представления (цвет шрифт...) для разных значений valShapes = L, --- просто локализация itemSizeX = 300, } mnu:init({}) DnD:Init( mnu.wtMenu, mnu.wtMenu, false) widgetInit() RegisterReactionHandlers( onReact ) end
-
ввод настроек в обработку событий если вы хотите сделать настраиваемое событие то задаем настройку в меню. Например чтобы можно было включать/выключать обработку события, которое мы создали выше,, в файле GUI.lua в описании меню, там где код: local strucMenu = { ... ... вставляем свою запись: { name = "my_targ_log", label = "My Target LOG to CHAT", type = "_txt", valLabels = names, listVals = onoff }, после чего меняем свою процедуру в файле Main.lua так: onEvent.EVENT_AVATAR_PRIMARY_TARGET_CHANGED = function ( pars ) --- проверка на разрешение работу из параметров, заданных через меню if get_PS("my_targ_log") == OFF then return end local unitId = avatar.GetTarget() local name = "-nil-" if not unitId then else name = FromWS( object.GetName( unitId ) ) end LogToChat( name ) end теперь если у вас в настройках стоит OFF (Выкл) то данная процедура не будет выполняться при появлении заданного события
-
создание откликов на события после того как шаблон заработал - создаем обработчики событий - именно они обычно выполняют все действия в аддонах например при смене цели писать в чат имя выбраного юнита вставляем в текст Main.lua до кода -------------------------------------------------------------- --- it is a COMMON functions, its need to define -------------------------------------------------------------- function toConfig() --------------- SAVE TO CONFIG ... ... вот такую простую функцию обработки события (имена событиф в АПИ даны) onEvent.EVENT_AVATAR_PRIMARY_TARGET_CHANGED = function ( pars ) local unitId = avatar.GetTarget() local name = "-nil-" if not unitId then else name = FromWS( object.GetName( unitId ) ) end LogToChat( name ) end
-
если вы решились создать аддон то проще всего: взять уже готовый шаблон, в котором есть меню настроек и команд и уже описаны программы для взаимодействия в другими аддонами, такими как AddonsMenu, AOpanel, AddonsMeneger Такой аддон-шаблон уже есть в аддоне AddonsTools - в архиве Example3.zip. Достаточно архив распаковать в папку /Addons и переименовать: - его папку - тэг <Name> в файле AddonDesc.(UIAddon).xdb - тэг <Name> в файле GUI/MainForm.(WidgetForm).xdb Важно: новое имя папки и имя в теге <Name> должны совпадать Перегрузите клиент игры и вы увидите новый аддон с меню настроек и команд. Останется лишь вставить свой код в шаблон Структура шаблона такая: 1. Все общие переменные (массив настроек) описывается в Globals.lua 2. Обработка интерфейса задается в GUI.lua 3. Основные программы аддона записываем в Main.lua 4. в AddonsTools_Support.lua вставляем свои данные для передачи их другим аддонам-менеджерам Важно - исправлять файлы *.lua можно в любом текстовом редакторе не меняющем кодировку (UTF-8) - например обычный NotePad. Вашему аддону будет доступен набор готовых описателей часто используемых виджетов - глобальная переменная dsc чтобы создать свой виджет, например кнопку, достаточно в коде записать: -- WCD(descr, name, parent, place, show ) local wtButton1 = WCD( dsc.Button, "myName_btn", wtParent, { alignX = 3, alignY = 3 }, true ) К тому же вы можете использовать библиотеку ScriptLIB.lua из AddonsTools - эта библиотека уже подключена к вашему шаблону. Например очень полезные функции для отладки: LogToChat("text") --- выводит в чат игры текст exObj("text", any_object, meta, exlude_list ) --- выводит в лог mods.txt структуру объекта, его значения, функции... вид вашего меню в будет такой: как вам такая раскраска - используя библиотеку menuCls3 Описание шаблона Example3.zip Описание меню menuCls3.lua
-
так выкладывай его в платную версию - только скомпилируй сначала
-
ха! так можно же сделать проверку на частицы - это баф? или в сумке лежат? вот по нему и определять - прерывать каст или нет
-
может так - если тебя ударили то отменить сразу. хотя... а что сам игрок не может отменить? ESC нажми и все кстати для этого можно использовать ячейку на панели быстрых клавиш вместо ESC - как это сделано в TM и EAP либо с места сойти или прыгнуть (пробел)
-
сделала, даже прикольней чем у стандартного аддона )
-
фигасебе вы монстры программирования )) я слов то таких даже не знаю...
-
а зачем это вообще? типа чтобы не сбивали каст? сразу от него отказаться?
-
расширение класса menuCls2 для создания меню в ваших аддонах в меню теперь можно вставлять поля для настройки цвета - перенесла из аддона ConfigWindow (от Ciuine) как использовать смотрите в Example3.zip - который в корневой папке аддона лежит пример как выглядит интерфейс у него: это все сделано по описателям из библиотеки для разработчика все очень просто, задать пункт меню можно так: { n = "fp_clr", l = "Friend Player Color HP bar", type = "_clr" }, просто указать тип поля "_clr" --------------------------------------------------- ОБЩЕЕ ОПИСАНИЕ menuCls3 -------------------------------------------------- пункты меню создаются по порядку из таблиц положенных в параметр strucMenu. Создать меню: local mnu = menu{ strucMenu = strucMenu } инициализировать: mnu:init({}) Все прочие параметры меню будут взяты по умолчанию в структуре strucMenu задаем список пунктов: local strucMenu = { { token = "_", label = "COMMANDS", }, --- создать разделитель { name = "load", label = "Load Settings", onclick = fromConfig }, --- создать пункт меню } перерисовать все меню (например изменились наклейки у пунктов меню, число пунктов и т.д.) mnu:repaint() обновить значения пунктов меню: mnu:Update( pars ) --- pars = list of items or nil теперь в меню встроен пункт настройки ШРИФТОВ: команда для его создания: { name = "font_bar", label = "FONT of BAR1", type="_fnt", tip = "нажмите чтобы задать ШРИФТ", }, пример как всегда в Example3.zip в ScriptLIB функция создающая из таблицы строчку типа <html...<>
-
-
там проверка стоит - если АТ старый то аддон тебе должен был выдать сообщение - обновить АТ
-
фигасебе это как в ХЕКсе?
-
клевый сайт - мне нравится - спасибки )
