Migrating from CitizenMP.Server
Loading Scripts
require
doesn’t exist anymore, any scripts/libraries should be loaded using the server_script
directive in the resource manifest.
For example:
server_script "my_script.lua" -- load script
server_script "my_lib.net.dll" -- load a particular assembly into the .net appdomain
server_script "@resource_name/script.lua" -- load a script from another resource
To load files at runtime, you can use LOAD_RESOURCE_FILE (LoadResourceFile("resource_name", "file_name")
), and for example if it is a Lua file you can use
load(...)
to load the Lua code, like in the following example:
function loadLuaFile(resource, file)
return load(LoadResourceFile(resource, file), file)()
end
String Splitting
str:Split
does not exist anymore, you should use the proper Lua functions for this. For the commonly copy-pasted stringsplit
function, this would be:
function stringsplit(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={} ; i=1
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
t[i] = str
i = i + 1
end
return t
end
Bitwise Operations
Lua 5.3 deprecated bit32
, and the CfxLua runtime does not enable it. Bitwise operations now work using normal operators (&
, |
, …) like in most other programming languages.
CLR
NeoLua is no longer in use, so the clr
namespace does not exist anymore. If you need to run C# code, use the normal .NET runtime and server exports.
TempIDs
If you did any specific bitwise operations assuming during playerConnecting
the source
value is above 0x10000, this should not be needed anymore to use functions during playerConnecting
.