Jump to content

loadstring, source variable.


N3xT

Recommended Posts

Hey, so I'm working on a training server right now I'm using Bonsai's scripts loader which uses environment and wrappers well some maps scripts doesn't work as the way it should because of the source variable, To be honest, I don't have much experience with environments and wrappers, I haven't used them before. 

addEventHandler("onClientMarkerHit", createMarker ( ... ), -- Works perfectly.
local marker = createMarker ( ... )

addEventHandler("onClientMarkerHit", root,
  function ( )
    	if ( source == marker ) then
    		-- Doesn't work because the event source isn't the marker.
     	 end
  end
)

 

My codes, Thanks in advance:

Wrapper = {}
Wrapper.lists = {}
Wrapper.lists.objects = {}
Wrapper.lists.timers = {}
Wrapper.lists.events = {}
Wrapper.lists.txd = {}
Wrapper.lists.shaders = {}
Wrapper.lists.marker = {}
Wrapper.lists.xmlFiles = {}
Wrapper.lists.models = {}
Wrapper.lists.sounds = {}
Wrapper.lists.peds = {}
Wrapper.lists.commands = {}
Wrapper.lists.binds = {}
Wrapper.lists.vehicle = {}
Wrapper.lists.shapes = {}
Wrapper.lists.collision = {}
local _createObject = createObject 
local _setTimer = setTimer
local _addEventHandler = addEventHandler
local _engineLoadTXD = engineLoadTXD
local _engineImportTXD = engineImportTXD
local _createMarker = createMarker
local _xmlLoadFile = xmlLoadFile
local _engineSetModelLODDistance = engineSetModelLODDistance
local _engineReplaceCOL = engineReplaceCOL
local _engineLoadCOL = engineLoadCOL
local _engineReplaceModel = engineReplaceModel
local _engineLoadDFF = engineLoadDFF
local _addCommandHandler = addCommandHandler
local _bindKey = bindKey
local _createPed = createPed
local _createVehicle = createVehicle
local _dxCreateTexture = dxCreateTexture
local _dxCreateScreenSource = dxCreateScreenSource
local _fileDelete = fileDelete
local _dxCreateShader = dxCreateShader
local _setElementData = setElementData
local _setElementDimension = setElementDimension
local _createColSphere = createColSphere
local _setCloudsEnabled = setCloudsEnabled
local _setWeather = setWeather
local _setElementVelocity = setElementVelocity
local _outputChatBox = outputChatBox

triggerServerEvent = function() end

setElementDimension = function() end

outputChatBox = function() end

setCloudsEnabled = function() end

playSound = function() end

setSoundVolume = function() end

setElementVelocity = function ( vehicle, x, y, z )
	_setElementVelocity ( vehicle, x, y, z )
end

setElementData = function(theElement, key, value, synchronize)  

	_setElementData(theElement, key, value, false)

end

dxCreateShader = function(path, priority, maxDistance, layered, elementTypes)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local shader = _dxCreateShader(Wrapper.mapname.."/"..path, priority or 0, maxDistance or 0, layered or false, elementTypes or "world,vehicle,object,other") 
	table.insert(Wrapper.lists.shaders, shader)
	return shader
	
end

fileDelete = function(path)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local bool = _fileDelete(Wrapper.mapname.."/"..path)
	return bool

end


dxCreateScreenSource = function(x,y)

	local screen = _dxCreateScreenSource(x,y)
	table.insert(Wrapper.lists.txd, screen)
	return screen

end
	
	
dxCreateTexture = function(path)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local file = _dxCreateTexture(Wrapper.mapname.."/"..path)
	table.insert(Wrapper.lists.txd, file)
	return file


end


setWeather = function(id)

	_setWeather(id)
	_setCloudsEnabled(false)

end


xmlLoadFile = function(path)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local file = _xmlLoadFile(Wrapper.mapname.."/"..path)
	table.insert(Wrapper.lists.xmlFiles, file)
	return file
	
end
		
		
engineSetModelLODDistance = function(model,distance)

	_engineSetModelLODDistance(model,distance)
	return true
	
end


engineReplaceCOL = function(col, id)

	_engineReplaceCOL(col, id)
	table.insert(Wrapper.lists.collision, id)
	return true
	
end


engineLoadCOL = function(path)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local col = _engineLoadCOL(Wrapper.mapname.."/"..path)
	table.insert(Wrapper.lists.models, col)
	return col
	
end


engineReplaceModel = function(dff, model)
	if ( dff ) then
		_engineReplaceModel(dff,model)
		table.insert(Wrapper.lists.models, model)
		return true
	else
		return false
	end
end


engineLoadDFF = function(path, model)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local dff = _engineLoadDFF(Wrapper.mapname.."/"..path, model)
	table.insert(Wrapper.lists.models, model)
	return dff
	
end


--Textures
engineLoadTXD = function(path)
	if not fileExists ( Wrapper.mapname.."/"..path ) then return false end
	local txd = _engineLoadTXD(Wrapper.mapname.."/"..path)
	table.insert(Wrapper.lists.txd, txd)
	return txd

end


engineImportTXD = function(txd, model)
	if ( txd ) then
		_engineImportTXD(txd, model)
	end

end

--Marker
function createMarker(x,y,z,type,size,r,g,b,a)
	
	local marker = _createMarker(x,y,z,type,size,r,g,b,a)
	_setElementDimension(marker, getElementDimension(localPlayer))
	table.insert(Wrapper.lists.marker, marker)
	return marker

end


createColSphere = function(x, y, z, size)
	
	local shape = _createColSphere(x, y, z, size)
	_setElementDimension(shape, getElementDimension(localPlayer))
	table.insert(Wrapper.lists.shapes, shape)
	return shape

end

--Objects
createObject = function(...) 

	local object = _createObject(...)
	_setElementDimension(object, getElementDimension(localPlayer) )
	table.insert(Wrapper.lists.objects, object)
	return object 
	
end
 
 
 --Timers
setTimer = function(...)
	
	local timer = _setTimer(...)
	table.insert(Wrapper.lists.timers, timer)
	return timer
 
 end
 
 
 --Handlers
addEventHandler = function(eventName, attachedTo, handlerFunction, getPropagated, priority)

	if eventName == "onClientResourceStart" then 
	
		table.insert(Wrapper.lists.timers, _setTimer(handlerFunction, 50, 1)) 
		
		return false 
		
	end
    table.insert (Wrapper.lists.events, { eventName, attachedTo, handlerFunction } )
    return _addEventHandler ( eventName, attachedTo, handlerFunction, getPropagated, priority )
	
end
 
 

addCommandHandler = function (cmd, func)

	_addCommandHandler(cmd, func)
	table.insert (Wrapper.lists.commands, {cmd, funcs} )
	return true
	
end
 
 

bindKey = function (key,state,func)
	
	_bindKey(key,state,func)
	table.insert (Wrapper.lists.binds, {key, state, func} )
	return true
	
end



createPed = function (...)

	local ped = _createPed(...)
	_setElementDimension(ped, getElementDimension(localPlayer) )
	table.insert (Wrapper.lists.peds, ped)
	return ped
	
end
 

createVehicle = function(...)
	
	local vehicle = _createVehicle(...)
	_setElementDimension(vehicle, getElementDimension(localPlayer) )
	table.insert (Wrapper.lists.vehicle, vehicle)	
	return vehicle
	
end


function table.copy(tab, recursive)

    local ret = {}
	
    for key, value in pairs(tab) do

        if (type(value) == "table") and recursive then 
		
			ret[key] = table.copy(value)
			
        else 
		
			ret[key] = value 
		
		end
		
    end
	
    return ret
	
end


function Wrapper.createEnvironment()

	local env = table.copy(_G, true)

	setmetatable(env, {
	
		__index = function(_, index)
			return rawget(env, index)
		end,
		
		__newindex = function(_, index, value)
			rawset(env, index, value)
		end
		
	})

	setmetatable(_G, {

		__newindex = function(_, index, value)
			rawset(env, index, value)
		end
		
	})
	
	return env
	
end


function Wrapper.loadScript( resourceName, data )
	source = nil
	Wrapper.mapname = "cache/" .. resourceName
	local env = Wrapper.createEnvironment()
	local loaded = loadstring(data)
	if loaded then
		setfenv(loaded, env)
		pcall(loaded)
	end
end
addEvent("onClientDownloadFinished", true)
_addEventHandler("onClientDownloadFinished", root, Wrapper.loadScript)

 
function Wrapper.unloadScript()

	local metatable = {

		__index = function(self, index)
			return rawget(_G, index)
		end,
	
		__newindex = function(_G, index, value)
			rawset(_G, index, value)
		end
	}

	setmetatable(_G, metatable)

	for i, object in pairs(Wrapper.lists.objects) do
		if isElement(object) then
			destroyElement(object)
		end
	end
  
	for i, timer in pairs(Wrapper.lists.timers) do
		if isTimer(timer) then
			killTimer(timer)
		end
	end
  
	for i, theEvent in pairs(Wrapper.lists.events) do
		removeEventHandler( theEvent[ 1 ], theEvent[ 2 ], theEvent[ 3 ] )
		if theEvent[3] then
			theEvent[3] = nil
		end
	end
	
	for i, txd in pairs(Wrapper.lists.txd) do
		if isElement(txd) then
			destroyElement(txd)
		end
	end
	
	for i, marker in pairs(Wrapper.lists.marker) do
		if isElement(marker) then
			destroyElement(marker)
		end
	end
	
	for i, model in pairs(Wrapper.lists.models) do
		engineRestoreModel(model)
	end
	
	for i, file in pairs(Wrapper.lists.xmlFiles) do
		xmlUnloadFile(file)
	end
	
	for i, sound in pairs(Wrapper.lists.sounds) do
		if sound and isElement(sound) then
			stopSound(sound)
		end
	end
	
	for i, bind in pairs(Wrapper.lists.binds) do
		unbindKey(bind[1],bind[2],bind[3])
	end
	
	for i, command in pairs(Wrapper.lists.commands) do
		removeCommandHandler(command[1],command[2])
	end
	
	for i, peds in pairs(Wrapper.lists.peds) do
		if isElement(peds) then
			destroyElement(peds)
		end
	end
	
	for i, vehicle in pairs(Wrapper.lists.vehicle) do
		if isElement(vehicle) then
			destroyElement(vehicle)
		end
	end
	
	for i, shader in pairs(Wrapper.lists.shaders) do
		if isElement(shader) then
			destroyElement(shader)
		end
	end
	
	for i, shape in pairs(Wrapper.lists.shapes) do
		if isElement(shape) then
			destroyElement(shape)
		end
	end
	
	for i, id in pairs(Wrapper.lists.collision) do
	
		engineRestoreCOL(id)
	
	end
	
	setWaterLevel(0)
	resetSkyGradient()
	resetWaterColor()
	resetWaterLevel()
	setWaveHeight(0)
	resetHeatHaze()
	resetWindVelocity()
	resetAmbientSounds()
	resetWorldSounds()
	resetRainLevel()
	resetSunSize()
	resetSunColor()
	resetFogDistance()
	resetFarClipDistance()
	setGravity(0.008)
	setGameSpeed(1)
	_setWeather(3)
	setWorldSpecialPropertyEnabled("hovercars", false)
	setWorldSpecialPropertyEnabled("aircars", false)
	setWorldSpecialPropertyEnabled("extrabunny", false)
	setWorldSpecialPropertyEnabled("extrajump", false)
	restoreAllWorldModels()
	_setCloudsEnabled(false)	
	Wrapper.lists.objects = {}
	Wrapper.lists.timers = {}
	Wrapper.lists.events = {}
	Wrapper.lists.txd = {}
	Wrapper.lists.marker = {}
	Wrapper.lists.xmlFiles = {}
	Wrapper.lists.models = {}
	Wrapper.lists.sounds = {}
	Wrapper.lists.data = {}
	Wrapper.lists.peds = {}
	Wrapper.lists.commands = {}
	Wrapper.lists.binds = {}
	Wrapper.lists.vehicle = {}	
	Wrapper.lists.shapes = {}	
	Wrapper.lists.shaders = {}	
	Wrapper.lists.collision = {}
	
end
addEvent("onClientArenaReset", true)
_addEventHandler("onClientArenaReset", root, Wrapper.unloadScript)

 

Edited by N3xT
Link to comment
  • Discord Moderators

What's the type of it then?
Btw, you can do this also:

addEventHandler("onClientMarkerHit", createMarker ( ... ),
  function ( )
    	
  end
)

This way it only gets triggered when that marker gets streamed in

Link to comment
23 minutes ago, Pirulax said:

What's the type of it then?
Btw, you can do this also:


addEventHandler("onClientMarkerHit", createMarker ( ... ),  function ( )    	  end)

This way it only gets triggered when that marker gets streamed in

Thanks, but your reply isn't useful at all I'm already aware of that and I'm looking for a way to fix.

Link to comment
15 minutes ago, Pirulax said:

try:


print(_G.source)

 

Result: nil

 

addEventHandler = function(eventName, attachedTo, handlerFunction, getPropagated, priority)

	if eventName == "onClientResourceStart" then 
	
		table.insert(Wrapper.lists.timers, _setTimer(handlerFunction, 50, 1)) 
		
		return false 
	elseif eventName == "onClientMarkerHit" then
		print(_G.source)
		
	end
    table.insert (Wrapper.lists.events, { eventName, attachedTo, handlerFunction } )
    return _addEventHandler ( eventName, attachedTo, handlerFunction, getPropagated, priority )
	
end

 

Link to comment

Some metatable knowledge may help on this, I'm not really sure if Bonsai's wrapper its secure at all. Anyways, using __index and __newindex keys on environment meta should make it work once you try variable capturing.

There exists some explained way already, which is really efficient.

Thats how all my multigamemodes handle map script(s) load/execute.

Edited by MisterQuestions
  • Like 1
Link to comment
15 minutes ago, MisterQuestions said:

Some metatable knowledge may help on this, I'm not really sure if Bonsai's wrapper its secure at all. Anyways, using __index and __newindex keys on environment meta should make it work once you try variable capturing.

There exists some explained way already, which is really efficient.

Thats how all my multigamemodes handle map script(s) load/execute.

Well, that's my problem I'm trying to learn metatable even though I couldn't find out the problem.

Link to comment
38 minutes ago, Pirulax said:

Wel, It should be there, because if I type in my console(while runcode is running)

print(type(_G.source))
It print's that it's a userdata.

So, I honestly dont know what's the problem.

I tried it using runcode and It prints userdata.

Link to comment
  • Discord Moderators

Runcode uses loadstring too, so it should work.
Run:

outputConsole(inspect(_G))

And send the console log(It should print every single MTA function(if OOP is enabled then the classes too)).

  • Like 1
Link to comment
1 hour ago, Pirulax said:

Runcode uses loadstring too, so it should work.
Run:


outputConsole(inspect(_G))

And send the console log(It should print every single MTA function(if OOP is enabled then the classes too)).

<1>{
  Check = <function 1>,
  FormatDate = <function 2>,
  Matrix = {
    create = <function 3>,
    getForward = <function 4>,
    getPosition = <function 5>,
    getRight = <function 6>,
    getRotation = <function 7>,
    getUp = <function 8>,
    inverse = <function 9>,
    setForward = <function 10>,
    setPosition = <function 11>,
    setRight = <function 12>,
    setRotation = <function 13>,
    setUp = <function 14>,
    transformDirection = <function 15>,
    transformPosition = <function 16>,
    <metatable> = <2>{
      __call = <function 17>
    }
  },
  Vector2 = {
    create = <function 18>,
    dot = <function 19>,
    getLength = <function 20>,
    getNormalized = <function 21>,
    getSquaredLength = <function 22>,
    getX = <function 23>,
    getY = <function 24>,
    normalize = <function 25>,
    setX = <function 26>,
    setY = <function 27>,
    <metatable> = <table 2>
  },
  Vector3 = {
    create = <function 28>,
    cross = <function 29>,
    dot = <function 30>,
    getLength = <function 31>,
    getNormalized = <function 32>,
    getSquaredLength = <function 33>,
    getX = <function 34>,
    getY = <function 35>,
    getZ = <function 36>,
    normalize = <function 37>,
    setX = <function 38>,
    setY = <function 39>,
    setZ = <function 40>,
    <metatable> = <table 2>
  },
  Vector4 = {
    create = <function 41>,
    dot = <function 42>,
    getLength = <function 43>,
    getNormalized = <function 44>,
    getSquaredLength = <function 45>,
    getW = <function 46>,
    getX = <function 47>,
    getY = <function 48>,
    getZ = <function 49>,
    normalize = <function 50>,
    setW = <function 51>,
    setX = <function 52>,
    setY = <function 53>,
    setZ = <function 54>,
    <metatable> = <table 2>
  },
  _DEBUG = false,
  _G = <table 1>,
  _VERSION = "Lua 5.1",
  _aclrights = {
    ["command.aclrequest"] = true,
    ["command.addaccount"] = true,
    ["command.aexec"] = true,
    ["command.authserial"] = true,
    ["command.ban"] = true,
    ["command.banip"] = true,
    ["command.banserial"] = true,
    ["command.blendweather"] = true,
    ["command.blowvehicle"] = true,
    ["command.changemap"] = true,
    ["command.changemode"] = true,
    ["command.chgpass"] = true,
    ["command.createteam"] = true,
    ["command.crun"] = true,
    ["command.customize"] = true,
    ["command.debugscript"] = true,
    ["command.delaccount"] = true,
    ["command.delete"] = true,
    ["command.destroyteam"] = true,
    ["command.destroyvehicle"] = true,
    ["command.execute"] = true,
    ["command.freeze"] = true,
    ["command.gamemode"] = true,
    ["command.givevehicle"] = true,
    ["command.giveweapon"] = true,
    ["command.install"] = true,
    ["command.jetpack"] = true,
    ["command.kick"] = true,
    ["command.listbans"] = true,
    ["command.listmessages"] = true,
    ["command.listresources"] = true,
    ["command.loadmodule"] = true,
    ["command.mute"] = true,
    ["command.readmessage"] = true,
    ["command.refresh"] = true,
    ["command.refreshall"] = true,
    ["command.reloadacl"] = true,
    ["command.reloadbans"] = true,
    ["command.reloadmodule"] = true,
    ["command.repair"] = true,
    ["command.restart"] = true,
    ["command.run"] = true,
    ["command.setarmour"] = true,
    ["command.setblurlevel"] = true,
    ["command.setcolor"] = true,
    ["command.setdimension"] = true,
    ["command.setfpslimit"] = true,
    ["command.setgame"] = true,
    ["command.setgamespeed"] = true,
    ["command.setgravity"] = true,
    ["command.setgroup"] = true,
    ["command.sethealth"] = true,
    ["command.setinterior"] = true,
    ["command.setmap"] = true,
    ["command.setmoney"] = true,
    ["command.setnick"] = true,
    ["command.setpaintjob"] = true,
    ["command.setpassword"] = true,
    ["command.setskin"] = true,
    ["command.setskygradient"] = true,
    ["command.setstat"] = true,
    ["command.setteam"] = true,
    ["command.settime"] = true,
    ["command.setwaveheight"] = true,
    ["command.setweather"] = true,
    ["command.setwelcome"] = true,
    ["command.shout"] = true,
    ["command.shutdown"] = true,
    ["command.skipmap"] = true,
    ["command.slap"] = true,
    ["command.spectate"] = true,
    ["command.srun"] = true,
    ["command.start"] = true,
    ["command.stop"] = true,
    ["command.stopmap"] = true,
    ["command.stopmode"] = true,
    ["command.unban"] = true,
    ["command.unbanip"] = true,
    ["command.unbanserial"] = true,
    ["command.unloadmodule"] = true,
    ["command.unmute"] = true,
    ["command.upgrade"] = true,
    ["command.warp"] = true,
    ["command.whois"] = true,
    ["command.whowas"] = true,
    ["function.aclCreate"] = true,
    ["function.aclCreateGroup"] = true,
    ["function.aclDestroy"] = true,
    ["function.aclDestroyGroup"] = true,
    ["function.aclGroupAddACL"] = true,
    ["function.aclGroupAddObject"] = true,
    ["function.aclGroupRemoveACL"] = true,
    ["function.aclGroupRemoveObject"] = true,
    ["function.aclReload"] = true,
    ["function.aclRemoveRight"] = true,
    ["function.aclSave"] = true,
    ["function.aclSetRight"] = true,
    ["function.addAccount"] = true,
    ["function.addBan"] = true,
    ["function.addResourceConfig"] = true,
    ["function.addResourceMap"] = true,
    ["function.banPlayer"] = true,
    ["function.callRemote"] = true,
    ["function.copyResource"] = true,
    ["function.createResource"] = true,
    ["function.executeCommandHandler"] = true,
    ["function.fetchRemote"] = true,
    ["function.getBans"] = true,
    ["function.getServerPassword"] = true,
    ["function.kickPlayer"] = true,
    ["function.redirectPlayer"] = true,
    ["function.refreshResources"] = true,
    ["function.reloadBans"] = true,
    ["function.removeAccount"] = true,
    ["function.removeBan"] = true,
    ["function.removeResourceDefaultSetting"] = true,
    ["function.removeResourceFile"] = true,
    ["function.restartResource"] = true,
    ["function.setAccountName"] = true,
    ["function.setAccountPassword"] = true,
    ["function.setBanAdmin"] = true,
    ["function.setBanNick"] = true,
    ["function.setBanReason"] = true,
    ["function.setPlayerMuted"] = true,
    ["function.setResourceDefaultSetting"] = true,
    ["function.setServerConfigSetting"] = true,
    ["function.setServerPassword"] = true,
    ["function.setUnbanTime"] = true,
    ["function.shutdown"] = true,
    ["function.startResource"] = true,
    ["function.stopResource"] = true,
    ["function.updateResourceACLRequest"] = true,
    ["general.ModifyOtherObjects"] = true,
    ["general.adminpanel"] = true,
    ["general.http"] = true,
    ["general.tab_adminchat"] = true,
    ["general.tab_bans"] = true,
    ["general.tab_maps"] = true,
    ["general.tab_players"] = true,
    ["general.tab_resources"] = true,
    ["general.tab_server"] = true
  },
  _flags = {},
  _guiCreateButton = <function 55>,
  _guiCreateTab = <function 56>,
  _guiprotected = {
    ["command.stopall"] = elem:gui-button00020169
  },
  _root = elem:root00000001,
  _settings = xml-node[main]01000A06,
  _version = "1.5.5",
  _weathers_max = 19,
  _widgets = {
    Performance = {
      close = <function 57>,
      element = elem:gui-window000201DE,
      initialize = <function 58>
    }
  },
  aACLClose = <function 59>,
  aAclData = {},
  aAdminACL = <function 60>,
  aAdminDestroy = <function 61>,
  aAdminForm = elem:gui-window00020114,
  aAdminMenu = <function 62>,
  aAdminMenuClose = <function 63>,
  aAdminRefresh = <function 64>,
  aAdminResourceStart = <function 65>,
  aAdminResourceStop = <function 66>,
  aAdminSettings = <function 67>,
  aBanDetails = <function 68>,
  aBanDetailsClose = <function 69>,
  aBanDetailsWindowResize = <function 70>,
  aBanInputBox = <function 71>,
  aBanInputBoxAccepted = <function 72>,
  aBanInputBoxClick = <function 73>,
  aBanInputBoxClose = <function 74>,
  aBanInputBoxFinish = <function 75>,
  aBans = {},
  aClientACLClick = <function 76>,
  aClientACLDoubleClick = <function 77>,
  aClientAdminChat = <function 78>,
  aClientAdminMenu = <function 79>,
  aClientBanClick = <function 80>,
  aClientClick = <function 81>,
  aClientCursorMove = <function 82>,
  aClientDoubleClick = <function 83>,
  aClientGUIAccepted = <function 84>,
  aClientGUIChanged = <function 85>,
  aClientGUITabSwitched = <function 86>,
  aClientInteriorClick = <function 87>,
  aClientInteriorDoubleClick = <function 88>,
  aClientLog = <function 89>,
  aClientMessageClick = <function 90>,
  aClientMessagesClick = <function 91>,
  aClientMessagesDoubleClick = <function 92>,
  aClientModdetailsClick = <function 93>,
  aClientMouseEnter = <function 94>,
  aClientPerformanceClick = <function 95>,
  aClientPlayerChangeNick = <function 96>,
  aClientPlayerJoin = <function 97>,
  aClientPlayerQuit = <function 98>,
  aClientRender = <function 99>,
  aClientReportClick = <function 100>,
  aClientReportDoubleClick = <function 101>,
  aClientResourceStart = <function 102>,
  aClientResourceStop = <function 103>,
  aClientScroll = <function 104>,
  aClientSettingsClick = <function 105>,
  aClientSettingsDoubleClick = <function 106>,
  aClientSkinClick = <function 107>,
  aClientSkinDoubleClick = <function 108>,
  aClientStatsAccepted = <function 109>,
  aClientStatsChanged = <function 110>,
  aClientStatsClick = <function 111>,
  aClientSync = <function 112>,
  aClientTeamClick = <function 113>,
  aClientTeamDoubleClick = <function 114>,
  aClientVehicleClick = <function 115>,
  aClientVehicleDoubleClick = <function 116>,
  aClientWarpClick = <function 117>,
  aClientWarpDoubleClick = <function 118>,
  aCurrentAmmo = 90,
  aCurrentSlap = 20,
  aCurrentVehicle = 429,
  aCurrentWeapon = 30,
  aExecute = <function 119>,
  aGamemodeMapTable = {},
  aGetSetting = <function 120>,
  aGetVehicleUpgradeFromName = <function 121>,
  aHideFloaters = <function 122>,
  aInputBox = <function 123>,
  aInputBoxAccepted = <function 124>,
  aInputBoxClick = <function 125>,
  aInputBoxClose = <function 126>,
  aLastCheck = 690706,
  aLastSync = 699658,
  aListSkins = <function 127>,
  aLoadSettings = <function 128>,
  aLoadSkins = <function 129>,
  aLogLines = 1,
  aMainSaveSettings = <function 130>,
  aManageACL = <function 131>,
  aManageSettings = <function 132>,
  aMessage = <function 133>,
  aMessageBox = <function 134>,
  aMessageBoxAccept = <function 135>,
  aMessageBoxClick = <function 136>,
  aMessageBoxClose = <function 137>,
  aMessagesSync = <function 138>,
  aModdetailsSync = <function 139>,
  aMuteInputBox = <function 140>,
  aMuteInputBoxAccepted = <function 141>,
  aMuteInputBoxClick = <function 142>,
  aMuteInputBoxClose = <function 143>,
  aMuteInputBoxFinish = <function 144>,
  aNewTeamShow = <function 145>,
  aPerformance = <function 58>,
  aPerformanceBan = elem:gui-checkbox000201E6,
  aPerformanceClose = <function 57>,
  aPerformanceEditor = elem:gui-checkbox000201E1,
  aPerformanceForm = elem:gui-window000201DE,
  aPerformanceInput = elem:gui-checkbox000201E8,
  aPerformanceLabel = elem:gui-label000201DF,
  aPerformanceMessage = elem:gui-checkbox000201E9,
  aPerformanceOk = elem:gui-button000201EA,
  aPerformanceSkin = elem:gui-checkbox000201E3,
  aPerformanceSpectator = elem:gui-checkbox000201E0,
  aPerformanceStats = elem:gui-checkbox000201E4,
  aPerformanceTeam = elem:gui-checkbox000201E2,
  aPerformanceVehicle = elem:gui-checkbox000201E5,
  aPlayerInterior = <function 146>,
  aPlayerInteriorClose = <function 147>,
  aPlayerListScroll = <function 148>,
  aPlayerScreenShot = <function 149>,
  aPlayerScreenShotClose = <function 150>,
  aPlayerSkin = <function 151>,
  aPlayerSkinClose = <function 152>,
  aPlayerStats = <function 153>,
  aPlayerStatsClose = <function 154>,
  aPlayerTeam = <function 155>,
  aPlayerTeamClose = <function 156>,
  aPlayerWarp = <function 157>,
  aPlayerWarpClose = <function 158>,
  aPlayers = {
    [elem:player[_,N3x#000000T|-nTL-|]] = {
      IP = "192.168.100.10",
      accountname = "guest",
      acdetected = "",
      admin = true,
      country = false,
      d3d9dll = "",
      groups = "Not logged in",
      imgmodsnum = 0,
      name = "_,N3x#000000T|-nTL-|",
      serial = "FB2DF3A8BBB2BE88C26555105B031683",
      username = "N/A",
      version = "1.5.5  (9.13968.0)"
    }
  },
  aRegister = <function 159>,
  aRemoveSetting = <function 160>,
  aReport = <function 161>,
  aReportClose = <function 162>,
  aReportSelectPlayer = <function 163>,
  aResources = { {
      author = "HTC and Arce",
      fullName = "[DM] Arcellius ft. HTC - Frequency",
      name = "[DM]Arcellius_ft_HTC-Frequency",
      numsettings = 0,
      state = "loaded",
      type = "map",
      version = "1.0.0"
    } }
  aScreenShotWindows = {},
  aScreenShotsClick = <function 164>,
  aScreenShotsDoubleClick = <function 165>,
  aScreenShotsRefresh = <function 166>,
  aSetCurrentAmmo = <function 167>,
  aSetSetting = <function 168>,
  aSettingsClose = <function 169>,
  aSettingsData = {},
  aSkins = {},
  aSpectate = <function 170>,
  aSpectator = {
    AngleX = 0,
    AngleZ = 30,
    ClientClick = <function 171>,
    ClientDoubleClick = <function 172>,
    Close = <function 173>,
    Cursor = <function 174>,
    CursorMove = <function 175>,
    GetAlive = <function 176>,
    Initialize = <function 177>,
    MoveOffset = <function 178>,
    Offset = 5,
    PlayerCheck = <function 179>,
    Render = <function 180>,
    SwitchPlayer = <function 181>
  },
  aTab1 = {
    ACD3D = elem:gui-label00020133,
    ACDetected = elem:gui-label00020132,
    ACModDetails = elem:gui-button00020135,
    ACModInfo = elem:gui-label00020134,
    Accountname = elem:gui-label00020130,
    Admin = elem:gui-button00020128,
    AnonAdmin = elem:gui-checkbox00020159,
    Area = elem:gui-label0002013E,
    Armour = elem:gui-label00020138,
    Ban = elem:gui-button0002011F,
    CountryCode = elem:gui-label0002012C,
    Dimension = elem:gui-label00020142,
    Flag = elem:gui-staticimage0002012D,
    Freeze = elem:gui-button00020121,
    GiveVehicle = elem:gui-button0002015A,
    GiveWeapon = elem:gui-button0002014D,
    Groups = elem:gui-label00020131,
    Health = elem:gui-label00020137,
    HideColorCodes = elem:gui-checkbox0002011C,
    IP = elem:gui-label0002012B,
    Interior = elem:gui-label00020143,
    JetPack = elem:gui-button00020152,
    Kick = elem:gui-button0002011E,
    Messages = elem:gui-button00020118,
    Money = elem:gui-label0002013D,
    Mute = elem:gui-button00020120,
    Name = elem:gui-label0002012A,
    Nick = elem:gui-button00020126,
    Ping = elem:gui-label0002013C,
    PlayerList = elem:gui-gridlist0002011D,
    PlayerListSearch = elem:gui-edit0002011A,
    PositionX = elem:gui-label0002013F,
    PositionY = elem:gui-label00020140,
    PositionZ = elem:gui-label00020141,
    ScreenShots = elem:gui-button00020119,
    Serial = elem:gui-label0002012E,
    SetArmour = elem:gui-button00020148,
    SetDimension = elem:gui-button0002014B,
    SetHealth = elem:gui-button00020147,
    SetInterior = elem:gui-button0002014C,
    SetMoney = elem:gui-button00020150,
    SetSkin = elem:gui-button00020149,
    SetStats = elem:gui-button00020151,
    SetTeam = elem:gui-button0002014A,
    Shout = elem:gui-button00020127,
    Skin = elem:gui-label00020139,
    Slap = elem:gui-button00020123,
    SlapDropDown = elem:gui-staticimage00020124,
    SlapOptions = elem:gui-gridlist00020125,
    Spectate = elem:gui-button00020122,
    Tab = elem:gui-tab00020117,
    Team = elem:gui-label0002013A,
    Vehicle = elem:gui-label00020145,
    VehicleBlow = elem:gui-button00020157,
    VehicleCustomize = elem:gui-button00020158,
    VehicleDestroy = elem:gui-button00020156,
    VehicleDropDown = elem:gui-staticimage0002015B,
    VehicleFix = elem:gui-button00020155,
    VehicleHealth = elem:gui-label00020146,
    VehicleOptions = elem:gui-gridlist0002015C,
    Version = elem:gui-label0002012F,
    Warp = elem:gui-button00020153,
    WarpTo = elem:gui-button00020154,
    Weapon = elem:gui-label0002013B,
    WeaponDropDown = elem:gui-staticimage0002014E,
    WeaponOptions = elem:gui-gridlist0002014F
  },
  aTab2 = {
    Command = elem:gui-edit00020177,
    ExecuteAdvanced = elem:gui-label0002017A,
    ExecuteClient = elem:gui-button00020178,
    ExecuteServer = elem:gui-button00020179,
    LogLine1 = elem:gui-label00020171,
    LogLine2 = elem:gui-label00020172,
    LogLine3 = elem:gui-label00020173,
    LogLine4 = elem:gui-label00020174,
    LogLine5 = elem:gui-label00020175,
    ManageACL = elem:gui-button0002015E,
    ResourceAuthor = elem:gui-label0002016D,
    ResourceDelete = elem:gui-button00020168,
    ResourceFailture = elem:gui-button0002016A,
    ResourceInclMaps = elem:gui-checkbox00020162,
    ResourceList = elem:gui-gridlist00020161,
    ResourceListSearch = elem:gui-edit0002015F,
    ResourceName = elem:gui-label0002016C,
    ResourceRefresh = elem:gui-button00020163,
    ResourceRestart = elem:gui-button00020166,
    ResourceSettings = elem:gui-button00020164,
    ResourceStart = elem:gui-button00020165,
    ResourceStop = elem:gui-button00020167,
    ResourceVersion = elem:gui-label0002016F,
    ResourcesStopAll = elem:gui-button00020169,
    Tab = elem:gui-tab0002015D
  },
  aTab3 = {
    FPS = elem:gui-edit000201AB,
    FPSCurrent = elem:gui-label000201AA,
    FPSSet = elem:gui-button000201AC,
    GameType = elem:gui-label00020189,
    Gravity = elem:gui-edit000201A0,
    GravityCurrent = elem:gui-label0002019F,
    GravitySet = elem:gui-button000201A1,
    MapName = elem:gui-label0002018A,
    Password = elem:gui-label00020188,
    Players = elem:gui-label0002018B,
    ResetPassword = elem:gui-button0002018D,
    Server = elem:gui-label00020187,
    SetGameType = elem:gui-button0002018E,
    SetMapName = elem:gui-button0002018F,
    SetPassword = elem:gui-button0002018C,
    SetWelcome = elem:gui-button00020190,
    Shutdown = elem:gui-button00020191,
    Speed = elem:gui-edit000201A3,
    SpeedCurrent = elem:gui-label000201A2,
    SpeedSet = elem:gui-button000201A4,
    Tab = elem:gui-tab00020186,
    TimeCurrent = elem:gui-label00020199,
    TimeH = elem:gui-edit0002019A,
    TimeM = elem:gui-edit0002019B,
    TimeSet = elem:gui-button0002019D,
    Waves = elem:gui-edit000201A7,
    WavesCurrent = elem:gui-label000201A6,
    WavesSet = elem:gui-button000201A8,
    Weather = elem:gui-edit00020195,
    WeatherBlend = elem:gui-button00020198,
    WeatherCurrent = elem:gui-label00020193,
    WeatherDec = elem:gui-button00020194,
    WeatherInc = elem:gui-button00020196,
    WeatherSet = elem:gui-button00020197
  },
  aTab4 = {
    BanIP = elem:gui-button000201B8,
    BanSerial = elem:gui-button000201B9,
    BansList = elem:gui-gridlist000201AF,
    BansMore = elem:gui-button000201BC,
    BansRefresh = elem:gui-button000201BA,
    BansTotal = elem:gui-label000201BB,
    Button = elem:gui-button000201B2,
    ComboBox = elem:gui-combobox000201B1,
    Details = elem:gui-button000201B4,
    EditBox = elem:gui-edit000201B0,
    ProgressBar = elem:gui-progressbar000201B3,
    Tab = elem:gui-tab000201AE,
    Unban = elem:gui-button000201B5,
    UnbanIP = elem:gui-button000201B6,
    UnbanSerial = elem:gui-button000201B7
  },
  aTab5 = {
    AdminChat = elem:gui-memo000201BE,
    AdminChatHelp = elem:gui-button000201C3,
    AdminChatSound = elem:gui-checkbox000201C0,
    AdminPlayers = elem:gui-gridlist000201BF,
    AdminSay = elem:gui-button000201C2,
    AdminText = elem:gui-edit000201C1,
    Tab = elem:gui-tab000201BD
  },
  aTab6 = {
    AdminChatOutput = elem:gui-checkbox000201C8,
    AutoLogin = elem:gui-checkbox000201CB,
    OutputPlayer = elem:gui-checkbox000201C6,
    PasswordChange = elem:gui-button000201D3,
    PasswordConfirm = elem:gui-edit000201D2,
    PasswordNew = elem:gui-edit000201D1,
    PasswordOld = elem:gui-edit000201D0,
    PerformanceAdvanced = elem:gui-button000201DD,
    PerformanceAuto = elem:gui-radiobutton000201DB,
    PerformanceCPU = elem:gui-radiobutton000201DC,
    PerformanceRAM = elem:gui-radiobutton000201DA,
    RefreshDelay = elem:gui-edit000201EC,
    Tab = elem:gui-tab000201C4
  },
  aTabMap = {
    CurGamemode = elem:gui-label00020181,
    CurMap = elem:gui-label00020180,
    Delete = elem:gui-button00020183,
    MapList = elem:gui-gridlist0002017E,
    MapListSearch = elem:gui-edit0002017C,
    NextMap = elem:gui-button00020182,
    RefreshList = elem:gui-button00020185,
    Revert = elem:gui-button00020184,
    Start = elem:gui-button0002017F,
    Tab = elem:gui-tab0002017B
  },
  aTabPanel = elem:gui-tabpanel00020116,
  aTeamsRefresh = <function 182>,
  aUpgradeNames = {},
  aVehicleCheckCurrentUpgrades = <function 183>,
  aVehicleCheckUpgrades = <function 184>,
  aVehicleCustomize = <function 185>,
  aVehicleCustomizeClose = <function 186>,
  aVehicleUpgrades = {},
  aViewMessage = <function 187>,
  aViewMessageClose = <function 188>,
  aViewMessages = <function 189>,
  aViewMessagesClose = <function 190>,
  aViewModdetails = <function 191>,
  aViewModdetailsClose = <function 192>,
  aViewSuspectInfo = <function 193>,
  aWeathers = { "Blue Sky, Sunny", "Blue Sky, Clouds", "Blue Sky, Clouds", "Blue Sky, Clouds", "Blue Sky, Clouds", "Blue Sky, Clouds", "Blue Sky, Clouds", "Storming", "Cloudy and Foggy", "Clear Blue Sky", "Sunny, Scorching Hot", "Very Dull, Colourless, Hazy", "Very Dull, Colourless, Hazy", "Very Dull, Colourless, Hazy", "Very Dull, Colourless, Hazy", "Dull, Cloudy, Rainy", "Sunny, Scorching Hot", "Sunny, Scorching Hot", "Sandstorm",
    [0] = "Blue Sky, Sunny"
  },
  aclDisplayOptions = <function 194>,
  addCommandHandler = <function 195>,
  addDebugHook = <function 196>,
  addEvent = <function 197>,
  addEventHandler = <function 198>,
  addPedClothes = <function 199>,
  addVehicleUpgrade = <function 200>,
  areThereAnyPickers = <function 201>,
  areTrafficLightsLocked = <function 202>,
  assert = <function 203>,
  attachElementToElement = <function 204>,
  attachElements = <function 205>,
  attachTrailerToVehicle = <function 206>,
  base64Decode = <function 207>,
  base64Encode = <function 208>,
  bindKey = <function 209>,
  bitAnd = <function 210>,
  bitArShift = <function 211>,
  bitExtract = <function 212>,
  bitLRotate = <function 213>,
  bitLShift = <function 214>,
  bitNot = <function 215>,
  bitOr = <function 216>,
  bitRRotate = <function 217>,
  bitRShift = <function 218>,
  bitReplace = <function 219>,
  bitTest = <function 220>,
  bitXor = <function 221>,
  blowVehicle = <function 222>,
  breakObject = <function 223>,
  call = <function 224>,
  canBrowserNavigateBack = <function 225>,
  canBrowserNavigateForward = <function 226>,
  canPedBeKnockedOffBike = <function 227>,
  canPlayerBeKnockedOffBike = <function 228>,
  cancelEvent = <function 229>,
  cancelLatentEvent = <function 230>,
  closePicker = <function 231>,
  collectgarbage = <function 232>,
  colorPicker = <3>{
    __index = <table 3>,
    create = <function 233>,
    destroy = <function 234>,
    guiBlur = <function 235>,
    guiFocus = <function 236>,
    mouseDown = <function 237>,
    mouseMove = <function 238>,
    mouseSnap = <function 239>,
    mouseUp = <function 240>,
    pickColor = <function 241>,
    render = <function 242>,
    updateColor = <function 243>
  },
  coroutine = {
    _resume = <function 244>,
    create = <function 245>,
    resume = <function 246>,
    running = <function 247>,
    status = <function 248>,
    wrap = <function 249>,
    yield = <function 250>
  },
  countPlayersInTeam = <function 251>,
  createBlip = <function 252>,
  createBlipAttachedTo = <function 253>,
  createBrowser = <function 254>,
  createColCircle = <function 255>,
  createColCuboid = <function 256>,
  createColPolygon = <function 257>,
  createColRectangle = <function 258>,
  createColSphere = <function 259>,
  createColTube = <function 260>,
  createEffect = <function 261>,
  createElement = <function 262>,
  createExplosion = <function 263>,
  createFire = <function 264>,
  createLight = <function 265>,
  createMapTab = <function 266>,
  createMarker = <function 267>,
  createObject = <function 268>,
  createPed = <function 269>,
  createPickup = <function 270>,
  createProjectile = <function 271>,
  createRadarArea = <function 272>,
  createSWATRope = <function 273>,
  createSearchLight = <function 274>,
  createTrayNotification = <function 275>,
  createVehicle = <function 276>,
  createWater = <function 277>,
  createWeapon = <function 278>,
  debug = {
    debug = <function 279>,
    getfenv = <function 280>,
    gethook = <function 281>,
    getinfo = <function 282>,
    getlocal = <function 283>,
    getmetatable = <function 284>,
    getregistry = <function 285>,
    getupvalue = <function 286>,
    setfenv = <function 287>,
    sethook = <function 288>,
    setlocal = <function 289>,
    setmetatable = <function 290>,
    setupvalue = <function 291>,
    traceback = <function 292>
  },
  debugSleep = <function 293>,
  decodeString = <function 294>,
  deref = <function 295>,
  destroyElement = <function 296>,
  detachElementFromElement = <function 297>,
  detachElements = <function 298>,
  detachTrailerFromVehicle = <function 299>,
  detonateSatchels = <function 300>,
  doesPedHaveJetPack = <function 301>,
  doesPlayerHaveJetPack = <function 302>,
  dofile = <function 303>,
  downloadFile = <function 304>,
  dxConvertPixels = <function 305>,
  dxCreateFont = <function 306>,
  dxCreateRenderTarget = <function 307>,
  dxCreateScreenSource = <function 308>,
  dxCreateShader = <function 309>,
  dxCreateTexture = <function 310>,
  dxDrawImage = <function 311>,
  dxDrawImageSection = <function 312>,
  dxDrawLine = <function 313>,
  dxDrawLine3D = <function 314>,
  dxDrawMaterialLine3D = <function 315>,
  dxDrawMaterialSectionLine3D = <function 316>,
  dxDrawRectangle = <function 317>,
  dxDrawText = <function 318>,
  dxGetBlendMode = <function 319>,
  dxGetFontHeight = <function 320>,
  dxGetMaterialSize = <function 321>,
  dxGetPixelColor = <function 322>,
  dxGetPixelsFormat = <function 323>,
  dxGetPixelsSize = <function 324>,
  dxGetStatus = <function 325>,
  dxGetTextWidth = <function 326>,
  dxGetTexturePixels = <function 327>,
  dxIsAspectRatioAdjustmentEnabled = <function 328>,
  dxSetAspectRatioAdjustmentEnabled = <function 329>,
  dxSetBlendMode = <function 330>,
  dxSetPixelColor = <function 331>,
  dxSetRenderTarget = <function 332>,
  dxSetShaderTessellation = <function 333>,
  dxSetShaderTransform = <function 334>,
  dxSetShaderValue = <function 335>,
  dxSetTestMode = <function 336>,
  dxSetTextureEdge = <function 337>,
  dxSetTexturePixels = <function 338>,
  dxUpdateScreenSource = <function 339>,
  encodeString = <function 340>,
  engineApplyShaderToWorldTexture = <function 341>,
  engineGetModelIDFromName = <function 342>,
  engineGetModelLODDistance = <function 343>,
  engineGetModelNameFromID = <function 344>,
  engineGetModelTextureNames = <function 345>,
  engineGetVisibleTextureNames = <function 346>,
  engineImportTXD = <function 347>,
  engineLoadCOL = <function 348>,
  engineLoadDFF = <function 349>,
  engineLoadIFP = <function 350>,
  engineLoadTXD = <function 351>,
  engineRemoveShaderFromWorldTexture = <function 352>,
  engineReplaceAnimation = <function 353>,
  engineReplaceCOL = <function 354>,
  engineReplaceModel = <function 355>,
  engineRestoreAnimation = <function 356>,
  engineRestoreCOL = <function 357>,
  engineRestoreModel = <function 358>,
  engineSetAsynchronousLoading = <function 359>,
  engineSetModelLODDistance = <function 360>,
  error = <function 361>,
  etype = "gui-tabpanel",
  eventName = "onClientGUIClick",
  executeBrowserJavascript = <function 362>,
  executeCommandHandler = <function 363>,
  exports = {
    <metatable> = {
      __index = <function 364>
    }
  },
  extinguishFire = <function 365>,
  fadeCamera = <function 366>,
  fetchRemote = <function 367>,
  fileClose = <function 368>,
  fileCopy = <function 369>,
  fileCreate = <function 370>,
  fileDelete = <function 371>,
  fileExists = <function 372>,
  fileFlush = <function 373>,
  fileGetPath = <function 374>,
  fileGetPos = <function 375>,
  fileGetSize = <function 376>,
  fileIsEOF = <function 377>,
  fileOpen = <function 378>,
  fileRead = <function 379>,
  fileRename = <function 380>,
  fileSetPos = <function 381>,
  fileWrite = <function 382>,
  fireWeapon = <function 383>,
  fixVehicle = <function 384>,
  focusBrowser = <function 385>,
  forcePlayerMap = <function 386>,
  fromJSON = <function 387>,
  fxAddBlood = <function 388>,
  fxAddBulletImpact = <function 389>,
  fxAddBulletSplash = <function 390>,
  fxAddDebris = <function 391>,
  fxAddFootSplash = <function 392>,
  fxAddGlass = <function 393>,
  fxAddGunshot = <function 394>,
  fxAddPunchImpact = <function 395>,
  fxAddSparks = <function 396>,
  fxAddTankFire = <function 397>,
  fxAddTyreBurst = <function 398>,
  fxAddWaterHydrant = <function 399>,
  fxAddWaterSplash = <function 400>,
  fxAddWood = <function 401>,
  g_Prefs = {
    bandurations = "60,3600,43200,0",
    clientcheckban = false,
    maxchatmsgs = 10,
    maxmsgs = 99,
    mutedurations = "60,120,300,600,0",
    playerReportCategories = "Cheater/Modder,Spammer",
    reportCategories = "Question,Suggestion,Other",
    securitylevel = 1
  },
  gcinfo = <function 402>,
  getAircraftMaxHeight = <function 403>,
  getAircraftMaxVelocity = <function 404>,
  getAnalogControlState = <function 405>,
  getAttachedElements = <function 406>,
  getBirdsEnabled = <function 407>,
  getBlipColor = <function 408>,
  getBlipIcon = <function 409>,
  getBlipOrdering = <function 410>,
  getBlipSize = <function 411>,
  getBlipVisibleDistance = <function 412>,
  getBlurLevel = <function 413>,
  getBodyPartName = <function 414>,
  getBoundKeys = <function 415>,
  getBrowserProperty = <function 416>,
  getBrowserSettings = <function 417>,
  getBrowserSource = <function 418>,
  getBrowserTitle = <function 419>,
  getBrowserURL = <function 420>,
  getBrowserVolume = <function 421>,
  getCamera = <function 422>,
  getCameraClip = <function 423>,
  getCameraFieldOfView = <function 424>,
  getCameraGoggleEffect = <function 425>,
  getCameraInterior = <function 426>,
  getCameraMatrix = <function 427>,
  getCameraShakeLevel = <function 428>,
  getCameraTarget = <function 429>,
  getCameraViewMode = <function 430>,
  getChatboxLayout = <function 431>,
  getClothesByTypeIndex = <function 432>,
  getClothesTypeName = <function 433>,
  getCloudsEnabled = <function 434>,
  getColShapeType = <function 435>,
  getColorFromString = <function 436>,
  getCommandsBoundToKey = <function 437>,
  getControlState = <function 438>,
  getCursorAlpha = <function 439>,
  getCursorPosition = <function 440>,
  getDevelopmentMode = <function 441>,
  getDistanceBetweenPoints2D = <function 442>,
  getDistanceBetweenPoints3D = <function 443>,
  getEasingValue = <function 444>,
  getEffectDensity = <function 445>,
  getEffectSpeed = <function 446>,
  getElementAlpha = <function 447>,
  getElementAttachedOffsets = <function 448>,
  getElementAttachedTo = <function 449>,
  getElementBoundingBox = <function 450>,
  getElementByID = <function 451>,
  getElementByIndex = <function 452>,
  getElementChild = <function 453>,
  getElementChildren = <function 454>,
  getElementChildrenCount = <function 455>,
  getElementColShape = <function 456>,
  getElementCollisionsEnabled = <function 457>,
  getElementData = <function 458>,
  getElementDimension = <function 459>,
  getElementDistanceFromCentreOfMassToBaseOfModel = <function 460>,
  getElementHealth = <function 461>,
  getElementID = <function 462>,
  getElementInterior = <function 463>,
  getElementMatrix = <function 464>,
  getElementModel = <function 465>,
  getElementParent = <function 466>,
  getElementPosition = <function 467>,
  getElementRadius = <function 468>,
  getElementRotation = <function 469>,
  getElementType = <function 470>,
  getElementVelocity = <function 471>,
  getElementsByType = <function 472>,
  getElementsWithinColShape = <function 473>,
  getElementsWithinRange = <function 474>,
  getEventHandlers = <function 475>,
  getFPSLimit = <function 476>,
  getFarClipDistance = <function 477>,
  getFogDistance = <function 478>,
  getFunctionsBoundToKey = <function 479>,
  getGameSpeed = <function 480>,
  getGarageBoundingBox = <function 481>,
  getGaragePosition = <function 482>,
  getGarageSize = <function 483>,
  getGravity = <function 484>,
  getGroundPosition = <function 485>,
  getHeatHaze = <function 486>,
  getHeliBladeCollisionsEnabled = <function 487>,
  getHelicopterRotorSpeed = <function 488>,
  getInteriorFurnitureEnabled = <function 489>,
  getInteriorSoundsEnabled = <function 490>,
  getJetpackMaxHeight = <function 491>,
  getKeyBoundToCommand = <function 492>,
  getKeyBoundToFunction = <function 493>,
  getKeyState = <function 494>,
  getLatentEventHandles = <function 495>,
  getLatentEventStatus = <function 496>,
  getLightColor = <function 497>,
  getLightDirection = <function 498>,
  getLightRadius = <function 499>,
  getLightType = <function 500>,
  getLocalPlayer = <function 501>,
  getLocalization = <function 502>,
  getLowLODElement = <function 503>,
  getMarkerColor = <function 504>,
  getMarkerCount = <function 505>,
  getMarkerIcon = <function 506>,
  getMarkerSize = <function 507>,
  getMarkerTarget = <function 508>,
  getMarkerType = <function 509>,
  getMinuteDuration = <function 510>,
  getMoonSize = <function 511>,
  getNearClipDistance = <function 512>,
  getNeededTagType = <function 513>,
  getNetworkStats = <function 514>,
  getNetworkUsageData = <function 515>,
  getObjectMass = <function 516>,
  getObjectRotation = <function 517>,
  getObjectScale = <function 518>,
  getOcclusionsEnabled = <function 519>,
  getOriginalHandling = <function 520>,
  getOriginalWeaponProperty = <function 521>,
  getPedAmmoInClip = <function 522>,
  getPedAnalogControlState = <function 523>,
  getPedAnimation = <function 524>,
  getPedArmor = <function 525>,
  getPedBonePosition = <function 526>,
  getPedCameraRotation = <function 527>,
  getPedClothes = <function 528>,
  getPedContactElement = <function 529>,
  getPedControlState = <function 530>,
  getPedMoveState = <function 531>,
  getPedOccupiedVehicle = <function 532>,
  getPedOccupiedVehicleSeat = <function 533>,
  getPedOxygenLevel = <function 534>,
  getPedRotation = <function 535>,
  getPedSimplestTask = <function 536>,
  getPedSkin = <function 537>,
  getPedStat = <function 538>,
  getPedTarget = <function 539>,
  getPedTargetCollision = <function 540>,
  getPedTargetEnd = <function 541>,
  getPedTargetRange = <function 542>,
  getPedTargetStart = <function 543>,
  getPedTask = <function 544>,
  getPedTotalAmmo = <function 545>,
  getPedVoice = <function 546>,
  getPedWalkingStyle = <function 547>,
  getPedWeapon = <function 548>,
  getPedWeaponMuzzlePosition = <function 549>,
  getPedWeaponSlot = <function 550>,
  getPedsLODDistance = <function 551>,
  getPerformanceStats = <function 552>,
  getPickupAmmo = <function 553>,
  getPickupAmount = <function 554>,
  getPickupType = <function 555>,
  getPickupWeapon = <function 556>,
  getPlayerAmmoInClip = <function 557>,
  getPlayerArmor = <function 558>,
  getPlayerContactElement = <function 559>,
  getPlayerFromName = <function 560>,
  getPlayerFromNick = <function 561>,
  getPlayerMapBoundingBox = <function 562>,
  getPlayerMoney = <function 563>,
  getPlayerName = <function 564>,
  getPlayerNametagColor = <function 565>,
  getPlayerNametagText = <function 566>,
  getPlayerOccupiedVehicle = <function 567>,
  getPlayerPing = <function 568>,
  getPlayerRotation = <function 569>,
  getPlayerSerial = <function 570>,
  getPlayerSimplestTask = <function 571>,
  getPlayerSkin = <function 572>,
  getPlayerStat = <function 573>,
  getPlayerTarget = <function 574>,
  getPlayerTargetCollision = <function 575>,
  getPlayerTargetEnd = <function 576>,
  getPlayerTargetRange = <function 577>,
  getPlayerTargetStart = <function 578>,
  getPlayerTask = <function 579>,
  getPlayerTeam = <function 580>,
  getPlayerTotalAmmo = <function 581>,
  getPlayerUserName = <function 582>,
  getPlayerWantedLevel = <function 583>,
  getPlayerWeapon = <function 584>,
  getPlayerWeaponSlot = <function 585>,
  getPlayersInTeam = <function 586>,
  getProjectileCounter = <function 587>,
  getProjectileCreator = <function 588>,
  getProjectileForce = <function 589>,
  getProjectileTarget = <function 590>,
  getProjectileType = <function 591>,
  getRadarAreaColor = <function 592>,
  getRadarAreaSize = <function 593>,
  getRadioChannel = <function 594>,
  getRadioChannelName = <function 595>,
  getRainLevel = <function 596>,
  getRealTime = <function 597>,
  getRealTimeSeconds = <function 598>,
  getResourceConfig = <function 599>,
  getResourceDynamicElementRoot = <function 600>,
  getResourceExportedFunctions = <function 601>,
  getResourceFromName = <function 602>,
  getResourceGUIElement = <function 603>,
  getResourceName = <function 604>,
  getResourceRootElement = <function 605>,
  getResourceState = <function 606>,
  getRootElement = <function 607>,
  getSFXStatus = <function 608>,
  getScreenFromWorldPosition = <function 609>,
  getSearchLightEndPosition = <function 610>,
  getSearchLightEndRadius = <function 611>,
  getSearchLightStartPosition = <function 612>,
  getSearchLightStartRadius = <function 613>,
  getSkyGradient = <function 614>,
  getSlotFromWeapon = <function 615>,
  getSoundBPM = <function 616>,
  getSoundEffects = <function 617>,
  getSoundFFTData = <function 618>,
  getSoundLength = <function 619>,
  getSoundLevelData = <function 620>,
  getSoundMaxDistance = <function 621>,
  getSoundMetaTags = <function 622>,
  getSoundMinDistance = <function 623>,
  getSoundPan = <function 624>,
  getSoundPosition = <function 625>,
  getSoundProperties = <function 626>,
  getSoundSpeed = <function 627>,
  getSoundVolume = <function 628>,
  getSoundWaveData = <function 629>,
  getSunColor = <function 630>,
  getSunSize = <function 631>,
  getTeamColor = <function 632>,
  getTeamFriendlyFire = <function 633>,
  getTeamFromName = <function 634>,
  getTeamName = <function 635>,
  getThisResource = <function 636>,
  getTickCount = <function 637>,
  getTime = <function 638>,
  getTimerDetails = <function 639>,
  getTimers = <function 640>,
  getTrafficLightState = <function 641>,
  getTrainDirection = <function 642>,
  getTrainPosition = <function 643>,
  getTrainSpeed = <function 644>,
  getTypeIndexFromClothes = <function 645>,
  getUserdataType = <function 646>,
  getValidPedModels = <function 647>,
  getVehicleAdjustableProperty = <function 648>,
  getVehicleColor = <function 649>,
  getVehicleCompatibleUpgrades = <function 650>,
  getVehicleComponentPosition = <function 651>,
  getVehicleComponentRotation = <function 652>,
  getVehicleComponentVisible = <function 653>,
  getVehicleComponents = <function 654>,
  getVehicleController = <function 655>,
  getVehicleCurrentGear = <function 656>,
  getVehicleDoorOpenRatio = <function 657>,
  getVehicleDoorState = <function 658>,
  getVehicleEngineState = <function 659>,
  getVehicleGravity = <function 660>,
  getVehicleHandling = <function 661>,
  getVehicleHeadLightColor = <function 662>,
  getVehicleID = <function 663>,
  getVehicleIDFromName = <function 664>,
  getVehicleLandingGearDown = <function 665>,
  getVehicleLightState = <function 666>,
  getVehicleMaxPassengers = <function 667>,
  getVehicleModel = <function 668>,
  getVehicleModelExhaustFumesPosition = <function 669>,
  getVehicleModelFromName = <function 670>,
  getVehicleName = <function 671>,
  getVehicleNameFromID = <function 672>,
  getVehicleNameFromModel = <function 673>,
  getVehicleNitroCount = <function 674>,
  getVehicleNitroLevel = <function 675>,
  getVehicleOccupant = <function 676>,
  getVehicleOccupants = <function 677>,
  getVehicleOverrideLights = <function 678>,
  getVehiclePaintjob = <function 679>,
  getVehiclePanelState = <function 680>,
  getVehiclePlateText = <function 681>,
  getVehicleRotation = <function 682>,
  getVehicleSirenParams = <function 683>,
  getVehicleSirens = <function 684>,
  getVehicleSirensOn = <function 685>,
  getVehicleTowedByVehicle = <function 686>,
  getVehicleTowingVehicle = <function 687>,
  getVehicleTurnVelocity = <function 688>,
  getVehicleTurretPosition = <function 689>,
  getVehicleType = <function 690>,
  getVehicleUpgradeOnSlot = <function 691>,
  getVehicleUpgradeSlotName = <function 692>,
  getVehicleUpgrades = <function 693>,
  getVehicleVariant = <function 694>,
  getVehicleWheelStates = <function 695>,
  getVehiclesLODDistance = <function 696>,
  getVersion = <function 697>,
  getWaterColor = <function 698>,
  getWaterLevel = <function 699>,
  getWaterVertexPosition = <function 700>,
  getWaveHeight = <function 701>,
  getWeaponAmmo = <function 702>,
  getWeaponClipAmmo = <function 703>,
  getWeaponFiringRate = <function 704>,
  getWeaponFlags = <function 705>,
  getWeaponIDFromName = <function 706>,
  getWeaponNameFromID = <function 707>,
  getWeaponOwner = <function 708>,
  getWeaponProperty = <function 709>,
  getWeaponState = <function 710>,
  getWeaponTarget = <function 711>,
  getWeather = <function 712>,
  getWeatherNameFromID = <function 713>,
  getWindVelocity = <function 714>,
  getWorldFromScreenPosition = <function 715>,
  getZoneName = <function 716>,
  getfenv = <function 717>,
  getmetatable = <function 718>,
  gettok = <function 719>,
  givePedWeapon = <function 720>,
  givePlayerMoney = <function 721>,
  guiBringToFront = <function 722>,
  guiChanged = <function 723>,
  guiCheckBoxGetSelected = <function 724>,
  guiCheckBoxSetSelected = <function 725>,
  guiClick = <function 726>,
  guiComboBoxAddItem = <function 727>,
  guiComboBoxAdjustHeight = <function 728>,
  guiComboBoxClear = <function 729>,
  guiComboBoxGetItemText = <function 730>,
  guiComboBoxGetSelected = <function 731>,
  guiComboBoxRemoveItem = <function 732>,
  guiComboBoxSetItemText = <function 733>,
  guiComboBoxSetSelected = <function 734>,
  guiCreateBrowser = <function 735>,
  guiCreateButton = <function 736>,
  guiCreateCheckBox = <function 737>,
  guiCreateComboBox = <function 738>,
  guiCreateEdit = <function 739>,
  guiCreateFont = <function 740>,
  guiCreateGridList = <function 741>,
  guiCreateHeader = <function 742>,
  guiCreateLabel = <function 743>,
  guiCreateMemo = <function 744>,
  guiCreateProgressBar = <function 745>,
  guiCreateRadioButton = <function 746>,
  guiCreateScrollBar = <function 747>,
  guiCreateScrollPane = <function 748>,
  guiCreateStaticImage = <function 749>,
  guiCreateTab = <function 750>,
  guiCreateTabPanel = <function 751>,
  guiCreateWindow = <function 752>,
  guiDeleteTab = <function 753>,
  guiDoubleClick = <function 754>,
  guiEditGetCaretIndex = <function 755>,
  guiEditGetMaxLength = <function 756>,
  guiEditIsMasked = <function 757>,
  guiEditIsReadOnly = <function 758>,
  guiEditSetCaratIndex = <function 759>,
  guiEditSetCaretIndex = <function 760>,
  guiEditSetMasked = <function 761>,
  guiEditSetMaxLength = <function 762>,
  guiEditSetReadOnly = <function 763>,
  guiGetAlpha = <function 764>,
  guiGetBrowser = <function 765>,
  guiGetCursorType = <function 766>,
  guiGetEnabled = <function 767>,
  guiGetFont = <function 768>,
  guiGetInputEnabled = <function 769>,
  guiGetInputMode = <function 770>,
  guiGetPosition = <function 771>,
  guiGetProperties = <function 772>,
  guiGetProperty = <function 773>,
  guiGetScreenSize = <function 774>,
  guiGetSelectedTab = <function 775>,
  guiGetSize = <function 776>,
  guiGetText = <function 777>,
  guiGetVisible = <function 778>,
  guiGridListAddColumn = <function 779>,
  guiGridListAddRow = <function 780>,
  guiGridListAddRowMaybe = <function 781>,
  guiGridListAutoSizeColumn = <function 782>,
  guiGridListClear = <function 783>,
  guiGridListGetColumnCount = <function 784>,
  guiGridListGetColumnTitle = <function 785>,
  guiGridListGetColumnWidth = <function 786>,
  guiGridListGetHorizontalScrollPosition = <function 787>,
  guiGridListGetItemColor = <function 788>,
  guiGridListGetItemData = <function 789>,
  guiGridListGetItemPlayerName = <function 790>,
  guiGridListGetItemText = <function 791>,
  guiGridListGetRowCount = <function 792>,
  guiGridListGetSelectedCount = <function 793>,
  guiGridListGetSelectedItem = <function 794>,
  guiGridListGetSelectedItems = <function 795>,
  guiGridListGetVerticalScrollPosition = <function 796>,
  guiGridListInsertRowAfter = <function 797>,
  guiGridListRemoveColumn = <function 798>,
  guiGridListRemoveLastRows = <function 799>,
  guiGridListRemoveRow = <function 800>,
  guiGridListSetColumnTitle = <function 801>,
  guiGridListSetColumnWidth = <function 802>,
  guiGridListSetHorizontalScrollPosition = <function 803>,
  guiGridListSetItemColor = <function 804>,
  guiGridListSetItemData = <function 805>,
  guiGridListSetItemPlayerName = <function 806>,
  guiGridListSetItemText = <function 807>,
  guiGridListSetScrollBars = <function 808>,
  guiGridListSetSelectedItem = <function 809>,
  guiGridListSetSelectionMode = <function 810>,
  guiGridListSetSortingEnabled = <function 811>,
  guiGridListSetVerticalScrollPosition = <function 812>,
  guiLabelGetColor = <function 813>,
  guiLabelGetFontHeight = <function 814>,
  guiLabelGetTextExtent = <function 815>,
  guiLabelSetColor = <function 816>,
  guiLabelSetHorizontalAlign = <function 817>,
  guiLabelSetVerticalAlign = <function 818>,
  guiMemoGetCaretIndex = <function 819>,
  guiMemoGetVerticalScrollPosition = <function 820>,
  guiMemoIsReadOnly = <function 821>,
  guiMemoSetCaratIndex = <function 822>,
  guiMemoSetCaretIndex = <function 823>,
  guiMemoSetReadOnly = <function 824>,
  guiMemoSetVerticalScrollPosition = <function 825>,
  guiMoveToBack = <function 826>,
  guiProgressBarGetProgress = <function 827>,
  guiProgressBarSetProgress = <function 828>,
  guiRadioButtonGetSelected = <function 829>,
  guiRadioButtonSetSelected = <function 830>,
  guiRoot = elem:guiroot00020004,
  guiScrollBarGetScrollPosition = <function 831>,
  guiScrollBarSetScrollPosition = <function 832>,
  guiScrollPaneGetHorizontalScrollPosition = <function 833>,
  guiScrollPaneGetVerticalScrollPosition = <function 834>,
  guiScrollPaneSetHorizontalScrollPosition = <function 835>,
  guiScrollPaneSetScrollBars = <function 836>,
  guiScrollPaneSetVerticalScrollPosition = <function 837>,
  guiSetAlpha = <function 838>,
  guiSetEnabled = <function 839>,
  guiSetFont = <function 840>,
  guiSetInputEnabled = <function 841>,
  guiSetInputMode = <function 842>,
  guiSetPosition = <function 843>,
  guiSetProperty = <function 844>,
  guiSetSelectedTab = <function 845>,
  guiSetSize = <function 846>,
  guiSetText = <function 847>,
  guiSetVisible = <function 848>,
  guiStaticImageGetNativeSize = <function 849>,
  guiStaticImageLoadImage = <function 850>,
  guiWindowIsMovable = <function 851>,
  guiWindowIsSizable = <function 852>,
  guiWindowSetMovable = <function 853>,
  guiWindowSetSizable = <function 854>,
  hasPermissionTo = <function 855>,
  hash = <function 856>,
  hsv2rgb = <function 857>,
  iif = <function 858>,
  injectBrowserMouseDown = <function 859>,
  injectBrowserMouseMove = <function 860>,
  injectBrowserMouseUp = <function 861>,
  injectBrowserMouseWheel = <function 862>,
  inspect = {
    KEY = inspect.KEY,
    METATABLE = inspect.METATABLE,
    _DESCRIPTION = "human-readable representations of tables and MTA datatypes",
    _LICENSE = '    MIT LICENSE\n\n    Copyright (c) 2013 Enrique Garcia Cota\n\n    Permission is hereby granted, free of charge, to any person obtaining a\n    copy of this software and associated documentation files (the\n    "Software"), to deal in the Software without restriction, including\n    without limitation the rights to use, copy, modify, merge, publish,\n    distribute, sublicense, and/or sell copies of the Software, and to\n    permit persons to whom the Software is furnished to do so, subject to\n    the following conditions:\n\n    The above copyright notice and this permission notice shall be included\n    in all copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n  ',
    _URL = "http://github.com/kikito/inspect.lua",
    _VERSION = "inspect.lua 3.1.0",
    inspect = <function 863>,
    <metatable> = {
      __call = <function 864>
    }
  },
  interpolateBetween = <function 865>,
  ipairs = <function 866>,
  iprint = <function 867>,
  isAmbientSoundEnabled = <function 868>,
  isAnonAdmin = <function 869>,
  isBrowserDomainBlocked = <function 870>,
  isBrowserFocused = <function 871>,
  isBrowserLoading = <function 872>,
  isChatBoxInputActive = <function 873>,
  isChatVisible = <function 874>,
  isConsoleActive = <function 875>,
  isControlEnabled = <function 876>,
  isCursorShowing = <function 877>,
  isDebugViewActive = <function 878>,
  isElement = <function 879>,
  isElementAttached = <function 880>,
  isElementCallPropagationEnabled = <function 881>,
  isElementCollidableWith = <function 882>,
  isElementDoubleSided = <function 883>,
  isElementFrozen = <function 884>,
  isElementInWater = <function 885>,
  isElementLocal = <function 886>,
  isElementLowLOD = <function 887>,
  isElementOnScreen = <function 888>,
  isElementStreamable = <function 889>,
  isElementStreamedIn = <function 890>,
  isElementSyncer = <function 891>,
  isElementWaitingForGroundToLoad = <function 892>,
  isElementWithinColShape = <function 893>,
  isElementWithinMarker = <function 894>,
  isGarageOpen = <function 895>,
  isInsideColShape = <function 896>,
  isInsideRadarArea = <function 897>,
  isLineOfSightClear = <function 898>,
  isMTAWindowActive = <function 899>,
  isMainMenuActive = <function 900>,
  isOOPEnabled = <function 901>,
  isObjectBreakable = <function 902>,
  isObjectStatic = <function 903>,
  isPedChoking = <function 904>,
  isPedDead = <function 905>,
  isPedDoingGangDriveby = <function 906>,
  isPedDoingTask = <function 907>,
  isPedDucked = <function 908>,
  isPedFootBloodEnabled = <function 909>,
  isPedFrozen = <function 910>,
  isPedHeadless = <function 911>,
  isPedInVehicle = <function 912>,
  isPedInWater = <function 913>,
  isPedOnFire = <function 914>,
  isPedOnGround = <function 915>,
  isPedReloadingWeapon = <function 916>,
  isPedTargetingMarkerEnabled = <function 917>,
  isPedWearingJetpack = <function 918>,
  isPlayerChoking = <function 919>,
  isPlayerDead = <function 920>,
  isPlayerDoingTask = <function 921>,
  isPlayerDucked = <function 922>,
  isPlayerHudComponentVisible = <function 923>,
  isPlayerInVehicle = <function 924>,
  isPlayerInWater = <function 925>,
  isPlayerMapForced = <function 926>,
  isPlayerMapVisible = <function 927>,
  isPlayerNametagShowing = <function 928>,
  isPlayerOnGround = <function 929>,
  isRadarAreaFlashing = <function 930>,
  isSoundPanningEnabled = <function 931>,
  isSoundPaused = <function 932>,
  isTimer = <function 933>,
  isTrainChainEngine = <function 934>,
  isTrainDerailable = <function 935>,
  isTrainDerailed = <function 936>,
  isTransferBoxActive = <function 937>,
  isTrayNotificationEnabled = <function 938>,
  isVehicleBlown = <function 939>,
  isVehicleDamageProof = <function 940>,
  isVehicleFrozen = <function 941>,
  isVehicleFuelTankExplodable = <function 942>,
  isVehicleLocked = <function 943>,
  isVehicleNitroActivated = <function 944>,
  isVehicleNitroRecharging = <function 945>,
  isVehicleOnGround = <function 946>,
  isVehicleTaxiLightOn = <function 947>,
  isVehicleWheelOnGround = <function 948>,
  isVehicleWindowOpen = <function 949>,
  isVoiceEnabled = <function 950>,
  isWaterDrawnLast = <function 951>,
  isWorldSoundEnabled = <function 952>,
  isWorldSpecialPropertyEnabled = <function 953>,
  keepEscapeCharacter = <function 954>,
  killPed = <function 955>,
  killTimer = <function 956>,
  load = <function 957>,
  loadBrowserURL = <function 958>,
  loadFlagImage = <function 959>,
  loadMaps = <function 960>,
  loadfile = <function 961>,
  loadlib = <function 962>,
  loadstring = <function 963>,
  localPlayer = elem:player[_,N3x#000000T|-nTL-|],
  math = {
    abs = <function 964>,
    acos = <function 965>,
    asin = <function 966>,
    atan = <function 967>,
    atan2 = <function 968>,
    ceil = <function 969>,
    cos = <function 970>,
    cosh = <function 971>,
    deg = <function 972>,
    exp = <function 973>,
    floor = <function 974>,
    fmod = <function 975>,
    frexp = <function 976>,
    huge = inf,
    ldexp = <function 977>,
    log = <function 978>,
    log10 = <function 979>,
    max = <function 980>,
    min = <function 981>,
    mod = <function 975>,
    modf = <function 982>,
    pi = 3.1415926535898,
    pow = <function 983>,
    rad = <function 984>,
    random = <function 985>,
    randomseed = <function 986>,
    round = <function 987>,
    sin = <function 988>,
    sinh = <function 989>,
    sqrt = <function 990>,
    tan = <function 991>,
    tanh = <function 992>
  },
  md5 = <function 993>,
  moveObject = <function 994>,
  navigateBrowserBack = <function 995>,
  navigateBrowserForward = <function 996>,
  newproxy = <function 997>,
  next = <function 998>,
  nothing = <function 999>,
  openPicker = <function 1000>,
  outputChatBox = <function 1001>,
  outputConsole = <function 1002>,
  outputDebugString = <function 1003>,
  pairs = <function 1004>,
  passwordHash = <function 1005>,
  passwordVerify = <function 1006>,
  pcall = <function 1007>,
  pickerTable = {},
  playSFX = <function 1008>,
  playSFX3D = <function 1009>,
  playSound = <function 1010>,
  playSound3D = <function 1011>,
  playSoundFrontEnd = <function 1012>,
  pregFind = <function 1013>,
  pregMatch = <function 1014>,
  pregReplace = <function 1015>,
  print = <function 1016>,
  processLineOfSight = <function 1017>,
  rawequal = <function 1018>,
  rawget = <function 1019>,
  rawset = <function 1020>,
  realTimeToSeconds = <function 1021>,
  realTimeToSecondsTest = <function 1022>,
  ref = <function 1023>,
  reloadBrowserPage = <function 1024>,
  removeColorCoding = <function 1025>,
  removeCommandHandler = <function 1026>,
  removeDebugHook = <function 1027>,
  removeEventHandler = <function 1028>,
  removePedClothes = <function 1029>,
  removePedFromVehicle = <function 1030>,
  removeVehicleUpgrade = <function 1031>,
  removeWorldModel = <function 1032>,
  requestBrowserDomains = <function 1033>,
  require = <function 1034>,
  resetAmbientSounds = <function 1035>,
  resetFarClipDistance = <function 1036>,
  resetFogDistance = <function 1037>,
  resetHeatHaze = <function 1038>,
  resetMoonSize = <function 1039>,
  resetNearClipDistance = <function 1040>,
  resetPedsLODDistance = <function 1041>,
  resetRainLevel = <function 1042>,
  resetSkyGradient = <function 1043>,
  resetSunColor = <function 1044>,
  resetSunSize = <function 1045>,
  resetTimer = <function 1046>,
  resetVehicleComponentPosition = <function 1047>,
  resetVehicleComponentRotation = <function 1048>,
  resetVehiclesLODDistance = <function 1049>,
  resetWaterColor = <function 1050>,
  resetWaterLevel = <function 1051>,
  resetWeaponFiringRate = <function 1052>,
  resetWindVelocity = <function 1053>,
  resetWorldSounds = <function 1054>,
  resizeBrowser = <function 1055>,
  resource = resource[admin],
  resourceRoot = elem:resource00000003,
  respawnObject = <function 1056>,
  restoreAllWorldModels = <function 1057>,
  restoreWorldModel = <function 1058>,
  rgb2hsv = <function 1059>,
  root = elem:root00000001,
  runMessageAction = <function 1060>,
  searchBans = <function 1061>,
  secondsToTimeDesc = <function 1062>,
  select = <function 1063>,
  setAircraftMaxHeight = <function 1064>,
  setAircraftMaxVelocity = <function 1065>,
  setAmbientSoundEnabled = <function 1066>,
  setAnalogControlState = <function 1067>,
  setAnonAdmin = <function 1068>,
  setBirdsEnabled = <function 1069>,
  setBlipColor = <function 1070>,
  setBlipIcon = <function 1071>,
  setBlipOrdering = <function 1072>,
  setBlipSize = <function 1073>,
  setBlipVisibleDistance = <function 1074>,
  setBlurLevel = <function 1075>,
  setBrowserAjaxHandler = <function 1076>,
  setBrowserProperty = <function 1077>,
  setBrowserRenderingPaused = <function 1078>,
  setBrowserVolume = <function 1079>,
  setCameraClip = <function 1080>,
  setCameraFieldOfView = <function 1081>,
  setCameraGoggleEffect = <function 1082>,
  setCameraInterior = <function 1083>,
  setCameraMatrix = <function 1084>,
  setCameraShakeLevel = <function 1085>,
  setCameraTarget = <function 1086>,
  setCameraViewMode = <function 1087>,
  setClipboard = <function 1088>,
  setCloudsEnabled = <function 1089>,
  setControlState = <function 1090>,
  setCursorAlpha = <function 1091>,
  setCursorPosition = <function 1092>,
  setDebugViewActive = <function 1093>,
  setDevelopmentMode = <function 1094>,
  setEffectDensity = <function 1095>,
  setEffectSpeed = <function 1096>,
  setElementAlpha = <function 1097>,
  setElementAttachedOffsets = <function 1098>,
  setElementCallPropagationEnabled = <function 1099>,
  setElementCollidableWith = <function 1100>,
  setElementCollisionsEnabled = <function 1101>,
  setElementData = <function 1102>,
  setElementDimension = <function 1103>,
  setElementDoubleSided = <function 1104>,
  setElementFrozen = <function 1105>,
  setElementHealth = <function 1106>,
  setElementID = <function 1107>,
  setElementInterior = <function 1108>,
  setElementMatrix = <function 1109>,
  setElementModel = <function 1110>,
  setElementParent = <function 1111>,
  setElementPosition = <function 1112>,
  setElementRotation = <function 1113>,
  setElementStreamable = <function 1114>,
  setElementVelocity = <function 1115>,
  setFPSLimit = <function 1116>,
  setFarClipDistance = <function 1117>,
  setFogDistance = <function 1118>,
  setGameSpeed = <function 1119>,
  setGarageOpen = <function 1120>,
  setGravity = <function 1121>,
  setHeatHaze = <function 1122>,
  setHeliBladeCollisionsEnabled = <function 1123>,
  setHelicopterRotorSpeed = <function 1124>,
  setInteriorFurnitureEnabled = <function 1125>,
  setInteriorSoundsEnabled = <function 1126>,
  setJetpackMaxHeight = <function 1127>,
  setLightColor = <function 1128>,
  setLightDirection = <function 1129>,
  setLightRadius = <function 1130>,
  setLowLODElement = <function 1131>,
  setMarkerColor = <function 1132>,
  setMarkerIcon = <function 1133>,
  setMarkerSize = <function 1134>,
  setMarkerTarget = <function 1135>,
  setMarkerType = <function 1136>,
  setMinuteDuration = <function 1137>,
  setMoonSize = <function 1138>,
  setNearClipDistance = <function 1139>,
  setObjectBreakable = <function 1140>,
  setObjectMass = <function 1141>,
  setObjectRotation = <function 1142>,
  setObjectScale = <function 1143>,
  setObjectStatic = <function 1144>,
  setOcclusionsEnabled = <function 1145>,
  setPedAimTarget = <function 1146>,
  setPedAnalogControlState = <function 1147>,
  setPedAnimation = <function 1148>,
  setPedAnimationProgress = <function 1149>,
  setPedCameraRotation = <function 1150>,
  setPedCanBeKnockedOffBike = <function 1151>,
  setPedControlState = <function 1152>,
  setPedDoingGangDriveby = <function 1153>,
  setPedFootBloodEnabled = <function 1154>,
  setPedFrozen = <function 1155>,
  setPedHeadless = <function 1156>,
  setPedLookAt = <function 1157>,
  setPedOnFire = <function 1158>,
  setPedOxygenLevel = <function 1159>,
  setPedRotation = <function 1160>,
  setPedSkin = <function 1161>,
  setPedStat = <function 1162>,
  setPedTargetingMarkerEnabled = <function 1163>,
  setPedVoice = <function 1164>,
  setPedWalkingStyle = <function 1165>,
  setPedWeaponSlot = <function 1166>,
  setPedsLODDistance = <function 1167>,
  setPickupType = <function 1168>,
  setPlayerCanBeKnockedOffBike = <function 1169>,
  setPlayerHudComponentVisible = <function 1170>,
  setPlayerMoney = <function 1171>,
  setPlayerNametagColor = <function 1172>,
  setPlayerNametagShowing = <function 1173>,
  setPlayerNametagText = <function 1174>,
  setPlayerRotation = <function 1175>,
  setPlayerSkin = <function 1176>,
  setPlayerWeaponSlot = <function 1177>,
  setProjectileCounter = <function 1178>,
  setRadarAreaColor = <function 1179>,
  setRadarAreaFlashing = <function 1180>,
  setRadarAreaSize = <function 1181>,
  setRadioChannel = <function 1182>,
  setRainLevel = <function 1183>,
  setSearchLightEndPosition = <function 1184>,
  setSearchLightEndRadius = <function 1185>,
  setSearchLightStartPosition = <function 1186>,
  setSearchLightStartRadius = <function 1187>,
  setSkyGradient = <function 1188>,
  setSoundEffectEnabled = <function 1189>,
  setSoundMaxDistance = <function 1190>,
  setSoundMinDistance = <function 1191>,
  setSoundPan = <function 1192>,
  setSoundPanningEnabled = <function 1193>,
  setSoundPaused = <function 1194>,
  setSoundPosition = <function 1195>,
  setSoundProperties = <function 1196>,
  setSoundSpeed = <function 1197>,
  setSoundVolume = <function 1198>,
  setSunColor = <function 1199>,
  setSunSize = <function 1200>,
  setTime = <function 1201>,
  setTimer = <function 1202>,
  setTrafficLightState = <function 1203>,
  setTrafficLightsLocked = <function 1204>,
  setTrainDerailable = <function 1205>,
  setTrainDerailed = <function 1206>,
  setTrainDirection = <function 1207>,
  setTrainPosition = <function 1208>,
  setTrainSpeed = <function 1209>,
  setVehicleAdjustableProperty = <function 1210>,
  setVehicleColor = <function 1211>,
  setVehicleComponentPosition = <function 1212>,
  setVehicleComponentRotation = <function 1213>,
  setVehicleComponentVisible = <function 1214>,
  setVehicleDamageProof = <function 1215>,
  setVehicleDirtLevel = <function 1216>,
  setVehicleDoorOpenRatio = <function 1217>,
  setVehicleDoorState = <function 1218>,
  setVehicleDoorsUndamageable = <function 1219>,
  setVehicleEngineState = <function 1220>,
  setVehicleFrozen = <function 1221>,
  setVehicleFuelTankExplodable = <function 1222>,
  setVehicleGravity = <function 1223>,
  setVehicleHandling = <function 1224>,
  setVehicleHeadLightColor = <function 1225>,
  setVehicleLandingGearDown = <function 1226>,
  setVehicleLightState = <function 1227>,
  setVehicleLocked = <function 1228>,
  setVehicleModel = <function 1229>,
  setVehicleModelExhaustFumesPosition = <function 1230>,
  setVehicleNitroActivated = <function 1231>,
  setVehicleNitroCount = <function 1232>,
  setVehicleNitroLevel = <function 1233>,
  setVehicleOverrideLights = <function 1234>,
  setVehiclePaintjob = <function 1235>,
  setVehiclePanelState = <function 1236>,
  setVehiclePlateText = <function 1237>,
  setVehicleRotation = <function 1238>,
  setVehicleSirens = <function 1239>,
  setVehicleSirensOn = <function 1240>,
  setVehicleTaxiLightOn = <function 1241>,
  setVehicleTurnVelocity = <function 1242>,
  setVehicleTurretPosition = <function 1243>,
  setVehicleWheelStates = <function 1244>,
  setVehicleWindowOpen = <function 1245>,
  setVehiclesLODDistance = <function 1246>,
  setWaterColor = <function 1247>,
  setWaterDrawnLast = <function 1248>,
  setWaterLevel = <function 1249>,
  setWaterVertexPosition = <function 1250>,
  setWaveHeight = <function 1251>,
  setWeaponAmmo = <function 1252>,
  setWeaponClipAmmo = <function 1253>,
  setWeaponFiringRate = <function 1254>,
  setWeaponFlags = <function 1255>,
  setWeaponProperty = <function 1256>,
  setWeaponState = <function 1257>,
  setWeaponTarget = <function 1258>,
  setWeather = <function 1259>,
  setWeatherBlended = <function 1260>,
  setWindVelocity = <function 1261>,
  setWindowFlashing = <function 1262>,
  setWorldSoundEnabled = <function 1263>,
  setWorldSpecialPropertyEnabled = <function 1264>,
  setfenv = <function 1265>,
  setmetatable = <function 1266>,
  sh = 1080,
  sha256 = <function 1267>,
  showChat = <function 1268>,
  showCursor = <function 1269>,
  showPlayerHudComponent = <function 1270>,
  source = elem:gui-button00020178,
  split = <function 1271>,
  stopObject = <function 1272>,
  stopSound = <function 1273>,
  string = {
    byte = <function 1274>,
    char = <function 1275>,
    find = <function 1276>,
    format = <function 1277>,
    gfind = <function 1278>,
    gmatch = <function 1278>,
    gsub = <function 1279>,
    len = <function 1280>,
    lower = <function 1281>,
    match = <function 1282>,
    rep = <function 1283>,
    reverse = <function 1284>,
    sub = <function 1285>,
    upper = <function 1286>
  },
  sw = 1920,
  table = {
    concat = <function 1287>,
    foreach = <function 1288>,
    foreachi = <function 1289>,
    getn = <function 1290>,
    insert = <function 1291>,
    maxn = <function 1292>,
    remove = <function 1293>,
    setn = <function 1294>,
    sort = <function 1295>
  },
  takePlayerMoney = <function 1296>,
  teaDecode = <function 1297>,
  teaEncode = <function 1298>,
  testLineAgainstWater = <function 1299>,
  this = elem:gui-window00020114,
  toJSON = <function 1300>,
  tocolor = <function 1301>,
  toggleAllControls = <function 1302>,
  toggleBrowserDevTools = <function 1303>,
  toggleControl = <function 1304>,
  toggleObjectRespawn = <function 1305>,
  tonumber = <function 1306>,
  tostring = <function 1307>,
  triggerEvent = <function 1308>,
  triggerLatentServerEvent = <function 1309>,
  triggerServerEvent = <function 1310>,
  type = <function 1311>,
  unbindKey = <function 1312>,
  unpack = <function 1313>,
  updateColorCodes = <function 1314>,
  utf8 = {
    byte = <function 1315>,
    char = <function 1316>,
    charpos = <function 1317>,
    escape = <function 1318>,
    find = <function 1319>,
    fold = <function 1320>,
    gmatch = <function 1321>,
    gsub = <function 1322>,
    insert = <function 1323>,
    len = <function 1324>,
    lower = <function 1325>,
    match = <function 1326>,
    ncasecmp = <function 1327>,
    next = <function 1328>,
    remove = <function 1329>,
    reverse = <function 1330>,
    sub = <function 1331>,
    title = <function 1332>,
    upper = <function 1333>,
    width = <function 1334>,
    widthindex = <function 1335>
  },
  utfChar = <function 1336>,
  utfCode = <function 1337>,
  utfLen = <function 1338>,
  utfSeek = <function 1339>,
  utfSub = <function 1340>,
  warpPedIntoVehicle = <function 1341>,
  wasEventCancelled = <function 1342>,
  xmlCopyFile = <function 1343>,
  xmlCreateChild = <function 1344>,
  xmlCreateFile = <function 1345>,
  xmlCreateSubNode = <function 1346>,
  xmlDestroyNode = <function 1347>,
  xmlFindChild = <function 1348>,
  xmlFindSubNode = <function 1349>,
  xmlLoadFile = <function 1350>,
  xmlNodeFindChild = <function 1351>,
  xmlNodeFindSubNode = <function 1352>,
  xmlNodeGetAttribute = <function 1353>,
  xmlNodeGetAttributes = <function 1354>,
  xmlNodeGetChildren = <function 1355>,
  xmlNodeGetName = <function 1356>,
  xmlNodeGetParent = <function 1357>,
  xmlNodeGetSubNodes = <function 1358>,
  xmlNodeGetValue = <function 1359>,
  xmlNodeSetAttribute = <function 1360>,
  xmlNodeSetName = <function 1361>,
  xmlNodeSetValue = <function 1362>,
  xmlSaveFile = <function 1363>,
  xmlUnloadFile = <function 1364>,
  xpcall = <function 1365>
}

 

  • Thanks 1
Link to comment

Try replacing what you have by this:

function table.copy(t)
    local copiedTable = {}
    
    for key, value in pairs(t) do
        if value ~= _G then
            copiedTable[key] = value
        end
    end
    
    return copiedTable
end

function Wrapper.createEnvironment()
    local env = table.copy(_G)
    
    env._G = env
    
    setmetatable(env, {
        __index = function(_, index)
            if index == "source" then
                return _G.source
            else
                return rawget(env, index)
            end
        end
    })
    
    return env
end

The reason this's happening is that MTA is declaring the source variable within the script's original environment. Thus, you need to get the variable's value from the script's original environment which is already defined as _G. Also, environments' meta table have no effect at all as you're giving them the same functionality Lua actually does originally. Besides, you had some issues with table.move I won't say critical but may cause bugs for some maps scripts.

  • Like 1
Link to comment
6 minutes ago, #CroSs said:

Try replacing what you have by this:


function table.copy(t)    local copiedTable = {}        for key, value in pairs(t) do        if value ~= _G then            copiedTable[key] = value        end    end        return copiedTableendfunction Wrapper.createEnvironment()    local env = table.copy(_G)        env._G = env        setmetatable(env, {        __index = function(_, index)            if index == "source" then                return _G.source            else                return rawget(env, index)            end        end    })        return envend

The reason this's happening is that MTA is declaring the source variable within the script's original environment. Thus, you need to get the variable's value from the script's original environment which is already defined as _G. Also, environments' meta table have no effect at all as you're giving them the same functionality Lua actually does originally. Besides, you had some issues with table.move I won't say critical but may cause bugs for some maps scripts.

Now everything works perfectly, I really don’t know what to say. Thank you mate.

Also, Thanks to @Pirulax, @IIYAMA, @MisterQuestions, @Bonsai

Edited by N3xT
  • Like 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...