private IEnumerator ClaimAchievementRewardCoroutine(int id) { using (new BlockingLayerHelper(0)) { Logger.Debug(".............ClaimAchievementRewardCoroutine..................begin"); var msg = NetManager.Instance.RewardAchievement(id); yield return(msg.SendAndWaitUntilDone()); if (msg.State != MessageState.Reply) { Logger.Debug("[ClaimAchievementRewardCoroutine] msg.State != MessageState.Reply"); yield break; } if (msg.ErrorCode != (int)ErrorCodes.OK) { Logger.Debug("[ClaimAchievementRewardCoroutine] ErrorCodes=[{0}]", msg.ErrorCode); if (msg.ErrorCode == (int)ErrorCodes.Error_ItemNoInBag_All) { EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(302)); } else { UIManager.Instance.ShowNetError(msg.ErrorCode); } yield break; } //如果成就领取成功,就把标记位设置一下,防止连续领取 var table = Table.GetAchievement(id); if (null != table) { FlagData.SetFlag(table.RewardFlagId); OnFlagUpdate(table.RewardFlagId); } const int flagId = 492; //成就奖励领取成功清除一个标记 if (!PlayerDataManager.Instance.GetFlag(flagId)) { var list = new Int32Array(); list.Items.Add(flagId); PlayerDataManager.Instance.SetFlagNet(list); } EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(452)); Logger.Debug(".............ClaimAchievementRewardCoroutine..................end"); } }