Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

icreator

Пользователь
  • Постов

    3 118
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные icreator

  1. просьба сделать так:

    Code:
    SLASH_COMMANDS = {  [1]  ="\/am",  [2]  = "\/фь" }

    ...

    addon._R [ "EVENT_UNKNOWN_SLASH_COMMAND" ]  = function( event )

    if addon.SLASH_COMMANDS [FrWS( event.text )]  then W( "MainPanel" ):Show( not W( "MainPanel" ):IsVisible() ) end

    end

    чтобы можно было не переключать кодировку на русскую вызвать окно. ну или локализацию сделать

  2. что бы хотелось чтобы у нас в API было и прочие пожелания (просьба этут тему прикрепить чтобы она вниз не уходила)

    1.сделайте пожалуйста в API функцию показа и гашения толтипов. Например в вашем коде вместо

    common.SendEvent( "SCRIPT_HIDE_CONTEXT_TOOLTIP", tooltipParams )

    чтобы можно было написать что-то вроде этого:

    common.SCRIPT_HIDE_CONTEXT_TOOLTIP( tooltipParams )

    Ведь тултипы работаю у системных аддонов через события - а мы не можем события им послать. Я выкручиваюсь так - посылаю ValuedObject в системный ЧАТ.

    2. сделайте пожалуйста функцию widget:GetChildren() - чтобы она выдавала ВСЕХ потомков а не только именованных. Имя у безымянного виджета можно задавать так: "__ТипВиджета". А то не получается например сделать масштабирование всего виджета вместе с его потомками

    3. сделайте поощрения в КРИ разработчикам аддонов - вам проще чем нанимать народ

  3. кстати если вам влом свои интерфейс делать - окошки там иконки, кнопки - можно взять готовый прямо из системных аддонов:

    Code:

    Global( "sysRGNaddomName", "RollGreedNeed" ) --- имя системного аддона и его главной формы

    addon.GetWidgets = function( self )

    local wtSysName = sysRGNaddomName

    --- скопирум виджеты с ситемного аддона

    local wSys = stateMainForm:GetChildChecked(wtSysName, false):GetChildChecked( "MainPanel", false )

    local wDesc = wSys:GetWidgetDesc()

    --- и создадим такие же в нашей главной форме

    mainForm:CreateWidgetByDesc( wDesc ):SetName( "MainPanel" )

    local myWiidget = mainForm:GetChildChecked( "MainPanel", false )

     

    все - теперь вся структура скопирована и можно выгрузить системный аддон и пользовать готовые виджеты

    в описании аддона надо всеже главную форму создать:

    AddonDesc.(UIAddon).xdb

    Code:
      <Forms>

        <Item>

          <Form href="MainForm.(WidgetForm).xdb#xpointer(/WidgetForm)" />

          <Id>MainForm</Id>

        </Item>

      </Forms>

      <MainFormId>MainForm</MainFormId>

    • Плюсую 1
  4. еще интересное замечание - если системный ( ну и видимо пользовательский) аддон выгружен, то его виджеты есть в системе, но они не показываются по :Show():

    Code:

    userMods.StateUnloadManagedAddon( "RollGreedNeed" )

    local w = stateMainForm:GetChildChecked("RollGreedNeed", false)

    --- вывести список детей в логфайл

    getAllChildrensOfWidget("rgn",w)

    w:Show(true)

  5. как сделать всплывающую подсказку?

    тип такой:

    Code:
    onReaction [ "button_greed_over" ]  = function( reactionParams )

      local tooltipParams = {}

    if reactionParams.active then

    tooltipParams.tooltip = TOOLTIP_SIMPLEDESC

        tooltipParams.name = GetText( "GreedOverHeader" )

        tooltipParams.desc = GetText( "GreedOver" )

    userMods.SendEvent( "SCRIPT_REQUEST_CONTEXT_TOOLTIP", tooltipParams )

    else

    userMods.SendEvent( "SCRIPT_HIDE_CONTEXT_TOOLTIP", tooltipParams )

    end

    end

  6. суть в том что если в Менеджере не стоит галочка -то есть аддон не загружать, но аддон все равно стартует по автозапуску!!! при этом он может напортачить и потом его Менеджер выгрузит. предложение: все аддоны делать без автозапуска:

    Code:
     <AutoStart>false</AutoStart>

    но тогда у всех пользователей должен стоять Менеджер и он должен запускать вновь установленные аддоны сам и галочку ставить

  7. нет дело не в том, а в том что есть имя у виджета или нет - ведь если виджет без имени на него ссылку никак не получить - поэтому он и не сжимается

    причем даже можно у всех виджетов сжедать одно и тоже имя:

    Code:
    <WidgetPanel>

    <Name>wp</Name>

    ...

    поэтому ВСЕ виджеты (и их дети) должны иметь ИМЯ чтобы они корректно сжимались

    единственно что я не смогла сжать - это кнопки

    Code:
    <WidgetButton>

    <Name>Button1</Name>

    <Header>

    <Prototype href="Button/ButtonRegular.Prototype.(WidgetButton).xdb#xpointer(/WidgetButton)" />

    </Header>

    ...

  8. widgetsSystem:SetShrinkRatio( 0.8 )

    у обычных виджетов этого нету и она весь интерфейс сжимает - причем сжатие еще хуже чем у моего - все едет и не совпадает... может надо совместно их использовать? Тем более что widgetsSystem:SetShrinkRatio() вызывает событие EVENT_UPDATE_SHRINK_RATIO - хотя его может вызывать и наш пользовательский wtScale()

    myWidget:SetShrinkRatio( 0.8 ) - вызывает ошибку

  9. для отладки и просто для других целей - как сделать вывод в окно чата.

    создаем 2 функции

    Code:

    ------------------------------------------------------------------

    ---- output in Chat. created by icreator(EDS) 2011/01/23

    --- initial ref

    --- Chat...Chat

    local wtChat = nil

    local chatRows = 0 --- for clear buffer after show messages

    function LogToChat(message, color, fontSize)

    if not wtChat and not errMess.Chat then

    ---- если окно еще не искали и ошибки при этом не было. а если уже ошибка была то не искать

    --- найдем окно чата

    --- Chat..Chat

    local w

    w = stateMainForm:GetChildUnchecked("Chat", false)

    if not w then

    --- главня форма не найдена - найден по ребенку

    w = stateMainForm:GetChildUnchecked("Chat", true)

    else

    w = w:GetChildUnchecked("Chat", true)

    end

    wtChat = w

    end

    if not wtChat or not wtChat.PushFrontValuedText then

    if not errMess.Chat then

    errMess.Chat = "can't find Chat window"

    LogError(errMess.Chat)

    end

    return

    end

    local valuedText = common.CreateValuedText()

    --- fontname=\"AllodsWest\"

    local format = "<body alignx='left' fontname='AllodsSystem' fontsize='"..(fontSize or 14)

    format = format.."' shadow='1' ><rs class='color'><r name='text'/></rs></body>"

    valuedText:SetFormat(userMods.ToWString(format))

    if color then

    valuedText:SetClassVal( "color", color )

    else

    valuedText:SetClassVal( "color", "LogColorYellow" )

    end

    if not common.IsWString( message ) then message = userMods.ToWString(message) end

    ---message = ToWS(chatRows.. ":".. FromWS(message))

    valuedText:SetVal( "text", message )

    ---wtChat:PopBack() --- ++

    chatRows =  chatRows + 1

    wtChat:PushFrontValuedText( valuedText )

    ---wtChat:PushFrontRawText( message ) --- текст не видно ((

    end

    --- call by "EVENT_SECOND_TIMER" - for clear messages from chat

    function ClearChat( size )

    for i=1, size or math.ceil( chatRows / 30 ) + 1 do

    if chatRows < 1 then break end

    chatRows = chatRows - 1

    wtChat:PopBack()

    end

    end

    ------------------------------------------------------------------------------------

    вызов для вывода 1 строчки делаем так:

    Code:
    LogToChat({ text = "Привки ВСЕМ!", color = "LogColorGreen" })

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

    Code:
    local delay = 20

    function OnEventSecondTimer( params )

     --- очистить то что было в чат послано, чтобы не раздувать размер массива строк в окне чата - иначе он тормозит жутко потом

    if delay< 0 then ClearChat() else delay = delay - 1 end

    end

    тогда чат не будет тормозить из-за того что массив его строчек раздувается до бесконечности

  10. и вызов:

    Code:
    wtScale(stateMainForm,  0.7, 0.8, true)

    уменьшит ВСЕ элементы системного интерфейса!!!!

    я так себе в TargetsManager сделала!

    однако как я заметила все текстуры, иконки и картинки, вставленные через

    Code:
    <BackLayer href="w.(WidgetLayerTiledTexture).xdb#xpointer(/WidgetLayerTiledTexture)" />

    не корректно отображаются - короче они не отрегулировались. кто-нибудь знает почему? Может быть надо все делать через:

    Code:

    <BackLayer href="w.(WidgetLayerSimpleTexture).xdb#xpointer(/WidgetLayerSimpleTexture)" />

    а как рамку у поля ввода сделать тогда правильно? которые у меня в AucEDSman есть

  11. вот с помощью подпрограмм можно все элементы интерфейса посжимать/переместить

    Code:

    function wtResize( w, dX, dY )

    local place = w:GetPlacementPlain()

    place.sizeX = place.sizeX + dX

    place.sizeY = place.sizeY + dY

    w:SetPlacementPlain(place)

    end

    function wtScale( w, scaleX, scaleY, andChildrens )

    local place = w:GetPlacementPlain()

    place.posX = math.ceil(place.posX * scaleX)

    place.sizeX = math.ceil(place.sizeX * scaleX)

    place.highPosX = math.ceil(place.highPosX * scaleX)

    place.posY = math.ceil(place.posY * scaleY)

    place.sizeY = math.ceil(place.sizeY * scaleY)

    place.highPosY = math.ceil(place.highPosY * scaleY)

    w:SetPlacementPlain(place)

    if andChildrens then

    --- всех детишек тоже

    for _, wCh in w:GetNamedChildren() do

    wtScale( wCh, scaleX, scaleY, andChildrens )

    end

    end

    end

    function wtMove( w, shiftX, shiftY, highShiftX, highShiftY )

    local place = w:GetPlacementPlain()

    place.posX = place.posX + shiftX

    place.posY = place.posY + shiftY

    if highShiftX then place.highPosX = place.highPosX + highShiftX end

    if highShiftY then place.highPosY = place.highPosY + highShiftY end

    w:SetPlacementPlain(place)

    end

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования