Hey, I need to get the charname of the party master as Lucky party number event.. but the packet I have got it give me the number of the party and the charname not apear there is a solution?
0xB06C - SERVER_AGENT_PARTY_MATCHING_LIST_RESPONSE
The packet that I tried to parse it is the same of your opcode packet but I noticed that the party number is doesnot shown in this packet but the charname apearQuote:
I don't know which packet you tried or how carefully you parsed it butdefinitively contains those information.Code:0xB06C - SERVER_AGENT_PARTY_MATCHING_LIST_RESPONSE
................
[S -> C][B06C]
01 ................
01 ................
00 ................
01 ................
D2 00 00 00 ................
03 1B E2 57 ...W............
06 00 ................
52 75 73 69 6C 61 Rusila..........
01 ................
01 ................
07 ................
00 ................
01 ................
01 ................
18 00 ................
57 54 53 20 50 65 74 20 41 74 74 61 63 6B 20 2E WTS.Pet.Attack..
2E 2E 20 47 65 6E 69 65 ...Genie........
public static void ParsePartyMember(object opacket)
{
ErrorHandler.AddHandler();
Packet packet = (Packet)opacket;
Main.cPt.ParseParty(packet);
}
public void ParseParty(Packet oPacket)
{
Packet packet = (Packet)oPacket;
packet.data.ReadBYTE();
///////////////////////////////////
///////////////////////////////////
MasterID = packet.data.ReadDWORD();
Type = packet.data.ReadBYTE();
Players.Clear();
///////////////////////////////////
///////////////////////////////////
byte count = packet.data.ReadBYTE();
for (int i = 0; i < count; i++)
{
///////////////////////////////////////////////////////////
SpawnData curPlayer = new SpawnData();
curPlayer.Buffs = new List<SkillData>();
curPlayer.UniqueId = (uint)Players.Count;
packet.data.ReadBYTE(); // SPLITTER
uint accid = packet.data.ReadDWORD();
curPlayer.name = Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD()));
try
{
for (int l = 0; l < Main.PlayersInRange.Count; l++)
{
if (Main.PlayersInRange.ElementAt(l).Value.name == curPlayer.name)
{
curPlayer = Main.PlayersInRange.ElementAt(l).Value;
break;
}
}
}
catch
{
}
curPlayer.accid = accid;
curPlayer.model = packet.data.ReadDWORD();
curPlayer.level = packet.data.ReadBYTE();
byte chpmp = packet.data.ReadBYTE();
curPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber);
curPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber);
// POSITION
curPlayer.xSec = packet.data.ReadBYTE();
curPlayer.ySec = packet.data.ReadBYTE();
if (curPlayer.ySec == 0x80)
{
int x = packet.data.ReadSignedDWORD();
int z = packet.data.ReadSignedDWORD();
int y = packet.data.ReadSignedDWORD();
curPlayer.XCoord = Functions.GetXCoord((int)x, curPlayer.xSec);
curPlayer.YCoord = Functions.GetYCoord((int)y, curPlayer.ySec);
}
else
{
short x = packet.data.ReadSignedWORD();
short z = packet.data.ReadSignedWORD();
short y = packet.data.ReadSignedWORD();
curPlayer.XCoord = Functions.GetXCoord((int)x, curPlayer.xSec);
curPlayer.YCoord = Functions.GetYCoord((int)y, curPlayer.ySec);
}
//
packet.data.ReadDWORD();
Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); // GILDE
packet.data.ReadBYTE();
packet.data.ReadDWORD(); // SKILL TREE
packet.data.ReadDWORD(); // SKILL TREE
if (curPlayer.accid != Main.charData.accId)
Players.Add(curPlayer.UniqueId,curPlayer);
///////////////////////////////////////////////////////////
}
Main.guiEvents.doUpdateGui(null, UpdateType.PartyMembers);
Main.cPt.PartyMasterUpdate(MasterID);
}
public void PartyMasterUpdate(uint newmasterId)
{
MasterID = newmasterId;
if (newmasterId == Main.charData.accId)
{
MasterName = Main.charData.name;
Main.guiEvents.Info("You are the new Partymaster.", Color.LimeGreen);
}
else
{
for (int i = 0; i < Players.Count; i++)
{
if (Players.ElementAt(i).Value.accid == newmasterId)
{
MasterName = Players.ElementAt(i).Value.name;
break;
}
}
Main.guiEvents.Info("[" + MasterName + "]" + " is new Partymaster.", Color.LimeGreen);
}
if (LeaveWhenNotMaster)
{
if (MasterName != WishedMaster)
{
LeaveParty();
}
}
}
public static void ParsePartyAction(object opacket)
{
ErrorHandler.AddHandler();
try
{
Packet packet = (Packet)opacket;
SpawnData actionPlayer = new SpawnData();
actionPlayer.Buffs = new List<SkillData>();
byte chpmp;
switch (packet.data.ReadBYTE())
{
case 0x01: // CLOSE PT
Main.cPt.PartyClosed();
break;
case 0x02: // SOME1 JOINED
packet.data.ReadBYTE(); // SPLITTER
uint accid = packet.data.ReadDWORD();
actionPlayer.name = Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD()));
actionPlayer.UniqueId = (uint)Main.cPt.Players.Count;
for (int i = 0; i < Main.PlayersInRange.Count; i++)
{
if (Main.PlayersInRange.ElementAt(i).Value.name == actionPlayer.name)
{
actionPlayer = Main.PlayersInRange.ElementAt(i).Value;
break;
}
}
actionPlayer.accid = accid;
actionPlayer.model = packet.data.ReadDWORD();
actionPlayer.level = packet.data.ReadBYTE();
chpmp = packet.data.ReadBYTE();
actionPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber);
actionPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber);
// POSITION
actionPlayer.xSec = packet.data.ReadBYTE();
actionPlayer.ySec = packet.data.ReadBYTE();
if (actionPlayer.ySec == 0x80)
{
int x = packet.data.ReadSignedDWORD();
int z = packet.data.ReadSignedDWORD();
int y = packet.data.ReadSignedDWORD();
actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec);
actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec);
}
else
{
short x = packet.data.ReadSignedWORD();
short z = packet.data.ReadSignedWORD();
short y = packet.data.ReadSignedWORD();
actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec);
actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec);
}
packet.data.ReadDWORD();
Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); // GILDE
packet.data.ReadBYTE();
packet.data.ReadDWORD(); // SKILL TREE
packet.data.ReadDWORD(); // SKILL TREE
Main.cPt.PlayerJoined(actionPlayer);
break;
case 0x03: // LEFT PT OR KICKED
Main.cPt.PlayerLeft(packet.data.ReadDWORD(), packet.data.ReadBYTE());
break;
case 0x06: // PLAYER INFO
actionPlayer.accid = packet.data.ReadDWORD();
byte action = packet.data.ReadBYTE();
if (action == 0x04) // HP MP UPDATE
{
chpmp = packet.data.ReadBYTE();
actionPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber);
actionPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber);
Main.cPt.PlayerHPMPUpdate(actionPlayer);
}
else if (action == 0x20)
{
// POSITION
actionPlayer.xSec = packet.data.ReadBYTE();
actionPlayer.ySec = packet.data.ReadBYTE();
if (actionPlayer.ySec == 0x80) // IN CAVE
{
float x = packet.data.ReadSINGLE();
float z = packet.data.ReadSINGLE();
float y = packet.data.ReadSINGLE();
actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec);
actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec);
}
else
{ // NOT IN CAVE
short xx = packet.data.ReadSignedWORD();
short zz = packet.data.ReadSignedWORD();
short yy = packet.data.ReadSignedWORD();
actionPlayer.XCoord = Functions.GetXCoord((int)xx, actionPlayer.xSec);
actionPlayer.YCoord = Functions.GetYCoord((int)yy, actionPlayer.ySec);
}
Main.cPt.PlayerPositionUpdate(actionPlayer.accid, actionPlayer.XCoord, actionPlayer.YCoord);
}
break;
case 0x09:
Main.cPt.PartyMasterUpdate(packet.data.ReadDWORD());
break;
}
}
catch
{
}
}
Thank you for your help but there isnot what I need ...Quote:
On ParsParty (0x3065)
ParseParty functionCode:public static void ParsePartyMember(object opacket) { ErrorHandler.AddHandler(); Packet packet = (Packet)opacket; Main.cPt.ParseParty(packet); }
PartyMasterUpdateCode:public void ParseParty(Packet oPacket) { Packet packet = (Packet)oPacket; packet.data.ReadBYTE(); /////////////////////////////////// /////////////////////////////////// MasterID = packet.data.ReadDWORD(); Type = packet.data.ReadBYTE(); Players.Clear(); /////////////////////////////////// /////////////////////////////////// byte count = packet.data.ReadBYTE(); for (int i = 0; i < count; i++) { /////////////////////////////////////////////////////////// SpawnData curPlayer = new SpawnData(); curPlayer.Buffs = new List<SkillData>(); curPlayer.UniqueId = (uint)Players.Count; packet.data.ReadBYTE(); // SPLITTER uint accid = packet.data.ReadDWORD(); curPlayer.name = Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); try { for (int l = 0; l < Main.PlayersInRange.Count; l++) { if (Main.PlayersInRange.ElementAt(l).Value.name == curPlayer.name) { curPlayer = Main.PlayersInRange.ElementAt(l).Value; break; } } } catch { } curPlayer.accid = accid; curPlayer.model = packet.data.ReadDWORD(); curPlayer.level = packet.data.ReadBYTE(); byte chpmp = packet.data.ReadBYTE(); curPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber); curPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber); // POSITION curPlayer.xSec = packet.data.ReadBYTE(); curPlayer.ySec = packet.data.ReadBYTE(); if (curPlayer.ySec == 0x80) { int x = packet.data.ReadSignedDWORD(); int z = packet.data.ReadSignedDWORD(); int y = packet.data.ReadSignedDWORD(); curPlayer.XCoord = Functions.GetXCoord((int)x, curPlayer.xSec); curPlayer.YCoord = Functions.GetYCoord((int)y, curPlayer.ySec); } else { short x = packet.data.ReadSignedWORD(); short z = packet.data.ReadSignedWORD(); short y = packet.data.ReadSignedWORD(); curPlayer.XCoord = Functions.GetXCoord((int)x, curPlayer.xSec); curPlayer.YCoord = Functions.GetYCoord((int)y, curPlayer.ySec); } // packet.data.ReadDWORD(); Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); // GILDE packet.data.ReadBYTE(); packet.data.ReadDWORD(); // SKILL TREE packet.data.ReadDWORD(); // SKILL TREE if (curPlayer.accid != Main.charData.accId) Players.Add(curPlayer.UniqueId,curPlayer); /////////////////////////////////////////////////////////// } Main.guiEvents.doUpdateGui(null, UpdateType.PartyMembers); Main.cPt.PartyMasterUpdate(MasterID); }
Also on ParsePartyAction ( PartyAction = 0x3864, // KICKED / LEAVE / HP/MP/MOVEMENT CHANGE)Code:public void PartyMasterUpdate(uint newmasterId) { MasterID = newmasterId; if (newmasterId == Main.charData.accId) { MasterName = Main.charData.name; Main.guiEvents.Info("You are the new Partymaster.", Color.LimeGreen); } else { for (int i = 0; i < Players.Count; i++) { if (Players.ElementAt(i).Value.accid == newmasterId) { MasterName = Players.ElementAt(i).Value.name; break; } } Main.guiEvents.Info("[" + MasterName + "]" + " is new Partymaster.", Color.LimeGreen); } if (LeaveWhenNotMaster) { if (MasterName != WishedMaster) { LeaveParty(); } } }
On 0x09 case is master update
hope it will help youCode:public static void ParsePartyAction(object opacket) { ErrorHandler.AddHandler(); try { Packet packet = (Packet)opacket; SpawnData actionPlayer = new SpawnData(); actionPlayer.Buffs = new List<SkillData>(); byte chpmp; switch (packet.data.ReadBYTE()) { case 0x01: // CLOSE PT Main.cPt.PartyClosed(); break; case 0x02: // SOME1 JOINED packet.data.ReadBYTE(); // SPLITTER uint accid = packet.data.ReadDWORD(); actionPlayer.name = Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); actionPlayer.UniqueId = (uint)Main.cPt.Players.Count; for (int i = 0; i < Main.PlayersInRange.Count; i++) { if (Main.PlayersInRange.ElementAt(i).Value.name == actionPlayer.name) { actionPlayer = Main.PlayersInRange.ElementAt(i).Value; break; } } actionPlayer.accid = accid; actionPlayer.model = packet.data.ReadDWORD(); actionPlayer.level = packet.data.ReadBYTE(); chpmp = packet.data.ReadBYTE(); actionPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber); actionPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber); // POSITION actionPlayer.xSec = packet.data.ReadBYTE(); actionPlayer.ySec = packet.data.ReadBYTE(); if (actionPlayer.ySec == 0x80) { int x = packet.data.ReadSignedDWORD(); int z = packet.data.ReadSignedDWORD(); int y = packet.data.ReadSignedDWORD(); actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec); } else { short x = packet.data.ReadSignedWORD(); short z = packet.data.ReadSignedWORD(); short y = packet.data.ReadSignedWORD(); actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec); } packet.data.ReadDWORD(); Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); // GILDE packet.data.ReadBYTE(); packet.data.ReadDWORD(); // SKILL TREE packet.data.ReadDWORD(); // SKILL TREE Main.cPt.PlayerJoined(actionPlayer); break; case 0x03: // LEFT PT OR KICKED Main.cPt.PlayerLeft(packet.data.ReadDWORD(), packet.data.ReadBYTE()); break; case 0x06: // PLAYER INFO actionPlayer.accid = packet.data.ReadDWORD(); byte action = packet.data.ReadBYTE(); if (action == 0x04) // HP MP UPDATE { chpmp = packet.data.ReadBYTE(); actionPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber); actionPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber); Main.cPt.PlayerHPMPUpdate(actionPlayer); } else if (action == 0x20) { // POSITION actionPlayer.xSec = packet.data.ReadBYTE(); actionPlayer.ySec = packet.data.ReadBYTE(); if (actionPlayer.ySec == 0x80) // IN CAVE { float x = packet.data.ReadSINGLE(); float z = packet.data.ReadSINGLE(); float y = packet.data.ReadSINGLE(); actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec); } else { // NOT IN CAVE short xx = packet.data.ReadSignedWORD(); short zz = packet.data.ReadSignedWORD(); short yy = packet.data.ReadSignedWORD(); actionPlayer.XCoord = Functions.GetXCoord((int)xx, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)yy, actionPlayer.ySec); } Main.cPt.PlayerPositionUpdate(actionPlayer.accid, actionPlayer.XCoord, actionPlayer.YCoord); } break; case 0x09: Main.cPt.PartyMasterUpdate(packet.data.ReadDWORD()); break; } } catch { } }
Quote:
On ParsParty (0x3065)
ParseParty functionCode:public static void ParsePartyMember(object opacket) { ErrorHandler.AddHandler(); Packet packet = (Packet)opacket; Main.cPt.ParseParty(packet); }
PartyMasterUpdateCode:public void ParseParty(Packet oPacket) { Packet packet = (Packet)oPacket; packet.data.ReadBYTE(); /////////////////////////////////// /////////////////////////////////// MasterID = packet.data.ReadDWORD(); Type = packet.data.ReadBYTE(); Players.Clear(); /////////////////////////////////// /////////////////////////////////// byte count = packet.data.ReadBYTE(); for (int i = 0; i < count; i++) { /////////////////////////////////////////////////////////// SpawnData curPlayer = new SpawnData(); curPlayer.Buffs = new List<SkillData>(); curPlayer.UniqueId = (uint)Players.Count; packet.data.ReadBYTE(); // SPLITTER uint accid = packet.data.ReadDWORD(); curPlayer.name = Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); try { for (int l = 0; l < Main.PlayersInRange.Count; l++) { if (Main.PlayersInRange.ElementAt(l).Value.name == curPlayer.name) { curPlayer = Main.PlayersInRange.ElementAt(l).Value; break; } } } catch { } curPlayer.accid = accid; curPlayer.model = packet.data.ReadDWORD(); curPlayer.level = packet.data.ReadBYTE(); byte chpmp = packet.data.ReadBYTE(); curPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber); curPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber); // POSITION curPlayer.xSec = packet.data.ReadBYTE(); curPlayer.ySec = packet.data.ReadBYTE(); if (curPlayer.ySec == 0x80) { int x = packet.data.ReadSignedDWORD(); int z = packet.data.ReadSignedDWORD(); int y = packet.data.ReadSignedDWORD(); curPlayer.XCoord = Functions.GetXCoord((int)x, curPlayer.xSec); curPlayer.YCoord = Functions.GetYCoord((int)y, curPlayer.ySec); } else { short x = packet.data.ReadSignedWORD(); short z = packet.data.ReadSignedWORD(); short y = packet.data.ReadSignedWORD(); curPlayer.XCoord = Functions.GetXCoord((int)x, curPlayer.xSec); curPlayer.YCoord = Functions.GetYCoord((int)y, curPlayer.ySec); } // packet.data.ReadDWORD(); Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); // GILDE packet.data.ReadBYTE(); packet.data.ReadDWORD(); // SKILL TREE packet.data.ReadDWORD(); // SKILL TREE if (curPlayer.accid != Main.charData.accId) Players.Add(curPlayer.UniqueId,curPlayer); /////////////////////////////////////////////////////////// } Main.guiEvents.doUpdateGui(null, UpdateType.PartyMembers); Main.cPt.PartyMasterUpdate(MasterID); }
Also on ParsePartyAction ( PartyAction = 0x3864, // KICKED / LEAVE / HP/MP/MOVEMENT CHANGE)Code:public void PartyMasterUpdate(uint newmasterId) { MasterID = newmasterId; if (newmasterId == Main.charData.accId) { MasterName = Main.charData.name; Main.guiEvents.Info("You are the new Partymaster.", Color.LimeGreen); } else { for (int i = 0; i < Players.Count; i++) { if (Players.ElementAt(i).Value.accid == newmasterId) { MasterName = Players.ElementAt(i).Value.name; break; } } Main.guiEvents.Info("[" + MasterName + "]" + " is new Partymaster.", Color.LimeGreen); } if (LeaveWhenNotMaster) { if (MasterName != WishedMaster) { LeaveParty(); } } }
On 0x09 case is master update
hope it will help youCode:public static void ParsePartyAction(object opacket) { ErrorHandler.AddHandler(); try { Packet packet = (Packet)opacket; SpawnData actionPlayer = new SpawnData(); actionPlayer.Buffs = new List<SkillData>(); byte chpmp; switch (packet.data.ReadBYTE()) { case 0x01: // CLOSE PT Main.cPt.PartyClosed(); break; case 0x02: // SOME1 JOINED packet.data.ReadBYTE(); // SPLITTER uint accid = packet.data.ReadDWORD(); actionPlayer.name = Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); actionPlayer.UniqueId = (uint)Main.cPt.Players.Count; for (int i = 0; i < Main.PlayersInRange.Count; i++) { if (Main.PlayersInRange.ElementAt(i).Value.name == actionPlayer.name) { actionPlayer = Main.PlayersInRange.ElementAt(i).Value; break; } } actionPlayer.accid = accid; actionPlayer.model = packet.data.ReadDWORD(); actionPlayer.level = packet.data.ReadBYTE(); chpmp = packet.data.ReadBYTE(); actionPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber); actionPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber); // POSITION actionPlayer.xSec = packet.data.ReadBYTE(); actionPlayer.ySec = packet.data.ReadBYTE(); if (actionPlayer.ySec == 0x80) { int x = packet.data.ReadSignedDWORD(); int z = packet.data.ReadSignedDWORD(); int y = packet.data.ReadSignedDWORD(); actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec); } else { short x = packet.data.ReadSignedWORD(); short z = packet.data.ReadSignedWORD(); short y = packet.data.ReadSignedWORD(); actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec); } packet.data.ReadDWORD(); Encoding.GetEncoding(1251).GetString(packet.data.ReadBYTE((short)packet.data.ReadWORD())); // GILDE packet.data.ReadBYTE(); packet.data.ReadDWORD(); // SKILL TREE packet.data.ReadDWORD(); // SKILL TREE Main.cPt.PlayerJoined(actionPlayer); break; case 0x03: // LEFT PT OR KICKED Main.cPt.PlayerLeft(packet.data.ReadDWORD(), packet.data.ReadBYTE()); break; case 0x06: // PLAYER INFO actionPlayer.accid = packet.data.ReadDWORD(); byte action = packet.data.ReadBYTE(); if (action == 0x04) // HP MP UPDATE { chpmp = packet.data.ReadBYTE(); actionPlayer.mp = byte.Parse(chpmp.ToString("X2")[0].ToString(), System.Globalization.NumberStyles.HexNumber); actionPlayer.hp = byte.Parse(chpmp.ToString("X2")[1].ToString(), System.Globalization.NumberStyles.HexNumber); Main.cPt.PlayerHPMPUpdate(actionPlayer); } else if (action == 0x20) { // POSITION actionPlayer.xSec = packet.data.ReadBYTE(); actionPlayer.ySec = packet.data.ReadBYTE(); if (actionPlayer.ySec == 0x80) // IN CAVE { float x = packet.data.ReadSINGLE(); float z = packet.data.ReadSINGLE(); float y = packet.data.ReadSINGLE(); actionPlayer.XCoord = Functions.GetXCoord((int)x, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)y, actionPlayer.ySec); } else { // NOT IN CAVE short xx = packet.data.ReadSignedWORD(); short zz = packet.data.ReadSignedWORD(); short yy = packet.data.ReadSignedWORD(); actionPlayer.XCoord = Functions.GetXCoord((int)xx, actionPlayer.xSec); actionPlayer.YCoord = Functions.GetYCoord((int)yy, actionPlayer.ySec); } Main.cPt.PlayerPositionUpdate(actionPlayer.accid, actionPlayer.XCoord, actionPlayer.YCoord); } break; case 0x09: Main.cPt.PartyMasterUpdate(packet.data.ReadDWORD()); break; } } catch { } }