|
Форум Обсуждение аддонов Разработка аддонов WoW Работа с GameTooltip |
Работа с GameTooltip |
Здравствуйте. Сегодня мы с вами сделаем маленький аддон который будет показывать GUID игрока, ID нпц.
Идею этого аддона (и код тоже) Я нашел в интернете тык. Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Преступим сразу к коду. *Маленькое инфо*: В одном из уроков я показывал игровую команду /eventtrace, с помощью которой можно посмотреть игровые ивенты. Дак вот она нам понадобится. Создаем локальную функцию в которой будет все добро находится. Code local function F() Дальше создаем переменную из которой будем получать всю информацию. Code local d = UnitGUID("mouseover") Из нее выходит непонятный нам код: 0xF13000ABE003E3EA (У каждого свой), потом этот код конвертируется в то что нам нужно. Теперь получаем номер. Это нужно чтобы определить кто это, Нпц или игрок или пет. Code local B = tonumber(d:sub(5,5), 16) % 8 Номера: 0 - Игрок (player) 3 - Нпц (Существо) 4 - Пет (Питомец игрока) Дальше получаем ID пета. Code local C = tonumber(d:sub(6,12), 16) Теперь ID нпц. Code local D = tonumber(d:sub(9,12), 16) И GUID игрока. Code local E = tonumber(d:sub(13,18), 16) GUID это как номер игрока, у каждого игрока он свой... (Сори если что написал что думаю :D) Дальше переводим GameTooltip в g (Для удобства.) Code local g = GameTooltip Теперь выводим всю информацию что мы получили на GameTooltip. Выводим информацию о персонаже, а именно player GUID. Code if g:IsShown() then if B==0 then g:AddLine("Player GUID: "..E) end Тут мы говорим: Если B равно 0 то мы пишем g:AddLine("Player GUID: "..E) Теперь выводим информацию о пете. Code if B==4 then g:AddLine("Пет ID: "..C) end Дальше информацию о НПЦ. Code if B==3 then g:AddLine("Нпц ID: "..D) end Теперь все это закрываем. Code end g:AppendText("") end end И приступим к фрейме. Создаем фрейму которая будет запускать наш ГеймТолтип при наведении курсора на что либо Code local f=CreateFrame("frame"); Дальше указываем ивент при включении которого наша функция будет запускаться. Code f:RegisterEvent("UPDATE_MOUSEOVER_UNIT"); А дальше указываем: если ивент запустился то выполняем запуск F. Code f:SetScript("OnEvent",F) Прошу заметить что название у фреймы и функции одинаково. Но как я говорил Lua чувствителен к регистру по этому у нас не выходят конфликты кода. Готовый код: Code local function F() local d = UnitGUID("mouseover") local B = tonumber(d:sub(5,5), 16) % 8 local C = tonumber(d:sub(6,12), 16) local D = tonumber(d:sub(9,12), 16) local E = tonumber(d:sub(13,18), 16) local g = GameTooltip if g:IsShown() then if B==0 then g:AddLine("Player GUID: "..E) end if B==4 then g:AddLine("Пет ID: "..C) end if B==3 then g:AddLine("Нпц ID: "..D) end g:AppendText("") end end local f=CreateFrame("frame"); f:RegisterEvent("UPDATE_MOUSEOVER_UNIT"); f:SetScript("OnEvent",F) Это на сегодня все. Удачи вам.
Маме беркута привет!
Сообщение # 1 написано 26.05.2012 в 10:36
|
| |||
| |||