Browse Source

修改ice接口playerEnterRequest参数,以避免战斗服crash

大爷 2 years ago
parent
commit
94964610bb

+ 8 - 0
DotNet/Core/ByteBuffer.cs

@@ -1,6 +1,7 @@
 using ET;
 using System;
 using System.Collections.Generic;
+using System.Text;
 
 /// <summary>
 /// 字节缓冲处理类,本类仅支持大字节序
@@ -493,6 +494,13 @@ public class ByteBuffer //: ICloneable
         }
     }
 
+    public string ReadString(int length)
+    {
+        var str = Encoding.UTF8.GetString(buf, readIndex, length);
+        readIndex += length;
+        return str;
+    }
+
     /// <summary>
     /// 获取一个字节
     /// </summary>

+ 45 - 11
DotNet/Hotfix/Demo/Scenes/Gate/Handler/C2G_EnterMapHandler.cs

@@ -1,5 +1,10 @@
-using System;
+using MongoDB.Driver;
+using OfficeOpenXml.Drawing.Chart;
+using System;
+using System.Collections.Generic;
 using System.Security.AccessControl;
+using System.Threading.Tasks;
+using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
 
 
 namespace ET.Server
@@ -87,36 +92,65 @@ namespace ET.Server
         {
             var json = new
             {
-                effects = "",
-                effectsExt = "",
-                skills = "",
+                effects = new { },
+                effectsExt = new { },
+                skills = new 
+                {
+                },
+                tasks = new { },
+                flags = new { },
+                playerEntered = false,
+                avatars = new
+                {
+                },
                 basic = new
                 {
                     name = "nickname",
                     alliesForce = 0,
                     force = 0,
                     pro = 1,
-                    serverId = 0,
+                    serverId = 101,
+                    titleId = 0,
                     level = 1,
                     vip = 0,
                     upLevel = 1,
+                    beReward = 0,
+                    logicServerId = Global.GameServerId,
                     sex = 0,
                     uuid = info.Id.ToString(),
+                    potionAddition = 0
                 },
                 connectServerId = "bs-" + Global.GameServerId.ToString(),
-                avatars = "",
                 uid = info.Id.ToString(),
                 unitTemplateID = 1,
-                //x,y,direction
-                hp = 1000,
-                mp = 0,
-                //pkInfo, petBase,
+                robot = false,
+                tempData = new
+                {
+                    //x = this.getPlayerAreaData().bornX,
+                    //y = this.getPlayerAreaData().bornY,
+                    direction = 0,
+                    hp = 1000,
+                    mp = 0,
+                },
+                pkInfo = new
+                {
+                    mode = 0,
+                    value = 0,
+                    level = 1,
+                },
+                //petBase,
+                addTestPetData = 0,
                 sceneData = new
                 {
                     allowAutoGuard = 1,
                 },
             };
-            return System.Text.Json.JsonSerializer.Serialize(json);
+            var retjson = System.Text.Json.JsonSerializer.Serialize(json);
+            Log.Debug("===================================");
+            Log.Debug(retjson.ToString());
+            Log.Debug("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
+
+            return retjson;
         }
     }
 }

+ 16 - 3
DotNet/Hotfix/FastStream/FastStreamComponentSystem.cs

@@ -18,7 +18,7 @@ namespace ET.Server
                 var session = new AsyncTcpSession();
                 self.Session = session;
                 session.NoDelay = true;
-                session.ReceiveBufferSize = 1024;
+                session.ReceiveBufferSize = 10* 1024;
 
                 session.Connected += new EventHandler(OnSessionConnected);
                 session.Error += new EventHandler<ErrorEventArgs>(OnSessionError);
@@ -60,10 +60,23 @@ namespace ET.Server
 
         private static void OnSessionDataReceived(object sender, DataEventArgs e)
         {
-            var buff = e.Data;
             var len = e.Length;
-            Log.Debug("receive fast stream data");
+            Log.Debug($"receive fast stream data: len({len})");
             Log.Debug("======================================");
+            var buff = ByteBuffer.Allocate(len, true);
+            var keylen = buff.ReadShort();
+            var vallen = buff.ReadInt();
+            if(keylen + vallen > len)
+            {
+                Log.Debug("unknow content");
+            }
+            else
+            {
+                var key = buff.ReadString(keylen);
+                var val = buff.ReadString(vallen);
+                Log.Debug($"{key} = {val}");
+            }
+            Log.Debug("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
         }
 
         private static void OnSessionError(object sender, ErrorEventArgs e)