Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Индикаторы союзников7 - Страница 2

Упомянутые в теме пользователи:

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 13 по 24 из 25
  1. #13
    Активист Аватар для аффтор
    Регистрация
    05.01.2012
    Сообщений
    41
    Поблагодарил(а)
    79
    Получено благодарностей: 28 (сообщений: 18).
    Репутация: 35
    Цитата Сообщение от DreamlØlz Посмотреть сообщение
    нейм плейты не сортируются некак. Т.е сделаешь базу гуидов (базу ников нет смысла делать) , плейты спрятал они рандомно отсортировались и как будешь гуилы нейм плейтов брать? Ну да заново нужно будет брать в таргет и тд.
    Пользуясь случаем спрошу, можно ли масштабировать нейм плейты, без особых танцев с бубном ? типа неймплейт:SetScale (0.8)
    Последний раз редактировалось аффтор; 15.01.2016 в 23:16.

  2. #14
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от аффтор Посмотреть сообщение
    Пользуясь случаем спрошу, можно ли масштабировать нейм плейты, без особых танцев с бубном ? типа неймплейт:SetScale (0.8)
    спрятать дефолтный статусбар , создать свой , родителя для него сделать фрейму нужного масштаба , сделать хайд и шоу хуки что бы прятать новые статусбары вместе с плейтой и value хуки что бы новый статусбар перенимал значение старого. Других вариантов масштабировать статусбар нет т.к вместе с масштабом меняется и пасштаб позиций.

    Если же по глупости менять масштаб то выйдет следующее:



    - - - Updated - - -

    Цитата Сообщение от decemberx Посмотреть сообщение
    я не лазил еще в неймплейты, но берут же как то и гуид и имена и ауры, еще у них тултип вроде есть, когда мышкой наводишь появляется же? через него вообще было бы сказачно, т.к. там все необходимое.

    -------
    хотя тултип наверное через маусовер берет инфу, не вариант, но можно в базу добавлять и таким способом)
    -------
    -------
    если даже нельзя брать с неймплейтов ничего и таблица беспалезна, то можно сразу менять цвет, если пройтись мышкой по неймлейтам, прикольная же схема и главное полезная, ведь на тултип смотреть неок.
    А нет тут ничего прикольного , нужно же как то на арене и бг отличать "своих" от противников , вот ребята по цвету и отличают =) Ну при наведении мышкой можно сделать , но когда плейта спрячется а потом покажется - придется заново наводить мышкой .

  3. 1 пользователь сказал cпасибо DreamlØlz за это полезное сообщение:

    аффтор (16.01.2016)

  4. #15
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    а можно к неймплейтам как нибудь датчик трита прикрутить? для танков это ух как круто было бы.
    Там же есть агро регион , если разбить регионы плейты то агро это первый регион . он меняет 3 цвета - прозрачный если до срыва далеко , желтый если ты близок к срыву агро и красный если агро на тебе.

  5. #16
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    этого недостаточно, близы также сделали над целью в %, но эту систему(100,110,130 в %), помойму тока мобы понимают, поэтому многие с оменом бегают, но омен неудобен потому что как обычно где-то в углу находится.
    если по цвету или в % или в цифрах, то нужна другая, более понятная система. например % твоего трита от трита первого в списке(если ты первый, то следущего).
    учитывая что тритлист там уже есть, реально прикрутить это к неймплейтам?
    Там нет тритлиста. Негде нет тритлиста , есть ивент , который идет в случае если игрок в группе , он и передает те самые цифры и из этих цифр выводят проценты , других способов нет. Из трит региона максимум можно получить цвет в hex , который потом конвертить в rgb . Что бы получить проценты, тебе нужно знать сколько трита набил танк и твой трит делить на его и умножать на 100 , из нейм плейты это получить нельзя , только белый , желтый , красный , причем не определишь сколько нужно , что бы из желтого перейти в красный.

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

  6. #17
    Старожил Аватар для palad
    Регистрация
    22.06.2012
    Сообщений
    238
    Поблагодарил(а)
    15
    Получено благодарностей: 25 (сообщений: 19).
    Репутация: 25
    Цитата Сообщение от decemberx Посмотреть сообщение
    Tidy Plates: Threat Plates
    в замесах знатно фпс садит
    ■■■■

  7. #18
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    Tidy Plates: Threat Plates, аказца все уже сделали, тупо поменяли прозрачный на зеленый, плюс танкмод добавили. должно хватать
    ---
    еще как я и писал выше, по маусоверу добавляет класс к плейтнейму, только не цвет, а иконку.
    Ну ок. Поменяли , что дальше? Получать информацию можно только для ЮНИТА (ей богу не знаю сколько еще раз это повторять), юниты это :

    "arenaN" -- N = 1,2,3,4,5
    "arenapetN" --N = 1,2,3,4,5
    "bossN" --N = 1,2,3,4
    "focus"
    "mouseover"
    "none"
    "partyN" -- N = 1,2,3,4
    "partypetN" --N = 1,2,3, or 4
    "pet"
    "player"
    "raidN" -- N 1,2,3,...,40
    "raidpetN" -- N = 1,2,3,...,40
    "target"
    "vehicle"

    И как ты получишь инфу для плейты , которая не принадлежит юниту?

    Есть 10 мобов , моб1 , моб2 и тд . У тебя в цели моб8 , а тебе нужно получить информацию для моб3 , при этом он не является юнитом. Вариант это брать его в цель или наводить на его неймплейту мышкой (причем именно на нейм плейту , потому , что если навести именно на моба , то не появится маусовер регион и ты не узнаешь какому мобу принадлежит эта плейта).

    Слышал кулстори про поиск плейтов по имени ...

    Ну ок дилема - имена у мобов одинаковые , максимальное количество здоровья одинаковое , текущее здоровье сравнить нельзя т.к если хп выше 103к инфа со статусбара st:GetValue() не будет равняться UnitHealth() , теперь даже если захочешь найти плейту принадлежащую конкретному юниту - ты ее не найдешь.

    Окей , решили записывать в массивы гуиды мобов при взятии моба в таргет (это единственный способ, при котором нейм плейту для юнита "target" можно найти в 100% случаев верно). Набрался массив из 100+ нейм плейтов , привет 10 фпс в любом рейде, при этом после того как нейм плейта спрячется , найти ее по гуиду уже не получится т.к она ушла из поля зрения и как результат на ее место могла прийти новая нейм плейта.


    PS да я сделал себе ауры над нейм плейтами юнитов , да я сделал кастбары для юнитов , но это все только для юнитов . реализовать как в катаклизме и выше на стороне клиента нельзя. Плейты катаклизма и выше сами по себе передают информацию , которая дает возможность в 100% случаев находить плейту как минимум для юнита , как максимум для гуида по комбат логу и это все без записи в массивы всякого мусора который садит фпс при каждом новом поиске.
    Последний раз редактировалось DreamlØlz; 17.01.2016 в 13:12.

  8. #19
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    1) класс берется по юниту(маусоверу), и нужно перекрасить бордер или добавить иконку в завимости от класса.
    для чего это нужно? чтобы лишний раз не брать в таргет, или не смотреть на тултип, в случае если ты рассист/классист.

    2) чтобы сменить цвет угрозы с прозрачного на зеленый, в случае если у тебя агро>0 и агро<100, юнит вовсе не нужен.
    для чего это нужно? зеленый найти среди кучи красных плейтов гороздо проще чем прозрачный. для танков это то что нужно.
    Тогда придется дефолтный статусбар прятать и делать свой =) min, cur, max значения брать из стандартного , а цвета сравнивать (дефолтный со своим) , проблема только в том , что это делать можно только OnUpdate , а это сильную нагрузку на проц будет давать при большом количестве плейтов , как итоге потеря фпс.

    - - - Updated - - -

    Сделать это к стати не сложно.

  9. #20
    Старожил Аватар для palad
    Регистрация
    22.06.2012
    Сообщений
    238
    Поблагодарил(а)
    15
    Получено благодарностей: 25 (сообщений: 19).
    Репутация: 25
    дрим, а твои плейты при большом кол-ве тоже фпс садят?
    ■■■■

  10. #21
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от palad Посмотреть сообщение
    дрим, а твои плейты при большом кол-ве тоже фпс садят?
    Я столкнулся с батхертом который вышел иза разных разрешений экрана и забил на их разработку =) фпс садит бортик сделанный через SetBackdrop() , а у меня он именно так и сделан был ...

  11. #22
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    я всетаки не понимаю зачем OnUpdate и зачем новый рисовать.
    PHP код:
    local ic = CreateFrame("Frame")

    local function IsFrameNameplate(arg) local f = arg:GetRegions()
        return 
    f and f:GetObjectType() == "Texture" and f:GetTexture() == "Interface\\TargetingFrame\\UI-TargetingFrame-Flash" 
    end

    ic
    :SetScript("OnEvent", function() 
        for 
    i= 1, select('#',WorldFrame:GetChildren()) do
            
    local f = select(i,WorldFrame:GetChildren())
            if 
    IsFrameNameplate(f) then
                f
    .HB = select(1,f:GetChildren())
                if 
    f.HB and not f.HB.Icon then 
                    f
    .HB.Icon = f.HB:CreateTexture(nil,"ARTWORK")
                    
    f.HB.Icon:SetPoint("BOTTOMLEFT", f.HB, "BOTTOMLEFT",-15,0)
                    
    f.HB.Icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
                    
    f.HB.Icon:SetSize(10,10)
                    
    f.HB.Icon:SetTexture("Interface\\Icons\\Spell_Shadow_AbominationExplosion")
                    
    f.HB.Icon:Show()
                
    end
            end
        end
    end
    )
    ic:RegisterEvent("UPDATE_MOUSEOVER_UNIT") 
    осталось понять как взять гуид с неймплейта, создать таблицу(типа кеш) и если есть то ставить иконку класса, если нет то не ставить. если получится какнибудь взять имя, то это будет еще лучше, ведь через поиск на бг можно пробивать класс по имени, и без кеша обойтись.
    Без кэша и так можно обойтись ... А не проще ли тогда иконку класса на курсор зацепить?))

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

    У меня сейчас заминки с пк ... вторник-четверг набросаю.
    Последний раз редактировалось DreamlØlz; 17.01.2016 в 23:37.

  12. #23
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    не, прикол в том что когда эвент случается, иконки обновляются у всех неймплейтов и необходимости нету наводить мышкой на каждого.
    это даже круче чем в тидиплейтс
    А ты сделай прототип , 2 функции - одну я кидал на форум , определение типа юнита по гуиду , что бы определять игрок или нет (это упростит поиск плейты по маусоверу т.к в обычном случае для определения нейм плейты нужно навести курсор на саму плейту , что бы появился маусовер регион) и если это игрок тогда делать сравнение по нику , если ник совпадает тогда продолжать делать отсев по максимальному и текущему хп. И обработчик ивентов прямо на самой плейте , тогда перебор будет рекурсивный (циклы не йас) что ускорит работу. Ну и пару методов для самой плейты что бы не дублировать одинаковые куски кода, а сразу при ивенте вызывать метод и перекрашивать плейту или цеплять иконку.

  13. #24
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,208
    Поблагодарил(а)
    362
    Получено благодарностей: 1,441 (сообщений: 840).
    Репутация: 2401
    Цитата Сообщение от decemberx Посмотреть сообщение
    там всё оч не просто. до меня тока дошло что гуида в них нету, если тока текст, но этого должно хватать.
    -------
    помойму я понял почему после тока как постоишь в даларане длительное время, клиент лагает ужасно и непроходит пока не ребутнишь клиент. вот эти две функции WorldFrame:GetNumChildren() и select('#',WorldFrame:GetChildren() не сбрасываются.
    Так не будет лагать.

    PHP код:
    local plates = {}

    local FindPlates
    do
        
    local regionIndex = 0
        local Overlay 
    = [=[Interface\Tooltips\Nameplate-Border]=]
        
        
    local IsNamePlate = function(obj)
            
    local Name = obj:GetName()
            
    local _, OverlayRegion = obj:GetRegions()
            if(
    Name)then return end
            
    return OverlayRegion and OverlayRegion:GetObjectType() == "Texture" and OverlayRegion:GetTexture() == Overlay
        end
        
        FindPlates 
    = function(self)
            
    local numRegions = self:GetNumChildren()
            if 
    numRegions ~= regionIndex then
                regionIndex 
    = regionIndex + 1
                local obj 
    = select(regionIndex, self:GetChildren())
                if 
    IsNamePlate(obj) and not plates[obj] then
                    
    print("найдена плейта", obj, regionIndex )
                    
    plates[obj] = true
                end
                FindPlates
    (self)
            
    end
        end
    end

    WorldFrame
    :HookScript("OnUpdate", FindPlates) 
    Потом все что нужно делаеш с массивом plates , к примеру

    PHP код:
    for plate in pairs(plates) do
          
    plate:Hide()
    end 
    Последний раз редактировалось DreamlØlz; 19.01.2016 в 15:40.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Союзник природы
    от Аskеl в разделе Исправлено Cataclysm
    Ответов: 0
    Последнее сообщение: 27.06.2013, 22:36
  2. Предотвратить союз
    от Бешнер в разделе Корзина
    Ответов: 1
    Последнее сообщение: 27.05.2013, 22:11
  3. Кд союзника
    от Это опять он в разделе Корзина
    Ответов: 1
    Последнее сообщение: 04.02.2012, 23:34

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •