コード例 #1
0
        public void MinilandRemoveObject(RmvobjPacket packet)
        {
            ItemInstance minilandobject = Session.Character.Inventory.LoadBySlotAndType <ItemInstance>(packet.Slot, InventoryType.Miniland);

            if (minilandobject != null)
            {
                if (Session.Character.MinilandState == MinilandState.LOCK)
                {
                    MinilandObject mo = Session.Character.MinilandObjects.FirstOrDefault(s => s.ItemInstanceId == minilandobject.Id);
                    if (mo != null)
                    {
                        if (minilandobject.Item.IsMinilandObject)
                        {
                            Session.Character.WareHouseSize = 0;
                        }
                        Session.Character.MinilandObjects.Remove(mo);
                        Session.SendPacket(mo.GenerateMinilandEffect(true));
                        Session.SendPacket(Session.Character.GenerateMinilandPoint());
                        Session.SendPacket(mo.GenerateMinilandObject(true));
                    }
                }
                else
                {
                    Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(Language.Instance.GetMessageFromKey("MINILAND_NEED_LOCK"), 0));
                }
            }
        }
コード例 #2
0
        private void ExecuteHandler(ClientSession session)
        {
            ItemInstance minilandobject =
                session.Character.Inventory.LoadBySlotAndType <ItemInstance>(Slot, InventoryType.Miniland);

            if (minilandobject != null)
            {
                if (session.Character.MinilandState == MinilandState.Lock)
                {
                    MinilandObject minilandObject =
                        session.Character.MinilandObjects.Find(s => s.ItemInstanceId == minilandobject.Id);
                    if (minilandObject != null)
                    {
                        if (minilandobject.Item.IsMinilandObject)
                        {
                            session.Character.WareHouseSize = 0;
                        }

                        session.Character.MinilandObjects.Remove(minilandObject);
                        session.SendPacket(minilandObject.GenerateMinilandEffect(true));
                        session.SendPacket(session.Character.GenerateMinilandPoint());
                        session.SendPacket(minilandObject.GenerateMinilandObject(true));
                    }
                }
                else
                {
                    session.SendPacket(
                        UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("MINILAND_NEED_LOCK"), 0));
                }
            }
        }
コード例 #3
0
        private void ExecuteHandler(ClientSession session)
        {
            ItemInstance minilandobject =
                session.Character.Inventory.LoadBySlotAndType <ItemInstance>(Slot, InventoryType.Miniland);

            if (minilandobject != null)
            {
                if (session.Character.MinilandObjects.All(s => s.ItemInstanceId != minilandobject.Id))
                {
                    if (session.Character.MinilandState == MinilandState.Lock)
                    {
                        MinilandObject minilandobj = new MinilandObject
                        {
                            CharacterId     = session.Character.CharacterId,
                            ItemInstance    = minilandobject,
                            ItemInstanceId  = minilandobject.Id,
                            MapX            = PositionX,
                            MapY            = PositionY,
                            Level1BoxAmount = 0,
                            Level2BoxAmount = 0,
                            Level3BoxAmount = 0,
                            Level4BoxAmount = 0,
                            Level5BoxAmount = 0
                        };

                        if (minilandobject.Item.ItemType == ItemType.House)
                        {
                            switch (minilandobject.Item.ItemSubType)
                            {
                            case 2:
                                minilandobj.MapX = 31;
                                minilandobj.MapY = 3;
                                break;

                            case 0:
                                minilandobj.MapX = 24;
                                minilandobj.MapY = 7;
                                break;

                            case 1:
                                minilandobj.MapX = 21;
                                minilandobj.MapY = 4;
                                break;
                            }

                            MinilandObject min = session.Character.MinilandObjects.Find(s =>
                                                                                        s.ItemInstance.Item.ItemType == ItemType.House && s.ItemInstance.Item.ItemSubType
                                                                                        == minilandobject.Item.ItemSubType);
                            if (min != null)
                            {
                                MinilandRemoveObject.HandlePacket(session, $"1 rmobj {Slot}");
                            }
                        }

                        if (minilandobject.Item.IsMinilandObject)
                        {
                            session.Character.WareHouseSize = minilandobject.Item.MinilandObjectPoint;
                        }

                        session.Character.MinilandObjects.Add(minilandobj);
                        session.SendPacket(minilandobj.GenerateMinilandEffect(false));
                        session.SendPacket(session.Character.GenerateMinilandPoint());
                        session.SendPacket(minilandobj.GenerateMinilandObject(false));
                    }
                    else
                    {
                        session.SendPacket(
                            UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("MINILAND_NEED_LOCK"),
                                                            0));
                    }
                }
                else
                {
                    session.SendPacket(
                        UserInterfaceHelper.GenerateMsg(
                            Language.Instance.GetMessageFromKey("ALREADY_THIS_MINILANDOBJECT"), 0));
                }
            }
        }
コード例 #4
0
        public void MinilandAddObject(AddobjPacket packet)
        {
            ItemInstance minilandobject = Session.Character.Inventory.LoadBySlotAndType <ItemInstance>(packet.Slot, InventoryType.Miniland);

            if (minilandobject != null)
            {
                if (Session.Character.MinilandObjects.All(s => s.ItemInstanceId != minilandobject.Id))
                {
                    if (Session.Character.MinilandState == MinilandState.LOCK)
                    {
                        MinilandObject mo = new MinilandObject
                        {
                            CharacterId     = Session.Character.CharacterId,
                            ItemInstance    = minilandobject,
                            ItemInstanceId  = minilandobject.Id,
                            MapX            = packet.PositionX,
                            MapY            = packet.PositionY,
                            Level1BoxAmount = 0,
                            Level2BoxAmount = 0,
                            Level3BoxAmount = 0,
                            Level4BoxAmount = 0,
                            Level5BoxAmount = 0
                        };

                        if (minilandobject.Item.ItemType == ItemType.House)
                        {
                            switch (minilandobject.Item.ItemSubType)
                            {
                            case 2:
                                mo.MapX = 31;
                                mo.MapY = 3;
                                break;

                            case 0:
                                mo.MapX = 24;
                                mo.MapY = 7;
                                break;

                            case 1:
                                mo.MapX = 21;
                                mo.MapY = 4;
                                break;
                            }

                            MinilandObject min = Session.Character.MinilandObjects.FirstOrDefault(s => s.ItemInstance.Item.ItemType == ItemType.House && s.ItemInstance.Item.ItemSubType == minilandobject.Item.ItemSubType);
                            if (min != null)
                            {
                                MinilandRemoveObject(new RmvobjPacket {
                                    Slot = min.ItemInstance.Slot
                                });
                            }
                        }

                        if (minilandobject.Item.IsMinilandObject)
                        {
                            Session.Character.WareHouseSize = minilandobject.Item.MinilandObjectPoint;
                        }
                        Session.Character.MinilandObjects.Add(mo);
                        Session.SendPacket(mo.GenerateMinilandEffect(false));
                        Session.SendPacket(Session.Character.GenerateMinilandPoint());
                        Session.SendPacket(mo.GenerateMinilandObject(false));
                    }
                    else
                    {
                        Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(Language.Instance.GetMessageFromKey("MINILAND_NEED_LOCK"), 0));
                    }
                }
                else
                {
                    Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(Language.Instance.GetMessageFromKey("ALREADY_THIS_MINILANDOBJECT"), 0));
                }
            }
        }