knight_rider
-
Постов
147 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Трекер ошибок
Магазин
Галерея
Сообщения, опубликованные knight_rider
-
-
Отличный аддон, спасибо автор.
Я его немного переделал под себя. Когда находит корону и у игрока нет цели, то берет корону в цель. Это позволило избавится от кнопки и ускорить время переключения на корону. К сожалению автор скомпилировал r9, поэтому моя модификация основана на r8
File: Y8qUlaeM4qR5En2.zip -
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.
-
Добавил
-
Добавлено31.01.2011
-
Категория
-
-
Нажмите здесь, чтобы скачать файл
Высказывайте свои предложения, пожелания и рекомендации.
-
можно сказать предрелизная версия.
Сделано:
- окно конфига, в котором задается стоимость компрнентов с сохранением параметров в глобальную секцию user.cfg.
- поправил вывод числовых значений
Недостатки:
- Для корректного определения руны, которая обрабатывается, ее необходимо переместить в свободную ячейку.
- Нет защиты "от дурака"
ToDo List:
- по возможности API при начале создания руны автоматически выбирать самый выгодный вариант
- ElitLine выровняна по левому краю, надо сделать по правому. Пока не понял как.
- Навести порядок в переменных и коде
На зарубежных серверах не играл, поэтому не в курсе, актуален аддон для них или нет. При необходимости сделаю его мультиязычным.
SLA и Skillcoder уже не появлялись. К кому обращаться по поводу публикации на главной?
UPD
перезалил 27.01.11 в 13.00 по киеву. при старте игры теперь аддон не отображается
File: RuneCalc.pak -
Желательно сделать событие, которое будет оповещать аддону о том, что его сейчас выгрузят. Нужно для того, чтоб он мог исправить мелкие пакости.
Помнится как-то поставил миникарту и выключил ее в АМ, при этом сохранив этот статус. В результате при загрузке миникарта инициализировалась и выключала компас. После этого АМ ее выгружал и получалось что ни миникарты ни компаса небыло.
Если б было это событие, то миникарта могла бы вновь вызвать компас перед выгрузкой
-
You need delete string
Code:locales.de = locales.enfrom Locales.lua
-
Сырая альфа версия.
Для установки поместить pak файл в папку addons
Недостатки:
- Стоимость крошки в кристаллах и курс кристалов в игровой валюте пока заданы в коде.
- Для корректного определения руны, которая обрабатывается, ее необходимо переместить в свободную ячейку.
- Кривовато выводятся цифровые значения
- Нет защиты "от дурака"
ToDo List:
- создать окно конфига, в котором будет задаваться их стоимость с возможностью сохранения.
- по возможности при начале создания руны автоматически выбирать самый выгодный вариант
-
их вытянуть можно, но не пользовательскими функциями. Вот выдержки из манула
Code:-- классTextViewSafe
-- семантика
function GetValuedText( self )
-- входные параметры отсутствуют
-- возвращаемое значение
ValuedText - текст
-- пример
local text = wtTextView:GetValuedText()
LogInfo( debugCommon.FromValuedText( text, false ) )
-
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"] 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()
---------------------------------------------------------------------------------
-
Code:
local itemValObj = wtRuneCounter:GetValuedText( )
local wString = itemValObj:GetText()
local result1 = common.GetIntFromWString( wString )
wtRuneCounter - виджет, из которого необходимо получить строку.
получаю в logCode:Error: addon RuneCalc: Error while running the chunk
Error: addon RuneCalc: [string "Mods/Addons/RuneCalc/RuneCalc.lua"] 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, может из-за этого не получается -
Хотел получить числовове значение из строги при помощи GetValuedText( ). Полазив по форуму понял, что разрабы не доработали API и эта функция безполезна. Перешел к варианту avatar.GetCombineRunesPrice( runeId, crystalCrumbBonus, count )
crystalCrumbBonus - значение слайдера, удалось получить на легке;
count - количество создаваемых рун, получить не получилось по причине все того-же GetValuedText( );
runeId - id предмета в сумке. Получаю по методу, описанному в аддоне AucEDSman. Для использования предмета в аддоне его придварительно надо перетащи в свободную ячейку.
Может кто-нибуть знает способ получть индекс слота в инвентаре, который находится под мышкой, по возможности в момент надатия левой клавиши?
Читал это, но ничего нового не нашел
upd: Идеально было бы извлечь объект из ContextRuneCombiner2, но достучатся до переменных виджета не удалось
-
Спасибо, буду изучать
Code:Info: addon RuneCalc: :MainPanelПо сути мне необходимо GoldenDust:Need и CrystalDust:Need. Теперь буду копать дальше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
-
Пробовал покурить гугл, безуспешно. Полазив по форуму получил от виджета следующее
Code:Info: addon RuneCalc: ContextRuneCombiner2: GetBackgroundColor:=function: 1366ED80Info: 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
-
Спасибо. Теперь осталось разобраться, как от этого виджета получить информацию о состоянии полей или информацию RuneID и текущее значение ползунка.
-
Доброго времени суток.
Созрела мысль написания внутриигрового калькулятора рун. Заодно решил изучить LUA.
И так вот моя задумка. При открытии окна соединения рун рядышком отображать окно аддона. Аддон читает количество необходимой пыльци, умножает на стоимость одной, считает количество крошки и умножает на стоимость 1й. После этого он суммирует оба значения и мы получаем стомость новой руны в золоте. При смене позиции ползунка аддон доджен пересчитывать значение. Так же хотел добавить editbox для ввода нынешнего курса кристаллов.
После поанировки перешел к реализации. Открыл манул для разрабртчикав и начал искать event, который отвечает за открытие окна соединения рун. Таким образом моя первоначальная задумка рассыпалась прахом.
Единсивенное что я нашел avatar.GetCombineRunesPrice( runeId, crystalCrumbBonus, count ), который, как я понял, работает с номером ячейки из сумки. Т.е. с его помощью можно выделив руну посчитать стоимость руны полгнав ее со значением crystalCrumbBonus в диапазоне [-7,+7]. Но тут возник другой вопрос, на какой event реагирует сумка?
Но мне все же хотелось бы попробовать реализовать с окном соединения, есть какие-нибуть идеи, как это можно реализовать?
-
Аддон собирает деньги только с 1го сообщения. Остальные помечаются как прочитанные, но деньги в них остаються
-
Т.е ты говоришь что по средством аддона можно реализовать передачу сообщений игрокам противоположной фракции? Если это так, то можно дописать аддон-чат с империей/лигой, хотя б в приват.
-
доброго времени суток. помню что были проблемы с чтением клавиш, не знаю как сейчас. в общем, уж сильно хочется аддончик который, как в командной строке, кнопками(будь то клавиатура, что желательнее, или кнопки интерфейса) вверх и вниз листал бы отправленные сообщения в поле ввода текста.
-
можно аддоном реализовать отображение всех членов отряда на карте?
-
предлагаю в русской локализации заменить [П]риват на [Ш]епот, [О]тряд на [Р]ейд и [Г]руппа на [П]ати. Это позволит избежать повторения.
-
Предлагаю для кнопок добавить поле справа от ящика. Связано это с тем, что текущая кнопка закрывает кнопки при отправке сообщений. Ну или убирать при смене вкладок.
-
есть предложение. можно отрисовывать рамки не на картинке, а просто поверх диалога в той области, где должно находиться изображение. Таким образом визуально мы будем видеть рамку, но при этом в диалоги игры не вмешиваемся
-
Есть пожелание, после клика на кнопку открывать окно ввода текста.
-
Вы тут все слюной давитесь, но апи может быть урезан, и не давать возможности реализовать те или иные операции
AddonManager
в Техподдержка
Опубликовано
Заметил баг при написании аддона. Если выгрузить аддон, а потом загрузить, меняется его приоритет.