| | |
| | | using UnityEngine; |
| | | using System.Collections.Generic; |
| | | using System; |
| | | using Snxxz.UI; |
| | | |
| | | public class PlayerDatas : Singleton<PlayerDatas> |
| | | { |
| | | public GA_Hero hero = null; |
| | | |
| | | public H0309_tagPlayerLoginInfo loginInfo; |
| | | 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(); |
| | | public PlayerMarketData market = new PlayerMarketData(); |
| | | public PlayerRealmData realm = new PlayerRealmData(); |
| | | |
| | | PlayerSkillDatas m_Skill = new PlayerSkillDatas(); |
| | | public PlayerSkillDatas skill { get { return m_Skill; } } |
| | | |
| | | PlayerStrengthengDatas m_StrengthengModel; |
| | | PlayerStrengthengDatas strengthengmodel { get { return m_StrengthengModel ?? (m_StrengthengModel = ModelCenter.Instance.GetModel<PlayerStrengthengDatas>()); } } |
| | | |
| | | PlayerMethodData M_Method; |
| | | PlayerMethodData method { get { return M_Method ?? (M_Method = ModelCenter.Instance.GetModel<PlayerMethodData>()); } } |
| | | |
| | | PlayerRankData m_Rank = new PlayerRankData(); |
| | | public PlayerRankData rank { get { return m_Rank; } } |
| | | |
| | | StoreModel m_StoreModel; |
| | | StoreModel StoreModel |
| | | { |
| | | get { return m_StoreModel ?? (m_StoreModel = ModelCenter.Instance.GetModel<StoreModel>()); } |
| | | } |
| | | |
| | | public int totalExpRate { get; set; } |
| | | public uint worldLv { get; private set; } |
| | | public uint worldExpRate { get; private set; } |
| | | public List<uint> maliciousAtkPlayer = new List<uint>();// 发动恶意攻击的玩家列表 |
| | | private int m_Tick; |
| | | |
| | | public event Action OnRoleAttrRefresh; |
| | | public event Action<E_AttackMode> OnSwitchAttackMode; |
| | | public event Action InitPlayerInfoEvent; |
| | | public event Action RefreshPlayerInfoEvent; |
| | | public event Action<PlayerDataRefresh> PlayerDataRefreshInfoEvent; |
| | | public event Action<PlayerDataRefresh, int> attributePromoteEvent; |
| | | public event Action<PlayerDataRefresh, int> PlayerDataRefreshEvent; |
| | | public event Action<long> spNewGetEvent; |
| | | |
| | | private Dictionary<PlayerDataRefresh, int> PlayerDataDict = new Dictionary<PlayerDataRefresh, int>(); |
| | | |
| | | public void InitPlayerData(H0102_tagCDBPlayer data) |
| | | { |
| | | baseData.UpdateData(data); |
| | | HangUpSetModel.Instance.SetOfflinePluginTime((int)baseData.HappyPoint); |
| | | if (InitPlayerInfoEvent != null) |
| | | { |
| | | InitPlayerInfoEvent(); |
| | | } |
| | | } |
| | | |
| | | public void FightRefreshPlayerHp(uint hp) |
| | | { |
| | | RefreshProperty(PlayerDataRefresh.HP, hp); |
| | | |
| | | if (RefreshPlayerInfoEvent != null) |
| | | { |
| | | RefreshPlayerInfoEvent(); |
| | | } |
| | | |
| | | if (PlayerDataRefreshInfoEvent != null) |
| | | { |
| | | PlayerDataRefreshInfoEvent(PlayerDataRefresh.HP); |
| | | } |
| | | } |
| | | |
| | | public void RefreshPlayerData(H0418_tagObjInfoRefresh vNetData) |
| | | { |
| | | UpdatePlayerData(vNetData); |
| | | StoreModel.RefreshTCBPlayerData(vNetData); |
| | | if (RefreshPlayerInfoEvent != null) |
| | | { |
| | | RefreshPlayerInfoEvent(); |
| | | } |
| | | } |
| | | |
| | | public void RefreshPlayerData(HA709_tagObjInfoListRefresh vNetData) |
| | | { |
| | | if (baseData == null || vNetData.ObjID != PlayerId) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | for (int i = 0; i < vNetData.Count; i++) |
| | | { |
| | | var data = new H0418_tagObjInfoRefresh(); |
| | | data.ObjID = vNetData.ObjID; |
| | | data.ObjType = vNetData.ObjType; |
| | | data.RefreshType = vNetData.RefreshType[i].RefreshType; |
| | | data.Value = vNetData.RefreshType[i].Value; |
| | | StoreModel.RefreshTCBPlayerData(data); |
| | | UpdatePlayerData(data); |
| | | } |
| | | |
| | | if (RefreshPlayerInfoEvent != null) |
| | | { |
| | | RefreshPlayerInfoEvent(); |
| | | } |
| | | } |
| | | |
| | | private void UpdatePlayerData(H0418_tagObjInfoRefresh vNetData) |
| | | { |
| | | if (baseData != null && vNetData.ObjID == baseData.PlayerID) |
| | | { |
| | | var deltaValue = -1; |
| | | switch ((PlayerDataRefresh)vNetData.RefreshType) |
| | | { |
| | | case PlayerDataRefresh.MaxHP: |
| | | deltaValue = (int)(vNetData.Value - extersion.MaxHP); |
| | | break; |
| | | case PlayerDataRefresh.MAXATK: |
| | | deltaValue = (int)(vNetData.Value - extersion.MAXATK); |
| | | break; |
| | | case PlayerDataRefresh.MINATK: |
| | | deltaValue = (int)(vNetData.Value - extersion.MINATK); |
| | | break; |
| | | case PlayerDataRefresh.DEF: |
| | | deltaValue = (int)(vNetData.Value - extersion.DEF); |
| | | break; |
| | | case PlayerDataRefresh.HIT: |
| | | deltaValue = (int)(vNetData.Value - extersion.HIT); |
| | | break; |
| | | case PlayerDataRefresh.Miss: |
| | | deltaValue = (int)(vNetData.Value - extersion.Miss); |
| | | break; |
| | | case PlayerDataRefresh.BattleValEx1: |
| | | deltaValue = (int)(vNetData.Value - extersion.battleValEx1); |
| | | break; |
| | | case PlayerDataRefresh.SpeedValue: |
| | | deltaValue = (int)(vNetData.Value - extersion.SpeedValue); |
| | | break; |
| | | default: |
| | | deltaValue = -1; |
| | | break; |
| | | } |
| | | |
| | | if (deltaValue > 0 && attributePromoteEvent != null) |
| | | { |
| | | attributePromoteEvent((PlayerDataRefresh)vNetData.RefreshType, deltaValue); |
| | | } |
| | | |
| | | var recordSp = -1L; |
| | | if ((PlayerDataRefresh)vNetData.RefreshType == PlayerDataRefresh.ExAttr7 || (PlayerDataRefresh)vNetData.RefreshType == PlayerDataRefresh.ExAttr8) |
| | | { |
| | | recordSp = baseData.treasurePotentialSp; |
| | | } |
| | | |
| | | RefreshProperty((PlayerDataRefresh)vNetData.RefreshType, vNetData.Value); |
| | | |
| | | if (recordSp > 0 && spNewGetEvent != null) |
| | | { |
| | | var deltaSp = baseData.treasurePotentialSp - recordSp; |
| | | if (deltaSp > 0) |
| | | { |
| | | spNewGetEvent(deltaSp); |
| | | } |
| | | } |
| | | |
| | | if (PlayerDataDict.ContainsKey((PlayerDataRefresh)vNetData.RefreshType)) |
| | | { |
| | | PlayerDataDict[(PlayerDataRefresh)vNetData.RefreshType] = (int)vNetData.Value; |
| | | } |
| | | else |
| | | { |
| | | PlayerDataDict.Add((PlayerDataRefresh)vNetData.RefreshType, (int)vNetData.Value); |
| | | } |
| | | |
| | | if (PlayerDataRefreshInfoEvent != null) |
| | | { |
| | | PlayerDataRefreshInfoEvent((PlayerDataRefresh)vNetData.RefreshType); |
| | | } |
| | | |
| | | if (PlayerDataRefreshEvent != null) |
| | | { |
| | | PlayerDataRefreshEvent((PlayerDataRefresh)vNetData.RefreshType, (int)vNetData.Value); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void RefreshProperty(PlayerDataRefresh _type, uint value) |
| | | { |
| | | switch (_type) |
| | | { |
| | | case PlayerDataRefresh.AccountID: |
| | | baseData.AccID = value.ToString(); |
| | | break; |
| | | case PlayerDataRefresh.PlayerID: |
| | | baseData.PlayerID = value; |
| | | break; |
| | | case PlayerDataRefresh.PlayerName: |
| | | break; |
| | | case PlayerDataRefresh.Sex: |
| | | baseData.Sex = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.Job: |
| | | baseData.Job = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.LV: |
| | | if (baseData.LV != 0 && value > baseData.LV) |
| | | { |
| | | if (hero != null) |
| | | { |
| | | if (PlayerDatas.Instance.baseData.MapID == 31080) |
| | | { |
| | | SFXPlayUtility.Instance.PlayBattleEffect(1156, hero); |
| | | } |
| | | else |
| | | { |
| | | SFXPlayUtility.Instance.PlayBattleEffect(1039, hero); |
| | | } |
| | | |
| | | } |
| | | } |
| | | baseData.LV = (ushort)value; |
| | | break; |
| | | case PlayerDataRefresh.TotalExp: |
| | | baseData.TotalExp = value; |
| | | break; |
| | | case PlayerDataRefresh.Family: |
| | | baseData.Family = value; |
| | | if (hero != null) |
| | | { |
| | | hero.ActorInfo.familyID = value; |
| | | ReCheckAttackTarget(); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.TeamHornor: |
| | | break; |
| | | case PlayerDataRefresh.PKValue: |
| | | break; |
| | | case PlayerDataRefresh.FamilyHornor: |
| | | break; |
| | | case PlayerDataRefresh.FamilyActiveValue: |
| | | break; |
| | | case PlayerDataRefresh.CountryHornor: |
| | | break; |
| | | case PlayerDataRefresh.Mate: |
| | | break; |
| | | case PlayerDataRefresh.Gold: |
| | | baseData.Gold = value; |
| | | break; |
| | | case PlayerDataRefresh.GoldPaper: |
| | | baseData.GoldPaper = value; |
| | | break; |
| | | case PlayerDataRefresh.Silver: |
| | | baseData.Silver = value; |
| | | strengthengmodel.MoneyData(); |
| | | break; |
| | | case PlayerDataRefresh.SilverPaper: |
| | | baseData.SilverPaper = value; |
| | | break; |
| | | case PlayerDataRefresh.FightPoint: |
| | | baseData.FightPoint = value; |
| | | ModelCenter.Instance.GetModel<PlayerMainDate>().PowerAdd((int)value); |
| | | break; |
| | | case PlayerDataRefresh.HappyPoint: |
| | | baseData.HappyPoint = value; |
| | | DesignDebug.LogError("脱机挂时间" + (int)value); |
| | | break; |
| | | case PlayerDataRefresh.MapID: |
| | | baseData.MapID = (ushort)value; |
| | | break; |
| | | case PlayerDataRefresh.PosX: |
| | | baseData.PosX = (ushort)value;//角色坐标x |
| | | break; |
| | | case PlayerDataRefresh.PosY: |
| | | baseData.PosY = (ushort)value;//角色坐标y |
| | | break; |
| | | case PlayerDataRefresh.State: |
| | | baseData.State = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.MaxHP: |
| | | extersion.MaxHP = (int)value; |
| | | if (hero != null) |
| | | { |
| | | hero.ActorInfo.ResetHp(-1, -1, (int)value); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.HP: |
| | | baseData.HP = value; |
| | | if (hero != null) |
| | | { |
| | | hero.ActorInfo.ResetHp((int)value); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.MaxMP: |
| | | extersion.MaxMP = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.XP: |
| | | baseData.XP = value; |
| | | break; |
| | | case PlayerDataRefresh.HPRestoreSetting: |
| | | break; |
| | | case PlayerDataRefresh.MPRestoreSetting: |
| | | break; |
| | | case PlayerDataRefresh.ExpRate: |
| | | extersion.ExpRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.DEF: |
| | | extersion.DEF = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.FreePoint: |
| | | baseData.FreePoint = value; |
| | | ModelCenter.Instance.GetModel<RolePointModel>().UpdateRedPoint(); |
| | | break; |
| | | case PlayerDataRefresh.FreeSkillPoint: |
| | | baseData.FreeSkillPoint = value; |
| | | break; |
| | | case PlayerDataRefresh.STR: |
| | | baseData.STR = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.PNE: |
| | | baseData.PNE = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.PHY: |
| | | baseData.PHY = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.CON: |
| | | baseData.CON = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.MINATK: |
| | | extersion.MINATK = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.MAXATK: |
| | | extersion.MAXATK = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.MAtkMin: |
| | | break; |
| | | case PlayerDataRefresh.MAtkMax: |
| | | break; |
| | | case PlayerDataRefresh.MDef: |
| | | break; |
| | | case PlayerDataRefresh.HIT: |
| | | extersion.HIT = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.POISIONATK: |
| | | break; |
| | | case PlayerDataRefresh.FIREATK: |
| | | break; |
| | | case PlayerDataRefresh.REALATK: |
| | | extersion.realATK = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.THUNDERATK: |
| | | break; |
| | | case PlayerDataRefresh.WINDATK: |
| | | break; |
| | | case PlayerDataRefresh.POISIONDEF: |
| | | break; |
| | | case PlayerDataRefresh.FIREDEF: |
| | | break; |
| | | case PlayerDataRefresh.REALDEF: |
| | | extersion.realDEF = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.THUNDERDEF: |
| | | break; |
| | | case PlayerDataRefresh.WINDDEF: |
| | | break; |
| | | case PlayerDataRefresh.Miss: |
| | | extersion.Miss = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.SuperHit: |
| | | extersion.SuperHit = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.Buff: |
| | | break; |
| | | case PlayerDataRefresh.Skill: |
| | | break; |
| | | case PlayerDataRefresh.Mark: |
| | | break; |
| | | case PlayerDataRefresh.SettingH: |
| | | break; |
| | | case PlayerDataRefresh.SettingV: |
| | | break; |
| | | case PlayerDataRefresh.FightPK: |
| | | break; |
| | | case PlayerDataRefresh.ActiveValue: |
| | | break; |
| | | case PlayerDataRefresh.NameColor: |
| | | case PlayerDataRefresh.AtkInterval: |
| | | extersion.AtkInterval = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.Speed: |
| | | extersion.Speed = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.SuperHitRate: |
| | | extersion.SuperHitRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.PickupDist: |
| | | extersion.PickupDist = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.CountryLastWeekHornor: |
| | | break; |
| | | case PlayerDataRefresh.LastWeekOnlineTime: |
| | | break; |
| | | case PlayerDataRefresh.LastWeekFamilyActiveValue: |
| | | break; |
| | | case PlayerDataRefresh.FBID: |
| | | baseData.FBID = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.FamilyLV: |
| | | break; |
| | | case PlayerDataRefresh.RealMapID: |
| | | extersion.RealMapID = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.GMLevel: |
| | | baseData.GMLevel = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.TeamID: |
| | | if (hero != null) |
| | | { |
| | | hero.ActorInfo.teamID = value; |
| | | ReCheckAttackTarget(); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.TeamLV: |
| | | break; |
| | | case PlayerDataRefresh.FightPower: |
| | | baseData.FightPoint = value; |
| | | ModelCenter.Instance.GetModel<PlayerMainDate>().PowerAdd((int)value); |
| | | break; |
| | | case PlayerDataRefresh.RebornMapID: |
| | | break; |
| | | case PlayerDataRefresh.RebornPosX: |
| | | break; |
| | | case PlayerDataRefresh.RebornPosY: |
| | | break; |
| | | case PlayerDataRefresh.Coin: |
| | | break; |
| | | case PlayerDataRefresh.BillboardLV: |
| | | break; |
| | | case PlayerDataRefresh.Tick: |
| | | #if UNITY_EDITOR |
| | | DesignDebug.LogFormat("---- 收到服务端Tick: {0}", value); |
| | | |
| | | if (extersion.Tick != 0) |
| | | { |
| | | uint _curWorldTick = GetWorldTick(); |
| | | uint _diffValue = value > _curWorldTick ? value - _curWorldTick : _curWorldTick - value; |
| | | DesignDebug.LogFormat(" |-------- 当前客户端Tick: {0}, 差异: {1}", _curWorldTick, _diffValue); |
| | | if (_diffValue > 5000) |
| | | { |
| | | DesignDebug.LogFormat(" |-------- <color=red>收到服务端WorldTick与当前的客户端Tick差异超过5秒</color>"); |
| | | } |
| | | } |
| | | #endif |
| | | extersion.Tick = value; |
| | | m_Tick = Environment.TickCount; |
| | | break; |
| | | case PlayerDataRefresh.CurrentPlayerType: |
| | | break; |
| | | case PlayerDataRefresh.FriendFavor: |
| | | break; |
| | | case PlayerDataRefresh.BackpackLV: |
| | | break; |
| | | case PlayerDataRefresh.ReincarnationLV: |
| | | break; |
| | | case PlayerDataRefresh.BaseSTR: |
| | | break; |
| | | case PlayerDataRefresh.BasePNE: |
| | | break; |
| | | case PlayerDataRefresh.BasePHY: |
| | | break; |
| | | case PlayerDataRefresh.BaseCON: |
| | | break; |
| | | case PlayerDataRefresh.ReceivedSalary: |
| | | break; |
| | | case PlayerDataRefresh.WarehouseLV: |
| | | break; |
| | | case PlayerDataRefresh.EquipShowSwitch: |
| | | break; |
| | | case PlayerDataRefresh.LuckValue: |
| | | break; |
| | | case PlayerDataRefresh.ExAttr1: |
| | | baseData.ExAttr1 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr2: |
| | | baseData.ExAttr2 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr3: |
| | | baseData.dungeonLineId = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr4: |
| | | baseData.ExAttr4 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr5: |
| | | baseData.ExAttr5 = value; |
| | | break; |
| | | case PlayerDataRefresh.Faction: |
| | | baseData.faction = value; |
| | | if (hero != null) |
| | | { |
| | | hero.ActorInfo.faction = (int)value; |
| | | ReCheckAttackTarget(); |
| | | hero.SetFairyLeagueHeadUp(baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.InfamyValue: |
| | | break; |
| | | case PlayerDataRefresh.OfficialRank: |
| | | baseData.realmLevel = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.IsFindByLabel: |
| | | break; |
| | | case PlayerDataRefresh.IsCloseFriendLabel: |
| | | break; |
| | | case PlayerDataRefresh.ChangeCoinPointTotal: |
| | | baseData.coinPointTotal = value; |
| | | break; |
| | | case PlayerDataRefresh.VIPLv: |
| | | if (baseData.VIPLv <= 0 && value > 0) |
| | | { |
| | | ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify((int)value); |
| | | } |
| | | else if (value <= 0) |
| | | { |
| | | ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify(0); |
| | | } |
| | | baseData.VIPLv = (byte)value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr6: |
| | | baseData.ExAttr6 = value; |
| | | strengthengmodel.MoneyData(); |
| | | break; |
| | | case PlayerDataRefresh.ExAttr7: |
| | | baseData.ExAttr7 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr8: |
| | | baseData.ExAttr8 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr9: |
| | | baseData.ExAttr9 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr10: |
| | | baseData.ExAttr10 = value; |
| | | break; |
| | | case PlayerDataRefresh.ModelMark: |
| | | break; |
| | | case PlayerDataRefresh.PrizeCoin: |
| | | break; |
| | | case PlayerDataRefresh.ExAttr11: |
| | | baseData.ExAttr11 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr12: |
| | | baseData.ExAttr12 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr13: |
| | | baseData.ExAttr13 = value; |
| | | break; |
| | | case PlayerDataRefresh.ExAttr14: |
| | | baseData.ExAttr14 = value; |
| | | break; |
| | | case PlayerDataRefresh.BattleValEx1: |
| | | extersion.battleValEx1 = (int)value; |
| | | if (hero != null) |
| | | { |
| | | hero.CalculateAtkSpeed((ushort)extersion.battleValEx1); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.BattleValEx3: |
| | | extersion.battleValEx3 = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.DamageReduceRate: |
| | | extersion.damageReduceRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.LuckyHitRate: |
| | | extersion.luckHitRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.LuckyHitVal: |
| | | extersion.luckHitVal = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.ExpPoint: |
| | | baseData.ExpPoint = (ushort)value; |
| | | break; |
| | | case PlayerDataRefresh.Rune: |
| | | ModelCenter.Instance.GetModel<RuneModel>().SetRuneChip((int)value); |
| | | break; |
| | | case PlayerDataRefresh.RuneSplinters: |
| | | ModelCenter.Instance.GetModel<RuneModel>().SetRuneSplinters((int)value); |
| | | break; |
| | | case PlayerDataRefresh.FamilyContribution: |
| | | method.CepaContribution((int)value); |
| | | break; |
| | | case PlayerDataRefresh.FamilyStoreScore: |
| | | ModelCenter.Instance.GetModel<PlayerFairyAuTreasureData>().FairyAuIntegral((int)value); |
| | | break; |
| | | case PlayerDataRefresh.SuperHitReduce: |
| | | extersion.SuperHitReduce = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.LuckyHitRateReduce: |
| | | extersion.LuckyHitRateReduce = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.SkillAtkRateReduce: |
| | | extersion.skillAtkRateReduce = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.SkillAtkRate: |
| | | extersion.SkillAtkRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.Damageper: |
| | | extersion.DamagePer = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.HPRestorePer: |
| | | extersion.HPRestorePer = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.DamageBackRate: |
| | | extersion.DamageBackRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.SpeedValue: |
| | | extersion.SpeedValue = (int)value; |
| | | if (hero != null) |
| | | { |
| | | hero.CalculateMoveSpeed((ushort)extersion.SpeedValue); |
| | | } |
| | | break; |
| | | case PlayerDataRefresh.DungeonLineId: |
| | | break; |
| | | case PlayerDataRefresh.PetDamPer: |
| | | extersion.PetDamPer = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.IgnoreDefRate: |
| | | extersion.IgnoreDefRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.IgnoreDefRateReduce: |
| | | extersion.IgnoreDefRateReduce = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.DamChanceDef: |
| | | extersion.DamChanceDef = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BleedDamage: |
| | | extersion.BleedDamage = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BattleValEx2: |
| | | extersion.BattleValEx2 = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.FaintRate: |
| | | extersion.FaintRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.FaintDefRate: |
| | | extersion.FaintDefRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.FinalHurt: |
| | | extersion.FinalHurt = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.FinalHurtReduce: |
| | | extersion.FinalHurtReduce = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.DamagePerPVP: |
| | | extersion.DamagePerPVP = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.DamagePerPVPReduce: |
| | | extersion.DamagePerPVPReduce = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.ComboDamPer: |
| | | extersion.ComboDamPer = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.ComboDamRate: |
| | | extersion.ComboDamPerRate = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.RealmPoint: |
| | | extersion.realmPoint = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.MagicEssence: |
| | | extersion.magicEssence = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.PlayerPKState: |
| | | extersion.pkState = (int)value; |
| | | 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 PlayerDataRefresh.IsAttackBossState: |
| | | extersion.bossState = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BasicsMinimum: |
| | | baseData.BasicsMinimum = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BasicsMaxAttack: |
| | | baseData.BasicsMaxAttack = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BasicsLife: |
| | | baseData.BasicsLife = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BasicsDefense: |
| | | baseData.BasicsDefense = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BasicsScoreAHit: |
| | | baseData.BasicsScoreAHit = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.BasicsDodge: |
| | | baseData.BasicsDodge = (int)value; |
| | | break; |
| | | case PlayerDataRefresh.OnlyFinalHurt: |
| | | extersion.OnlyFinalHurt = (int)value; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | public int GetPlayerDataByType(PlayerDataRefresh type) |
| | | { |
| | | int value = 0; |
| | | PlayerDataDict.TryGetValue(type, out value); |
| | | return value; |
| | | } |
| | | |
| | | public void OnRefreshWorldLV(uint worldLv, uint worldExpRate) |
| | | { |
| | | this.worldLv = worldLv; |
| | | this.worldExpRate = worldExpRate; |
| | | if (OnRoleAttrRefresh != null) |
| | | { |
| | | OnRoleAttrRefresh(); |
| | | } |
| | | } |
| | | |
| | | 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(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 是否是装备, 这里的装备指的是: 武器, 帽子, 衣服, 下装, 鞋子, 腰带 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public bool IsEquip(E_ItemType itemType) |
| | | { |
| | | return itemType >= E_ItemType.Equip_Weapon && itemType <= E_ItemType.Equip_Shoes; |
| | | } |
| | | |
| | | public void RequestWorldTick() |
| | | { |
| | | CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick(); |
| | | GameNetSystem.Instance.SendInfo(_proto); |
| | | } |
| | | |
| | | public uint GetWorldTick() |
| | | { |
| | | int _currentTick = Environment.TickCount - m_Tick; |
| | | uint _tick = extersion.Tick + (uint)_currentTick; |
| | | return _tick; |
| | | } |
| | | |
| | | } |
| | | using UnityEngine;
|
| | | using System.Collections.Generic;
|
| | | using System;
|
| | | using Snxxz.UI;
|
| | |
|
| | | public class PlayerDatas : Singleton<PlayerDatas>
|
| | | {
|
| | | public GA_Hero hero = null;
|
| | |
|
| | | public H0309_tagPlayerLoginInfo loginInfo;
|
| | | 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();
|
| | | public PlayerMarketData market = new PlayerMarketData();
|
| | | public PlayerRealmData realm = new PlayerRealmData();
|
| | |
|
| | | PlayerSkillDatas m_Skill = new PlayerSkillDatas();
|
| | | public PlayerSkillDatas skill { get { return m_Skill; } }
|
| | |
|
| | | PlayerStrengthengDatas m_StrengthengModel;
|
| | | PlayerStrengthengDatas strengthengmodel { get { return m_StrengthengModel ?? (m_StrengthengModel = ModelCenter.Instance.GetModel<PlayerStrengthengDatas>()); } }
|
| | |
|
| | | PlayerMethodData M_Method;
|
| | | PlayerMethodData method { get { return M_Method ?? (M_Method = ModelCenter.Instance.GetModel<PlayerMethodData>()); } }
|
| | |
|
| | | PlayerRankData m_Rank = new PlayerRankData();
|
| | | public PlayerRankData rank { get { return m_Rank; } }
|
| | |
|
| | | StoreModel m_StoreModel;
|
| | | StoreModel StoreModel
|
| | | {
|
| | | get { return m_StoreModel ?? (m_StoreModel = ModelCenter.Instance.GetModel<StoreModel>()); }
|
| | | }
|
| | |
|
| | | public int totalExpRate { get; set; }
|
| | | public uint worldLv { get; private set; }
|
| | | public uint worldExpRate { get; private set; }
|
| | | public List<uint> maliciousAtkPlayer = new List<uint>();// 发动恶意攻击的玩家列表
|
| | | private int m_Tick;
|
| | |
|
| | | public event Action OnRoleAttrRefresh;
|
| | | public event Action<E_AttackMode> OnSwitchAttackMode;
|
| | | public event Action InitPlayerInfoEvent;
|
| | | public event Action RefreshPlayerInfoEvent;
|
| | | public event Action<PlayerDataRefresh> PlayerDataRefreshInfoEvent;
|
| | | public event Action<PlayerDataRefresh, int> attributePromoteEvent;
|
| | | public event Action<PlayerDataRefresh, int> PlayerDataRefreshEvent;
|
| | | public event Action<long> spNewGetEvent;
|
| | |
|
| | | private Dictionary<PlayerDataRefresh, int> PlayerDataDict = new Dictionary<PlayerDataRefresh, int>();
|
| | |
|
| | | public void InitPlayerData(H0102_tagCDBPlayer data)
|
| | | {
|
| | | baseData.UpdateData(data);
|
| | | HangUpSetModel.Instance.SetOfflinePluginTime((int)baseData.HappyPoint);
|
| | | if (InitPlayerInfoEvent != null)
|
| | | {
|
| | | InitPlayerInfoEvent();
|
| | | }
|
| | | }
|
| | |
|
| | | public void FightRefreshPlayerHp(uint hp)
|
| | | {
|
| | | RefreshProperty(PlayerDataRefresh.HP, hp);
|
| | |
|
| | | if (RefreshPlayerInfoEvent != null)
|
| | | {
|
| | | RefreshPlayerInfoEvent();
|
| | | }
|
| | |
|
| | | if (PlayerDataRefreshInfoEvent != null)
|
| | | {
|
| | | PlayerDataRefreshInfoEvent(PlayerDataRefresh.HP);
|
| | | }
|
| | | }
|
| | |
|
| | | public void RefreshPlayerData(H0418_tagObjInfoRefresh vNetData)
|
| | | {
|
| | | UpdatePlayerData(vNetData);
|
| | | StoreModel.RefreshTCBPlayerData(vNetData);
|
| | | if (RefreshPlayerInfoEvent != null)
|
| | | {
|
| | | RefreshPlayerInfoEvent();
|
| | | }
|
| | | }
|
| | |
|
| | | public void RefreshPlayerData(HA709_tagObjInfoListRefresh vNetData)
|
| | | {
|
| | | if (baseData == null || vNetData.ObjID != PlayerId)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | for (int i = 0; i < vNetData.Count; i++)
|
| | | {
|
| | | var data = new H0418_tagObjInfoRefresh();
|
| | | data.ObjID = vNetData.ObjID;
|
| | | data.ObjType = vNetData.ObjType;
|
| | | data.RefreshType = vNetData.RefreshType[i].RefreshType;
|
| | | data.Value = vNetData.RefreshType[i].Value;
|
| | | StoreModel.RefreshTCBPlayerData(data);
|
| | | UpdatePlayerData(data);
|
| | | }
|
| | |
|
| | | if (RefreshPlayerInfoEvent != null)
|
| | | {
|
| | | RefreshPlayerInfoEvent();
|
| | | }
|
| | | }
|
| | |
|
| | | private void UpdatePlayerData(H0418_tagObjInfoRefresh vNetData)
|
| | | {
|
| | | if (baseData != null && vNetData.ObjID == baseData.PlayerID)
|
| | | {
|
| | | var deltaValue = -1;
|
| | | switch ((PlayerDataRefresh)vNetData.RefreshType)
|
| | | {
|
| | | case PlayerDataRefresh.MaxHP:
|
| | | deltaValue = (int)(vNetData.Value - extersion.MaxHP);
|
| | | break;
|
| | | case PlayerDataRefresh.MAXATK:
|
| | | deltaValue = (int)(vNetData.Value - extersion.MAXATK);
|
| | | break;
|
| | | case PlayerDataRefresh.MINATK:
|
| | | deltaValue = (int)(vNetData.Value - extersion.MINATK);
|
| | | break;
|
| | | case PlayerDataRefresh.DEF:
|
| | | deltaValue = (int)(vNetData.Value - extersion.DEF);
|
| | | break;
|
| | | case PlayerDataRefresh.HIT:
|
| | | deltaValue = (int)(vNetData.Value - extersion.HIT);
|
| | | break;
|
| | | case PlayerDataRefresh.Miss:
|
| | | deltaValue = (int)(vNetData.Value - extersion.Miss);
|
| | | break;
|
| | | case PlayerDataRefresh.BattleValEx1:
|
| | | deltaValue = (int)(vNetData.Value - extersion.battleValEx1);
|
| | | break;
|
| | | case PlayerDataRefresh.SpeedValue:
|
| | | deltaValue = (int)(vNetData.Value - extersion.SpeedValue);
|
| | | break;
|
| | | default:
|
| | | deltaValue = -1;
|
| | | break;
|
| | | }
|
| | |
|
| | | if (deltaValue > 0 && attributePromoteEvent != null)
|
| | | {
|
| | | attributePromoteEvent((PlayerDataRefresh)vNetData.RefreshType, deltaValue);
|
| | | }
|
| | |
|
| | | var recordSp = -1L;
|
| | | if ((PlayerDataRefresh)vNetData.RefreshType == PlayerDataRefresh.ExAttr7 || (PlayerDataRefresh)vNetData.RefreshType == PlayerDataRefresh.ExAttr8)
|
| | | {
|
| | | recordSp = baseData.treasurePotentialSp;
|
| | | }
|
| | |
|
| | | RefreshProperty((PlayerDataRefresh)vNetData.RefreshType, vNetData.Value);
|
| | |
|
| | | if (recordSp > 0 && spNewGetEvent != null)
|
| | | {
|
| | | var deltaSp = baseData.treasurePotentialSp - recordSp;
|
| | | if (deltaSp > 0)
|
| | | {
|
| | | spNewGetEvent(deltaSp);
|
| | | }
|
| | | }
|
| | |
|
| | | if (PlayerDataDict.ContainsKey((PlayerDataRefresh)vNetData.RefreshType))
|
| | | {
|
| | | PlayerDataDict[(PlayerDataRefresh)vNetData.RefreshType] = (int)vNetData.Value;
|
| | | }
|
| | | else
|
| | | {
|
| | | PlayerDataDict.Add((PlayerDataRefresh)vNetData.RefreshType, (int)vNetData.Value);
|
| | | }
|
| | |
|
| | | if (PlayerDataRefreshInfoEvent != null)
|
| | | {
|
| | | PlayerDataRefreshInfoEvent((PlayerDataRefresh)vNetData.RefreshType);
|
| | | }
|
| | |
|
| | | if (PlayerDataRefreshEvent != null)
|
| | | {
|
| | | PlayerDataRefreshEvent((PlayerDataRefresh)vNetData.RefreshType, (int)vNetData.Value);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public void RefreshProperty(PlayerDataRefresh _type, uint value)
|
| | | {
|
| | | switch (_type)
|
| | | {
|
| | | case PlayerDataRefresh.AccountID:
|
| | | baseData.AccID = value.ToString();
|
| | | break;
|
| | | case PlayerDataRefresh.PlayerID:
|
| | | baseData.PlayerID = value;
|
| | | break;
|
| | | case PlayerDataRefresh.PlayerName:
|
| | | break;
|
| | | case PlayerDataRefresh.Sex:
|
| | | baseData.Sex = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.Job:
|
| | | baseData.Job = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.LV:
|
| | | if (baseData.LV != 0 && value > baseData.LV)
|
| | | {
|
| | | if (hero != null)
|
| | | {
|
| | | if (PlayerDatas.Instance.baseData.MapID == 31080)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(1156, hero);
|
| | | }
|
| | | else
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(1039, hero);
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | | baseData.LV = (ushort)value;
|
| | | break;
|
| | | case PlayerDataRefresh.TotalExp:
|
| | | baseData.TotalExp = value;
|
| | | break;
|
| | | case PlayerDataRefresh.Family:
|
| | | baseData.Family = value;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.ActorInfo.familyID = value;
|
| | | ReCheckAttackTarget();
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.TeamHornor:
|
| | | break;
|
| | | case PlayerDataRefresh.PKValue:
|
| | | break;
|
| | | case PlayerDataRefresh.FamilyHornor:
|
| | | break;
|
| | | case PlayerDataRefresh.FamilyActiveValue:
|
| | | break;
|
| | | case PlayerDataRefresh.CountryHornor:
|
| | | break;
|
| | | case PlayerDataRefresh.Mate:
|
| | | break;
|
| | | case PlayerDataRefresh.Gold:
|
| | | baseData.Gold = value;
|
| | | break;
|
| | | case PlayerDataRefresh.GoldPaper:
|
| | | baseData.GoldPaper = value;
|
| | | break;
|
| | | case PlayerDataRefresh.Silver:
|
| | | baseData.Silver = value;
|
| | | strengthengmodel.MoneyData();
|
| | | break;
|
| | | case PlayerDataRefresh.SilverPaper:
|
| | | baseData.SilverPaper = value;
|
| | | break;
|
| | | case PlayerDataRefresh.FightPoint:
|
| | | baseData.FightPoint = value;
|
| | | ModelCenter.Instance.GetModel<PlayerMainDate>().PowerAdd((int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.HappyPoint:
|
| | | baseData.HappyPoint = value;
|
| | | DebugEx.LogError("脱机挂时间" + (int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.MapID:
|
| | | baseData.MapID = (ushort)value;
|
| | | break;
|
| | | case PlayerDataRefresh.PosX:
|
| | | baseData.PosX = (ushort)value;//角色坐标x
|
| | | break;
|
| | | case PlayerDataRefresh.PosY:
|
| | | baseData.PosY = (ushort)value;//角色坐标y
|
| | | break;
|
| | | case PlayerDataRefresh.State:
|
| | | baseData.State = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.MaxHP:
|
| | | extersion.MaxHP = (int)value;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.ActorInfo.ResetHp(-1, -1, (int)value);
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.HP:
|
| | | baseData.HP = value;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.ActorInfo.ResetHp((int)value);
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.MaxMP:
|
| | | extersion.MaxMP = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.XP:
|
| | | baseData.XP = value;
|
| | | break;
|
| | | case PlayerDataRefresh.HPRestoreSetting:
|
| | | break;
|
| | | case PlayerDataRefresh.MPRestoreSetting:
|
| | | break;
|
| | | case PlayerDataRefresh.ExpRate:
|
| | | extersion.ExpRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.DEF:
|
| | | extersion.DEF = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.FreePoint:
|
| | | baseData.FreePoint = value;
|
| | | ModelCenter.Instance.GetModel<RolePointModel>().UpdateRedPoint();
|
| | | break;
|
| | | case PlayerDataRefresh.FreeSkillPoint:
|
| | | baseData.FreeSkillPoint = value;
|
| | | break;
|
| | | case PlayerDataRefresh.STR:
|
| | | baseData.STR = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.PNE:
|
| | | baseData.PNE = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.PHY:
|
| | | baseData.PHY = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.CON:
|
| | | baseData.CON = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.MINATK:
|
| | | extersion.MINATK = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.MAXATK:
|
| | | extersion.MAXATK = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.MAtkMin:
|
| | | break;
|
| | | case PlayerDataRefresh.MAtkMax:
|
| | | break;
|
| | | case PlayerDataRefresh.MDef:
|
| | | break;
|
| | | case PlayerDataRefresh.HIT:
|
| | | extersion.HIT = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.POISIONATK:
|
| | | break;
|
| | | case PlayerDataRefresh.FIREATK:
|
| | | break;
|
| | | case PlayerDataRefresh.REALATK:
|
| | | extersion.realATK = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.THUNDERATK:
|
| | | break;
|
| | | case PlayerDataRefresh.WINDATK:
|
| | | break;
|
| | | case PlayerDataRefresh.POISIONDEF:
|
| | | break;
|
| | | case PlayerDataRefresh.FIREDEF:
|
| | | break;
|
| | | case PlayerDataRefresh.REALDEF:
|
| | | extersion.realDEF = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.THUNDERDEF:
|
| | | break;
|
| | | case PlayerDataRefresh.WINDDEF:
|
| | | break;
|
| | | case PlayerDataRefresh.Miss:
|
| | | extersion.Miss = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.SuperHit:
|
| | | extersion.SuperHit = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.Buff:
|
| | | break;
|
| | | case PlayerDataRefresh.Skill:
|
| | | break;
|
| | | case PlayerDataRefresh.Mark:
|
| | | break;
|
| | | case PlayerDataRefresh.SettingH:
|
| | | break;
|
| | | case PlayerDataRefresh.SettingV:
|
| | | break;
|
| | | case PlayerDataRefresh.FightPK:
|
| | | break;
|
| | | case PlayerDataRefresh.ActiveValue:
|
| | | break;
|
| | | case PlayerDataRefresh.NameColor:
|
| | | case PlayerDataRefresh.AtkInterval:
|
| | | extersion.AtkInterval = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.Speed:
|
| | | extersion.Speed = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.SuperHitRate:
|
| | | extersion.SuperHitRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.PickupDist:
|
| | | extersion.PickupDist = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.CountryLastWeekHornor:
|
| | | break;
|
| | | case PlayerDataRefresh.LastWeekOnlineTime:
|
| | | break;
|
| | | case PlayerDataRefresh.LastWeekFamilyActiveValue:
|
| | | break;
|
| | | case PlayerDataRefresh.FBID:
|
| | | baseData.FBID = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.FamilyLV:
|
| | | break;
|
| | | case PlayerDataRefresh.RealMapID:
|
| | | extersion.RealMapID = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.GMLevel:
|
| | | baseData.GMLevel = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.TeamID:
|
| | | if (hero != null)
|
| | | {
|
| | | hero.ActorInfo.teamID = value;
|
| | | ReCheckAttackTarget();
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.TeamLV:
|
| | | break;
|
| | | case PlayerDataRefresh.FightPower:
|
| | | baseData.FightPoint = value;
|
| | | ModelCenter.Instance.GetModel<PlayerMainDate>().PowerAdd((int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.RebornMapID:
|
| | | break;
|
| | | case PlayerDataRefresh.RebornPosX:
|
| | | break;
|
| | | case PlayerDataRefresh.RebornPosY:
|
| | | break;
|
| | | case PlayerDataRefresh.Coin:
|
| | | break;
|
| | | case PlayerDataRefresh.BillboardLV:
|
| | | break;
|
| | | case PlayerDataRefresh.Tick:
|
| | | #if UNITY_EDITOR
|
| | | DebugEx.LogFormat("---- 收到服务端Tick: {0}", value);
|
| | |
|
| | | if (extersion.Tick != 0)
|
| | | {
|
| | | uint _curWorldTick = GetWorldTick();
|
| | | uint _diffValue = value > _curWorldTick ? value - _curWorldTick : _curWorldTick - value;
|
| | | DebugEx.LogFormat(" |-------- 当前客户端Tick: {0}, 差异: {1}", _curWorldTick, _diffValue);
|
| | | if (_diffValue > 5000)
|
| | | {
|
| | | DebugEx.LogFormat(" |-------- <color=red>收到服务端WorldTick与当前的客户端Tick差异超过5秒</color>");
|
| | | }
|
| | | }
|
| | | #endif
|
| | | extersion.Tick = value;
|
| | | m_Tick = Environment.TickCount;
|
| | | break;
|
| | | case PlayerDataRefresh.CurrentPlayerType:
|
| | | break;
|
| | | case PlayerDataRefresh.FriendFavor:
|
| | | break;
|
| | | case PlayerDataRefresh.BackpackLV:
|
| | | break;
|
| | | case PlayerDataRefresh.ReincarnationLV:
|
| | | break;
|
| | | case PlayerDataRefresh.BaseSTR:
|
| | | break;
|
| | | case PlayerDataRefresh.BasePNE:
|
| | | break;
|
| | | case PlayerDataRefresh.BasePHY:
|
| | | break;
|
| | | case PlayerDataRefresh.BaseCON:
|
| | | break;
|
| | | case PlayerDataRefresh.ReceivedSalary:
|
| | | break;
|
| | | case PlayerDataRefresh.WarehouseLV:
|
| | | break;
|
| | | case PlayerDataRefresh.EquipShowSwitch:
|
| | | break;
|
| | | case PlayerDataRefresh.LuckValue:
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr1:
|
| | | baseData.ExAttr1 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr2:
|
| | | baseData.ExAttr2 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr3:
|
| | | baseData.dungeonLineId = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr4:
|
| | | baseData.ExAttr4 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr5:
|
| | | baseData.ExAttr5 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.Faction:
|
| | | baseData.faction = value;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.ActorInfo.faction = (int)value;
|
| | | ReCheckAttackTarget();
|
| | | hero.SetFairyLeagueHeadUp(baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.InfamyValue:
|
| | | break;
|
| | | case PlayerDataRefresh.OfficialRank:
|
| | | baseData.realmLevel = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.IsFindByLabel:
|
| | | break;
|
| | | case PlayerDataRefresh.IsCloseFriendLabel:
|
| | | break;
|
| | | case PlayerDataRefresh.ChangeCoinPointTotal:
|
| | | baseData.coinPointTotal = value;
|
| | | break;
|
| | | case PlayerDataRefresh.VIPLv:
|
| | | if (baseData.VIPLv <= 0 && value > 0)
|
| | | {
|
| | | ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify((int)value);
|
| | | }
|
| | | else if (value <= 0)
|
| | | {
|
| | | ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify(0);
|
| | | }
|
| | | baseData.VIPLv = (byte)value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr6:
|
| | | baseData.ExAttr6 = value;
|
| | | strengthengmodel.MoneyData();
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr7:
|
| | | baseData.ExAttr7 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr8:
|
| | | baseData.ExAttr8 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr9:
|
| | | baseData.ExAttr9 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr10:
|
| | | baseData.ExAttr10 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ModelMark:
|
| | | break;
|
| | | case PlayerDataRefresh.PrizeCoin:
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr11:
|
| | | baseData.ExAttr11 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr12:
|
| | | baseData.ExAttr12 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr13:
|
| | | baseData.ExAttr13 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExAttr14:
|
| | | baseData.ExAttr14 = value;
|
| | | break;
|
| | | case PlayerDataRefresh.BattleValEx1:
|
| | | extersion.battleValEx1 = (int)value;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.CalculateAtkSpeed((ushort)extersion.battleValEx1);
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.BattleValEx3:
|
| | | extersion.battleValEx3 = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.DamageReduceRate:
|
| | | extersion.damageReduceRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.LuckyHitRate:
|
| | | extersion.luckHitRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.LuckyHitVal:
|
| | | extersion.luckHitVal = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.ExpPoint:
|
| | | baseData.ExpPoint = (ushort)value;
|
| | | break;
|
| | | case PlayerDataRefresh.Rune:
|
| | | ModelCenter.Instance.GetModel<RuneModel>().SetRuneChip((int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.RuneSplinters:
|
| | | ModelCenter.Instance.GetModel<RuneModel>().SetRuneSplinters((int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.FamilyContribution:
|
| | | method.CepaContribution((int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.FamilyStoreScore:
|
| | | ModelCenter.Instance.GetModel<PlayerFairyAuTreasureData>().FairyAuIntegral((int)value);
|
| | | break;
|
| | | case PlayerDataRefresh.SuperHitReduce:
|
| | | extersion.SuperHitReduce = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.LuckyHitRateReduce:
|
| | | extersion.LuckyHitRateReduce = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.SkillAtkRateReduce:
|
| | | extersion.skillAtkRateReduce = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.SkillAtkRate:
|
| | | extersion.SkillAtkRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.Damageper:
|
| | | extersion.DamagePer = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.HPRestorePer:
|
| | | extersion.HPRestorePer = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.DamageBackRate:
|
| | | extersion.DamageBackRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.SpeedValue:
|
| | | extersion.SpeedValue = (int)value;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.CalculateMoveSpeed((ushort)extersion.SpeedValue);
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.DungeonLineId:
|
| | | break;
|
| | | case PlayerDataRefresh.PetDamPer:
|
| | | extersion.PetDamPer = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.IgnoreDefRate:
|
| | | extersion.IgnoreDefRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.IgnoreDefRateReduce:
|
| | | extersion.IgnoreDefRateReduce = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.DamChanceDef:
|
| | | extersion.DamChanceDef = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BleedDamage:
|
| | | extersion.BleedDamage = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BattleValEx2:
|
| | | extersion.BattleValEx2 = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.FaintRate:
|
| | | extersion.FaintRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.FaintDefRate:
|
| | | extersion.FaintDefRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.FinalHurt:
|
| | | extersion.FinalHurt = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.FinalHurtReduce:
|
| | | extersion.FinalHurtReduce = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.DamagePerPVP:
|
| | | extersion.DamagePerPVP = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.DamagePerPVPReduce:
|
| | | extersion.DamagePerPVPReduce = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.ComboDamPer:
|
| | | extersion.ComboDamPer = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.ComboDamRate:
|
| | | extersion.ComboDamPerRate = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.RealmPoint:
|
| | | extersion.realmPoint = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.MagicEssence:
|
| | | extersion.magicEssence = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.PlayerPKState:
|
| | | extersion.pkState = (int)value;
|
| | | 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 PlayerDataRefresh.IsAttackBossState:
|
| | | extersion.bossState = (int)value;
|
| | | if (hero != null)
|
| | | {
|
| | | if (extersion.bossState == 0)
|
| | | {
|
| | | hero.atkBossID = 0;
|
| | | }
|
| | | }
|
| | | break;
|
| | | case PlayerDataRefresh.BasicsMinimum:
|
| | | baseData.BasicsMinimum = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BasicsMaxAttack:
|
| | | baseData.BasicsMaxAttack = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BasicsLife:
|
| | | baseData.BasicsLife = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BasicsDefense:
|
| | | baseData.BasicsDefense = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BasicsScoreAHit:
|
| | | baseData.BasicsScoreAHit = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.BasicsDodge:
|
| | | baseData.BasicsDodge = (int)value;
|
| | | break;
|
| | | case PlayerDataRefresh.OnlyFinalHurt:
|
| | | extersion.OnlyFinalHurt = (int)value;
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | public int GetPlayerDataByType(PlayerDataRefresh type)
|
| | | {
|
| | | int value = 0;
|
| | | PlayerDataDict.TryGetValue(type, out value);
|
| | | return value;
|
| | | }
|
| | |
|
| | | public void OnRefreshWorldLV(uint worldLv, uint worldExpRate)
|
| | | {
|
| | | this.worldLv = worldLv;
|
| | | this.worldExpRate = worldExpRate;
|
| | | if (OnRoleAttrRefresh != null)
|
| | | {
|
| | | OnRoleAttrRefresh();
|
| | | }
|
| | | }
|
| | |
|
| | | 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();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 是否是装备, 这里的装备指的是: 武器, 帽子, 衣服, 下装, 鞋子, 腰带
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | public bool IsEquip(E_ItemType itemType)
|
| | | {
|
| | | return itemType >= E_ItemType.Equip_Weapon && itemType <= E_ItemType.Equip_Shoes;
|
| | | }
|
| | |
|
| | | public void RequestWorldTick()
|
| | | {
|
| | | CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick();
|
| | | GameNetSystem.Instance.SendInfo(_proto);
|
| | | }
|
| | |
|
| | | public uint GetWorldTick()
|
| | | {
|
| | | int _currentTick = Environment.TickCount - m_Tick;
|
| | | uint _tick = extersion.Tick + (uint)_currentTick;
|
| | | return _tick;
|
| | | }
|
| | |
|
| | | }
|