private int GiveSweepReward(GameClient client) { int result; if (client.ClientData.LayerRewardData == null || client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count != 1) { result = -1; } else { int nExp = 0; int nMoney = 0; int nXinHun = 0; List <GoodsData> rewardList = null; lock (client.ClientData.LayerRewardData) { nExp = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].nExp; nMoney = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].nMoney; nXinHun = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].nXinHun; rewardList = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].sweepAwardGoodsList; client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Clear(); } WanMotaCopySceneManager.AddRewardToClient(client, rewardList, nExp, nMoney, nXinHun, "万魔塔扫荡奖励"); result = 0; } return(result); }
public bool processCmd(Logic.GameClient client, string[] cmdParams) { int nID = (int)TCPGameServerCmds.CMD_SPR_GET_WANMOTA_DETAIL; int nRoleID = Global.SafeConvertToInt32(cmdParams[0]); string strCmd = ""; WanMotaInfo data = WanMotaCopySceneManager.GetWanMoTaDetail(client, false); if (null == data) { strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", -1, nRoleID, 0, 0, 0, 0, 0); client.sendCmd(nID, strCmd); return(true); } else { strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", 0, nRoleID, data.nPassLayerCount, data.nTopPassLayerCount, SweepWanMotaManager.GetSweepCount(client), data.nSweepLayer, WanMotaCopySceneManager.WanmotaIsSweeping(client)); if (WanMoTaTopLayer < data.nTopPassLayerCount) { WanMoTaTopLayer = data.nTopPassLayerCount; } client.sendCmd(nID, strCmd); return(true); } }
public static bool IsInCopyTimesLimit(GameClient client, SystemXmlItem fubenItem) { bool result; if (client == null || fubenItem == null) { result = false; } else { int copyId = fubenItem.GetIntValue("ID", -1); if (WanMotaCopySceneManager.IsWanMoTaMapCode(copyId)) { result = true; } else { int maxEnterNum = fubenItem.GetIntValue("EnterNumber", -1); int maxFinishNum = fubenItem.GetIntValue("FinishNumber", -1); int hadFinishNum; int hadEnterNum = Global.GetFuBenEnterNum(Global.GetFuBenData(client, copyId), out hadFinishNum); if (maxEnterNum <= 0 && maxFinishNum <= 0) { result = true; } else { int[] nAddNum; if (Global.IsInExperienceCopyScene(copyId)) { nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinYanFuBenNum", ','); } else if (copyId == 5100) { nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinBiFuBenNum", ','); } else { nAddNum = null; } int extAddNum = 0; int nVipLev = client.ClientData.VipLevel; if (nVipLev > 0 && nVipLev <= VIPEumValue.VIPENUMVALUE_MAXLEVEL && nAddNum != null && nAddNum.Length > nVipLev) { extAddNum = nAddNum[nVipLev]; } result = ((maxEnterNum <= 0 || hadEnterNum < maxEnterNum + extAddNum) && (maxFinishNum <= 0 || hadFinishNum < maxFinishNum + extAddNum)); } } } return(result); }
public bool processCmd(GameClient client, string[] cmdParams) { int nID = 618; int nRoleID = Global.SafeConvertToInt32(cmdParams[0]); WanMotaInfo data = WanMotaCopySceneManager.GetWanMoTaDetail(client, false); bool result; if (null == data) { string strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", new object[] { -1, nRoleID, 0, 0, 0, 0, 0 }); client.sendCmd(nID, strCmd, false); result = true; } else { if (data.nPassLayerCount != client.ClientData.WanMoTaNextLayerOrder) { LogManager.WriteLog(LogTypes.Error, string.Format("角色roleid={0} 万魔塔层数不一致 nPassLayerCount={1}, WanMoTaNextLayerOrder={2}", client.ClientData.RoleID, data.nPassLayerCount, client.ClientData.WanMoTaNextLayerOrder), null, true); client.ClientData.WanMoTaNextLayerOrder = data.nPassLayerCount; GameManager.ClientMgr.SaveWanMoTaPassLayerValue(client, data.nPassLayerCount, true); } string strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", new object[] { 0, nRoleID, data.nPassLayerCount, data.nTopPassLayerCount, SweepWanMotaManager.GetSweepCount(client), data.nSweepLayer, WanMotaCopySceneManager.WanmotaIsSweeping(client) }); SingletonTemplate <WanMoTaTopLayerManager> .Instance().CheckNeedUpdate(data.nTopPassLayerCount); client.sendCmd(nID, strCmd, false); result = true; } return(result); }
public bool processCmd(Logic.GameClient client, string[] cmdParams) { int nID = (int)TCPGameServerCmds.CMD_SPR_GET_WANMOTA_DETAIL; int nRoleID = Global.SafeConvertToInt32(cmdParams[0]); string strCmd = ""; WanMotaInfo data = WanMotaCopySceneManager.GetWanMoTaDetail(client, false); if (null == data) { strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", -1, nRoleID, 0, 0, 0, 0, 0); client.sendCmd(nID, strCmd); return(true); } else { if (data.nPassLayerCount != client.ClientData.WanMoTaNextLayerOrder) { LogManager.WriteLog(LogTypes.Error, string.Format("角色roleid={0} 万魔塔层数不一致 nPassLayerCount={1}, WanMoTaNextLayerOrder={2}", client.ClientData.RoleID, data.nPassLayerCount, client.ClientData.WanMoTaNextLayerOrder)); client.ClientData.WanMoTaNextLayerOrder = data.nPassLayerCount; //WanMoTaDBCommandManager.LayerChangeDBCommand(client, data.nPassLayerCount); GameManager.ClientMgr.SaveWanMoTaPassLayerValue(client, data.nPassLayerCount, true); } strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", 0, nRoleID, data.nPassLayerCount, data.nTopPassLayerCount, SweepWanMotaManager.GetSweepCount(client), data.nSweepLayer, WanMotaCopySceneManager.WanmotaIsSweeping(client)); // modify by chenjingui. 20150717,解决多线程操作问题 // 其实应该在GameServer启动的时候,加载一次万魔塔最高通关,暂时先按照原有方式 WanMoTaTopLayerManager.Instance().CheckNeedUpdate(data.nTopPassLayerCount); /* * if (WanMoTaTopLayer < data.nTopPassLayerCount) * { * WanMoTaTopLayer = data.nTopPassLayerCount; * }*/ client.sendCmd(nID, strCmd); return(true); } }
/// <summary> /// 是否满足副本的进入次数和完成次数限制 /// </summary> public static bool IsInCopyTimesLimit(GameClient client, SystemXmlItem fubenItem) { if (client == null || fubenItem == null) { return(false); } int copyId = fubenItem.GetIntValue("ID"); if (WanMotaCopySceneManager.IsWanMoTaMapCode(copyId)) { // 万魔塔的挑战次数没有限制 return(true); } int maxEnterNum = fubenItem.GetIntValue("EnterNumber"); int maxFinishNum = fubenItem.GetIntValue("FinishNumber"); int hadFinishNum; int hadEnterNum = Global.GetFuBenEnterNum(Global.GetFuBenData(client, copyId), out hadFinishNum); if (maxEnterNum <= 0 && maxFinishNum <= 0) { // 没有次数限制 return(true); } // VIP 对金币副本和经验副本有次数加成 // 血色城堡和万兽场不在这里判断 int[] nAddNum = null; if (Global.IsInExperienceCopyScene(copyId)) { nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinYanFuBenNum"); } else if (copyId == (int)GoldCopySceneEnum.GOLDCOPYSCENEMAPCODEID) { nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinBiFuBenNum"); } else { nAddNum = null; } int extAddNum = 0; int nVipLev = client.ClientData.VipLevel; if (nVipLev > 0 && nVipLev <= (int)VIPEumValue.VIPENUMVALUE_MAXLEVEL && nAddNum != null && nAddNum.Length > nVipLev) { extAddNum = nAddNum[nVipLev]; } // 注:最大进入次数和最大完成次数实际只会配置一个,但是这里不做特殊处理,两个都检查一下 if (maxEnterNum > 0 && hadEnterNum >= maxEnterNum + extAddNum) { return(false); } if (maxFinishNum > 0 && hadFinishNum >= maxFinishNum + extAddNum) { return(false); } return(true); }