Xentales

Talk about stuff, and if you must, about Xenimus
It is currently 19 Aug 2018 02:01

All times are UTC - 5 hours [ DST ]




Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: Xenimus Update - 1.253
PostPosted: 13 Dec 2017 15:06 
Offline

Joined: 05 Nov 2007 11:14
Posts: 128
Some changes in this update:

encit.dat now has an extra variable in the header, I suspect this is the RBG modifications for each item?

4 bytes unk1
for (i = 0; i <= unk1; ++i) 4 bytes unk
4 bytes unk2
for (i = 0; i <= unk2; ++i) 4 bytes unk
4 bytes unk3
for (i = 0; i <= unk3; ++i) 4 bytes unk
4 bytes num_items
for (i = 0; i <= num_items; ++i) 220 bytes item data


Top
 Profile  
 
PostPosted: 13 Dec 2017 15:06 
Offline

Joined: 05 Nov 2007 11:14
Posts: 128
Obfuscated traffic and files has a new lookup key table compared to the old version of Xen. Probably why this update is so large.

New key:

0x00, 0x60, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x66, 0x66, 0x66, 0x3F,
0x9A, 0x99, 0xD9, 0x3F, 0x9A, 0x99, 0x19, 0x40, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x60, 0x40,
0x9A, 0x99, 0x79, 0x40, 0x66, 0x66, 0x86, 0x40, 0xCD, 0xCC, 0x8C, 0x40, 0x00, 0x00, 0x90, 0x40,
0x33, 0x33, 0x93, 0x40, 0x66, 0x66, 0x96, 0x40, 0x9A, 0x99, 0x99, 0x40, 0xCD, 0xCC, 0x9C, 0x40,
0x00, 0x00, 0xA0, 0x40, 0x33, 0x33, 0xA3, 0x40, 0x66, 0x66, 0xA6, 0x40, 0x9A, 0x99, 0xA9, 0x40,
0xCD, 0xCC, 0xAC, 0x40, 0x00, 0x00, 0xB0, 0x40, 0x33, 0x33, 0xB3, 0x40, 0x66, 0x66, 0xB6, 0x40,
0x9A, 0x99, 0xB9, 0x40, 0xCD, 0xCC, 0xBC, 0x40, 0x00, 0x00, 0xC0, 0x40, 0x33, 0x33, 0xC3, 0x40,
0x66, 0x66, 0xC6, 0x40, 0x9A, 0x99, 0xC9, 0x40, 0xCD, 0xCC, 0xCC, 0x40, 0x00, 0x00, 0xD0, 0x40,
0x33, 0x33, 0xD3, 0x40, 0x66, 0x66, 0xD6, 0x40, 0x9A, 0x99, 0xD9, 0x40, 0xCD, 0xCC, 0xDC, 0x40,
0x00, 0x00, 0xE0, 0x40, 0x33, 0x33, 0xE3, 0x40, 0x66, 0x66, 0xE6, 0x40, 0x9A, 0x99, 0xE9, 0x40,
0xCD, 0xCC, 0xEC, 0x40, 0x00, 0x00, 0xF0, 0x40, 0x33, 0x33, 0xF3, 0x40, 0x66, 0x66, 0xF6, 0x40,
0x9A, 0x99, 0xF9, 0x40, 0xCD, 0xCC, 0xFC, 0x40, 0x00, 0x00, 0x00, 0x41, 0x9A, 0x99, 0x01, 0x41,
0x33, 0x33, 0x03, 0x41, 0xCD, 0xCC, 0x04, 0x41, 0x66, 0x66, 0x06, 0x41, 0x00, 0x00, 0x08, 0x41,
0x9A, 0x99, 0x09, 0x41, 0x33, 0x33, 0x0B, 0x41, 0xCD, 0xCC, 0x0C, 0x41, 0x66, 0x66, 0x0E, 0x41,
0x00, 0x00, 0x10, 0x41, 0x9A, 0x99, 0x11, 0x41, 0x33, 0x33, 0x13, 0x41, 0xCD, 0xCC, 0x14, 0x41,
0x66, 0x66, 0x16, 0x41, 0x00, 0x00, 0x18, 0x41, 0x9A, 0x99, 0x19, 0x41, 0x33, 0x33, 0x1B, 0x41,


Top
 Profile  
 
PostPosted: 14 Dec 2017 12:12 
Offline

Joined: 05 Nov 2007 11:14
Posts: 128
Some changes to packets:

Packet 0x04 (LocalModelUpdate)

Code:
struct LocalModelData
{
   uint8 shield;
   uint8 helmet;
   NEW uint8 unkmodel; //probably boots, cape appears to be part of the selectable texture bits
   NEW uint8 unused; //seems to be some padding, or forgot to implement? Is never referenced in client!
   uint16 charmodel;
   uint16 weapon;
   uint16 serverid;
   uint16 checksum;
};


Packet 0x03 (UpdateAll) - Unit Update Section
Code:
struct UpdatePacketUnitModels
{
   uint16 character;
   uint16 weapon;
   uint8 shield;
   uint8 helmet;
   NEW uint8 unknown; //probably boots
   uint16 extrabits; //bits >> 4, bits & 0x0F, (bits >> 8) & 3. Probably colourtexture1, colourtexture2, capetexture
};


Top
 Profile  
 
PostPosted: 24 Dec 2017 04:53 
Offline

Joined: 05 Nov 2007 11:14
Posts: 128
The chat data for units around your character has also changed.

Previously it gave you the chat size as the first byte and you would just read that amount of bytes and add it to your pointer.

You now need to add 1 additional byte for the null terminator. This terminator is now included in the string size.

Code:
         if (updateflag & 0x20)
         {
            uint8* chatsize = &buffer[packetpos];
            uint8* charptr = &buffer[packetpos + 1];

            std::string chatstr = "";
            uint8 chatsz = 0;

            while (*charptr != 0) //null byte
            {
               chatstr += *charptr;
               charptr++;
               chatsz++;
            }
            ++charptr; //increment for the null, we don't loop over it!
            ++chatsz;

            if (chatsz != *chatsize)
               XENLUA_LOG("Warning: Packet corruption, expected equal (chatsize %u chatszcompute %u)\n", *chatsize, chatsz);

            //packetpos += 1; //size byte
            //packetpos += chatsz; //string size
            //packetpos += 1; //null terminator

            packetpos += *chatsize + 1;

#ifdef DEBUG
            XENLUA_LOG("Chat: %s\n", chatstr.c_str());
#endif
         }


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group