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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

knight_rider

Разработчик аддонов
  • Постов

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

  • Посещение

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

  1. Отличный аддон, спасибо автор.

    Я его немного переделал под себя. Когда находит корону и у игрока нет цели, то берет корону в цель. Это позволило избавится от кнопки и ускорить время переключения на корону. К сожалению автор скомпилировал r9, поэтому моя модификация основана на r8

  2. RuneCalc

    Просмотр файла

    Автор исходной версии аддона: Knight_Rider

    При объединении Рун, помогает выставить правильное соотношение пыли и крошки, основываясь на их стоимости.

    Для корректного вычисления необходимо обрабатываемую руну, перед соединением, переместить в свободный слот сумки.

    When you Combine Runes, helps set the correct ratio of Gold Dust, and Crystal Chips, based on their price.

    For the correct calculation you must move treated rune into a free slot bags before joining.


     

  3. можно сказать предрелизная версия.

    Сделано:

    - окно конфига, в котором задается стоимость компрнентов с сохранением параметров в глобальную секцию user.cfg.

    - поправил вывод числовых значений

    7tsvjFDU.png

    Недостатки:

    - Для корректного определения руны, которая обрабатывается, ее необходимо переместить в свободную ячейку.

    - Нет защиты "от дурака"

    ToDo List:

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

    - ElitLine выровняна по левому краю, надо сделать по правому. Пока не понял как.

    - Навести порядок в переменных и коде

    На зарубежных серверах не играл, поэтому не в курсе, актуален аддон для них или нет. При необходимости сделаю его мультиязычным.

    SLA и Skillcoder уже не появлялись. К кому обращаться по поводу публикации на главной?

    UPD

    перезалил 27.01.11 в 13.00 по киеву. при старте игры теперь аддон не отображается

  4. Желательно сделать событие, которое будет оповещать аддону о том, что его сейчас выгрузят. Нужно для того, чтоб он мог исправить мелкие пакости.

    Помнится как-то поставил миникарту и выключил ее в АМ, при этом сохранив этот статус. В результате при загрузке миникарта инициализировалась и выключала компас. После этого АМ ее выгружал и получалось что ни миникарты ни компаса небыло.

    Если б было это событие, то миникарта могла бы вновь вызвать компас перед выгрузкой

  5. Сырая альфа версия.

    Для установки поместить pak файл в папку addons

    n9vM7LWQ.png

    Недостатки:

    - Стоимость крошки в кристаллах и курс кристалов в игровой валюте пока заданы в коде.

    - Для корректного определения руны, которая обрабатывается, ее необходимо переместить в свободную ячейку.

    - Кривовато выводятся цифровые значения

    - Нет защиты "от дурака"

    ToDo List:

    - создать окно конфига, в котором будет задаваться их стоимость с возможностью сохранения.

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

  6. их вытянуть можно, но не пользовательскими функциями. Вот выдержки из манула

    Code:
    -- класс

    TextViewSafe

    -- семантика

    function GetValuedText( self )

    -- входные параметры отсутствуют

    -- возвращаемое значение

    ValuedText - текст

    -- пример

    local text = wtTextView:GetValuedText()

    LogInfo( debugCommon.FromValuedText( text, false ) )

  7. Code:

    local itemValObj = wtRuneCounter:GetValuedText( )
    local wString = itemValObj:GetId()
    LogInfo( "itemValObj = ", wString)

    выдало в лог
    Code:

    Error: addon RuneCalc: Error while running the chunk
    Error: addon RuneCalc:    [string "Mods/Addons/RuneCalc/RuneCalc.lua"] :65: attempt to call method `GetId' (a nil value)
    Error: addon RuneCalc:   func: GetId, method, line: -1, defined: C, line: -1,  [C] 
    Error: addon RuneCalc:     func: OnTimer, global, line: 65, defined: Lua, line: 48,  [string "Mods/Addons/RuneCalc/RuneCalc.lua"] 

    проанализировал itemValObj найденой на форуме функцией
    Code:
    researchObj("itemValObj",itemValObj)

    Вот что получил. В обьекте нет таких функций
    Code:

    Info: addon RuneCalc: itemValObj    SetFormat:=function: 0BA55860
    Info: addon RuneCalc: itemValObj    SetClassVal:=function: 08B27FF8
    Info: addon RuneCalc: itemValObj    __gc:=function: 2132BC18
    Info: addon RuneCalc: itemValObj    SetVal:=function: 13D38B78
    Info: addon RuneCalc: itemValObj    CreateCopy:=function: 1EB73230
    Info: addon RuneCalc: itemValObj    __index:=table: 1E62D2D0
    Info: addon RuneCalc: itemValObj    ClearValues:=function: 13D38B30
    Info: addon RuneCalc: itemValObj    _:=userdata: 0E400B58{userdata}


    Вот код того, что есть. Сейчас работаю над GUI.
    Code:
    ---------------------------------------------------------------------------------
    -- GLOBALS
    ---------------------------------------------------------------------------------

    -- Панели ----------------------------
    Global( "wtMainPanel", nil )
    Global( "wtgoldDust", nil )
    Global( "wtcrystalCrumb", nil )
    Global( "wtruneName", nil )
    Global( "wtContextRuneCombiner2", nil )
    Global( "wtSlider", nil )
    Global( "wtRuneCounter", nil )
    -- Other ---------------------------
    Global( "visible", false )

    Global( "ItemId", nil ) --- Идентификатор последней активной ячейки
    Global( "RuneId", nil ) --- Идентификатор руны
    Global( "RuneName", nil ) --- Идентификатор руны
    Global( "PriseOf10kGoldenDust", 90000 ) --- Цена 1000 золотой пыли в деньгах
    Global( "PriseOf1CrystalCrumb", 3 ) --- Цена 1 кристаллической крошки в кристаллах
    Global( "PriseOf1Crystal", 80000 ) --- Цена 1 кристалла в деньгах
    Global( "goldDust", nil ) --- стоимость требуемой золотой пыльцы в деньгах
    Global( "crystalCrumb", nil ) --- стоимость требуемой кристалической крошки в деньгах
    Global( "totalPrice", nil ) --- Идентификатор руны

    ---------------------------------------------------------------------------------
    -- EVENT HANDLERS
    ---------------------------------------------------------------------------------

    function ToWS( str )
    if str then
    return userMods.ToWString( str )
    else
    return userMods.ToWString( "Not String" )
    end
    end

    function ToMoney( value )
    local result={Gold,Silver,Copper}
    result.Gold = math.floor(value / 10000)
    value =value - result.Gold
    result.Silver = math.floor(value / 100)
    value = value - result.Silver
    result.Copper = value
    end

    -- Каждую секунду
    function OnTimer( params )
    if wtContextRuneCombiner2:IsVisible()  == true and visible == false then
    visible = true
    LogInfo("Открылось окно")
    end
    if wtContextRuneCombiner2:IsVisible() == false and  visible == true then
    visible = false
    end
    if wtContextRuneCombiner2:IsVisible()  == true and visible == true then
    local count = wtSlider:GetPos()
    if RuneId then
    local itemValObj = wtRuneCounter:GetValuedText( )
    researchObj("itemValObj",itemValObj)
    local price = avatar.GetCombineRunesPrice( RuneId, count - 7, 1 )
    --LogInfo( "gold dust = ", price.goldDust, " crystal crumb = ", price.crystalCrumb, " slide = ", count )
    goldDust = price.goldDust * ( PriseOf10kGoldenDust / 1000 ) 
    crystalCrumb = price.crystalCrumb * ( PriseOf1CrystalCrumb * PriseOf1Crystal )
    totalPrice = goldDust + crystalCrumb
    wtgoldDust:SetVal( "value", common.FormatInt( goldDust , "%d" ) )
    wtcrystalCrumb:SetVal( "value", common.FormatInt( crystalCrumb , "%d" ) )
    --LogInfo( "count = ", goldDust," crystalCrumb = ", crystalCrumb," totalPrice = ", totalPrice )
    end
    end
    end

    -- При скрытии интерфейса (ALT+Z)
    function OnToggleUI( params )
    mainForm:Show( params.visible )
    end

    -- Запрос используемой памяти от "AddonManager"
    function OnAMMemUsageRequest( params )
    userMods.SendEvent( "U_EVENT_ADDON_MEM_USAGE_RESPONSE", { sender = common.GetAddonName(), memUsage = gcinfo() } )
    end

    -- Реакция на перемещение предмета в сумке
    function OnInventory  ( params )
    ItemId = avatar.GetInventoryItemId( params.slot )
    local itemInfo = avatar.GetItemInfo( ItemId )
    if itemInfo.runeInfo then
    RuneId = ItemId
    RuneName = itemInfo.name
    end
    end
    ---------------------------------------------------------------------------------
    -- INITIALIZATION
    ---------------------------------------------------------------------------------
    function Init()

    wtMainPanel = mainForm:GetChildChecked( "MainPanel" , false )

    wtContextRuneCombiner2 = stateMainForm:GetChildChecked("ContextRuneCombiner2", false )
    wtContextRuneCombiner2 = wtContextRuneCombiner2:GetChildChecked("MainPanel", false )
    wtSlider = wtContextRuneCombiner2:GetChildChecked("Slider", true )
    wtRuneCounter = wtContextRuneCombiner2:GetChildChecked("HigherRune", false )
    wtRuneCounter = wtRuneCounter:GetChildChecked("Need", false )

    common.RegisterEventHandler( OnTimer, "EVENT_SECOND_TIMER" )
    common.RegisterEventHandler( OnInventory , "EVENT_INVENTORY_ITEM_CHANGED" ) 

    -- Скрывать по "ALT+Z"
    common.RegisterEventHandler( OnToggleUI, "SCRIPT_TOGGLE_UI" )

    -- События "AddonManager"
    common.RegisterEventHandler( OnAMMemUsageRequest, "U_EVENT_ADDON_MEM_USAGE_REQUEST" )
    end
    ---------------------------------------------------------------------------------
    Init()
    ---------------------------------------------------------------------------------
  8. Code:

    local itemValObj = wtRuneCounter:GetValuedText( )
    local wString = itemValObj:GetText()
    local result1 = common.GetIntFromWString( wString )

    wtRuneCounter - виджет, из которого необходимо получить строку.
    получаю в log
    Code:
    Error: addon RuneCalc: Error while running the chunk
    Error: addon RuneCalc:    [string "Mods/Addons/RuneCalc/RuneCalc.lua"] :56: attempt to call method `GetText' (a nil value)
    Error: addon RuneCalc:   func: GetText, method, line: -1, defined: C, line: -1,  [C] 
    Error: addon RuneCalc:     func: OnTimer, global, line: 56, defined: Lua, line: 39,  [string "Mods/Addons/RuneCalc/RuneCalc.lua"] 

    Может выполняю не правильную последовательность действыи?
    GetValuedText возвращает переменную типа userdata, может из-за этого не получается
  9. Хотел получить числовове значение из строги при помощи GetValuedText( ). Полазив по форуму понял, что разрабы не доработали API и эта функция безполезна. Перешел к варианту avatar.GetCombineRunesPrice( runeId, crystalCrumbBonus, count )

    crystalCrumbBonus - значение слайдера, удалось получить на легке;

    count - количество создаваемых рун, получить не получилось по причине все того-же GetValuedText( );

    runeId - id предмета в сумке. Получаю по методу, описанному в аддоне AucEDSman. Для использования предмета в аддоне его придварительно надо перетащи в свободную ячейку.

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

    Читал это, но ничего нового не нашел

    upd: Идеально было бы извлечь объект из ContextRuneCombiner2, но достучатся до переменных виджета не удалось

  10. Спасибо, буду изучать

    Code:
    Info: addon RuneCalc: :MainPanel

    Info: addon RuneCalc: :MainPanel:CrystalTube

    Info: addon RuneCalc: :MainPanel:CrystalTube:FlowHighlight

    Info: addon RuneCalc: :MainPanel:GoldTube

    Info: addon RuneCalc: :MainPanel:GoldTube:FlowHighlight

    Info: addon RuneCalc: :MainPanel:GoldenCorner

    Info: addon RuneCalc: :MainPanel:GoldenCorner:CornerCross

    Info: addon RuneCalc: :MainPanel:Reset

    Info: addon RuneCalc: :MainPanel:WindowHeader

    Info: addon RuneCalc: :MainPanel:WindowHeader:HeaderText

    Info: addon RuneCalc: :MainPanel:Combine

    Info: addon RuneCalc: :MainPanel:GoldenDust

    Info: addon RuneCalc: :MainPanel:GoldenDust:Need

    Info: addon RuneCalc: :MainPanel:GoldenDust:ItemTexture

    Info: addon RuneCalc: :MainPanel:GoldenDust:Have

    Info: addon RuneCalc: :MainPanel:LesserRune

    Info: addon RuneCalc: :MainPanel:LesserRune:RuneLevel

    Info: addon RuneCalc: :MainPanel:LesserRune:Need

    Info: addon RuneCalc: :MainPanel:LesserRune:ItemTexture

    Info: addon RuneCalc: :MainPanel:LesserRune:RuneGlow

    Info: addon RuneCalc: :MainPanel:LesserRune:Have

    Info: addon RuneCalc: :MainPanel:CrystalDust

    Info: addon RuneCalc: :MainPanel:CrystalDust:Need

    Info: addon RuneCalc: :MainPanel:CrystalDust:ItemTexture

    Info: addon RuneCalc: :MainPanel:CrystalDust:Have

    Info: addon RuneCalc: :MainPanel:HigherRune

    Info: addon RuneCalc: :MainPanel:HigherRune:ButtonScrollLeft

    Info: addon RuneCalc: :MainPanel:HigherRune:ButtonScrollRight

    Info: addon RuneCalc: :MainPanel:HigherRune:RuneLevel

    Info: addon RuneCalc: :MainPanel:HigherRune:ItemTexture

    Info: addon RuneCalc: :MainPanel:HigherRune:RuneGlow

    Info: addon RuneCalc: :MainPanel:HigherRune:Need

    Info: addon RuneCalc: :MainPanel:Chamber

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberOverlay

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberOverlay:ChamberGlow

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberOverlay:FlowHighlight

    Info: addon RuneCalc: :MainPanel:Chamber:Slider

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberMixed

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberMixed:MixedCrystal

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberMixed:MixedBoth

    Info: addon RuneCalc: :MainPanel:Chamber:ChamberMixed:MixedGold

    По сути мне необходимо GoldenDust:Need и CrystalDust:Need. Теперь буду копать дальше
  11. Пробовал покурить гугл, безуспешно. Полазив по форуму получил от виджета следующее

    Code:
    Info: addon RuneCalc: ContextRuneCombiner2:    GetBackgroundColor:=function: 1366ED80

    Info: addon RuneCalc: ContextRuneCombiner2:    Enable:=function: 1366F2A0

    Info: addon RuneCalc: ContextRuneCombiner2:    SetFocus:=function: 1366F300

    Info: addon RuneCalc: ContextRuneCombiner2:    SetBackgroundTexture:=function: 1366EDE0

    Info: addon RuneCalc: ContextRuneCombiner2:    IsFocused:=function: 1366F2E8

    Info: addon RuneCalc: ContextRuneCombiner2:    GetNamedChildren:=function: 1366F348

    Info: addon RuneCalc: ContextRuneCombiner2:    GetFade:=function: 1366F258

    Info: addon RuneCalc: ContextRuneCombiner2:    SetForegroundClearMaskEffect:=function: 1366EE88

    Info: addon RuneCalc: ContextRuneCombiner2:    SetForegroundColor:=function: 1366EDC8

    Info: addon RuneCalc: ContextRuneCombiner2:    SetPriority:=function: 1366F2D0

    Info: addon RuneCalc: ContextRuneCombiner2:    GetParent:=function: 1366F360

    Info: addon RuneCalc: ContextRuneCombiner2:    GetName:=function: 1366EF70

    Info: addon RuneCalc: ContextRuneCombiner2:    Show:=function: 1366EFB8

    Info: addon RuneCalc: ContextRuneCombiner2:    GetRealRect:=function: 1366EEA0

    Info: addon RuneCalc: ContextRuneCombiner2:    AddChild:=function: 1366EE10

    Info: addon RuneCalc: ContextRuneCombiner2:    IsEnabled:=function: 1366F288

    Info: addon RuneCalc: ContextRuneCombiner2:    SetBackgroundColor:=function: 1366ED98

    Info: addon RuneCalc: ContextRuneCombiner2:    GetPriority:=function: 1366F2B8

    Info: addon RuneCalc: ContextRuneCombiner2:    PlayResizeEffect:=function: 1366F3A8

    Info: addon RuneCalc: ContextRuneCombiner2:    SetBackgroundClearMaskEffect:=function: 1366EE70

    Info: addon RuneCalc: ContextRuneCombiner2:    FinishMoveEffect:=function: 1366ED10

    Info: addon RuneCalc: ContextRuneCombiner2:    SetPlacementPlain:=function: 1366F390

    Info: addon RuneCalc: ContextRuneCombiner2:    FinishFadeEffect:=function: 1366ED68

    Info: addon RuneCalc: ContextRuneCombiner2:    SetBackgroundBlendEffect:=function: 1366EE40

    Info: addon RuneCalc: ContextRuneCombiner2:    CreateWidgetByDesc:=function: 1366EF40

    Info: addon RuneCalc: ContextRuneCombiner2:    __index:=table: 1366ECB8

    Info: addon RuneCalc: ContextRuneCombiner2:    GetInstanceId:=function: 1366EEE8

    Info: addon RuneCalc: ContextRuneCombiner2:    DestroyWidget:=function: 1366EED0

    Info: addon RuneCalc: ContextRuneCombiner2:    IsVisible:=function: 1366EFA0

    Info: addon RuneCalc: ContextRuneCombiner2:    GetForegroundColor:=function: 1366EDB0

    Info: addon RuneCalc: ContextRuneCombiner2:    SetForegroundBlendEffect:=function: 1366EE58

    Info: addon RuneCalc: ContextRuneCombiner2:    GetChildUnchecked:=function: 1366F330

    Info: addon RuneCalc: ContextRuneCombiner2:    SetForegroundTexture:=function: 1366EE28

    Info: addon RuneCalc: ContextRuneCombiner2:    IsEqual:=function: 1366EDF8

    Info: addon RuneCalc: ContextRuneCombiner2:    GetChildChecked:=function: 1366F318

    Info: addon RuneCalc: ContextRuneCombiner2:    PlayMoveEffect:=function: 1366ECF8

    Info: addon RuneCalc: ContextRuneCombiner2:    SetFade:=function: 1366F270

    Info: addon RuneCalc: ContextRuneCombiner2:    GetWidgetDesc:=function: 1366EEB8

    Info: addon RuneCalc: ContextRuneCombiner2:    GetPlacementPlain:=function: 1366F378

    Info: addon RuneCalc: ContextRuneCombiner2:    __gc:=function: 1366EF00

    Info: addon RuneCalc: ContextRuneCombiner2:    SetName:=function: 1366EF88

    Info: addon RuneCalc: ContextRuneCombiner2:    FinishResizeEffect:=function: 1366ECE0

    Info: addon RuneCalc: ContextRuneCombiner2:    PlayFadeEffect:=function: 1366ED50

    Info: addon RuneCalc: ContextRuneCombiner2:    _:=userdata: 1367A578{userdata}

    Можете направть меня в нужное русло? Что почитать? Есть ли из работающих аддоны, которые получают ссылки на эелементы другого виджета?

    Ну в общем без примера не обойтись :-(

    P.S. я только начал открывать для себя Lua

  12. Доброго времени суток.

    Созрела мысль написания внутриигрового калькулятора рун. Заодно решил изучить LUA.

    И так вот моя задумка. При открытии окна соединения рун рядышком отображать окно аддона. Аддон читает количество необходимой пыльци, умножает на стоимость одной, считает количество крошки и умножает на стоимость 1й. После этого он суммирует оба значения и мы получаем стомость новой руны в золоте. При смене позиции ползунка аддон доджен пересчитывать значение. Так же хотел добавить editbox для ввода нынешнего курса кристаллов.

    После поанировки перешел к реализации. Открыл манул для разрабртчикав и начал искать event, который отвечает за открытие окна соединения рун. Таким образом моя первоначальная задумка рассыпалась прахом.

    Единсивенное что я нашел avatar.GetCombineRunesPrice( runeId, crystalCrumbBonus, count ), который, как я понял, работает с номером ячейки из сумки. Т.е. с его помощью можно выделив руну посчитать стоимость руны полгнав ее со значением crystalCrumbBonus в диапазоне [-7,+7]. Но тут возник другой вопрос, на какой event реагирует сумка?

    Но мне все же хотелось бы попробовать реализовать с окном соединения, есть какие-нибуть идеи, как это можно реализовать?

  13. доброго времени суток. помню что были проблемы с чтением клавиш, не знаю как сейчас. в общем, уж сильно хочется аддончик который, как в командной строке, кнопками(будь то клавиатура, что желательнее, или кнопки интерфейса) вверх и вниз листал бы отправленные сообщения в поле ввода текста.

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

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

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

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