using UnityEngine;
|
using System.Collections.Generic;
|
using System;
|
using vnxbqy.UI;
|
using LitJson;
|
|
|
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();
|
|
PlayerSkillDatas m_Skill = new PlayerSkillDatas();
|
public PlayerSkillDatas skill { get { return m_Skill; } }
|
PlayerMethodData method { get { return ModelCenter.Instance.GetModel<PlayerMethodData>(); } }
|
StoreModel StoreModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
|
DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } }
|
|
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 uint crossServerTick;
|
public uint changeLV = 0; //当前升x级
|
|
public event Action worldLevelUpdateEvent;
|
public event Action<E_AttackMode> OnSwitchAttackMode;
|
|
public event Action playerDataUpdateEvent; // 无区别更新,慎用
|
public event Action<PlayerDataType> playerDataRefreshEvent;
|
public event Action<PlayerDataType, int> attributePromoteEvent;
|
public event Action<long> spNewGetEvent;
|
|
|
private Dictionary<PlayerDataType, ulong> PlayerDataDict = new Dictionary<PlayerDataType, ulong>();
|
|
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(false, 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(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(bool isMainServerData, 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)
|
{
|
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)
|
{
|
ynmbxxjUtil.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)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("joinalliance", "", false);
|
LocalSave.SetInt("FimilyReport" + PlayerDatas.Instance.baseData.PlayerID, 1);
|
}
|
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;
|
if (isMainServerData)
|
{
|
baseData.mainServerMapIdRecord = baseData.MapID;
|
}
|
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;
|
if (hero != null)
|
{
|
hero.ActorInfo.ResetHp(-1, (long)extersion.MaxHP);
|
}
|
break;
|
case PlayerDataType.HP:
|
if (CrossServerUtility.IsCrossServer())
|
{
|
if (!isMainServerData)
|
{
|
baseData.HP = value + valueEx * Constants.ExpPointValue;
|
}
|
}
|
else
|
{
|
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:
|
if (hero != null)
|
{
|
hero.ActorInfo.teamID = value;
|
ReCheckAttackTarget();
|
}
|
break;
|
case PlayerDataType.TeamLV:
|
break;
|
case PlayerDataType.FightPower:
|
baseData.FightPoint = value + valueEx * Constants.ExpPointValue;
|
ModelCenter.Instance.GetModel<PlayerMainDate>().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
|
DebugEx.LogFormat("---- 收到服务端Tick: {0}", value);
|
if (isMainServerData)
|
{
|
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>");
|
}
|
}
|
}
|
else
|
{
|
if (crossServerTick != 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
|
if (isMainServerData)
|
{
|
extersion.Tick = value;
|
}
|
else
|
{
|
crossServerTick = 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;
|
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:
|
if (hero != null && !hero.ActorInfo.serverDie)
|
{
|
if (hero.aiHandler.IsAuto())
|
{
|
hero.Behaviour.StopHandupAI(true);
|
}
|
}
|
baseData.ExAttr1 = value;
|
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;
|
|
if (oldExAttr5 > 2 && value <= 2)
|
{
|
if (GameNetSystem.Instance.crossServerConnected_Loigc)
|
{
|
GameNetSystem.Instance.crossServerConnected_Loigc = false;
|
GameNetSystem.Instance.DisconnectCrossServer();
|
|
if (hero != null)
|
{
|
StatusMgr.Instance.ReleaseActor(hero.ServerInstID);
|
}
|
|
extersion.pkState = 0;
|
baseData.MapID = baseData.mainServerMapIdRecord;
|
baseData.dungeonLineId = 0;
|
baseData.dungeonMapId = 0;
|
ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData();
|
|
StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
|
{
|
toMapId = baseData.MapID,
|
toLineId = 0,
|
needEmpty = true,
|
needLoadResource = true,
|
serverType = ServerType.CrossSever,
|
isClientLoadMap = true,
|
refreshPlayerDatas = true
|
});
|
}
|
}
|
break;
|
case PlayerDataType.Faction:
|
baseData.faction = value;
|
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:
|
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 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;
|
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:
|
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;
|
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;
|
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;
|
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<ChatCenter>().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();
|
}
|
|
/// <summary>
|
/// 是否是装备, 这里的装备指的是: 武器, 帽子, 衣服, 下装, 鞋子, 腰带
|
/// </summary>
|
/// <returns></returns>
|
public bool IsEquip(ItemType itemType)
|
{
|
return itemType >= ItemType.Equip_Weapon && itemType <= ItemType.Equip_Shoes;
|
}
|
|
public void RequestWorldTick()
|
{
|
CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick();
|
if (CrossServerUtility.IsCrossServer())
|
{
|
GameNetSystem.Instance.SendToCrossServer(_proto);
|
}
|
else
|
{
|
GameNetSystem.Instance.SendInfo(_proto);
|
}
|
}
|
|
public void ClearTick()
|
{
|
extersion.Tick = 0;
|
crossServerTick = 0;
|
}
|
|
public bool IsTickVaild()
|
{
|
if (CrossServerUtility.IsCrossServer())
|
{
|
return crossServerTick != 0;
|
}
|
else
|
{
|
return extersion.Tick != 0;
|
}
|
}
|
|
public uint GetWorldTick()
|
{
|
int _currentTick = Environment.TickCount - m_Tick;
|
uint _tick = CrossServerUtility.IsCrossServer() ? crossServerTick + (uint)_currentTick : extersion.Tick + (uint)_currentTick;
|
return _tick;
|
}
|
|
}
|