summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Server/Plugins/APIDump/APIDesc.lua118
-rw-r--r--Server/Plugins/APIDump/main_APIDump.lua4
-rw-r--r--Server/Plugins/DumpInfo/Init.lua2
-rw-r--r--src/Bindings/LuaState.cpp16
-rw-r--r--src/Bindings/LuaState.h1
-rw-r--r--src/Bindings/ManualBindings.cpp81
6 files changed, 109 insertions, 113 deletions
diff --git a/Server/Plugins/APIDump/APIDesc.lua b/Server/Plugins/APIDump/APIDesc.lua
index af6049fba..5d571c799 100644
--- a/Server/Plugins/APIDump/APIDesc.lua
+++ b/Server/Plugins/APIDump/APIDesc.lua
@@ -10931,14 +10931,26 @@ a_Player:OpenWindow(Window);
},
SendMessage =
{
- Params =
{
+ Params =
{
- Name = "Message",
- Type = "string",
+ {
+ Name = "Message",
+ Type = "string",
+ },
},
+ Notes = "Sends the specified message to the player.",
+ },
+ {
+ Params =
+ {
+ {
+ Name = "Message",
+ Type = "cCompositeChat",
+ },
+ },
+ Notes = "Sends the {{cCompositeChat}} to the player, using a severity defined by the CompositeChat's MessageType.",
},
- Notes = "Sends the specified message to the player.",
},
SendMessageRaw =
{
@@ -14590,8 +14602,13 @@ end
Name = "Message",
Type = "string",
},
+ {
+ Name = "SuppressPluginNamePrefix",
+ Type = "boolean",
+ IsOptional = true,
+ },
},
- Notes = "Logs a text into the server console and logfile using 'normal' severity (gray text)",
+ Notes = "Logs a text into the server console and logfile using 'normal' severity (gray text).",
},
{
Params =
@@ -14600,101 +14617,78 @@ end
Name = "Message",
Type = "cCompositeChat",
},
+ {
+ Name = "SuppressPluginNamePrefix",
+ Type = "boolean",
+ IsOptional = true,
+ },
},
- Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console. The severity is converted from the CompositeChat's MessageType.",
+ Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console, using a severity defined by the CompositeChat's MessageType.",
},
},
LOGERROR =
{
+ Params =
{
- Params =
{
- {
- Name = "Message",
- Type = "string",
- },
+ Name = "Message",
+ Type = "string",
},
- Notes = "Logs a text into the server console and logfile using 'error' severity (black text on red background)",
- },
- {
- Params =
{
- {
- Name = "Message",
- Type = "cCompositeChat",
- },
+ Name = "SuppressPluginNamePrefix",
+ Type = "boolean",
+ IsOptional = true,
},
- Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console and logfile using 'error' severity (black text on red background)",
},
+ Notes = "Logs a text into the server console and logfile using 'error' severity (black text on red background).",
},
LOGINFO =
{
+ Params =
{
- Params =
{
- {
- Name = "Message",
- Type = "string",
- },
+ Name = "Message",
+ Type = "string",
},
- Notes = "Logs a text into the server console and logfile using 'info' severity (yellow text)",
- },
- {
- Params =
{
- {
- Name = "Message",
- Type = "cCompositeChat",
- },
+ Name = "SuppressPluginNamePrefix",
+ Type = "boolean",
+ IsOptional = true,
},
- Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console and logfile using 'info' severity (yellow text)",
},
+ Notes = "Logs a text into the server console and logfile using 'info' severity (yellow text).",
},
LOGWARN =
{
+ Params =
{
- Params =
{
- {
- Name = "Message",
- Type = "string",
- },
+ Name = "Message",
+ Type = "string",
},
- Notes = "Logs a text into the server console and logfile using 'warning' severity (red text); OBSOLETE, use LOGWARNING() instead",
- },
- {
- Params =
{
- {
- Name = "Message",
- Type = "cCompositeChat",
- },
+ Name = "SuppressPluginNamePrefix",
+ Type = "boolean",
+ IsOptional = true,
},
- Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console and logfile using 'warning' severity (red text); OBSOLETE, use LOGWARNING() instead",
},
+ Notes = "Logs a text into the server console and logfile using 'warning' severity (red text); OBSOLETE, use LOGWARNING() instead.",
},
LOGWARNING =
{
+ Params =
{
- Params =
{
- {
- Name = "Message",
- Type = "string",
- },
+ Name = "Message",
+ Type = "string",
},
- Notes = "Logs a text into the server console and logfile using 'warning' severity (red text)",
- },
- {
- Params =
{
- {
- Name = "Message",
- Type = "cCompositeChat",
- },
+ Name = "SuppressPluginNamePrefix",
+ Type = "boolean",
+ IsOptional = true,
},
- Notes = "Logs the {{cCompositeChat}}'s human-readable text into the server console and logfile using 'warning' severity (red text)",
},
+ Notes = "Logs a text into the server console and logfile using 'warning' severity (red text).",
},
md5 =
{
diff --git a/Server/Plugins/APIDump/main_APIDump.lua b/Server/Plugins/APIDump/main_APIDump.lua
index 61dd1e66c..b1277ca0b 100644
--- a/Server/Plugins/APIDump/main_APIDump.lua
+++ b/Server/Plugins/APIDump/main_APIDump.lua
@@ -36,7 +36,7 @@ local function LoadAPIFiles(a_Folder, a_DstTable)
if (a_DstTable[k]) then
-- The class is documented in two files, warn and store into a file (so that CIs can mark build as failure):
LOGWARNING(string.format(
- "APIDump warning: class %s is documented at two places, the documentation in file %s will overwrite the previously loaded one!",
+ "Warning: class %s is documented at two places, the documentation in file %s will overwrite the previously loaded one!",
k, FileName
))
local f = io.open("DuplicateDocs.txt", "a")
@@ -2115,7 +2115,7 @@ function Initialize(Plugin)
g_Plugin = Plugin;
g_PluginFolder = Plugin:GetLocalFolder();
- LOG("Initialising " .. Plugin:GetName() .. " v." .. Plugin:GetVersion())
+ LOG("Initialising v." .. Plugin:GetVersion())
-- Bind a console command to dump the API:
cPluginManager:BindConsoleCommand("api", HandleCmdApi, "Dumps the Lua API docs into the API/ subfolder")
diff --git a/Server/Plugins/DumpInfo/Init.lua b/Server/Plugins/DumpInfo/Init.lua
index 8b328c862..723ab3d94 100644
--- a/Server/Plugins/DumpInfo/Init.lua
+++ b/Server/Plugins/DumpInfo/Init.lua
@@ -4,7 +4,7 @@ function Initialize(a_Plugin)
-- Check if the infodump file exists.
if (not cFile:IsFile("Plugins/InfoDump.lua")) then
- LOGWARN("[DumpInfo] InfoDump.lua was not found.")
+ LOGWARN("InfoDump.lua was not found.")
return false
end
diff --git a/src/Bindings/LuaState.cpp b/src/Bindings/LuaState.cpp
index ccd7244fa..3a1379df1 100644
--- a/src/Bindings/LuaState.cpp
+++ b/src/Bindings/LuaState.cpp
@@ -1489,6 +1489,22 @@ bool cLuaState::GetStackValue(int a_StackPos, cUUID & a_Value)
+bool cLuaState::GetStackValue(int a_StackPos, std::string_view & a_Value)
+{
+ size_t Length = 0;
+ const char * const Value = lua_tolstring(m_LuaState, a_StackPos, &Length);
+ if (Value != nullptr)
+ {
+ a_Value = { Value, Length };
+ return true;
+ }
+ return false;
+}
+
+
+
+
+
template <typename T>
bool cLuaState::GetStackValue(int a_StackPos, Vector3<T> & a_ReturnedVal)
{
diff --git a/src/Bindings/LuaState.h b/src/Bindings/LuaState.h
index 6f7a334b6..420fdad69 100644
--- a/src/Bindings/LuaState.h
+++ b/src/Bindings/LuaState.h
@@ -664,6 +664,7 @@ public:
bool GetStackValue(int a_StackPos, eWeather & a_Value);
bool GetStackValue(int a_StackPos, float & a_ReturnedVal);
bool GetStackValue(int a_StackPos, cUUID & a_Value);
+ bool GetStackValue(int a_StackPos, std::string_view & a_Value);
// template to catch all of the various c++ integral types without overload conflicts
template <class T, typename = std::enable_if_t<std::is_integral_v<T>>>
diff --git a/src/Bindings/ManualBindings.cpp b/src/Bindings/ManualBindings.cpp
index 1d0519708..37fc20d39 100644
--- a/src/Bindings/ManualBindings.cpp
+++ b/src/Bindings/ManualBindings.cpp
@@ -347,50 +347,59 @@ static int tolua_StringSplitAndTrim(lua_State * tolua_S)
-/** Retrieves the log message from the first param on the Lua stack.
-Can take either a string or a cCompositeChat.
-*/
-static void LogFromLuaStack(lua_State * tolua_S, eLogLevel a_LogLevel)
+/** Prints the message to the console, optionally formatting it with a plugin name prefix if the second param on the Lua stack is true. */
+static void LogFromLuaStack(lua_State * tolua_S, const std::string_view a_Message, const eLogLevel a_LogLevel)
{
- tolua_Error err;
- if (tolua_isusertype(tolua_S, 1, "cCompositeChat", false, &err))
+ if (lua_isboolean(tolua_S, 2) && (lua_toboolean(tolua_S, 2) == 1))
{
- auto Msg = static_cast<cCompositeChat *>(tolua_tousertype(tolua_S, 1, nullptr))->ExtractText();
- Logger::LogSimple(Msg, a_LogLevel);
- return;
+ Logger::LogSimple(a_Message, a_LogLevel);
+ }
+ else
+ {
+ Logger::LogSimple(fmt::format("[{}] {}", cManualBindings::GetLuaPlugin(tolua_S)->GetName(), a_Message), a_LogLevel);
}
-
- size_t len = 0;
- const char * str = lua_tolstring(tolua_S, 1, &len);
- Logger::LogSimple(fmt::format("[{}] {}", cManualBindings::GetLuaPlugin(tolua_S)->GetName(), std::string_view(str, len)), a_LogLevel);
}
-static int tolua_LOG(lua_State * tolua_S)
+/** Retrieves a string log message from the first param on the Lua stack, optionally prefixes it with plugin name, and prints it to the console. */
+static void LogFromLuaStack(lua_State * tolua_S, const eLogLevel a_LogLevel)
{
+ cLuaState L(tolua_S);
+
// If there's no param, spit out an error message instead of crashing:
- if (lua_isnil(tolua_S, 1))
+ if (!L.CheckParamString(1))
{
- LOGWARNING("Attempting to LOG a nil value!");
- cLuaState::LogStackTrace(tolua_S);
- return 0;
+ return;
}
- // If the param is a cCompositeChat, read the log level from it:
- eLogLevel LogLevel = eLogLevel::Regular;
+ std::string_view Message;
+ L.GetStackValue(1, Message);
+ LogFromLuaStack(tolua_S, Message, a_LogLevel);
+}
+
+
+
+
+
+static int tolua_LOG(lua_State * tolua_S)
+{
+ // If the param is a cCompositeChat, read the data from it:
tolua_Error err;
if (tolua_isusertype(tolua_S, 1, "cCompositeChat", false, &err))
{
- LogLevel = cCompositeChat::MessageTypeToLogLevel(
- static_cast<cCompositeChat *>(tolua_tousertype(tolua_S, 1, nullptr))->GetMessageType()
- );
+ const auto CompositeChat = static_cast<cCompositeChat *>(tolua_tousertype(tolua_S, 1, nullptr));
+ if (CompositeChat != nullptr) // isusertype returns true for nil values
+ {
+ LogFromLuaStack(tolua_S, CompositeChat->ExtractText(), cCompositeChat::MessageTypeToLogLevel(CompositeChat->GetMessageType()));
+ return 0;
+ }
}
// Log the message:
- LogFromLuaStack(tolua_S, LogLevel);
+ LogFromLuaStack(tolua_S, eLogLevel::Regular);
return 0;
}
@@ -400,14 +409,6 @@ static int tolua_LOG(lua_State * tolua_S)
static int tolua_LOGINFO(lua_State * tolua_S)
{
- // If there's no param, spit out an error message instead of crashing:
- if (lua_isnil(tolua_S, 1))
- {
- LOGWARNING("Attempting to LOGINFO a nil value!");
- cLuaState::LogStackTrace(tolua_S);
- return 0;
- }
-
LogFromLuaStack(tolua_S, eLogLevel::Info);
return 0;
}
@@ -418,14 +419,6 @@ static int tolua_LOGINFO(lua_State * tolua_S)
static int tolua_LOGWARN(lua_State * tolua_S)
{
- // If there's no param, spit out an error message instead of crashing:
- if (lua_isnil(tolua_S, 1))
- {
- LOGWARNING("Attempting to LOGWARN a nil value!");
- cLuaState::LogStackTrace(tolua_S);
- return 0;
- }
-
LogFromLuaStack(tolua_S, eLogLevel::Warning);
return 0;
}
@@ -436,14 +429,6 @@ static int tolua_LOGWARN(lua_State * tolua_S)
static int tolua_LOGERROR(lua_State * tolua_S)
{
- // If there's no param, spit out an error message instead of crashing:
- if (lua_isnil(tolua_S, 1))
- {
- LOGWARNING("Attempting to LOGERROR a nil value!");
- cLuaState::LogStackTrace(tolua_S);
- return 0;
- }
-
LogFromLuaStack(tolua_S, eLogLevel::Error);
return 0;
}