• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Информация о персонаже
Информация о персонаже
Nyll
Всем привет. Сегодня (сори что не вчера biggrin ) будем делать аддон который будет показывать статистику о персонаже.
Аддон будет выводить информацию такую как: Имя, Раса, Уровень, Фракция, Класс, Жизни, Мана.



Инструкция по созданию toc файла - тык
Ссылка на предыдущие статью - тык
Скачать notepad++ - тык
API функции - тык

Создадим фрейму для информации.

Code
myframess = CreateFrame("FRAME","my_Frame",UIParent);


п.с Фрейму вы можете делать передвижной а можете и нет smile (по желанию)

Указываем высоту и ширину фреймы.

Code
myframess:SetWidth(260);                  
myframess:SetHeight(150);


Дальше указываем позицию фреймы.

Code
myframess:SetPoint("CENTER");


И указываем что изначально наша фрейма должна быть скрыта.

Code
myframess:Hide()

Теперь переходим к тексту.
Создаем текст для имени персонажа.

Code
playerinfoname = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")


Указываем позицию.

Code
playerinfoname:SetPoint("CENTER", myframess, "CENTER", 0, 55)


И указываем размер.
Code
playerinfoname:SetWidth(myframess:GetRight() - myframess:GetLeft())


Те же действия делаем с остальным текстом...

Code
playerinforace = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinforace:SetPoint("CENTER", myframess, "CENTER", 0, 40)    
playerinforace:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfolevel = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfolevel:SetPoint("CENTER", myframess, "CENTER", 0, 25)    
playerinfolevel:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfofaction = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfofaction:SetPoint("CENTER", myframess, "CENTER", 0, 10)    
playerinfofaction:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfoclass = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfoclass:SetPoint("CENTER", myframess, "CENTER", 0, -5)    
playerinfoclass:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfohealth = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfohealth:SetPoint("CENTER", myframess, "CENTER", 0, -20)    
playerinfohealth:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfomana = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfomana:SetPoint("CENTER", myframess, "CENTER", 0, -35)    
playerinfomana:SetWidth(myframess:GetRight() - myframess:GetLeft())


Теперь создаем функцию с переменными и SetText.

Code
function playerinfo()


Первая переменная у нас будет захватывать ник.

Code
local playersname = UnitName("player");


Делаем для ника SetText.

Code
playerinfoname:SetText("|cffFFFFFFНик:|r "..playersname)


Дальше создаем переменную которая будет захватывать нашу "Расу"

Code
local playerrace = UnitRace("player")


Делаем для расы SetText.

Code
playerinforace:SetText("|cffFFFFFFРаса:|r "..playerrace)


Дальше делаем переменную с помощью которой мы будем выводить левел персонажа.

Code
local playerlevel = UnitLevel("player")


Задаем SetText.

Code
playerinfolevel:SetText("|cffFFFFFFУровень:|r "..playerlevel)


Дальше делаем переменную для вывода фракции.

Code
local playerfaction = UnitFactionGroup("player")


Задаем SetText.

Code
playerinfofaction:SetText("|cffFFFFFFФракция:|r "..playerfaction)


Теперь указываем переменную для вывода класса.

Code
local playerclass = UnitClassBase("player")

Задаем SetText.

Code
playerinfoclass:SetText("|cffFFFFFFКласс:|r "..playerclass)


И указываем переменные и SetText для получение маны и жизней персонажа.

Code
local playerhealth = UnitHealth("player")
playerinfohealth:SetText("|cffFFFFFFЖизни:|r "..playerhealth)
local playermana = UnitMana("player")
playerinfomana:SetText("|cffFFFFFFМана:|r "..playermana)


Дальше указываем что при запуски функции фрейма должна открываться.

Code
myframess:Show()


Закрываем фрейму.

Code
end


И создаем слеш команду для запуска всего этого smile

Code
SlashCmdList["PLAYERSINFO"] = playerinfo;
SLASH_PLAYERSINFO1 = "/info"


Весь код который должен у нас получится:

Code
myframess = CreateFrame("FRAME","my_Frame",UIParent);
myframess:SetWidth(260);                  
myframess:SetHeight(150);
myframess:SetPoint("CENTER");
myframess:Hide()

playerinfoname = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfoname:SetPoint("CENTER", myframess, "CENTER", 0, 55)    
playerinfoname:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinforace = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinforace:SetPoint("CENTER", myframess, "CENTER", 0, 40)    
playerinforace:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfolevel = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfolevel:SetPoint("CENTER", myframess, "CENTER", 0, 25)    
playerinfolevel:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfofaction = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfofaction:SetPoint("CENTER", myframess, "CENTER", 0, 10)    
playerinfofaction:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfoclass = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfoclass:SetPoint("CENTER", myframess, "CENTER", 0, -5)    
playerinfoclass:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfohealth = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfohealth:SetPoint("CENTER", myframess, "CENTER", 0, -20)    
playerinfohealth:SetWidth(myframess:GetRight() - myframess:GetLeft())    

playerinfomana = myframess:CreateFontString(nil, "OVERLAY", "GameFontNormal")
playerinfomana:SetPoint("CENTER", myframess, "CENTER", 0, -35)    
playerinfomana:SetWidth(myframess:GetRight() - myframess:GetLeft())    

function playerinfo()
local playersname = UnitName("player");    
playerinfoname:SetText("|cffFFFFFFНик:|r "..playersname)
local playerrace = UnitRace("player")
playerinforace:SetText("|cffFFFFFFРаса:|r "..playerrace)
local playerlevel = UnitLevel("player")
playerinfolevel:SetText("|cffFFFFFFУровень:|r "..playerlevel)
local playerfaction = UnitFactionGroup("player")
playerinfofaction:SetText("|cffFFFFFFФракция:|r "..playerfaction)
local playerclass = UnitClassBase("player")
playerinfoclass:SetText("|cffFFFFFFКласс:|r "..playerclass)
local playerhealth = UnitHealth("player")
playerinfohealth:SetText("|cffFFFFFFЖизни:|r "..playerhealth)
local playermana = UnitMana("player")
playerinfomana:SetText("|cffFFFFFFМана:|r "..playermana)
myframess:Show()
end
SlashCmdList["PLAYERSINFO"] = playerinfo;
SLASH_PLAYERSINFO1 = "/info"


На этом все. Удачи вам smile

[download]Info - для WoW 4.0[/download]
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Суббота, 12.05.2012, 15:14
Diablos
Скаут
А можно к версии 3.3.5 а?Плиз
Сообщение # 2 написано 12.05.2012 в 13:44
Nyll
Quote (Diablos)
А можно к версии 3.3.5 а?Плиз

Попробуй. Аддон на 3.3.5 может не пойти из за переменных. Но я сомневаюсь что он не пойдет. Все шикарно должно работать smile
Маме беркута привет!
Сообщение # 3 написано 12.05.2012 в 13:47
Diablos
Скаут
А можеш зделать плиз а то у мя на аддоны руки не оттуда ростут))
Сообщение # 4 написано 12.05.2012 в 13:52
Nyll
Quote (Diablos)
А можеш зделать плиз а то у мя на аддоны руки не оттуда ростут))

Ну я же к статья приложил файл. Скачай его кинь в аддонс.
Маме беркута привет!
Сообщение # 5 написано 12.05.2012 в 13:58
_dm666
<3 Death Metal
Quote (Nyll)
Фракцая

поправь)
Сообщение # 6 написано 12.05.2012 в 15:11
Nyll
std_Suicide, упс smile усе biggrin
Маме беркута привет!
Сообщение # 7 написано 12.05.2012 в 15:14
EnerGO
Скаут
а с таргетом пойдет ? или если ввести ник пресонжа через пробел
Сообщение # 8 написано 12.05.2012 в 15:26
Kante
Born To be Free
Nyll, а можешь сделать что-то связанное с цветным чатом перебором цветов и т.д?
Сообщение # 9 написано 12.05.2012 в 15:43
Nyll
Quote (Kante)
Nyll, а можешь сделать что-то связанное с цветным чатом перебором цветов и т.д?

Могу, но не буду.

Quote (EnerGO)
а с таргетом пойдет ? или если ввести ник пресонжа через пробел

пойдет но нужно чтобы обновляло. Чтобы работало по таргету нужно писать фрейму с эвентом взятия персонажа в таргет и поставить значение "Таргет".
Маме беркута привет!
Сообщение # 10 написано 12.05.2012 в 16:29
Ascreed
•°•Very Nice•°•
Nyll молодец)на 3.3.5 работает
вот только тут
Code
SLASH_PLAYERSINFO1 = "/info"

пришлось /info поменять на /char т.к почему то не хотело показывать
Сообщение # 11 написано 12.05.2012 в 20:09
Nyll
Quote (Ascreed)
пришлось /info поменять на /char т.к почему то не хотело показывать

Я в спешки писал smile (Я и так опоздал на огого скока)... Мог запилить ошибки в коде... так что если аддон будет ругаться *матом* копируйте сюда лог ошибки я исправлю smile
Маме беркута привет!
Сообщение # 12 написано 12.05.2012 в 20:50
Kante
Born To be Free
Не хотело наверн из-за того , что у тебя уже зарегана где-то /info команда
Сообщение # 13 написано 12.05.2012 в 20:51
Nyll
Quote (Kante)
Не хотело наверн из-за того , что у тебя уже зарегана где-то /info команда

сомневаюсь что такое. т.к в каждом популярном аддоне у команды есть префикс.
Например: /gp info и т.д.

Возможно в личе уже зарегистрирована команда /info.. Ну или я где-то недоглядел smile
Маме беркута привет!
Сообщение # 14 написано 12.05.2012 в 20:55
Ascreed
•°•Very Nice•°•
Quote
Не хотело наверн из-за того , что у тебя уже зарегана где-то /info команда

может быть...
Quote
Мог запилить ошибки в коде...

да нет,все окей работает же)вот только просвети,как сделать чтобы можно было передвигать?
Сообщение # 15 написано 12.05.2012 в 20:58
Nyll
Quote (Ascreed)
да нет,все окей работает же)вот только просвети,как сделать чтобы можно было передвигать?

Добавить аргумент к фрейме что она двигается. И "Забиндить - указать" что она передвигается нажатием кнопки мышки а именно: нажал > передвинул > отпустил.
Маме беркута привет!
Сообщение # 16 написано 12.05.2012 в 21:00
Nyll
ребят подкиньте идей для следующего гайда...
Я думал тему этого гайда 3 часа smile А что будет в след пятницу >_<
Маме беркута привет!
Сообщение # 17 написано 12.05.2012 в 21:04
Ascreed
•°•Very Nice•°•
Quote
Добавить аргумент к фрейме что она двигается. И "Забиндить - указать" что она передвигается нажатием кнопки мышки а именно: нажал > передвинул > отпустил.

если честно я нечего не понял)
Сообщение # 18 написано 12.05.2012 в 21:13
Nyll
Quote (Ascreed)
если честно я нечего не понял)

Code
myframess:SetMovable(true)
myframess:SetScript("OnMouseDown", myframess.StartMoving)
myframess:SetScript("OnMouseUp", myframess.StopMovingOrSizing)
Маме беркута привет!
Сообщение # 19 написано 12.05.2012 в 21:27
Kante
Born To be Free
Quote (Nyll)
ребят подкиньте идей для следующего гайда...
Я думал тему этого гайда 3 часа А что будет в след пятницу >_<


Quote (Kante)
Nyll, а можешь сделать что-то связанное с цветным чатом перебором цветов и т.д?

Добавлено (12.05.2012, 22:21)
---------------------------------------------
Например каждая буква своего цвета и т.д

Сообщение # 20 написано 12.05.2012 в 22:21
Nyll
Quote (Kante)
Например каждая буква своего цвета и т.д

додумайтесь сами до градиента... Специально не буду делать по нему урок smile

А если и буду то не очень и скоро.
Маме беркута привет!
Сообщение # 21 отредактировано Nyll - Суббота, 12.05.2012, 22:31
Kante
Born To be Free
ok

Добавлено (12.05.2012, 22:40)
---------------------------------------------
там от силы 20 символов... просто регулярные не очень знаю biggrin

Сообщение # 22 написано 12.05.2012 в 22:40
Nyll
Quote (Kante)
там от силы 20 символов... просто регулярные не очень знаю

Если моя логика не подводит то там нету регулярных выражений совсем smile И строк там будет около 20-30. (Ну это только по моему "Логическому" построению скрипта)
Маме беркута привет!
Сообщение # 23 написано 12.05.2012 в 22:42
Kante
Born To be Free
Хм... 1 человек сделал это из 20 символов blahblah но он жлоб prof

Добавлено (12.05.2012, 22:44)
---------------------------------------------
Ты ещё из скайпа удалил меня sleep Печально

Сообщение # 24 написано 12.05.2012 в 22:44
Nyll
Quote (Kante)
Хм... 1 человек сделал это из 20 символов но он жлоб

У зимы "мб" сам скрипт размером 20 символов... но механика сомой цветовой системы намного больше smile

Так что статьей на такую тематику даже и не стоит ждать smile
и п.с дальше будут статьи онли по графики... анимация и т.д...

Что касаемо скайпа можешь обратно добавится. (Если ты у меня в игноре скажи ник вытащу)
Маме беркута привет!
Сообщение # 25 написано 12.05.2012 в 22:49
Kante
Born To be Free
Не думаю , что игнор... хотя щас узнаем ok
Сообщение # 26 написано 12.05.2012 в 22:50
Vladyxxa
Капрал
на личе /info у меня лично все красиво работает, добавили себе еще
Code
function playerinfooff()
myframess:Hide()
end
SlashCmdList["playerinfooff"] = playerinfooff;   
SLASH_playerinfooff1 = "/infooff"

а также вид самого фрейма(поле де весь текст будет написан)
Code
myframess:SetBackdrop({bgFile = "Interface/Buttons/UI-SliderBar-Background",
edgeFile = "Interface\\Buttons\\UI-SliderBar-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 5, right = 5, top = 5, bottom = 5 }});

и вышло вполне даже симпатично:)
Сообщение # 27 отредактировано Vladyxxa - Суббота, 12.05.2012, 23:50
Berkut_TNT
Юный хакер :D
Спасибо, получилось.
Сообщение # 28 написано 13.05.2012 в 20:23
Форум » Обсуждение аддонов » Разработка аддонов WoW » Информация о персонаже
  • Страница 1 из 1
  • 1
Поиск: