MyFirstAddon tutorial/ru

From ESOUI Wiki

Jump to: navigation, search

Быстрый старт в создании вашего первого аддона - MyFirstAddon:

В файле MyFirstAddon.txt напишите следующую информацию:

## Title: Rockin Addon
## APIVersion: 100003

MyFirstAddon.lua
MyFirstAddon.xml

Если вы перезагрузите интерфейс игры, выполнив слеш-команду /reloadui в окне чата, и затем откроете главное игровое меню (нажмёте Esc), и нажмете на раздел "AddOns", то вы увидите панель менеджера аддонов, в котором будет ваш аддон - однако пока он фактически ничего не делает.

А теперь пришло время добавить немного функционала нашему аддону. Мы собираемся сделать простое окошечко, с текстом внутри него, который будет обновляться каждый кадр игры.

Откройте созданный xml-файл и напишите следующий скрипт:

<GuiXml>
    <Controls>
        <TopLevelControl name="MyFirstAddon">
            <Dimensions x="200" y="42" />
            <Anchor point="CENTER" />
 
            <OnUpdate>
                MyFirstAddOnUpdate()
            </OnUpdate>
 
            <Controls>
                <Backdrop name="$(parent)BG" inherits="ZO_ThinBackdrop" />
                <Label name="$(parent)Counter" font="ZoFontWindowTitle" color="CFDCBD" wrapMode="ELLIPSIS" verticalAlignment="CENTER" text="Counter: ">
                    <AnchorFill />
                </Label>
            </Controls>
        </TopLevelControl>
    </Controls>
</GuiXml>

Откройте lua-файл, созданный ранее, и напишите скрипт:

local counter = 1
 
function MyFirstAddOnUpdate()
    MyFirstAddonCounter:SetText(string.format("Schetchik: %d", counter))
    counter = counter + 1
end

Если вы перезагрузите интерфейс (далее - UI) теперь, то увидите окошко в центре экрана со стремительно растущим значением. Поздравляем, вы создали ваш первый аддон, который может что-то делать!

Добавляем некоторый обработчик нажатия

Хоть аддон получился достаточно тривиальный, мы можем превратить его в таймер (счетчик кадров) изменяя xml-файл на следующий:

<GuiXml>
    <Controls>
        <TopLevelControl name="MyFirstAddon" mouseEnabled="true">
            <Dimensions x="200" y="42" />
            <Anchor point="CENTER" />
 
            <OnUpdate>
                MyFirstAddOnUpdate()
            </OnUpdate>
 
            <OnMouseDown>
                MyFirstAddOnReset()
            </OnMouseDown>
 
            <Controls>
                <Backdrop name="$(parent)BG" inherits="ZO_ThinBackdrop" />
                <Label name="$(parent)Counter" font="ZoFontWindowTitle" color="CFDCBD" wrapMode="ELLIPSIS" verticalAlignment="CENTER" text="Counter: ">
                    <AnchorFill />
                </Label>
            </Controls>
        </TopLevelControl>
    </Controls>
</GuiXml>

а так же lua-файл на это:

local counter = 1
 
function MyFirstAddOnUpdate()
    MyFirstAddonCounter:SetText(string.format("Schetchik: %d", counter))
    counter = counter + 1
end
 
function MyFirstAddOnReset()
    counter = 0
end

Теперь, всякий раз, когда вы нажмете по окну счетчика, наш счетчик будет сбрасывать значение на 0 и затем сразу же начинать новый отсчет.

Если вы хотите добавить возможность перемещения окошка счетчика, вам нужно всего лишь добавить атрибут к элементу TopLevelControl который будет выглядеть так:

movable="true"

Удачи!

Skv1991 14:54, 26 April 2014 (CDT)

Personal tools
Namespaces
Variants
Actions
Menu
Wiki
Toolbox