Пример #1
0
        private void HandlePlayerAddTemplate(GSPacketIn pkg)
        {
            GamePlayer player = WorldMgr.GetPlayerById(pkg.ClientID);

            if (player != null)
            {
                ItemTemplateInfo template = ItemMgr.FindItemTemplate(pkg.ReadInt());
                eBageType        type     = (eBageType)pkg.ReadByte();
                if (template != null)
                {
                    int      Count = pkg.ReadInt();
                    ItemInfo item  = ItemInfo.CreateFromTemplate(template, Count, 118);
                    item.Count     = Count;
                    item.ValidDate = pkg.ReadInt();
                    item.IsBinds   = pkg.ReadBoolean();
                    item.IsUsed    = pkg.ReadBoolean();
                    item.IsTips    = pkg.ReadBoolean();
                    item.IsLogs    = pkg.ReadBoolean();
                    int check = pkg.ReadInt();
                    if (check == template.TemplateID + Count)
                    {
                        if (!player.AddTemplate(item, type, item.Count, item.IsTips))
                        {
                        }
                    }
                    else
                    {
                        FightServerConnector.log.ErrorFormat("add template item error: userid {0} template id {1} count {2}", pkg.ClientID, template.TemplateID, Count);
                    }
                }
            }
        }
Пример #2
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType bagType = (eBageType)packet.ReadByte();
            int       place   = packet.ReadInt();
            //int toplace = packet.ReadInt();
            int count = packet.ReadInt();

            //}
            client.Player.BeginChanges();
            PlayerInventory bag = client.Player.GetInventory(bagType);

            if (bag != null && bag.GetItemAt(place) != null)
            {
                bag.RemoveItemAt(place);
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success"));
            }
            else
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.NoSuccess"));
                return(1);
            }

            // client.Player.BeginChanges();
            client.Player.AddGiftToken(25);
            client.Player.AddGold(25);
            client.Player.CommitChanges();
            //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, 25, client.Player.PlayerCharacter.Money, 25, 0, 0, "牌子编号",));
            //client.Player.SaveIntoDatabase();//保存到数据库
            return(0);
        }
Пример #3
0
 public void SendPlayerAddTemplate(int playerId, ItemInfo cloneItem, eBageType bagType, int count)
 {
     if (cloneItem != null)
     {
         GSPacketIn pkg = new GSPacketIn((byte)eFightPackageType.PLAYER_ADD_TEMPLATE1, playerId);
         pkg.WriteInt(cloneItem.TemplateID);
         pkg.WriteByte((byte)bagType);
         pkg.WriteInt(count);
         pkg.WriteInt(cloneItem.ValidDate);
         pkg.WriteBoolean(cloneItem.IsBinds);
         pkg.WriteBoolean(cloneItem.IsUsed);
         SendTCP(pkg);
     }
 }
Пример #4
0
 public void SendPlayerAddTemplate(int playerId, ItemInfo cloneItem, eBageType bagType, int count)
 {
     if (cloneItem != null)
     {
         GSPacketIn gSPacketIn = new GSPacketIn(48, playerId);
         gSPacketIn.WriteInt(cloneItem.TemplateID);
         gSPacketIn.WriteByte((byte)bagType);
         gSPacketIn.WriteInt(count);
         gSPacketIn.WriteInt(cloneItem.ValidDate);
         gSPacketIn.WriteBoolean(cloneItem.IsBinds);
         gSPacketIn.WriteBoolean(cloneItem.IsUsed);
         this.SendTCP(gSPacketIn);
     }
 }
Пример #5
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int result;

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result = 0;
            }
            else
            {
                int           consortiaID = packet.ReadInt();
                ConsortiaInfo consortia   = ConsortiaMgr.FindConsortiaInfo(consortiaID);
                if (consortia.ChairmanName != client.Player.PlayerCharacter.NickName)
                {
                    result = 0;
                }
                else
                {
                    eBageType bagType         = (eBageType)packet.ReadByte();
                    int       place           = packet.ReadInt();
                    string    newConsotiaName = packet.ReadString();
                    string    message         = "";
                    ItemInfo  info            = client.Player.GetItemAt(bagType, place);
                    if (info != null)
                    {
                        if (info.TemplateID == 11993)
                        {
                            string userName = client.Player.PlayerCharacter.UserName;
                            string nickName = client.Player.PlayerCharacter.NickName;
                            using (PlayerBussiness db = new PlayerBussiness())
                            {
                                if (db.RenameConsortiaNameByCard(userName, nickName, newConsotiaName, ref message))
                                {
                                    client.Player.RemoveItem(info, eItemRemoveType.Use);
                                    packet.WriteString(LanguageMgr.GetTranslation("Tank.Request.RenameConsortiaName.Success", new object[0]));
                                    client.Out.SendTCP(packet);
                                }
                                else
                                {
                                    client.Out.SendMessage(eMessageType.Normal, message);
                                }
                            }
                        }
                    }
                    result = 0;
                }
            }
            return(result);
        }
Пример #6
0
        private void HandlePlayerAddTemplate1(GSPacketIn pkg)
        {
            GamePlayer player = WorldMgr.GetPlayerById(pkg.ClientID);

            if (player != null)
            {
                ItemTemplateInfo template = ItemMgr.FindItemTemplate(pkg.ReadInt());
                eBageType        type     = (eBageType)pkg.ReadByte();
                if (template != null)
                {
                    int      Count = pkg.ReadInt();
                    ItemInfo item  = ItemInfo.CreateFromTemplate(template, Count, (int)ItemAddType.FightGet);
                    item.Count     = Count;
                    item.ValidDate = pkg.ReadInt();
                    item.IsBinds   = pkg.ReadBoolean();
                    item.IsUsed    = pkg.ReadBoolean();
                    player.AddTemplate(item, type, item.Count);
                }
            }
        }
Пример #7
0
        private void HandlePlayerAddTemplate1(GSPacketIn pkg)
        {
            GamePlayer playerById = WorldMgr.GetPlayerById(pkg.ClientID);

            if (playerById != null)
            {
                ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(pkg.ReadInt());
                eBageType        bagType          = (eBageType)pkg.ReadByte();
                if (itemTemplateInfo != null)
                {
                    int      count    = pkg.ReadInt();
                    ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo, count, 118);
                    itemInfo.Count     = count;
                    itemInfo.ValidDate = pkg.ReadInt();
                    itemInfo.IsBinds   = pkg.ReadBoolean();
                    itemInfo.IsUsed    = pkg.ReadBoolean();
                    playerById.AddTemplate(itemInfo, bagType, itemInfo.Count);
                }
            }
        }
Пример #8
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType bageType = (eBageType)packet.ReadByte();
            int       num      = packet.ReadInt();
            int       num2     = packet.ReadInt();

            client.Player.BeginChanges();
            PlayerInventory inventory = client.Player.GetInventory(bageType);

            if (inventory != null && inventory.GetItemAt(num) != null)
            {
                if (inventory.GetItemAt(num).Count <= num2)
                {
                    num2 = inventory.GetItemAt(num).Count;
                }
                ItemTemplateInfo template = inventory.GetItemAt(num).Template;
                int num3 = num2 * template.ReclaimValue;
                if (template.ReclaimType == 2)
                {
                    client.Player.AddGiftToken(num3);
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success1", new object[]
                    {
                        num3
                    }));
                }
                if (template.ReclaimType == 1)
                {
                    client.Player.AddGold(num3);
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success2", new object[]
                    {
                        num3
                    }));
                }
                inventory.RemoveItemAt(num);
                client.Player.CommitChanges();
                return(0);
            }
            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.NoSuccess", new object[0]));
            return(1);
        }
Пример #9
0
 public ItemInfo GetItemAt(eBageType bagType, int place)
 {
     PlayerInventory bag = GetInventory(bagType);
     if (bag != null)
     {
         return bag.GetItemAt(place);
     }
     return null;
 }
Пример #10
0
 public string GetInventoryName(eBageType bageType)
 {
     switch (bageType)
     {
         case eBageType.MainBag:
             return LanguageMgr.GetTranslation("Game.Server.GameObjects.Equip");
         case eBageType.PropBag:
             return LanguageMgr.GetTranslation("Game.Server.GameObjects.Prop");
         default:
             return bageType.ToString();
     }
 }
Пример #11
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int result;

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result = 0;
            }
            else
            {
                eBageType       bag         = (eBageType)packet.ReadByte();
                int             place       = packet.ReadInt();
                int             count       = packet.ReadInt();
                PlayerInventory bag_current = client.Player.GetInventory(bag);
                ItemInfo        goods       = bag_current.GetItemAt(place);
                if (goods != null && goods.Count == count && goods.Template.CanDelete)
                {
                    if (goods.Template.ReclaimType == 0)
                    {
                        int goodsValue = 0;
                        client.Player.AddGold(goodsValue);
                        client.Player.RemoveItem(goods, eItemRemoveType.Reclaim);
                        client.Player.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("ExchangeMoneyToGoldHandler.success", new object[]
                        {
                            goodsValue
                        }));
                    }
                    else
                    {
                        if (goods.Template.ReclaimType == 1)
                        {
                            int goodsValue = int.Parse(goods.Template.ReclaimValue) * count;
                            if (goodsValue >= 0)
                            {
                                client.Player.AddGold(goodsValue);
                                client.Player.RemoveItem(goods, eItemRemoveType.Reclaim);
                                client.Player.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("ExchangeMoneyToGoldHandler.success", new object[]
                                {
                                    goodsValue
                                }));
                            }
                            else
                            {
                                client.Player.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserReclaimItemHandler.fail", new object[0]));
                            }
                        }
                        else
                        {
                            if (goods.Template.ReclaimType == 2)
                            {
                                int goodsValue = int.Parse(goods.Template.ReclaimValue) * count;
                                if (goodsValue >= 0)
                                {
                                    client.Player.AddGiftToken(goodsValue);
                                    client.Player.RemoveItem(goods, eItemRemoveType.Reclaim);
                                    client.Player.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("ReclaimToGifttokenHandler.success", new object[]
                                    {
                                        goodsValue
                                    }));
                                }
                                else
                                {
                                    client.Player.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserReclaimItemHandler.fail", new object[0]));
                                }
                            }
                            else
                            {
                                if (goods.Template.ReclaimType == 3)
                                {
                                    List <int> a = new List <int>();
                                    if (goods.Template.ReclaimValue.IndexOf(',') != -1)
                                    {
                                        string[] b = goods.Template.ReclaimValue.Split(',');
                                        foreach (var c in b)
                                        {
                                            a.Add(int.Parse(c));
                                        }
                                    }
                                    else
                                    {
                                        a.Add(int.Parse(goods.Template.ReclaimValue));
                                    }
                                    foreach (var d in a)
                                    {
                                        client.Player.AddItem(ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(d), 1, 0));
                                    }
                                    client.Player.RemoveItem(goods, eItemRemoveType.Reclaim);
                                    client.Player.SendMessage(eMessageType.ChatNormal, "回收成功!");
                                }
                            }
                        }
                    }
                }
                result = 0;
            }
            return(result);
        }
Пример #12
0
        public int HandlePacket(GameClient client, GSPacketIn packet)//sendGoodsContinue
        {
            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                return(0);
            }
            new StringBuilder();
            int    num         = packet.ReadInt();
            string translateId = "UserItemContineueHandler.Success";

            for (int i = 0; i < num; i++)
            {
                eBageType eBageType = (eBageType)packet.ReadByte();
                int       num2      = packet.ReadInt();
                int       iD        = packet.ReadInt();
                int       num3      = (int)packet.ReadByte();
                bool      flag      = packet.ReadBoolean();
                int       themvao   = packet.ReadInt();//_loc_3.writeInt(param1[_loc_4][5]);//4.2

                if ((eBageType == eBageType.MainBag && num2 >= 31) || eBageType == eBageType.PropBag || eBageType == eBageType.Consortia)
                {
                    ItemInfo itemAt    = client.Player.GetItemAt(eBageType, num2);
                    int      num4      = 0;
                    int      num5      = 0;
                    int      num6      = 0;
                    int      num7      = 0;
                    int      num8      = 0;
                    int      validDate = itemAt.ValidDate;
                    DateTime arg_C8_0  = itemAt.BeginDate;
                    int      count     = itemAt.Count;
                    bool     flag2     = itemAt.IsValidItem();
                    if (itemAt.ValidDate > 365)
                    {
                        client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Thời gian sử dụng đả đạt mức tối đa.", new object[0]));
                        break;
                    }
                    ShopItemInfo shopItemInfoById = ShopMgr.GetShopItemInfoById(iD);
                    if (shopItemInfoById.TemplateID != itemAt.TemplateID)
                    {
                        Console.WriteLine("HACK GIA HAN  " + client.Player.Account);
                        return(0);
                    }
                    ItemInfo.SetItemType(shopItemInfoById, num3, ref num4, ref num5, ref num6, ref num7, ref num8);
                    if (num4 <= client.Player.PlayerCharacter.Gold && num5 <= client.Player.PlayerCharacter.Money && num6 <= client.Player.PlayerCharacter.Offer && num7 <= client.Player.PlayerCharacter.GiftToken)
                    {
                        client.Player.RemoveMoney(num5);
                        client.Player.RemoveGold(num4);
                        client.Player.RemoveOffer(num6);
                        client.Player.RemoveGiftToken(num7);
                        if (!flag2 && itemAt.ValidDate != 0)
                        {
                            itemAt.ValidDate = 0;
                        }
                        if (1 == num3)
                        {
                            itemAt.ValidDate += shopItemInfoById.AUnit;
                        }
                        if (2 == num3)
                        {
                            itemAt.ValidDate += shopItemInfoById.BUnit;
                        }
                        if (3 == num3)
                        {
                            itemAt.ValidDate += shopItemInfoById.CUnit;
                        }
                        if (!flag2 && itemAt.ValidDate != 0)
                        {
                            itemAt.BeginDate = DateTime.Now;
                            itemAt.IsUsed    = false;
                        }
                        LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, num5, client.Player.PlayerCharacter.Money, num4, 0, 0, 0, "牌子编号", itemAt.TemplateID.ToString(), num3.ToString());
                    }
                    else
                    {
                        itemAt.ValidDate = validDate;
                        itemAt.Count     = count;
                        translateId      = "UserItemContineueHandler.NoMoney";
                    }
                    if (eBageType == eBageType.MainBag)
                    {
                        if (flag)
                        {
                            int toSlot = client.Player.MainBag.FindItemEpuipSlot(itemAt.Template);
                            client.Player.MainBag.MoveItem(num2, toSlot, itemAt.Count);
                        }
                        else
                        {
                            client.Player.MainBag.UpdateItem(itemAt);
                        }
                    }
                    else
                    {
                        if (eBageType == eBageType.PropBag)
                        {
                            client.Player.PropBag.UpdateItem(itemAt);
                        }
                        else
                        {
                            client.Player.ConsortiaBag.UpdateItem(itemAt);
                        }
                    }
                }
            }
            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(translateId, new object[0]));
            return(0);
        }
Пример #13
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType       bageType   = (eBageType)packet.ReadByte();
            int             slot       = packet.ReadInt();
            eBageType       toBageType = (eBageType)packet.ReadByte();
            int             toSlot     = packet.ReadInt();
            int             count      = packet.ReadInt();
            PlayerInventory bag        = client.Player.GetInventory(bageType);
            PlayerInventory inventory  = client.Player.GetInventory(toBageType);

            if (toSlot < 0)
            {
                if ((inventory.BagType == (int)eBageType.Bank) || (inventory.BagType == (int)eBageType.PropBag))
                {
                    toSlot = inventory.FindFirstEmptySlot(0);
                }
                else
                {
                    toSlot = inventory.FindFirstEmptySlot(31);
                }
            }
            //==================================
            if (count > 0)
            {
                if ((bag == null) || (bag.GetItemAt(slot) == null))
                {
                    return(0);
                }
                if ((bageType == toBageType) && (slot != -1))
                {
                    if (bag.GetItemAt(slot).Count >= count)
                    {
                        Console.WriteLine("-----Stage 1 !");
                        bag.MoveItem(slot, toSlot, count);
                    }
                    else
                    {
                        Console.WriteLine("--" + client.Player.Account + " Hack = CE");
                        bag.MoveItem(slot, toSlot, bag.GetItemAt(slot).Count);
                    }
                    return(1);
                }

                if ((slot == -1) && (toSlot != -1))
                {
                    Console.WriteLine("-----Stage 2 !");
                    bag.RemoveItemAt(toSlot);
                    return(1);
                }

                if (((((slot != -1) && (toSlot == -1)) &&
                      ((bageType != eBageType.CaddyBag) &&
                       (toBageType != eBageType.Bank))) &&
                     (bageType != eBageType.Store)) &&
                    (toBageType != eBageType.Store))
                {
                    if (bageType == eBageType.MainBag)
                    {
                        Console.WriteLine("-----Stage 3 !");
                        bag.AddItem(client.Player.GetItemAt(bageType, slot), 31);
                    }
                    else
                    {
                        Console.WriteLine("-----Stage 4 !");
                        //bag.AddItem(client.Player.GetItemAt(bageType, slot), 0);
                        client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Full"));
                    }
                    return(1);
                }

                if ((((slot != -1) && (toBageType != bageType)) && (toBageType != eBageType.Store)) && (toBageType != eBageType.MainBag))
                {
                    ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
                    if (info != null)
                    {
                        if (toBageType == eBageType.Store)
                        {
                        }
                        Console.WriteLine("-----Stage 5 !");
                        bag.MoveToStore(bag, slot, toSlot, inventory, info.StoreLevel * 10);
                        return(1);
                    }
                }

                if ((toBageType == eBageType.Store) || (bageType == eBageType.Store))
                {
                    SqlDataProvider.Data.ItemInfo itemAt = client.Player.GetItemAt(bageType, slot);
                    if ((itemAt != null) && (itemAt.Count > 1))
                    {
                        itemAt.Count -= count;
                        bag.UpdateItem(itemAt);
                        SqlDataProvider.Data.ItemInfo item = itemAt.Clone();
                        item.Count = count;
                        if (inventory.GetItemAt(toSlot) == null)
                        {
                            Console.WriteLine("-----Stage 6 !");
                            inventory.AddItemTo(item, toSlot);
                        }
                        else
                        {
                            SqlDataProvider.Data.ItemInfo itemByTemplateID = bag.GetItemByTemplateID(0, inventory.GetItemAt(toSlot).TemplateID);
                            if (itemByTemplateID == null)
                            {
                                Console.WriteLine("-----Stage 7 !");
                                bag.MoveToStore(inventory, toSlot, bag.FindFirstEmptySlot(0), bag, 999);
                            }
                            else
                            {
                                Console.WriteLine("-----Stage 8 !");
                                itemByTemplateID.Count++;
                                bag.UpdateItem(itemByTemplateID);
                                inventory.RemoveItemAt(toSlot);
                            }
                            Console.WriteLine("-----Stage 9 !");
                            inventory.AddItemTo(item, toSlot);
                        }
                    }
                    else
                    {
                        if ((((toBageType != eBageType.Store) && (toBageType != eBageType.MainBag)) && ((bag.GetItemAt(slot) != null) && (bag.GetItemAt(slot).Template.CategoryID == 7))) && (((toSlot > 0) && (toSlot < 31)) && (toSlot != 6)))
                        {
                            return(1);
                        }
                        try
                        {
                            Console.WriteLine("-----Stage 10 !");
                            bag.MoveToStore(bag, slot, toSlot, inventory, 50);
                        }
                        catch (Exception)
                        {
                            LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", new object[] { slot, toSlot, bageType, toBageType });
                            LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(slot), inventory.GetItemAt(toSlot));
                        }
                    }
                    return(1);
                }
                if ((toBageType == eBageType.MainBag) && (bageType == eBageType.Bank))
                {
                    Console.WriteLine("-----Stage 11!");
                    bag.MoveToStore(bag, slot, toSlot, inventory, 50);
                    return(1);
                }
            }
            //==================================
            return(0);
        }
Пример #14
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType eBageType  = (eBageType)packet.ReadByte();
            int       num        = packet.ReadInt();
            eBageType eBageType2 = (eBageType)packet.ReadByte();
            int       num2       = packet.ReadInt();
            int       num3       = packet.ReadInt();

            packet.ReadBoolean();
            PlayerInventory inventory  = client.Player.GetInventory(eBageType);
            PlayerInventory inventory2 = client.Player.GetInventory(eBageType2);
            ItemInfo        itemAt     = inventory.GetItemAt(num);

            if (eBageType2 == eBageType.TempBag)
            {
                GameServer.log.Error("User want to put item into temp bag!");
                return(0);
            }
            if (inventory == null || itemAt == null)
            {
                return(0);
            }
            ItemInfo itemAt2 = inventory2.GetItemAt(num2);

            if (itemAt2 != null)
            {
                if (itemAt2.ItemID == itemAt.ItemID)
                {
                    GameServer.log.Error(string.Concat(new string[]
                    {
                        "Hack Trung ItemID ",
                        client.Player.PlayerCharacter.UserName,
                        "-[",
                        client.Player.PlayerCharacter.NickName,
                        "]"
                    }));
                    client.Disconnect();//kick user hack
                    return(0);
                }
                if (inventory == inventory2 && itemAt2.Place == itemAt.Place)
                {
                    GameServer.log.Error(string.Concat(new string[]
                    {
                        "Hack Trung PLace ",
                        client.Player.PlayerCharacter.UserName,
                        "-[",
                        client.Player.PlayerCharacter.NickName,
                        "]"
                    }));
                    return(0);
                }
            }
            if (num3 < 0 || num3 > itemAt.Count)
            {
                num3 = itemAt.Count;
            }
            inventory.BeginChanges();
            inventory2.BeginChanges();
            try
            {
                if (eBageType2 == eBageType.Consortia)
                {
                    ConsortiaInfo consortiaInfo = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
                    if (consortiaInfo != null)
                    {
                        inventory2.Capalility = consortiaInfo.StoreLevel * 10;
                    }
                }
                if (num2 == -1)
                {
                    bool flag = false;
                    if (eBageType == eBageType.CaddyBag && eBageType2 == eBageType.BeadBag)
                    {
                        num2 = inventory2.FindFirstEmptySlot();
                        if (inventory2.AddItemTo(itemAt, num2))
                        {
                            inventory.TakeOutItem(itemAt);
                        }
                        else
                        {
                            flag = true;
                        }
                    }
                    else
                    {
                        if (eBageType == eBageType2 && eBageType2 == eBageType.MainBag)
                        {
                            num2 = inventory2.FindFirstEmptySlot();
                            if (!inventory.MoveItem(num, num2, num3))
                            {
                                flag = true;
                            }
                        }
                        else
                        {
                            if (inventory2.StackItemToAnother(itemAt) || inventory2.AddItem(itemAt))
                            {
                                inventory.TakeOutItem(itemAt);
                            }
                            else
                            {
                                flag = true;
                            }
                        }
                    }
                    if (flag)
                    {
                        client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserChangeItemPlaceHandler.full", new object[0]));
                    }
                }
                else
                {
                    if (eBageType == eBageType2)
                    {
                        inventory.MoveItem(num, num2, num3);
                        client.Player.OnNewGearEvent(itemAt.Template.CategoryID);
                    }
                    else
                    {
                        if (eBageType == eBageType.Store)
                        {
                            this.MoveFromStore(client, inventory, itemAt, num2, inventory2, num3);
                        }
                        else
                        {
                            if (eBageType == eBageType.Consortia)
                            {
                                UserChangeItemPlaceHandler.MoveFromBank(client, num, num2, inventory, inventory2, itemAt);
                            }
                            else
                            {
                                if (eBageType2 == eBageType.Store)
                                {
                                    this.MoveToStore(client, inventory, itemAt, num2, inventory2, num3);
                                }
                                else
                                {
                                    if (eBageType2 == eBageType.Consortia)
                                    {
                                        UserChangeItemPlaceHandler.MoveToBank(num, num2, inventory, inventory2, itemAt);
                                    }
                                    else
                                    {
                                        if (inventory2.AddItemTo(itemAt, num2))
                                        {
                                            inventory.TakeOutItem(itemAt);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                inventory.CommitChanges();
                inventory2.CommitChanges();
            }
            return(0);
        }
Пример #15
0
        //修改:  Xiaov
        //时间:  2009-11-7
        //描述:  续费<已测试>
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            //在游戏中不能续费
            //if (client.Player.CurrentRoom != null && client.Player.CurrentRoom.IsPlaying)
            //    return 0;
            //二次密码
            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                return(0);
            }
            StringBuilder payGoods = new StringBuilder();                    //表示支付物品ID
            int           count    = packet.ReadInt();

            for (int i = 0; i < count; i++)
            {
                eBageType bag     = (eBageType)packet.ReadByte();
                int       place   = packet.ReadInt();
                int       Goods   = packet.ReadInt();
                int       type    = packet.ReadByte();
                bool      isDress = packet.ReadBoolean();

                if ((bag == 0 && place >= 31) || bag == eBageType.PropBag || bag == eBageType.Bank)
                {
                    ItemInfo item = client.Player.GetItemAt(bag, place);
                    if (item != null && item.ValidDate != 0 && !item.IsValidItem() && (bag == 0 || (bag == eBageType.PropBag && item.TemplateID == 10200)))
                    //if (item != null && item.ValidDate != 0 && (bag == 0 || bag == 11 || (bag == 1 && item.TemplateID == 10200)))
                    {
                        int  gold      = 0;      //表示金币
                        int  money     = 0;      //表示点券
                        int  offer     = 0;      //表示功勋
                        int  gifttoken = 0;      //表示礼劵
                        int  medal     = 0;
                        int  oldDate   = item.ValidDate;
                        int  oldCount  = item.Count;
                        bool isValid   = item.IsValidItem();
                        //List<int> needitemsinfo = new List<int>();

                        //eMessageType eMsg = eMessageType.Normal;
                        //string msg = "UserBuyItemHandler.Success";

                        ShopItemInfo shopitem = Bussiness.Managers.ShopMgr.GetShopItemInfoById(Goods);                         //获取商品信息
                        ItemInfo.SetItemType(shopitem, type, ref gold, ref money, ref offer, ref gifttoken, ref medal);        //获取物品价格及兑换物TemplatID, Count

                        /*/////////////////////////////////////////////////////////////////////////////////////
                         * //玩家背包中是否有兑换物品所需要的物品
                         * int icount = client.Player.MainBag.GetItems().Count;       //获取个数
                         * bool result = true;
                         * //for (int j = 0; j < needitemsinfo.Count; j += 2)
                         * //{
                         * //    ItemInfo temp = client.Player.PropBag.GetItemByTemplateID(icount, needitemsinfo[j]);
                         * //    int iVaule = client.Player.PropBag.GetItemCount(needitemsinfo[j]);
                         * //    if (temp != null || iVaule != needitemsinfo[j + 1] || !temp.IsBinds)
                         * //    {
                         * //        result = false;
                         * //    }
                         * //}
                         * for (int j = 0; j < needitemsinfo.Count; j += 2)
                         * {
                         *  if (client.Player.GetItemCount(needitemsinfo[j]) < needitemsinfo[j + 1])
                         *  {
                         *      result = false;
                         *  }
                         * }
                         *
                         * if (!result)
                         * {
                         *  eMsg = eMessageType.ERROR;
                         *  msg = "UserBuyItemHandler.NoBuyItem";
                         *  client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg));
                         *  return 1;
                         * }
                         * ////////////////////////////////////////////////////////////*/


                        if (gold <= client.Player.PlayerCharacter.Gold &&
                            money <= client.Player.PlayerCharacter.Money &&
                            offer <= client.Player.PlayerCharacter.Offer &&
                            gifttoken <= client.Player.PlayerCharacter.GiftToken &&
                            medal <= client.Player.PlayerCharacter.medal)
                        {
                            client.Player.RemoveMoney(money);
                            client.Player.RemoveGold(gold);
                            client.Player.RemoveOffer(offer);
                            client.Player.RemoveGiftToken(gifttoken);
                            client.Player.RemoveMedal(medal);

                            /*//////////////////////////////////////////////////////////////////////////////////////////////////////////////
                             * //从玩家背包中删除兑换所需要的物品
                             * //for (int j = 0; j < needitemsinfo.Count; j += 2)
                             * //{
                             * //    ItemInfo temp = client.Player.PropBag.GetItemByTemplateID(icount, needitemsinfo[j]);
                             * //    client.Player.PropBag.RemoveItem(temp);                                              /////////??????   日志
                             * //    payGoods.Append(temp.TemplateID.ToString() + ";");
                             * //}
                             * for (int j = 0; j < needitemsinfo.Count; j += 2)
                             * {
                             *  client.Player.RemoveTemplate(needitemsinfo[j], needitemsinfo[j + 1]);
                             *  payGoods.Append(needitemsinfo[j].ToString() + ":");
                             * }
                             * ////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

                            if (!isValid && item.ValidDate != 0)
                            {
                                if (1 == type)
                                {
                                    item.ValidDate = shopitem.AUnit;
                                    item.BeginDate = DateTime.Now;
                                    item.IsUsed    = false;
                                }
                                if (2 == type)
                                {
                                    item.ValidDate = shopitem.BUnit;
                                    item.BeginDate = DateTime.Now;
                                    item.IsUsed    = false;
                                }
                                if (3 == type)
                                {
                                    item.ValidDate = shopitem.CUnit;
                                    item.BeginDate = DateTime.Now;
                                    item.IsUsed    = false;
                                }
                            }


                            if (bag == 0)
                            {
                                if (isDress)
                                {
                                    int solt = client.Player.MainBag.FindItemEpuipSlot(item.Template);
                                    client.Player.MainBag.MoveItem(place, solt, item.Count);
                                }
                                else
                                {
                                    client.Player.MainBag.UpdateItem(item);
                                }
                            }
                            else if (bag == eBageType.PropBag)
                            {
                                client.Player.PropBag.UpdateItem(item);
                            }
                            else
                            {
                                client.Player.StoreBag.UpdateItem(item);
                            }
                            LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, 0, 0, 0, "牌子编号", item.TemplateID.ToString(), type.ToString());
                        }
                        else
                        {
                            item.ValidDate = oldDate;
                            item.Count     = oldCount;
                            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.NoMoney"));
                        }
                    }
                }
            }

            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.Success"));

            return(0);
        }
Пример #16
0
 public bool AddTemplate(ItemInfo cloneItem, eBageType bagType, int count)
 {
     this.m_client.SendPlayerAddTemplate(this.m_character.ID, cloneItem, bagType, count);
     return(true);
 }
Пример #17
0
        /// <summary>
        /// 熔炼步骤
        /// 第一步:检查四个熔炼类型与熔炼物品&是否有二级密码
        /// 第二步:检验数据是否合乎熔炼规则
        /// 第三步:生成预览或生成物品
        /// </summary>
        /// <param name="client"></param>
        /// <param name="packet"></param>
        /// <returns></returns>
        ///
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            StringBuilder str = new StringBuilder();
            //第一步:传入操作类型、与四个石头
            int              opertionType = packet.ReadByte();
            int              count        = packet.ReadInt();
            int              MinValid     = int.MaxValue; //默认最短有效时间
            List <ItemInfo>  items        = new List <ItemInfo>();
            List <ItemInfo>  appendItems  = new List <ItemInfo>();
            List <eBageType> bagTypes     = new List <eBageType>();

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                return(1);
            }
            for (int i = 0; i < count; i++)
            {
                eBageType bagType = (eBageType)packet.ReadByte();
                int       place   = packet.ReadInt();
                ItemInfo  info    = client.Player.GetItemAt(bagType, place);
                if (info != null)
                {
                    //str.Append(info.ItemID + ":" + info.TemplateID + ",");
                    //items.Add(info);
                    //bagTypes.Add(bagType);
                    if (!items.Contains(info))
                    {
                        str.Append(info.ItemID + ":" + info.TemplateID + ",");
                        items.Add(info);
                        bagTypes.Add(bagType);
                        if (info.ValidDate < MinValid && info.ValidDate != 0)
                        {
                            MinValid = info.ValidDate;
                        }
                    }
                    else
                    {
                        client.Out.SendMessage(eMessageType.Normal, "Bad Input");
                        return(1);
                    }
                }
            }

            if (MinValid == int.MaxValue)
            {
                MinValid = 0;
                items.Clear();
            }
            //第二步:传入熔炼公式与背包类型
            eBageType bagformul     = (eBageType)packet.ReadByte();
            int       placeformul   = packet.ReadInt();
            var       storeBag2     = client.Player.StoreBag2;
            ItemInfo  formul        = storeBag2.GetItemAt(0);;
            ItemInfo  tempitem      = null;
            string    beginProperty = null;
            string    AddItem       = "";

            for (int i = 1; i <= 4; i++)
            {
                items.Add(storeBag2.GetItemAt(i));
            }
            using (ItemRecordBussiness db = new ItemRecordBussiness())
            {
                foreach (ItemInfo item in items)
                {
                    db.FusionItem(item, ref beginProperty);
                }
            }

            if (items.Count != 4 || formul == null)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.ItemNotEnough"));
                return(0);
            }

            //第三步:附加物品个数+(背包类型与附加物品位置)
            int appendCount = packet.ReadInt();
            List <eBageType> bagTypesAppend = new List <eBageType>();

            for (int i = 0; i < appendCount; i++)
            {
                eBageType bagType = (eBageType)packet.ReadByte();
                int       place   = packet.ReadInt();
                ItemInfo  info    = client.Player.GetItemAt(bagType, place);
                if (info != null)
                {
                    if (!items.Contains(info) && !appendItems.Contains(info))
                    {
                        str.Append(info.ItemID + ":" + info.TemplateID + ",");
                        appendItems.Add(info);
                        bagTypesAppend.Add(bagType);
                        AddItem += info.ItemID + ":" + info.Template.Name + "," + info.IsBinds + "|";
                    }
                    else
                    {
                        client.Out.SendMessage(eMessageType.Normal, "Bad Input");
                        return(1);
                    }
                }
            }
            //结束:预览或熔炼
            if (0 == opertionType) //预览模式
            {
                bool isBind = false;
                Dictionary <int, double> previewItemList = FusionMgr.FusionPreview(items, appendItems, formul, ref isBind);

                if (previewItemList != null)
                {
                    if (previewItemList.Count != 0)
                    {
                        client.Out.SendFusionPreview(client.Player, previewItemList, isBind, MinValid);
                    }
                }
            }
            else //生成熔炼物品
            {
                storeBag2.ClearBag();
                int mustGold = (count + appendCount) * 400;
                if (client.Player.PlayerCharacter.Gold < mustGold)
                {
                    client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemFusionHandler.NoMoney"));
                    return(0);
                }

                bool             isBind     = false;
                bool             result     = false;
                ItemTemplateInfo rewardItem = FusionMgr.Fusion(items, appendItems, formul, ref isBind, ref result);
                if (rewardItem != null)
                {
                    client.Player.RemoveGold(mustGold);
                    for (int i = 0; i < items.Count; i++)
                    {
                        items[i].Count--;
                        client.Player.UpdateItem(items[i]);
                    }
                    formul.Count--;
                    client.Player.UpdateItem(formul);
                    for (int i = 0; i < appendItems.Count; i++)
                    {
                        appendItems[i].Count--;
                        client.Player.UpdateItem(appendItems[i]);
                    }

                    if (result)
                    {
                        str.Append(rewardItem.TemplateID + ",");
                        ItemInfo item = ItemInfo.CreateFromTemplate(rewardItem, 1, (int)ItemAddType.Fusion);
                        if (item == null)
                        {
                            return(0);
                        }
                        tempitem       = item;
                        item.IsBinds   = isBind;
                        item.ValidDate = MinValid;
                        client.Player.OnItemFusion(item.Template.FusionType);  //熔炼成功
                        client.Out.SendFusionResult(client.Player, result);
                        client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.Succeed1") + item.Template.Name);

                        //系统广播
                        if (((item.TemplateID >= 8300) && (item.TemplateID <= 8999)) || ((item.TemplateID >= 9300) && (item.TemplateID <= 9999)) || ((item.TemplateID >= 14300) && (item.TemplateID <= 14999)))
                        {
                            string msg = LanguageMgr.GetTranslation("ItemFusionHandler.Notice", client.Player.PlayerCharacter.NickName, item.Template.Name);

                            //client.Out.SendSystemNotice(msg);

                            GSPacketIn pkg1 = new GSPacketIn((byte)ePackageType.SYS_NOTICE);
                            pkg1.WriteInt(1);
                            pkg1.WriteString(msg);

                            GameServer.Instance.LoginServer.SendPacket(pkg1);

                            GamePlayer[] players = Game.Server.Managers.WorldMgr.GetAllPlayers();

                            foreach (GamePlayer p in players)
                            {
                                p.Out.SendTCP(pkg1);
                            }
                        }

                        if (!client.Player.AddTemplate(item, item.Template.BagType, item.Count))
                        {
                            str.Append("NoPlace");
                            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace"));
                        }
                    }
                    else
                    {
                        str.Append("false");

                        client.Out.SendFusionResult(client.Player, result);
                        client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.Failed"));
                    }
                    LogMgr.LogItemAdd(client.Player.PlayerCharacter.ID, LogItemType.Fusion, beginProperty, tempitem, AddItem, Convert.ToInt32(result));
                    client.Player.SaveIntoDatabase();//保存到数据库
                }
                else
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.NoCondition"));
                }
            }

            return(0);
        }
Пример #18
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType bagType = (eBageType)packet.ReadByte();
            int       place   = packet.ReadInt();
            //int toBagTemp = packet.ReadByte();
            //if (toBagTemp == 11) toBagTemp++;
            //eBageType tobagType = (eBageType)toBagTemp;
            eBageType tobagType = (eBageType)packet.ReadByte();
            int       toplace   = packet.ReadInt();
            int       count     = packet.ReadInt();
            //pkg.writeByte(bagtype);
            //pkg.writeInt(place);
            //pkg.writeByte(tobagType);
            //pkg.writeInt(toplace);
            //pkg.writeInt(count);
            PlayerInventory bag   = client.Player.GetInventory(bagType);
            PlayerInventory tobag = client.Player.GetInventory(tobagType);



            //chong hack chua xac dinh. do nem' vui khi di lung tung
            if (bag == null || bag.GetItemAt(place) == null)
            {
                return(0);
            }
            // chuyen do noi bo trong cung 1 tui'
            if ((bagType == tobagType) && place != -1)
            {
                //.GetItemInventory(temp);
                bag.MoveItem(place, toplace, count);
                return(1);
            }
            if (place == -1 && toplace != -1)
            {
                bag.RemoveItemAt(toplace);
                return(1);
            }
            if (place != -1 && toplace == -1 && bagType != eBageType.CaddyBag && tobagType != eBageType.Bank && bagType != eBageType.Store && tobagType != eBageType.Store)
            {
                if (bagType == 0)
                {
                    bag.AddItem(client.Player.GetItemAt(bagType, place), 31); //toSolt = bag.FindFirstEmptySlot(31);
                }
                else
                {
                    bag.AddItem(client.Player.GetItemAt(bagType, place), 0);
                }
                return(1);
            }
            if (place != -1 && tobagType != bagType && tobagType != eBageType.Store && tobagType != eBageType.MainBag)
            {
                ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
                if (info != null)
                {
                    //if(tobagType==eBageType.Store) client.Player.StoreBag.MoveToStore(bag, place, bagType, info.StoreLevel * 10);

                    bag.MoveToStore(bag, place, toplace, tobag, info.StoreLevel * 10);
                    return(1);
                }
            }

            //danh cho store khi nang cap chuyen do ve main
            if (tobagType == eBageType.Store || bagType == eBageType.Store)
            {
                var item = client.Player.GetItemAt(bagType, place);
                if (item != null && item.Count > 1)
                {
                    item.Count--;
                    bag.UpdateItem(item);
                    var tempItem = item.Clone();
                    tempItem.Count = 1;
                    if (tobag.GetItemAt(toplace) == null)
                    {
                        tobag.AddItemTo(tempItem, toplace);
                    }
                    else
                    {
                        var tempItem2 = bag.GetItemByTemplateID(0, tobag.GetItemAt(toplace).TemplateID);
                        if (tempItem2 == null)
                        {
                            bag.MoveToStore(tobag, toplace, bag.FindFirstEmptySlot(0), bag, 999);
                        }
                        else
                        {
                            tempItem2.Count++;
                            bag.UpdateItem(tempItem2);
                            tobag.RemoveItemAt(toplace);
                        }

                        tobag.AddItemTo(tempItem, toplace);
                    }
                    //tobag.CommitChanges();
                }
                else
                {
                    if (tobagType != eBageType.Store && tobagType != eBageType.MainBag && bag.GetItemAt(place) != null && bag.GetItemAt(place).Template.CategoryID == 7 && (toplace > 0 && toplace < 31 && toplace != 6))
                    {
                        return(1);
                    }
                    try
                    {
                        bag.MoveToStore(bag, place, toplace, tobag, 50);
                    }
                    catch (Exception e)
                    {
                        LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", place, toplace, bagType, tobagType);
                        LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(place), tobag.GetItemAt(toplace));
                    }
                }

                return(1);
            }

            //danh cho tu ngan hang chuyen do ve main
            if (tobagType == eBageType.MainBag && bagType == eBageType.Bank)
            {
                bag.MoveToStore(bag, place, toplace, tobag, 50);
                return(1);
            }
            return(0);
        }
Пример #19
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType       bageType  = (eBageType)packet.ReadByte();
            int             slot      = packet.ReadInt();
            eBageType       type2     = (eBageType)packet.ReadByte();
            int             toSlot    = packet.ReadInt();
            int             count     = packet.ReadInt();
            PlayerInventory bag       = client.Player.GetInventory(bageType);
            PlayerInventory inventory = client.Player.GetInventory(type2);

            if (toSlot < 0)
            {
                if ((inventory.BagType == 11) || (inventory.BagType == 1))
                {
                    toSlot = inventory.FindFirstEmptySlot(0);
                }
                else
                {
                    toSlot = inventory.FindFirstEmptySlot(0x1f);
                }
            }
            if (count > 0)
            {
                if ((bag == null) || (bag.GetItemAt(slot) == null))
                {
                    return(0);
                }
                if ((bageType == type2) && (slot != -1))
                {
                    if (bag.GetItemAt(slot).Count >= count)
                    {
                        bag.MoveItem(slot, toSlot, count);
                    }
                    else
                    {
                        Console.WriteLine("--" + client.Player.Account + " Hack = CE");
                        bag.MoveItem(slot, toSlot, bag.GetItemAt(slot).Count);
                    }
                    return(1);
                }
                if ((slot == -1) && (toSlot != -1))
                {
                    bag.RemoveItemAt(toSlot);
                    return(1);
                }
                if (((((slot != -1) && (toSlot == -1)) && ((bageType != eBageType.CaddyBag) && (type2 != eBageType.Bank))) && (bageType != eBageType.Store)) && (type2 != eBageType.Store))
                {
                    if (bageType == eBageType.MainBag)
                    {
                        bag.AddItem(client.Player.GetItemAt(bageType, slot), 0x1f);
                    }
                    else
                    {
                        bag.AddItem(client.Player.GetItemAt(bageType, slot), 0);
                    }
                    return(1);
                }
                if ((((slot != -1) && (type2 != bageType)) && (type2 != eBageType.Store)) && (type2 != eBageType.MainBag))
                {
                    ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
                    if (info != null)
                    {
                        if (type2 == eBageType.Store)
                        {
                        }
                        bag.MoveToStore(bag, slot, toSlot, inventory, info.StoreLevel * 10);
                        return(1);
                    }
                }
                if ((type2 == eBageType.Store) || (bageType == eBageType.Store))
                {
                    SqlDataProvider.Data.ItemInfo itemAt = client.Player.GetItemAt(bageType, slot);
                    if ((itemAt != null) && (itemAt.Count > 1))
                    {
                        itemAt.Count--;
                        bag.UpdateItem(itemAt);
                        SqlDataProvider.Data.ItemInfo item = itemAt.Clone();
                        item.Count = 1;
                        if (inventory.GetItemAt(toSlot) == null)
                        {
                            inventory.AddItemTo(item, toSlot);
                        }
                        else
                        {
                            SqlDataProvider.Data.ItemInfo itemByTemplateID = bag.GetItemByTemplateID(0, inventory.GetItemAt(toSlot).TemplateID);
                            if (itemByTemplateID == null)
                            {
                                bag.MoveToStore(inventory, toSlot, bag.FindFirstEmptySlot(0), bag, 0x3e7);
                            }
                            else
                            {
                                itemByTemplateID.Count++;
                                bag.UpdateItem(itemByTemplateID);
                                inventory.RemoveItemAt(toSlot);
                            }
                            inventory.AddItemTo(item, toSlot);
                        }
                    }
                    else
                    {
                        if ((((type2 != eBageType.Store) && (type2 != eBageType.MainBag)) && ((bag.GetItemAt(slot) != null) && (bag.GetItemAt(slot).Template.CategoryID == 7))) && (((toSlot > 0) && (toSlot < 0x1f)) && (toSlot != 6)))
                        {
                            return(1);
                        }
                        try
                        {
                            bag.MoveToStore(bag, slot, toSlot, inventory, 50);
                        }
                        catch (Exception)
                        {
                            LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", new object[] { slot, toSlot, bageType, type2 });
                            LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(slot), inventory.GetItemAt(toSlot));
                        }
                    }
                    return(1);
                }
                if ((type2 == eBageType.MainBag) && (bageType == eBageType.Bank))
                {
                    bag.MoveToStore(bag, slot, toSlot, inventory, 50);
                    return(1);
                }
            }
            return(0);
        }
Пример #20
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            eBageType bagType   = (eBageType)packet.ReadByte();
            int       place     = packet.ReadInt();
            int       payType   = (int)packet.ReadByte();
            int       price     = packet.ReadInt();
            int       mouthful  = packet.ReadInt();
            int       validDate = packet.ReadInt();
            string    msg       = "AuctionAddHandler.Fail";

            payType = 1;
            int result;

            if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
            {
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result = 0;
            }
            else
            {
                if (price < 0 || (mouthful != 0 && mouthful < price))
                {
                    result = 0;
                }
                else
                {
                    if (payType != 0)
                    {
                        payType = 1;
                    }
                    int needGold = (validDate == 0) ? 100 : ((validDate == 1) ? 200 : 300);
                    needGold = ((needGold < 1) ? 1 : needGold);
                    ItemInfo goods = player.GetItemAt(bagType, place);
                    if (price < 0)
                    {
                        msg = "AuctionAddHandler.Msg1";
                    }
                    else
                    {
                        if (mouthful != 0 && mouthful < price)
                        {
                            msg = "AuctionAddHandler.Msg2";
                        }
                        else
                        {
                            if (needGold > player.PlayerCharacter.Gold)
                            {
                                msg = "AuctionAddHandler.Msg3";
                            }
                            else
                            {
                                if (goods == null)
                                {
                                    msg = "AuctionAddHandler.Msg4";
                                }
                                else
                                {
                                    if (goods.IsBinds)
                                    {
                                        msg = "AuctionAddHandler.Msg5";
                                    }
                                    else
                                    {
                                        if (goods.ItemID == 0)
                                        {
                                            using (PlayerBussiness db = new PlayerBussiness())
                                            {
                                                db.AddGoods(goods);
                                            }
                                        }
                                        AuctionInfo info = new AuctionInfo();
                                        info.AuctioneerID   = player.PlayerCharacter.ID;
                                        info.AuctioneerName = player.PlayerCharacter.NickName;
                                        info.BeginDate      = DateTime.Now;
                                        info.BuyerID        = 0;
                                        info.BuyerName      = "";
                                        info.IsExist        = true;
                                        info.ItemID         = goods.ItemID;
                                        info.Mouthful       = mouthful;
                                        info.PayType        = payType;
                                        info.Price          = price;
                                        info.Rise           = price / 10;
                                        info.Rise           = ((info.Rise < 1) ? 1 : info.Rise);
                                        info.Name           = goods.Template.Name;
                                        info.Category       = goods.Template.CategoryID;
                                        info.ValidDate      = ((validDate == 0) ? 8 : ((validDate == 1) ? 24 : 48));
                                        info.TemplateID     = goods.TemplateID;
                                        info.Random         = AuctionAddHandler.random.Next(45, 75);
                                        using (PlayerBussiness db = new PlayerBussiness())
                                        {
                                            if (db.AddAuction(info))
                                            {
                                                player.TakeOutItem(goods);
                                                player.SaveIntoDatabase();
                                                player.RemoveGold(needGold);
                                                msg = "AuctionAddHandler.Msg6";
                                                player.Out.SendAuctionRefresh(info, info.AuctionID, true, goods);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg, new object[0]));
                    result = 0;
                }
            }
            return(result);
        }
Пример #21
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.Gold < 100)
            {
                return(1);
            }
            string       translateId = "UserSendMailHandler.Success";
            eMessageType type        = eMessageType.Normal;
            GSPacketIn   gSPacketIn  = new GSPacketIn(116, client.Player.PlayerCharacter.ID);
            ItemInfo     itemInfo    = null;
            string       text        = packet.ReadString().Trim();
            string       title       = packet.ReadString();
            string       content     = packet.ReadString();
            bool         flag        = packet.ReadBoolean();
            int          num         = packet.ReadInt();
            int          num2        = packet.ReadInt();
            eBageType    eBageType   = (eBageType)packet.ReadByte();
            int          num3        = packet.ReadInt();
            int          num4        = packet.ReadInt();

            if (text == client.Player.PlayerCharacter.NickName)
            {
                UserSendMailHandler.log.Error("Hack ingame: Username: "******" - NickName: " + client.Player.PlayerCharacter.NickName);
                return(0);
            }
            int num5 = 0;

            if ((num2 != 0 || num3 != -1) && client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                gSPacketIn.WriteBoolean(false);
                client.Out.SendTCP(gSPacketIn);
                return(1);
            }
            using (PlayerBussiness playerBussiness = new PlayerBussiness())
            {
                GamePlayer clientByPlayerNickName = WorldMgr.GetClientByPlayerNickName(text);
                PlayerInfo playerInfo;
                if (clientByPlayerNickName == null)
                {
                    playerInfo = playerBussiness.GetUserSingleByNickName(text);
                }
                else
                {
                    playerInfo = clientByPlayerNickName.PlayerCharacter;
                }
                if (playerInfo != null && !string.IsNullOrEmpty(text))
                {
                    if (playerInfo.NickName != client.Player.PlayerCharacter.NickName)
                    {
                        client.Player.SaveIntoDatabase();
                        MailInfo mailInfo = new MailInfo();
                        mailInfo.SenderID   = client.Player.PlayerCharacter.ID;
                        mailInfo.Sender     = client.Player.PlayerCharacter.NickName;
                        mailInfo.ReceiverID = playerInfo.ID;
                        mailInfo.Receiver   = playerInfo.NickName;
                        mailInfo.IsExist    = true;
                        mailInfo.Gold       = 0;
                        mailInfo.Money      = 0;
                        mailInfo.Title      = title;
                        mailInfo.Content    = content;
                        List <ItemInfo>  list          = new List <ItemInfo>();
                        List <eBageType> list2         = new List <eBageType>();
                        List <int>       list3         = new List <int>();
                        StringBuilder    stringBuilder = new StringBuilder();
                        stringBuilder.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark", new object[0]));
                        int num6 = 0;
                        if (num3 != -1)
                        {
                            itemInfo = client.Player.GetItemAt(eBageType, num3);
                            if (itemInfo != null && !itemInfo.IsBinds)
                            {
                                if (itemInfo.Count < num4 || num4 < 0)
                                {
                                    client.Out.SendMessage(type, LanguageMgr.GetTranslation("Số lượng không có thực, thao tác thất bại!", new object[0]));
                                    int result = 0;
                                    return(result);
                                }
                                num5 = itemInfo.Count - num4;
                                mailInfo.Annex1Name = itemInfo.Template.Name;
                                mailInfo.Annex1     = itemInfo.ItemID.ToString();
                                list.Add(itemInfo);
                                list2.Add(eBageType);
                                list3.Add(num4);
                                num6++;
                                stringBuilder.Append(num6);
                                stringBuilder.Append("、");
                                stringBuilder.Append(mailInfo.Annex1Name);
                                stringBuilder.Append("x");
                                stringBuilder.Append(itemInfo.Count);
                                stringBuilder.Append(";");
                            }
                        }
                        if (flag)
                        {
                            if (num2 <= 0 || (string.IsNullOrEmpty(mailInfo.Annex1) && string.IsNullOrEmpty(mailInfo.Annex2) && string.IsNullOrEmpty(mailInfo.Annex3) && string.IsNullOrEmpty(mailInfo.Annex4)))
                            {
                                int result = 1;
                                return(result);
                            }
                            mailInfo.ValidDate = ((num == 1) ? 1 : 6);
                            mailInfo.Type      = 101;
                            if (num2 > 0)
                            {
                                mailInfo.Money = num2;
                                num6++;
                                stringBuilder.Append(num6);
                                stringBuilder.Append("、");
                                stringBuilder.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney", new object[0]));
                                stringBuilder.Append(num2);
                                stringBuilder.Append(";");
                            }
                        }
                        else
                        {
                            mailInfo.Type = 1;
                            if (client.Player.PlayerCharacter.Money >= num2 && num2 > 0)
                            {
                                mailInfo.Money = num2;
                                client.Player.RemoveMoney(num2);
                                LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Send, client.Player.PlayerCharacter.ID, num2, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", "");
                                num6++;
                                stringBuilder.Append(num6);
                                stringBuilder.Append("、");
                                stringBuilder.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money", new object[0]));
                                stringBuilder.Append(num2);
                                stringBuilder.Append(";");
                            }
                        }
                        if (stringBuilder.Length > 1)
                        {
                            mailInfo.AnnexRemark = stringBuilder.ToString();
                        }
                        if (playerBussiness.SendMail(mailInfo))
                        {
                            client.Player.RemoveGold(100);
                            if (itemInfo != null)
                            {
                                itemInfo.UserID = 0;
                                client.Player.RemoveItem(itemInfo);
                                itemInfo.IsExist = true;
                                itemInfo.Count   = num4;
                                if (num5 > 0)
                                {
                                    client.Player.AddTemplate(itemInfo, eBageType, num5);
                                }
                            }
                        }
                        client.Player.SaveIntoDatabase();
                        gSPacketIn.WriteBoolean(true);
                        if (playerInfo.State != 0)
                        {
                            client.Player.Out.SendMailResponse(playerInfo.ID, eMailRespose.Receiver);
                        }
                        client.Player.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Send);
                    }
                    else
                    {
                        translateId = "UserSendMailHandler.Failed1";
                        gSPacketIn.WriteBoolean(false);
                    }
                }
                else
                {
                    type        = eMessageType.ERROR;
                    translateId = "UserSendMailHandler.Failed2";
                    gSPacketIn.WriteBoolean(false);
                }
            }
            client.Out.SendMessage(type, LanguageMgr.GetTranslation(translateId, new object[0]));
            client.Out.SendTCP(gSPacketIn);
            return(0);
        }
Пример #22
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType ItemBagType = (eBageType)packet.ReadInt();

            int ItemPlace = packet.ReadInt();

            eBageType           PropBagType = (eBageType)packet.ReadInt();
            ItemInfo            Item        = null;
            List <ShopItemInfo> ShopItem    = new List <ShopItemInfo>();
            ItemInfo            Prop        = null;
            int PropPlace = packet.ReadInt();

            int Operation = packet.ReadInt();



            if (PropPlace == -1)
            {
                int templateID = packet.ReadInt();
                int type       = packet.ReadInt();
                int gold       = 0;
                int money      = 0;



                ItemTemplateInfo template = Bussiness.Managers.ItemMgr.FindItemTemplate(34101);
                Prop     = ItemInfo.CreateFromTemplate(template, 1, (int)ItemAddType.Buy);
                ShopItem = Bussiness.Managers.ShopMgr.FindShopbyTemplatID(34101);
                for (int i = 0; i < ShopItem.Count; i++)
                {
                    if (ShopItem[i].APrice1 == -1 && ShopItem[i].AValue1 != 0)
                    {
                        money          = ShopItem[i].AValue1;
                        Prop.ValidDate = ShopItem[i].AUnit;
                    }
                }

                if (Prop != null)
                {
                    // item = ItemInfo.SetItemType(item, type, ref gold, ref money, ref offer);
                    if (gold <= client.Player.PlayerCharacter.Gold && money <= client.Player.PlayerCharacter.Money)
                    {
                        client.Player.RemoveMoney(money);
                        client.Player.RemoveGold(gold);
                        LogMgr.LogMoneyAdd(LogMoneyType.Item, LogMoneyType.Item_Move, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, 0, 0, "牌子编号", Prop.TemplateID.ToString(), type.ToString());
                    }
                    else
                    {
                        Prop = null;
                    }
                }
            }
            else
            {
                Prop = client.Player.GetItemAt(PropBagType, PropPlace);
            }
            Item = client.Player.GetItemAt(ItemBagType, ItemPlace);
            StringBuilder str = new StringBuilder();

            if (Prop == null || Item == null)
            {
                return(1);
            }

            bool result = false;

            ItemTemplateInfo TemplateItem = Managers.RefineryMgr.RefineryTrend(Operation, Item, ref result);

            if (result && TemplateItem != null)
            {
                ItemInfo          item = ItemInfo.CreateFromTemplate(TemplateItem, 1, (int)ItemAddType.RefineryTrend);
                AbstractInventory bg   = client.Player.GetItemInventory(TemplateItem);
                // Managers.RefineryMgr.InheritProperty(Item, ref item);
                if (bg.AddItem(item, bg.BeginSlot))
                {
                    client.Player.UpdateItem(item);
                    client.Player.RemoveItem(Item);
                    Prop.Count--;
                    client.Player.UpdateItem(Prop);
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Success"));
                }
                else
                {
                    str.Append("NoPlace");
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace"));
                }
                return(1);
            }
            else
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Fail"));
                return(1);
            }
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            eBageType bagType   = (eBageType)packet.ReadByte();
            int       place     = packet.ReadInt();
            eBageType tobagType = (eBageType)packet.ReadByte();
            int       result;

            if (tobagType == eBageType.TempBag)
            {
                GameServer.log.Error("User want to put item into temp bag!");
                result = 0;
            }
            else
            {
                int             toplace = packet.ReadInt();
                int             count   = packet.ReadInt();
                PlayerInventory bag     = player.GetInventory(bagType);
                PlayerInventory tobag   = player.GetInventory(tobagType);
                if (tobagType == eBageType.TempBag)
                {
                    result = 0;
                }
                else
                {
                    bag.BeginChanges();
                    tobag.BeginChanges();
                    try
                    {
                        if (place != -1)
                        {
                            ItemInfo item = bag.GetItemAt(place);
                            if (tobagType == eBageType.Bank)
                            {
                                ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(player.PlayerCharacter.ConsortiaID);
                                if (info != null)
                                {
                                    tobag.Capalility = info.StoreLevel * 10;
                                }
                            }
                            if (toplace == -1)
                            {
                                if (tobag.StackItemToAnother(item) || tobag.AddItem(item))
                                {
                                    bag.TakeOutItem(item);
                                }
                                else
                                {
                                    player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserChangeItemPlaceHandler.full", new object[0]));
                                }
                            }
                            else
                            {
                                if (bagType == tobagType)
                                {
                                    bag.MoveItem(place, toplace, count);
                                }
                                else
                                {
                                    if (bagType == eBageType.HideBag)
                                    {
                                        this.MoveFromHide(player, bag, item, toplace, tobag, count);
                                    }
                                    else
                                    {
                                        if (tobagType == eBageType.HideBag)
                                        {
                                            this.MoveToHide(player, bag, item, toplace, tobag, count);
                                        }
                                        else
                                        {
                                            if (bagType == eBageType.Bank)
                                            {
                                                UserChangeItemPlaceHandler.MoveFromBank(player, place, toplace, bag, tobag, item);
                                            }
                                            else
                                            {
                                                if (tobagType == eBageType.Bank)
                                                {
                                                    UserChangeItemPlaceHandler.MoveToBank(place, toplace, bag, tobag, item);
                                                }
                                                else
                                                {
                                                    if (tobag.AddItemTo(item, toplace))
                                                    {
                                                        bag.TakeOutItem(item);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (toplace != -1)
                            {
                                bag.RemoveItemAt(toplace, eItemRemoveType.Delete);
                            }
                        }
                    }
                    finally
                    {
                        bag.CommitChanges();
                        tobag.CommitChanges();
                    }
                    result = 0;
                }
            }
            return(result);
        }
Пример #24
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType bagType   = (eBageType)packet.ReadByte();
            int       place     = packet.ReadInt();
            int       payType   = packet.ReadByte();
            int       price     = packet.ReadInt();
            int       mouthful  = packet.ReadInt();
            int       validDate = packet.ReadInt();

            string msg = "AuctionAddHandler.Fail";

            payType = 1;
            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                return(0);
            }

            if (price < 0 || (mouthful != 0 && mouthful < price))
            {
                return(0);
            }

            int multiple = 1;

            if (payType != 0)
            {
                //multiple = 10;
                multiple = 1;
                payType  = 1;
            }
            int needGold = (int)(multiple * price * 0.03 * (validDate == 0 ? 1 : validDate == 1 ? 3 : 6));

            needGold = needGold < 1 ? 1 : needGold;
            ItemInfo goods = client.Player.GetItemAt(bagType, place);

            if (price < 0)
            {
                msg = "AuctionAddHandler.Msg1";
            }
            else if (mouthful != 0 && mouthful < price)
            {
                msg = "AuctionAddHandler.Msg2";
            }
            else if (needGold > client.Player.PlayerCharacter.Gold)
            {
                msg = "AuctionAddHandler.Msg3";
            }
            else if (goods == null)
            {
                msg = "AuctionAddHandler.Msg4";
            }
            else if (goods.IsBinds)
            {
                msg = "AuctionAddHandler.Msg5";
            }
            else
            {
                client.Player.SaveIntoDatabase();
                AuctionInfo info = new AuctionInfo();
                info.AuctioneerID   = client.Player.PlayerCharacter.ID;       //获取物品ID
                info.AuctioneerName = client.Player.PlayerCharacter.NickName; //获取物品妮称
                info.BeginDate      = DateTime.Now;
                info.BuyerID        = 0;
                info.BuyerName      = "";
                info.IsExist        = true;
                info.ItemID         = goods.ItemID;
                info.Mouthful       = mouthful;
                info.PayType        = payType;
                info.Price          = price;
                info.Rise           = price / 10;
                info.Rise           = info.Rise < 1 ? 1 : info.Rise;
                info.Name           = goods.Template.Name;
                info.Category       = goods.Template.CategoryID;
                info.ValidDate      = validDate == 0 ? 8 : validDate == 1 ? 24 : 48;
                info.TemplateID     = goods.TemplateID;

                info.Random = Bussiness.ThreadSafeRandom.NextStatic(GameProperties.BeginAuction, GameProperties.EndAuction);
                using (PlayerBussiness db = new PlayerBussiness())    //写数据库
                {
                    if (db.AddAuction(info))
                    {
                        //client.Player.RemoveAllItem(goods, true, Game.Server.Statics.ItemRemoveType.Auction, bagType);
                        //client.Player.up
                        //client.Player.SaveIntoDatabase();
                        //client.Player.SetGold(-needGold, Game.Server.Statics.GoldRemoveType.Auction);
                        //msg = "AuctionAddHandler.Msg6";
                        //client.Out.SendAuctionRefresh(info, info.AuctionID, true, goods);
                        client.Player.RemoveItem(goods);

                        goods.IsExist = true;

                        client.Player.SaveIntoDatabase();
                        client.Player.RemoveGold(needGold);
                        msg = "AuctionAddHandler.Msg6";
                        client.Out.SendAuctionRefresh(info, info.AuctionID, true, goods);
                    }
                }
            }

            //client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver);
            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg));
            return(0);
        }
Пример #25
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType bagType     = (eBageType)packet.ReadByte();
            int       place       = packet.ReadInt();
            int       num         = (int)packet.ReadByte();
            int       num2        = packet.ReadInt();
            int       num3        = packet.ReadInt();
            int       num4        = packet.ReadInt();
            int       num5        = packet.ReadInt();
            string    translateId = "AuctionAddHandler.Fail";

            num = 1;
            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                return(0);
            }
            if (num2 < 0 || (num3 != 0 && num3 < num2))
            {
                return(0);
            }
            int num6 = 1;

            if (num != 0)
            {
                num6 = 1;
                num  = 1;
            }
            int num7 = (int)((double)(num6 * num2) * 0.03 * (double)((num4 == 0) ? 1 : ((num4 == 1) ? 3 : 6)));

            num7 = ((num7 < 1) ? 1 : num7);
            ItemInfo itemAt = client.Player.GetItemAt(bagType, place);

            if (itemAt == null)
            {
                client.Player.SendMessage("Vật phẩm lạ không tìm thấy!!! Hack chăng???!!!");
                return(0);
            }
            int num8 = itemAt.Count - num5;

            if (itemAt.Count < num5 || num5 < 0)
            {
                num5 = itemAt.Count;
            }
            if (num2 < 0)
            {
                translateId = "AuctionAddHandler.Msg1";
            }
            else
            {
                if (num3 != 0 && num3 < num2)
                {
                    translateId = "AuctionAddHandler.Msg2";
                }
                else
                {
                    if (num7 > client.Player.PlayerCharacter.Gold)
                    {
                        translateId = "AuctionAddHandler.Msg3";
                    }
                    else
                    {
                        if (itemAt == null)
                        {
                            translateId = "AuctionAddHandler.Msg4";
                        }
                        else
                        {
                            if (itemAt.IsBinds)
                            {
                                translateId = "AuctionAddHandler.Msg5";
                            }
                            else
                            {
                                client.Player.SaveIntoDatabase();
                                AuctionInfo auctionInfo = new AuctionInfo();
                                auctionInfo.AuctioneerID   = client.Player.PlayerCharacter.ID;
                                auctionInfo.AuctioneerName = client.Player.PlayerCharacter.NickName;
                                auctionInfo.BeginDate      = DateTime.Now;
                                auctionInfo.BuyerID        = 0;
                                auctionInfo.BuyerName      = "";
                                auctionInfo.IsExist        = true;
                                auctionInfo.ItemID         = itemAt.ItemID;
                                auctionInfo.Mouthful       = num3;
                                auctionInfo.PayType        = num;
                                auctionInfo.Price          = num2;
                                auctionInfo.Rise           = num2 / 10;
                                auctionInfo.Rise           = ((auctionInfo.Rise < 1) ? 1 : auctionInfo.Rise);
                                auctionInfo.Name           = itemAt.Template.Name;
                                auctionInfo.Category       = itemAt.Template.CategoryID;
                                auctionInfo.ValidDate      = ((num4 == 0) ? 8 : ((num4 == 1) ? 24 : 48));
                                auctionInfo.TemplateID     = itemAt.TemplateID;
                                auctionInfo.goodsCount     = num5;
                                auctionInfo.Random         = ThreadSafeRandom.NextStatic(GameProperties.BeginAuction, GameProperties.EndAuction);
                                using (PlayerBussiness playerBussiness = new PlayerBussiness())
                                {
                                    if (playerBussiness.AddAuction(auctionInfo))
                                    {
                                        itemAt.Count = num5;
                                        client.Player.TakeOutItem(itemAt);
                                        if (num8 > 0)
                                        {
                                            client.Player.AddTemplate(itemAt, bagType, num8);
                                        }
                                        client.Player.SaveIntoDatabase();
                                        client.Player.RemoveGold(num7);
                                        translateId = "AuctionAddHandler.Msg6";
                                        client.Out.SendAuctionRefresh(auctionInfo, auctionInfo.AuctionID, true, itemAt);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(translateId, new object[0]));
            return(0);
        }
Пример #26
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();
            bool IsBinds      = false;
            int  OpertionType = packet.ReadInt();
            int  Count        = packet.ReadInt();

            List <ItemInfo>  Items       = new List <ItemInfo>();
            List <ItemInfo>  AppendItems = new List <ItemInfo>();
            List <eBageType> BagTypes    = new List <eBageType>();

            StringBuilder str = new StringBuilder();

            int defaultprobability = 25;

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.locked"));
                return(1);
            }



            for (int i = 0; i < Count; i++)
            {
                eBageType bagType = (eBageType)packet.ReadInt();
                int       place   = packet.ReadInt();

                ItemInfo info = client.Player.GetItemAt(bagType, place);
                if (info != null)
                {
                    if (!Items.Contains(info))
                    {
                        if (info.IsBinds == true)
                        {
                            IsBinds = true;
                        }
                        str.Append(info.ItemID + ":" + info.TemplateID + ",");
                        Items.Add(info);
                        BagTypes.Add(bagType);
                    }
                    else
                    {
                        client.Out.SendMessage(eMessageType.Normal, "Bad Input");
                        return(1);
                    }
                }
            }

            //          ItemInfo MainMaterial = client.Player.GetItemAt(packet.ReadInt(), packet.ReadInt());


            eBageType BagType = (eBageType)packet.ReadInt();
            int       Place   = packet.ReadInt();

            ItemInfo Item = client.Player.GetItemAt(BagType, Place);

            if (Item != null)
            {
                str.Append(Item.ItemID + ":" + Item.TemplateID + ",");
            }

            eBageType LuckBagType = (eBageType)packet.ReadInt();
            int       LuckPlace   = packet.ReadInt();

            ItemInfo LuckItem = client.Player.GetItemAt(LuckBagType, LuckPlace);;

            bool Luck = LuckItem == null ? false : true;

            //if (IsBinds != Item.IsBinds && IsBinds == true)
            //{
            //    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.IsBinds"));
            //  //  return 1;
            //}

            if (Count != 4 || Item == null)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.ItemNotEnough"));
                return(1);
            }

            bool result    = false;
            bool IsFormula = false;


            if (OpertionType == 0)  //预览模式
            {
                ItemTemplateInfo Template = Managers.RefineryMgr.Refinery(client.Player, Items, Item, Luck, OpertionType, ref result, ref defaultprobability, ref IsFormula);

                if (Template != null)
                {
                    client.Out.SendRefineryPreview(client.Player, Template.TemplateID, IsBinds, Item);
                }

                return(0);
            }
            else                     //玩家炼化
            {
                int MustGold = 10000;

                if (client.Player.PlayerCharacter.Gold > MustGold)
                {
                    client.Player.RemoveGold(MustGold);
                    ItemTemplateInfo RewardItem = Managers.RefineryMgr.Refinery(client.Player, Items, Item, Luck, OpertionType, ref result, ref defaultprobability, ref IsFormula);
                    if (RewardItem != null && IsFormula && result)
                    {
                        str.Append("Success");
                        result = true;

                        if (result)
                        {
                            ItemInfo item = ItemInfo.CreateFromTemplate(RewardItem, 1, (int)ItemAddType.Refinery);

                            if (item != null)
                            {
                                client.Player.OnItemMelt(Item.Template.CategoryID);
                                //  Managers.RefineryMgr.InheritProperty(Item, ref item);
                                item.IsBinds = IsBinds;

                                AbstractInventory bg = client.Player.GetItemInventory(RewardItem);

                                if (!bg.AddItem(item, bg.BeginSlot))
                                {
                                    str.Append("NoPlace");
                                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace"));
                                }

                                pkg.WriteByte(0);

                                Item.Count--;
                                client.Player.UpdateItem(Item);
                            }
                        }

                        else
                        {
                            str.Append("false");
                        }
                    }
                    else
                    {
                        pkg.WriteByte(1);
                    }



                    if (Luck)
                    {
                        LuckItem.Count--;
                        client.Player.UpdateItem(LuckItem);
                    }

                    for (int i = 0; i < Items.Count; i++)
                    {
                        client.Player.UpdateItem(Items[i]);
                        if (Items[i].Count <= 0)
                        {
                            client.Player.RemoveItem(Items[i]);
                        }
                    }
                    client.Player.RemoveItem(Items[Items.Count - 1]);
                    client.Player.Out.SendTCP(pkg);
                }
                else
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.NoGold"));
                }


                return(1);
            }
        }
Пример #27
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int result;

            if (player.PlayerCharacter.Gold < 100)
            {
                result = 1;
            }
            else
            {
                string       msg  = "UserSendMailHandler.Success";
                eMessageType eMsg = eMessageType.Normal;
                GSPacketIn   pkg  = packet.Clone();
                pkg.ClearContext();
                string    nickName  = packet.ReadString().Trim();
                string    title     = packet.ReadString();
                string    content   = packet.ReadString();
                bool      isPay     = packet.ReadBoolean();
                int       validDate = packet.ReadInt();
                int       money     = packet.ReadInt();
                eBageType bag       = (eBageType)packet.ReadByte();
                int       place     = packet.ReadInt();
                eBageType bag2      = (eBageType)packet.ReadByte();
                int       place2    = packet.ReadInt();
                eBageType bag3      = (eBageType)packet.ReadByte();
                int       place3    = packet.ReadInt();
                eBageType bag4      = (eBageType)packet.ReadByte();
                int       place4    = packet.ReadInt();
                if ((money != 0 || place != -1 || place2 != -1 || place3 != -1 || place4 != -1) && player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
                {
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                    pkg.WriteBoolean(false);
                    player.Out.SendTCP(pkg);
                    result = 1;
                }
                else
                {
                    using (PlayerBussiness db = new PlayerBussiness())
                    {
                        GamePlayer otherp = WorldMgr.GetClientByPlayerNickName(nickName);
                        PlayerInfo user;
                        if (otherp == null)
                        {
                            user = db.GetUserSingleByNickName(nickName);
                        }
                        else
                        {
                            user = otherp.PlayerCharacter;
                        }
                        if (!string.IsNullOrEmpty(title))
                        {
                            if (user != null && !string.IsNullOrEmpty(nickName))
                            {
                                if (user.NickName != player.PlayerCharacter.NickName)
                                {
                                    player.SaveIntoDatabase();
                                    MailInfo message = new MailInfo();
                                    message.SenderID   = player.PlayerCharacter.ID;
                                    message.Sender     = player.PlayerCharacter.NickName;
                                    message.ReceiverID = user.ID;
                                    message.Receiver   = user.NickName;
                                    message.IsExist    = true;
                                    message.Gold       = 0;
                                    message.Money      = 0;
                                    message.Title      = title;
                                    message.Content    = content;
                                    List <ItemInfo>  items       = new List <ItemInfo>();
                                    List <eBageType> bagType     = new List <eBageType>();
                                    StringBuilder    annexRemark = new StringBuilder();
                                    annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark", new object[0]));
                                    int index = 0;
                                    if (place != -1)
                                    {
                                        ItemInfo goods = player.GetItemAt(bag, place);
                                        if (goods != null && !goods.IsBinds)
                                        {
                                            message.Annex1Name = goods.Template.Name;
                                            message.Annex1     = goods.ItemID.ToString();
                                            items.Add(goods);
                                            bagType.Add(bag);
                                            index++;
                                            annexRemark.Append(index);
                                            annexRemark.Append("、");
                                            annexRemark.Append(message.Annex1Name);
                                            annexRemark.Append("x");
                                            annexRemark.Append(goods.Count);
                                            annexRemark.Append(";");
                                        }
                                    }
                                    if (place2 != -1)
                                    {
                                        ItemInfo goods = player.GetItemAt(bag2, place2);
                                        if (goods != null && !goods.IsBinds && !items.Contains(goods))
                                        {
                                            message.Annex2Name = goods.Template.Name;
                                            message.Annex2     = goods.ItemID.ToString();
                                            items.Add(goods);
                                            bagType.Add(bag2);
                                            index++;
                                            annexRemark.Append(index);
                                            annexRemark.Append("、");
                                            annexRemark.Append(message.Annex2Name);
                                            annexRemark.Append("x");
                                            annexRemark.Append(goods.Count);
                                            annexRemark.Append(";");
                                        }
                                    }
                                    if (place3 != -1)
                                    {
                                        ItemInfo goods = player.GetItemAt(bag3, place3);
                                        if (goods != null && !goods.IsBinds && !items.Contains(goods))
                                        {
                                            message.Annex3Name = goods.Template.Name;
                                            message.Annex3     = goods.ItemID.ToString();
                                            items.Add(goods);
                                            bagType.Add(bag3);
                                            index++;
                                            annexRemark.Append(index);
                                            annexRemark.Append("、");
                                            annexRemark.Append(message.Annex3Name);
                                            annexRemark.Append("x");
                                            annexRemark.Append(goods.Count);
                                            annexRemark.Append(";");
                                        }
                                    }
                                    if (place4 != -1)
                                    {
                                        ItemInfo goods = player.GetItemAt(bag4, place4);
                                        if (goods != null && !goods.IsBinds && !items.Contains(goods))
                                        {
                                            message.Annex4Name = goods.Template.Name;
                                            message.Annex4     = goods.ItemID.ToString();
                                            items.Add(goods);
                                            bagType.Add(bag4);
                                            index++;
                                            annexRemark.Append(index);
                                            annexRemark.Append("、");
                                            annexRemark.Append(message.Annex4Name);
                                            annexRemark.Append("x");
                                            annexRemark.Append(goods.Count);
                                            annexRemark.Append(";");
                                        }
                                    }
                                    if (isPay)
                                    {
                                        if (money <= 0 || (string.IsNullOrEmpty(message.Annex1) && string.IsNullOrEmpty(message.Annex2) && string.IsNullOrEmpty(message.Annex3) && string.IsNullOrEmpty(message.Annex4)))
                                        {
                                            result = 1;
                                            return(result);
                                        }
                                        message.ValidDate = ((validDate == 1) ? 1 : 6);
                                        message.Type      = 101;
                                        if (money > 0)
                                        {
                                            message.Money = money;
                                            index++;
                                            annexRemark.Append(index);
                                            annexRemark.Append("、");
                                            annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney", new object[0]));
                                            annexRemark.Append(money);
                                            annexRemark.Append(";");
                                        }
                                    }
                                    else
                                    {
                                        message.Type = 1;
                                        if (player.PlayerCharacter.Money >= money && money > 0)
                                        {
                                            message.Money = money;
                                            player.RemoveMoney(money, LogMoneyType.Mail, LogMoneyType.Mail_Send);
                                            index++;
                                            annexRemark.Append(index);
                                            annexRemark.Append("、");
                                            annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money", new object[0]));
                                            annexRemark.Append(money);
                                            annexRemark.Append(";");
                                        }
                                    }
                                    if (annexRemark.Length > 1)
                                    {
                                        message.AnnexRemark = annexRemark.ToString();
                                    }
                                    if (db.SendMail(message))
                                    {
                                        player.RemoveGold(100);
                                        for (int i = 0; i < items.Count; i++)
                                        {
                                            player.TakeOutItem(items[i]);
                                        }
                                    }
                                    player.SaveIntoDatabase();
                                    pkg.WriteBoolean(true);
                                    if (user.State != 0)
                                    {
                                        player.Out.SendMailResponse(user.ID, eMailRespose.Receiver);
                                    }
                                    player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Send);
                                }
                                else
                                {
                                    msg = "UserSendMailHandler.Failed1";
                                    pkg.WriteBoolean(false);
                                }
                            }
                            else
                            {
                                eMsg = eMessageType.ERROR;
                                msg  = "UserSendMailHandler.Failed2";
                                pkg.WriteBoolean(false);
                            }
                        }
                        else
                        {
                            eMsg = eMessageType.ERROR;
                            msg  = "UserSendMailHandler.Failed3";
                            pkg.WriteBoolean(false);
                        }
                    }
                    player.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg, new object[0]));
                    player.Out.SendTCP(pkg);
                    result = 0;
                }
            }
            return(result);
        }
Пример #28
0
 public PlayerInventory GetInventory(eBageType bageType)
 {
     switch (bageType)
     {
         case eBageType.MainBag:
             return m_mainBag;
         case eBageType.PropBag:
             return m_propBag;
         case eBageType.FightBag:
             return m_fightBag;
         case eBageType.TempBag:
             return m_tempBag;
         case eBageType.Bank:
             return m_storeBag;
         case eBageType.Store:
             return m_storeBag2;
         case eBageType.CaddyBag:
             return m_caddyBag;
         default:
             throw new NotSupportedException(string.Format("Did not support this type bag: {0}", bageType));
     }
 }
Пример #29
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn      gSPacketIn = new GSPacketIn(110, client.Player.PlayerCharacter.ID);
            bool            flag       = false;
            int             num        = packet.ReadInt();
            int             num2       = packet.ReadInt();
            List <ItemInfo> list       = new List <ItemInfo>();

            new List <ItemInfo>();
            List <eBageType> list2         = new List <eBageType>();
            StringBuilder    stringBuilder = new StringBuilder();
            int num3 = 25;

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.locked", new object[0]));
                return(1);
            }
            for (int i = 0; i < num2; i++)
            {
                eBageType eBageType = (eBageType)packet.ReadInt();
                int       place     = packet.ReadInt();
                ItemInfo  itemAt    = client.Player.GetItemAt(eBageType, place);
                if (itemAt != null)
                {
                    if (list.Contains(itemAt))
                    {
                        client.Out.SendMessage(eMessageType.Normal, "Bad Input");
                        return(1);
                    }
                    if (itemAt.IsBinds)
                    {
                        flag = true;
                    }
                    stringBuilder.Append(string.Concat(new object[]
                    {
                        itemAt.ItemID,
                        ":",
                        itemAt.TemplateID,
                        ","
                    }));
                    list.Add(itemAt);
                    list2.Add(eBageType);
                }
            }
            eBageType bagType = (eBageType)packet.ReadInt();
            int       place2  = packet.ReadInt();
            ItemInfo  itemAt2 = client.Player.GetItemAt(bagType, place2);

            if (itemAt2 != null)
            {
                stringBuilder.Append(string.Concat(new object[]
                {
                    itemAt2.ItemID,
                    ":",
                    itemAt2.TemplateID,
                    ","
                }));
            }
            eBageType bagType2 = (eBageType)packet.ReadInt();
            int       place3   = packet.ReadInt();
            ItemInfo  itemAt3  = client.Player.GetItemAt(bagType2, place3);
            bool      flag2    = itemAt3 != null;

            if (num2 != 4 || itemAt2 == null)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.ItemNotEnough", new object[0]));
                return(1);
            }
            bool flag3 = false;
            bool flag4 = false;

            if (num == 0)
            {
                ItemTemplateInfo itemTemplateInfo = RefineryMgr.Refinery(client.Player, list, itemAt2, flag2, num, ref flag3, ref num3, ref flag4);
                if (itemTemplateInfo != null)
                {
                    client.Out.SendRefineryPreview(client.Player, itemTemplateInfo.TemplateID, flag, itemAt2);
                }
                return(0);
            }
            int num4 = 10000;

            if (client.Player.PlayerCharacter.Gold > num4)
            {
                client.Player.RemoveGold(num4);
                ItemTemplateInfo itemTemplateInfo2 = RefineryMgr.Refinery(client.Player, list, itemAt2, flag2, num, ref flag3, ref num3, ref flag4);
                if (itemTemplateInfo2 != null && flag4 && flag3)
                {
                    stringBuilder.Append("Success");
                    flag3 = true;
                    if (flag3)
                    {
                        ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo2, 1, 114);
                        if (itemInfo != null)
                        {
                            client.Player.OnItemMelt(itemAt2.Template.CategoryID);
                            itemInfo.IsBinds = flag;
                            AbstractInventory itemInventory = client.Player.GetItemInventory(itemTemplateInfo2);
                            if (!itemInventory.AddItem(itemInfo, itemInventory.BeginSlot))
                            {
                                stringBuilder.Append("NoPlace");
                                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(itemInfo.GetBagName(), new object[0]) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace", new object[0]));
                            }
                            gSPacketIn.WriteByte(0);
                            itemAt2.Count--;
                            client.Player.UpdateItem(itemAt2);
                        }
                    }
                    else
                    {
                        stringBuilder.Append("false");
                    }
                }
                else
                {
                    gSPacketIn.WriteByte(1);
                }
                if (flag2)
                {
                    itemAt3.Count--;
                    client.Player.UpdateItem(itemAt3);
                }
                for (int j = 0; j < list.Count; j++)
                {
                    client.Player.UpdateItem(list[j]);
                    if (list[j].Count <= 0)
                    {
                        client.Player.RemoveItem(list[j]);
                    }
                }
                client.Player.RemoveItem(list[list.Count - 1]);
                client.Player.Out.SendTCP(gSPacketIn);
            }
            else
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.NoGold", new object[0]));
            }
            return(1);
        }
Пример #30
0
 public bool RemoveAt(eBageType bagType, int place)
 {
     PlayerInventory bag = GetInventory(bagType);
     if (bag != null)
     {
         return bag.RemoveItemAt(place);
     }
     else
     {
         return false;
     }
 }
Пример #31
0
        // <summary>
        // 修改:  Xiaov
        // 时间:  2009-11-7
        // 描述:  发送邮件<未测试>

        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.Gold < 100)
            {
                return(1);
            }



            string       msg  = "UserSendMailHandler.Success";
            eMessageType eMsg = eMessageType.Normal;
            GSPacketIn   pkg  = packet.Clone();

            pkg.ClearContext();

            string nickName  = packet.ReadString().Trim();
            string title     = packet.ReadString();
            string content   = packet.ReadString();
            bool   isPay     = packet.ReadBoolean();
            int    validDate = packet.ReadInt();
            int    money     = packet.ReadInt();

            eBageType bag1   = (eBageType)packet.ReadByte();
            int       place1 = packet.ReadInt();
            eBageType bag2   = (eBageType)packet.ReadByte();
            int       place2 = packet.ReadInt();
            eBageType bag3   = (eBageType)packet.ReadByte();
            int       place3 = packet.ReadInt();
            eBageType bag4   = (eBageType)packet.ReadByte();
            int       place4 = packet.ReadInt();

            if ((money != 0 || place1 != -1 || place2 != -1 || place3 != -1 || place4 != -1) && (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked))
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                pkg.WriteBoolean(false);
                client.Out.SendTCP(pkg);
                return(1);
            }

            using (PlayerBussiness db = new PlayerBussiness())
            {
                PlayerInfo user;
                GamePlayer player = Managers.WorldMgr.GetClientByPlayerNickName(nickName);
                if (player == null)
                {
                    user = db.GetUserSingleByNickName(nickName);
                }
                else
                {
                    user = player.PlayerCharacter;
                }

                if (user != null && !string.IsNullOrEmpty(nickName))
                {
                    if (user.NickName != client.Player.PlayerCharacter.NickName)
                    {
                        client.Player.SaveIntoDatabase();

                        //附件内容描述(例:邮件最后一行标注附件为:1、大喇叭x5;2、强化石4级x1;3、极•烈火x1;4、点券999999;5、强化公式-朱雀x5
                        MailInfo message = new MailInfo();
                        message.SenderID   = client.Player.PlayerCharacter.ID;
                        message.Sender     = client.Player.PlayerCharacter.NickName;
                        message.ReceiverID = user.ID;
                        message.Receiver   = user.NickName;
                        message.IsExist    = true;
                        message.Gold       = 0;
                        message.Money      = 0;

                        message.Title   = title;
                        message.Content = content;
                        List <ItemInfo>  items       = new List <ItemInfo>();
                        List <eBageType> bagType     = new List <eBageType>();
                        StringBuilder    annexRemark = new StringBuilder();
                        annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark"));
                        int index = 0;

                        if (place1 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag1, place1);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex1Name = goods.Template.Name;
                                message.Annex1     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag1);
                                //annexRemark = message.Annex1Name + "x" + goods.Count;
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                //annexRemark.Append(annexRemark.Length);
                                annexRemark.Append(message.Annex1Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                                //goods.UserID = 0;
                                //client.Player.RemoveAllItem(goods, true, ItemRemoveType.Mail);
                            }
                        }

                        if (place2 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag2, place2);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex2Name = goods.Template.Name;
                                message.Annex2     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag2);
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(message.Annex2Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                                //goods.UserID = 0;
                                //client.Player.RemoveAllItem(goods, true, ItemRemoveType.Mail);
                            }
                        }

                        if (place3 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag3, place3);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex3Name = goods.Template.Name;
                                message.Annex3     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag3);
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(message.Annex3Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                            }
                        }

                        if (place4 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag4, place4);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex4Name = goods.Template.Name;
                                message.Annex4     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag4);
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(message.Annex4Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                            }
                        }

                        if (isPay)
                        {
                            if (money <= 0 || (string.IsNullOrEmpty(message.Annex1) && string.IsNullOrEmpty(message.Annex2) && string.IsNullOrEmpty(message.Annex3) && string.IsNullOrEmpty(message.Annex4)))
                            {
                                return(1);
                            }

                            message.ValidDate = validDate == 1 ? 1 : 6;
                            message.Type      = (int)eMailType.Payment;
                            if (money > 0)
                            {
                                message.Money = money;
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney"));
                                annexRemark.Append(money);
                                annexRemark.Append(";");
                            }
                        }
                        else
                        {
                            message.Type = (int)eMailType.Common;
                            if (client.Player.PlayerCharacter.Money >= money && money > 0)
                            {
                                message.Money = money;
                                client.Player.RemoveMoney(money);
                                LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Send, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", "");
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money"));
                                annexRemark.Append(money);
                                annexRemark.Append(";");
                            }
                        }

                        if (annexRemark.Length > 1)
                        {
                            message.AnnexRemark = annexRemark.ToString();
                        }

                        if (db.SendMail(message))
                        {
                            client.Player.RemoveGold(100);
                            for (int i = 0; i < items.Count; i++)
                            {
                                items[i].UserID = 0;
                                client.Player.RemoveItem(items[i]);
                                items[i].IsExist = true;
                            }
                        }

                        client.Player.SaveIntoDatabase();
                        pkg.WriteBoolean(true);

                        //发送通知
                        if (user.State != 0)
                        {
                            client.Player.Out.SendMailResponse(user.ID, eMailRespose.Receiver);
                        }
                        client.Player.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Send);
                    }
                    else
                    {
                        msg = "UserSendMailHandler.Failed1";
                        pkg.WriteBoolean(false);
                    }
                }
                else
                {
                    eMsg = eMessageType.ERROR;
                    msg  = "UserSendMailHandler.Failed2";
                    pkg.WriteBoolean(false);
                }
            }
            client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg));
            client.Out.SendTCP(pkg);

            return(0);
        }
Пример #32
0
 public bool RemoveTempate(eBageType bagType, ItemTemplateInfo template, int count)
 {
     PlayerInventory bag = GetInventory(bagType);
     if (bag != null)
     {
         return bag.RemoveTemplate(template.TemplateID, count);
     }
     return false;
 }
Пример #33
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int result2;

            if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
            {
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result2 = 0;
            }
            else
            {
                StringBuilder payGoods = new StringBuilder();
                int           count    = packet.ReadInt();
                bool          istips   = true;
                for (int i = 0; i < count; i++)
                {
                    eBageType bag     = (eBageType)packet.ReadByte();
                    int       place   = packet.ReadInt();
                    int       goodsID = packet.ReadInt();
                    int       type    = (int)packet.ReadByte();
                    bool      isDress = packet.ReadBoolean();
                    if (bag == eBageType.MainBag || bag == eBageType.PropBag || bag == eBageType.Bank)
                    {
                        ItemInfo item = player.GetItemAt(bag, place);
                        if (item != null && item.ValidDate != 0 && !item.IsValidItem() && (bag == eBageType.MainBag || (bag == eBageType.PropBag && item.TemplateID == 10200)))
                        {
                            int          gold          = 0;
                            int          money         = 0;
                            int          offer         = 0;
                            int          gifttoken     = 0;
                            int          oldDate       = item.ValidDate;
                            int          oldCount      = item.Count;
                            bool         isValid       = item.IsValidItem();
                            List <int>   needitemsinfo = new List <int>();
                            ShopItemInfo shopitem      = ShopMgr.GetShopItemInfoById(goodsID);
                            needitemsinfo = ShopMgr.GetShopItemBuyConditions(shopitem, type, ref gold, ref money, ref offer, ref gifttoken);
                            int  icount = player.MainBag.GetItems().Count;
                            bool result = true;
                            for (int j = 0; j < needitemsinfo.Count; j += 2)
                            {
                                if (player.GetItemCount(needitemsinfo[j]) < needitemsinfo[j + 1])
                                {
                                    result = false;
                                }
                            }
                            if (!result)
                            {
                                eMessageType eMsg = eMessageType.ERROR;
                                string       msg  = "UserBuyItemHandler.NoBuyItem";
                                player.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg, new object[0]));
                                result2 = 1;
                                return(result2);
                            }
                            if (gold <= player.PlayerCharacter.Gold && money <= player.PlayerCharacter.Money && offer <= player.PlayerCharacter.Offer && gifttoken <= player.PlayerCharacter.GiftToken)
                            {
                                player.RemoveMoney(money, LogMoneyType.Shop, LogMoneyType.Shop_Continue);
                                player.RemoveGold(gold);
                                player.RemoveOffer(offer);
                                player.RemoveGiftToken(gifttoken);
                                for (int j = 0; j < needitemsinfo.Count; j += 2)
                                {
                                    player.RemoveTemplate(needitemsinfo[j], needitemsinfo[j + 1], eItemRemoveType.ShoppingForContinue);
                                    payGoods.Append(needitemsinfo[j].ToString() + ":");
                                }
                                if (!isValid && item.ValidDate != 0)
                                {
                                    if (1 == type)
                                    {
                                        item.ValidDate = shopitem.AUnit;
                                        item.BeginDate = DateTime.Now;
                                        item.IsUsed    = true;
                                    }
                                    if (2 == type)
                                    {
                                        item.ValidDate = shopitem.BUnit;
                                        item.BeginDate = DateTime.Now;
                                        item.IsUsed    = true;
                                    }
                                    if (3 == type)
                                    {
                                        item.ValidDate = shopitem.CUnit;
                                        item.BeginDate = DateTime.Now;
                                        item.IsUsed    = true;
                                    }
                                }
                                if (bag == eBageType.MainBag)
                                {
                                    player.MainBag.UpdateItem(item);
                                }
                                else
                                {
                                    if (bag == eBageType.PropBag)
                                    {
                                        player.PropBag.UpdateItem(item);
                                    }
                                    else
                                    {
                                        player.StoreBag.UpdateItem(item);
                                    }
                                }
                                //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, player.PlayerCharacter.ID, money, gold, gifttoken, offer, "", item.TemplateID, 6, item.Count);
                            }
                            else
                            {
                                if (money <= player.PlayerCharacter.Money)
                                {
                                    istips         = false;
                                    item.ValidDate = oldDate;
                                    item.Count     = oldCount;
                                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.NoMoney", new object[0]));
                                }
                                else
                                {
                                    if (gifttoken <= player.PlayerCharacter.GiftToken)
                                    {
                                        istips         = false;
                                        item.ValidDate = oldDate;
                                        item.Count     = oldCount;
                                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.NoMoney", new object[0]));
                                    }
                                }
                            }
                        }
                    }
                }
                if (istips)
                {
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.Success", new object[0]));
                }
                result2 = 0;
            }
            return(result2);
        }
Пример #34
0
        public bool AddTemplate(ItemInfo cloneItem, eBageType bagType, int count)
        {
            PlayerInventory bag = GetInventory(bagType);
            if (bag != null)
            {
                // cloneItem.IsBinds = cloneItem.Template.BindType == 1;
                if (bag.AddTemplate(cloneItem, count))
                {

                    if (CurrentRoom != null && CurrentRoom.IsPlaying) SendItemNotice(cloneItem);
                    return true;
                }
            }
            return false;
        }
Пример #35
0
        public void SendPlayerAddTemplate(int playerId, ItemInfo cloneItem, eBageType bagType, int count)
        {
            if (cloneItem != null)
            {
                GSPacketIn pkg = new GSPacketIn((byte)eFightPackageType.PLAYER_ADD_TEMPLATE1, playerId);
                pkg.WriteInt(cloneItem.TemplateID);
                pkg.WriteByte((byte)bagType);
                pkg.WriteInt(count);
                pkg.WriteInt(cloneItem.ValidDate);
                pkg.WriteBoolean(cloneItem.IsBinds);
                pkg.WriteBoolean(cloneItem.IsUsed);
                SendTCP(pkg);
            }

        }
Пример #36
0
 public PlayerInventory GetInventory(eBageType bageType)
 {
     switch (bageType)
     {
         case eBageType.MainBag:
             return m_mainBag;
         case eBageType.PropBag:
             return m_propBag;
         case eBageType.FightBag:
             return m_fightBag;
         case eBageType.TempBag:
             return m_tempBag;
         case eBageType.Bank:
             return m_storeBag;
         case eBageType.Store:
             return m_storeBag2;
         case eBageType.CaddyBag:
             return m_caddyBag;
         case eBageType.FARM:
             return m_farm;
         case eBageType.VEGETABLE:
             return m_vegetable;
         case eBageType.FOOD:
             return m_food;
         case eBageType.PETEGG:
             return m_petEgg;
         default:
             throw new NotSupportedException(string.Format("Did not support this type bag: {0}", bageType));
     }
 }
Пример #37
0
 public bool AddTemplate(ItemInfo cloneItem, eBageType bagType, int count)
 {
     m_client.SendPlayerAddTemplate(m_character.ID, cloneItem, bagType, count);
     return true;
 }
Пример #38
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            eBageType           bagType   = (eBageType)packet.ReadInt();
            int                 place     = packet.ReadInt();
            eBageType           bagType2  = (eBageType)packet.ReadInt();
            List <ShopItemInfo> list      = new List <ShopItemInfo>();
            int                 num       = packet.ReadInt();
            int                 operation = packet.ReadInt();
            ItemInfo            itemInfo;

            if (num == -1)
            {
                packet.ReadInt();
                int num2 = packet.ReadInt();
                int num3 = 0;
                int num4 = 0;
                ItemTemplateInfo goods = ItemMgr.FindItemTemplate(34101);
                itemInfo = ItemInfo.CreateFromTemplate(goods, 1, 102);
                list     = ShopMgr.FindShopbyTemplatID(34101);
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i].APrice1 == -1 && list[i].AValue1 != 0)
                    {
                        num4 = list[i].AValue1;
                        itemInfo.ValidDate = list[i].AUnit;
                    }
                }
                if (itemInfo != null)
                {
                    if (num3 <= client.Player.PlayerCharacter.Gold && num4 <= client.Player.PlayerCharacter.Money)
                    {
                        client.Player.RemoveMoney(num4);
                        client.Player.RemoveGold(num3);
                        LogMgr.LogMoneyAdd(LogMoneyType.Item, LogMoneyType.Item_Move, client.Player.PlayerCharacter.ID, num4, client.Player.PlayerCharacter.Money, num3, 0, 0, 0, "牌子编号", itemInfo.TemplateID.ToString(), num2.ToString());
                    }
                    else
                    {
                        itemInfo = null;
                    }
                }
            }
            else
            {
                itemInfo = client.Player.GetItemAt(bagType2, num);
            }
            ItemInfo      itemAt        = client.Player.GetItemAt(bagType, place);
            StringBuilder stringBuilder = new StringBuilder();

            if (itemInfo == null || itemAt == null)
            {
                return(1);
            }
            bool             flag             = false;
            ItemTemplateInfo itemTemplateInfo = RefineryMgr.RefineryTrend(operation, itemAt, ref flag);

            if (flag && itemTemplateInfo != null)
            {
                ItemInfo          itemInfo2     = ItemInfo.CreateFromTemplate(itemTemplateInfo, 1, 115);
                AbstractInventory itemInventory = client.Player.GetItemInventory(itemTemplateInfo);
                if (itemInventory.AddItem(itemInfo2, itemInventory.BeginSlot))
                {
                    client.Player.UpdateItem(itemInfo2);
                    client.Player.RemoveItem(itemAt);
                    itemInfo.Count--;
                    client.Player.UpdateItem(itemInfo);
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Success", new object[0]));
                }
                else
                {
                    stringBuilder.Append("NoPlace");
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(itemInfo2.GetBagName(), new object[0]) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace", new object[0]));
                }
                return(1);
            }
            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Fail", new object[0]));
            return(1);
        }