fjaros / wowchat

WoWChat is a clientless Discord integration chat bot for old versions of World of Warcraft.
GNU General Public License v3.0
139 stars 96 forks source link

TurtleWoW Hardcore messages #109

Closed Lexiebean closed 11 months ago

Lexiebean commented 11 months ago

Turtle WoW now has CHAT_MSG_HARDCORE

WoWChat/src/main/scala/wowchat/game/GamePackets.scala line 46

Any idea how I'd edit this to support it?

fjaros commented 11 months ago

Yeah, you'll have to add the new opcode for the chat event I don't know what the opcode is as I don't play turtle wow. You can turn on the internal packet logging by setting the GamePacketDecoder to DEBUG and then parse the hex codes that wowchat will print to figure out the opcode.

Once you figure it out, you'll need to add it to the ChatEvents, as well as implement it in the "parse" and "valueOf" functions. When that's done, you can create a new section in chat to map this new "hardcore" message as you would Guild or Say.

Then you should be done. One caveat is if the message format is not the same as it is for the Guild/Say case, then you will also need to do some extra work in the chat message parser to read it correctly, and again the packet logging will help you figure out the format.

Good luck!

welpenhund commented 11 months ago

Yeah, you'll have to add the new opcode for the chat event I don't know what the opcode is as I don't play turtle wow. You can turn on the internal packet logging by setting the GamePacketDecoder to DEBUG and then parse the hex codes that wowchat will print to figure out the opcode.

Once you figure it out, you'll need to add it to the ChatEvents, as well as implement it in the "parse" and "valueOf" functions. When that's done, you can create a new section in chat to map this new "hardcore" message as you would Guild or Say.

Then you should be done. One caveat is if the message format is not the same as it is for the Guild/Say case, then you will also need to do some extra work in the chat message parser to read it correctly, and again the packet logging will help you figure out the format.

Good luck!

How to exactly turn on the packet logger by the config? Or do you have to re-compile the project to enable that? Thanks in advance.

fjaros commented 11 months ago

To turn on the packet logger you don't need to recompile. Set the logging level to DEBUG like I instructed above. Then restart.

welpenhund commented 11 months ago

To turn on the packet logger you don't need to recompile. Set the logging level to DEBUG like I instructed above. Then restart.

Mhhh, that might be difficult on the live server to figure out, right? https://streamable.com/wk2sdp <-We might have to try it on a PTR cause it would be impossible to figure out the right hex code on the live server? (is there also a way to save the whole debug output to somewhere? at least i not found any new created file that includes the whole DEBUG code in a texfile)

fjaros commented 11 months ago

Hmm yeah that's a very fair point. I just realized that in the handler I have an additional logger just for chat messages

So what you can do is in logback.xml, set GamePacketDecoder back to INFO and add the line: <logger name="wowchat.game.GamePacketHandler" level="DEBUG" /> and this should then print only the hex code for any arriving chat messages

fjaros commented 11 months ago

See https://github.com/fjaros/wowchat/pull/112/commits/6f909e5a6105f7c4e9d6b3c8829c6cdf99cdf292 for how to implement this