public static GoodsData GiveOneMeditateGood(GameClient client) { int packageID = Global.GetMingXiangPackageID(client); GoodsData result; if (0 == packageID) { result = null; } else { List <GoodsData> AwardGoodsList = GoodsBaoXiang.FetchGoodListBaseFallPacketID(client, packageID, 1, FallAlgorithm.BaoXiang); if (AwardGoodsList == null || AwardGoodsList.Count == 0) { result = null; } else { GoodsData tmpGoodsData = AwardGoodsList[0]; tmpGoodsData.Site = 1; int dbRet = GoodsUtil.AddGoodsDBCommand(client, tmpGoodsData, false, 0, "冥想", true); tmpGoodsData.Id = dbRet; int totalTime = Global.GetRoleParamsInt32FromDB(client, "MeditateTime"); EventLogManager.AddRoleMeditateEvent(client, (long)(totalTime / 1000), GoodsUtil.GetMeditateBagGoodsCnt(client), Global.NewGoodsDataPropString(tmpGoodsData)); result = tmpGoodsData; } } return(result); }
public void GiveAwards(WanMoXiaGuScene scene) { try { FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(scene.CopyMapInfo.FubenMapID, scene.MapID); if (fuBenMapItem != null) { int usedSecs = (int)(scene.EndTime - scene.BeginTime); int zhanLi = 0; List <GameClient> objsList = scene.CopyMapInfo.GetClientsList().Distinct <GameClient>().ToList <GameClient>(); if (objsList != null && objsList.Count > 0) { for (int i = 0; i < objsList.Count; i++) { GameClient client = objsList[i]; if (client != null && client == GameManager.ClientMgr.FindClient(client.ClientData.RoleID)) { zhanLi += client.ClientData.CombatForce; long nExp = (long)fuBenMapItem.Experience; int money = fuBenMapItem.Money1; int idx = this.RuntimeData.AwardList.Count - 1; int mul = this.RuntimeData.AwardList[idx][1]; for (int j = 0; j <= idx; j++) { if (usedSecs <= this.RuntimeData.AwardList[j][0]) { mul = this.RuntimeData.AwardList[j][1]; break; } } if (nExp > 0L) { GameManager.ClientMgr.ProcessRoleExperience(client, nExp, false, true, false, "万魔峡谷通关奖励"); } if (money > 0) { GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, money, "万魔峡谷通关奖励", true); } List <GoodsData> goodsList = new List <GoodsData>(); if (null != fuBenMapItem.GoodsDataList) { for (int k = 0; k < fuBenMapItem.GoodsDataList.Count; k++) { GoodsData goodsData = new GoodsData(fuBenMapItem.GoodsDataList[k]); goodsData.GCount *= mul; goodsList.Add(goodsData); } } if (goodsList.Count > 0) { if (Global.CanAddGoodsDataList(client, goodsList)) { foreach (GoodsData goodsData in goodsList) { GoodsUtil.AddGoodsDBCommand(client, goodsData, true, 1, "万魔峡谷通关奖励", true); } } else { Global.UseMailGivePlayerAward2(client, goodsList, GLang.GetLang(4000, new object[0]), GLang.GetLang(4001, new object[0]), 0, 0, 0); } } WanMoXiaGuAwardsData awardsData = new WanMoXiaGuAwardsData { Success = scene.Success, UsedSecs = usedSecs, Exp = nExp, Money = money, AwardsGoods = goodsList }; client.sendCmd <WanMoXiaGuAwardsData>(1267, awardsData, false); Global.UpdateFuBenDataForQuickPassTimer(client, scene.CopyMapInfo.FubenMapID, 0, 1); } } } if (objsList != null && objsList.Count > 0) { int roleCount = objsList.Count; zhanLi /= roleCount; } } } catch (Exception ex) { DataHelper.WriteExceptionLogEx(ex, "【万魔峡谷】清场调度异常"); } }