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

Дайджест за июль-сентябрь

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

Сентябрь Август Июль

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

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

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

Бот статистики для Telegram

Удобная аналитика в телефоне.

Подробнее

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

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

Подробнее

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

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

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

icreator

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

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

  • Посещение

Весь контент icreator

  1. включи ДнД режим и таскай их
  2. о!! а тут у меня закомментирован ДО! так как он тогда был выключен а сейчас то он всегда включен. так что для его включения пишем так: 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
  3. обсуждение в теме аддона а не в общем форуме
  4. MinimapSla - там есть подгрузка координат
  5. да это явный баг - буду ловить его
  6. getVersionAO() - смотри в библиотеке в AddonsTools - там много есть полезных функций
  7. 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
  8. Запуск инспекции при смене цели 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
  9. обнови аддон - должно помочь
  10. я пока не играю в АО - надоело ( ошибки вылавливать лень... мож опять разрабы чего намудрили - у меня все по событиям делается - если сервер шлет событие про корабль когда вы не в астрале - вот и лезут ошибки... сама не проверяла
  11. видимо у вас версия клиента, которая не позволяет инспектировать игроков - только свою цель можно. Хотя я сделала определение версий внутри моего аддона - но может в вашей локализации это определение версий не работает (
  12. Тултип из аддона LootManager? - там можно их отключить приведи скрин чтобы понятнее было и все
  13. да это происходит когда корабль есть а хаба нету - события так приходят странно... ну и ошибки валятся... пусть пишет зашитый в откомплирированном файле а не реальный
  14. ого это что еще такое? причем тут картинка для ремонтника корабля?
  15. давно уже устройства аддон не показывает! вернее не показывают РАЗРАРБОТЧИКИ метки на устройствами (( метки вешаются но на экране их нету
  16. что сервер разрешил показать то и показывает аддон
  17. 2D и 3D - это не метки а сена куда эти метки лепятся. сами метки - то плоские картинки. 3D сцена - это значит метка вешается на сам объект и закрывается другими объектами 2D сцена - метка ползет по плоскости экрана - ей побоку что там в 3Д мире - поэтому такую метку видно ВЕЗДЕ. сейчас 2Д сцена только у метки своей цели есть - остальные метки в 3Д сцене расположены
  18. отпишись если получится - что да как делал
  19. да нашла ошибку - когда выключается панель "eg" из интерфейса. исправила
  20. установи правильно AddonsTools - именно в ту папку как надо
×
×
  • Создать...

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

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