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)
- Machine learning 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 bluspacecow:
Thank you for the code changes. I did what you mentioned, but it comes up with a new issue:
In reply to maccormaic:
In Editbox.lua :
Find every instances (there should be 3 of them) :
local frame = CreateFrame("Frame", nil, parent)
Replace with :
local frame = CreateFrame("Frame", nil, parent, BackdropTemplateMixin and "BackdropTemplate")
Also with this, you do not have to comment out a line like mentioned above.
not working for 9.0
hello
any chance to add a feature when someone /W you it will show if he is in your fiend list or not :)
seems latest version shows class colors only for the ppl in ur guild and in general chat,party and such are greyed
edit : tried the player names color module settings,no difference
Where can I find all the commands? I keep forgetting the command to ignore a word?
will this addon be updated/release version name updated for 9.0
Message: ...nterface\AddOns\Prat-3.0\modules\OriginalButtons.lua line 609:
attempt to index global 'QuickJoinToastButton' (a nil value)
Debug:
(tail call): ?
...nterface\AddOns\Prat-3.0\modules\OriginalButtons.lua:609: OnModuleEnable()
Prat-3.0\addon\modules.lua:189:
Prat-3.0\addon\modules.lua:178
[C]: ?
...erface\AddOns\BCT\Libs\AceAddon-3.0\AceAddon-3.0.lua:70:
...erface\AddOns\BCT\Libs\AceAddon-3.0\AceAddon-3.0.lua:65
...erface\AddOns\BCT\Libs\AceAddon-3.0\AceAddon-3.0.lua:527: EnableAddon()
...erface\AddOns\BCT\Libs\AceAddon-3.0\AceAddon-3.0.lua:540: EnableAddon()
...erface\AddOns\BCT\Libs\AceAddon-3.0\AceAddon-3.0.lua:630:
...erface\AddOns\BCT\Libs\AceAddon-3.0\AceAddon-3.0.lua:615
Locals:
There is an error in enabling the Origianl Button Module in Classic.
A combination of Prat's plugins and TomCat's Tours is causing my chat macros to not work. I cannot figure out which combination of Prat's plugins is causing the issue, though.
Please refer to the issue I've posted here: https://www.curseforge.com/wow/addons/tomcats/issues/26
also sometimes when someone whispers me its keep duplicate the tabs even after i close them it keeps duplicate and then the whole chat will be overlap.. and this is will not fix until i reload
but I hate to reload because i lose my chat history if I have other whispers that i don't want to close :(
hope i explain it clear i don't have now image but once this is happening again i will capture
hello all
I have an issue with AltNames, it doesn't show the correct things... e.g. I have invited someone to the guild and when he types in guild chat it show my name as alt for him!
Retail. After a /reload.
1x ...rfacePrat-3.0-3.8.26\modules\ChannelColorMemory.lua:322: attempt to index local 'color' (a nil value)
[string "@Prat-3.0-3.8.26\modules\ChannelColorMemory.lua"]:322: in function `?'
[string "@Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:119: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:29: in function <...Ons\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Ace3\CallbackHandler-1.0\CallbackHandler-1.0-7.lua"]:64: in function `Fire'
[string "@Ace3\AceEvent-3.0\AceEvent-3.0-4.lua"]:120: in function <Ace3\AceEvent-3.0\AceEvent-3.0.lua:119>
When I log into retail the chat editbox does not come up at all ( i can still type I just can't see what Im typing). Only way I've found to fix it is to open up prat options and toggle the edit box to a different position and back again and it fixes it.
Any sort of fix for #112 ?
anyone know how to get rid of the 2 pages on the top left of the chat boxes when i click on them it says chat frame 1 trying to get rid pages button
Hello, I have a question. I used to use the chat from elvui and they have chat loot icons in there. Is there no option for Chat Loot Icons here in "prat 3.0"? Then the chat would be so perfect.
Many thanks for making the chat fade. And that you can change the background color! Thank you so much! I was just looking for a function to create a minimal Ui.
I just got this error when logging into Classic. I could be wrong, but it looks to me like it's a misspelling of the word "select" in line 735 of the code.
2020-07-07 17:00:42
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\Prat-3.0\modules\Memory.lua line 735:
attempt to call global 'selct' (a nil value)
Debug:
Prat-3.0\modules\Memory.lua:735: ?()
...\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:55:
...\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:50
Locals:
self = <table> {
GetChannelMap = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:659
SetDefaultModuleLibraries = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:367
errorcount = 1
CheckChannels = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:670
Enable = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:235
LoadSettings = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:775
EnableModule = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:442
Disable = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:314
SecureHookScript = <function> defined @Interface\AddOns\HandyNotes_NPCs (Classic)\libs\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
TimeLeft = <function> defined @Interface\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:172
Prat_PreAddMessage = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:856
ready = true
RawHookScript = <function> defined @Interface\AddOns\HandyNotes_NPCs (Classic)\libs\AceHook-3.0\AceHook-3.0.lua:395
ScheduleRepeatingTimer = <function> defined @Interface\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:129
CancelAllTimers = <function> defined @Interface\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:160
LoadFrameSettingsForFrame = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:560
defaultModuleState = true
GetName = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:279
baseName = "Prat-3.0"
UnregisterAllEvents = <function> defined @Interface\AddOns\DataStore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
SaveSettingsForFrame = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:534
name = "Prat_Memory"
LeavePlaceholderChannels = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:646
IsEnabled = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
ScheduleTimer = <function> defined @Interface\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:94
DisableModule = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:350
SetDefaultModulePrototype = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:409
LoadChatSettingsForFrame = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:605
needsLoading = true
SaveSettings = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:515
RegisterMessage = <function> defined @Interface\AddOns\DataStore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
HookScript = <function> defined @Interface\AddOns\HandyNotes_NPCs (Classic)\libs\AceHook-3.0\AceHook-3.0.lua:366
OnModuleEnable = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:503
PLAYER_ENTERING_WORLD = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:495
IsHooked = <function> defined @Interface\AddOns\HandyNotes_NPCs (Classic)\libs\AceHook-3.0\AceHook-3.0.lua:493
PL = <table> {
}
CancelTimer = <function> defined @Interface\AddOns\DataStore\libs\AceTimer-3.0\AceTimer-3.0.lua:147
IsModule = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:217
db = <table> {
}
SetDefaultModuleState = <function> defined @Interface\AddOns\DataStore\libs\AceAddon-3.0\AceAddon-3.0.lua:387
RestoreChannels = <function> defined @Interface\AddOns\Prat-3.0\modules\Memory.lua:719
SendMessage = <function> defined @Interface\AddOns\DataStore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:59
SetEnabledState = <function> defined @Interface\AddOns\DataStore\
AddOns:
Swatter, v8.2.6377 (SwimmingSeadragon)
Altoholic, vClassic v1.13.4-014
Armory, vv1.7.0
AucAdvanced, v8.2.6430 (SwimmingSeadragon)
AucFilterBasic, v8.2.6364 (SwimmingSeadragon)
AucStatHistogram, v8.2.6366 (SwimmingSeadragon)
AucStatiLevel, v8.2.6370 (SwimmingSeadragon)
AucStatPurchased, v8.2.6367 (SwimmingSeadragon)
AucStatSimple, v8.2.6399 (SwimmingSeadragon)
AucStatStdDev, v8.2.6369 (SwimmingSeadragon)
AucUtilFixAH, v8.2.6371 (SwimmingSeadragon)
BagBrother, v
Bagnon, v8.3.5
BeanCounter, v8.2.6434 (SwimmingSeadragon)
DataStore, vv1.13.013
DataStoreAuctions, vv1.13-013
DataStoreCharacters, vv1.13-013
DataStoreContainers, vv1.13-013
DataStoreCrafts, vv1.13-013
DataStoreInventory, vv1.13-013
DataStoreMails, vv1.13-013
DataStoreQuests, vv1.13-013
DataStoreReputations, vv1.13-013
Dominos, v8.3.11
DominosCast, v
DominosProgress, v
DominosRoll, v
Enchantrix, v8.2.6428 (SwimmingSeadragon)
GatherMate2, v1.45.5
GatherMateSharing, vv1.12
GTFO, v4.55
HandyNotes, vv1.5.10
HandyNotesNPCsClassic, v1.23
Informant, v8.2.6374 (SwimmingSeadragon)
NovaWorldBuffs, v1.69
Pawn, v2.3.29
Postal, vv3.6.1
Prat30, v3.8.25-11-g44ac97d
Prat30Libraries, v
Questie, v6.0.0
SellJunk, v3.0.20
SexyMap, vv5-classic
SortBags, v1.0.0
Stubby, v8.2.6376 (SwimmingSeadragon)
TomTom, vv11304-1.1.2
VendorPrice, v1.3.5
BlizRuntimeLib_enUS v1.13.5.11305 <none>
(ck=596)
In reply to Telstars:
Should be fixed - thank you!
Got this error after removing the communities from my chat window, and my communities got re-added... I can't get rid of them!!!
Message: Interface\FrameXML\SocialQueue.lua:219: attempt to index local 'rhs' (a nil value)
Time: Mon Jul 6 16:58:37 2020
Count: 1
Stack: Interface\FrameXML\SocialQueue.lua:219: attempt to index local 'rhs' (a nil value)
[string "@Interface\FrameXML\SocialQueue.lua"]:219: in function <Interface\FrameXML\SocialQueue.lua:217>
[string "=[C]"]: in function `sort'
[string "@Interface\FrameXML\SocialQueue.lua"]:217: in function `SocialQueueUtil_SortGroupMembers'
[string "@Interface\FrameXML\QuickJoin.lua"]:391: in function `UpdateAll'
[string "@Interface\FrameXML\QuickJoin.lua"]:379: in function `Init'
[string "@Interface\FrameXML\QuickJoin.lua"]:347: in function `UpdateAll'
[string "@Interface\FrameXML\QuickJoin.lua"]:321: in function `Init'
[string "@Interface\FrameXML\QuickJoin.lua"]:19: in function <Interface\FrameXML\QuickJoin.lua:12>
Locals: lhs = <table> {
clubId = 361316881
guid = "Player-104-061FE3E7"
}
rhs = nil
lhsName = ""
_ = ""
lhsRelationship = "bnfriend"
(*temporary) = <function> defined @Interface\FrameXML\SocialQueue.lua:170
(*temporary) = <table> {
isFriend = false
isDND = false
isFavorite = false
gameAccountInfo = <table> {
}
accountName = ""
battleTag = "Zhagas#1618"
note = ""
rafLinkType = 0
bnetAccountID = 170
appearOffline = false
customMessage = ""
lastOnlineTime = 1594072366
customMessageTime = 0
isAFK = false
isBattleTagFriend = false
}
(*temporary) = ""
(*temporary) = ""
(*temporary) = "bnfriend"
(*temporary) = "|HBNplayer::170:0:0:0"
(*temporary) = "attempt to index local 'rhs' (a nil value)"
relationshipPriorityOrdering = <table> {
guild = 3
club = 4
bnfriend = 1
wowfriend = 2
}
There seems to be an Issue that the Memory Feature tries to reconnect to the Trade Channel even if you are not in the city. After you go into a city. it will not join the channel. You have to rejoin it manually or with a UI reload. Also I noticed, the rejoin will be tried 3-5 times. My guildmate mentioned that I left and rejoined a custom channel 5 times after reloading the UI. Disabled this feature for now since the trade channel thing is annoying me too much now.