|
Форум Обсуждение аддонов Разработка аддонов WoW Информация о персонаже |
Информация о персонаже |
Всем привет. Сегодня (сори что не вчера ) будем делать аддон который будет показывать статистику о персонаже.
Аддон будет выводить информацию такую как: Имя, Раса, Уровень, Фракция, Класс, Жизни, Мана. Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Создадим фрейму для информации. Code myframess = CreateFrame("FRAME","my_Frame",UIParent); п.с Фрейму вы можете делать передвижной а можете и нет (по желанию) Указываем высоту и ширину фреймы. 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 И создаем слеш команду для запуска всего этого 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" На этом все. Удачи вам [download]Info - для WoW 4.0[/download]
Маме беркута привет!
|
Quote (Kante) Nyll, а можешь сделать что-то связанное с цветным чатом перебором цветов и т.д? Могу, но не буду. Quote (EnerGO) а с таргетом пойдет ? или если ввести ник пресонжа через пробел пойдет но нужно чтобы обновляло. Чтобы работало по таргету нужно писать фрейму с эвентом взятия персонажа в таргет и поставить значение "Таргет".
Маме беркута привет!
Сообщение # 10 написано 12.05.2012 в 16:29
|
Quote (Ascreed) пришлось /info поменять на /char т.к почему то не хотело показывать Я в спешки писал (Я и так опоздал на огого скока)... Мог запилить ошибки в коде... так что если аддон будет ругаться *матом* копируйте сюда лог ошибки я исправлю
Маме беркута привет!
Сообщение # 12 написано 12.05.2012 в 20:50
|
Quote (Kante) Не хотело наверн из-за того , что у тебя уже зарегана где-то /info команда сомневаюсь что такое. т.к в каждом популярном аддоне у команды есть префикс. Например: /gp info и т.д. Возможно в личе уже зарегистрирована команда /info.. Ну или я где-то недоглядел
Маме беркута привет!
Сообщение # 14 написано 12.05.2012 в 20:55
|
Quote Не хотело наверн из-за того , что у тебя уже зарегана где-то /info команда может быть... Quote Мог запилить ошибки в коде... да нет,все окей работает же)вот только просвети,как сделать чтобы можно было передвигать?
Сообщение # 15 написано 12.05.2012 в 20:58
|
Quote (Ascreed) да нет,все окей работает же)вот только просвети,как сделать чтобы можно было передвигать? Добавить аргумент к фрейме что она двигается. И "Забиндить - указать" что она передвигается нажатием кнопки мышки а именно: нажал > передвинул > отпустил.
Маме беркута привет!
Сообщение # 16 написано 12.05.2012 в 21:00
|
Quote (Nyll) ребят подкиньте идей для следующего гайда... Я думал тему этого гайда 3 часа А что будет в след пятницу >_< Quote (Kante) Nyll, а можешь сделать что-то связанное с цветным чатом перебором цветов и т.д? Добавлено (12.05.2012, 22:21)
Сообщение # 20 написано 12.05.2012 в 22:21
|
Quote (Kante) там от силы 20 символов... просто регулярные не очень знаю Если моя логика не подводит то там нету регулярных выражений совсем И строк там будет около 20-30. (Ну это только по моему "Логическому" построению скрипта)
Маме беркута привет!
Сообщение # 23 написано 12.05.2012 в 22:42
|
Quote (Kante) Хм... 1 человек сделал это из 20 символов но он жлоб У зимы "мб" сам скрипт размером 20 символов... но механика сомой цветовой системы намного больше Так что статьей на такую тематику даже и не стоит ждать и п.с дальше будут статьи онли по графики... анимация и т.д... Что касаемо скайпа можешь обратно добавится. (Если ты у меня в игноре скажи ник вытащу)
Маме беркута привет!
Сообщение # 25 написано 12.05.2012 в 22:49
|
на личе /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 }}); и вышло вполне даже симпатично:) |
| |||
| |||