soulfly Posted November 20, 2025 Posted November 20, 2025 Hello everyone, I’m having an issue and I’m hoping someone can guide me or provide advice on how to fix it. Here’s the problem: Items such as HeadGear, Armor, and Shield — basically any item that involves ItemColor — do not show their icon on the ground when dropped. Has anyone encountered this before or know where I should look to resolve it? Any suggestions or guidance would be greatly appreciated. Here is the result of debug.txt which I noticed that before <itemid> there is a value of 40. Quote Ani Index [40130005] Not Found In [ani/MapItemIcon.Ani] -- Mon Nov 17 18:15:27 2025 AniIndexInfo [40130005] Not Found in [ani/MapItemIcon.Ani] -- Mon Nov 17 18:15:27 2025 I'm running a client version 6609. Quote
kennylovecode Posted November 21, 2025 Posted November 21, 2025 I couldn't find what you called in my 6609 version ANI file Any data related to 40130005 So the question is whether you have used clients that have been modified by others, and whether you have aligned the data on the server with the file configuration on the client? Quote
soulfly Posted November 21, 2025 Author Posted November 21, 2025 4 hours ago, kennylovecode said: I couldn't find what you called in my 6609 version ANI file Any data related to 40130005 So the question is whether you have used clients that have been modified by others, and whether you have aligned the data on the server with the file configuration on the client? It should suppose to read in client as 130005 which is the itemid and this is also the result in my source when I tried to call the ItemID when it drop, I don't know why it added 40before the itemid. Quote
kennylovecode Posted November 21, 2025 Posted November 21, 2025 3 hours ago, soulfly said: It should suppose to read in client as 130005 which is the itemid and this is also the result in my source when I tried to call the ItemID when it drop, I don't know why it added 40before the itemid. You can write an absolute value of 130005 at the packet when debugging and building it, and see if the client displays it. Quote
soulfly Posted November 21, 2025 Author Posted November 21, 2025 Bro, I found the source on why it gives 40 before the itemid it was in the packet which I highlight below. Not sure how this gonna work with As I'm not really don't know about packets and still learning with basics What else could you suggest bro to fix the issue? Quote public static unsafe ServerSockets.Packet ItemPacketCreate(this ServerSockets.Packet stream, MsgItemPacket Item) { stream.InitWriter(); stream.Write(Extensions.Time32.Now.Value); stream.Write(Item.m_UID);//8 stream.Write(Item.m_ID);//12 stream.Write(Item.m_X);//16 stream.Write(Item.m_Y);//18 if (Item.MaxLife != 0) stream.Write(Item.MaxLife);//20 else stream.Write((ushort)40);//Item.m_Color); - This is the one that triggered on adding the 40 value before the itemID. stream.Write((byte)Item.DropType);//22 stream.Write(Item.Life);//23 if (Item.DropType == MsgDropID.Effect) stream.Write((byte)Item.m_Color);//aici = 27 plus. else stream.Write((byte)Item.Plus); stream.Write(Item.ItemOwnerUID);//28 if (Item.DontShow == 1) { stream.Write(2);//?? stream.Write(3);//?? } else stream.ZeroFill(8);//32 stream.Write(Item.GuildID);//40 stream.Write(Item.FlowerType);//44 stream.Write(Item.Timer);//45 stream.Write(Item.UnKnow);//53 uint stream.Write((uint)0);//57 stream.Write(Item.OwnerX); stream.Write(Item.OwnerY); // stream.Write(30933348); stream.ZeroFill(28);//?? if (Item.Name != null) stream.Write(Item.Name, 16); stream.Write((uint)0); stream.Write((uint)0); stream.Write((uint)0); stream.Finalize(GamePackets.FloorMap); return stream; } } Quote
soulfly Posted November 21, 2025 Author Posted November 21, 2025 (edited) I found the error and fixed. I just change the value 40: stream.Write((ushort)40);//Item.m_Color); to stream.Write((ushort)Item.m_Colo);//Item.m_Color); Edited November 21, 2025 by soulfly Quote
Konichu Posted November 21, 2025 Posted November 21, 2025 (edited) I see that your version is close to mine according to your structure. I'm on 6609 and this is my packet writer.Write((ushort)PacketType.MsgMapItem); writer.Write(Timestamp); // 4 writer.Write(Identity); // 8 writer.Write(Itemtype); // 12 writer.Write(MapX); // 16 writer.Write(MapY); // 18 writer.Write(Color); // 20 writer.Write((byte)Action); // 22 writer.Write(Data); // 23 writer.Write((byte)Composition); // 27 writer.Write(OwnerIdentity); // 28 writer.Write(SyndicateId); // 32 writer.Write(IsTrapNpcCanPk); // 36 !is trap friendly? writer.Write(LeagueId); // 37 writer.Write(ServerId); // 41 writer.Write(EndTime); // 45 writer.Write(0); // 49 writer.Write(0); // 53 writer.Write(0); // 57 writer.Write(PosX); // 61 writer.Write(PosY); // 63 writer.Write(0UL); // 65 writer.Write(0UL); // 73 writer.Write(0UL); // 81 writer.Write(0); // 89 writer.Write(Name, 16); // 93 Names are from reverse. There are a few offsets that are also used, but I could'nt get their real function yet. LeagueID is the Union/Kingdom ID. 49, 53 and 57 are used on the trap types, but they don't have named functions and I still didn't test them. The offsets 65, 73 and 81 are ulong (QWORD) and judging by the size of 28 bytes I'm starting to think that this may be related to Status flags. Also, the field IsTrapNpcCanPk is a byte, the client do some validation and Idk what for. You can probably just send it as a boolean since you will handle the attack server side. /// <summary> /// Gets or sets a value indicating whether trap NPCs can participate in player killing (PK) interactions. /// </summary> /// <remarks> /// 0,3,8,10: Trap NPCs cannot engage in PK interactions. /// 1: Trap NPCs can engage in PK interactions. /// 2: Trap NPCs can engage Non Team members in PK interactions. /// 4: Trap NPCs can only engage enemies in PK interactions. (Probably anyone not friend, idk) /// 5,6,7: Trap NPCs can only engage other Guild's members in PK interactions. /// 9,11: Trap NPCs can only members of Leagues (Unions) from different Servers in PK interactions. /// </remarks> public byte IsTrapNpcCanPk { get; set; } Edited November 21, 2025 by Konichu Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.