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
My Mapleshark script[i got from mssp project]
I focus only CharacterSkillInformation. So i will skip other bytes
Picture then parse structure
Client v158.2 structure
Anyone have idea for this solution? :?:
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);
}
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