public static byte[] CreateFormedParty(WorldMgr.party pt) { //Create new packet writer PacketWriter Writer = new PacketWriter(); //Add opcode to packet Writer.Create(OperationCode.SERVER_FORMED_PARTY_CREATED); //Static byte Writer.Byte(1); //Party id Writer.DWord(pt.ptid); //0 Dword value Writer.DWord(0); //Party type Writer.Byte(pt.Type); //Party purpose Writer.Byte(pt.ptpurpose); //Party min level required Writer.Byte(pt.minlevel); //Party max level allowed Writer.Byte(pt.maxlevel); //Party name Writer.Text3(pt.partyname); //Return all bytes to send return(Writer.GetBytes()); }
public static byte[] Party_DataMember(WorldMgr.party p) { //Create new packet writer PacketWriter Writer = new PacketWriter(); //Add opcode Writer.Create(OperationCode.SERVER_PARTYMEMBER_DATA); //Write static byte Writer.Byte(0xFF); //Write party id Writer.DWord(p.ptid); //Write leader id Writer.DWord(p.LeaderID); //Write byte party type Writer.Byte(p.Type); //Write total amount of members in party Writer.Byte(p.Members.Count); //Repeat for each member in party -1 for (byte b = 0; b <= p.Members.Count - 1; b++) { //Get player detail information PlayerMgr PartyMemberInfo = Helpers.GetInformation.GetPlayer(p.Members[b]); //Calculate hp and mp int partyPercentMP = (int)Math.Round((decimal)(PartyMemberInfo.Character.Stat.SecondMP * 10) / PartyMemberInfo.Character.Stat.Mp) << 4; int partyPercentHP = (int)Math.Round((decimal)(PartyMemberInfo.Character.Stat.SecondHp * 10) / PartyMemberInfo.Character.Stat.Hp); //Set percent int partyPercent = partyPercentHP | partyPercentMP; //Write static byte Writer.Byte(0xff); //Write unique member id Writer.DWord(PartyMemberInfo.Character.Information.UniqueID); //Write character name Writer.Text(PartyMemberInfo.Character.Information.Name); //Write character model Writer.DWord(PartyMemberInfo.Character.Information.Model); //Write character level Writer.Byte(PartyMemberInfo.Character.Information.Level); //Write stat hp mp information Writer.Byte((byte)partyPercent); //Write x and y sector Writer.Byte(PartyMemberInfo.Character.Position.xSec); Writer.Byte(PartyMemberInfo.Character.Position.ySec); //Write x z y Writer.Word(Formule.packetx(PartyMemberInfo.Character.Position.x, PartyMemberInfo.Character.Position.xSec)); Writer.Word(PartyMemberInfo.Character.Position.z); Writer.Word(Formule.packety(PartyMemberInfo.Character.Position.y, PartyMemberInfo.Character.Position.ySec)); //Write double word 1 Writer.Word(1); Writer.Word(1); //If player has a guild if (PartyMemberInfo.Character.Network.Guild.Name != null) { //Write guild name Writer.Text(PartyMemberInfo.Character.Network.Guild.Name); } //If player has no guild else { //Write word 0 value Writer.Word(0); } //Write static byte Writer.Byte(0); //Write dword Writer.DWord(0); Writer.DWord(0); } //Return all bytes for sending return(Writer.GetBytes()); }