public void SendTransferClientFromZone(int accountID, string userName, string charName, int CharID, ushort randid, byte admin, string hostIP) { using (var packet = new InterPacket(InterHeader.Clienttransfer)) { packet.WriteByte(1); packet.WriteInt(accountID); packet.WriteStringLen(userName); packet.WriteStringLen(charName); packet.WriteInt(CharID); packet.WriteUShort(randid); packet.WriteByte(admin); packet.WriteStringLen(hostIP); SendPacket(packet); } }
public static void SetBuff(AbStateInfo AbState, uint Strength, uint KeepTime, params WorldCharacter[] Receiver) { using (var packet = new InterPacket(InterHeader.ZONE_CharacterSetBuff)) { packet.WriteUShort(AbState.ID); packet.WriteUInt(Strength); packet.WriteUInt(KeepTime); packet.WriteInt(Receiver.Length); Array.ForEach(Receiver, ch => packet.WriteInt(ch.ID)); ZoneManager.Instance.Broadcast(packet); } }
public static void On_GameClient_UpdateGuildMessage(WorldClient Client, Packet Packet) { ushort length; string message; if (Client.Character.Guild == null || !Packet.TryReadUShort(out length) || !Packet.TryReadString(out message, length)) { return; } //response packets using (var packet = new Packet(SH29Type.UnkMessageChange)) { packet.WriteHexAsBytes( "68 1B 00 92 AD F8 4F 2E 00 00 00 2B 00 00 00 17 00 00 00 07 00 00 00 06 00 00 00 70 00 00 00 06 00 00 00 BC 00 00 00 01 00 00 00 00 00"); Client.SendPacket(packet); } using (var packet = new Packet(SH29Type.ClearGuildDetailsMessage)) { packet.WriteUShort(3137); packet.WriteLong(0); Client.SendPacket(packet); } using (var packet = new Packet(SH29Type.UpdateGuildMessageResponse)) { packet.WriteUShort(3137); Client.SendPacket(packet); } //update guild lock (Client.Character.Guild.ThreadLocker) { Client.Character.Guild.Message = message; Client.Character.Guild.MessageCreater = Client.Character; Client.Character.Guild.MessageCreateTime = Program.CurrentTime; Client.Character.Guild.Save(); //broadcast packet to all guild members using (var packet = new Packet(SH29Type.SendUpdateGuildDetails)) { packet.Fill(4, 0x00); packet.WriteInt(Client.Character.Guild.MessageCreateTime.Second); packet.WriteInt(Client.Character.Guild.MessageCreateTime.Minute); packet.WriteInt(Client.Character.Guild.MessageCreateTime.Hour); packet.WriteInt(Client.Character.Guild.MessageCreateTime.Day); packet.WriteInt(Client.Character.Guild.MessageCreateTime.Month - 1); packet.WriteInt(Client.Character.Guild.MessageCreateTime.Year - 1900); packet.WriteInt(0); packet.WriteLong(0); packet.WriteString(Client.Character.Character.Name, 16); packet.WriteUShort(length); packet.WriteString(message, length); Client.Character.Guild.Broadcast(packet); } //send packet to zone that guild message changed using (var packet = new InterPacket(InterHeader.ZoneGuildMessageUpdate)) { packet.WriteInt(Client.Character.Guild.ID); packet.WriteInt(Client.Character.ID); packet.WriteDateTime(Client.Character.Guild.MessageCreateTime); packet.WriteUShort(length); packet.WriteString(message, length); ZoneManager.Broadcast(packet); } } }
public void AddMember(WorldCharacter Character, GuildRank Rank, MySqlConnection con = null, bool BroadcastAdd = true, bool SendGuildInfoToClient = true) { lock (ThreadLocker) { var conCreated = con == null; if (conCreated) { con = Program.DatabaseManager.GetClient().GetConnection(); } //add to db int result; using (var cmd = con.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "GuildMember_Create"; cmd.Parameters.Add(new MySqlParameter("@pGuildID", ID)); cmd.Parameters.Add(new MySqlParameter("@pCharacterID", Character.ID)); cmd.Parameters.Add(new MySqlParameter("@pRank", (byte)Rank)); cmd.Parameters.Add(new MySqlParameter("@pCorp", Convert.ToInt16("0"))); result = Convert.ToInt32(cmd.ExecuteScalar()); } if (result == -1) { return; } //create object var newMember = new GuildMember(this, Character, Rank, 0); //update character Character.Guild = this; Character.GuildMember = newMember; Character.GuildAcademy = Academy; //add to list Members.Add(newMember); if (BroadcastAdd) { newMember.BroadcastGuildName(); //broadcast that guild member joined using (var packet = new Packet(SH29Type.GuildMemberJoined)) { newMember.WriteInfo(packet); Broadcast(packet, newMember); } using (var packet = new Packet(SH29Type.GuildMemberLoggedIn)) { packet.WriteString(newMember.Character.Character.Name, 16); Broadcast(packet, newMember); } //let zone know that a new member has been added to guild using (var packet = new InterPacket(InterHeader.ZoneGuildMemberAdd)) { packet.WriteInt(ID); packet.WriteInt(Character.ID); packet.WriteByte((byte)newMember.Rank); packet.WriteUShort(newMember.Corp); ZoneManager.Broadcast(packet); } } //send guild info to new member if (SendGuildInfoToClient) { SendMemberList(newMember.Character.Client); using (var packet = new Packet(SH4Type.CharacterGuildinfo)) { WriteGuildInfo(packet); newMember.Character.Client.SendPacket(packet); } } if (conCreated) { con.Dispose(); } } }