Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
-
Постов
3 118 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Магазин
Галерея
Весь контент icreator
-
включи ДнД режим и таскай их
-
о!! а тут у меня закомментирован ДО! так как он тогда был выключен а сейчас то он всегда включен. так что для его включения пишем так: Code: local function getDress01(itemId) local info = avatar.GetItemInfo( itemId ) local dressInfo if info and info.runeInfo then --- это руна - она без бонусов dressInfo = { rune = info.runeInfo } else dressInfo = avatar.GetItemBonus(itemId) end return dressInfo end local tryToInspectON --- тут надо пока в цели юнит содрать с него всю инфо по одетости и запонмить ее local function Inspect(unitId, dressed) local dress = dressed or {} local info -- драконий облик: for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT_RITUAL ) do dress [slot] = getDress01( id ) end for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT) do dress [slot] = getDress01( id ) end if tryToInspectON then --- если это аддон инициировал то закончим avatar.EndInspect() tryToInspectON = nil end return dress end
-
обсуждение в теме аддона а не в общем форуме
-
MinimapSla - там есть подгрузка координат
-
да это явный баг - буду ловить его
-
getVersionAO() - смотри в библиотеке в AddonsTools - там много есть полезных функций
-
Code: --------------------------------------------------------------------------------- local function calcStats(Sts) ---- для каждого слота одежки local cnt, stsAll, rstAll, armAll, stsSum, rstSum, armSum, runeAtt, runeDef = 0, 0, 0, 0, 0, 0, 0, 0, 0 ---local myDress = unit.GetEquipmentItemIds( Me, ITEM_CONT_EQUIPMENT ) local mySts, mySts1, val, itemId, myInfo ---exObj("Sts", Sts) ---LogInfo("calcStats") local stsInn = {} for slot, v in Sts do if type(slot) == "number" then cnt = cnt + 1 itemId = unit.GetEquipmentItemId( Me, slot, ITEM_CONT_EQUIPMENT ) if v.rune then --- тут руна 28-29-30 слоты - атака, защита ---myInfo = avatar.GetItemInfo( itemId ) ---exObj("myRune:"..slot, myInfo.runeInfo) ---LogToChat(slot..":"..v.rune.runeLevel) if slot <31 then --- это атакующие runeAtt = runeAtt + v.rune.runeLevel else runeDef = runeDef + v.rune.runeLevel end else --- тут обычная шмотка mySts = itemId and avatar.GetItemBonus( itemId ) --innateStats.8.sysName="ENUM_IS_Intuition" --innateStats.1.base=10 --innateStats.1.effective=10 --misc.armorBonus=95 --misc.spellPower --resistances.1.sysName="ENUM_EDIVINE" --resistances.0.base=15 --resistances.0.effective=15 --- по всем характеристикам одежки mySts1 = mySts and mySts.innateStats val = 0 for i, vv in v.innateStats do stsSum = stsSum + vv.base val = val + vv.base - (mySts1 and mySts1 .base or 0) local indx = i + 1 --- 0й индекс не сортируется if not stsInn [indx] then stsInn [indx] = { name = string.sub (vv.sysName, 9), val = 0 } end stsInn [indx] .val = stsInn [indx] .val + vv.base end stsAll = stsAll + val val = 0 mySts1 = mySts and mySts.resistances for i, vv in v.resistances do rstSum = rstSum + vv.base val = val + vv.base - (mySts1 and mySts1 .base or 0) end rstAll = rstAll + val ---LogInfo(slot," targ:",v.misc.armor,"|",v.misc.armorBonus," my:",mySts.misc.armor,"|",mySts.misc.armorBonus) armSum = armSum + v.misc.armor armAll = armAll + v.misc.armor - (mySts and mySts.misc.armor or 0) end else --- тут поля timer end end if cnt > 0 then stsAll = math.floor(stsAll/cnt) rstAll = math.floor(rstAll/cnt) armAll = math.floor(armAll/cnt) table.sort( stsInn, function( a, return a.val > b.val end ) end ---if runeAtt > 0 then runeAtt = math.round(runeAtt * 3.333 ) end ---if runeDef > 0 then runeAtt = math.round(runeAtt * 3.333 ) end return stsAll, rstAll, armAll, stsSum, rstSum, armSum, runeAtt, runeDef, stsInn end local tryToInspectON ----"EVENT_INSPECT_STARTED"] = function(pars) --- тут надо пока в цели юнит содрать с него всю инфо по одетости и запонмить ее local function Inspect(unitId, dressed) local dress = dressed or {} -- [[ -- пашет! - драконий облик: for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT_RITUAL ) do --- ITEM_CONT_INVENTORY - не пашет LogInfo( slot, ":", id) end --] ] local info for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT) do info = avatar.GetItemInfo( id ) ---exObj("info",info) if info and info.runeInfo then --- это руна - она без бонусов ---exObj("bonus",avatar.GetItemBonus(id)) dress [slot] = { rune = info.runeInfo } ---elseif info and FromWS(info.name) then -- [[elseif info.sysClassName="Shield" then dress[slot] = avatar.GetItemBonus(id) dress [slot] = --]] else ---exObj("info",info) dress [slot] = avatar.GetItemBonus(id) end end if tryToInspectON then --- если это аддон инициировал то закончим avatar.EndInspect() tryToInspectON = nil end ---avatar.UnselectTarget() ---exObj("dress", dress) return dress end onEvent.EVENT_INSPECT_STARTED = function( pars ) local id = pars.id or avatar.GetInspectInfo().playerId if id and object.IsExist(id) then local name = FromWS( object.GetName(id) ) local uSts = { info = Inspect(id, unitStats [id] ) } unitStats [ name ] = uSts uSts.timer = getPS("InspectStatsTimer") or 3 uSts.sts, uSts.rst, uSts.arm, uSts.stsSum, uSts.rstSum, uSts.armSum, uSts.runeAtt, uSts.runeDef, uSts.innate = calcStats(unitStats [name] .info) --- инспекция тех кто далеко - своих согрупников! if not (EN [id] or FR [id] ) then onSpawned( { unitId = id } ) end ---LogToChat( name .. " - "..uSts.sts ..":".. uSts.rst.. " ="..uSts.arm ) myTargStatsShow( uSts ) myTargKillsShow( EN [id] or FR [id] ) --exObj("EN",EN [id] or FR [id] ) --exObj("inf",getAllInfo( id ) ) if toolTip.unitInfo and id == toolTip.unitInfo.id and toolTip.wt:IsVisible() then toolTip.prepare() else local fade = getPS("myTargTTFade") if fade and fade>0 then toolTip.prepare( getWTMyTargStats(), EN [id] or FR [id] , getPS("myTargTTShift") or { dx =50, dy = 30 }, { innCount = 0 } ) toolTip.Show( true ) toolTip.Fade( fade*1000, false ) end end for pType, elems in List do for i, elem in elems do if elem.Unit and elem.Unit.id == id then elemStatsShow(elem, pType) --- в случае если поменялись - обновим end end end end end function tryToInspect(name, id) local uSts = unitStats [name] if uSts then return uSts end --- не каждый раз смотреть а раз в минуту примерно tryToInspectON = true if getVersionAO() <= 2 then avatar.StartInspect() elseif object.IsExist(id) then avatar.StartInspect(id) -- в версии с Атолла можно всех персонажей смотреть без взятия в цель else tryToInspectON = nil end end
-
Запуск инспекции при смене цели Code: function OnEventAvatarTargetChanged( pars ) --- новую цель берем local aimId = unit.GetTarget(Me) if aimId then W("Stats_pan"):Show( true ) else W("Stats_pan"):Show( false ) return end if pars.reason == CHANGE_TARGET_DEAD_TARGET then return end local uSts, uInfo uInfo = EN [aimId] or FR [aimId] if not uInfo then return end if uInfo.isPlayer and getPS("InspectStats") ~= OFF then if aimId ~= Me then else onEvent.EVENT_INSPECT_STARTED( { id = Me } ) end uSts = tryToInspect( FromWS(object.GetName(aimId)), aimId ) end myTargKillsShow( uInfo ) myTargStatsShow( uSts ) end Запуск инспекции при наведении мышки на панельку Code: OnReactionElemOver = function( pars ) local key = pars.widget:GetName() ---LogToChat(" left_click "..key) local plateType = string.sub(key,1,2) if getPS(plateType,"ToolTip") == OFF then return end --- тут обязательно такой лист должен быть! if not List [plateType] then return end local num = tonumber(string.sub(key,3,4)) if not num then return end local unitInfo = List [plateType] [num] .Unit if not unitInfo then LogToChat("unitId empty, please reload addon",nil,true); return end if not unitInfo.isPlayer == true then return end local unitId = unitInfo.id if not unitId then return end if pars.active then if getVersionAO() > 2 and getPS("InspectStats") ~= OFF then -- тут версия выше АТОЛЛ - может инспектировать любого игрока tryToInspect( unitInfo.name, unitId ) end toolTip.prepare( pars.widget, unitInfo, nil, { innCount = getPS(plateType,"TTStatsCount") } ) toolTip.Show( true ) else toolTip.Show( false ) end end
-
обнови аддон - должно помочь
-
я пока не играю в АО - надоело ( ошибки вылавливать лень... мож опять разрабы чего намудрили - у меня все по событиям делается - если сервер шлет событие про корабль когда вы не в астрале - вот и лезут ошибки... сама не проверяла
-
видимо у вас версия клиента, которая не позволяет инспектировать игроков - только свою цель можно. Хотя я сделала определение версий внутри моего аддона - но может в вашей локализации это определение версий не работает (
-
Тултип из аддона LootManager? - там можно их отключить приведи скрин чтобы понятнее было и все
-
http://ui9.ru/forum/actionsmod/about
-
да это происходит когда корабль есть а хаба нету - события так приходят странно... ну и ошибки валятся... пусть пишет зашитый в откомплирированном файле а не реальный
-
ого это что еще такое? причем тут картинка для ремонтника корабля?
-
резет настроек сделай
-
давно уже устройства аддон не показывает! вернее не показывают РАЗРАРБОТЧИКИ метки на устройствами (( метки вешаются но на экране их нету
-
что сервер разрешил показать то и показывает аддон
-
без пробела надо
-
2D и 3D - это не метки а сена куда эти метки лепятся. сами метки - то плоские картинки. 3D сцена - это значит метка вешается на сам объект и закрывается другими объектами 2D сцена - метка ползет по плоскости экрана - ей побоку что там в 3Д мире - поэтому такую метку видно ВЕЗДЕ. сейчас 2Д сцена только у метки своей цели есть - остальные метки в 3Д сцене расположены
-
отпишись если получится - что да как делал
-
да нашла ошибку - когда выключается панель "eg" из интерфейса. исправила
-
установи правильно AddonsTools - именно в ту папку как надо
-
++++++++++++++++++++++++++++
