mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Got eluna running and working
This commit is contained in:
@@ -46,7 +46,7 @@ target_include_directories(lualib INTERFACE
|
||||
/usr/include/luajit-2.1
|
||||
${CMAKE_SOURCE_DIR}/dep/efsw/include)
|
||||
target_link_libraries(lualib INTERFACE luajit-5.1 efsw)
|
||||
target_compile_definitions(lualib INTERFACE LUAJIT_VERSION ELUNA_TRINITY ELUNA_EXPANSION=9)
|
||||
target_compile_definitions(lualib INTERFACE ELUNA LUAJIT_VERSION ELUNA_TRINITY ELUNA_EXPANSION=9)
|
||||
|
||||
add_library(game
|
||||
${PRIVATE_SOURCES})
|
||||
|
||||
@@ -31,25 +31,42 @@ ElunaConfig::~ElunaConfig()
|
||||
|
||||
void ElunaConfig::Initialize()
|
||||
{
|
||||
ELUNA_LOG_INFO("[Eluna]: Initializing Eluna configuration...");
|
||||
|
||||
// Load bools
|
||||
SetConfig(CONFIG_ELUNA_ENABLED, "Eluna.Enabled", true);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_ENABLED = %s", GetConfig(CONFIG_ELUNA_ENABLED) ? "true" : "false");
|
||||
|
||||
SetConfig(CONFIG_ELUNA_TRACEBACK, "Eluna.TraceBack", false);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_TRACEBACK = %s", GetConfig(CONFIG_ELUNA_TRACEBACK) ? "true" : "false");
|
||||
|
||||
SetConfig(CONFIG_ELUNA_SCRIPT_RELOADER, "Eluna.ScriptReloader", false);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_SCRIPT_RELOADER = %s", GetConfig(CONFIG_ELUNA_SCRIPT_RELOADER) ? "true" : "false");
|
||||
|
||||
SetConfig(CONFIG_ELUNA_ENABLE_UNSAFE, "Eluna.UseUnsafeMethods", true);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_ENABLE_UNSAFE = %s", GetConfig(CONFIG_ELUNA_ENABLE_UNSAFE) ? "true" : "false");
|
||||
|
||||
SetConfig(CONFIG_ELUNA_ENABLE_DEPRECATED, "Eluna.UseDeprecatedMethods", true);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_ENABLE_DEPRECATED = %s", GetConfig(CONFIG_ELUNA_ENABLE_DEPRECATED) ? "true" : "false");
|
||||
|
||||
SetConfig(CONFIG_ELUNA_ENABLE_RELOAD_COMMAND, "Eluna.ReloadCommand", true);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_ENABLE_RELOAD_COMMAND = %s", GetConfig(CONFIG_ELUNA_ENABLE_RELOAD_COMMAND) ? "true" : "false");
|
||||
|
||||
// Load strings
|
||||
SetConfig(CONFIG_ELUNA_SCRIPT_PATH, "Eluna.ScriptPath", "lua_scripts");
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_SCRIPT_PATH = %s", GetConfig(CONFIG_ELUNA_SCRIPT_PATH).c_str());
|
||||
|
||||
SetConfig(CONFIG_ELUNA_ONLY_ON_MAPS, "Eluna.OnlyOnMaps", "");
|
||||
SetConfig(CONFIG_ELUNA_REQUIRE_PATH_EXTRA, "Eluna.RequirePaths", "");
|
||||
SetConfig(CONFIG_ELUNA_REQUIRE_CPATH_EXTRA, "Eluna.RequireCPaths", "");
|
||||
|
||||
// Load ints
|
||||
SetConfig(CONFIG_ELUNA_RELOAD_SECURITY_LEVEL, "Eluna.ReloadSecurityLevel", 3);
|
||||
ELUNA_LOG_DEBUG("[Eluna]: CONFIG_ELUNA_RELOAD_SECURITY_LEVEL = %u", GetConfig(CONFIG_ELUNA_RELOAD_SECURITY_LEVEL));
|
||||
|
||||
// Call extra functions
|
||||
TokenizeAllowedMaps();
|
||||
ELUNA_LOG_INFO("[Eluna]: Eluna configuration initialized successfully");
|
||||
}
|
||||
|
||||
void ElunaConfig::SetConfig(ElunaConfigBoolValues index, char const* fieldname, bool defvalue)
|
||||
|
||||
@@ -106,12 +106,18 @@ void ElunaLoader::ReloadScriptCache()
|
||||
|
||||
void ElunaLoader::LoadScripts()
|
||||
{
|
||||
ELUNA_LOG_INFO("[Eluna]: LoadScripts() called, current cache state: %u", uint32(m_cacheState));
|
||||
|
||||
// only reload the cache if it is either in a reinit state or not loaded at all
|
||||
if (m_cacheState != SCRIPT_CACHE_REINIT && m_cacheState != SCRIPT_CACHE_NONE)
|
||||
{
|
||||
ELUNA_LOG_DEBUG("[Eluna]: Script cache is in state %u, skipping load", uint32(m_cacheState));
|
||||
return;
|
||||
}
|
||||
|
||||
// set the cache state to loading
|
||||
m_cacheState = SCRIPT_CACHE_LOADING;
|
||||
ELUNA_LOG_DEBUG("[Eluna]: Script cache state set to LOADING");
|
||||
|
||||
uint32 oldMSTime = ElunaUtil::GetCurrTime();
|
||||
|
||||
@@ -162,6 +168,7 @@ void ElunaLoader::LoadScripts()
|
||||
|
||||
// set the cache state to ready
|
||||
m_cacheState = SCRIPT_CACHE_READY;
|
||||
ELUNA_LOG_INFO("[Eluna]: Script cache state set to READY");
|
||||
}
|
||||
|
||||
int ElunaLoader::LoadBytecodeChunk(lua_State* /*L*/, uint8* bytes, size_t len, BytecodeBuffer* buffer)
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
extern "C"
|
||||
{
|
||||
#include "lua.h"
|
||||
#include "lualib.h"
|
||||
#include "lauxlib.h"
|
||||
};
|
||||
|
||||
class AuctionHouseObject;
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "LuaEngine/LuaEngine.h"
|
||||
#include "LuaEngine/ElunaMgr.h"
|
||||
#include "LuaEngine/ElunaConfig.h"
|
||||
#include "LuaEngine/ElunaLoader.h"
|
||||
#include "AccountMgr.h"
|
||||
#include "AchievementMgr.h"
|
||||
#include "AreaTriggerDataStore.h"
|
||||
@@ -1264,6 +1265,13 @@ bool World::SetInitialWorldSettings()
|
||||
///- Initialize config settings
|
||||
LoadConfigSettings();
|
||||
|
||||
///- Initialize Eluna configuration and loader
|
||||
TC_LOG_INFO("server.loading", "Initializing Eluna...");
|
||||
sElunaConfig->Initialize();
|
||||
TC_LOG_INFO("server.loading", "Loading Eluna scripts...");
|
||||
sElunaLoader->LoadScripts();
|
||||
TC_LOG_INFO("server.loading", "Eluna initialization complete");
|
||||
|
||||
///- Initialize Allowed Security Level
|
||||
LoadDBAllowedSecurityLevel();
|
||||
|
||||
|
||||
@@ -211,10 +211,14 @@ add_library(scripts STATIC
|
||||
target_link_libraries(scripts
|
||||
PRIVATE
|
||||
trinity-core-interface
|
||||
game
|
||||
lualib
|
||||
PUBLIC
|
||||
game-interface)
|
||||
|
||||
target_include_directories(scripts
|
||||
PRIVATE
|
||||
/usr/include/luajit-2.1
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ EndScriptData */
|
||||
#ifdef ELUNA
|
||||
#include "LuaEngine.h"
|
||||
#include "ElunaMgr.h"
|
||||
#include "ElunaConfig.h"
|
||||
#endif
|
||||
|
||||
using namespace Trinity::ChatCommands;
|
||||
@@ -53,16 +54,23 @@ private:
|
||||
static bool HandleLuaCommand(ChatHandler* handler, char const* args)
|
||||
{
|
||||
#ifdef ELUNA
|
||||
// Check if Eluna is enabled at runtime
|
||||
if (!sElunaConfig->IsElunaEnabled())
|
||||
{
|
||||
handler->SendSysMessage("Eluna is not enabled on this server.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!*args)
|
||||
{
|
||||
handler->SendSysMessage("Usage: .lua <code>");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get the global Eluna instance
|
||||
// Get the global Eluna instance directly from ElunaMgr
|
||||
// Note: We don't use ElunaInfo here because its destructor would destroy the instance
|
||||
ElunaInfoKey key = ElunaInfoKey::MakeGlobalKey(0);
|
||||
ElunaInfo info(key);
|
||||
Eluna* eluna = info.GetEluna();
|
||||
Eluna* eluna = sElunaMgr->Get(key);
|
||||
|
||||
if (!eluna || !eluna->HasLuaState())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user