johnclot69 1 год назад
Родитель
Сommit
8905dc7822

+ 1 - 0
Config/Proto/OuterMessage_C_10001.proto

@@ -224,6 +224,7 @@ message C2G_BindPlayer // IRequest
 {
 	int32 RpcId = 1;
 	int64 PlayerId = 2;
+	int64 UserId = 3;
 }
 
 message G2C_BindPlayer // IResponse

+ 6 - 7
DotNet/App/ConfigLoader.cs

@@ -12,9 +12,9 @@ namespace ET.Server
             Dictionary<Type, byte[]> output = new Dictionary<Type, byte[]>();
             List<string> startConfigs = new List<string>()
             {
-                "StartMachineConfigCategory", 
-                "StartProcessConfigCategory", 
-                "StartSceneConfigCategory", 
+                "StartMachineConfigCategory",
+                "StartProcessConfigCategory",
+                "StartSceneConfigCategory",
                 "StartZoneConfigCategory",
             };
             HashSet<Type> configTypes = EventSystem.Instance.GetTypes(typeof (ConfigAttribute));
@@ -23,7 +23,7 @@ namespace ET.Server
                 string configFilePath;
                 if (startConfigs.Contains(configType.Name))
                 {
-                    configFilePath = $"../Config/GenFromExcel/s/{Options.Instance.StartConfig}/{configType.Name}.bytes";    
+                    configFilePath = $"../Config/GenFromExcel/s/{Options.Instance.StartConfig}/{configType.Name}.bytes";
                 }
                 else
                 {
@@ -35,14 +35,13 @@ namespace ET.Server
             return output;
         }
     }
-    
+
     [Invoke]
     public class GetOneConfigBytes: AInvokeHandler<ConfigComponent.GetOneConfigBytes, byte[]>
     {
         public override byte[] Handle(ConfigComponent.GetOneConfigBytes args)
         {
-            byte[] configBytes = File.ReadAllBytes($"../Config/GenFromExcel/{args.ConfigName}.bytes");
-            return configBytes;
+            return File.ReadAllBytes($"../Config/GenFromExcel/{args.ConfigName}.bytes");
         }
     }
 }

+ 49 - 33
DotNet/Hotfix/Scenes/Game/Handler/C2G_BindPlayerHandler.cs

@@ -17,48 +17,64 @@ namespace ET.Server
                 return;
             }
 
-            if (request.PlayerId <= 0)
-            {
-                Log.Debug($"参数错误");
-                response.Error = ErrorCode.ERR_ParameterError;
-                reply();
-                return;
-            }
-
-            if (!session.GetComponent<SessionPlayerComponent>().PlayerList.ContainsKey(request.PlayerId))
-            {
-                Log.Debug($"选角出错,没有选择的角色");
-                response.Error = ErrorCode.ERR_BindPlayerError;
-                reply();
-                return;
-            }
+            Scene scene = session.DomainScene();
 
-            PlayerInfo playerInfo = session.GetComponent<SessionPlayerComponent>().PlayerList[request.PlayerId];
+            PlayerInfo playerInfo;
 
-            if (playerInfo == null)
+            if (request.PlayerId <= 0)
             {
-                Log.Debug($"选角出错,没有选择的角色");
-                response.Error = ErrorCode.ERR_BindPlayerError;
-                reply();
-                return;
+                long _id = IdGenerater.Instance.GenerateUnitId(scene.DomainZone());
+                // 简易版登录,直接创建一个player
+                using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.CreatePlayer, _id.ToString().Trim().GetHashCode()))
+                {
+                    playerInfo = new PlayerInfo();
+                    playerInfo.Id = _id;
+                    playerInfo.UserId = request.UserId;
+                    playerInfo.Name = "玩家-" + _id;
+                    playerInfo.Sex = 0;
+                    playerInfo.Pro = 0;
+                    playerInfo.Level = 1;
+                    playerInfo.Exp = 0;
+
+                    await DBManagerComponent.Instance.GetZoneDB(session.DomainZone()).Save(playerInfo);
+                }
             }
-
-            long bindPlayerId = session.GetComponent<SessionPlayerComponent>().PlayerId;
-
-            switch (bindPlayerId)
+            else
             {
-                case > 0 when bindPlayerId == request.PlayerId:
-                    Log.Debug($"该角色已经绑定");
-                    response.Error = ErrorCode.ERR_PlayerIdIsBind;
+                // 正常选角,判断参数
+                if (!session.GetComponent<SessionPlayerComponent>().PlayerList.ContainsKey(request.PlayerId))
+                {
+                    Log.Debug($"选角出错,没有选择的角色");
+                    response.Error = ErrorCode.ERR_BindPlayerError;
                     reply();
                     return;
-                case > 0 when bindPlayerId != request.PlayerId:
-                    // todo 老角色下线
+                }
 
-                    break;
-            }
+                playerInfo = session.GetComponent<SessionPlayerComponent>().PlayerList[request.PlayerId];
 
-            Scene scene = session.DomainScene();
+                if (playerInfo == null)
+                {
+                    Log.Debug($"选角出错,没有选择的角色");
+                    response.Error = ErrorCode.ERR_BindPlayerError;
+                    reply();
+                    return;
+                }
+
+                long bindPlayerId = session.GetComponent<SessionPlayerComponent>().PlayerId;
+
+                switch (bindPlayerId)
+                {
+                    case > 0 when bindPlayerId == request.PlayerId:
+                        Log.Debug($"该角色已经绑定");
+                        response.Error = ErrorCode.ERR_PlayerIdIsBind;
+                        reply();
+                        return;
+                    case > 0 when bindPlayerId != request.PlayerId:
+                        // todo 老角色下线
+
+                        break;
+                }
+            }
 
             WNPlayer player = scene.GetComponent<GamePlayerComponent>().Get(request.PlayerId);
 

+ 3 - 0
DotNet/Model/Generate/Message/OuterMessage_C_10001.cs

@@ -464,6 +464,9 @@ namespace ET
 		[ProtoMember(2)]
 		public long PlayerId { get; set; }
 
+		[ProtoMember(3)]
+		public long UserId { get; set; }
+
 	}
 
 	[Message(OuterMessage.G2C_BindPlayer)]

+ 3 - 0
Unity/Assets/Scripts/Codes/Model/Client/Generate/Message/OuterMessage_C_10001.cs

@@ -464,6 +464,9 @@ namespace ET
 		[ProtoMember(2)]
 		public long PlayerId { get; set; }
 
+		[ProtoMember(3)]
+		public long UserId { get; set; }
+
 	}
 
 	[Message(OuterMessage.G2C_BindPlayer)]