• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

Web [158.2]I have found 2 strange byte on CharacterSkillInformation[Not found on client]

Newbie Spellweaver
Joined
Oct 9, 2008
Messages
19
Reaction score
1
Hi try i getting structure from client(v158.2) but i got strange 2 short on CharacterSkillInformation.
But client doesn't decode it.

Packet sniff from GMS
Code:
01 0E 00 3C A2 31 01 01 00 00 00 00 80 05 BB 46 E6 17 02 
E3 A6 31 01 01 00 00 00 00 80 05 BB 46 E6 17 02 
80 B8 C4 04 01 00 00 00 00 80 05 BB 46 E6 17 02 
FC A2 31 01 00 00 00 00 00 80 05 BB 46 E6 17 02 
E5 A6 31 01 01 00 00 00 00 80 05 BB 46 E6 17 02 
FE A2 31 01 01 00 00 00 00 80 05 BB 46 E6 17 02 
E8 39 6E 01 14 00 00 00 00 80 05 BB 46 E6 17 02 
E7 A6 31 01 01 00 00 00 00 80 05 BB 46 E6 17 02 
EB 0C 3D 00 0A 00 00 00 00 80 05 BB 46 E6 17 02 
E9 39 6E 01 03 00 00 00 00 80 05 BB 46 E6 17 02 
E8 A6 31 01 01 00 00 00 00 80 05 BB 46 E6 17 02 
79 A2 31 01 00 00 00 00 00 80 05 BB 46 E6 17 02 
EA 39 6E 01 0F 00 00 00 00 80 05 BB 46 E6 17 02 
ED 0C 3D 00 0A 00 00 00 00 80 05 BB 46 E6 17 02 00 00 01 00 E9 39 6E 01 17 00 00 00

My Mapleshark script[i got from mssp project]
I focus only CharacterSkillInformation. So i will skip other bytes
Code:
using(ScriptAPI)
{
	Skip(1977); //Skip other system
	StartNode("Character Skill");
	newskill = AddBool("New Skills Format");
	if(newskill)
    {
		skillCount = AddShort("Skills Count");
		if(skillCount > 0)
		{
			for (i=0; i<skillCount; i++) {
				StartNode("Skill " + (i + 1));
	
				AddInt("ID");
				AddInt("Current Level");
				AddLong("Default Expiration Time");

				//TODO If master skill read int it.

				EndNode(false);
			}
		
			AddShort("Strange short");
		}
		
	    cooldownSkillsCount = AddShort("Cooldown Skills Count");
        if(cooldownSkillsCount > 0)
		{
			for (i=0; i<cooldownSkillsCount; i++) {
				StartNode("Cooldown Skill " + (i + 1));

				AddInt("ID");
				AddShort("Remaining Seconds");

				EndNode(false);
			}

			if (cooldownSkillsCount == 0)
				AddShort("No cooldowns");
			AddShort("Strange short");
		}	
	}
    EndNode(false);
}
Picture then parse structure
Skill - [158.2]I have found 2 strange byte on CharacterSkillInformation[Not found on client] - RaGEZONE Forums


Client v158.2 structure
Code:
  if ( v330 & 0x100 )                           // CharacterSkills
  {
    if ( CInPacket::Decode1(a2) )               // New Skill Format?
    {
      v132 = CInPacket::Decode2(a2);            // Skill count
      v133 = v132;
      if ( v132 )
      {
        v134 = (v319 + 2146);
        sub_5A4400((v319 + 2194));
        sub_5A4400(v134);
        sub_5A4400(v134 + 24);
        for ( ; v133 > 0; --v133 )
        {
          v135 = CInPacket::Decode4(a2);        // ID
          l = v135;
          v324 = CInPacket::Decode4(a2);        // Current Level
          sub_5A5C60((v319 + 2194), &l, &v324);
          CInPacket::DecodeBuffer(&v333, 8);    // Expiration Time
          sub_6A4EE0(&l, &v333);
          if ( is_skill_need_master_level(v135) )
          {
            v324 = CInPacket::Decode4(a2);
            sub_5A5C60((v319 + 2314), &l, &v324);
          }
        }
      }
      v136 = *(v319 + 927);
      v137 = *(v136 + 4);
      v138 = (v319 + 3704);
      v13 = *(v137 + 21) == 0;
      for ( l = *(v136 + 4); v13; l = v137 )
      {
        v317 = *(v137 + 8);
        sub_4D5E10(v317);
        v137 = *v137;
        ZAllocEx_ZAllocAnonSelector_::Free(&dword_1DAD8E4, l);
        v13 = *(v137 + 21) == 0;
      }
      *(*(v138 + 4) + 4) = *(v138 + 4);
      v139 = *(v138 + 4);
      *(v138 + 8) = 0;
      *v139 = v139;
      *(*(v138 + 4) + 8) = *(v138 + 4);
      v140 = CInPacket::Decode2(a2);            // CoolDown Skill Count
      if ( v140 > 0 )
      {
        l = v140;
        do
        {
          v324 = CInPacket::Decode4(a2);        // ID
          v141 = CInPacket::Decode2(a2);        // remain sec
          v142 = sub_500980(&v324);
          v13 = l-- == 1;
          *v142 = v141;
        }
        while ( !v13 );
      }
    }
    else
    {
      v143 = CInPacket::Decode2(a2);
      if ( v143 > 0 )
      {
        v144 = (v319 + 2146);
        do
        {
          v326 = CInPacket::Decode4(a2);
          v328 = CInPacket::Decode4(a2);
          if ( sub_532AF0(&v326, 0) )
            sub_69A900(v144 + 24, &v326);
          sub_5A5C60(v144, &v326, &v328);
          sub_5A5C60(v144 + 48, &v326, &v328);
          --v143;
        }
        while ( v143 > 0 );
      }
      v145 = CInPacket::Decode2(a2);
      if ( v145 > 0 )
      {
        v146 = (v319 + 2146);
        do
        {
          v326 = CInPacket::Decode4(a2);
          if ( sub_69A900(v146 + 48, &v326) )
          {
            if ( sub_532AF0(&v326, 0) )
              sub_69A900(v146, &v326);
            sub_5A5C60(v146 + 24, &v326, 0);
          }
          --v145;
        }
        while ( v145 > 0 );
      }
      v336 = dword_1A627B8;
      v337 = off_1A627BC;
      for ( m = CInPacket::Decode2(a2); m > 0; --m )
      {
        v326 = CInPacket::Decode4(a2);
        CInPacket::DecodeBuffer(&v336, 8);
        if ( sub_69BCB0(&v326, 0) )
          sub_69AA70(&v326);
        sub_6A4EE0(&v326, &v336);
        sub_6A4EE0(&v326, &v336);
      }
      for ( n = CInPacket::Decode2(a2); n > 0; --n )
      {
        v326 = CInPacket::Decode4(a2);
        if ( sub_69AA70(&v326) )
        {
          if ( sub_69BCB0(&v326, 0) )
            sub_69AA70(&v326);
          sub_6A4EE0(&v326, 0);
        }
      }
      v149 = CInPacket::Decode2(a2);
      if ( v149 > 0 )
      {
        v150 = (v319 + 2266);
        do
        {
          v326 = CInPacket::Decode4(a2);
          v328 = CInPacket::Decode4(a2);
          if ( sub_532AF0(&v326, 0) )
            sub_69A900(v150 + 24, &v326);
          sub_5A5C60(v150, &v326, &v328);
          sub_5A5C60(v150 + 48, &v326, &v328);
          --v149;
        }
        while ( v149 > 0 );
      }
      v151 = CInPacket::Decode2(a2);
      if ( v151 > 0 )
      {
        v152 = (v319 + 2266);
        do
        {
          v326 = CInPacket::Decode4(a2);
          if ( sub_69A900(v152 + 48, &v326) )
          {
            if ( sub_532AF0(&v326, 0) )
              sub_69A900(v152, &v326);
            sub_5A5C60(v152 + 24, &v326, 0);
          }
          --v151;
        }
        while ( v151 > 0 );
      }
    }
  }


Anyone have idea for this solution? :?:
 

Attachments

You must be registered for see attachments list
Back
Top