h0tw1r3 / valheim-webmap

Live Valheim world map on the web! Server side only BepInEx mod.
MIT License
15 stars 4 forks source link

Pin commands not working #3

Closed nehswu closed 1 year ago

nehswu commented 1 year ago

Player chat messages don't seem to be detected, and as a result the pin commands aren't working.

OS: Windows Version:

WebMap log excerpt:

[11:47:48.211] WebMap: MAP ALREADY BUILT! [11:47:52.896] WebMap: starting point (-194.3, 80.4, 1.4) [11:47:53.542] WebMap: HTTP Server Listening on port 3000 [11:47:55.155] WebMap: new visitor connected from 10.144.43.1:50583 [11:47:55.165] 3/29/2023 11:47:55 AM|Fatal|<>cDisplayClass174_0.b2:0|WebSocketSharp.WebSocketException: The header part of a frame could not be read. [11:47:55.165] at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x0001f] in :0 [11:47:55.166] at WebSocketSharp.WebSocketFrame+<>cDisplayClass73_0.b0 (System.Byte[] bytes) [0x00000] in :0 [11:47:55.166] at WebSocketSharp.Ext+<>c__DisplayClass57_0.b__0 (System.IAsyncResult ar) [0x0008e] in :0 [11:47:55.872] WebMap: new visitor connected from 10.144.43.1:50587 [11:49:53.847] WebMap: (chat) (-7025.5, 68.2, 3555.6) | 2 | Whopp | [11:51:34.278] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp | [11:51:49.407] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp | [11:53:48.599] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp | [11:54:19.888] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp |

Screenshot 2023-03-29 115507

kandohar commented 1 year ago

Same issue here

h0tw1r3 commented 1 year ago

Noticed the same thing. Haven't been able to figure out why the data isn't being unpackaged properly. From what I can tell it's still the standard .net BinaryReader, no real changes to the valheim code. Every other field in the RPC package works fine, just not the message :(

I will try to put a hack in until I can get a proper fix.

h0tw1r3 commented 1 year ago

I put as very unsightly hack in 5af53c043f85ce29182457fc3d66e3b1abe8a6ce which "fixed" the problem for me. Also fixes the map color of Mistland's.

Need to do more testing tomorrow. If it works for others, I'll cut a new release.

kandohar commented 1 year ago

Nice! Thanks! Actually, I got another issue, the position of the players is really random, they just jump around the center position and is not related to the in-game position.

ben-bartholomew commented 1 year ago

I ran into a similar issue with one of my mods, they made a change to the way messages are packed and I believe you will need to update WebMap.cs to reflect this. From the most recent de-compilation of Talker.Say, messages are now sent like this:

this.m_nview.InvokeRPC(ZNetView.Everybody, nameof (Say), (object) (int) type, (object) UserInfo.GetLocalUser(), (object) text, (object) PrivilegeManager.GetNetworkUserId());

In the middle there is the change, (I think to support Xbox players) they swapped out sending just the player name with the UserInfo object. De-serializing messages in the following way worked for me:

var package = new ZPackage(data.m_parameters.GetArray());
package.SetPos(0);

int _ = package.ReadInt(); //type of message

var userInfo = new UserInfo();
userInfo.Deserialize(ref package);

string message = package.ReadString() ?? "";
message = message.Trim();

FWIW I noticed no player messages (including pins) show up in the webmap on my server. I think this is the cause. I had the same trouble in another mod (unpacking would fail silently and messages would just be the empty string) until noticing this and unpacking the say messages correctly.

h0tw1r3 commented 1 year ago

@ben-bartholomew thank you! Exactly what I needed to see.