diff --git a/Source/Script/LuaFileOperations.cpp b/Source/Script/LuaFileOperations.cpp new file mode 100644 index 0000000..e924ffa --- /dev/null +++ b/Source/Script/LuaFileOperations.cpp @@ -0,0 +1,28 @@ +#include "Script/LuaFileOperations.h" +#include "File/FileCreation.h" + +extern "C" { +#include +} + +#include +#include +#include + +// OFFSET: 0x00AFE7D0 +// FUNCTION: fn_18339 +int LuaChangeDirectoryOfDatas(lua_State* state) { + std::string name = luaL_checkstring(state, 1); + std::string sourceDirectory = luaL_checkstring(state, 2); + std::string targetDirectory = luaL_checkstring(state, 3); + std::string source = sourceDirectory + "\\" + name; + std::string target = targetDirectory + "\\" + name; + + if (_access(target.c_str(), 0) != 0 && _access(source.c_str(), 0) == 0) { + if (_access(target.c_str(), 0) == 0 || CreateDirectoryPath(targetDirectory)) { + std::rename(source.c_str(), target.c_str()); + } + } + + return 0; +} diff --git a/Source/Script/LuaFileOperations.h b/Source/Script/LuaFileOperations.h new file mode 100644 index 0000000..4bf669c --- /dev/null +++ b/Source/Script/LuaFileOperations.h @@ -0,0 +1,8 @@ +#ifndef RAGNAROK_SOURCE_SCRIPT_LUAFILEOPERATIONS_H +#define RAGNAROK_SOURCE_SCRIPT_LUAFILEOPERATIONS_H + +struct lua_State; + +int LuaChangeDirectoryOfDatas(lua_State* state); + +#endif diff --git a/data/compile.json b/data/compile.json index 60895a2..5aad259 100644 --- a/data/compile.json +++ b/data/compile.json @@ -571,6 +571,7 @@ "Source/Resource/World/WorldResource.cpp": 3, "Source/Resource/XmlNode.cpp": 3, "Source/Resource/XmlParsing.cpp": 3, + "Source/Script/LuaFileOperations.cpp": 5, "Source/Script/LuaInstance.cpp": 5, "Source/Script/LuaScript.cpp": 5, "Source/UI/Acceptance/UIChooseSellBuyWnd.cpp": 2,