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");
        }
    }