Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Client/mods/deathmatch/logic/lua/CLuaMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,9 @@ void CLuaMain::InitVM()
lua_pushelement(m_luaVM, m_pResource->GetResourceEntity());
lua_setglobal(m_luaVM, "resourceRoot");

lua_pushstring(m_luaVM, m_pResource->GetName());
lua_setglobal(m_luaVM, "resourceName");

lua_pushelement(m_luaVM, m_pResource->GetResourceGUIEntity());
lua_setglobal(m_luaVM, "guiRoot");

Expand Down
14 changes: 12 additions & 2 deletions Client/mods/deathmatch/logic/luadefs/CLuaResourceDefs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,22 @@ int CLuaResourceDefs::GetResourceConfig(lua_State* luaVM)
int CLuaResourceDefs::GetResourceName(lua_State* luaVM)
{
// Verify arguments
CResource* pResource = NULL;
CResource* pResource;
CScriptArgReader argStream(luaVM);
argStream.ReadUserData(pResource);
argStream.ReadUserData(pResource, nullptr);

if (!argStream.HasErrors())
{
if (!pResource)
{
// Find our vm and get the root
CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM);
if (pLuaMain)
{
pResource = pLuaMain->GetResource();
}
}

if (pResource)
{
// Grab its name and return it
Expand Down
3 changes: 3 additions & 0 deletions Server/mods/deathmatch/logic/lua/CLuaMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,9 @@ void CLuaMain::Initialize()

lua_pushelement(m_luaVM, m_pResource->GetResourceRootElement());
lua_setglobal(m_luaVM, "resourceRoot");

lua_pushstring(m_luaVM, m_pResource->GetName());
lua_setglobal(m_luaVM, "resourceName");
}

void CLuaMain::LoadEmbeddedScripts()
Expand Down
26 changes: 22 additions & 4 deletions Server/mods/deathmatch/logic/luadefs/CLuaResourceDefs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -901,14 +901,32 @@ int CLuaResourceDefs::getResourceLoadTime(lua_State* luaVM)
int CLuaResourceDefs::getResourceName(lua_State* luaVM)
{
CResource* pResource;

CScriptArgReader argStream(luaVM);
argStream.ReadUserData(pResource);
argStream.ReadUserData(pResource, nullptr);

if (!argStream.HasErrors())
{
lua_pushstring(luaVM, pResource->GetName().c_str());
return 1;
if (!pResource)
{
CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM);
if (pLuaMain)
{
pResource = pLuaMain->GetResource();
}

// No Lua VM or no assigned resource?
if (!pResource)
{
lua_pushboolean(luaVM, false);
return 1;
}
}

if (pResource->IsActive())
{
lua_pushstring(luaVM, pResource->GetName().c_str());
return 1;
}
}
else
m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage());
Expand Down