Party_Data() public static method

public static Party_Data ( byte type, int id ) : byte[]
type byte
id int
return byte[]
Example #1
0
        public static void RemoveOnDisconnect(party p, Systems c)
        {
            //Remove client and member if it contains our removing character
            if (p.Members.Contains(c.Character.Information.UniqueID))
            {
                p.Members.Remove(c.Character.Information.UniqueID);
                p.MembersClient.Remove(c.client);
            }
            //Send packet to each player
            foreach (int member in p.Members)
            {
                Systems playerdetail = GetPlayer(member);

                if (p.Members.Count > 1)
                {
                    playerdetail.client.Send(Packet.Party_Data(1, 0));
                }
                else
                {
                    //Send removal of party
                    playerdetail.client.Send(Packet.Party_Data(3, playerdetail.Character.Information.UniqueID));
                    //Remove party state
                    playerdetail.Character.Network.Party = null;
                }
            }
        }
Example #2
0
 /////////////////////////////////////////////////////////////////////////////////
 // Update mp
 /////////////////////////////////////////////////////////////////////////////////
 #region Update MP
 public void UpdateMp()
 {
     //Wrap our function inside a catcher
     try
     {
         //Send update mp packet
         Send(Packet.UpdatePlayer(this.Character.Information.UniqueID, 0x10, 2, this.Character.Stat.SecondMP));
         //If character is in a party
         if (Character.Network.Party != null)
         {
             //Send mp update packet to party
             Character.Network.Party.Send(Packet.Party_Data(6, this.Character.Information.UniqueID));
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Update MP Error {0}", ex);
         Systems.Debugger.Write(ex);
     }
 }
Example #3
0
 /////////////////////////////////////////////////////////////////////////////////
 // Update HP
 /////////////////////////////////////////////////////////////////////////////////
 #region Update HP
 public void UpdateHp()
 {
     //Wrap our function inside a catcher
     try
     {
         //Send packet to update player hp
         Send(Packet.UpdatePlayer(this.Character.Information.UniqueID, 0x20, 1, this.Character.Stat.SecondHp));
         //If Character is in a party
         if (Character.Network.Party != null)
         {
             //Update party visual hp update
             Character.Network.Party.Send(Packet.Party_Data(6, this.Character.Information.UniqueID));
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Update hp error {0}", ex);
         Systems.Debugger.Write(ex);
     }
 }
Example #4
0
        void CharacterRequest()
        {
            try
            {
                //Open packet reader
                PacketReader Reader = new PacketReader(PacketInformation.buffer);

                //Get targeted player information
                Systems sys = GetPlayer(Character.Network.TargetID);

                if (this.Character.State.UnionApply && sys.Character.State.UnionApply)
                {
                    if (Reader.Byte() == 1 && Reader.Byte() == 0)
                    {
                        //Need to sniff decline packet info
                        Character.State.UnionApply     = false;
                        sys.Character.State.UnionApply = false;
                    }
                    else
                    {
                        //Check for null and set unique id for union and insert our own guild.
                        if (sys.Character.Network.Guild.Unions == null)
                        {
                            int uniqueid = MsSQL.GetRowsCount("SELECT * FROM guild_unions");
                            sys.Character.Network.Guild.UniqueUnion = uniqueid + 1;
                            MsSQL.InsertData("INSERT INTO guild_unions (union_leader, union_guildid, union_unique_id) VALUES ('" + sys.Character.Network.Guild.Guildid + "','" + sys.Character.Network.Guild.Guildid + "','" + sys.Character.Network.Guild.UniqueUnion + "')");
                        }
                        //Update database
                        MsSQL.InsertData("INSERT INTO guild_unions (union_leader, union_guildid, union_unique_id) VALUES ('" + sys.Character.Network.Guild.Guildid + "','" + Character.Network.Guild.Guildid + "','" + sys.Character.Network.Guild.UniqueUnion + "')");

                        //Send union packet to newly joined player
                        client.Send(Packet.UnionInfo(this));

                        //Send update packet to all guilds in union
                        foreach (int member in Character.Network.Guild.Members)
                        {
                            //Make sure the member is there
                            if (member != 0)
                            {
                                //If the user is not the newly invited member get player info
                                Systems tomember = GetPlayerMainid(member);
                                //Send guild update packet
                                if (tomember != null)
                                {
                                    if (!tomember.Character.Network.Guild.SingleSend)
                                    {
                                        if (Character.Information.CharacterID != tomember.Character.Information.CharacterID)
                                        {
                                            tomember.Character.Network.Guild.SingleSend = true;
                                            tomember.client.Send(Packet.GuildUpdate(Character, 14, 0, 0, 0));
                                        }
                                    }
                                }
                            }
                        }
                        foreach (int member in Character.Network.Guild.UnionMembers)
                        {
                            //Make sure the member is there
                            if (member != 0)
                            {
                                //If the user is not the newly invited member get player info
                                Systems tomember = GetPlayerMainid(member);
                                //Send guild update packet
                                if (tomember != null)
                                {
                                    if (!tomember.Character.Network.Guild.SingleSend)
                                    {
                                        tomember.Character.Network.Guild.SingleSend = true;
                                        tomember.client.Send(Packet.GuildUpdate(Character, 14, 0, 0, 0));
                                    }
                                }
                            }
                        }
                        //Disable the bool again
                        foreach (int member in Character.Network.Guild.Members)
                        {
                            //Make sure member isnt null
                            if (member != 0)
                            {
                                //Get guildmember details
                                Systems guildmember = GetPlayerMainid(member);
                                //Make sure guildmember isnt null
                                if (guildmember != null)
                                {
                                    //Disable bool to allow resend new packets.
                                    guildmember.Character.Network.Guild.SingleSend = false;
                                }
                            }
                        }
                        //Disable the bool again
                        foreach (int member in Character.Network.Guild.UnionMembers)
                        {
                            //Make sure member isnt null
                            if (member != 0)
                            {
                                //Get guildmember details
                                Systems guildmember = GetPlayerMainid(member);
                                //Make sure guildmember isnt null
                                if (guildmember != null)
                                {
                                    //Disable bool to allow resend new packets.
                                    guildmember.Character.Network.Guild.SingleSend = false;
                                }
                            }
                        }
                        //Reset bools
                        Character.State.UnionApply     = false;
                        sys.Character.State.UnionApply = false;
                    }
                }
                //------------------------------------- [ Exchange invite ] -------------------------------------//
                else if (this.Character.State.Exchanging && sys.Character.State.Exchanging)
                {
                    if (Reader.Byte() == 1 && Reader.Byte() == 0)
                    {
                        sys.client.Send(Packet.Exchange_Cancel());
                        Character.State.Exchanging     = false;
                        sys.Character.State.Exchanging = false;
                    }
                    else
                    {
                        sys.client.Send(Packet.OpenExhangeWindow(1, this.Character.Information.UniqueID));
                        client.Send(Packet.OpenExhangeWindow(sys.Character.Information.UniqueID));

                        Character.Network.Exchange.Window       = true;
                        Character.Network.Exchange.ItemList     = new List <DarkEmu_GameServer.Global.slotItem>();
                        sys.Character.Network.Exchange.Window   = true;
                        sys.Character.Network.Exchange.ItemList = new List <DarkEmu_GameServer.Global.slotItem>();
                    }
                }
                //------------------------------------- [ Guild invite ] -------------------------------------//
                else if (this.Character.State.GuildInvite && sys.Character.State.GuildInvite)
                {
                    //If byte equals 2 the type is denied
                    if (Reader.Byte() == 2)
                    {
                        //Denied request
                        Character.State.GuildInvite     = false;
                        sys.Character.State.GuildInvite = false;
                        //Send refused packet to sender
                        sys.client.Send(Packet.IngameMessages(SERVER_GUILD, IngameMessages.UIIT_MSG_GUILDERR_JOIN_GUILD_REFUSED));
                    }
                    //If not denied we start adding the new member
                    else
                    {
                        //Invite guild member (Add member count + 1).
                        int guildmemberadd = sys.Character.Network.Guild.Members.Count + 1;
                        //Update database
                        MsSQL.InsertData("INSERT INTO guild_members (guild_id, guild_member_id, guild_rank, guild_points, guild_fortress, guild_grant, guild_perm_join, guild_perm_withdraw, guild_perm_union, guild_perm_storage, guild_perm_notice) VALUES ('" + sys.Character.Network.Guild.Guildid + "','" + Character.Information.CharacterID + "','10','0','1','" + "" + "','0','0','0','0','0')");
                        MsSQL.UpdateData("UPDATE guild SET guild_members_t='" + guildmemberadd + "' WHERE guild_name='" + sys.Character.Network.Guild.Name + "'");
                        //Reload new member and load character data for guildinfo
                        LoadPlayerGuildInfo(true);
                        //Send packets to network and spawned players
                        foreach (int member in Character.Network.Guild.Members)
                        {
                            //Make sure the member is there
                            if (member != 0)
                            {
                                //We dont send this info to the invited user.
                                if (member != Character.Information.CharacterID)
                                {
                                    //If the user is not the newly invited member get player info
                                    Systems tomember = GetPlayerMainid(member);
                                    //Send guild update packet
                                    tomember.LoadPlayerGuildInfo(true);
                                    tomember.client.Send(Packet.GuildUpdate(Character, 1, Character.Information.CharacterID, 0, 0));
                                    tomember.client.Send(Packet.GuildSetOnline(Character.Network.Guild, Character.Information.UniqueID));
                                    tomember.client.Send(Packet.GuildUpdate(Character, 6, Character.Information.CharacterID, 0, 0));
                                }
                                //Send information to the invited player
                                else
                                {
                                    //Send guild data packets to invited
                                    client.Send(Packet.SendGuildStart());
                                    client.Send(Packet.SendGuildInfo(Character.Network.Guild));
                                    client.Send(Packet.SendGuildEnd());
                                    //Load union data for new invited player
                                    LoadUnions();
                                }
                            }
                        }
                        //Set bools to false for new invite
                        Character.State.GuildInvite     = false;
                        sys.Character.State.GuildInvite = false;
                    }
                }

                //------------------------------------- [ Party invite ] -------------------------------------//
                else
                {
                    //If invitation is accepted
                    if (Reader.Byte() == 1 && Reader.Byte() == 1)
                    {
                        //First we set our main checks (Check if player is in party or not).
                        if (Character.Network.Party != null)
                        {
                            return;
                        }
                        //Set bools for check
                        Character.Information.CheckParty     = true;
                        sys.Character.Information.CheckParty = true;

                        //Set main party information
                        party JoiningParty = sys.Character.Network.Party;

                        //Check party type members allowed need message if full
                        if (JoiningParty.Type == 4 && JoiningParty.Members.Count > 3)
                        {
                            //Send party is full message to player
                            client.Send(Packet.IngameMessages(Systems.SERVER_PARTY_MESSAGES, IngameMessages.UIIT_MSG_PARTYERR_ALREADY_FULL));
                            return;
                        }
                        if (JoiningParty.Type == 5 && JoiningParty.Members.Count > 7)
                        {
                            //Send party is full message to player
                            client.Send(Packet.IngameMessages(Systems.SERVER_PARTY_MESSAGES, IngameMessages.UIIT_MSG_PARTYERR_ALREADY_FULL));
                            return;
                        }
                        //If the current count == 0 then add party and add me
                        if (JoiningParty.Members.Count == 0)
                        {
                            //Add ourselfs to the party list
                            JoiningParty.Members.Add(sys.Character.Information.UniqueID);
                            //Add our client to the party list
                            JoiningParty.MembersClient.Add(sys.client);
                            //Set party id
                            JoiningParty.ptid = Party.Count + 1;
                            //Set party network info
                            sys.Character.Network.Party = JoiningParty;
                            //Send permissions
                            sys.client.Send(Packet.Party_Member(sys.Character.Information.UniqueID));
                            //Send party data to leader
                            sys.client.Send(Packet.Party_DataMember(JoiningParty));
                            //Send party data packet to leader (Other player that joined).
                            sys.client.Send(Packet.Party_Data(2, Character.Information.UniqueID));
                            //Add invited member to the list
                            JoiningParty.Members.Add(Character.Information.UniqueID);
                            JoiningParty.MembersClient.Add(client);
                            //Set party info for invited member
                            Character.Network.Party = JoiningParty;
                            //Send permissions
                            client.Send(Packet.PartyOwnerInformation(Character.Information.UniqueID));
                            //Send party data
                            client.Send(Packet.Party_DataMember(JoiningParty));
                            //return
                            return;
                        }
                        //If there are more members in the current party
                        else
                        {
                            //Repeat for each member using count
                            for (byte b = 0; b <= JoiningParty.Members.Count - 1; b++)
                            {
                                //Get player information from [b]
                                Systems others = GetPlayer(JoiningParty.Members[b]);
                                //Send party data to member
                                others.client.Send(Packet.Party_Data(2, Character.Information.UniqueID));
                            }
                            //Add the invited member to list
                            JoiningParty.Members.Add(Character.Information.UniqueID);
                            //Add the invited client to the list
                            JoiningParty.MembersClient.Add(client);
                            //Set party
                            Character.Network.Party = JoiningParty;
                            //Send permissions
                            client.Send(Packet.PartyOwnerInformation(Character.Information.UniqueID));
                            //Send party data
                            client.Send(Packet.Party_DataMember(JoiningParty));
                            return;
                        }
                    }
                    //If denied request
                    else
                    {
                        //Send denied message to the player joining
                        client.Send(Packet.IngameMessages(Systems.SERVER_PARTY_MEMBER, IngameMessages.UIIT_MSG_PARTYERR_JOIN_PARTY_REFUSED));
                        //Set both bools to false so inviting can be done again
                        sys.Character.Information.CheckParty = false;
                        Character.Information.CheckParty     = false;
                    }
                }
            }
            //Catch bad exception errors
            catch (Exception ex)
            {
                //Write information to the console
                Console.WriteLine("Request error: {0}", ex);
                //Write information to the debug log
                Debugger.Write(ex);
            }
        }
Example #5
0
        void Player_Movement(object e)
        {
            try
            {
                if (Character.Position.RecordedTime <= 0)
                {
                    if (Timer.Movement != null)
                    {
                        Timer.Movement.Dispose();
                    }

                    Character.Position.Walking = false;

                    if (Character.Action.PickUping)
                    {
                        Player_PickUpItem();
                    }

                    Character.Position.z = Character.Position.wZ;

                    if (Timer.SpawnWatch.ElapsedMilliseconds >= 10)
                    {
                        ObjectSpawnCheck();
                        Timer.SpawnWatch.Restart();
                    }

                    Movement_CaveTeleport();
                }
                else
                {
                    //If player is in a party send location update packet to each member
                    if (Character.Network.Party != null)
                    {
                        foreach (int member in Character.Network.Party.Members)
                        {
                            if (member != Character.Information.UniqueID)
                            {
                                Systems memberinfo = GetPlayer(member);
                                memberinfo.client.Send(Packet.Party_Data(6, member));
                            }
                        }
                    }

                    if (Character.Action.nAttack)
                    {
                        Character.Position.kX -= (Character.Position.wX * 10) / 100;
                        Character.Position.kY -= (Character.Position.wY * 10) / 100;

                        if (Character.Information.Item.wID != 0)
                        {
                            if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) <= Data.ItemBase[Character.Information.Item.wID].ATTACK_DISTANCE)
                            {
                                Character.Position.RecordedTime = 0;

                                if (Character.Action.nAttack)
                                {
                                    ActionAttack();
                                }

                                if (Timer.SpawnWatch.ElapsedMilliseconds >= 150)
                                {
                                    this.ObjectSpawnCheck();
                                    Timer.SpawnWatch.Restart();
                                }

                                Timer.Movement.Dispose();
                                Character.Position.z       = Character.Position.wZ;
                                Character.Action.PickUping = false;
                                Character.Position.Walking = false;
                                return;
                            }
                        }
                        else
                        {
                            if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) <= 1)
                            {
                                Character.Position.RecordedTime = 0;

                                if (Character.Action.nAttack)
                                {
                                    ActionAttack();
                                }

                                if (Timer.SpawnWatch.ElapsedMilliseconds >= 1000)
                                {
                                    this.ObjectSpawnCheck();
                                    Timer.SpawnWatch.Restart();
                                }

                                Timer.Movement.Dispose();
                                Character.Position.z       = Character.Position.wZ;
                                Character.Action.PickUping = false;
                                Character.Position.Walking = false;
                                return;
                            }
                        }
                    }
                    else if (Character.Action.sAttack)
                    {
                        Character.Position.kX -= (Character.Position.wX * 10) / 100;
                        Character.Position.kY -= (Character.Position.wY * 10) / 100;
                        double test = Character.Action.Skill.Distance;
                        if (test == 0)
                        {
                            test = Data.ItemBase[Character.Information.Item.wID].ATTACK_DISTANCE;
                        }
                        if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) < test)
                        {
                            if (Character.Action.sAttack)
                            {
                                StartSkill();
                            }
                            Character.Position.RecordedTime = 0;
                            Character.aRound = new bool[10];

                            if (Timer.SpawnWatch.ElapsedMilliseconds >= 1000)
                            {
                                this.ObjectSpawnCheck();
                                Timer.SpawnWatch.Restart();
                            }

                            Timer.Movement.Dispose();
                            Character.Position.z       = Character.Position.wZ;
                            Character.Action.PickUping = false;
                            Character.Position.Walking = false;
                            return;
                        }
                    }

                    Character.aRound      = new bool[10];
                    Character.Position.x += (Character.Position.wX * 10) / 100;
                    Character.Position.y += (Character.Position.wY * 10) / 100;

                    if (Character.Transport.Right)
                    {
                        Character.Transport.Horse.x = Character.Position.x;
                        Character.Transport.Horse.y = Character.Position.y;
                    }
                    Character.Position.RecordedTime -= (Character.Position.Time * 0.1);

                    if (Timer.SpawnWatch.ElapsedMilliseconds >= 10)
                    {
                        this.ObjectSpawnCheck();
                        this.ObjectAttackCheck();
                        Timer.SpawnWatch.Restart();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Move call error: {0}", ex);
                Systems.Debugger.Write(ex);
            }
        }
Example #6
0
        void LeaveParty()
        {
            try
            {
                //Make sure the party isnt null to prevent errors.
                if (Character.Network.Party != null)
                {
                    //Remove the character member info
                    Character.Network.Party.Members.Remove(Character.Information.UniqueID);
                    //Remove client
                    Character.Network.Party.MembersClient.Remove(client);
                    //If the owner removes the party set new leader
                    if (Character.Information.UniqueID == Character.Network.Party.LeaderID)
                    {
                        //Repeat for each member in the party
                        foreach (int partymembers in Character.Network.Party.Members)
                        {
                            Systems partymember = GetPlayer(partymembers);
                            //Send party update data to player
                            client.Send(Packet.Party_Data(1, 0));
                            //If the count is 1, we remove the party information
                            if (partymember != null)
                            {
                                if (Character.Network.Party.Members.Count == 1)
                                {
                                    //If its a formed party remove the entry. (check).
                                    if (Character.Network.Party.IsFormed)
                                    {
                                        DeleteFormedParty(Character.Network.Party.ptid);
                                    }
                                    //Remove party member from member list
                                    partymember.Character.Network.Party.Members.Remove(partymember.Character.Information.UniqueID);
                                    //Remove the party member client from the list
                                    partymember.Character.Network.Party.MembersClient.Remove(partymember.client);
                                    //Set party to null
                                    partymember.Character.Network.Party = null;
                                    //Set bool to false so the player can join another party
                                    partymember.Character.Information.CheckParty = false;
                                    //Send packet to member
                                    partymember.client.Send(Packet.Party_Data(1, 0));
                                }
                                //If more party members are in the party we dont remove the party.
                                else
                                {
                                    //Get first available member for new leader
                                    partymember.Character.Network.Party.LeaderID = Character.Network.Party.Members[0];
                                    //Send update packet to member
                                    partymember.client.Send(Packet.Party_Data(9, Character.Network.Party.Members[0]));
                                    //Send removal of the user
                                    partymember.client.Send(Packet.Party_Data(3, Character.Information.UniqueID));
                                }
                            }
                        }
                        //Set player information
                        Character.Network.Party          = null;
                        Character.Information.CheckParty = false;
                    }

                    else
                    {
                        //Send party update data to player
                        client.Send(Packet.Party_Data(1, 0));
                        //For each member in the party
                        foreach (int partymember in Character.Network.Party.Members)
                        {
                            //Get player information
                            Systems partym = GetPlayer(partymember);
                            //If auto disband party
                            if (Character.Network.Party.Members.Count == 1)
                            {
                                //If its a formed party remove the entry. (check).
                                if (partym.Character.Network.Party.IsFormed)
                                {
                                    partym.DeleteFormedParty(Character.Network.Party.ptid);
                                }
                                //Remove the owner member
                                partym.Character.Network.Party.Members.Remove(this.Character.Information.UniqueID);
                                //Remove the client
                                partym.Character.Network.Party.MembersClient.Remove(this.client);
                                //Set party to null
                                partym.Character.Network.Party = null;
                                //Bool to false so can be invited again
                                partym.Character.Information.CheckParty = false;
                                //Visual update packet
                                partym.client.Send(Packet.Party_Data(1, 0));
                            }
                            //If the player has enough players (Not auto disband).
                            else
                            {
                                //Remove information for all party members
                                partym.Character.Network.Party.Members.Remove(Character.Information.UniqueID);
                                //Remove the client
                                partym.Character.Network.Party.MembersClient.Remove(client);
                                //Remove the id
                                partym.client.Send(Packet.Party_Data(3, Character.Information.UniqueID));
                                //Set null party info
                                partym.Character.Network.Party = null;
                                //Set bool
                                partym.Character.Information.CheckParty = false;
                            }
                        }
                        //Set party network to null
                        Character.Network.Party = null;
                        //Set bool to false so player can go in new party.
                        Character.Information.CheckParty = false;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Leave party error {0}", ex);
                Systems.Debugger.Write(ex);
            }
        }
Example #7
0
        void PartyBan()
        {
            try
            {
                //Open our packet reader
                PacketReader Reader   = new PacketReader(PacketInformation.buffer);
                int          TargetID = Reader.Int32();
                Reader.Close();
                //Get targeted player information
                Systems s = GetPlayers(TargetID);
                //Remove id of the member
                Character.Network.Party.Members.Remove(s.Character.Information.UniqueID);
                //Remove the client of the member
                Character.Network.Party.MembersClient.Remove(s.client);
                //Repeat for each member the updated party information
                foreach (int partymember in Character.Network.Party.Members)
                {
                    //Get player information for the next member
                    Systems partym = GetPlayer(partymember);
                    //Remove the kicked player
                    partym.Character.Network.Party.Members.Remove(s.Character.Information.UniqueID);
                    partym.Character.Network.Party.MembersClient.Remove(s.client);

                    //If we have one member remaining in the party we disband the party
                    if (partym.Character.Network.Party.Members.Count == 1)
                    {
                        //If its formed in the list remove the listening
                        if (partym.Character.Network.Party.IsFormed)
                        {
                            partym.DeleteFormedParty(Character.Network.Party.ptid);
                        }
                        //Send update packet to the party member
                        partym.client.Send(Packet.Party_Data(1, 0));
                        //Send update packet to the current player
                        client.Send(Packet.Party_Data(1, 0));
                        //Set party to null for the current player
                        Character.Network.Party = null;
                        //Set party to null for the remaining member
                        partym.Character.Network.Party = null;
                        //Set bool for current player
                        Character.Information.CheckParty = false;
                        //Set bool for the remaining party member
                        partym.Character.Information.CheckParty = false;
                    }
                    //If there are more members (Not autodisband party).
                    else
                    {
                        //Send the update packet to the party member
                        partym.client.Send(Packet.Party_Data(3, TargetID));
                    }
                }
                //Set the kicked player bool to false
                s.Character.Information.CheckParty = false;
                //Remove the party network for the kicked player
                s.Character.Network.Party = null;
                //Send update packet to the kicked player
                s.client.Send(Packet.Party_Data(1, 0));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Party Ban Error {0}", ex);
                Systems.Debugger.Write(ex);
            }
        }