Для входа на форум нажмите здесь
Новые комментарии
UI Addons :: Руководство по созданию
Автор темы: Ferraghue
Дата создания: 07.07.2013 14:28
UI Addons :: Руководство по созданию
Содержание:

Обсуждение, помощь с аддонами
База готовых аддонов
Руководство по созданию:
Прежде чем начать
Добавить UI поток
Компоненты:
Установка\создание аддонов
Update List по функциям
Последний раз редактировалось Ferraghue; 29.10.2013 в 01:09.
4 пользователя оценили это сообщение: Показать
Re: UI Addons :: Руководство
Update List

[07/07/2013] Добавлена документация и руководство UI Addons

Последний раз редактировалось Ferraghue; 07.07.2013 в 15:44.
1 пользователь оценил это сообщение: Показать
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)
  • Вызов обработчика для обработки игрового эвента (события)

    АргументТипПримечание
    eventNameGame Event [string]-
    handlerfunctionФункция - обработчик


UIParent:ReleaseEventHandler(eventName, handler)
  • Game Event와 연결되어 있는 handler 함수를 해제

    АргументТипПримечание
    eventNameGame Event [string]-
    handlerfunctionФункция - обработчик

Последний раз редактировалось 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]
АргументТипПримечание
unitTypeUNIT TYPE-
buffIndexfloat Индекс бафа для импорта в таблицу
  • Таблица с информацией о бафе
    КлючТипОписание
    tipTypestring"buff"
    descriptionstringОписание бафа
    namestringНазвание бафа
    durationfloatПродолжительность бафа
    timeLeftfloatОставшееся время бафа
    stackfloat중첩된 갯수 (опционально)


X2Unit: UnitDeBuffCount (unitType)
  • Результат: Возвращает количество дебафов на юните [float]
АргументТипПримечание
unitType UNIT TYPE-

X2Unit: UnitDeBuff (unitType, buffIndex)
  • Результат: Возвращает таблицу с информацией о дебафе [debuff info table]
АргументТипПримечание
unitTypeUNIT TYPE-
buffIndexfloat Индекс бафа для импорта в таблицу

  • Таблица с информацией о дебафе
    КлючТипОписание
    tipTypestring"debuff"
    descriptionstringОписание бафа
    namestringНазвание бафа
    durationfloatПродолжительность бафа
    timeLeftfloatОставшееся время бафа
    stackfloat중첩된 갯수 (опционально)



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

    АргументТипПримечание
    apiTypeAPI Type-
    handlerfunctionТип API


ADDON:ImportObject(objectType)
  • Импорт объектов для использования их в Widget, Drawable...

    АргументТипПримечание
    objectTypeOBJECT Type[string]-
    handlerfunctionТип UI объекта


ADDON:RegisterContent(category, id)
  • 게임 UI와 중복되는 기능의 애드온 UI를 제작하였을 경우, 카테고리 등록을 통하여 관련된 Game Event처리를 애드온 UI로 맡김.
    Результат: 최상위 Widget으로 쓰이는 EmptyWidget의 테이블.

    [td기본 UI 분류[/td]
    АргументТипПримечание
    categoryUI CONTENT Category
    idstringУникальное имя, для идентификации

ADDON:CreateTopLevelWidget(id)
  • Создания виджета верхнего уровня (???)
    Результат: 최상위 Widget으로 쓰이는 EmptyWidget의 테이블.

    АргументТипПримечание
    idstringУникальное имя, для идентификации

Последний раз редактировалось 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.

    АргументТипПримечание
    drawableTypeDrawable Type-
    layerTypeLAYER TYPEТип холста


EmptyWidget:RemoveDrawable(drawableTable)
  • Удаляет холст
    Возвращает: -

    АргументТипПримечание
    drawableTypetable-


EmptyWidget: RemoveAllDrawables (layerType)
  • Удаляет все принадлежащие слою холсты.
    Возвращает: -

    АргументТипПримечание
    layerTypeLAYER TYPE-


EmptyWidget: Clickable (clickable)
  • Определяет кликабельность виджета
    Возвращает: -

    АргументТипПримечание
    clickablebooleantrue: виджет кликабелен. false: виджет не кликабелен


EmptyWidget: RegisterEvent (gameEventName)
  • Регистрация игрового события в обраотчик
    Возвращает: -

    АргументТипПримечание
    gameEventNamestring -


EmptyWidget: SetHandler (widgetEventName, handler)
  • Регистрация события для обработки
    Возвращает: -


    АргументТипПримечание
    widgetEventNamestring -
    handlerfunction name Название функции

EmptyWidget: Show (show)
  • Показывать виджет
    Возвращает: -

    АргументТипПримечание
    showboolean -

EmptyWidget: IsVisible ()
  • Widget이 화면에 보여지고 있는지를 얻어옴.
    Возвращает: -

EmptyWidget: CreateChildWidgetByType (type, id, index, addToTable)
  • Создать дочерный виджет
    Результат: Возвращает созданную таблицу дочернего виджета. В случае неудачи возвращает nil.

    АргументТипПримечание
    typeObject Type -
    idstring -
    indexstring -
    addToTableboolean -

EmptyWidget: SetExtent (width, height)
  • Задает ширину и высоту виджета
    Возвращает: -

    АргументТипПримечание
    typeObject Type -
    widthfloat Ширина
    heightfloatВысота

EmptyWidget: GetExtent ()
  • Получить ширину и высоту виджета
    Возвращает: Ширина виджета [float], Высота виджета [float]
EmptyWidget: SetWidth (width)
  • Задает ширину виджета
    Возвращает: -

    АргументТипПримечание
    widthfloat -

EmptyWidget: GetWidth ()
  • Получить ширину виджета
    Возвращает: Ширина виджета [float]

EmptyWidget: SetHeight (height)
  • Задает высоту виджета
    Возвращает: -
    АргументТипПримечание
    heightfloat -

EmptyWidget: GetHeight ()
  • Получить высоту виджета
    Возвращает: Высота виджета [float]

EmptyWidget: AddAnchor (myAnchorPoint, targetObjectTable, targetAnchorPoint, offsetX, offsetY)
  • Создать якорь
    Возвращает: -

    АргументТипПримечание
    myAnchorPointANCHOR POINT TYPE -
    targetObjectTabletable
    targetAnchorPoint ANCHOR POINT TYPE -
    offsetXfloat -
    offsetYfloat -

EmptyWidget: RemoveAllAnchors ()
  • Удалить все якори присвоенные виджету
    Возвращает: -

Последний раз редактировалось Ferraghue; 07.07.2013 в 17:34.
Re: UI Addons :: Руководство
Label
Object Type: UOT_LABEL

*Набор функций для рисования текста в виджете



Label:SetText(text)
  • Запись строки в Label
    Возвращает: -
АргументТипПримечание
textstring-


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)
  • Создает кнопку с параметрами
    Возвращает: -
АргументТипПримечание
stateBUTTON STATE-
drawableTypeDRAWABLE TYPE-
pathstring-
layerTypeLAYER TYPE-

Последний раз редактировалось Ferraghue; 07.07.2013 в 15:36.
Re: UI Addons :: Руководство
EditBox
Object Type: UOT_EDITBOX

*Набор функций для рисования поля ввода в виджете



EditBox:SetText(text)
  • Записывает строку в поле ввода
    Возвращает: -
    АргументТипПримечание
    textstring-

EditBox:GetText()
  • Результат: Возвращает значения из поля ввода [string]

EditBox:SetInset(left, top, right, bottom)
  • EditBox에 출력되고 있는 문자열의 상하좌우 여백을 설정.
    АргументТипПримечание
    leftfloat-
    topfloat-
    rightfloat-
    bottomfloat-


Последний раз редактировалось Ferraghue; 07.07.2013 в 15:35.
Re: UI Addons :: Руководство
Drawable
Object Type: UOT_EDITBOX

*Набор функций для рисования в виджете



Drawable:Show(show)
  • Определяет показ Drawable
    Возвращает: -
АргументТипПримечание
showboolean-


Drawable:IsVisible()
  • Получить показанное на экране (???)

Drawable:SetColor(red, green, blue, alpha)
  • Определяет цвет Drawable. RGBA значения
    АргументТипПримечание
    redfloat0.0f ~ 1.0f
    greenfloat0.0f ~ 1.0f
    bluefloat0.0f ~ 1.0f
    alphafloat0.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)
  • Определяет место положения изображения
    АргументТипПримечание
    offsetXfloatКоордината X верхней левой части изображения
    offsetYfloatКоордината Y верхней левой части изображения
    widthfloat-
    heightfloat-

Последний раз редактировалось 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)
  • Считывает изображения из файла
    Возвращает: -
    АргументТипПримечание
    filenamestringПуть к изображению

NinepartDrawable:SetCoords(offsetX, offsetY, width, height)
  • Определяет место положения изображения
    АргументТипПримечание
    offsetXfloatКоордината X верхней левой части изображения
    offsetYfloatКоордината Y верхней левой части изображения
    widthfloat-
    heightfloat-

NinepartDrawable:SetInset(left, top, right, bottom)
  • 이미지를 늘리거나 반복해서 사용하기 위히여 상하좌우 여백의 크기를 입력하여 이미지의 중간 영역을 설정.
    Возвращает: -
    АргументТипПримечание
    leftfloat-
    topfloat-
    rightfloat-
    bottomfloat-

Последний раз редактировалось 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
    Возвращает: -
    АргументТипПримечание
    alignTypeTEXT ALIGN TYPE-

TextStyle:SetShadow(shadow)
  • Задает тень для текста
    АргументТипПримечание
    shadowboolean-


TextStyle:SetOutline(outline)
  • Задает подчеркивания к тексту
    Возвращает: -
    АргументТипПримечание
    outlineboolean-


TextStyle:SetColor(red, green, blue, alpha)
  • Задает цвет для текста. RGBA значения
    Возвращает: -
    АргументТипПримечание
    redfloat0.0f ~ 1.0f
    greenfloat0.0f ~ 1.0f
    bluefloat0.0f ~ 1.0f
    alphafloat0.0f ~ 1.0f



TextStyle:SetFont(fontPath, fontSize)
  • Задает шрифт для текста
    Возвращает: -
    АргументТипПримечание
    fontPathstringПуть к .ttf фалу с шрифтом
    fontSizefloatРазмер шрифта

TextStyle:SetFontSize(fontSize)
  • Задает размер шрифта для текста
    Возвращает: -
    АргументТипПримечание
    fontSizefloatРазмер шрифта

Последний раз редактировалось 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 :: Руководство
Создания и установка Аддона

Для создания нового аддона Вам нужно:
  1. Создать каталог в 'Documents\ArcheAge\Addon' одноименым с названиям аддона
  2. Добавить в созданную папку *.lua файл (скрипт) с исходным кодом
  3. Добавить файл toc.g с содержанием названия *.lua скрипта и других дополнительных файлов используемых в аддоне
  4. При выборе персонажа нажать на гаечный ключ и выбрать аддоны, которые будут включены

Для подключения готового аддона Вам нужно:
  1. Распаковать содержимое архива в каталог 'Documents\ArcheAge\Addon'
Последний раз редактировалось Ferraghue; 07.07.2013 в 17:40.
Re: UI Addons :: Руководство
База аддонов[/FONT]

База готовых аддонов и их примеров к игре





TargetDistance
Показывает расстояние к цели.
Расстояния выводится над ником таргета
RangeDisplay
Показывает расстояние к цели. Расстояние выводится над вашим ником.
В зависимости от расстояния меняется цвет надписи.
Белый -> синий -> желтый -> красный
FunnyHealthText
Выводит ваше хп в простом и процентом соотношении слева от персонажа и
хп в простом и процентом соотношении цели справа от персонажа.

TargetInfo
Выводит информацию о Вашей цели. Имя, лвл, хп\мп, расстояние,
возможность получения дропа\опыта

CastingTimer
Выводит время окончания каста в секундах над полоской применения умения
Последний раз редактировалось Ferraghue; 07.08.2013 в 12:47.
1 пользователь оценил это сообщение: Показать

Ваши права в разделе