using UnityEngine; using System.Collections.Generic; using System; using LitJson; public class PlayerDatas : Singleton { public uint PlayerId { get { return baseData.PlayerID; } } PlayerBaseData m_Base = new PlayerBaseData(); public PlayerBaseData baseData { get { return m_Base; } } PlayerExtersionData m_Extersion = new PlayerExtersionData(); public PlayerExtersionData extersion { get { return m_Extersion; } } // public PlayerFairyData fairyData = new PlayerFairyData(); // PlayerSkillDatas m_Skill = new PlayerSkillDatas(); // public PlayerSkillDatas skill { get { return m_Skill; } } // PlayerMethodData method { get { return ModelCenter.Instance.GetModel(); } } // StoreModel StoreModel { get { return ModelCenter.Instance.GetModel(); } } // DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel(); } } public int totalExpRate { get; set; } public uint worldLv { get; private set; } public uint worldExpRate { get; private set; } public List maliciousAtkPlayer = new List();// 发动恶意攻击的玩家列表 private int m_Tick; public uint changeLV = 0; //当前升x级 public event Action worldLevelUpdateEvent; public event Action playerDataUpdateEvent; // 无区别更新,慎用 public event Action playerDataRefreshEvent; public event Action attributePromoteEvent; public event Action spNewGetEvent; private Dictionary PlayerDataDict = new Dictionary(); public void InitPlayerData(H0102_tagCDBPlayer data) { baseData.UpdateData(data); if (playerDataUpdateEvent != null) { playerDataUpdateEvent(); } } public void UpdatePlayerData(/*HA112_tagMCDBPlayer data*/) { // baseData.UpdateData(data); // if (hero != null) // { // hero.InitBornPos(baseData.PosX, baseData.PosY); // CameraController.Instance.Apply(); // } // if (playerDataUpdateEvent != null) // { // playerDataUpdateEvent(); // } } public void FightRefreshPlayerHp(ulong hp) { RefreshProperty(PlayerDataType.HP, (uint)(hp % Constants.ExpPointValue), (uint)(hp/Constants.ExpPointValue)); if (playerDataUpdateEvent != null) { playerDataUpdateEvent(); } if (playerDataRefreshEvent != null) { playerDataRefreshEvent(PlayerDataType.HP); } } public void RefreshPlayerData(/*H0418_tagObjInfoRefresh vNetData*/) { // UpdatePlayerData(vNetData); // //StoreModel.RefreshTCBPlayerData(vNetData); // if (playerDataUpdateEvent != null) // { // playerDataUpdateEvent(); // } } private void UpdatePlayerData(int temp/*H0418_tagObjInfoRefresh vNetData*/) { // if (baseData != null && vNetData.ObjID == baseData.PlayerID) // { // var deltaValue = -1; //变化值用于处理表现 // switch ((PlayerDataType)vNetData.RefreshType) // { // case PlayerDataType.MaxHP: // deltaValue = (int)(vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue - extersion.MaxHP); // break; // case PlayerDataType.MAXATK: // deltaValue = (int)(vNetData.Value - extersion.MAXATK); // break; // case PlayerDataType.MINATK: // deltaValue = (int)(vNetData.Value - extersion.MINATK); // break; // case PlayerDataType.DEF: // deltaValue = (int)(vNetData.Value - extersion.DEF); // break; // case PlayerDataType.HIT: // deltaValue = (int)(vNetData.Value - extersion.HIT); // break; // case PlayerDataType.Miss: // deltaValue = (int)(vNetData.Value - extersion.Miss); // break; // case PlayerDataType.BattleValEx1: // deltaValue = (int)(vNetData.Value - extersion.battleValEx1); // break; // case PlayerDataType.SpeedValue: // deltaValue = (int)(vNetData.Value - extersion.SpeedValue); // break; // default: // deltaValue = -1; // break; // } // if (deltaValue > 0 && attributePromoteEvent != null) // { // attributePromoteEvent((PlayerDataType)vNetData.RefreshType, deltaValue); // } // RefreshProperty(vNetData.socketType == ServerType.Main, (PlayerDataType)vNetData.RefreshType, vNetData.Value, vNetData.ValueEx); // if (PlayerDataDict.ContainsKey((PlayerDataType)vNetData.RefreshType)) // { // PlayerDataDict[(PlayerDataType)vNetData.RefreshType] = vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue; // } // else // { // PlayerDataDict.Add((PlayerDataType)vNetData.RefreshType, vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue); // } // if (playerDataRefreshEvent != null) // { // playerDataRefreshEvent((PlayerDataType)vNetData.RefreshType); // } // } } public void RefreshProperty(PlayerDataType _type, uint value, uint valueEx) { switch (_type) { case PlayerDataType.AccountID: baseData.AccID = value.ToString(); break; case PlayerDataType.PlayerID: baseData.PlayerID = value; break; case PlayerDataType.PlayerName: break; case PlayerDataType.Sex: break; case PlayerDataType.Job: baseData.Job = (byte)value; break; case PlayerDataType.LV: if (baseData.LV != 0 && value > baseData.LV) { // TODO YYL 升级特效 // if (hero != null) // { // if (PlayerDatas.Instance.baseData.MapID == 31080) // { // SFXPlayUtility.Instance.PlayBattleEffect(1156, hero); // } // else // { // SFXPlayUtility.Instance.PlayBattleEffect(1039, hero); // } // } } changeLV = value - baseData.LV; baseData.LV = (ushort)value; if (changeLV > 0) { SDKUtils.Instance.RoleLevelUp(); } break; case PlayerDataType.TotalExp: baseData.TotalExp = value; break; case PlayerDataType.Family: baseData.FamilyId = value; if (LocalSave.GetInt("FimilyReport" + PlayerDatas.Instance.baseData.PlayerID) == 0) { SDKUtils.Instance.TraceEvent("joinalliance", "", false); LocalSave.SetInt("FimilyReport" + PlayerDatas.Instance.baseData.PlayerID, 1); } // TODO YYL // if (hero != null) // { // hero.ActorInfo.familyID = value; // ReCheckAttackTarget(); // } break; case PlayerDataType.TeamHornor: break; case PlayerDataType.PKValue: break; case PlayerDataType.FamilyHornor: break; case PlayerDataType.FamilyActiveValue: break; case PlayerDataType.CountryHornor: break; case PlayerDataType.Mate: break; case PlayerDataType.Gold: baseData.diamond = value; break; case PlayerDataType.GoldPaper: baseData.bindDiamond = value; break; case PlayerDataType.Silver: baseData.copper = value; break; case PlayerDataType.SilverPaper: break; case PlayerDataType.FightPoint: break; case PlayerDataType.HappyPoint: break; case PlayerDataType.MapID: baseData.MapID = (ushort)value; break; case PlayerDataType.PosX: baseData.PosX = (ushort)value;//角色坐标x break; case PlayerDataType.PosY: baseData.PosY = (ushort)value;//角色坐标y break; case PlayerDataType.State: break; case PlayerDataType.MaxHP: extersion.MaxHP = value + valueEx * Constants.ExpPointValue; // TODO YYL // if (hero != null) // { // hero.ActorInfo.ResetHp(-1, (long)extersion.MaxHP); // } break; case PlayerDataType.HP: baseData.HP = value + valueEx * Constants.ExpPointValue; break; case PlayerDataType.MaxMP: extersion.MaxMP = (int)value; break; case PlayerDataType.HPRestoreSetting: break; case PlayerDataType.MPRestoreSetting: break; case PlayerDataType.ExpRate: extersion.ExpRate = (int)value; break; case PlayerDataType.DEF: extersion.DEF = (int)value; break; case PlayerDataType.FreePoint: baseData.FreePoint = value; break; case PlayerDataType.FreeSkillPoint: baseData.FreeSkillPoint = value; break; case PlayerDataType.STR: baseData.STR = (int)value; break; case PlayerDataType.PNE: baseData.PNE = (int)value; break; case PlayerDataType.PHY: baseData.PHY = (int)value; break; case PlayerDataType.CON: baseData.CON = (int)value; break; case PlayerDataType.MINATK: extersion.MINATK = (int)value; break; case PlayerDataType.MAXATK: extersion.MAXATK = (int)value; break; case PlayerDataType.MAtkMin: break; case PlayerDataType.MAtkMax: break; case PlayerDataType.MDef: break; case PlayerDataType.HIT: extersion.HIT = (int)value; break; case PlayerDataType.POISIONATK: break; case PlayerDataType.FIREATK: break; case PlayerDataType.REALATK: extersion.realATK = (int)value; break; case PlayerDataType.THUNDERATK: break; case PlayerDataType.WINDATK: break; case PlayerDataType.POISIONDEF: break; case PlayerDataType.FIREDEF: break; case PlayerDataType.REALDEF: extersion.realDEF = (int)value; break; case PlayerDataType.THUNDERDEF: break; case PlayerDataType.WINDDEF: break; case PlayerDataType.Miss: extersion.Miss = (int)value; break; case PlayerDataType.SuperHit: extersion.SuperHit = (int)value; break; case PlayerDataType.Buff: break; case PlayerDataType.Skill: break; case PlayerDataType.Mark: break; case PlayerDataType.SettingH: break; case PlayerDataType.SettingV: break; case PlayerDataType.FightPK: break; case PlayerDataType.ActiveValue: break; case PlayerDataType.NameColor: case PlayerDataType.AtkInterval: extersion.AtkInterval = (int)value; break; case PlayerDataType.Speed: extersion.Speed = (int)value; break; case PlayerDataType.SuperHitRate: extersion.SuperHitRate = (int)value; break; case PlayerDataType.PickupDist: extersion.PickupDist = (int)value; break; case PlayerDataType.CountryLastWeekHornor: break; case PlayerDataType.LastWeekOnlineTime: break; case PlayerDataType.LastWeekFamilyActiveValue: break; case PlayerDataType.FBID: baseData.FBID = (byte)value; break; case PlayerDataType.FamilyLV: break; case PlayerDataType.RealMapID: extersion.RealMapID = (int)value; break; case PlayerDataType.GMLevel: baseData.GMLevel = (byte)value; break; case PlayerDataType.TeamID: // TODO YYL // if (hero != null) // { // hero.ActorInfo.teamID = value; // ReCheckAttackTarget(); // } break; case PlayerDataType.TeamLV: break; case PlayerDataType.FightPower: baseData.FightPoint = value + valueEx * Constants.ExpPointValue; // TODO YYL // ModelCenter.Instance.GetModel().PowerAdd(baseData.FightPoint); break; case PlayerDataType.RebornMapID: break; case PlayerDataType.RebornPosX: break; case PlayerDataType.RebornPosY: break; case PlayerDataType.Coin: break; case PlayerDataType.BillboardLV: break; case PlayerDataType.Tick: #if UNITY_EDITOR Debug.LogFormat("---- 收到服务端Tick: {0}", value); if (extersion.Tick != 0) { uint _curWorldTick = GetWorldTick(); uint _diffValue = value > _curWorldTick ? value - _curWorldTick : _curWorldTick - value; Debug.LogFormat(" |-------- 当前客户端Tick: {0}, 差异: {1}", _curWorldTick, _diffValue); if (_diffValue > 5000) { Debug.LogFormat(" |-------- 收到服务端WorldTick与当前的客户端Tick差异超过5秒"); } } #endif extersion.Tick = value; m_Tick = Environment.TickCount; break; case PlayerDataType.CurrentPlayerType: break; case PlayerDataType.FriendFavor: break; case PlayerDataType.BackpackLV: break; case PlayerDataType.ReincarnationLV: break; case PlayerDataType.BaseSTR: break; case PlayerDataType.BasePNE: break; case PlayerDataType.BasePHY: break; case PlayerDataType.BaseCON: break; case PlayerDataType.ReceivedSalary: break; case PlayerDataType.WarehouseLV: break; case PlayerDataType.EquipShowSwitch: baseData.equipShowSwitch = value; // TODO YYL // if (hero != null) // { // hero.SwitchSuit(); // hero.ReqLingGenEffect((int)(baseData.equipShowSwitch / 10 % 100), (int)(baseData.equipShowSwitch / 1000 % 1000)); // hero.horseAwakeId = (int)(value / 1000000); // #if UNITY_EDITOR // if (hero.horseAwakeId != 0) // { // Debug.LogFormat("玩家骑宠觉醒ID改变: {0}", hero.horseAwakeId); // } // #endif // } break; case PlayerDataType.LuckValue: extersion.luckValue = (int)value; break; case PlayerDataType.ExAttr1: // TODO YYL // if (hero != null && !hero.ActorInfo.serverDie) // { // if (hero.aiHandler.IsAuto()) // { // hero.Behaviour.StopHandupAI(true); // } // } baseData.ExAttr1 = value; // TODO YYL // if (baseData.ExAttr1 == 0) // assistModel.assistGUID = string.Empty; break; case PlayerDataType.ExAttr2: baseData.teamAutoOperateFlag = value; break; case PlayerDataType.ExAttr3: baseData.dungeonLineId = (int)value % 1000; baseData.dungeonMapId = (int)value / 1000; break; case PlayerDataType.ExAttr4: baseData.shield = value; break; case PlayerDataType.ExAttr5: var oldExAttr5 = baseData.CrossServerFlag; baseData.CrossServerFlag = value; // TODO YYL // if (oldExAttr5 > 2 && value <= 2) // { // if (GameNetSystem.Instance.crossServerConnected_Loigc) // { // GameNetSystem.Instance.crossServerConnected_Loigc = false; // GameNetSystem.Instance.DisconnectCrossServer(); // // TODO YYL // // if (hero != null) // // { // // StatusMgr.Instance.ReleaseActor(hero.ServerInstID); // // } // extersion.pkState = 0; // baseData.MapID = baseData.mainServerMapIdRecord; // baseData.dungeonLineId = 0; // baseData.dungeonMapId = 0; // ModelCenter.Instance.GetModel().ResetBufData(); // StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand() // { // toMapId = baseData.MapID, // toLineId = 0, // needEmpty = true, // needLoadResource = true, // isClientLoadMap = true, // refreshPlayerDatas = true // }); // } // } break; case PlayerDataType.Faction: baseData.faction = value; // TODO YYL // if (hero != null) // { // hero.ActorInfo.faction = (int)value; // ReCheckAttackTarget(); // hero.SetFairyLeagueHeadUp(baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON); // } break; case PlayerDataType.InfamyValue: break; case PlayerDataType.RealmLevel: baseData.realmLevel = (byte)value; break; case PlayerDataType.IsFindByLabel: break; case PlayerDataType.IsCloseFriendLabel: break; case PlayerDataType.ChangeCoinPointTotal: baseData.coinPointTotal = value; break; case PlayerDataType.VIPLv: // TODO YYL // if (baseData.VIPLv <= 0 && value > 0) // { // ModelCenter.Instance.GetModel().SetVipPushNotify((int)value); // } // else if (value <= 0) // { // ModelCenter.Instance.GetModel().SetVipPushNotify(0); // } baseData.VIPLv = (byte)value; break; case PlayerDataType.ExAttr6: baseData.copperExtend = value; break; case PlayerDataType.ExAttr7: baseData.sp = value; break; case PlayerDataType.ExAttr8: baseData.spExtend = value; break; case PlayerDataType.ExAttr9: break; case PlayerDataType.ExAttr10: baseData.bubbleId = value; break; case PlayerDataType.ModelMark: break; case PlayerDataType.PrizeCoin: break; case PlayerDataType.ExAttr11: baseData.ExAttr11 = value; break; case PlayerDataType.ExAttr12: break; case PlayerDataType.ExAttr13: baseData.ServerGroupId = value; break; case PlayerDataType.ExAttr14: break; case PlayerDataType.BattleValEx1: extersion.battleValEx1 = (int)value; // TODO YYL // if (hero != null) // { // hero.CalculateAtkSpeed((ushort)extersion.battleValEx1); // } break; case PlayerDataType.BattleValEx3: extersion.battleValEx3 = (int)value; break; case PlayerDataType.DamageReduceRate: extersion.damageReduceRate = (int)value; break; case PlayerDataType.LuckyHitRate: extersion.luckHitRate = (int)value; break; case PlayerDataType.LuckyHitVal: extersion.luckHitVal = (int)value; break; case PlayerDataType.ExpPoint: baseData.ExpPoint = value; break; case PlayerDataType.Rune: extersion.runeChip = (int)value; break; case PlayerDataType.RuneSplinters: extersion.runeEssence = (int)value; break; case PlayerDataType.FamilyContribution: // TODO YYL // method.CepaContribution((int)value); break; case PlayerDataType.FamilyStoreScore: break; case PlayerDataType.SuperHitReduce: extersion.SuperHitReduce = (int)value; break; case PlayerDataType.LuckyHitRateReduce: extersion.LuckyHitRateReduce = (int)value; break; case PlayerDataType.SkillAtkRateReduce: extersion.skillAtkRateReduce = (int)value; break; case PlayerDataType.SkillAtkRate: extersion.SkillAtkRate = (int)value; break; case PlayerDataType.DamagePVP: extersion.DamagePVP = (int)value; break; case PlayerDataType.HPRestorePer: extersion.HPRestorePer = (int)value; break; case PlayerDataType.DamageBackRate: extersion.DamageBackRate = (int)value; break; case PlayerDataType.SpeedValue: extersion.SpeedValue = (int)value; // TODO YYL // if (hero != null) // { // hero.CalculateMoveSpeed((ushort)extersion.SpeedValue); // } break; case PlayerDataType.DamagePVE: break; case PlayerDataType.PetDamPer: extersion.PetDamPer = (int)value; break; case PlayerDataType.IgnoreDefRate: extersion.IgnoreDefRate = (int)value; break; case PlayerDataType.IgnoreDefRateReduce: extersion.IgnoreDefRateReduce = (int)value; break; case PlayerDataType.DamChanceDef: extersion.DamChanceDef = (int)value; break; case PlayerDataType.BleedDamage: extersion.BleedDamage = (int)value; break; case PlayerDataType.BattleValEx2: extersion.BattleValEx2 = (int)value; break; case PlayerDataType.FaintRate: extersion.FaintRate = (int)value; break; case PlayerDataType.FaintDefRate: extersion.FaintDefRate = (int)value; break; case PlayerDataType.FinalHurt: extersion.FinalHurt = (int)value; break; case PlayerDataType.FinalHurtReduce: extersion.FinalHurtReduce = (int)value; break; case PlayerDataType.DamagePerPVP: extersion.DamagePerPVP = (int)value; break; case PlayerDataType.DamagePerPVPReduce: extersion.DamagePerPVPReduce = (int)value; break; case PlayerDataType.ComboDamPer: extersion.ComboDamPer = (int)value; break; case PlayerDataType.MaxProDef: extersion.MaxProDef = (int)value; break; case PlayerDataType.ComboDamRate: extersion.ComboDamPerRate = (int)value; break; case PlayerDataType.RealmPoint: extersion.realmPoint = (int)value; break; case PlayerDataType.MagicEssence: extersion.magicEssence = (int)value; break; case PlayerDataType.PlayerPKState: extersion.pkState = (int)value; // TODO YYL // if (baseData.MapID != 31220 // && baseData.MapID != 32030 // && baseData.MapID != 22030) // { // if (hero != null) // { // if (value == 1) // { // if (MapArea.IsOutMapArea(hero.CurMapArea, MapArea.E_Type.Neutral)) // { // hero.SwitchGrayName(true); // } // } // else if (value == 0) // { // hero.SwitchGrayName(false); // if (StatusMgr.Instance.IsExist(PlayerId, StatusMgr.Instance.redNameBuffID)) // { // hero.SwitchRedName(true); // } // } // } // } break; case PlayerDataType.IsAttackBossState: extersion.bossState = (int)value; // TODO YYL // if (hero != null) // { // if (extersion.bossState == 0) // { // hero.atkBossID = 0; // } // } break; case PlayerDataType.BasicsMinimum: baseData.BasicsMinimum = (int)value; break; case PlayerDataType.BasicsMaxAttack: baseData.BasicsMaxAttack = (int)value; break; case PlayerDataType.BasicsLife: baseData.BasicsLife = (int)value; break; case PlayerDataType.BasicsDefense: baseData.BasicsDefense = (int)value; break; case PlayerDataType.BasicsScoreAHit: baseData.BasicsScoreAHit = (int)value; break; case PlayerDataType.BasicsDodge: baseData.BasicsDodge = (int)value; break; case PlayerDataType.OnlyFinalHurt: extersion.OnlyFinalHurt = (int)value; break; case PlayerDataType.CDBPlayerRefresh_NPCHurtAddPer: extersion.NpcHurtAddPer = (int)value; break; case PlayerDataType.FunalHurtPer: extersion.FunalHurtPer = (int)value; break; case PlayerDataType.CDBPlayerRefresh_ForbidenTalk: extersion.forbidenTalk = (int)value; //与服务端约定 0 单角色解封 1 单角色禁言,2设备禁言,3设备解封 if (value == 2) { LocalSave.SetBool("ServerForbidenChatDevice1", true); } else if (value == 3) { //任意账号解封 LocalSave.SetBool("ServerForbidenChatDevice1", false); } //ModelCenter.Instance.GetModel().ServerForbidenChat(extersion.forbidenTalk == 1); break; case PlayerDataType.CDBPlayerRefresh_TalentPoint: extersion.talentPoint = (int)value; break; case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_1: break; case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_2: break; case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_3: break; case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_4: break; case PlayerDataType.CDBPlayerRefresh_SoulDust: extersion.soulDust = value; break; case PlayerDataType.CDBPlayerRefresh_SoulSplinters: extersion.soulSplinters = value; break; case PlayerDataType.CDBPlayerRefresh_SoulCore: extersion.soulCore = value; break; case PlayerDataType.CDBPlayerRefresh_Honor: extersion.honorValue = (int)value; break; case PlayerDataType.CDBPlayerRefresh_ZhuxianRate: baseData.ExAttr16 = value; break; case PlayerDataType.CDBPlayerRefresh_Mater: baseData.mater = (int)value; break; case PlayerDataType.CDBPlayerRefresh_Wood: baseData.wood = (int)value; break; case PlayerDataType.CDBPlayerRefresh_Water: baseData.water = (int)value; break; case PlayerDataType.CDBPlayerRefresh_Fire: baseData.fire = (int)value; break; case PlayerDataType.CDBPlayerRefresh_Earth: baseData.earth = (int)value; break; case PlayerDataType.CDBPlayerRefresh_NormalHurt: baseData.NormalHurt = (int)value; break; case PlayerDataType.CDBPlayerRefresh_NormalHurtPer: baseData.NormalHurtPer = (int)value; break; case PlayerDataType.CDBPlayerRefresh_FabaoHurt: baseData.FabaoHurt = (int)value; break; case PlayerDataType.CDBPlayerRefresh_FabaoHurtPer: baseData.FabaoHurtPer = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SuperHitRateReduce: baseData.reduceCrit = (int)value; break; case PlayerDataType.CDBPlayerRefresh_LuckyHitReduce: baseData.reduceHeartHurt = (int)value; break; case PlayerDataType.CDBPlayerRefresh_FinalHurtReducePer: baseData.reduceFinalHurt = (int)value; break; case PlayerDataType.CDBPlayerRefresh_YinjiTime: baseData.yinjiTime = (int)value; break; case PlayerDataType.CDBPlayerRefresh_YinjiCount: baseData.yinjiCount = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerA: baseData.skillAddPerA = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerB: baseData.skillAddPerB = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerC: baseData.skillAddPerC = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerD: baseData.skillAddPerD = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerE: baseData.skillAddPerE = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerF: baseData.skillAddPerF = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillAddPerG: baseData.skillAddPerG = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerA: baseData.skillReducePerA = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerB: baseData.skillReducePerB = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerC: baseData.skillReducePerC = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerD: baseData.skillReducePerD = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerE: baseData.skillReducePerE = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerF: baseData.skillReducePerF = (int)value; break; case PlayerDataType.CDBPlayerRefresh_SkillReducePerG: baseData.skillReducePerG = (int)value; break; case PlayerDataType.default9: baseData.mapRealmSelect = (int)value; break; case PlayerDataType.default10: baseData.leaveFamilyTime = (int)value; break; } } public ulong GetPlayerDataByType(PlayerDataType type) { ulong value = 0; PlayerDataDict.TryGetValue(type, out value); return value; } public void ClearPlayerData() { PlayerDataDict.Clear(); } public void OnRefreshWorldLV(uint worldLv, uint worldExpRate) { this.worldLv = worldLv; this.worldExpRate = worldExpRate; if (worldLevelUpdateEvent != null) { worldLevelUpdateEvent(); } } public void OnRecv_SwitchAttackMode(byte attackMode) { // baseData.AttackMode = attackMode; // if (OnSwitchAttackMode != null) // { // OnSwitchAttackMode((E_AttackMode)attackMode); // } // if (hero == null) // { // return; // } // ReCheckAttackTarget(); } public void ReCheckAttackTarget(/*GA_Player _player = null*/) { // if (hero == null) // { // return; // } // if (_player == null) // { // _player = hero.SelectTarget as GA_Player; // } // if (_player != null) // { // if (_player.CanAtked()) // { // SelectionManager.Request(SelectionManager.E_Type.Red, _player); // } // else // { // SelectionManager.Request(SelectionManager.E_Type.Green, _player); // if (hero.aiHandler.IsAuto()) // { // hero.LockTarget = null; // } // else if (hero.aiHandler.currentType == E_HeroAIType.KillUntilDie) // { // hero.Behaviour.StopKillUntilDieAI(); // } // } // } // hero.SwitchTarget(); } /// /// 是否是装备, 这里的装备指的是: 武器, 帽子, 衣服, 下装, 鞋子, 腰带 /// /// public bool IsEquip(ItemType itemType) { return itemType >= ItemType.Equip_Weapon && itemType <= ItemType.Equip_Shoes; } public void RequestWorldTick() { CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick(); GameNetSystem.Instance.SendInfo(_proto); } public void ClearTick() { extersion.Tick = 0; } public bool IsTickVaild() { return extersion.Tick != 0; } public uint GetWorldTick() { int _currentTick = Environment.TickCount - m_Tick; return extersion.Tick + (uint)_currentTick; } }