Advertisement
ProToTN

ScriptEditor_Server

Jun 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.78 KB | None | 0 0
  1. rootElement = getRootElement()
  2.  
  3. addCommandHandler("editor",
  4. function (thePlayer)
  5. local accountname = getAccountName(getPlayerAccount(thePlayer))
  6. if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" )) then triggerClientEvent(thePlayer,"show_editor",thePlayer)
  7. else outputChatBox("You don't have permission to use the script editor.",thePlayer,255,0,0)
  8.   end
  9. end)
  10.  
  11. function getScriptEnd(file)
  12.   local tmp, endPos = fileGetPos(file)
  13.   while not fileIsEOF(file) do    
  14.   fileRead(file, 500)                      
  15.   end
  16.   endPos = fileGetPos(file)
  17.   fileSetPos(file, tmp)
  18.   return endPos
  19. end
  20.  
  21. function getResNameFromPath(path)
  22.   if (type(path) ~= "string") then return "" end
  23.   local sep1, sep = path:find("\\") or 0
  24.   local sep2 = path:find("/") or 0
  25.   if (sep1 > sep2) then sep = sep1 else sep = sep2 end
  26.   if (sep == 0) then return path end
  27.   return path:sub(1, sep-1), path:sub(sep+1, path:len())
  28. end
  29.  
  30. function reload_script(client, path)
  31.     triggerClientEvent(client, "return_message", client, "Warning: Script reloaded!", 255, 140, 0)
  32.     local file = fileOpen(":"..path, true)
  33.     if (file) then
  34.     local text = fileRead(file, getScriptEnd(file))
  35.     triggerClientEvent(client, "return_script_open", client, text)
  36.     fileClose(file)
  37.     end
  38. end
  39. addEvent("reload_script", true)
  40. addEventHandler("reload_script", rootElement, reload_script)
  41.  
  42. function save_script(client, path, text)
  43.   local resName = getResNameFromPath(path)
  44.   local file = fileCreate(":"..path, resName)
  45.   if (file) then
  46.     fileWrite(file, text)
  47.     fileClose(file)
  48.     triggerClientEvent(client, "return_message", client, "Information: Script Saved!", 0, 255, 0)  
  49.   if (resName) and get("restart_resource") == "true" then restartResource(getResourceFromName(resName)) end
  50.   else
  51.     triggerClientEvent(client, "return_message", client, "Error: Couldn't save the script!", 255, 0, 0)
  52.   end
  53. end
  54. addEvent("save_script", true)
  55. addEventHandler("save_script", rootElement, save_script)
  56.  
  57. function open_script(client, path)
  58.   triggerClientEvent(client, "return_message", client, "Information: Script is loading...", 0, 255, 0)
  59.   local file = fileOpen(":"..path, true)
  60.   if (file) then
  61.     local text = fileRead(file, getScriptEnd(file))
  62.     triggerClientEvent(client, "return_message", client, "Information: Script loaded!", 0, 255, 0)
  63.     triggerClientEvent(client, "return_script_open", client, text)
  64.     fileClose(file)
  65.   else
  66.     triggerClientEvent(client, "return_message", client, "Error: Script couldn't be loaded!", 255, 0, 0)
  67.   end    
  68. end
  69. addEvent("open_script", true)
  70. addEventHandler("open_script", rootElement, open_script)
  71.  
  72. function getAllResources(client)
  73.     local resources = getResources()
  74.     for i,v in ipairs(resources) do
  75.         local name = getResourceName(v)
  76.         triggerClientEvent(client,"return_resources",client,name)
  77.     end
  78. end
  79. addEvent("get_resources", true)
  80. addEventHandler("get_resources", rootElement, getAllResources)
  81.  
  82. function getResourceContent(client,resName)
  83.     if getResourceFromName(resName) then
  84.         local file = xmlLoadFile(":"..resName.."/meta.xml")
  85.         local child = xmlNodeGetChildren(file)
  86.         for i,v in ipairs(child) do
  87.             if xmlNodeGetName(v) == "script" then
  88.             local src = xmlNodeGetAttribute(v,"src")
  89.             triggerClientEvent(client,"return_content",client,src)
  90.             end
  91.         end
  92.         xmlUnloadFile(file)
  93.     end
  94. end
  95. addEvent("get_content", true)
  96. addEventHandler("get_content", rootElement, getResourceContent)
  97.  
  98. function open_script_browser(client, resName, scriptName)
  99.   triggerClientEvent(client, "return_message", client, "Information: Script is loading...", 0, 255, 0)
  100.   local file = fileOpen(":"..resName.."/"..scriptName,true)
  101.   if (file) then
  102.     local text = fileRead(file, getScriptEnd(file))
  103.     triggerClientEvent(client, "return_message", client, "Information: Script loaded!", 0, 255, 0)
  104.     triggerClientEvent(client, "return_script_open", client, text)
  105.     fileClose(file)
  106.     outputDebugString(getPlayerName(client) .." opened resource ".. resName .." and script ".. scriptName .."!")
  107.   else
  108.     triggerClientEvent(client, "return_message", client, "Error: Script couldn't be loaded!", 255, 0, 0)
  109.   end    
  110. end
  111. addEvent("open_script_browser", true)
  112. addEventHandler("open_script_browser", rootElement, open_script_browser)
  113.  
  114. function create_resource(client,resourceName,name,author,description,version,type,clientSide,serverSide)
  115. if not getResourceFromName(tostring(resourceName)) then
  116. local resource = createResource ( tostring(resourceName) )
  117. if ( resource ) then
  118. outputChatBox("Resource ".. tostring(resourceName) .." created!",client,0,255,0)
  119. setResourceInfo ( resource, "name", tostring(name) )
  120. setResourceInfo ( resource, "author", tostring(author) )
  121. setResourceInfo ( resource, "description", tostring(description) )
  122. setResourceInfo ( resource, "version", tostring(version) )
  123. setResourceInfo ( resource, "type", tostring(type) )
  124. if clientSide == "" then
  125. clientSide = "client"
  126. end
  127. if serverSide == "" then
  128. serverSide = "server"
  129. end
  130. local meta = xmlLoadFile( ":"..getResourceName(resource).."/meta.xml" )
  131. if meta then
  132. local client_root = xmlCreateChild (meta,"script")
  133. local server_root = xmlCreateChild (meta,"script")
  134. xmlNodeSetAttribute(client_root, "src", tostring(clientSide) .. ".lua")
  135. xmlNodeSetAttribute(client_root, "type", "client")
  136. xmlNodeSetAttribute(server_root, "src", tostring(serverSide) .. ".lua")
  137. xmlNodeSetAttribute(server_root, "type", "server")
  138. xmlSaveFile(meta)
  139. xmlUnloadFile(meta)
  140. file_client = fileCreate(":".. getResourceName(resource) .."/"..tostring(clientSide)..".lua", resName)
  141. file_server = fileCreate(":".. getResourceName(resource) .."/"..tostring(serverSide)..".lua", resName)
  142. fileClose(file_client)
  143. fileClose(file_server)
  144. end
  145. end
  146. end
  147. end
  148. addEvent("create_resource", true)
  149. addEventHandler("create_resource", rootElement, create_resource)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement