Быстрая навигация
|
|
|
Re: UI Addons :: Руководство
Прежде чем начать
Для того чтобы создавать аддоны нужно знать основы в области программирования.
- C # Include, импорт пакетов
- Переменные и функции, их типы
- Объявления, определения, использования функций и переменных
- Структура родительских и дочерних элементов
- Массивы
- Обработка событий
- Язык Lua
Если Вас этот список не пугает, то можно приступать к созданию UI потока.
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:38.
|
|
Re: UI Addons :: Руководство
Создание UI потока
Схема работы UI виджета и клиента ArcheAge
ArcheAge клиент
Вызов API и получения результата
> 1: Вызов API "Widget:CreateChildWidgetByType(UOT_BASE_BUTTO N, id, index, insertTable)" =>
в результате получаем дочерный элемент виджета(родителя), кнопку - UOT_BASE_BUTTON
> 2: Вызов API "X2Unit:UnitName("target")" => в результате получаем имя\названия юнита
Вызов GAME EVENT в обработчик событий
> Пример: "Открытие\закрытие инвентаря", "Изменения содержимого инвентаря", ...
Вызов WIDGET EVENT в обработчик событий
> Пример: "Была нажата правая кнопка мыши в виджете", "Указатель мыши вышел за пределы виджета", ...
UI дополнения
Вызов API предоставленных клиентом
Widget에 등록되어 있는 API들을 호출하여 Widget/Drawable 등을 생성하고, 이미지를 덧붙이는 등의 layout과 관련된 처리를 한다.
용도별로 제공되는 API 집합들을 호출하여 UI 처리에 필요한 정보들을 얻어와서 이를 처리한다.
Обработчик событий
Пример вызова пользовательской функции, когда цель юнита изменилась

function TestFunction(w, stringId, targetType)
-- do something
end
BagUI:SetEventHandler("TARGET_CHANGED", TestFunction)
Пример вызова функции при нажатии на кнопку

function buttonWidget:OnClick(arg)
-- do something
end
buttonWidget:SetHandler("OnClick", buttonWidget.OnClick)
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:27.
|
|
Re: UI Addons :: Руководство
ANCHOR SYSTEM
*Задает расположения объектов пользовательского интерфейса.
В общей сложности 9 параметров:
"AP_TOPLEFT": левый верхний угол
"AP_TOP": верх площади
"AP_TOPRIGHT": правый верхний угол
"AP_CENTER": центр
"AP_BOTTOMLEFT": левый низ
"AP_BOTTOM": низ
"AP_BOTTOMRIGHT": низ правый
"AP_LEFT": слева
"AP_RIGHT": справа
Пример:
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:15.
|
|
Re: UI Addons :: Руководство
UIParent
*Самые основные функции UI ArcheAge, связанные с API
Вызов функции ImportAPI () не требуется.
UIParent:SetEventHandler(eventName, handler)- Вызов обработчика для обработки игрового эвента (события)
Аргумент | Тип | Примечание | eventName | Game Event [string] | - | handler | function | Функция - обработчик |
UIParent:ReleaseEventHandler(eventName, handler)- Game Event와 연결되어 있는 handler 함수를 해제
Аргумент | Тип | Примечание | eventName | Game Event [string] | - | handler | function | Функция - обработчик |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:37.
|
|
Re: UI Addons :: Руководство
X2Unit
API type: UCST_UNIT
*Список функций связанных с юнитом в игре.
UNIT TYPE:
"Player" - Мой юнит
"Target" - Таргет моего юнита
"Team1" ~ "team50" - Моя группа \ рейд
X2Unit: UnitName (unitType)- Результат: Возвращает имя\название юнита [string]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitHealth (unitType)- Результат: Возвращает текущее ХП юнита [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitMaxHealth (unitType)- Результат: Возвращает максимальное ХП юнита [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitMana (unitType)- Результат: Возвращает текущее мп юнита [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitMaxMana (unitType)- Результат: Возвращает максимальное мп юнита [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitLevel (unitType)- Результат: Возвращает текущий левел юнита [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitDistance (unitType)- Результат: Возвращает текущую дистанцию к юниту [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitBuffCount (unitType)- Результат: Возвращает количество бафов на юните [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitBuff (unitType, buffIndex)- Результат: Возвращает таблицу с информацией о бафе [buff info table]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - | buffIndex | float | Индекс бафа для импорта в таблицу |
- Таблица с информацией о бафе
Ключ | Тип | Описание | tipType | string | "buff" | description | string | Описание бафа | name | string | Название бафа | duration | float | Продолжительность бафа | timeLeft | float | Оставшееся время бафа | stack | float | 중첩된 갯수 (опционально) |
X2Unit: UnitDeBuffCount (unitType)- Результат: Возвращает количество дебафов на юните [float]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
X2Unit: UnitDeBuff (unitType, buffIndex)- Результат: Возвращает таблицу с информацией о дебафе [debuff info table]
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - | buffIndex | float | Индекс бафа для импорта в таблицу |
- Таблица с информацией о дебафе
Ключ | Тип | Описание | tipType | string | "debuff" | description | string | Описание бафа | name | string | Название бафа | duration | float | Продолжительность бафа | timeLeft | float | Оставшееся время бафа | stack | float | 중첩된 갯수 (опционально) |
X2Unit: GetUnitScreenPosition (unitType)- Результат: the crown of the head of the Unit of the screen coordinate [float]. If you can not be obtained nil. -#??-
Аргумент | Тип | Примечание | unitType | UNIT TYPE | - |
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:31.
|
|
Re: UI Addons :: Руководство
ADDON
*ADDON System, другими словами - вызов, подключения API функций, объектов
ADDON:ImportAPI(apiType)- Импорт таблицы API
Аргумент | Тип | Примечание | apiType | API Type | - | handler | function | Тип API |
ADDON:ImportObject(objectType)- Импорт объектов для использования их в Widget, Drawable...
Аргумент | Тип | Примечание | objectType | OBJECT Type[string] | - | handler | function | Тип UI объекта |
ADDON:RegisterContent(category, id)- 게임 UI와 중복되는 기능의 애드온 UI를 제작하였을 경우, 카테고리 등록을 통하여 관련된 Game Event처리를 애드온 UI로 맡김.
Результат: 최상위 Widget으로 쓰이는 EmptyWidget의 테이블.
Аргумент | Тип | Примечание | category | UI CONTENT Category | [td기본 UI 분류[/td] id | string | Уникальное имя, для идентификации |
ADDON:CreateTopLevelWidget(id)- Создания виджета верхнего уровня (???)
Результат: 최상위 Widget으로 쓰이는 EmptyWidget의 테이블.
Аргумент | Тип | Примечание | id | string | Уникальное имя, для идентификации |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:37.
|
|
Re: UI Addons :: Руководство
EmptyWidget
Object Type: UOT_EMPTY_WIDGET
*Все функции Widget включены в родительскую таблицу widget
LAYER TYPE:
WL_BACKGROUND - 가장 먼저 그려지므로 다음 레이어에 의해 가려진다.
WL_ARTWORK - WL_BACKGROUND 다음에 그려진다. 이 레이어를 그린 다음에 자식 widget들이 그려지므로 자식 widget에 의해 가려진다.
WL_OVERLAY - 가장 나중에 그려진다. 자식 widget들을 그린 다음에 그려지므로 자식 widget을 가린다.
EmptyWidget:CreateDrawableByType(drawableType, layerType)- Результат: Рисует объект в созданой таблице. Если холста нет - возвращает nil.
Аргумент | Тип | Примечание | drawableType | Drawable Type | - | layerType | LAYER TYPE | Тип холста |
EmptyWidget:RemoveDrawable(drawableTable)- Удаляет холст
Возвращает: -
Аргумент | Тип | Примечание | drawableType | table | - |
EmptyWidget: RemoveAllDrawables (layerType)- Удаляет все принадлежащие слою холсты.
Возвращает: -
Аргумент | Тип | Примечание | layerType | LAYER TYPE | - |
EmptyWidget: Clickable (clickable)- Определяет кликабельность виджета
Возвращает: -
Аргумент | Тип | Примечание | clickable | boolean | true: виджет кликабелен. false: виджет не кликабелен |
EmptyWidget: RegisterEvent (gameEventName)- Регистрация игрового события в обраотчик
Возвращает: -
Аргумент | Тип | Примечание | gameEventName | string | - |
EmptyWidget: SetHandler (widgetEventName, handler)- Регистрация события для обработки
Возвращает: -
Аргумент | Тип | Примечание | widgetEventName | string | - |
handler | function name | Название функции |
EmptyWidget: Show (show)- Показывать виджет
Возвращает: -
Аргумент | Тип | Примечание | show | boolean | - |
EmptyWidget: IsVisible ()- Widget이 화면에 보여지고 있는지를 얻어옴.
Возвращает: -
EmptyWidget: CreateChildWidgetByType (type, id, index, addToTable)- Создать дочерный виджет
Результат: Возвращает созданную таблицу дочернего виджета. В случае неудачи возвращает nil.
Аргумент | Тип | Примечание | type | Object Type | - | id | string | - | index | string | - | addToTable | boolean | - |
EmptyWidget: SetExtent (width, height)- Задает ширину и высоту виджета
Возвращает: -
Аргумент | Тип | Примечание | type | Object Type | - | width | float | Ширина |
height | float | Высота |
EmptyWidget: GetExtent ()- Получить ширину и высоту виджета
Возвращает: Ширина виджета [float], Высота виджета [float]
EmptyWidget: SetWidth (width)- Задает ширину виджета
Возвращает: -
Аргумент | Тип | Примечание | width | float | - |
EmptyWidget: GetWidth ()- Получить ширину виджета
Возвращает: Ширина виджета [float]
EmptyWidget: SetHeight (height)- Задает высоту виджета
Возвращает: -
Аргумент | Тип | Примечание | height | float | - |
EmptyWidget: GetHeight ()- Получить высоту виджета
Возвращает: Высота виджета [float]
EmptyWidget: AddAnchor (myAnchorPoint, targetObjectTable, targetAnchorPoint, offsetX, offsetY)- Создать якорь
Возвращает: -
Аргумент | Тип | Примечание | myAnchorPoint | ANCHOR POINT TYPE | - | targetObjectTable | table | targetAnchorPoint | ANCHOR POINT TYPE | - | offsetX | float | - | offsetY | float | - |
EmptyWidget: RemoveAllAnchors ()- Удалить все якори присвоенные виджету
Возвращает: -
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:34.
|
|
Re: UI Addons :: Руководство
Label
Object Type: UOT_LABEL
*Набор функций для рисования текста в виджете
Label:SetText(text)- Запись строки в Label
Возвращает: -
Аргумент | Тип | Примечание | text | string | - |
Label:GetText()- Результат: Возвращает значения label [string]
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:36.
|
|
Re: UI Addons :: Руководство
BaseButton
Object Type: UOT_BASE_BUTTON
*Набор функций для рисования кнопки в виджете
BUTTON STATE:
"UI_BUTTON_DISABLED"
"UI_BUTTON_NORMAL"
"UI_BUTTON_HIGHLIGHTED"
"UI_BUTTON_PUSHED"
BaseButton:CreateStateDrawable(state, drawableType, path, layerType)- Создает кнопку с параметрами
Возвращает: -
Аргумент | Тип | Примечание | state | BUTTON STATE | - | drawableType | DRAWABLE TYPE | - | path | string | - | layerType | LAYER TYPE | - |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:36.
|
|
Re: UI Addons :: Руководство
EditBox
Object Type: UOT_EDITBOX
*Набор функций для рисования поля ввода в виджете
EditBox:SetText(text)- Записывает строку в поле ввода
Возвращает: -
Аргумент | Тип | Примечание | text | string | - |
EditBox:GetText()- Результат: Возвращает значения из поля ввода [string]
EditBox:SetInset(left, top, right, bottom)- EditBox에 출력되고 있는 문자열의 상하좌우 여백을 설정.
Аргумент | Тип | Примечание | left | float | - | top | float | - | right | float | - | bottom | float | - |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:35.
|
|
Re: UI Addons :: Руководство
Drawable
Object Type: UOT_EDITBOX
*Набор функций для рисования в виджете
Drawable:Show(show)- Определяет показ Drawable
Возвращает: -
Аргумент | Тип | Примечание | show | boolean | - |
Drawable:IsVisible()- Получить показанное на экране (???)
Drawable:SetColor(red, green, blue, alpha)- Определяет цвет Drawable. RGBA значения
Аргумент | Тип | Примечание | red | float | 0.0f ~ 1.0f | green | float | 0.0f ~ 1.0f | blue | float | 0.0f ~ 1.0f | alpha | float | 0.0f ~ 1.0f |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:35.
|
|
Re: UI Addons :: Руководство
ImageDrawable
Object Type: UOT_IMAGE_DRAWABLE
*Набор функций для отображения изображения из файла в виджете
ImageDrawable:SetTexture(filename)- Считывает изображения из файла
Возвращает: -
ImageDrawable:SetCoords(offsetX, offsetY, width, height)- Определяет место положения изображения
Аргумент | Тип | Примечание | offsetX | float | Координата X верхней левой части изображения | offsetY | float | Координата Y верхней левой части изображения | width | float | - | height | float | - |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:35.
|
|
Re: UI Addons :: Руководство
NinepartDrawable
Object Type : UOT_NINE_PART_DRAWABLE
*Набор функций для деления Drawable на 9 частей.
읽어들인 이미지 파일의 영역을 가로 3등분, 세로 3등분의 9등분으로 나누어 중간 영역을 늘여서 쓰는 형태의 Drawable.
사각형의 네 모퉁이 부분을 제외한 중간 영역의 이미지를 늘리거나 반복해서 사용하기 때문에 디스크/메모리 용량이 절약됨.
NinepartDrawable:SetTexture(filename)- Считывает изображения из файла
Возвращает: -
Аргумент | Тип | Примечание | filename | string | Путь к изображению |
NinepartDrawable:SetCoords(offsetX, offsetY, width, height)- Определяет место положения изображения
Аргумент | Тип | Примечание | offsetX | float | Координата X верхней левой части изображения | offsetY | float | Координата Y верхней левой части изображения | width | float | - | height | float | - |
NinepartDrawable:SetInset(left, top, right, bottom)- 이미지를 늘리거나 반복해서 사용하기 위히여 상하좌우 여백의 크기를 입력하여 이미지의 중간 영역을 설정.
Возвращает: -
Аргумент | Тип | Примечание | left | float | - | top | float | - | right | float | - | bottom | float | - |
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:35.
|
|
Re: UI Addons :: Руководство
TextStyle
*Набор функций для стилизации текста
TEXT ALIGN TYPE:
"UIALIGN_TOP_LEFT"
"UIALIGN_TOP"
"UIALIGN_TOP_RIGHT"
"UIALIGN_LEFT"
"UIALIGN_CENTER"
"UIALIGN_RIGHT"
"UIALIGN_BOTTOM_LEFT"
"UIALIGN_BOTTOM"
"UIALIGN_BOTTOM_RIGHT"
TextStyle:SetAlign(alignType)- Задает выравнивание текста в зависимости от TEXT ALIGN TYPE
Возвращает: -
Аргумент | Тип | Примечание | alignType | TEXT ALIGN TYPE | - |
TextStyle:SetShadow(shadow)- Задает тень для текста
Аргумент | Тип | Примечание | shadow | boolean | - |
TextStyle:SetOutline(outline)- Задает подчеркивания к тексту
Возвращает: -
Аргумент | Тип | Примечание | outline | boolean | - |
TextStyle:SetColor(red, green, blue, alpha)- Задает цвет для текста. RGBA значения
Возвращает: -
Аргумент | Тип | Примечание | red | float | 0.0f ~ 1.0f | green | float | 0.0f ~ 1.0f | blue | float | 0.0f ~ 1.0f | alpha | float | 0.0f ~ 1.0f |
TextStyle:SetFont(fontPath, fontSize)- Задает шрифт для текста
Возвращает: -
Аргумент | Тип | Примечание | fontPath | string | Путь к .ttf фалу с шрифтом | fontSize | float | Размер шрифта |
TextStyle:SetFontSize(fontSize)- Задает размер шрифта для текста
Возвращает: -
Аргумент | Тип | Примечание | fontSize | float | Размер шрифта |
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:35.
|
|
Re: UI Addons :: Руководство
API Type
*Типы API используемыe для подключения к разрабатываемому аддону
UCST_UNIT- Тип связанный с юнитом в игре
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:36.
|
|
Re: UI Addons :: Руководство
Object Type
Widget Type

UOT_WINDOW
UOT_LABEL
UOT_WEBBROWSER
UOT_BASE_BUTTON
UOT_EDITBOX
Drawable Type

UOT_IMAGE_DRAWABLE
UOT_NINE_PART_DRAWABLE
Etc.

UOT_TEXT_STYLE
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:34.
|
|
Re: UI Addons :: Руководство
UI Content Category
*Категория UI связанная с пользовательским интерфейсом
UICC_PLAYER_UNITFRAME- Категория отображаемая ваш статус, например - хп, мп
UICC_TARGET_UNITFRAME- Категория отображаемая статус цели, например - хп, мп
Последний раз редактировалось Ferraghue; 07.07.2013 в 15:34.
|
|
Re: UI Addons :: Руководство
Widget Event Type
*Эвенты
SA_ONSHOW
SA_ONHIDE- При исчезновении виджета с экрана
SA_ONCLICK- При клике
> arg1: Название кнопки [string]. "LeftButton", "RightButton", "MiddleButton"
> arg2: Двойное нажатие [boolean]
SA_ONENTERPRESSED- При нажатии клавиши Enter
SA_ONTEXTCHANGED
SA_ONUPDATE- Обновление фрейма виджета
> arg1: Время обновление (1000msec = 1sec)
SA_ONENTER- При наведении указателя мыши на виджет
SA_ONLEAVE- При уходе указателя мыши за пределы виджета
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:38.
|
|
Re: UI Addons :: Руководство
Game Event
*Игровые эвенты. Например - открытие инвентаря или изменение содержания инвентаря.
게임 로직이 처리되면서 발생하는 특정 이벤트들을 UI쪽으로 알려주는 문자열
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:39.
|
|
Re: UI Addons :: Руководство
Создания и установка Аддона
Для создания нового аддона Вам нужно:- Создать каталог в 'Documents\ArcheAge\Addon' одноименым с названиям аддона
- Добавить в созданную папку *.lua файл (скрипт) с исходным кодом
- Добавить файл toc.g с содержанием названия *.lua скрипта и других дополнительных файлов используемых в аддоне
- При выборе персонажа нажать на гаечный ключ и выбрать аддоны, которые будут включены
Для подключения готового аддона Вам нужно:- Распаковать содержимое архива в каталог 'Documents\ArcheAge\Addon'
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:40.
|
|