Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local env = {}
- local wrapper = {}
- local mapname
- wrapper.objects = {}
- wrapper.timers = {}
- wrapper.events = {}
- wrapper.txd = {}
- wrapper.marker = {}
- wrapper.xmlFiles = {}
- wrapper.models = {}
- wrapper.sounds = {}
- wrapper.data = {}
- wrapper.peds = {}
- wrapper.commands = {}
- wrapper.binds = {}
- wrapper.vehicle = {}
- 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 _setElementData = setElementData
- local _playSound = playSound
- local _addCommandHandler = addCommandHandler
- local _bindKey = bindKey
- local _createPed = createPed
- local _createVehicle = createVehicle
- local _dxCreateTexture = dxCreateTexture
- local _dxCreateScreenSource = dxCreateScreenSource
- local _fileDelete = fileDelete
- outputChatBox = function() end
- fileDelete = function(path)
- local bool = _fileDelete(mapname.."/"..path)
- return bool
- end
- dxCreateScreenSource = function(x,y)
- local screen = _dxCreateScreenSource(x,y)
- table.insert(wrapper.txd, screen)
- return screen
- end
- dxCreateTexture = function(path)
- local file = _dxCreateTexture(mapname.."/"..path)
- table.insert(wrapper.txd, file)
- return file
- end
- xmlLoadFile = function(...)
- local file = _xmlLoadFile(...)
- table.insert(wrapper.xmlFiles, file)
- return file
- end
- engineSetModelLODDistance = function(model,distance)
- _engineSetModelLODDistance(model,distance)
- return true
- end
- engineReplaceCOL = function(col,id)
- _engineReplaceCOL(col,dis)
- table.insert(wrapper.models, col)
- return true
- end
- engineLoadCOL = function(path)
- local col = _engineLoadCOL(mapname.."/"..path)
- return col
- end
- engineReplaceModel = function(dff,model)
- _engineReplaceModel(dff,model)
- table.insert(wrapper.models, model)
- return true
- end
- engineLoadDFF = function(path, model)
- local dff = _engineLoadDFF(mapname.."/"..path, model)
- table.insert(wrapper.models, model)
- return dff
- end
- --Textures
- engineLoadTXD = function(path)
- txd = _engineLoadTXD(mapname.."/"..path)
- table.insert(wrapper.txd, txd)
- return txd
- end
- engineImportTXD = function(...)
- _engineImportTXD(...)
- end
- --Marker
- createMarker = function(...)
- local marker = _createMarker(...)
- setElementDimension(marker, getElementDimension(localPlayer) )
- table.insert(wrapper.marker, marker)
- return marker
- end
- --Objects
- createObject = function(...)
- local object = _createObject(...)
- setElementDimension(object, getElementDimension(localPlayer) )
- table.insert(wrapper.objects, object)
- return object
- end
- --Timers
- setTimer = function(...)
- timer = _setTimer(...)
- table.insert(wrapper.timers, timer)
- return timer
- end
- --Handlers
- addEventHandler = function ( eventName, attachedTo, handlerFunction, getPropagated, priority )
- if eventName == "onClientResourceStart" then setTimer(handlerFunction, 1000, 1) end
- if attachedTo == resourceRoot then attachedTo = getRootElement() end
- table.insert ( wrapper.events, { eventName, attachedTo, handlerFunction } )
- return _addEventHandler ( eventName, attachedTo, handlerFunction, getPropagated, priority )
- end
- setElementData = function(element,str,data)
- _setElementData(element,str,data)
- table.insert ( wrapper.data, {element, str})
- return true
- end
- playSound = function(path, loop)
- local sound = _playSound(mapname.."/"..path, loop)
- table.insert ( wrapper.sounds, sound )
- return sound
- end
- addCommandHandler = function (cmd, func)
- _addCommandHandler(cmd, func)
- table.insert ( wrapper.commands, {cmd, funcs} )
- return true
- end
- bindKey = function (key,state,func)
- _bindKey(key,state,func)
- table.insert ( wrapper.binds, {key, state, func} )
- return true
- end
- createPed = function (...)
- local ped = _createPed(...)
- setElementDimension(ped, getElementDimension(localPlayer) )
- table.insert ( wrapper.peds, ped)
- return ped
- end
- createVehicle = function(...)
- local vehicle = _createVehicle(...)
- setElementDimension(vehicle, getElementDimension(localPlayer) )
- table.insert ( wrapper.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 checkMissingFiles(scriptHash)
- local clientMissingFiles = {}
- for i, file in ipairs(scriptHash) do
- if not fileExists(":ccs_wrapper/"..file.path) then
- table.insert(clientMissingFiles, file.path)
- else
- local clientfile = fileOpen(":ccs_wrapper/"..file.path)
- local content = fileRead(clientfile, fileGetSize(clientfile))
- local hash = md5(content)
- fileClose(clientfile)
- if hash ~= file.hash then
- table.insert(clientMissingFiles, file.path)
- end
- end
- end
- triggerServerEvent("requestMissingFiles", localPlayer, clientMissingFiles)
- end
- addEvent("checkMissingFiles", true)
- _addEventHandler("checkMissingFiles", root, checkMissingFiles)
- function newClientEnvironment()
- source = nil
- env = table.copy(_G, true)
- local metatable = {
- __index = function(self, index)
- return rawget(_G, index)
- end,
- __newindex = function(_G, index, value)
- rawset(_G, index, value)
- end
- }
- setmetatable(env, metatable)
- end
- addEvent("createClientEnvironment", true)
- _addEventHandler("createClientEnvironment", root, newClientEnvironment)
- function loadClientScript(file, resname)
- mapname = resname
- local file = fileOpen(file)
- local content = fileRead(file, fileGetSize(file))
- local loaded = loadstring(content)
- fileClose(file)
- setfenv(loaded, env)
- local ex = pcall(loaded)
- end
- addEvent("onClientLoadScript", true)
- _addEventHandler("onClientLoadScript", root, loadClientScript)
- function unloadClientScript()
- env = nil
- for i, object in ipairs(wrapper.objects) do
- if isElement(object) then
- destroyElement(object)
- end
- end
- for i, timer in ipairs(wrapper.timers) do
- if isTimer(timer) then
- killTimer(timer)
- end
- end
- for i, theEvent in ipairs(wrapper.events) do
- removeEventHandler( theEvent[ 1 ], theEvent[ 2 ], theEvent[ 3 ] )
- end
- for i, txd in ipairs(wrapper.txd) do
- if isElement(txd) then
- destroyElement(txd)
- end
- end
- for i, marker in ipairs(wrapper.marker) do
- if isElement(marker) then
- destroyElement(marker)
- end
- end
- for i, model in ipairs(wrapper.models) do
- engineRestoreModel(model)
- end
- for i, file in ipairs(wrapper.xmlFiles) do
- xmlUnloadFile(file)
- end
- for i, sound in ipairs(wrapper.sounds) do
- if sound and isElement(sound) then
- stopSound(sound)
- destroyElement(sound)
- end
- end
- for i, bind in ipairs(wrapper.binds) do
- unbindKey(bind[1],bind[2],bind[3])
- end
- for i, command in ipairs(wrapper.commands) do
- removeCommandHandler(command[1],command[2])
- end
- for i, data in ipairs(wrapper.data) do
- setElementData(data[1],data[2],nil)
- end
- for i, peds in ipairs(wrapper.peds) do
- if isElement(peds) then
- destroyElement(peds)
- end
- end
- for i, vehicle in ipairs(wrapper.vehicle) do
- if isElement(vehicle) then
- destroyElement(vehicle)
- end
- end
- setWaterLevel(0)
- resetSkyGradient()
- resetWaterColor()
- resetWaterLevel()
- setWaveHeight(0)
- resetHeatHaze()
- resetWindVelocity()
- resetAmbientSounds()
- resetWorldSounds()
- resetRainLevel()
- resetSunSize()
- resetSunColor()
- resetFogDistance()
- resetFarClipDistance()
- setGravity(0.008)
- setGameSpeed(1)
- setCloudsEnabled(false)
- wrapper.objects = {}
- wrapper.timers = {}
- wrapper.events = {}
- wrapper.txd = {}
- wrapper.marker = {}
- wrapper.xmlFiles = {}
- wrapper.models = {}
- wrapper.sounds = {}
- wrapper.data = {}
- wrapper.peds = {}
- wrapper.commands = {}
- wrapper.binds = {}
- wrapper.vehicle = {}
- end
- addEvent("onClientUnloadScript", true)
- _addEventHandler("onClientUnloadScript", root, unloadClientScript)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement