Lua compilation API
Jump to navigation
Jump to search
This page is a guide for Lua compilation API.
Syntax
POST "http://luac.mtasa.com/index.php"
Parameters
- luasource: type file the file content
- compile: type value set to 1 to enable compilation
- debug: type value set to 1 to enable debug information
- luasource: type value
- Set to 1 to enable some obfuscation
- Set to 2 to enable more obfuscation (From 1.5.2-9.07903)
- Set to 3 to enable even more obfuscation (From 1.5.6-9.18728)
Examples
Linux example using curl
FROM="example.lua" TO="compiled.lua" curl -s -X POST -F compile=1 -F debug=0 -F obfuscate=3 -F luasource=@$FROM http://luac.mtasa.com/ > $TO
Linux example using luac replacement
luac_mta -e3 -o compiled.lua example.lua if [ $? -ne 0 ]; then echo "Error" fi
Need luac_mta (R13 2019-07-12) for Linux 32 bit or Linux 64 bit
Windows batch file example using curl
set FROM="example.lua" set TO="compiled.lua" curl.exe -s -X POST -F compile=1 -F debug=0 -F obfuscate=3 -F luasource=@%FROM% http://luac.mtasa.com/ > %TO%
Get curl.exe
(Original from http://curl.haxx.se/download.html)
Windows example using luac.exe replacement
luac_mta.exe -e3 -o compiled.lua example.lua IF NOT ERRORLEVEL 1 goto lp1 echo "Error" :lp1
Get luac_mta.exe (R12 2019-07-12) only x86
Lua example
local compile = 1 local debug = 0 local obfuscate = 3 local scriptsToCompile = {"server.lua"} -- can contain multiple scripts, separated by comma, e.g: "script_1.lua", "script_2.lua" local errorCodes = { ["ERROR Nothing to do - Please select compile and/or obfuscate"] = true, ["ERROR Could not compile file"] = true, ["ERROR Could not read file"] = true, ["ERROR Already compiled"] = true, ["ERROR Already encrypted"] = true, } local function loadScript(pPath) local scriptExist = fileExists(pPath) if scriptExist then local scriptFile = fileOpen(pPath) if scriptFile then local scriptSize = fileGetSize(scriptFile) local scriptCode = fileRead(scriptFile, scriptSize) fileClose(scriptFile) return scriptCode else outputDebugString("[Script compile]: Failed to open "..pPath..".") end else outputDebugString("[Script compile]: "..pPath.." doesn't exist.") end end local function compileCallback(pCompiledCode, pErrors, pScript) if pErrors == 0 then local haveError = errorCodes[pCompiledCode] if haveError then outputDebugString("[Script compile]: Failed with error: "..pCompiledCode.." ("..pScript..")") return end local compiledScript = fileCreate("compiled/"..pScript) if compiledScript then fileWrite(compiledScript, pCompiledCode) fileClose(compiledScript) outputDebugString("[Script compile]: "..pScript.." compiled successfully.") else outputDebugString("[Script compile]: Failed to create "..pScript..".") end else outputDebugString("[Script compile]: Couldn't compile "..pScript..".") end end local function compileScripts() local fetchURL = string.format("https://luac.mtasa.com/?compile=%d&debug=%d&obfuscate=%d", compile, debug, obfuscate) for scriptID = 1, #scriptsToCompile do local scriptName = scriptsToCompile[scriptID] fetchRemote(fetchURL, compileCallback, loadScript(scriptName), true, scriptName) end end addEventHandler("onResourceStart", resourceRoot, compileScripts)
Changelog
Version | Description |
---|
2014-08-10 | encrypt has been renamed to obfuscate. blockdecompile has been removed. |