From 0a47c85a72eb56dda7c530250b82675dd29ba0ba Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Wed, 19 Jan 2022 19:42:54 -0300 Subject: [PATCH] clientList.job hook --- .../ServerSource/Networking/GameServer.cs | 11 ++++++----- .../SharedSource/Lua/LuaClasses.cs | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs index ae4112953..91beb3a79 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs @@ -1812,7 +1812,8 @@ namespace Barotrauma.Networking outmsg.Write(client.SteamID); outmsg.Write(client.NameID); outmsg.Write(client.Name); - outmsg.Write(client.Character?.Info?.Job != null && gameStarted ? client.Character.Info.Job.Prefab.Identifier : (client.PreferredJob ?? "")); + var result1 = new LuaResult(GameMain.Lua.hook.Call("clientList.job", c, client)); + outmsg.Write(result1.IsNull() ? (client.Character?.Info?.Job != null && gameStarted ? client.Character.Info.Job.Prefab.Identifier : (client.PreferredJob ?? "")) : result1.String()); outmsg.Write((byte)client.PreferredTeam); outmsg.Write(client.Character == null || !gameStarted ? (ushort)0 : client.Character.ID); if (c.HasPermission(ClientPermissions.ServerLog)) @@ -1825,10 +1826,10 @@ namespace Barotrauma.Networking } outmsg.Write(client.Muted); outmsg.Write(client.InGame); - var result = new LuaResult(GameMain.Lua.hook.Call("clientList.hasPermission", c, client)); - outmsg.Write(result.IsNull() ? client.Permissions != ClientPermissions.None : result.Bool()); - var result2 = new LuaResult(GameMain.Lua.hook.Call("clientList.hasCrown", c, client)); - outmsg.Write(result2.IsNull() ? client.Connection == OwnerConnection : result2.Bool()); + var result2 = new LuaResult(GameMain.Lua.hook.Call("clientList.hasPermission", c, client)); + outmsg.Write(result2.IsNull() ? client.Permissions != ClientPermissions.None : result2.Bool()); + var result3 = new LuaResult(GameMain.Lua.hook.Call("clientList.hasCrown", c, client)); + outmsg.Write(result3.IsNull() ? client.Connection == OwnerConnection : result3.Bool()); outmsg.Write(client.Connection != OwnerConnection && !client.HasPermission(ClientPermissions.Ban) && !client.HasPermission(ClientPermissions.Kick) && diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs index 70208b200..699b85b84 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs @@ -1062,7 +1062,7 @@ namespace Barotrauma { var num = dynValue.CastToNumber(); if (num == null) { return 0f; } - return (float)num; + return (float)num.Value; } return 0f; @@ -1074,12 +1074,24 @@ namespace Barotrauma { var num = dynValue.CastToNumber(); if (num == null) { return 0f; } - return (double)num; + return num.Value; } return 0f; } + public string String() + { + if (result is DynValue dynValue) + { + var str = dynValue.CastToString(); + if (str == null) { return ""; } + return str; + } + + return ""; + } + public object Object() { if(result is DynValue dynValue)