|
You last visited: Today at 11:34
Advertisement
[Help] How to Read Charname Party Number S>C
Discussion on [Help] How to Read Charname Party Number S>C within the SRO Coding Corner forum part of the Silkroad Online category.
09/23/2016, 22:50
|
#1
|
elite*gold: 53
Join Date: Sep 2014
Posts: 308
Received Thanks: 86
|
[Help] How to Read Charname Party Number S>C
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?
|
|
|
09/24/2016, 00:21
|
#2
|
elite*gold: 0
Join Date: Jan 2009
Posts: 313
Received Thanks: 667
|
I don't know which packet you tried or how carefully you parsed it but
Code:
0xB06C - SERVER_AGENT_PARTY_MATCHING_LIST_RESPONSE
definitively contains those information.
|
|
|
09/24/2016, 11:53
|
#3
|
elite*gold: 53
Join Date: Sep 2014
Posts: 308
Received Thanks: 86
|
Quote:
Originally Posted by DaxterSoul
I don't know which packet you tried or how carefully you parsed it but
Code:
0xB06C - SERVER_AGENT_PARTY_MATCHING_LIST_RESPONSE
definitively contains those information.
|
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 apear
Are the party number in hex form?
Code:
................
[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........
|
|
|
09/24/2016, 12:51
|
#4
|
dotCom
elite*gold: 12400
Join Date: Mar 2009
Posts: 15,881
Received Thanks: 4,386
|
On ParsParty (0x3065)
Code:
public static void ParsePartyMember(object opacket)
{
ErrorHandler.AddHandler();
Packet packet = (Packet)opacket;
Main.cPt.ParseParty(packet);
}
ParseParty function
Code:
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);
}
PartyMasterUpdate
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();
}
}
}
Also on ParsePartyAction ( PartyAction = 0x3864, // KICKED / LEAVE / HP/MP/MOVEMENT CHANGE)
On 0x09 case is master update
Code:
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
{
}
}
hope it will help you
|
|
|
09/24/2016, 20:28
|
#5
|
elite*gold: 53
Join Date: Sep 2014
Posts: 308
Received Thanks: 86
|
Quote:
Originally Posted by Devsome
On ParsParty (0x3065)
Code:
public static void ParsePartyMember(object opacket)
{
ErrorHandler.AddHandler();
Packet packet = (Packet)opacket;
Main.cPt.ParseParty(packet);
}
ParseParty function
Code:
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);
}
PartyMasterUpdate
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();
}
}
}
Also on ParsePartyAction ( PartyAction = 0x3864, // KICKED / LEAVE / HP/MP/MOVEMENT CHANGE)
On 0x09 case is master update
Code:
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
{
}
}
hope it will help you
|
Thank you for your help but there isnot what I need ...
I need to make Event Lucky Party Number
|
|
|
09/25/2016, 22:33
|
#6
|
elite*gold: 0
Join Date: Jul 2013
Posts: 120
Received Thanks: 13
|
Quote:
Originally Posted by Devsome
On ParsParty (0x3065)
Code:
public static void ParsePartyMember(object opacket)
{
ErrorHandler.AddHandler();
Packet packet = (Packet)opacket;
Main.cPt.ParseParty(packet);
}
ParseParty function
Code:
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);
}
PartyMasterUpdate
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();
}
}
}
Also on ParsePartyAction ( PartyAction = 0x3864, // KICKED / LEAVE / HP/MP/MOVEMENT CHANGE)
On 0x09 case is master update
Code:
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
{
}
}
hope it will help you
|
he talked about 0xB06C packed for LPN I think..
|
|
|
Similar Threads
|
[Release] Auto Events party number
09/21/2016 - SRO PServer Guides & Releases - 5 Replies
---removed---
|
read CharId , CharName , Id , ,, ,, ,
02/07/2015 - SRO Coding Corner - 15 Replies
if i have packet for Example
for killed Monster : 0300C
get 05 0C BE 07 0000
05 0C Spawn
BE 07 uniqe ID
BE07 = 1982
how to read that ID to can send it to SQL
Same thing for every thing i need to read and send it
|
DLL's to Read Charname, Level, Arrows, HP, Etc...
04/05/2008 - CO2 Exploits, Hacks & Tools - 6 Replies
Hello people!
i have made finally my DLL to read all information,
COMemReader.dll and COHPReader.dll
this is for COMemreader.dll:
here i show you how to make it work if you want to use this DLL:
you need to put this DLL's as References to your project :)
|
All times are GMT +2. The time now is 11:34.
|
|