Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Silkroad Online > SRO Coding Corner
You last visited: Today at 11:34

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #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?
Mr.Awesome1337 is offline  
Old 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.
DaxterSoul is offline  
Old 09/24/2016, 11:53   #3
 
elite*gold: 53
Join Date: Sep 2014
Posts: 308
Received Thanks: 86
Quote:
Originally Posted by DaxterSoul View Post
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........
Mr.Awesome1337 is offline  
Old 09/24/2016, 12:51   #4
dotCom
 
Devsome's Avatar
 
elite*gold: 12400
The Black Market: 104/0/0
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
Devsome is offline  
Thanks
1 User
Old 09/24/2016, 20:28   #5
 
elite*gold: 53
Join Date: Sep 2014
Posts: 308
Received Thanks: 86
Quote:
Originally Posted by Devsome View Post
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
Mr.Awesome1337 is offline  
Old 09/25/2016, 22:33   #6
 
MrMiroBear's Avatar
 
elite*gold: 0
Join Date: Jul 2013
Posts: 120
Received Thanks: 13
Quote:
Originally Posted by Devsome View Post
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..
MrMiroBear is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.