Browse Source

【增加】暂时提交摇人添加player,但场景没有显示单位,大爷帮忙看看

johnclot69 1 year ago
parent
commit
cb08052680

+ 5 - 2
DotNet/Hotfix/Helper/PlayerFactory.cs

@@ -14,8 +14,11 @@
                     .AddChild<WNPlayer, Session, PlayerInfo>(session, playerInfo);
 
             // 绑定sessionId
-            player.GameSessionActorId = session.InstanceId;
-            player.Session = session;
+            if (playerInfo.PlayerType == 0)
+            {
+                player.GameSessionActorId = session.InstanceId;
+                player.Session = session;
+            }
             player.BasicProp = CharacterCategory.Instance.Get(playerInfo.Pro);
             player.BornType = (int)BORN_TYPE.NORMAL;
             player.EnterState = (int)ENTER_STATE.online;

+ 38 - 21
DotNet/Hotfix/Scenes/Game/Handler/C2G_AddUnitsToMapHandler.cs

@@ -3,7 +3,7 @@
 namespace ET.Server
 {
     /// <summary>
-    /// 向场景增加单位
+    /// 向场景增加玩家
     /// </summary>
     [MessageHandler(SceneType.Game)]
     public class C2G_AddUnitsToMapHandler: AMRpcHandler<C2G_AddUnitsToMap, G2C_AddUnitsToMap>
@@ -36,31 +36,48 @@ namespace ET.Server
                 reply();
                 return;
             }
-            // 配置是否能找到
-            /*Monster prop = MonsterCategory.Instance.Get(request.UnitId);
-            if (prop == null)
+
+            // Struct.MonsterUnit unit = new Struct.MonsterUnit();
+            // unit.id = request.UnitId;
+            // unit.force = request.Force;
+            // if (!string.IsNullOrEmpty(request.Flag))
+            // {
+            //     unit.flag = request.Flag;
+            // }
+            // else
+            // {
+            //     unit.x = request.X;
+            //     unit.y = request.Y;
+            // }
+            // unit.autoGuard = true;
+            //
+            // await player.Map.AddUnits(unit, false);
+
+            // 预先创建数据
+            Scene scene = session.DomainScene();
+            long _id = IdGenerater.Instance.GenerateUnitId(scene.DomainZone());
+            PlayerInfo playerInfo = new PlayerInfo();
+            playerInfo.Id = _id;
+            playerInfo.UserId = session.GetComponent<SessionPlayerComponent>().UserId;
+            playerInfo.PlayerType = 1;
+            playerInfo.Name = "玩家-" + _id;
+            playerInfo.Sex = 0;
+            playerInfo.Pro = (int)PlayerProType.CANG_LANG;
+            playerInfo.Level = 1;
+            playerInfo.Exp = 0;
+
+            WNPlayer unitPlayer = await PlayerFactory.CreatPlayer(session, playerInfo);
+
+            if (unitPlayer == null)
             {
-                Log.Debug($"添加单位出错, 未找到配置...unitId={request.UnitId}, playerId={player.GetId()}");
-                response.Error = ErrorCode.ERR_ConfigError;
+                Log.Debug($"创建单位玩家有误...unitPlayerId={_id}, force={request.Force}");
+                response.Error = ErrorCode.ERR_CreateUnitPlayerError;
                 reply();
                 return;
-            }*/
-
-            Struct.MonsterUnit unit = new Struct.MonsterUnit();
-            unit.id = request.UnitId;
-            unit.force = request.Force;
-            if (!string.IsNullOrEmpty(request.Flag))
-            {
-                unit.flag = request.Flag;
-            }
-            else
-            {
-                unit.x = request.X;
-                unit.y = request.Y;
             }
-            unit.autoGuard = true;
 
-            await player.Map.AddUnits(unit, false);
+            // 进入主播场景
+            player.Map.PlayerEnterRequest(unitPlayer);
 
             reply();
         }

+ 1 - 1
DotNet/Hotfix/Scenes/Game/Handler/C2G_BindPlayerHandler.cs

@@ -25,7 +25,7 @@ namespace ET.Server
             PlayerInfo playerInfo = new PlayerInfo();
             playerInfo.Id = _id;
             playerInfo.UserId = session.GetComponent<SessionPlayerComponent>().UserId;
-            playerInfo.Name = "玩家-" + _id;
+            playerInfo.Name = "主播-" + _id;
             playerInfo.Sex = 0;
             playerInfo.Pro = (int)PlayerProType.CANG_LANG;
             playerInfo.Level = 1;

+ 0 - 14
DotNet/Hotfix/Scenes/Game/Handler/C2G_EnterMapHandler.cs

@@ -57,20 +57,6 @@ namespace ET.Server
             response.MapInstanceId = player.Map.Id;
             reply();
 
-            // 等待client ready消息
-            // await session.DomainScene().GetComponent<ObjectWait>().Wait<Wait_PlayerReady>();
-
-            // player.OnEndEnterScene();
-
-            // 测试添加单位
-            // Struct.MonsterUnit unit = new Struct.MonsterUnit();
-            // unit.id = 101;
-            // unit.force = (int)AreaForce.MONSTER;
-            // unit.x = 5;
-            // unit.y = 12;
-            // unit.autoGuard = true;
-            // await player.Map.AddUnits(unit, false);
-
             await ETTask.CompletedTask;
         }
     }

+ 2 - 1
DotNet/Hotfix/Scenes/Game/Map/MapSystem.cs

@@ -117,7 +117,8 @@ namespace ET.Server
 
             try
             {
-                self.GetZoneManager().playerEnterRequest(player.GetId().ToString().Trim(), self.Id.ToString().Trim(), player.ToJSON4EnterScene(self));
+                string ToJSON4EnterScene = player.GetPlayerType() == 1 ? player.ToJSON4EnterSceneByUnitPlayer(self) : player.ToJSON4EnterScene(self);
+                self.GetZoneManager().playerEnterRequest(player.GetId().ToString().Trim(), self.Id.ToString().Trim(), ToJSON4EnterScene);
             }
             catch (Exception e)
             {

+ 94 - 2
DotNet/Hotfix/Scenes/Game/Player/PlayerSystem.cs

@@ -44,6 +44,16 @@ namespace ET.Server
             return self.GetComponent<PlayerDataComponent>().Data.Id;
         }
 
+        /// <summary>
+        /// 获取玩家类型
+        /// </summary>
+        /// <param name="self"></param>
+        /// <returns></returns>
+        public static int GetPlayerType(this WNPlayer self)
+        {
+            return self.GetComponent<PlayerDataComponent>().Data.PlayerType;
+        }
+
         /// <summary>
         /// 获取账号id
         /// </summary>
@@ -207,9 +217,9 @@ namespace ET.Server
             {
                 effects = new
                 {
-                    MaxHP = 9,
+                    MaxHP = 99999,
                     HPPer = 1,
-                    HP = 8,
+                    HP = 88888,
                     Attack = 20,
                     AttackPer = 100,
                     MoveSpeed = 5,
@@ -282,5 +292,87 @@ namespace ET.Server
             Log.Debug($"{self.GetName()}, enterSceneData:{retjson.ToString()}");
             return retjson;
         }
+
+        public static string ToJSON4EnterSceneByUnitPlayer(this WNPlayer self, Map map)
+        {
+            var json = new
+            {
+                effects = new
+                {
+                    MaxHP = 99999,
+                    HPPer = 1,
+                    HP = 88888,
+                    Attack = 20,
+                    AttackPer = 100,
+                    MoveSpeed = 5,
+                },
+                effectsExt = new { },
+                // skills = self.ToJson4BattleServerSkillInfos,
+                skills = new List<SkillInfo>()
+                {
+                    new SkillInfo
+                    {
+                        id = 90210,
+                        level = 1,
+                        type = 3,
+                        skillTime = 0,
+                        cdTime = 0,
+                        flag = 0
+                    },
+                    new SkillInfo
+                    {
+                        id = 90203,
+                        level = 1,
+                        type = 1,
+                        skillTime = 0,
+                        cdTime = 0,
+                        flag = 0
+                    },
+                },
+                tasks = new { },
+                flags = new { },
+                playerEntered = false,
+                avatars = new { },
+                basic = new
+                {
+                    name = self.GetName(),
+                    alliesForce = 0,
+                    force = 1,
+                    pro = self.GetPro(),
+                    serverId = ConstGame.GameServerId,
+                    titleId = 0,
+                    level = self.GetLevel(),
+                    vip = 0,
+                    upLevel = 1,
+                    // 无悬赏
+                    beReward = 0,
+                    logicServerId = ConstGame.GameServerId,
+                    sex = self.GetSex(),
+                    uuid = self.GetId().ToString(),
+                    potionAddition = 0
+                },
+                connectServerId = "bs-" + ConstGame.GameServerId,
+                uid = self.GetId().ToString(),
+                unitTemplateID = 1,
+                robot = false,
+                tempData = new
+                {
+                    //x = this.getPlayerAreaData().bornX,
+                    //y = this.getPlayerAreaData().bornY,
+                    x = 229,
+                    y = 82,
+                    direction = System.MathF.PI / 2,
+                    hp = 100000,
+                    mp = 0,
+                },
+                pkInfo = new { mode = 0, value = 0, level = 1, },
+                //petBase,
+                addTestPetData = 0,
+                sceneData = new { allowAutoGuard = 3, },
+            };
+            string retjson = JsonSerializer.Serialize(json, new JsonSerializerOptions { IncludeFields = true });
+            Log.Debug($"{self.GetName()}, enterSceneData:{retjson.ToString()}");
+            return retjson;
+        }
     }
 }

+ 1 - 1
DotNet/Model/Scenes/Game/DBEntity/PlayerInfo.cs

@@ -16,7 +16,7 @@ namespace ET.Server
         /** 下线时间 **/
         public long LogoutTime { get; set; }
 
-        /** 玩家类型 0-正常玩家 1-ai **/
+        /** 玩家类型 0-正常玩家 1-unitPlayer 2-ai **/
         public int PlayerType { get; set; }
 
         /** 名称 **/

+ 2 - 0
Unity/Assets/Scripts/Codes/Model/Share/Module/Message/ErrorCode.cs

@@ -55,6 +55,8 @@
         public const int ERR_AccountAlreadyLoggedInElsewhere = 200021;
         /** 角色已在其他地方登录 **/
         public const int ERR_PlayerAlreadyLoggedInElsewhere = 200022;
+        /** 创建单位玩家有误 **/
+        public const int ERR_CreateUnitPlayerError = 200023;
 
         public enum EnterMap
         {