Example #1
0
        public IEnumerator ApplyPlayerExdata(Coroutine coroutine, ObjPlayer player)
        {
            Int32Array array = new Int32Array();

            array.Items.Add((int)eExdataDefine.e770);
            var result = SceneServer.Instance.LogicAgent.SSFetchExdata(player.ObjId, array);

            yield return(result.SendAndWaitUntilDone(coroutine));

            if (result.State != MessageState.Reply || result.ErrorCode != (int)ErrorCodes.OK)
            {
                Logger.Warn("ApplyPlayerExdata");
                yield break;
            }
            var        nCount = result.Response.Items[0];
            KillRecord record;

            if (false == DictKillRecord.TryGetValue(player.ObjId, out record))
            {
                record         = new KillRecord();
                record.KillNum = player.GetExdata((int)eExdataDefine.e770);
                DictKillRecord.Add(player.ObjId, record);
            }
            record.KillNum = nCount;
            AssignMsg();
            PushActionToAllPlayer(proxyPlayer =>
            {
                if (!proxyPlayer.Active)
                {
                    return;
                }
                AssignSelfMsg(proxyPlayer.ObjId);
                // 向客户端刷新副本信息
                Msg.Int32OneList.Clear();
                Msg.FloatList.Clear();
                Msg.Int32OneList.Add(GetAlivePlayerNum());
                Msg.Int32OneList.Add(PlayerCount);
                Msg.FloatList.Add(TimeExpRatio);
                proxyPlayer.Proxy.NotifyRefreshDungeonInfo(Msg);
            });
            yield break;
        }