Lua compilation API: Difference between revisions
Jump to navigation
Jump to search
(Fix typo.) |
Sheenidgs137 (talk | contribs) m (Fixed typo API Parameters from luasource to obfuscate) |
||
Line 10: | Line 10: | ||
*'''compile:''' type '''value''' set to 1 to enable compilation | *'''compile:''' type '''value''' set to 1 to enable compilation | ||
*'''debug:''' type '''value''' set to 1 to enable debug information | *'''debug:''' type '''value''' set to 1 to enable debug information | ||
*''' | *'''obfuscate:''' type '''value''' | ||
**Set to 1 to enable some obfuscation | **Set to 1 to enable some obfuscation | ||
**Set to 2 to enable more obfuscation (From 1.5.2-9.07903) | **Set to 2 to enable more obfuscation (From 1.5.2-9.07903) |
Revision as of 02:52, 21 November 2022
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
- obfuscate: 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
-- This example allows you to compile all resource scripts by using /compilelua command. local compileEnabled = 1 local debugLevel = 0 local obfuscateLevel = 3 local apiCodes = { ["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 loadScriptsFromMeta() local metaFile = xmlLoadFile("meta.xml") if not metaFile then outputDebugString("[LUAC]: Failed to load scripts from meta.", 4, 255, 127, 0) return false end local metaChildren = xmlNodeGetChildren(metaFile) local scriptsTable = {} for nodeID = 1, #metaChildren do local metaNode = metaChildren[nodeID] local fileSrc = xmlNodeGetAttribute(metaNode, "src") if fileSrc then local luaScript = stringFind(fileSrc, ".lua") if luaScript then scriptsTable[#scriptsTable + 1] = fileSrc end end end xmlUnloadFile(metaFile) return scriptsTable end local function loadResourceScript(pPath) local scriptExists = fileExists(pPath) if not scriptExists then outputDebugString("[LUAC]: '"..pPath.."' doesn't exists.", 4, 255, 127, 0) return false end local scriptHandler = fileOpen(pPath) if not scriptHandler then outputDebugString("[LUAC]: '"..pPath.."' failed to open.", 4, 255, 127, 0) return false end local scriptSize = fileGetSize(scriptHandler) local scriptRaw = fileRead(scriptHandler, scriptSize) fileClose(scriptHandler) return scriptRaw end local function onScriptCompile(pCompiledLUA, pErrors, pScript) local compileSuccess = pErrors == 0 if not compileSuccess then outputDebugString("[LUAC]: '"..pScript.."' failed to compile.", 4, 255, 127, 0) return false end local compileError = apiCodes[pCompiledLUA] if compileError then outputDebugString("[LUAC]: '"..pScript.."' failed to compile - "..pCompiledLUA, 4, 255, 127, 0) return false end local compiledScript = fileCreate("luac/"..pScript) if not compiledScript then outputDebugString("[LUAC]: '"..pScript.."' failed to create.", 4, 255, 127, 0) return false end fileWrite(compiledScript, pCompiledLUA) fileClose(compiledScript) outputDebugString("[LUAC]: '"..pScript.."' compiled successfully.", 4, 255, 127, 0) return true end function compileLuaScripts(pPlayer) local fetchURL = string.format("https://luac.mtasa.com/?compile=%i&debug=%i&obfuscate=%i", compileEnabled, debugLevel, obfuscateLevel) local resourceScripts = loadScriptsFromMeta() local postData = true for scriptID = 1, #resourceScripts do local scriptPath = resourceScripts[scriptID] local scriptRaw = loadResourceScript(scriptPath) fetchRemote(fetchURL, onScriptCompile, scriptRaw, postData, scriptPath) end end addCommandHandler("compilelua", compileLuaScripts)
Changelog
Version | Description |
---|
2014-08-10 | encrypt has been renamed to obfuscate. blockdecompile has been removed. |