public static void Handle_ItemOnOff(ClientConnection Client, PacketReader reader, byte last) { Account User = Client.CurrentAccount; int itemnum = reader.ReadLEInt32(); bool On = reader.ReadBoolean(); //Console.WriteLine("ITEM: {0},{1}", itemnum, On); if (On) { if (ItemOn(User, itemnum, out int OnOffType, out int Position)) { Client.SendAsync(new Myroom_ItemOn(User, itemnum, OnOffType, Position, last)); AvatarItemInfo offitem = null, onitem = null; if (OnOffType == 2) { offitem = User.AvatarItems.Find(f => f.position == Position && f.use == true); } onitem = User.AvatarItems.Find(f => f.itemdescnum == itemnum); if (User.InGame && User.CurrentRoomId != 0) { NormalRoom room = Rooms.NormalRoomList.Find(rm => rm.ID == User.CurrentRoomId); foreach (var player in room.Players) { player.Connection.SendAsync(new Myroom_ItemOn_GameRoom(player, User.RoomPos, itemnum, OnOffType, Position, offitem, onitem, last)); } } if (offitem != null) { offitem.use = false; } onitem.use = true; } } else { if (ItemOff(User, itemnum, out int OnOffType, out int Position)) { Client.SendAsync(new Myroom_ItemOff(User, itemnum, OnOffType, Position, last)); AvatarItemInfo offitem = null; offitem = User.AvatarItems.Find(f => f.itemdescnum == itemnum); if (User.InGame && User.CurrentRoomId != 0) { NormalRoom room = Rooms.NormalRoomList.Find(rm => rm.ID == User.CurrentRoomId); foreach (var player in room.Players) { player.Connection.SendAsync(new Myroom_ItemOff_GameRoom(player, User.RoomPos, itemnum, OnOffType, Position, offitem, last)); } } offitem.use = false; } } //User.AvatarItems.FirstOrDefault(f => f.itemdescnum == itemnum).use = On; }
public ExpiredItemInfo(AvatarItemInfo item, byte last) { ns.Write((byte)0x6B); ns.Write(0x9CC1D0); //D0 C1 9C 00 ns.Write(item.character); ns.Write(item.position); ns.Write(item.kind); ns.Write(item.itemdescnum); ns.Write(item.expireTime); ns.Write(item.gotDateTime); ns.Write(item.count); ns.Write(item.exp); ns.Write((byte)0); ns.Write(item.use); ns.Write((byte)0); //unk ns.Write(last); }
private static void getActiveFuncItem(Account User) { //HashSet<AvatarItemInfo> AvatarItem = new HashSet<AvatarItemInfo>(); List <AvatarItemInfo> AvatarItem2 = new List <AvatarItemInfo>(); using (var con = new MySqlConnection(Conf.Connstr)) { con.Open(); using (var cmd = new MySqlCommand(string.Empty, con)) { cmd.Parameters.Clear(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "usp_getActiveFuncItem"; cmd.Parameters.Add("usernum", MySqlDbType.Int32).Value = User.UserNum; cmd.Parameters.Add("position", MySqlDbType.Int32).Value = -1; cmd.Parameters.Add("expiredcheck", MySqlDbType.Int32).Value = 0; using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { AvatarItemInfo item = new AvatarItemInfo { character = Convert.ToInt16(reader["character"]), position = Convert.ToUInt16(reader["position"]), kind = Convert.ToInt16(reader["kind"]), itemdescnum = Convert.ToInt32(reader["itemdescnum"]), expireTime = Convert.IsDBNull(reader["expireTime"]) ? 0L : Utility.ConvertToTimestamp(Convert.ToDateTime(reader["expireTime"])), gotDateTime = Utility.ConvertToTimestamp(Convert.ToDateTime(reader["gotDateTime"])), count = Convert.ToInt32(reader["count"]), exp = Convert.ToInt32(reader["exp"]), use = Convert.ToBoolean(reader["using"]) }; AvatarItem2.Add(item); //User.AvatarItems.Add(item); } } } } } User.AvatarItems.Clear(); User.AvatarItems.AddRange(AvatarItem2); AvatarItem2.Clear(); }
private static bool GetAvatarItemInfo(int Usernum, string itemnums, out List <AvatarItemInfo> iteminfo) { iteminfo = new List <AvatarItemInfo>(); using (var con = new MySqlConnection(Conf.Connstr)) { con.Open(); using (var cmd = new MySqlCommand(string.Empty, con)) { cmd.Parameters.Clear(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "usp_getAvatarItem"; cmd.Parameters.Add("usernum", MySqlDbType.Int32).Value = Usernum; cmd.Parameters.Add("itemnums", MySqlDbType.VarChar).Value = itemnums; using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { AvatarItemInfo item = new AvatarItemInfo { character = Convert.ToInt16(reader["character"]), position = Convert.ToUInt16(reader["position"]), kind = Convert.ToInt16(reader["kind"]), itemdescnum = Convert.ToInt32(reader["itemdescnum"]), expireTime = Convert.IsDBNull(reader["expireTime"]) ? 0L : Utility.ConvertToTimestamp(Convert.ToDateTime(reader["expireTime"])), gotDateTime = Utility.ConvertToTimestamp(Convert.ToDateTime(reader["gotDateTime"])), count = Convert.ToInt32(reader["count"]), exp = Convert.ToInt32(reader["exp"]), use = Convert.ToBoolean(reader["using"]) }; iteminfo.Add(item); } return(true); } } } }
public Myroom_ItemOff_GameRoom(Account User, byte pos, int itemnum, int OnOffType, int Position, AvatarItemInfo offitem, byte last) : base(1, User.EncryptKey) { /*FF 8F 03 00 FA 2D 01 00 02 00 00 00 66 00 00 * 00 00 F0 11 9E 00 00 00 66 00 C0 00 FA 2D 01 * 00 20 F0 9D 59 6A 01 00 00 20 00 A2 56 68 01 * 00 00 01 00 00 00 00 00 00 00 01 01 F0 11 9E * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * 00 00 00 00 00 00 00 10*/ ns.Write((byte)0xFF); ns.Write((short)0x38F); ns.Write(pos); //pos? ns.Write(itemnum); ns.Write(OnOffType); ns.Write(Position); ns.Write(false); ns.Write(0x9CC1D0); //D0 C1 9C 00 ns.Write(offitem.character); ns.Write(offitem.position); ns.Write(offitem.kind); ns.Write(offitem.itemdescnum); ns.Write(offitem.expireTime); ns.Write(offitem.gotDateTime); ns.Write(offitem.count); ns.Write(offitem.exp); ns.Write((byte)0); ns.Write(offitem.use); ns.Write(0x9CC1D0); //D0 C1 9C 00 ns.Fill(0x24); ns.Write(last); //end }
public Myroom_ItemOn_GameRoom(byte pos, int itemnum, int OnOffType, int Position, AvatarItemInfo offitem, AvatarItemInfo onitem, byte last) { /*FF 8F 03 00 0C 8F 00 00 02 00 00 00 66 00 00 00 * 01 F0 11 9E 00 00 00 66 00 C0 00 FA 2D 01 00 20 F0 * 9D 59 6A 01 00 00 20 00 A2 56 68 01 00 00 01 00 * 00 00 00 00 00 00 01 01 F0 11 9E 00 00 00 66 00 * 99 00 0C 8F 00 00 C8 84 B6 6A 68 01 00 00 D0 33 * BC 00 66 01 00 00 01 00 00 00 00 00 00 00 01 00 80*/ ns.Write((byte)0xFF); ns.Write((short)0x38F); ns.Write(pos); //pos? ns.Write(itemnum); ns.Write(OnOffType); ns.Write(Position); ns.Write(true); if (offitem == null) { ns.Write(0x9CC1D0); //D0 C1 9C 00 ns.Fill(0x24); } else { ns.Write(0x9CC1D0); //D0 C1 9C 00 ns.Write(offitem.character); ns.Write(offitem.position); ns.Write(offitem.kind); ns.Write(offitem.itemdescnum); ns.Write(offitem.expireTime); ns.Write(offitem.gotDateTime); ns.Write(offitem.count); ns.Write(offitem.exp); ns.Write((byte)0); ns.Write(offitem.use); } ns.Write(0x9CC1D0); //D0 C1 9C 00 ns.Write(onitem.character); ns.Write(onitem.position); ns.Write(onitem.kind); ns.Write(onitem.itemdescnum); ns.Write(onitem.expireTime); ns.Write(onitem.gotDateTime); ns.Write(onitem.count); ns.Write(onitem.exp); ns.Write((byte)0); ns.Write(onitem.use); ns.Write(last); //end }