예제 #1
0
        public static GoodsData AddDamonGoodsData(GameClient client, int id, int goodsID, int forgeLevel, int quality, int goodsNum, int binding, int site, string jewelList, string endTime, int addPropIndex, int bornIndex, int lucky, int strong, int ExcellenceProperty, int nAppendPropLev, int nEquipChangeLife)
        {
            GoodsData gd = new GoodsData
            {
                Id                    = id,
                GoodsID               = goodsID,
                Using                 = 0,
                Forge_level           = forgeLevel,
                Starttime             = "1900-01-01 12:00:00",
                Endtime               = endTime,
                Site                  = site,
                Quality               = quality,
                Props                 = "",
                GCount                = goodsNum,
                Binding               = binding,
                Jewellist             = jewelList,
                BagIndex              = 0,
                AddPropIndex          = addPropIndex,
                BornIndex             = bornIndex,
                Lucky                 = lucky,
                Strong                = strong,
                ExcellenceInfo        = ExcellenceProperty,
                AppendPropLev         = nAppendPropLev,
                ChangeLifeLevForEquip = nEquipChangeLife
            };

            DamonMgr.AddDamonGoodsData(client, gd, true);
            return(gd);
        }
예제 #2
0
 public static void InitDemonGoodsDataList(GameClient client)
 {
     if (null == client.ClientData.DamonGoodsDataList)
     {
         client.ClientData.DamonGoodsDataList = Global.sendToDB <List <GoodsData>, string>(204, string.Format("{0}:{1}", client.ClientData.RoleID, 5000), client.ServerId);
         if (client.ClientData.DamonGoodsDataList == null || client.ClientData.DamonGoodsDataList.Count == 0)
         {
             client.ClientData.DamonGoodsDataList = new List <GoodsData>();
             DamonMgr.AddOldDamonGoodsData(client);
         }
     }
     JingLingQiYuanManager.getInstance().RefreshProps(client, true);
 }
예제 #3
0
파일: DamonMgr.cs 프로젝트: chenchungit/ky
        /// <summary>
        /// 初始化列表
        /// </summary>
        public static void InitDemonGoodsDataList(GameClient client)
        {
            if (null == client.ClientData.DamonGoodsDataList)
            {
                client.ClientData.DamonGoodsDataList = Global.sendToDB <List <GoodsData>, string>((int)TCPGameServerCmds.CMD_GETGOODSLISTBYSITE, string.Format("{0}:{1}", client.ClientData.RoleID, (int)SaleGoodsConsts.UsingDemonGoodsID), client.ServerId);

                //这样做能够保证gamedb的请求每次客户端登录后最多一次
                if (null == client.ClientData.DamonGoodsDataList || client.ClientData.DamonGoodsDataList.Count == 0)
                {
                    client.ClientData.DamonGoodsDataList = new List <GoodsData>();
                    DamonMgr.AddOldDamonGoodsData(client);
                }
            }

            JingLingQiYuanManager.getInstance().RefreshProps(client);
        }
예제 #4
0
        public static bool CanAddGoodsToDamonCangKu(GameClient client, int goodsID, int newGoodsNum, int binding, string endTime = "1900-01-01 12:00:00", bool canUseOld = true)
        {
            bool result;

            if (client.ClientData.DamonGoodsDataList == null)
            {
                result = true;
            }
            else
            {
                int gridNum = Global.GetGoodsGridNumByID(goodsID);
                gridNum = Global.GMax(gridNum, 1);
                bool findOldGrid  = false;
                int  totalGridNum = 0;
                lock (client.ClientData.DamonGoodsDataList)
                {
                    for (int i = 0; i < client.ClientData.DamonGoodsDataList.Count; i++)
                    {
                        totalGridNum++;
                        if (canUseOld && gridNum > 1)
                        {
                            if (client.ClientData.DamonGoodsDataList[i].GoodsID == goodsID && client.ClientData.DamonGoodsDataList[i].Binding == binding && Global.DateTimeEqual(client.ClientData.DamonGoodsDataList[i].Endtime, endTime))
                            {
                                if (client.ClientData.DamonGoodsDataList[i].GCount + newGoodsNum <= gridNum)
                                {
                                    findOldGrid = true;
                                    break;
                                }
                            }
                        }
                    }
                }
                if (findOldGrid)
                {
                    result = true;
                }
                else
                {
                    int totalMaxGridCount = DamonMgr.GetDamonBagCapacity(client);
                    result = (totalGridNum < totalMaxGridCount);
                }
            }
            return(result);
        }
예제 #5
0
        public static void AddOldDamonGoodsData(GameClient client)
        {
            if (null != client.ClientData.GoodsDataList)
            {
                List <GoodsData> listDamon = new List <GoodsData>();
                int i = 0;
                while (i < client.ClientData.GoodsDataList.Count)
                {
                    int nCategories = Global.GetGoodsCatetoriy(client.ClientData.GoodsDataList[i].GoodsID);
                    if (nCategories >= 9 && nCategories <= 10)
                    {
                        if (client.ClientData.GoodsDataList[i].Using > 0 && client.ClientData.GoodsDataList[i].Site == 0)
                        {
                            int      nBagIndex = Global.GetIdleSlotOfDamonGoods(client);
                            string[] dbFields  = null;
                            string   strcmd    = Global.FormatUpdateDBGoodsStr(new object[]
                            {
                                client.ClientData.RoleID,
                                client.ClientData.GoodsDataList[i].Id,
                                client.ClientData.GoodsDataList[i].Using,
                                "*",
                                "*",
                                "*",
                                5000,
                                "*",
                                "*",
                                client.ClientData.GoodsDataList[i].GCount,
                                "*",
                                nBagIndex,
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*"
                            });
                            TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer(TCPClientPool.getInstance(), TCPOutPacketPool.getInstance(), 10006, strcmd, out dbFields, client.ServerId);
                            if (dbRequestResult != TCPProcessCmdResults.RESULT_FAILED)
                            {
                                if (dbFields.Length > 0 && Convert.ToInt32(dbFields[1]) >= 0)
                                {
                                    DamonMgr.AddDamonGoodsData(client, client.ClientData.GoodsDataList[i], false);
                                    client.ClientData.GoodsDataList[i].Site     = 5000;
                                    client.ClientData.GoodsDataList[i].BagIndex = nBagIndex;
                                    listDamon.Add(client.ClientData.GoodsDataList[i]);
                                }
                            }
                        }
                    }
IL_2AC:
                    i++;
                    continue;
                    goto IL_2AC;
                }
                for (i = 0; i < listDamon.Count; i++)
                {
                    Global.RemoveGoodsData(client, listDamon[i]);
                }
                JingLingQiYuanManager.getInstance().RefreshProps(client, true);
            }
        }