Jump to content
Alloder.pro  about Allods with love
Search In
  • More options...
Find results that contain...
Find results in...

Results of the competition "Allods and Life"

Stories, that warm souls.

Read More

Digest February

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

Изменения в API аддонов, которые будут в 14.1


Recommended Posts

Уважаемые авторы аддонов! Пожалуйста, ознакомьтесь с изменениями, которые разработчики сделают в игре с обновлением 14.1, и подготовьте заранее обновления своих аддонов, чтобы зарелизить их как только - так сразу. Обновление 14.1 планируется в скором времени.

Расшифровка переменных

NAME это
    Fade
    Move
    Resize
    Rotation
    RotationWithChildren
    TextScale

Новые API

widget:Play[NAME]EffectSequence( sequenceParams )
    Запускает на виджете цепочку эффектов типа NAME
    На виджете может существовать лишь одна цепочка \ эффект типа NAME
    Если на виджете уже есть активная цепочка эффектов NAME или эффект NAME то они будут прерваны
    Поля:
        sequenceParams - таблица описывающая эффект, поля
            1::N - N вложенных таблиц-описателей шагов эффекта, имеют вид { start, finish, duration, algo }
                start - начальное состояние на шаге (может быть полностью или частично опущено)
                finish - конечное состояние на шаге (может быть полностью или частично опущено)
                duration - время шага, может быть опущено, по умолчанию 1000 мс
                algo - алгоритм эффекта, может быть опущен, по умолчанию EA_MONOTONOUS_INCREASE
                Эта таблица по сути полностью повторяет параметры widget:Play[NAME]EffectSequence.
            showOnStart - boolean - default false - Вызвать widget:Show( true ) в начале эффекта
            hideOnFinish - boolean - default false - Вызвать widget:Show( false ) в конце эффекта (или при его прерывании).
            sendFinishEvent - boolean - default false - Нужно ли слать EVENT_EFFECT_SEQUENCE_FINISHED в конце эффекта
                Примечание - не присылается для зацикленных эффектов кроме случая принудительного завершения эффекта с флагом sendEvent
            sendStepEvent - boolean - default false - Нужно ли слать EVENT_EFFECT_SEQUENCE_STEP в конце каждого шага эффекта
                Примечание - НЕ присылается для последнего шага (исключение - зацикленные эффекты, там нет последнего шага)
            eventLabel - number or string or nil - default nil - Произвольное число или строка, ни на что не влияет, но приходит в эвентах шага и завершения (для упрощения трекинга в скриптах)
            cycled - boolean or int - default false - Зациклить эффект. Если задано true то бесконечный цикл, если число то заданное число циклов.
            startOffsetMs - number - default 0 - С какой миллисекунды начать цепочку эффектов (может быть больше длительности цепочки, тогда start = start % duration)
    Возвращаемые значения:
        Нет
    Пример:
        wtIconFlash:PlayFadeEffectSequence{ { 0.5, 1, 500 }, { nil, 0.5 }, showOnStart = true }
        Виджет становится видимым, плавно меняет прозрачность: за 0,5 сек с полупрозрачного до непрозрачного, затем за 1 сек с непрозрачного до полупрозрачного

 

widget:HasActiveEffects( effectType )
    Проверить есть ли на виджете эффекты
    Поля:
        effectType - ET_* - тип эффекта (если nil то любой)
    Возвращаемые значения:
        boolean - true если эффекты есть, false если нету

 

widget:GetAddonName()
    Получить имя аддона которому принадлежит виджет
    Поля: нет
    Возвращаемые значения:
        string - системное имя аддона оторому принадлежит виджет

 

widget:PlayEffectSequencePack( sequenceList )
    Запускает на виджете несколько цепочек эффектов
    Поля:
        sequenceList - таблица таблиц описателей эффектов. Ключем является тип эффекта (ET_...), значением таблица описатель эффекта (идентичная widget:Play[NAME]EffectSequence)
    Возвращаемые значения:
        Нет
    Пример:
        widget:PlayEffectSequencePack{
            [ET_FADE] = fadeParams,
            [ET_RESIZE] = resizeParams
        }
        --[[
        Это эквивалентно
            widget:PlayFadeEffectSequence( fadeParams )
            widget:PlayResizeEffectSequence( resizeParams )
        ]]

 

widget:FinishAllEffects( finalPosition, sendEvent )
    Завершает все эффекты на виджете
    Поля и возвращаемые значения идентичны widget:Finish[NAME]Effect

 

Новые эвенты

EVENT_EFFECT_SEQUENCE_STEP - Завершился один шаг цепочки эффектов
    Эвент посылается только если был заказан и только в тот аддон который запустил цепочку эффектов.
    Поля:
        wtOwner - widgetSafe - виджет владелец эффекта
        effectType - ET_* - тип эффекта
        step - number - номер завершенного шага (1::N)
        label - string or number or nil - Данные из sequenceParams.eventLabel

 

EVENT_EFFECT_SEQUENCE_FINISHED - Завершилась цепочка эффектов
    Эвент посылается только если был заказан и только в тот аддон который запустил цепочку эффектов.
    Поля:
        wtOwner - widgetSafe - виджет владелец эффекта
        effectType - ET_* - тип эффекта
        label - string or nil - Данные из sequenceParams.eventLabel (будут приведены к строке)

 

Изменения в имеющихся АПИ

widget:GetNamedChildren()
    Меняется индексация с 0 на индексацию с 1

 

common.GetAddonMainForm( addonSysName )
    Больше не ругается на "неправильную" строку
        Если запрошенного аддона не существует - вернет nil
        Если запрошенный аддон существует, но его форму получить нельзя (аддон выгружен. нет формы, форма защищена и тп) - вернет false
    Доступ к виджетам чужих аддонов через stateMainForm и доступ из скриптов к stateMainForm в целом считаются deprecated (но пока не удаляются)

 

widget:Play[NAME]Effect( from, to, timeMs, algorithmType, addonName )
изменяется на
widget:Play[NAME]Effect( from, to, timeMs, algorithmType, needEvent, addonList )
    from - без изменений
    to - без изменений
    timeMs - без изменений
    algorithmType - без изменений
    needEvent - boolean - default false - Нужно ли посылать эвент EVENT_EFFECT_FINISHED об этом эффекте
    addonList - table of strings (from 1) or nil - таблица с системными именами аддонов которым нужно послать эвент (кроме себя)
        Примечание - поле игнорируется в пользовательских аддонах

 

widget:Finish[NAME]Effect()
изменяется на
widget:Finish[NAME]Effect( finalPosition, sendEvent )
    Прервать выполнение эффекта или цепочки эффектов
    Поля:
        finalPosition - boolean - default false - Выставить состояние виджета как finish из последнего шага цепочки / эффекта (по умолчанию оставить текущее состояние виджета на момент прерывания )
            Примечание - для зацикленных цепочковых эффектов последний шаг в данном случае определяется так же как и для простых цепочек
        sendEvent - boolean - default false - Послать эвент о завершении (по-умолчанию при прерывании из скрипта эвент не посылается). Для обычного эффекта придет EVENT_EFFECT_FINISHED, для цепочки EVENT_EFFECT_SEQUENCE_FINISHED. Флаг заказа эвента при старте эффекта не учитывается.

 

EVENT_EFFECT_FINISHED
    Эвент теперь приходит только если был заказан и только в тот аддон который запустил эффект
    Дополнительно приходит в аддоны из списка addonList.
    Приходит только для обычных, не цепочковых эффектов.
    Поля без изменений

 

Link to comment
Share on other sites

  • 2 weeks later...

Еще немного информации.

Новые API

  1. ValuedText:IsEmpty() - аналог common.IsEmptyValuedText( valuedText )
  2. ValuedText:ToWString() - аналог common.ExtractWStringFromValuedText( ValuedText )
  3. TextViewSafe:GetWString(), ButtonSafe:GetWString() - получить текст из контрола в виде WString
  4. ValuedText:SetTextValues( values ), TextViewSafe:SetTextValues( values ), ButtonSafe:SetTextValues( values ) - аналог common.SetTextValues( obj, values )
  5. userMods.FromValuedText( ValuedText, flat ) - преобразовать VT в строку. Сохраняются как теги так и их значения. flat - выбросить переносы строк
  6. WString:ToLower() - привести к нижнему регистру
  7. WString:IsEmpty() - аналог common.IsEmptyWString( WString )
  8. WString:ToInt() - аналог common.GetIntFromWString( WString )
  9. WString:Truncate( maxLen, [dotsCount:3, needTrim:false] ) - аналог common.TruncateWString( WString, maxLen, dotsCount, needTrim ) 
  10. WString:ToAbbr() - аналог common.GetShortString( WString )
  11. WString:Compare( WString2, [ignoreRegistry:false] ) - аналог common.CompareWString \ Ex
  12. WString:IsContain( WStringPart, [ignoreRegistry:false] ) - аналог common.IsSubstring \ Ex
  13. common.IsValidText( text ) - Проверяет что текст валидный. Валидными считаются ValuedObject, непустой WString, непустой ValuedText

Модификация API

  1. common.CreateValuedText() -> common.CreateValuedText( [values] ) - теперь имеет опциональный аргумент values, если он передан, то созданный VT сразу будет заполнен через SetTextValues

Модификация WString

  1. Метаметоды eq, le, lt - проверка на равенство с любым значением, порядковое сравнение только внутри WString
  2. Метаметод len
  3. Метаметод concat - WString \ String в любой комбинации

Объявляются deprecated и будут удалены через одно крупное обновление

common.

  1. ExtractWStringFromValuedText
  2. SetTextValues
  3. IsEmptyWString
  4. IsEmptyValuedText
  5. CompareWString / Ex
  6. IsSubstring / Ex
  7. GetWStringLength
  8. TruncateWString
  9. GetIntFromWString
  10. GetShortString

Пример конвертаций VT

ToWs = userMods.ToWString
FromVt = userMods.FromValuedText
CreateVt = common.CreateValuedText

CreateVt( { format = ToWs( "<html>Value: <r name='val' /></html>" ), val = ToWs( "test" ) } ):ToWString()
    -- WString: [[Value: test]]

FromVt( CreateVt( { format = ToWs( "<html>Value: <r name='val' /></html>" ), val = ToWs( "test" ) } ), true )
    -- String: [[<html>Value: <r name="val">test</r></html>]]

 

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use