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.
Date: 2020-10-24 14:25:02
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\Prat-3.0\modules\PlayerNames.lua line 1152:
attempt to call field 'GuildRoster' (a nil value)
Debug:
Prat-3.0\modules\PlayerNames.lua:1152: OnModuleEnable()
Prat-3.0\addon\modules.lua:189:
Prat-3.0\addon\modules.lua:178
[C]: ?
...ce\AddOns\Details\Libs\AceAddon-3.0\AceAddon-3.0.lua:70:
...ce\AddOns\Details\Libs\AceAddon-3.0\AceAddon-3.0.lua:65
...ce\AddOns\Details\Libs\AceAddon-3.0\AceAddon-3.0.lua:527: EnableAddon()
...ce\AddOns\Details\Libs\AceAddon-3.0\AceAddon-3.0.lua:540: EnableAddon()
...ce\AddOns\Details\Libs\AceAddon-3.0\AceAddon-3.0.lua:630:
...ce\AddOns\Details\Libs\AceAddon-3.0\AceAddon-3.0.lua:615
Locals:
None
AddOns:
Swatter, v8.2.6377 (SwimmingSeadragon)
AdvancedInterfaceOptions, v1.4.0
Atlas, vv1.47.03.11304.00
AtlasClassicWoW, vv1.47.02.11304.00
AtlasLootClassic, vv1.5.6
AtlasLootClassicData, vv1.5.6
AtlasLootClassicDungeonsAndRaids, vv1.5.6
AtlasLootClassicMaps, vv1.0.0
AucAdvanced, v8.2.6430 (SwimmingSeadragon)
aucadvancedsearcherpawn, v1.6.2-classic
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)
AutoLootPlus, v2.0.0-11302
BagBrother, v
Bagnon, v9.0.3
BeanCounter, v8.2.6434 (SwimmingSeadragon)
CEPGP, v
ChatBarClassic, v3.16.1a
ClassicAuraDurations, v1.13.61
DBMCore, v1.13.61-17-g328387a
DBMDefaultSkin, v
DBMStatusBarTimers, v
DejaMark, v820r202
Details, v
DetailsStreamer, v
DetailsTinyThreat, v
Dominos, v9.0.10
DominosCast, v
DominosEncounter, v
DominosProgress, v
DominosRoll, v
DominosClassicSkin, v
EmoteSplitter, v1.6.0
Enchantrix, v8.2.6428 (SwimmingSeadragon)
EnchantrixBarker, v8.2.6469 (SwimmingSeadragon)
GatherMate2, v1.45.5
GlobalIgnoreList, v1.13.3
GuildTooltip, vv1.0.1
HandyNotes, vv1.6.0
HandyNotesDungeonLocationsClassic, v1.03
HandyNotesFlightMastersClassic, v1.06
HandyNotesNPCsClassic, v1.23
HandyNotesTravelGuideClassic, vv2.2.0
HandyNotesWorldMapButton, v11305.05-Classic
MobInfo2Classic, v11302.04
ModernQuestWatch, v1.0.9
NameplateSCT, v1.8
NeatPlates, v1.13.5.16
NeatPlatesAlvara, v5a
NeatPlatesBlizzardPlates, v2.0
NeatPlatesClassicPlates, v
NeatPlatesGraphite, v
NeatPlatesGrey, v
NeatPlatesNeon, v
NeatPlatesQuatre, v
NeatPlatesRenaitre, vv7.0.3
NeatPlatesRoth, v
NeatPlatesSimple, v7.3.0
NeatPlatesSlimHorizontal, v2.2
NeatPlatesSlimVertical, v2.2
NeatPlatesHub, v
NeatPlatesWidgets, v
OmniCC, v9.0.1
outofrange20, vv2.10
Pawn, v2.4.1
Peddler, v
Prat30, v3.9.0
Prat30Libraries, v
Questie, v6.1.0
RollTrackerClassic, v2.21
SlideBar, v8.2.6375 (SwimmingSeadragon)
Stubby, v8.2.6376 (SwimmingSeadragon)
TFTB, v1.20
TomCats, v0.0.2
TomTom, vv11305-1.1.5
VendorPrice, v1.3.7
WhatsTraining, v1.8.7
Xszhlkcamhgfd, v1.0
BlizRuntimeLib_ruRU v1.13.5.11305 <none>
(ck=979)
For some reason I'm losing whispers or chats I try to make. I whisper someone or say something in guild, I don't see it appear on my chat box, but ppl will respond as if I have. ALternatively, I have whispered people and don't see a "to: ___" show up, and they said they never got my whisper.
Hotfix for Classic v0.3
https://www.dropbox.com/s/57jgsq83jv6fyhj/Prat-3.0-HotFix.zip?dl=0
To the developers
Invites.lua
Line 393 C_PartyInfo.CanInvite() replaced with CanGroupInvite()
PlayerNames.lua
Line 1152 C_GuildInfo.GuildRoster() replaced with GuildRoster()
Line 1320 C_GuildInfo.GuildRoster() replaced with GuildRoster()
Line 1354 C_GuildInfo.GuildRoster() replaced with GuildRoster()
AltNames.lua
Line 1673 C_GuildInfo.GuildRoster() replaced with GuildRoster()
Thanks to Hyphie24 and jeremy7600 for most of the solution. :)
In reply to SubbyDK:
Thanks!
In reply to SubbyDK:
Thanks! This works better, but when someone whispers you "inv" or "invite", and you click it, the following error occurs:
Date: 2020-10-22 13:36:51
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\Prat-3.0\modules\Invites.lua line 352:
attempt to call field 'InviteUnit' (a nil value)
Debug:
Prat-3.0\modules\Invites.lua:352: linkfunc()
Prat-3.0\services\links.lua:108:
Prat-3.0\services\links.lua:97
(tail call): ?
(tail call): ?
(tail call): ?
..\FrameXML\ItemRef.lua:351:
..\FrameXML\ItemRef.lua:1
[C]: ?
[C]: ?
...ace\AddOns\Blizzard_CombatLog\Blizzard_CombatLog.lua:3527:
...ace\AddOns\Blizzard_CombatLog\Blizzard_CombatLog.lua:3469
(tail call): ?
(tail call): ?
[C]: SetItemRef()
..\FrameXML\ChatFrame.lua:3545:
..\FrameXML\ChatFrame.lua:3544
[C]: ?
[C]: ?
[C]: ?
[C]: ?
[C]: ?
[C]: ?
[C]: ?
[C]: ChatFrame_OnHyperlinkShow()
[string "*:OnHyperlinkClick"]:1:
[string "*:OnHyperlinkClick"]:1
[C]: ?
Locals:
self = <table> {
SetDefaultModuleLibraries = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:367
Enable = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
Invite_Link = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:343
RawHookScript = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:395
GetName = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:279
name = "Prat_Invites"
IsEnabled = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
DisableModule = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:350
HookScript = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:366
Player_Link = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:365
baseName = "Prat-3.0"
IsHooked = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:493
InviteLink = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:404
ScanForLinks = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:386
IsModule = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:217
db = <table> {
}
SetDefaultModuleState = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:387
OnModuleEnable = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:258
SetAltInvite = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:273
SetEnabledState = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:424
Hook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:274
enabledState = true
UnhookAll = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:477
SetItemRef = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:359
PL = <table> {
}
hooks = <table> {
}
SetDefaultModulePrototype = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:409
SecureHook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:336
IterateModules = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:437
OnValueChanged = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:265
RawHook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:313
Unhook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:418
moduleName = "Invites"
defaultModuleState = true
Disable = <function> defined @Interface\AddOns\Bartender4\libs\AceAddon-3.0\AceAddon-3.0.lua:314
}
link = "invplr:Dariusrucker-DeviateDelight"
text = ChatFrame1 {
SetJustifyV = <function> defined =[C]:-1
RefreshIfNecessary = <function> defined =[C]:-1
OnPostShow = <function> defined =[C]:-1
CalculateLineAlphaValueFromTimestamp = <function> defined =[C]:-1
isLayoutDirty = false
tellTimer = 44024.602000
isDisplayDirty = false
GetFading = <function> defined =[C]:-1
IsTextCopyable = <function> defined =[C]:-1
shouldFadeAfterInactivity = true
SetIndentedWordWrap = <function> defined =[C]:-1
GetJustifyV = <function> defined =[C]:-1
SetFont = <function> defined =[C]:-1
GetMaxLines = <function> defined =[C]:-1
GetIndentedWordWrap = <function> defined =[C]:-1
AddOns: lots
(ck=b5d)
In reply to cowrecked:
Try it now.
I don't get any errors (so far) with the v0.2 :)
In reply to SubbyDK:
Seems to be good so far! Thanks!
Okay, so something that has bothered me a long time, even though the addon is sick in comparison to everything else out there, there has got to be a way to change the edit box size format.
While I can clearly change the font size for each individual chat window, I can't increase the font size of the edit box, which is far harder to see.
If anyone can help, I would greatly appreciate it.
Thanks in advance
In reply to saggytytz:
Right click on the chat tab and chose "Font Size"
It's default in game. :)
In reply to SubbyDK:
SubbyDK, I had to edit my original post. Sorry about that. Changing the font size of the individual windows was easy. What I failed to say in my original post, but have now edited, was the edit box font size. I was able to change the font of the edit box, but not the size. I would like to be able to better see what I am typing as I type vice waiting to see I misspelled something.
fix classic version!
Is there a module or something for prat that has a combat repeat function like the chat in Elvui. It works so if you are in combat and happen to open the chat box and are spamming the one key say for example 2 for frostbolt, if its keyed in more than 2-10 (you can change the amount) times it will close the chats editbox and your spell will cast.
In reply to ImTyson:
I doubt that i legal if the addon auto cast for you.
In reply to SubbyDK:
Who said anything about auto cast?
He's asking if Prat could detect when you have the chatbox open but you're repeatedly spamming the same key (in his example spamming '2' to cast a Frostbolt) and automatically close the chat box so that your next press of the button will perform the spell cast. So if you're chatting with your guild and you get ambushed in combat and forget to hit Esc to close your chat box out of panic, the addon will recognize you're not chatting anymore and close out the chat box for you.
In reply to SubbyDK:
Who said anything about auto cast?
He's asking if Prat could detect when you have the chatbox open but you're repeatedly spamming the same key (in his example spamming '2' to cast a Frostbolt) and automatically close the chat box so that your next press of the button will perform the spell cast. So if you're chatting with your guild and you get ambushed in combat and forget to hit Esc to close your chat box out of panic, the addon will recognize you're not chatting anymore and close out the chat box for you.
Hotfix for Classic
https://www.dropbox.com/s/vfsjro2p4g8l9k1/Prat-3.0-HotFix.zip?dl=0
To the developers
Invites.lua
Line 352 InviteUnit(name); replaceed with C_PartyInfo.InviteUnit(name);
PlayerNames.lua
Line 1152 C_GuildInfo.GuildRoster() replaceed with GuildRoster()
Line 1320 C_GuildInfo.GuildRoster() replaceed with GuildRoster()
Line 1354 C_GuildInfo.GuildRoster() replaceed with GuildRoster()
Thanks to Hyphie24 and jeremy7600 for the solution.
In reply to SubbyDK:
I still get an error when using this fix:
EDIT: this happens when sending a message with "invite" or "inv"
Date: 2020-10-21 15:59:18
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\Prat-3.0\modules\Invites.lua line 393:
attempt to call field 'CanInvite' (a nil value)
Debug:
Prat-3.0\modules\Invites.lua:393:
Prat-3.0\modules\Invites.lua:386
(tail call): ?
(tail call): ?
[C]: gsub()
Prat-3.0\services\patterns.lua:197: MatchPatterns()
Prat-3.0\addon\addon.lua:695:
Prat-3.0\addon\addon.lua:613
(tail call): ?
..\FrameXML\ChatFrame.lua:2797: ChatFrame_OnEvent()
[string "*:OnEvent"]:1:
[string "*:OnEvent"]:1
Locals:
self = <table> {
SetDefaultModuleLibraries = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:367
Enable = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:294
NewModule = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:235
EnableModule = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:442
SecureHookScript = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:410
defaultModuleLibraries = <table> {
}
Invite_Link = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:343
RawHookScript = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:395
GetName = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:279
name = "Prat_Invites"
IsEnabled = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
DisableModule = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:350
HookScript = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:366
Player_Link = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:365
baseName = "Prat-3.0"
IsHooked = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:493
InviteLink = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:404
ScanForLinks = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:386
IsModule = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:217
db = <table> {
}
SetDefaultModuleState = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:387
OnModuleEnable = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:258
SetAltInvite = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:273
SetEnabledState = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:424
Hook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:274
enabledState = true
UnhookAll = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:477
SetItemRef = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:359
PL = <table> {
}
hooks = <table> {
}
SetDefaultModulePrototype = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:409
SecureHook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:336
IterateModules = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:437
OnValueChanged = <function> defined @Interface\AddOns\Prat-3.0\modules\Invites.lua:265
RawHook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:313
Unhook = <function> defined @Interface\AddOns\Bartender4\libs\AceHook-3.0\AceHook-3.0.lua:418
moduleName = "Invites"
defaultModuleState = true
Disable = <function> defined @Interface\AddOns\AutoCombatLogger\Libs\AceAddon-3.0\AceAddon-3.0.lua:314
}
text = "Inv"
name = "Aím"
enabled = true
(*temporary) = nil
(*temporary) = "attempt to call field 'CanInvite' (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
}
AddOns:(a bunch)
In reply to cowrecked:
Should be fixed now. :)
In reply to SubbyDK:
thank you
is there an update coming to fix the below posted lua error issues?
i am not good at opening files without breaking something else.
also the reason i am still using Twitch LOL