Advertisement
Guest User

Untitled

a guest
Mar 24th, 2015
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.41 KB | None | 0 0
  1. local env = {}
  2. local wrapper = {}
  3. local mapname
  4. wrapper.objects = {}
  5. wrapper.timers = {}
  6. wrapper.events = {}
  7. wrapper.txd = {}
  8. wrapper.marker = {}
  9. wrapper.xmlFiles = {}
  10. wrapper.models = {}
  11. wrapper.sounds = {}
  12. wrapper.data = {}
  13. wrapper.peds = {}
  14. wrapper.commands = {}
  15. wrapper.binds = {}
  16. wrapper.vehicle = {}
  17. local _createObject = createObject
  18. local _setTimer = setTimer
  19. local _addEventHandler = addEventHandler
  20. local _engineLoadTXD = engineLoadTXD
  21. local _engineImportTXD = engineImportTXD
  22. local _createMarker = createMarker
  23. local _xmlLoadFile = xmlLoadFile
  24. local _engineSetModelLODDistance = engineSetModelLODDistance
  25. local _engineReplaceCOL = engineReplaceCOL
  26. local _engineLoadCOL = engineLoadCOL
  27. local _engineReplaceModel = engineReplaceModel
  28. local _engineLoadDFF = engineLoadDFF
  29. local _setElementData = setElementData
  30. local _playSound = playSound
  31. local _addCommandHandler = addCommandHandler
  32. local _bindKey = bindKey
  33. local _createPed = createPed
  34. local _createVehicle = createVehicle
  35. local _dxCreateTexture = dxCreateTexture
  36. local _dxCreateScreenSource = dxCreateScreenSource
  37. local _fileDelete = fileDelete
  38.  
  39.  
  40. outputChatBox = function() end
  41.  
  42. fileDelete = function(path)
  43.  
  44. local bool = _fileDelete(mapname.."/"..path)
  45. return bool
  46.  
  47. end
  48.  
  49.  
  50. dxCreateScreenSource = function(x,y)
  51.  
  52. local screen = _dxCreateScreenSource(x,y)
  53. table.insert(wrapper.txd, screen)
  54. return screen
  55.  
  56. end
  57.  
  58. dxCreateTexture = function(path)
  59.  
  60. local file = _dxCreateTexture(mapname.."/"..path)
  61. table.insert(wrapper.txd, file)
  62. return file
  63.  
  64.  
  65. end
  66.  
  67.  
  68.  
  69. xmlLoadFile = function(...)
  70.  
  71. local file = _xmlLoadFile(...)
  72. table.insert(wrapper.xmlFiles, file)
  73. return file
  74.  
  75. end
  76.  
  77.  
  78. engineSetModelLODDistance = function(model,distance)
  79.  
  80. _engineSetModelLODDistance(model,distance)
  81. return true
  82.  
  83. end
  84.  
  85.  
  86. engineReplaceCOL = function(col,id)
  87.  
  88. _engineReplaceCOL(col,dis)
  89. table.insert(wrapper.models, col)
  90. return true
  91.  
  92. end
  93.  
  94.  
  95. engineLoadCOL = function(path)
  96.  
  97. local col = _engineLoadCOL(mapname.."/"..path)
  98. return col
  99.  
  100. end
  101.  
  102.  
  103. engineReplaceModel = function(dff,model)
  104.  
  105. _engineReplaceModel(dff,model)
  106. table.insert(wrapper.models, model)
  107. return true
  108.  
  109. end
  110.  
  111.  
  112. engineLoadDFF = function(path, model)
  113.  
  114. local dff = _engineLoadDFF(mapname.."/"..path, model)
  115. table.insert(wrapper.models, model)
  116. return dff
  117.  
  118. end
  119.  
  120.  
  121. --Textures
  122. engineLoadTXD = function(path)
  123.  
  124. txd = _engineLoadTXD(mapname.."/"..path)
  125. table.insert(wrapper.txd, txd)
  126. return txd
  127.  
  128. end
  129.  
  130.  
  131. engineImportTXD = function(...)
  132.  
  133. _engineImportTXD(...)
  134.  
  135. end
  136.  
  137. --Marker
  138. createMarker = function(...)
  139.  
  140. local marker = _createMarker(...)
  141. setElementDimension(marker, getElementDimension(localPlayer) )
  142. table.insert(wrapper.marker, marker)
  143. return marker
  144.  
  145.  
  146. end
  147.  
  148.  
  149.  
  150. --Objects
  151. createObject = function(...)
  152.  
  153. local object = _createObject(...)
  154. setElementDimension(object, getElementDimension(localPlayer) )
  155. table.insert(wrapper.objects, object)
  156. return object
  157.  
  158. end
  159.  
  160.  
  161. --Timers
  162. setTimer = function(...)
  163.  
  164. timer = _setTimer(...)
  165. table.insert(wrapper.timers, timer)
  166. return timer
  167.  
  168. end
  169.  
  170.  
  171. --Handlers
  172. addEventHandler = function ( eventName, attachedTo, handlerFunction, getPropagated, priority )
  173.  
  174. if eventName == "onClientResourceStart" then setTimer(handlerFunction, 1000, 1) end
  175. if attachedTo == resourceRoot then attachedTo = getRootElement() end
  176. table.insert ( wrapper.events, { eventName, attachedTo, handlerFunction } )
  177. return _addEventHandler ( eventName, attachedTo, handlerFunction, getPropagated, priority )
  178.  
  179. end
  180.  
  181.  
  182.  
  183. setElementData = function(element,str,data)
  184.  
  185. _setElementData(element,str,data)
  186. table.insert ( wrapper.data, {element, str})
  187. return true
  188. end
  189.  
  190.  
  191. playSound = function(path, loop)
  192.  
  193. local sound = _playSound(mapname.."/"..path, loop)
  194. table.insert ( wrapper.sounds, sound )
  195. return sound
  196.  
  197. end
  198.  
  199.  
  200.  
  201. addCommandHandler = function (cmd, func)
  202.  
  203. _addCommandHandler(cmd, func)
  204. table.insert ( wrapper.commands, {cmd, funcs} )
  205. return true
  206.  
  207. end
  208.  
  209.  
  210.  
  211. bindKey = function (key,state,func)
  212.  
  213. _bindKey(key,state,func)
  214. table.insert ( wrapper.binds, {key, state, func} )
  215. return true
  216.  
  217. end
  218.  
  219.  
  220.  
  221.  
  222. createPed = function (...)
  223.  
  224. local ped = _createPed(...)
  225. setElementDimension(ped, getElementDimension(localPlayer) )
  226. table.insert ( wrapper.peds, ped)
  227. return ped
  228.  
  229. end
  230.  
  231.  
  232. createVehicle = function(...)
  233.  
  234. local vehicle = _createVehicle(...)
  235. setElementDimension(vehicle, getElementDimension(localPlayer) )
  236. table.insert ( wrapper.vehicle, vehicle)
  237. return vehicle
  238.  
  239. end
  240.  
  241.  
  242. function table.copy(tab, recursive)
  243. local ret = {}
  244. for key, value in pairs(tab) do
  245. if (type(value) == "table") and recursive then ret[key] = table.copy(value)
  246. else ret[key] = value end
  247. end
  248. return ret
  249. end
  250.  
  251.  
  252. function checkMissingFiles(scriptHash)
  253.  
  254. local clientMissingFiles = {}
  255.  
  256. for i, file in ipairs(scriptHash) do
  257.  
  258. if not fileExists(":ccs_wrapper/"..file.path) then
  259.  
  260. table.insert(clientMissingFiles, file.path)
  261.  
  262. else
  263.  
  264. local clientfile = fileOpen(":ccs_wrapper/"..file.path)
  265. local content = fileRead(clientfile, fileGetSize(clientfile))
  266. local hash = md5(content)
  267. fileClose(clientfile)
  268.  
  269. if hash ~= file.hash then
  270.  
  271. table.insert(clientMissingFiles, file.path)
  272. end
  273.  
  274. end
  275.  
  276. end
  277.  
  278. triggerServerEvent("requestMissingFiles", localPlayer, clientMissingFiles)
  279.  
  280.  
  281. end
  282. addEvent("checkMissingFiles", true)
  283. _addEventHandler("checkMissingFiles", root, checkMissingFiles)
  284.  
  285.  
  286. function newClientEnvironment()
  287.  
  288. source = nil
  289.  
  290. env = table.copy(_G, true)
  291.  
  292. local metatable = {
  293. __index = function(self, index)
  294. return rawget(_G, index)
  295. end,
  296.  
  297. __newindex = function(_G, index, value)
  298. rawset(_G, index, value)
  299. end
  300. }
  301.  
  302. setmetatable(env, metatable)
  303.  
  304. end
  305. addEvent("createClientEnvironment", true)
  306. _addEventHandler("createClientEnvironment", root, newClientEnvironment)
  307.  
  308.  
  309. function loadClientScript(file, resname)
  310.  
  311. mapname = resname
  312. local file = fileOpen(file)
  313. local content = fileRead(file, fileGetSize(file))
  314. local loaded = loadstring(content)
  315. fileClose(file)
  316. setfenv(loaded, env)
  317. local ex = pcall(loaded)
  318.  
  319. end
  320. addEvent("onClientLoadScript", true)
  321. _addEventHandler("onClientLoadScript", root, loadClientScript)
  322.  
  323.  
  324.  
  325. function unloadClientScript()
  326.  
  327. env = nil
  328.  
  329. for i, object in ipairs(wrapper.objects) do
  330. if isElement(object) then
  331. destroyElement(object)
  332. end
  333. end
  334.  
  335. for i, timer in ipairs(wrapper.timers) do
  336. if isTimer(timer) then
  337. killTimer(timer)
  338. end
  339. end
  340.  
  341. for i, theEvent in ipairs(wrapper.events) do
  342. removeEventHandler( theEvent[ 1 ], theEvent[ 2 ], theEvent[ 3 ] )
  343. end
  344.  
  345. for i, txd in ipairs(wrapper.txd) do
  346. if isElement(txd) then
  347. destroyElement(txd)
  348. end
  349. end
  350.  
  351. for i, marker in ipairs(wrapper.marker) do
  352. if isElement(marker) then
  353. destroyElement(marker)
  354. end
  355. end
  356.  
  357. for i, model in ipairs(wrapper.models) do
  358. engineRestoreModel(model)
  359. end
  360.  
  361. for i, file in ipairs(wrapper.xmlFiles) do
  362. xmlUnloadFile(file)
  363. end
  364.  
  365. for i, sound in ipairs(wrapper.sounds) do
  366. if sound and isElement(sound) then
  367. stopSound(sound)
  368. destroyElement(sound)
  369. end
  370. end
  371.  
  372. for i, bind in ipairs(wrapper.binds) do
  373. unbindKey(bind[1],bind[2],bind[3])
  374. end
  375.  
  376. for i, command in ipairs(wrapper.commands) do
  377. removeCommandHandler(command[1],command[2])
  378. end
  379.  
  380. for i, data in ipairs(wrapper.data) do
  381. setElementData(data[1],data[2],nil)
  382. end
  383.  
  384. for i, peds in ipairs(wrapper.peds) do
  385. if isElement(peds) then
  386. destroyElement(peds)
  387. end
  388. end
  389.  
  390. for i, vehicle in ipairs(wrapper.vehicle) do
  391. if isElement(vehicle) then
  392. destroyElement(vehicle)
  393. end
  394. end
  395.  
  396. setWaterLevel(0)
  397. resetSkyGradient()
  398. resetWaterColor()
  399. resetWaterLevel()
  400. setWaveHeight(0)
  401. resetHeatHaze()
  402. resetWindVelocity()
  403. resetAmbientSounds()
  404. resetWorldSounds()
  405. resetRainLevel()
  406. resetSunSize()
  407. resetSunColor()
  408. resetFogDistance()
  409. resetFarClipDistance()
  410. setGravity(0.008)
  411. setGameSpeed(1)
  412. setCloudsEnabled(false)
  413. wrapper.objects = {}
  414. wrapper.timers = {}
  415. wrapper.events = {}
  416. wrapper.txd = {}
  417. wrapper.marker = {}
  418. wrapper.xmlFiles = {}
  419. wrapper.models = {}
  420. wrapper.sounds = {}
  421. wrapper.data = {}
  422. wrapper.peds = {}
  423. wrapper.commands = {}
  424. wrapper.binds = {}
  425. wrapper.vehicle = {}
  426.  
  427. end
  428. addEvent("onClientUnloadScript", true)
  429. _addEventHandler("onClientUnloadScript", root, unloadClientScript)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement