using UnityEngine;
|
using System.Collections.Generic;
|
using System;
|
using Snxxz.UI;
|
|
[XLua.LuaCallCSharp]
|
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; } }
|
|
StrengthenModel m_StrengthengModel;
|
StrengthenModel strengthengmodel { get { return m_StrengthengModel ?? (m_StrengthengModel = ModelCenter.Instance.GetModel<StrengthenModel>()); } }
|
|
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 uint crossServerTick;
|
|
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 UpdatePlayerData(HA112_tagMCDBPlayer data)
|
{
|
baseData.UpdateData(data);
|
if (hero != null)
|
{
|
hero.InitBornPos(baseData.PosX, baseData.PosY);
|
CameraController.Instance.Apply();
|
}
|
|
if (InitPlayerInfoEvent != null)
|
{
|
InitPlayerInfoEvent();
|
}
|
}
|
|
public void FightRefreshPlayerHp(uint hp)
|
{
|
RefreshProperty(false, 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++)
|
{
|
if (CrossServerUtility.IsCrossServer())
|
{
|
if (vNetData.socketType == ServerType.Main)
|
{
|
if (vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.HP
|
|| vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.MaxHP
|
|| vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.MaxProDef
|
|| vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.ExAttr4)
|
{
|
continue;
|
}
|
}
|
}
|
|
if (ClientDungeonStageUtility.isClientDungeon
|
#if UNITY_EDITOR
|
|| RuntimeLogUtility.TEST_CLIENT_PVP
|
#endif
|
)
|
{
|
if (vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.HP)
|
{
|
continue;
|
}
|
}
|
|
var data = new H0418_tagObjInfoRefresh();
|
data.socketType = vNetData.socketType;
|
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(vNetData.socketType == ServerType.Main, (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(bool isMainServerData, 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:
|
break;
|
case PlayerDataRefresh.HappyPoint:
|
baseData.HappyPoint = value;
|
DebugEx.Log("脱机挂时间" + (int)value);
|
break;
|
case PlayerDataRefresh.MapID:
|
baseData.MapID = (ushort)value;
|
if (isMainServerData)
|
{
|
baseData.mainServerMapIdRecord = baseData.MapID;
|
}
|
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:
|
if (CrossServerUtility.IsCrossServer())
|
{
|
if (!isMainServerData)
|
{
|
baseData.HP = value;
|
}
|
}
|
else
|
{
|
baseData.HP = 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;
|
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 (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 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:
|
baseData.equipShowSwitch = value;
|
if (hero != null)
|
{
|
int _level = baseData.godWeaponLV_4;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(value, 4, out _level))
|
{
|
hero.SwitchGodWeapon(4, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(4, 0);
|
}
|
_level = baseData.godWeaponLV_1;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(value, 1, out _level))
|
{
|
hero.SwitchGodWeapon(1, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(1, 0);
|
}
|
_level = baseData.godWeaponLV_2;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(value, 2, out _level))
|
{
|
hero.SwitchGodWeapon(2, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(2, 0);
|
}
|
}
|
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:
|
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;
|
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
|
});
|
}
|
}
|
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.bubbleId = 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.ServerGroupId = 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 = 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<FairyAuTreasureModel>().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.MaxProDef:
|
extersion.MaxProDef = (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 (baseData.MapID != 31220)
|
{
|
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;
|
case PlayerDataRefresh.CDBPlayerRefresh_NPCHurtAddPer:
|
extersion.NpcHurtAddPer = (int)value;
|
break;
|
case PlayerDataRefresh.FunalHurtPer:
|
extersion.FunalHurtPer = (int)value;
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_ForbidenTalk:
|
extersion.forbidenTalk = (int)value;
|
ModelCenter.Instance.GetModel<ChatCenter>().ServerForbidenChat(extersion.forbidenTalk == 1);
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_TalentPoint:
|
extersion.talentPoint = (int)value;
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_GodWeaponLV_1:
|
baseData.godWeaponLV_1 = (int)value;
|
if (hero != null)
|
{
|
int _level = (int)value;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(baseData.equipShowSwitch, 1, out _level))
|
{
|
hero.SwitchGodWeapon(1, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(1, 0);
|
}
|
}
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_GodWeaponLV_2:
|
baseData.godWeaponLV_2 = (int)value;
|
if (hero != null)
|
{
|
int _level = (int)value;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(baseData.equipShowSwitch, 2, out _level))
|
{
|
hero.SwitchGodWeapon(2, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(2, 0);
|
}
|
}
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_GodWeaponLV_3:
|
baseData.godWeaponLV_3 = (int)value;
|
if (hero != null)
|
{
|
int _level = (int)value;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(baseData.equipShowSwitch, 3, out _level))
|
{
|
hero.SwitchGodWeapon(3, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(3, 0);
|
}
|
}
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_GodWeaponLV_4:
|
baseData.godWeaponLV_4 = (int)value;
|
if (hero != null)
|
{
|
int _level = (int)value;
|
if (EquipShowSwitch.IsGodWeaponEffectOn(baseData.equipShowSwitch, 4, out _level))
|
{
|
hero.SwitchGodWeapon(4, _level);
|
}
|
else
|
{
|
hero.SwitchGodWeapon(4, 0);
|
}
|
}
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_SoulDust:
|
extersion.soulDust = value;
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_SoulSplinters:
|
extersion.soulSplinters = value;
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_SoulCore:
|
extersion.soulCore = value;
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_Honor:
|
extersion.honorValue = (int)value;
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_ZhuxianRate:
|
break;
|
case PlayerDataRefresh.CDBPlayerRefresh_ZhuxianHurtPer:
|
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();
|
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;
|
}
|
|
}
|