From 068834a51157b108fe7df7ed9990177cba6c68a1 Mon Sep 17 00:00:00 2001 From: thisdp <30386052+thisdp@users.noreply.github.com> Date: Fri, 5 Mar 2021 18:58:14 +0800 Subject: [PATCH] xmlLoadString Compatibility --- G2DManager_s.lua | 30 +++++++++++++++++++++++++++--- server.lua | 2 +- update.lua | 21 ++++++++++++++++++++- 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/G2DManager_s.lua b/G2DManager_s.lua index b5575afd..1469f756 100644 --- a/G2DManager_s.lua +++ b/G2DManager_s.lua @@ -1,4 +1,26 @@ - +xmlLoadStr = _G["xmlLoad".."String"] +if not xmlLoadStr then + tempXmlLogger = {count=0} + xmlLoadStr = function(str) + local tick = tempXmlLogger.count + tempXmlLogger.count = tempXmlLogger.count+1 + local xmlFile = fileCreate("g2dCrawlTmp_"..tick..".xml") + fileWrite(xmlFile,str) + fileClose(xmlFile) + local xml = xmlLoadFile("g2dCrawlTmp_"..tick..".xml") + tempXmlLogger[xml] = {path="g2dCrawlTmp_"..tick..".xml"} + return xml + end + xmlReleaseTempFiles = function(xml) + if tempXmlLogger[xml] then + xmlUnloadFile(xml) + fileDelete(tempXmlLogger[xml].path) + tempXmlLogger[xml] = nil + end + end +else + xmlReleaseTempFiles = function() end +end local function tableCount(tabl) local cnt = 0 @@ -498,7 +520,7 @@ function CrawlWikiFromMTA(t) liEnd_1,liEnd_2 = string.find(data,"%<%/li%>",startPos) if not liStart_1 or not liEnd_1 then break end local str = string.sub(data,liStart_2+1,liEnd_1-1) - local xmlNode = xmlLoadString(str) + local xmlNode = xmlLoadStr(str) local fncName = xmlNodeGetValue(xmlNode) local nTable = { href=xmlNodeGetAttribute(xmlNode,"href"), @@ -508,6 +530,7 @@ function CrawlWikiFromMTA(t) } table.insert(fncList,nTable) startPos = liEnd_2 + xmlReleaseTempFiles(xmlNode) end print("[DGS]Function list("..#fncList..") is ready, Crawling...") local fRProg = {thread=0,index=0,valid=0,progress=0,total=#fncList} @@ -537,8 +560,9 @@ function CrawlWikiFromMTA(t) local startPos = data:find("%",startPos) local line = data:sub(startPos,endPos) - local xmlNode = xmlLoadString(line) + local xmlNode = xmlLoadStr(line) local pageSource = xmlNodeGetValue(xmlNode) + xmlReleaseTempFiles(xmlNode) local _,rangeStart = pageSource:find("==Syntax==") local _,syntaxStart = pageSource:find("%",rangeStart+1) local syntaxEnd = pageSource:find("%<%/syntaxhighlight%>",syntaxStart+1) diff --git a/server.lua b/server.lua index c44b032a..fa16fff3 100644 --- a/server.lua +++ b/server.lua @@ -68,7 +68,7 @@ setElementData(root,"DGS-ResName",getResourceName(getThisResource())) -----------About DGS addEventHandler("DGSI_RequestAboutData",resourceRoot,function() - if getVersion().sortable < "1.5.7-9.19626" then return outputChatBox("[DGS]Your server version is outdated upgrade to 1.5.7-9.19626 or higher",player,255,255,0) end + if not checkServerVersion(player) then return end fetchRemote("https://raw.githubusercontent.com/thisdp/dgs/master/README.md",{},function(data,info,player) triggerClientEvent(player,"DGSI_SendAboutData",resourceRoot,data) end,{client}) diff --git a/update.lua b/update.lua index 43352751..e65e86c4 100644 --- a/update.lua +++ b/update.lua @@ -50,13 +50,32 @@ function checkUpdate() end) end +function checkServerVersion(player) + if getVersion().sortable < "1.5.9-9.11342" then + if player then + local acc = getPlayerAccount(player) + if acc and getAccountName(acc) == "Console" then + outputDebugString("[DGS]Your server version is outdated upgrade to 1.5.4-9.11342 or higher",2) + else + outputChatBox("[DGS]Your server version is outdated upgrade to 1.5.4-9.11342 or higher",player,255,255,0) + end + return false + else + outputDebugString("[DGS]Your server version is outdated upgrade to 1.5.4-9.11342 or higher",2) + return false + end + end + return true +end + if dgsConfig.updateCheckAuto then + if not checkServerVersion() then return end checkUpdate() updatePeriodTimer = setTimer(checkUpdate,dgsConfig.updateCheckInterval*3600000,0) end addCommandHandler("updatedgs",function(player) - if getVersion().sortable < "1.5.7-9.19626" then return outputChatBox("[DGS]Your server version is outdated upgrade to 1.5.7-9.19626 or higher",player,255,255,0) end + if not checkServerVersion(player) then return end local account = getPlayerAccount(player) local isPermit = hasObjectPermissionTo(player,"command.updatedgs") if not isPermit then