///////////////////////////////////////////////////////////////////////////////// // Item Switch ///////////////////////////////////////////////////////////////////////////////// void ItemMain() { #region Item Actions try { if (Character.State.Die || Character.Information.Scroll) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); byte iType = Reader.Byte(); switch (iType) { case 0: if (Character.State.Busy) return; ItemMove(Reader.Byte(), Reader.Byte(), Reader.Int16()); break; case 1: ItemMoveInStorage(Reader.Byte(), Reader.Byte(), Reader.Int16()); break; case 2: Player_MoveItemToStorage(Reader.Byte(), Reader.Byte(), Reader.Int32()); break; case 3: Player_MoveStorageItemToInv(Reader.Byte(), Reader.Byte(), Reader.Int32()); break; case 4: ItemMoveToExhangePage(Reader.Byte()); break; case 5: ItemMoveExchangeToInv(Reader.Byte()); break; case 8: Player_BuyItem(Reader.Byte(), Reader.Byte(), Reader.Int16(), Reader.Int32()); break; case 9: Player_SellItem(Reader.Byte(), Reader.Int16(), Reader.UInt16()); break; case 7: if (Character.State.Busy) return; Player_DropItem(Reader.Byte()); break; case 10: if (Character.State.Busy) return; Player_DropGold(Reader.UInt64()); break; case 11: Player_TakeGoldW(iType, Reader.Int64()); break; case 12: Player_GiveGoldW(iType, Reader.Int64()); break; case 13: ItemExchangeGold(Reader.Int64()); break; case 16: MovePetToPet(Reader.Int32(), Reader.Byte(), Reader.Byte(), Reader.Int16()); break; case 24: Player_BuyItemFromMall(Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Text()); break; case 26: MoveItemFromPet(Reader.Int32(), Reader.Byte(), Reader.Byte()); break; case 27: MoveItemToPet(Reader.Int32(), Reader.Byte(), Reader.Byte()); break; case 29: ItemMoveInStorage(Reader.Byte(), Reader.Byte(), Reader.Int16());//Move inside guild storage break; case 30: Player_MoveItemToStorage(Reader.Byte(), Reader.Byte(), Reader.Int32());//Move to guild storage break; case 31: Player_MoveStorageItemToInv(Reader.Byte(), Reader.Byte(), Reader.Int32());//Move from guild storage break; case 32: Player_GiveGoldW(iType, Reader.Int64());//Guild storage break; case 33: Player_TakeGoldW(iType, Reader.Int64());//Guild storage break; case 35: ItemAvatarUnEquip(Reader.Byte(), Reader.Byte()); break; case 36: ItemAvatarEquip(Reader.Byte(), Reader.Byte()); break; default: Print.Format("Unknown Item Function:{0}:{1}", iType, Decode.StringToPack(PacketInformation.buffer)); break; } Reader.Close(); } catch (Exception ex) { Console.WriteLine("Item Switch Error {0}", ex); } #endregion }
public void StallMain() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); byte Type = Reader.Byte(); //Item edit if (Type == 1) { if (Character.Network.Stall.isOpened) return; byte stallslot = Reader.Byte(); Reader.Skip(2); ulong price = Reader.UInt64(); if (price <= 999999999) { int StallItemIndex = Character.Network.Stall.ItemList.FindIndex(i => (i.stallSlot == stallslot)); Character.Network.Stall.ItemList[StallItemIndex].price = price; Character.Network.Stall.Send(Packet.StallModifyItem(stallslot, price)); } else return; } //Add an item else if (Type == 2) { if (Character.Network.Stall.isOpened) return; byte stallslot = Reader.Byte(); byte invpos = Reader.Byte(); short quantity = Reader.Int16(); ulong price = Reader.UInt64(); Global.slotItem uItemID = GetItem((uint)Character.Information.CharacterID, invpos, 0); //Disable item mall items in stalls for now. if (Data.ItemBase[uItemID.ID].Etctype == Global.item_database.EtcType.GLOBALCHAT || Data.ItemBase[uItemID.ID].Type == Global.item_database.ArmorType.AVATAR || Data.ItemBase[uItemID.ID].Type == Global.item_database.ArmorType.AVATARHAT || Data.ItemBase[uItemID.ID].Type == Global.item_database.ArmorType.AVATARATTACH ) return; if (quantity <= Data.ItemBase[uItemID.ID].Max_Stack) { stall.stallItem StallItem = new stall.stallItem(); LoadBluesid(uItemID.dbID); StallItem.stallSlot = stallslot; StallItem.price = price; StallItem.Item = (GetItem((uint)Character.Information.CharacterID, invpos, 0)); if (Character.Network.Stall.ItemList.Exists((get => get.Item.dbID == StallItem.Item.dbID))) return; Character.Network.Stall.ItemList.Add(StallItem); Character.Network.Stall.Send(Packet.StallItemMain(Character.Network.Stall.ItemList)); } else return; } //Item pulling out else if (Type == 3) { if (Character.Network.Stall.isOpened) return; byte stallslot = Reader.Byte(); //remove stallItem from stall Character.Network.Stall.ItemList.Remove(Character.Network.Stall.ItemList.Find(i => (i.stallSlot == stallslot))); Character.Network.Stall.Send(Packet.StallItemMain(Character.Network.Stall.ItemList)); } //Stall modify state else if (Type == 5) { byte State = Reader.Byte(); Character.Network.Stall.isOpened = (State == 1) ? true : false; Character.Network.Stall.Send(Packet.StallSetState(State)); } //Set Welcome msg else if (Type == 6) { if (Character.Network.Stall.isOpened) return; short length = Reader.Int16(); Character.Network.Stall.WelcomeMsg = Reader.Text3(); //Console.WriteLine("New Welcome msg:" + welcome); Character.Network.Stall.Send(Packet.StallWelcome(Character.Network.Stall.WelcomeMsg)); } //Set StallName else if (Type == 7) { string stallname = Reader.Text3(); Send(Packet.StallNameGlobal(Character.Information.UniqueID, stallname)); Character.Network.Stall.Send(Packet.StallName(stallname)); } } catch (Exception ex) { Console.WriteLine("Additem Stall error: {0}", ex); } }