From 9d45eb7402895eaf429299e348c6bd27891484a3 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Mon, 8 Nov 2021 12:12:35 -0300 Subject: [PATCH] fix http requests somehow causing weird errors when an exception happened inside it, for some reason i used registertype instead of createstatic, fix that, and added override disconnect character time --- .../ServerSource/Networking/GameServer.cs | 7 ++-- .../BarotraumaShared/Lua/DefaultLib.lua | 12 +++---- .../SharedSource/Lua/LuaClasses.cs | 32 +++++++++++++++---- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs index 7410a9c88..c6ff81793 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs @@ -394,8 +394,11 @@ namespace Barotrauma.Networking Character character = Character.CharacterList[i]; if (character.IsDead || !character.ClientDisconnected) { continue; } - character.KillDisconnectedTimer += deltaTime; - character.SetStun(1.0f); + if (GameMain.Lua.game.disableDisconnectCharacter) + { + character.KillDisconnectedTimer += deltaTime; + character.SetStun(1.0f); + } Client owner = connectedClients.Find(c => c.EndpointMatches(character.OwnerClientEndPoint)); diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultLib.lua b/Barotrauma/BarotraumaShared/Lua/DefaultLib.lua index ec24efded..9f74e2163 100644 --- a/Barotrauma/BarotraumaShared/Lua/DefaultLib.lua +++ b/Barotrauma/BarotraumaShared/Lua/DefaultLib.lua @@ -24,11 +24,11 @@ defaultLib["TraitorMessageType"] = CreateStatic("Networking.TraitorMessageType") defaultLib["CauseOfDeathType"] = CreateStatic("CauseOfDeathType") defaultLib["AfflictionPrefab"] = CreateStatic("AfflictionPrefab") defaultLib["CharacterTeamType"] = CreateStatic("CharacterTeamType") -defaultLib["Vector2"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector2") -defaultLib["Vector3"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector3") -defaultLib["Vector4"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector4") -defaultLib["Color"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Color") -defaultLib["Point"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Point") +defaultLib["Vector2"] = LuaUserData.CreateStatic("Microsoft.Xna.Framework.Vector2") +defaultLib["Vector3"] = LuaUserData.CreateStatic("Microsoft.Xna.Framework.Vector3") +defaultLib["Vector4"] = LuaUserData.CreateStatic("Microsoft.Xna.Framework.Vector4") +defaultLib["Color"] = LuaUserData.CreateStatic("Microsoft.Xna.Framework.Color") +defaultLib["Point"] = LuaUserData.CreateStatic("Microsoft.Xna.Framework.Point") defaultLib["ChatMessage"] = CreateStatic("Networking.ChatMessage") defaultLib["Hull"] = CreateStatic("Hull") defaultLib["InvSlotType"] = CreateStatic("InvSlotType") @@ -41,7 +41,7 @@ defaultLib["ClientPacketHeader"] = CreateStatic("Networking.ClientPacketHeader") defaultLib["ServerPacketHeader"] = CreateStatic("Networking.ServerPacketHeader") defaultLib["RandSync"] = CreateStatic("Rand+RandSync") defaultLib["SubmarineInfo"] = CreateStatic("SubmarineInfo") -defaultLib["Rectangle"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Rectangle") +defaultLib["Rectangle"] = LuaUserData.CreateStatic("Microsoft.Xna.Framework.Rectangle") defaultLib["Entity"] = CreateStatic("Entity") defaultLib["Physics"] = CreateStatic("Physics") diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs index 2f71c8f2c..6e636c05b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs @@ -131,6 +131,7 @@ namespace Barotrauma public bool overrideRespawnSub = false; public bool overrideSignalRadio = false; public bool disableSpamFilter = false; + public bool disableDisconnectCharacter = false; public bool RoundStarted { @@ -202,6 +203,11 @@ namespace Barotrauma disableSpamFilter = o; } + public void DisableDisconnectCharacter(bool o) + { + disableDisconnectCharacter = o; + } + public static void Explode(Vector2 pos, float range = 100, float force = 30, float damage = 30, float structureDamage = 30, float itemDamage = 30, float empStrength = 0, float ballastFloraStrength = 0) { new Explosion(range, force, damage, structureDamage, itemDamage, empStrength, ballastFloraStrength).Explode(pos, null); @@ -651,9 +657,15 @@ namespace Barotrauma httpWebRequest.BeginGetResponse(new AsyncCallback((IAsyncResult result) => { - var httpResponse = httpWebRequest.EndGetResponse(result); - using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) - env.CallFunction(callback, new object[] { streamReader.ReadToEnd() }); + try + { + var httpResponse = httpWebRequest.EndGetResponse(result); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + env.CallFunction(callback, new object[] { streamReader.ReadToEnd() }); + }catch(Exception e) + { + env.CallFunction(callback, new object[] { e.ToString() }); + } }), null); }catch(Exception e) @@ -670,10 +682,16 @@ namespace Barotrauma httpWebRequest.BeginGetResponse(new AsyncCallback((IAsyncResult result) => { - var httpResponse = httpWebRequest.EndGetResponse(result); - using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) - env.CallFunction(callback, new object[] { streamReader.ReadToEnd() }); - }), null); + try + { + var httpResponse = httpWebRequest.EndGetResponse(result); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + env.CallFunction(callback, new object[] { streamReader.ReadToEnd() }); + }catch (Exception e) + { + env.CallFunction(callback, new object[] { e.ToString() }); + } + }), null); } catch(Exception e) {