Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -31,6 +31,7 @@ public static void Init() { // 登记相应的数据体及对应的数据转逻辑类 Register(typeof(HA112_tagMCDBPlayer), typeof(DTCA112_tagMCDBPlayer)); Register(typeof(HC106_tagMCEnterCrossServerError), typeof(DTCC106_tagMCEnterCrossServerError)); Register(typeof(HC105_tagMCStartEnterCrossServer), typeof(DTCC105_tagMCStartEnterCrossServer)); Register(typeof(HC104_tagMCPrepareEnterCrossServer), typeof(DTCC104_tagMCPrepareEnterCrossServer)); Core/GameEngine/Model/Player/Character/PlayerBaseData.cs
@@ -1,7 +1,6 @@ public class PlayerBaseData { PartDataBuf mainServerDataBuf = new PartDataBuf();// public int mainServerMapIdRecord = 0; public string AccID; //_KEY_i_帐号名, 该角色所在的帐号的用户名 public uint PlayerID; //_IDT_ @@ -97,6 +96,11 @@ Silver = _serverInfo.Silver; SilverPaper = _serverInfo.SilverPaper; MapID = _serverInfo.MapID; if (_serverInfo.socketType==GameNetSystem.SocketType.Main) { mainServerMapIdRecord = MapID; } PosX = _serverInfo.PosX; PosY = _serverInfo.PosY; State = _serverInfo.State; @@ -162,82 +166,74 @@ } } if (_serverInfo.socketType == GameNetSystem.SocketType.Main) { mainServerDataBuf.PlayerName = PlayerName; mainServerDataBuf.MapID = MapID; mainServerDataBuf.FBID = FBID; mainServerDataBuf.dungeonLineId = dungeonLineId; mainServerDataBuf.PosX = PosX; mainServerDataBuf.PosY = PosY; mainServerDataBuf.HP = HP; } } public void ApplyMainServerDataBuf() public void UpdateData(HA112_tagMCDBPlayer serverInfo) { PlayerName = mainServerDataBuf.PlayerName; MapID = mainServerDataBuf.MapID; FBID = mainServerDataBuf.FBID; dungeonLineId = mainServerDataBuf.dungeonLineId; PosX = mainServerDataBuf.PosX; PosY = mainServerDataBuf.PosY; HP = mainServerDataBuf.HP; AccID = serverInfo.AccID; PlayerID = serverInfo.PlayerID; PlayerName = serverInfo.PlayerName.Trim().Replace(" ", ""); AccState = serverInfo.AccState; GMLevel = serverInfo.GMLevel; Sex = serverInfo.Sex; Job = serverInfo.Job; LV = serverInfo.LV; LVEx = serverInfo.LVEx; LV2 = serverInfo.LV2; ExpPoint = serverInfo.ExpPoint; TotalExp = serverInfo.TotalExp; Family = serverInfo.Family; FamilyName = serverInfo.FamilyName.Trim().Replace(" ", ""); Gold = serverInfo.Gold; GoldPaper = serverInfo.GoldPaper; Silver = serverInfo.Silver; SilverPaper = serverInfo.SilverPaper; MapID = serverInfo.MapID; if (serverInfo.socketType == GameNetSystem.SocketType.Main) { mainServerMapIdRecord = MapID; } PosX = serverInfo.PosX; PosY = serverInfo.PosY; State = serverInfo.State; XP = serverInfo.XP; FreePoint = serverInfo.FreePoint; FreeSkillPoint = serverInfo.FreeSkillPoint; STR = serverInfo.STR; PNE = serverInfo.PNE; PHY = serverInfo.PHY; CON = serverInfo.CON; AttackMode = serverInfo.AttackMode; FBID = serverInfo.FBID; ExAttr1 = serverInfo.ExAttr1; ExAttr2 = serverInfo.ExAttr2; dungeonLineId = (int)serverInfo.ExAttr3; ExAttr4 = serverInfo.ExAttr4; ExAttr5 = serverInfo.ExAttr5; realmLevel = serverInfo.OfficialRank; VIPLv = serverInfo.VIPLv; ExAttr6 = serverInfo.ExAttr6; ExAttr7 = serverInfo.ExAttr7; ExAttr8 = serverInfo.ExAttr8; ExAttr9 = serverInfo.ExAttr9; bubbleId = serverInfo.ExAttr10; ExAttr11 = serverInfo.ExAttr11; ExAttr12 = serverInfo.ExAttr12; ExAttr13 = serverInfo.ExAttr13; ExAttr14 = serverInfo.ExAttr14; HappyPoint = serverInfo.HappyPoint; faction = serverInfo.Faction; coinPointTotal = serverInfo.ChangeCoinPointTotal; godWeaponLV_1 = (int)serverInfo.ExAttr15; godWeaponLV_2 = (int)serverInfo.ExAttr16; godWeaponLV_3 = (int)serverInfo.ExAttr17; godWeaponLV_4 = (int)serverInfo.ExAttr18; if (PlayerDatas.Instance.hero != null) { PlayerDatas.Instance.hero.ActorInfo.serverDie = mainServerDataBuf.heroServerDie; PlayerDatas.Instance.hero.ActorInfo.ResetHp((int)serverInfo.HP); } } public void RecordMainServerData(bool isMainServerData, PlayerDataRefresh playerDataType, uint value) { if (!isMainServerData) { return; } switch (playerDataType) { case PlayerDataRefresh.PlayerName: break; case PlayerDataRefresh.MapID: mainServerDataBuf.MapID = (ushort)value; break; case PlayerDataRefresh.FBID: mainServerDataBuf.FBID = (byte)value; break; case PlayerDataRefresh.ExAttr3: mainServerDataBuf.dungeonLineId = (byte)value; break; case PlayerDataRefresh.PosX: mainServerDataBuf.PosX = (ushort)value; break; case PlayerDataRefresh.PosY: mainServerDataBuf.PosY = (ushort)value; break; case PlayerDataRefresh.HP: mainServerDataBuf.HP = value; break; default: break; } } public void RecordMainServerDie(bool isMainServerData, bool serverDie) { mainServerDataBuf.heroServerDie = serverDie; } public class PartDataBuf { public string PlayerName; public ushort MapID; public byte FBID; public int dungeonLineId; public ushort PosX; public ushort PosY; public uint HP; public bool heroServerDie; } } Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -65,6 +65,15 @@ } } public void UpdatePlayerData(HA112_tagMCDBPlayer data) { baseData.UpdateData(data); if (InitPlayerInfoEvent != null) { InitPlayerInfoEvent(); } } public void FightRefreshPlayerHp(uint hp) { RefreshProperty(false, PlayerDataRefresh.HP, hp); @@ -273,15 +282,16 @@ break; case PlayerDataRefresh.MapID: baseData.MapID = (ushort)value; baseData.RecordMainServerData(isMainServerData, _type, value); if (isMainServerData) { baseData.mainServerMapIdRecord = baseData.MapID; } break; case PlayerDataRefresh.PosX: baseData.PosX = (ushort)value;//角色坐标x baseData.RecordMainServerData(isMainServerData, _type, value); break; case PlayerDataRefresh.PosY: baseData.PosY = (ushort)value;//角色坐标y baseData.RecordMainServerData(isMainServerData, _type, value); break; case PlayerDataRefresh.State: baseData.State = (byte)value; @@ -295,7 +305,6 @@ break; case PlayerDataRefresh.HP: baseData.HP = value; baseData.RecordMainServerData(isMainServerData, _type, value); break; case PlayerDataRefresh.MaxMP: extersion.MaxMP = (int)value; @@ -409,7 +418,6 @@ break; case PlayerDataRefresh.FBID: baseData.FBID = (byte)value; baseData.RecordMainServerData(isMainServerData, _type, value); break; case PlayerDataRefresh.FamilyLV: break; @@ -515,7 +523,6 @@ break; case PlayerDataRefresh.ExAttr3: baseData.dungeonLineId = (int)value; baseData.RecordMainServerData(isMainServerData, _type, value); break; case PlayerDataRefresh.ExAttr4: baseData.ExAttr4 = value; @@ -531,7 +538,20 @@ GameNetSystem.Instance.crossServerConnected_Loigc = false; LoadingWin.targetMapResId = 1; WindowCenter.Instance.Open<LoadingWin>(); GameNetSystem.Instance.Reconnect(); var sendInfo = new CA108_tagCMRefreshMainServerRole(); GameNetSystem.Instance.SendInfo(sendInfo); StageManager.Instance.Load<DungeonStage>(baseData.MapID, GameNetSystem.SocketType.CrossSever, true); if (hero != null && !hero.ActorInfo.serverDie) { hero.RequestName(); hero.SwitchRedName(StatusMgr.Instance.IsExist(PlayerId, StatusMgr.Instance.redNameBuffID)); hero.IdleImmediate(); hero.State = E_ActorState.Idle; extersion.pkState = 0; } } } break; Core/NetworkPackage/ClientPack/ClientToMapServer/CA1/CA108_tagCMRefreshMainServerRole.cs
New file @@ -0,0 +1,19 @@ using UnityEngine; using System.Collections; // A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole public class CA108_tagCMRefreshMainServerRole : GameNetPackBasic { public CA108_tagCMRefreshMainServerRole() { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA108; } public override void WriteToBytes() { } } Core/NetworkPackage/ClientPack/ClientToMapServer/CA1/CA108_tagCMRefreshMainServerRole.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 00ad780b301cfe1409358305dd0909f3 timeCreated: 1546926663 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0419_tagPlayerReborn.cs
@@ -25,11 +25,6 @@ return; } if (vNetData.socketType == GameNetSystem.SocketType.Main) { PlayerDatas.Instance.baseData.RecordMainServerDie(true, false); } DeadModel.RebornSuccess(vNetData); GActorPlayerBase _player = GAMgr.Instance.GetBySID(vNetData.PlayerID) as GActorPlayerBase; Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0609_tagPlayerDie.cs
@@ -22,11 +22,6 @@ H0609_tagPlayerDie vNetData = vNetPack as H0609_tagPlayerDie; if (vNetData.socketType==GameNetSystem.SocketType.Main) { PlayerDatas.Instance.baseData.RecordMainServerDie(true,true); } DeadModel.PlayerDie(vNetData.PlayerID); GActorPlayerBase _player = GAMgr.Instance.GetBySID(vNetData.PlayerID) as GActorPlayerBase; Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA112_tagMCDBPlayer.cs
New file @@ -0,0 +1,24 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, January 08, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; public class DTCA112_tagMCDBPlayer : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var package = vNetPack as HA112_tagMCDBPlayer; PlayerDatas.Instance.UpdatePlayerData(package); } } Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA112_tagMCDBPlayer.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 8fbe251d30665354a83e20401553ce87 timeCreated: 1546927075 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA1_Sys/HA112_tagMCDBPlayer.cs
New file @@ -0,0 +1,206 @@ using UnityEngine; using System.Collections; // A1 12 玩家初始化 #tagMCDBPlayer public class HA112_tagMCDBPlayer : GameNetPackBasic { public string AccID; //帐号名, 该角色所在的帐号的用户名 public uint PlayerID; public string PlayerName; //size = 14 public byte AccState; //0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除 public byte GMLevel; //GM等级, 0:不是GM >=1 : GM的等级 public byte Sex; //性别 public byte Job; //职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士 public ushort ReincarnationLv; // 转生等级 public ushort LV; //等级 public ushort LVEx; //玩家等级副本,用于转生 public ushort LV2; //大师等级 public uint ExpPoint; //扩充经验点数 public uint TotalExp; //总经验 public uint Family; //家族 public string FamilyName; //家族名称 public int TeamHornor; //组队荣誉 public int FamilyHornor; //家族荣耀 public int FamilyActiveValue; //家族活跃度 public int LastWeekFamilyActiveValue; //上周家族活跃度 public int CountryHornor; //本周国家功勋值 public int CountryLastWeekHornor; //上周国家功勋值 public uint Mate; public uint Gold; //金子 public uint GoldPaper; //金票 public uint Silver; //银子 public uint SilverPaper; //银票 public uint FightPoint; //战斗值 public uint HappyPoint; //脱机挂时长(秒) public byte LineID; //角色所在线路 public ushort MapID; //角色所在地图 public ushort PosX; //角色坐标 public ushort PosY; public ushort RebornMapID; //重生点地图ID public ushort RebornPosX; public ushort RebornPosY; public byte State; //角色状态 0.正常在线1.脱机挂在线 2脱机挂死亡 public uint HP; //当前HP public uint XP; //当前XP public ushort HPRestoreSetting; //少于这个值%自动喝血 public ushort MPRestoreSetting; //少于这个值%自动喝魔 public uint FreePoint; //未分配点数 public uint FreeSkillPoint; //未分配的技能点 public int BaseSTR; //裸体力量 public int BasePNE; //裸体真元 public int BasePHY; //裸体筋骨 public int BaseCON; //裸体体魄 public int STR; //力量 public int PNE; //真元 public int PHY; //筋骨 public int CON; //体魄 public ushort PKValue; //衡量PK能力的一项属性,由攻防计算而得 public byte BackpackLV; //背包等级 public byte WarehouseLV; //仓库等级 public uint TeamID; //队伍ID public byte UseGoldType; //默认用金子/金票 类型为MoneyType public byte UseSilverType; //默认用的银子/银票 public byte AttackMode; //攻击模式 public uint LastWeekOnlineTime; //上周在线时间 public byte FBID; //fb id public byte FamilyLV; //家族等级 public uint FriendFavor; //好友人气值 public uint Energy; //精力值 public uint EquipShowSwitch; //装备显示开关 public uint LuckValue; //幸运值 public uint ExAttr1; //扩展属性1,各项目专用 public uint ExAttr2; //扩展属性2,各项目专用 public uint ExAttr3; //扩展属性3,各项目专用 public uint ExAttr4; //扩展属性4,各项目专用 public uint ExAttr5; //扩展属性5,各项目专用 public byte Faction; //阵营 public uint InfamyValue; //恶名值 public byte OfficialRank; //官阶,官职等级 public uint ChangeCoinPointTotal; //兑换的点数总计 public byte VIPLv; //VIP等级 public byte VIPLvForPhone; //移动VIP等级 public uint ExAttr6; //扩展属性6,各项目专用 public uint ExAttr7; //扩展属性7,各项目专用 public uint ExAttr8; //扩展属性8,各项目专用 public uint ExAttr9; //扩展属性9,各项目专用 public uint ExAttr10; //扩展属性10,各项目专用 public uint ModelMark; // 变形模型mark public uint ExAttr11; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr12; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr13; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr14; //预留的扩展属性字段,用来存放项目特定的属性 public uint OperateInfo; //玩家附加运营商信息 public string Operate; //所属运营商平台名 public uint ServerID; //所属区服ID public uint ExAttr15; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr16; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr17; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr18; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr19; //预留的扩展属性字段,用来存放项目特定的属性 public uint ExAttr20; //预留的扩展属性字段,用来存放项目特定的属性 public HA112_tagMCDBPlayer() { _cmd = (ushort)0xA112; } public override void ReadFromBytes(byte[] vBytes) { TransBytes(out AccID, vBytes, NetDataType.Chars, 65); TransBytes(out PlayerID, vBytes, NetDataType.DWORD); TransBytes(out PlayerName, vBytes, NetDataType.Chars, 33); TransBytes(out AccState, vBytes, NetDataType.BYTE); TransBytes(out GMLevel, vBytes, NetDataType.BYTE); TransBytes(out Sex, vBytes, NetDataType.BYTE); TransBytes(out Job, vBytes, NetDataType.BYTE); TransBytes(out ReincarnationLv, vBytes, NetDataType.WORD); TransBytes(out LV, vBytes, NetDataType.WORD); TransBytes(out LVEx, vBytes, NetDataType.WORD); TransBytes(out LV2, vBytes, NetDataType.WORD); TransBytes(out ExpPoint, vBytes, NetDataType.DWORD); TransBytes(out TotalExp, vBytes, NetDataType.DWORD); TransBytes(out Family, vBytes, NetDataType.DWORD); TransBytes(out FamilyName, vBytes, NetDataType.Chars, 33); TransBytes(out TeamHornor, vBytes, NetDataType.Int); TransBytes(out FamilyHornor, vBytes, NetDataType.Int); TransBytes(out FamilyActiveValue, vBytes, NetDataType.Int); TransBytes(out LastWeekFamilyActiveValue, vBytes, NetDataType.Int); TransBytes(out CountryHornor, vBytes, NetDataType.Int); TransBytes(out CountryLastWeekHornor, vBytes, NetDataType.Int); TransBytes(out Mate, vBytes, NetDataType.DWORD); TransBytes(out Gold, vBytes, NetDataType.DWORD); TransBytes(out GoldPaper, vBytes, NetDataType.DWORD); TransBytes(out Silver, vBytes, NetDataType.DWORD); TransBytes(out SilverPaper, vBytes, NetDataType.DWORD); TransBytes(out FightPoint, vBytes, NetDataType.DWORD); TransBytes(out HappyPoint, vBytes, NetDataType.DWORD); TransBytes(out LineID, vBytes, NetDataType.BYTE); TransBytes(out MapID, vBytes, NetDataType.WORD); TransBytes(out PosX, vBytes, NetDataType.WORD); TransBytes(out PosY, vBytes, NetDataType.WORD); TransBytes(out RebornMapID, vBytes, NetDataType.WORD); TransBytes(out RebornPosX, vBytes, NetDataType.WORD); TransBytes(out RebornPosY, vBytes, NetDataType.WORD); TransBytes(out State, vBytes, NetDataType.BYTE); TransBytes(out HP, vBytes, NetDataType.DWORD); TransBytes(out XP, vBytes, NetDataType.DWORD); TransBytes(out HPRestoreSetting, vBytes, NetDataType.WORD); TransBytes(out MPRestoreSetting, vBytes, NetDataType.WORD); TransBytes(out FreePoint, vBytes, NetDataType.DWORD); TransBytes(out FreeSkillPoint, vBytes, NetDataType.DWORD); TransBytes(out BaseSTR, vBytes, NetDataType.Int); TransBytes(out BasePNE, vBytes, NetDataType.Int); TransBytes(out BasePHY, vBytes, NetDataType.Int); TransBytes(out BaseCON, vBytes, NetDataType.Int); TransBytes(out STR, vBytes, NetDataType.Int); TransBytes(out PNE, vBytes, NetDataType.Int); TransBytes(out PHY, vBytes, NetDataType.Int); TransBytes(out CON, vBytes, NetDataType.Int); TransBytes(out PKValue, vBytes, NetDataType.WORD); TransBytes(out BackpackLV, vBytes, NetDataType.BYTE); TransBytes(out WarehouseLV, vBytes, NetDataType.BYTE); TransBytes(out TeamID, vBytes, NetDataType.DWORD); TransBytes(out UseGoldType, vBytes, NetDataType.BYTE); TransBytes(out UseSilverType, vBytes, NetDataType.BYTE); TransBytes(out AttackMode, vBytes, NetDataType.BYTE); TransBytes(out LastWeekOnlineTime, vBytes, NetDataType.DWORD); TransBytes(out FBID, vBytes, NetDataType.BYTE); TransBytes(out FamilyLV, vBytes, NetDataType.BYTE); TransBytes(out FriendFavor, vBytes, NetDataType.DWORD); TransBytes(out Energy, vBytes, NetDataType.DWORD); TransBytes(out EquipShowSwitch, vBytes, NetDataType.DWORD); TransBytes(out LuckValue, vBytes, NetDataType.DWORD); TransBytes(out ExAttr1, vBytes, NetDataType.DWORD); TransBytes(out ExAttr2, vBytes, NetDataType.DWORD); TransBytes(out ExAttr3, vBytes, NetDataType.DWORD); TransBytes(out ExAttr4, vBytes, NetDataType.DWORD); TransBytes(out ExAttr5, vBytes, NetDataType.DWORD); TransBytes(out Faction, vBytes, NetDataType.BYTE); TransBytes(out InfamyValue, vBytes, NetDataType.DWORD); TransBytes(out OfficialRank, vBytes, NetDataType.BYTE); TransBytes(out ChangeCoinPointTotal, vBytes, NetDataType.DWORD); TransBytes(out VIPLv, vBytes, NetDataType.BYTE); TransBytes(out VIPLvForPhone, vBytes, NetDataType.BYTE); TransBytes(out ExAttr6, vBytes, NetDataType.DWORD); TransBytes(out ExAttr7, vBytes, NetDataType.DWORD); TransBytes(out ExAttr8, vBytes, NetDataType.DWORD); TransBytes(out ExAttr9, vBytes, NetDataType.DWORD); TransBytes(out ExAttr10, vBytes, NetDataType.DWORD); TransBytes(out ModelMark, vBytes, NetDataType.DWORD); TransBytes(out ExAttr11, vBytes, NetDataType.DWORD); TransBytes(out ExAttr12, vBytes, NetDataType.DWORD); TransBytes(out ExAttr13, vBytes, NetDataType.DWORD); TransBytes(out ExAttr14, vBytes, NetDataType.DWORD); TransBytes(out OperateInfo, vBytes, NetDataType.DWORD); TransBytes(out Operate, vBytes, NetDataType.Chars, 15); TransBytes(out ServerID, vBytes, NetDataType.DWORD); TransBytes(out ExAttr15, vBytes, NetDataType.DWORD); TransBytes(out ExAttr16, vBytes, NetDataType.DWORD); TransBytes(out ExAttr17, vBytes, NetDataType.DWORD); TransBytes(out ExAttr18, vBytes, NetDataType.DWORD); TransBytes(out ExAttr19, vBytes, NetDataType.DWORD); TransBytes(out ExAttr20, vBytes, NetDataType.DWORD); } } Core/NetworkPackage/ServerPack/HA1_Sys/HA112_tagMCDBPlayer.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 419df965f5258b8418569878ad174b5b timeCreated: 1546926744 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/MainInterfacePanel/PlayerTaskDatas.cs
@@ -132,8 +132,7 @@ public int TaskAutoLv = 0; public int TaskAutoTime = 0; PlayerPackModel _playerPack; PlayerPackModel playerPack { PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } } @@ -1239,10 +1238,8 @@ } private PlayerPackModel m_PlayerBackModel; private PlayerPackModel PlayerBackModel { get { private PlayerPackModel PlayerBackModel { get { return m_PlayerBackModel ?? (m_PlayerBackModel = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }