private static void InitBuChangDict() { lock (BuChangManager._BuChangItemDict) { BuChangManager._BuChangItemDict.Clear(); } foreach (SystemXmlItem systemBuChangItem in GameManager.SystemBuChang.SystemXmlItemDict.Values) { BuChangItem buChangItem = new BuChangItem { MinLevel = systemBuChangItem.GetIntValue("MinLevel", -1), MinZhuanSheng = systemBuChangItem.GetIntValue("MinZhuanSheng", -1), MaxLevel = systemBuChangItem.GetIntValue("MaxLevel", -1), MaxZhuanSheng = systemBuChangItem.GetIntValue("MaxZhuanSheng", -1), Experience = Math.Max(0L, (long)systemBuChangItem.GetDoubleValue("AwardExp")), MoJing = Math.Max(0, systemBuChangItem.GetIntValue("MoJing", -1)), GoodsDataList = BuChangManager.ParseGoodsDataList(systemBuChangItem.GetStringValue("Goods")) }; int minUnionLevel = Global.GetUnionLevel(buChangItem.MinZhuanSheng, buChangItem.MinLevel, false); int maxUnionLevel = Global.GetUnionLevel(buChangItem.MaxZhuanSheng, buChangItem.MaxLevel, false); lock (BuChangManager._BuChangItemDict) { BuChangManager._BuChangItemDict[new RangeKey(minUnionLevel, maxUnionLevel, null)] = buChangItem; } } }
/// <summary> /// 获取物品列表 /// </summary> /// <param name="client"></param> /// <returns></returns> public static List <GoodsData> GetBuChangGoodsDataList(GameClient client) { BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client)); if (null == buChangItem) { return(null); } return(buChangItem.GoodsDataList); }
/// <summary> /// 获取补偿绑定元宝 /// </summary> /// <param name="client"></param> /// <returns></returns> public static int GetBuChangBindYuanBao(GameClient client) { BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client)); if (null == buChangItem) { return(0); } return(buChangItem.MoJing); }
/// <summary> /// 获取补偿经验 /// </summary> /// <param name="client"></param> /// <returns></returns> public static long GetBuChangExp(GameClient client) { BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client)); if (null == buChangItem) { return(0); } return(buChangItem.Experience); }
/// <summary> /// 背包中是否有足够的位置 /// </summary> /// <returns></returns> public static bool HasEnoughBagSpaceForAwardGoods(GameClient client, BuChangItem buChangItem) { int needSpace = 0; needSpace = buChangItem.GoodsDataList.Count; if (needSpace <= 0) { return(true); } //判断背包空格是否能提交接受奖励的物品 return(Global.CanAddGoodsDataList(client, buChangItem.GoodsDataList)); }
public static List <GoodsData> GetBuChangGoodsDataList(GameClient client) { BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false)); List <GoodsData> result; if (null == buChangItem) { result = null; } else { result = buChangItem.GoodsDataList; } return(result); }
public static int GetBuChangBindYuanBao(GameClient client) { BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false)); int result; if (null == buChangItem) { result = 0; } else { result = buChangItem.MoJing; } return(result); }
public static long GetBuChangExp(GameClient client) { BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false)); long result; if (null == buChangItem) { result = 0L; } else { result = buChangItem.Experience; } return(result); }
public static void GiveBuChang(GameClient client) { if (!BuChangManager.CanGiveBuChang()) { GameManager.LuaMgr.Error(client, GLang.GetLang(24, new object[0]), 0); } else { BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false)); if (null == buChangItem) { GameManager.LuaMgr.Error(client, GLang.GetLang(25, new object[0]), 0); } else if (!BuChangManager.HasEnoughBagSpaceForAwardGoods(client, buChangItem)) { GameManager.LuaMgr.Error(client, GLang.GetLang(26, new object[0]), 0); } else { DateTime buChangDateTime = Global.GetBuChangStartDay(); int buChangFlag = Global.GetRoleParamsInt32FromDB(client, "BuChangFlag"); if (buChangDateTime.DayOfYear == buChangFlag) { GameManager.LuaMgr.Error(client, GLang.GetLang(27, new object[0]), 0); } else { Global.SaveRoleParamsInt32ValueToDB(client, "BuChangFlag", buChangDateTime.DayOfYear, true); for (int i = 0; i < buChangItem.GoodsDataList.Count; i++) { Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, buChangItem.GoodsDataList[i].GoodsID, buChangItem.GoodsDataList[i].GCount, buChangItem.GoodsDataList[i].Quality, "", buChangItem.GoodsDataList[i].Forge_level, buChangItem.GoodsDataList[i].Binding, 0, "", true, 1, "系统补偿物品", "1900-01-01 12:00:00", buChangItem.GoodsDataList[i].AddPropIndex, buChangItem.GoodsDataList[i].BornIndex, buChangItem.GoodsDataList[i].Lucky, buChangItem.GoodsDataList[i].Strong, 0, 0, 0, null, null, 0, true); } if (buChangItem.MoJing > 0) { GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, buChangItem.MoJing, "系统补偿", false, true, false); } if (buChangItem.Experience > 0L) { GameManager.ClientMgr.ProcessRoleExperience(client, buChangItem.Experience, false, true, false, "none"); } client._IconStateMgr.CheckBuChangState(client); client._IconStateMgr.SendIconStateToClient(client); } } } }
public static BuChangItem GetBuChangItem(int unionLevel) { BuChangItem buChangItem = null; lock (BuChangManager._BuChangItemDict) { if (BuChangManager._BuChangItemDict.TryGetValue(unionLevel, out buChangItem)) { return(buChangItem); } } BuChangManager.InitBuChangDict(); lock (BuChangManager._BuChangItemDict) { if (BuChangManager._BuChangItemDict.TryGetValue(unionLevel, out buChangItem)) { return(buChangItem); } } return(buChangItem); }
public static bool CheckGiveBuChang(GameClient client) { bool result; if (!BuChangManager.CanGiveBuChang()) { result = false; } else { BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false)); if (null == buChangItem) { result = false; } else { DateTime buChangDateTime = Global.GetBuChangStartDay(); int buChangFlag = Global.GetRoleParamsInt32FromDB(client, "BuChangFlag"); result = (buChangDateTime.DayOfYear != buChangFlag); } } return(result); }
/// <summary> /// 给予补偿 /// </summary> /// <param name="client"></param> public static bool CheckGiveBuChang(GameClient client) { if (!CanGiveBuChang()) { return(false); } BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client)); if (null == buChangItem) { return(false); } DateTime buChangDateTime = Global.GetBuChangStartDay(); int buChangFlag = Global.GetRoleParamsInt32FromDB(client, RoleParamName.BuChangFlag); if (buChangDateTime.DayOfYear == buChangFlag) { return(false); } return(true); }
public static bool HasEnoughBagSpaceForAwardGoods(GameClient client, BuChangItem buChangItem) { int needSpace = buChangItem.GoodsDataList.Count; return(needSpace <= 0 || Global.CanAddGoodsDataList(client, buChangItem.GoodsDataList)); }
/// <summary> /// 给予补偿 /// </summary> /// <param name="client"></param> public static void GiveBuChang(GameClient client) { /// 根据奖励时间判断当前时间是否满足给予补偿时间 if (!CanGiveBuChang()) { GameManager.LuaMgr.Error(client, Global.GetLang("非补偿期间,无法获取补偿!")); return; } BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client)); if (null == buChangItem) { GameManager.LuaMgr.Error(client, Global.GetLang("没有找到对应的补偿项!")); return; } /// 背包中是否有足够的位置 if (!HasEnoughBagSpaceForAwardGoods(client, buChangItem)) { GameManager.LuaMgr.Error(client, Global.GetLang("背包已满,请先清理出空格后再领取补偿!")); return; } DateTime buChangDateTime = Global.GetBuChangStartDay(); int buChangFlag = Global.GetRoleParamsInt32FromDB(client, RoleParamName.BuChangFlag); if (buChangDateTime.DayOfYear == buChangFlag) { GameManager.LuaMgr.Error(client, Global.GetLang("已经领取过补偿,无法再次领取!")); return; } Global.SaveRoleParamsInt32ValueToDB(client, RoleParamName.BuChangFlag, buChangDateTime.DayOfYear, true); //先保存后给予奖励 //获取奖励的物品 for (int i = 0; i < buChangItem.GoodsDataList.Count; i++) { //想DBServer请求加入某个新的物品到背包中 //添加物品 Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, buChangItem.GoodsDataList[i].GoodsID, buChangItem.GoodsDataList[i].GCount, buChangItem.GoodsDataList[i].Quality, "", buChangItem.GoodsDataList[i].Forge_level, buChangItem.GoodsDataList[i].Binding, 0, "", true, 1, /**/ "系统补偿物品", Global.ConstGoodsEndTime, buChangItem.GoodsDataList[i].AddPropIndex, buChangItem.GoodsDataList[i].BornIndex, buChangItem.GoodsDataList[i].Lucky, buChangItem.GoodsDataList[i].Strong); } //获取奖励的魔晶 if (buChangItem.MoJing > 0) { GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, buChangItem.MoJing, "系统补偿", false, true); } //获取奖励的经验 if (buChangItem.Experience > 0) { //处理角色经验 GameManager.ClientMgr.ProcessRoleExperience(client, buChangItem.Experience, false, true); } client._IconStateMgr.CheckBuChangState(client); client._IconStateMgr.SendIconStateToClient(client); }