public static void GetWanmotaSweepReward(GameClient client, int nFubenID) { FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(nFubenID, nFubenID); if (null != fuBenMapItem) { List <GoodsData> goodNormal = new List <GoodsData>(); List <int> goodsID = new List <int>(); WanMotaCopySceneManager.GetFubenItemReward(client, fuBenMapItem, false, goodNormal, goodsID); if (null == client.ClientData.LayerRewardData) { client.ClientData.LayerRewardData = new LayerRewardData(); } if (WanMotaCopySceneManager.IsWanMoTaMapCode(nFubenID)) { List <SingleLayerRewardData> listRewardData = null; SingleLayerRewardData layerReward = WanMotaCopySceneManager.AddSingleSweepReward(client, goodNormal, nFubenID - WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + 1, fuBenMapItem.Experience, fuBenMapItem.Money1, fuBenMapItem.nXingHunAward, out listRewardData); SweepWanMotaManager.UpdataSweepInfo(client, listRewardData); lock (client.ClientData.LayerRewardData) { client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Add(layerReward); } } } }
private void Sweeping(object source, ElapsedEventArgs e) { lock (this.sweepClient) { WanMotaCopySceneManager.GetWanmotaSweepReward(this.sweepClient, WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + this.nSweepingOrder - 1); this.nSweepingOrder++; if (this.nSweepingOrder > this.nSweepingMaxOrder) { this.StopSweeping(); List <SingleLayerRewardData> listRewardData = SweepWanMotaManager.SummarySweepRewardInfo(this.sweepClient); List <SingleLayerRewardData> WanMoTaLayerRewardList = this.sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList; this.sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = listRewardData; if (-1 == WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(this.sweepClient, 0)) { LogManager.WriteLog(LogTypes.Error, "扫荡奖励汇总后,写到数据库失败", null, true); this.sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = WanMoTaLayerRewardList; } else { this.sweepClient.ClientData.WanMoTaProp.nSweepLayer = 0; SweepWanMotaManager.UpdataSweepInfo(this.sweepClient, listRewardData); } } else { this.sweepClient.ClientData.WanMoTaProp.nSweepLayer = this.nSweepingOrder; WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(this.sweepClient, this.sweepClient.ClientData.WanMoTaProp.nSweepLayer); } } }
/// <summary> /// 获取万魔塔信息并缓存到本地 /// </summary> /// <param name="mapCode"></param> /// <returns></returns> public static WanMotaInfo GetWanMoTaDetail(GameClient client, bool bIsLogin) { WanMotaInfo dataWanMoTa = null; // 在扫荡状态,不向数据库请求万魔塔数据 if (1 == WanmotaIsSweeping(client)) { //获取玩家竞技场数据 dataWanMoTa = Global.sendToDB <WanMotaInfo>((int)TCPGameServerCmds.CMD_DB_GET_WANMOTA_DETAIL, DataHelper.ObjectToBytes <int>(client.ClientData.RoleID)); client.ClientData.WanMoTaProp = dataWanMoTa; } else { dataWanMoTa = client.ClientData.WanMoTaProp; } if (null != dataWanMoTa) { if (bIsLogin) { if (null != client.ClientData.WanMoTaProp) { byte[] bytes = Convert.FromBase64String(client.ClientData.WanMoTaProp.strSweepReward); client.ClientData.LayerRewardData = DataHelper.BytesToObject <LayerRewardData>(bytes, 0, bytes.Length); } } else { // 选10条奖励信息发送到客户端 if (null != client.ClientData.LayerRewardData) { lock (client.ClientData.LayerRewardData) { if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 0) { int nBeginIndex = 0; if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 10) { nBeginIndex = client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count - 10; } List <SingleLayerRewardData> listRewardData = new List <SingleLayerRewardData>(); for (int i = nBeginIndex; i < client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count; i++) { listRewardData.Add(client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i]); } SweepWanMotaManager.UpdataSweepInfo(client, listRewardData); } } } } } return(dataWanMoTa); }
public static WanMotaInfo GetWanMoTaDetail(GameClient client, bool bIsLogin) { WanMotaInfo dataWanMoTa = null; if (1 == WanMotaCopySceneManager.WanmotaIsSweeping(client)) { dataWanMoTa = Global.sendToDB <WanMotaInfo, byte[]>(10159, DataHelper.ObjectToBytes <int>(client.ClientData.RoleID), client.ServerId); client.ClientData.WanMoTaProp = dataWanMoTa; } else { dataWanMoTa = client.ClientData.WanMoTaProp; } if (null != dataWanMoTa) { if (bIsLogin) { if (null != client.ClientData.WanMoTaProp) { byte[] bytes = Convert.FromBase64String(client.ClientData.WanMoTaProp.strSweepReward); client.ClientData.LayerRewardData = DataHelper.BytesToObject <LayerRewardData>(bytes, 0, bytes.Length); } } else if (null != client.ClientData.LayerRewardData) { lock (client.ClientData.LayerRewardData) { if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 0) { int nBeginIndex = 0; if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 10) { nBeginIndex = client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count - 10; } List <SingleLayerRewardData> listRewardData = new List <SingleLayerRewardData>(); for (int i = nBeginIndex; i < client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count; i++) { listRewardData.Add(client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i]); } SweepWanMotaManager.UpdataSweepInfo(client, listRewardData); } } } } return(dataWanMoTa); }
/// <summary> /// 每2秒扫荡一层万魔塔 /// </summary> private void Sweeping(object source, ElapsedEventArgs e) { lock (sweepClient) { WanMotaCopySceneManager.GetWanmotaSweepReward(sweepClient, WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + nSweepingOrder - 1); nSweepingOrder++; if (nSweepingOrder > nSweepingMaxOrder) { // 扫荡完成 StopSweeping(); // 将奖励汇总 List <SingleLayerRewardData> listRewardData = SweepWanMotaManager.SummarySweepRewardInfo(sweepClient); List <SingleLayerRewardData> WanMoTaLayerRewardList = sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList; // 汇总后用汇总奖励代替各层奖励 sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = listRewardData; // 如果更新失败,还原 if (-1 == WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(sweepClient, 0)) { // 扫荡奖励汇总后,写到数据库失败 LogManager.WriteLog(LogTypes.Error, "扫荡奖励汇总后,写到数据库失败"); sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = WanMoTaLayerRewardList; } // 成功,发送到客户端 else { sweepClient.ClientData.WanMoTaProp.nSweepLayer = 0; SweepWanMotaManager.UpdataSweepInfo(sweepClient, listRewardData); WanMoTaLayerRewardList = null; } } else { sweepClient.ClientData.WanMoTaProp.nSweepLayer = nSweepingOrder; WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(sweepClient, sweepClient.ClientData.WanMoTaProp.nSweepLayer); } } }
public static List <SingleLayerRewardData> SummarySweepRewardInfo(GameClient client) { List <SingleLayerRewardData> listRewardData = null; List <SingleLayerRewardData> result; if (client.ClientData.LayerRewardData == null || client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count < 1) { result = listRewardData; } else { int nExp = 0; int nMoney = 0; int nXinHun = 0; List <GoodsData> rewardList = new List <GoodsData>(); lock (client.ClientData.LayerRewardData) { for (int i = 0; i < client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count; i++) { nExp += client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].nExp; nMoney += client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].nMoney; nXinHun += client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].nXinHun; if (null != client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].sweepAwardGoodsList) { for (int j = 0; j < client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].sweepAwardGoodsList.Count; j++) { SweepWanMotaManager.CombineGoodList(rewardList, client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].sweepAwardGoodsList[j]); } } } SingleLayerRewardData layerReward = WanMotaCopySceneManager.AddSingleSweepReward(client, rewardList, 0, nExp, nMoney, nXinHun, out listRewardData); } result = listRewardData; } return(result); }