Prat 3.0
In loving memory of Jon Akthar (Sylvanaar)
Hello WoW community, I'm LuciferCatnip, Sylvanaar was my coworker and my mentor. It goes without saying that Jon was an amazingly talented individual. He always seemed to know everything... but he once said to me "It's not about knowing the answers, it's about asking the right questions", he always challenged me to ask me the right questions until I would arrive at the answer on my own terms. Jon was also a champion of the open source movement, and so with special thanks to Gil from Curseforge as well as Sylvanaar's family, there's no better way to honor Sylvanaar's legacy than to keep his project going strong in the community.
If you'd like to help maintain Prat, please reach out to MysticalOS or LuciferCatnip directly. Thank you so much.
About
Prat-3.0 is a chat enhancement addon for World of Warcraft.
It is made up of 30+ smaller "modules" which each provide additional functionality, and can be enabled or disabled individually.
In game, type /prat for a menu. Or use the icon on one of the many data broker hosts.
Prat has just about every feature you can think of, and then some. Really. When I get some more time, I'll try and put together a full list (Even I have lost count)
(Thanks to Dreamsight for this partial list)
- Sync your chat settings across your account (Beta)
- AI powered spam filter (Beta)
- Change arrows, buttons, mouse scroll for chat scroll, scroll speed
- you can add player color per channel, color per level, color per class
- timestamps (styled)
- whether to show timestamp (what format the timestamp should be in)
- whether to show players level
- you can select the option for channel "stickys" (last channel you used you auto use when hitting enter, that sort of thing – or last thing someone said)
- change the looks of the chat's editbox - as well as where it appears (you can even undock it and move it to where you'd like it to be)
- chat fading, fading delay
- You can change the font to a list of fonts, add an outline to it, monochrome it (if you don’t mind messing with files a bit you could probably even add other fonts to that list)
- change the chat frame/chat box appearance
- Keep chat history between game sessions
- Set channel abbreviations
- set brackets and color(or something instead of brackets)round player/lvl
- alt invite option (press keyboard “alt” button and click on the player’s name to auto inv them)
- raid icon
- invite links - click them to invite the person
- URL copying
- Full chat copying + copy button
- Click timestamp to copy line
- Configurable alerts when your name or other word is mentioned
- enables tell target /tt which whispers your target
- Alias options - make macros into short commands
- See names of players Alt characters
- change chat sounds (incoming and outgoing as well as per channel)
- Achievements info and grats
- Full chat search and search box
- Customizable filters for advanced users
- Show item icon next to item links and player class icon next to player names
- Icon-only options for newcomers chat
- Optional flashing or font color change for chat tabs when a new message comes in.
You can enable/disable all Prat modules - don't have to have the ones you don't use running
While trying to reduce resource utilization, it is also important to note that some people prefer the features, and don't care that an addon uses 500k more.
In reply to Forge_User_46798979:
Thank you so much for this helpful fix. All working now without constantly throwing errors!
For some reason Prat is affecting Pet Battles, cant see the pets or spells till after I disabled it.
Ran into a different error. I'm going to disable the Invites module for now since I'm not sure how to investigate this.
1x Prat-3.0-3.8.26\modules\Invites.lua:393: attempt to call global 'CanGroupInvite' (a nil value)
[string "@Prat-3.0-3.8.26\modules\Invites.lua"]:393: in function <Prat-3.0\modules\Invites.lua:386>
[string "=(tail call)"]: ?
[string "=(tail call)"]: ?
[string "=[C]"]: in function `gsub'
[string "@Prat-3.0-3.8.26\services\patterns.lua"]:197: in function `MatchPatterns'
[string "@Prat-3.0-3.8.26\addon\addon.lua"]:695: in function <Prat-3.0\addon\addon.lua:613>
[string "=(tail call)"]: ?
[string "@FrameXML\ChatFrame.lua"]:3031: in function <FrameXML\ChatFrame.lua:3024>
[string "=(tail call)"]: ?
[string "*:OnEvent"]:1: in function <[string "*:OnEvent"]:1>
Locals:
self = <table> {
SetDefaultModuleLibraries = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:367
Enable = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
Invite_Link = <function> defined @Prat-3.0\modules\Invites.lua:343
RawHookScript = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:395
GetName = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:279
name = "Prat_Invites"
IsEnabled = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
DisableModule = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:350
HookScript = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:366
Player_Link = <function> defined @Prat-3.0\modules\Invites.lua:365
baseName = "Prat-3.0"
IsHooked = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:493
InviteLink = <function> defined @Prat-3.0\modules\Invites.lua:404
ScanForLinks = <function> defined @Prat-3.0\modules\Invites.lua:386
IsModule = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:217
db = <table> {
}
SetDefaultModuleState = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:387
OnModuleEnable = <function> defined @Prat-3.0\modules\Invites.lua:258
SetAltInvite = <function> defined @Prat-3.0\modules\Invites.lua:273
SetEnabledState = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:424
Hook = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:274
enabledState = true
UnhookAll = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:477
SetItemRef = <function> defined @Prat-3.0\modules\Invites.lua:359
PL = <table> {
}
hooks = <table> {
}
SetDefaultModulePrototype = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:409
SecureHook = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:336
IterateModules = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:437
OnValueChanged = <function> defined @Prat-3.0\modules\Invites.lua:265
RawHook = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:313
Unhook = <function> defined @Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:418
moduleName = "Invites"
defaultModuleState = true
Disable = <function> defined @DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:314
}
text = "invite for"
name = "for"
enabled = true
(*temporary) = nil
(*temporary) = "attempt to call global 'CanGroupInvite' (a nil value)"
EVENTS_FOR_INVITE = <table> {
CHAT_MSG_PARTY = true
CHAT_MSG_GUILD = true
CHAT_MSG_OFFICER = true
CHAT_MSG_RAID_LEADER = true
CHAT_MSG_YELL = true
CHAT_MSG_RAID_WARNING = true
CHAT_MSG_CHANNEL = true
CHAT_MSG_SAY = true
CHAT_MSG_WHISPER = true
CHAT_MSG_RAID = true
}
In reply to BM_Jaeger:
Same. Received this when the word "invite" appeared in chat, which triggered the Invites module, which then tossed this error.
Searched for the CanGroupInvite() function, can't find it in any reference (at least not so far).
Disabled Invites module for now:
/prat > Module Control > Invites drop-down > Disabled
This worked for me..... thank you very much!7
Wont seem to update. Every refresh in twitch theres a new one.but nothing changes.
In reply to rfzm:
Same here. Also with some other add-ons (Rare Share, Details, OmniCC).
Been getting these errors since pre-patch.
511x Prat-3.0-3.8.26\modules\PlayerNames.lua:1155: attempt to call global 'GuildRoster' (a nil value)
[string "@Prat-3.0-3.8.26\modules\PlayerNames.lua"]:1155: in function `OnModuleEnable'
[string "@Prat-3.0-3.8.26\addon\modules.lua"]:189: in function <Prat-3.0\addon\modules.lua:178>
[string "=[C]"]: ?
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:70: in function <Ace3\AceAddon-3.0\AceAddon-3.0.lua:65>
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:527: in function `EnableAddon'
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:540: in function `EnableAddon'
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:630: in function <Ace3\AceAddon-3.0\AceAddon-3.0.lua:615>
[string "=[C]"]: in function `LoadAddOn'
[string "@LUI\modules\micromenu.lua"]:789: in function `SetMicroMenu'
[string "@LUI\modules\micromenu.lua"]:1300: in function <LUI\modules\micromenu.lua:1299>
[string "=[C]"]: ?
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:70: in function <Ace3\AceAddon-3.0\AceAddon-3.0.lua:65>
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:527: in function `EnableAddon'
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:540: in function `EnableAddon'
[string "@Ace3\AceAddon-3.0\AceAddon-3.0-13.lua"]:630: in function <Ace3\AceAddon-3.0\AceAddon-3.0.lua:615>
Message: Interface\AddOns\Prat-3.0\modules\PlayerNames.lua:1155: attempt to call global 'GuildRoster' (a nil value)
Time: Wed Oct 14 23:18:04 2020
Count: 1
Stack: Interface\AddOns\Prat-3.0\modules\PlayerNames.lua:1155: attempt to call global 'GuildRoster' (a nil value)
[string "@Interface\AddOns\Prat-3.0\modules\PlayerNames.lua"]:1155: in function `OnModuleEnable'
[string "@Interface\AddOns\Prat-3.0\addon\modules.lua"]:189: in function <Interface\AddOns\Prat-3.0\addon\modules.lua:178>
[string "=[C]"]: ?
[string "@Interface\AddOns\Prat-3.0_Libraries\AceAddon-3.0\AceAddon-3.0.lua"]:70: in function <...Ons\Prat-3.0_Libraries\AceAddon-3.0\AceAddon-3.0.lua:65>
[string "@Interface\AddOns\Prat-3.0_Libraries\AceAddon-3.0\AceAddon-3.0.lua"]:527: in function `EnableAddon'
[string "@Interface\AddOns\Prat-3.0_Libraries\AceAddon-3.0\AceAddon-3.0.lua"]:540: in function `EnableAddon'
[string "@Interface\AddOns\Prat-3.0_Libraries\AceAddon-3.0\AceAddon-3.0.lua"]:620: in function <...Ons\Prat-3.0_Libraries\AceAddon-3.0\AceAddon-3.0.lua:605>
[string "=[C]"]: in function `LoadAddOn'
[string "@Interface\FrameXML\UIParent.lua"]:495: in function `UIParentLoadAddOn'
[string "@Interface\FrameXML\UIParent.lua"]:618: in function `TimeManager_LoadUI'
[string "@Interface\FrameXML\UIParent.lua"]:1373: in function <Interface\FrameXML\UIParent.lua:1258>
Locals: <none>
Message: Interface\AddOns\Prat-3.0\modules\PlayerNames.lua:1357: attempt to call global 'GuildRoster' (a nil value)
Time: Wed Oct 14 23:18:30 2020
Count: 5
Stack: Interface\AddOns\Prat-3.0\modules\PlayerNames.lua:1357: attempt to call global 'GuildRoster' (a nil value)
[string "@Interface\AddOns\Prat-3.0\modules\PlayerNames.lua"]:1357: in function `?'
[string "@Interface\AddOns\Prat-3.0_Libraries\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:119: in function <...ibraries\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Interface\AddOns\Prat-3.0_Libraries\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:29: in function <...ibraries\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Interface\AddOns\Prat-3.0_Libraries\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:64: in function `Fire'
[string "@Interface\AddOns\Prat-3.0_Libraries\AceEvent-3.0\AceEvent-3.0.lua"]:120: in function <...Ons\Prat-3.0_Libraries\AceEvent-3.0\AceEvent-3.0.lua:119>
Locals: <none>
Message: Interface\AddOns\Prat-3.0\modules\PlayerNames.lua:1357: attempt to call global 'GuildRoster' (a nil value)
Time: Wed Oct 14 23:18:30 2020
Count: 1
Stack: Interface\AddOns\Prat-3.0\modules\PlayerNames.lua:1357: attempt to call global 'GuildRoster' (a nil value)
[string "@Interface\AddOns\Prat-3.0\modules\PlayerNames.lua"]:1357: in function `updateGuild'
[string "@Interface\AddOns\Prat-3.0\modules\PlayerNames.lua"]:1318: in function `updateAll'
[string "@Interface\AddOns\Prat-3.0\modules\PlayerNames.lua"]:1707: in function `?'
[string "@Interface\AddOns\Prat-3.0_Libraries\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:119: in function <...ibraries\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Interface\AddOns\Prat-3.0_Libraries\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:29: in function <...ibraries\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Interface\AddOns\Prat-3.0_Libraries\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:64: in function `Fire'
[string "@Interface\AddOns\Prat-3.0\addon\addon.lua"]:673: in function <Interface\AddOns\Prat-3.0\addon\addon.lua:613>
[string "=(tail call)"]: ?
[string "@Interface\FrameXML\ChatFrame.lua"]:3031: in function `ChatFrame_OnEvent'
[string "*:OnEvent"]:1: in function <[string "*:OnEvent"]:1>
Locals: <none>
102x Prat-3.0-3.8.26-3-g1f17b47\modules\PlayerNames.lua:1357: attempt to call global 'GuildRoster' (a nil value)
[string "@Prat-3.0-3.8.26-3-g1f17b47\modules\PlayerNames.lua"]:1357: in function `?'
[string "@AchieveIt\libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:119: in function <...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@AchieveIt\libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:29: in function <...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@AchieveIt\libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:64: in function `Fire'
[string "@DataStore\libs\AceEvent-3.0\AceEvent-3.0-4.lua"]:120: in function <DataStore\libs\AceEvent-3.0\AceEvent-3.0.lua:119>
97x Prat-3.0-3.8.26-3-g1f17b47\modules\PlayerNames.lua:1357: attempt to call global 'GuildRoster' (a nil value)
[string "@Prat-3.0-3.8.26-3-g1f17b47\modules\PlayerNames.lua"]:1357: in function `?'
[string "@AchieveIt\libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:119: in function <...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@AchieveIt\libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:29: in function <...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@AchieveIt\libs\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:64: in function `Fire'
[string "@DataStore\libs\AceEvent-3.0\AceEvent-3.0-4.lua"]:120: in function <DataStore\libs\AceEvent-3.0\AceEvent-3.0.lua:119>
hmmm when someone w me i cant see it at all :( i hear voice but i cant see it nor answer it
Still getting errors with Prat, please help.
Message: Interface\AddOns\Prat-3.0-3.8.26-3-g1f17b47\modules\PlayerNames.lua:1155: attempt to index global 'C' (a nil value)
Time: Wed Oct 14 14:56:01 2020
Count: 1
Stack: Interface\AddOns\Prat-3.0-3.8.26-3-g1f17b47\modules\PlayerNames.lua:1155: attempt to index global 'C' (a nil value)
Locals: <none>
In reply to CanadasPrincess:
In the mentioned file, the text at line #1155 should be:
C_GuildInfo.GuildRoster()
Make sure you didn't mistype it
Full fix, colated from several posts (bluspacecow's and mine) :
1) in:
World of Warcraft\_retail_\Interface\AddOns\Prat-3.0\modules\AltNames.lua
World of Warcraft\_retail_\Interface\AddOns\Prat-3.0\modules\PlayerNames.lua
Replace all instances of:
GuildRoster()
with:
C_GuildInfo.GuildRoster()
(just make sure to not replace the one instance where it says "GetGuildRoster()")
2) In World of Warcraft\_retail_\Interface\AddOns\Prat-3.0\modules\Editbox.lua :
Find every instances (there should be 3 of them) :
CreateFrame("Frame", nil, parent)
Replace with :
CreateFrame("Frame", nil, parent, BackdropTemplateMixin and "BackdropTemplate")
Enjoy 9.0 with Prat :)
EDIT: Removed "local frame =".
EDIT2: No, you do not have to remove any "local frame =" lol, you doofs
In reply to sankto:
Thank you for posting this!
Small note it's better to just search for CreateFrame("Frame", nil, parent) and replace it with CreateFrame("Frame", nil, parent, BackdropTemplateMixin and "BackdropTemplate") since "local frame" is only found the 1 time
That was at least my experience
In reply to Mythris:
Ah yep, good point.
In reply to sankto:
working as described. opening them with notepad and using the replace function makes this fix very easy. TY!
In reply to sankto:
I'm pretty sure I applied this correctly and now my Pet Battle UI is broken. It's just missing all pet frames and ability frames and everything. Anyone else seen this? I can't disable prat and everything is back to normal on reload.
In reply to arson94:
I have the same problem. Disable Prat and it goes - not a good solution
I did not apply any changes btw :S