Redux - Observing friend/enemy gears and item unlock

01/08/2025 16:35 moorrr#1
Hello everyone,

I've been working on a Redux server (5065) for some time, but I haven't been able to find detailed information on these two topics. I’m hoping someone here might have the knowledge to help:

Observing friend/enemy gear
When observing another player's equipment using the magnifying glass button, the client sends a MsgAction(1010) packet with action = 117. The server then returns MsgItemInformation(1008) packets with information for each item the target has, and everything works as expected.

However, when trying to observe a player's gear through the Friend/Enemy list window using the "Check" button, the client sends a MsgAction(1010) packet with action = 310. Returning MsgItemInformation packets for each item doesn't work; the observe window opens but displays the observing player's own character (not the target) with empty items. Is there an additional packet that needs to be sent by the server to update the observing window with the target player's character and gear?

Item unlock timer
When a player unlocks a locked item, there's a 5-day timer for the item to fully unlock. Every time the player logs in, a popup window appears, showing the timers for each item. Does anyone know which packet is used to display this window on the client, and how the server should format the item timer information?

Any insights or guidance would be greatly appreciated.

Thanks! :)
01/08/2025 21:17 Arcо#2
Quote:
Originally Posted by moorrr View Post
However, when trying to observe a player's gear through the Friend/Enemy list window using the "Check" button, the client sends a MsgAction(1010) packet with action = 310. Returning MsgItemInformation packets for each item doesn't work; the observe window opens but displays the observing player's own character (not the target) with empty items. Is there an additional packet that needs to be sent by the server to update the observing window with the target player's character and gear?
iirc, you need to send 1014 with the target character to the client first. Here's my function for it.
01/10/2025 00:05 CptSky#3
To add to Arco's comment.

The MsgPlayer packet has a small flag near the end to indicate that it is a "remote" player, which may not be on screen. Most sources do not set this flag properly, which makes the querying broken when the player isn't already in screen. I see that Arco's example seem to just always restrict the query range.

Also, the fact that the MsgPlayer packet is sent can be abused, so make sure to only send it when querying through the friends interface. It simplifies the patches you need to do. You might wonder how it can be abused?
1. The client teleports the target player to the position in the packet, so by spamming the query equipment request (like using a proxy to do so), you can know where the target stands directly (even when it jumps) and makes PvP easier.
2. The packet can be used to track players on the map and know their specific position (if you enable the out-of-range querying).

There are protections possible for both.
01/10/2025 13:57 moorrr#4
Quote:
Originally Posted by Arcо View Post
iirc, you need to send 1014 with the target character to the client first. Here's my function for it.
Quote:
Originally Posted by CptSky View Post
To add to Arco's comment.

The MsgPlayer packet has a small flag near the end to indicate that it is a "remote" player, which may not be on screen. Most sources do not set this flag properly, which makes the querying broken when the player isn't already in screen. I see that Arco's example seem to just always restrict the query range.

Also, the fact that the MsgPlayer packet is sent can be abused, so make sure to only send it when querying through the friends interface. It simplifies the patches you need to do. You might wonder how it can be abused?
1. The client teleports the target player to the position in the packet, so by spamming the query equipment request (like using a proxy to do so), you can know where the target stands directly (even when it jumps) and makes PvP easier.
2. The packet can be used to track players on the map and know their specific position (if you enable the out-of-range querying).

There are protections possible for both.
It worked!
Apparently the flag that you was talking about wasn't documented anywhere in the sources that I known of:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...] (might be Window Spawn offset?)

So for those interested, in patch 5065 the "remote" flag in MsgPlayer is at offset 64, set it to true before observing friend/enemy equips.

Thanks guys! :)
01/10/2025 19:22 pintinho12#5
Won't be useful for your version, but after poker implementation it seems to have a third value. I used the "Window Spawn" name because it seems to be related to the way it will be displayed on screen:
0: normal
1: lock dummy
2: something related to poker tables (probably poker table seat display?)
But I never saw a source with poker implemented or sniffed poker packets xD so I may be completely wrong

Quote:
Originally Posted by CptSky View Post
To add to Arco's comment.

The MsgPlayer packet has a small flag near the end to indicate that it is a "remote" player, which may not be on screen. Most sources do not set this flag properly, which makes the querying broken when the player isn't already in screen. I see that Arco's example seem to just always restrict the query range.

Also, the fact that the MsgPlayer packet is sent can be abused, so make sure to only send it when querying through the friends interface. It simplifies the patches you need to do. You might wonder how it can be abused?
1. The client teleports the target player to the position in the packet, so by spamming the query equipment request (like using a proxy to do so), you can know where the target stands directly (even when it jumps) and makes PvP easier.
2. The packet can be used to track players on the map and know their specific position (if you enable the out-of-range querying).

There are protections possible for both.
oh yeah im patching this now xD
01/11/2025 18:38 Spirited#6
Quote:
Originally Posted by moorrr View Post
It worked!
Apparently the flag that you was talking about wasn't documented anywhere in the sources that I known of:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...] (might be Window Spawn offset?)

So for those interested, in patch 5065 the "remote" flag in MsgPlayer is at offset 64, set it to true before observing friend/enemy equips.

Thanks guys! :)
Oh no, someone found my in-progress wiki. :o