Hey leute, ich habe heute was kleines entwickelt aus Langeweile ich weiß nicht ob es euch auch manchmal so geht
wen ihr mal was in einer LUA-Testen wollt aber nicht immer überall diese ganzen Extra-Ordner erstellen wollt und dann liegen die Datein rum
und man muss sie immer dann Leeren weil man ja nur Test's machen wollte mit denen.
Da mir das jetzt nach langer zeit ein wenig an den Rand gegangen ist habe ich was kleines Entwickelt ich nenne es: Test-System.
Mit diesen "Test-System" kann man Datein in einen Temp Ordner einfügen diese muss man nur in der meta.xml einfügen man kann alle Datein die im /temp Ordner sind auch in Unterordner machen usw. sie müssen aber in den /temp/... Ordner also das Hauptverzeichnis und in der meta.xml müssen diese Datein eingetragen sein.
Bis jetzt hört es sich nach nichts Besonderen an außer das ihr es in einen anderen Ordner macht jetzt kommt aber mein System ins Spiel.
Und zwar erleichtert es euch folgende dinge:
- Speicherung mit direkter meta.xml Erstellung.
- Leerung vom /temp Ordner und entfernung aus der meta.xml der Nodes.
Alles natürlich Automatisch.
Ich möchte es mit ein paar Screen euch ein wenig näher bringen.
Bedeutet mit
/savetemp [Verzeichnisname]
Kann man die sachen aus dem /temp Ordner in savedata mit dem [Verzeichnisnamen] abspeichern.
/cleartemp
Löscht alle Datein aus dem /temp Ordner und trägt diese aus der Haupt meta.xml aus.
Ich hoffe ich kann euch hier mit auch ein paar Sachen ersparen
Unten im Ahnhang findet ihr den Download-Link.
Den Sourcecode vom Savesystem.lua kriegt ihr in dem Spoiler.
Spoiler anzeigen
function saveTempFiles(player, cmd, resourcename) if(resourcename and #resourcename > 0)then print("Verzeichnis wird erstellt und Datein eingefuegt..."); else print("Verzeichnis Name ist Ungueltig bitte geben sie ein /savedata [Verzeichnisname] ein!"); return; end local temp = {}; local file = xmlLoadFile("meta.xml"); if(file)then local child = xmlNodeGetChildren(file); local xmlFile = xmlCreateFile("savedata/"..resourcename.."/meta.xml", "meta"); for key, data in pairs(child) do local node = xmlNodeGetName(data); local attr = xmlNodeGetAttribute(data, 'src'); -- Script local type = xmlNodeGetAttribute(data, 'type'); -- Type if(type or node == 'file')then if(attr:find('temp'))then temp[key] = {}; temp[key]["filePath"] = attr; temp[key]["fileTemp"] = fileOpen(temp[key]["filePath"], false); temp[key]["filePathCopy"] = temp[key]["filePath"]:sub(6, #temp[key]["filePath"]); if(node == 'script')then --[[ Scripts ]]-- nodeCopy = xmlCreateChild(xmlFile, "script"); xmlNodeSetAttribute(nodeCopy, "src", temp[key]["filePathCopy"]); xmlNodeSetAttribute(nodeCopy, "type", type); elseif(node == 'file')then --[[ Files ]]-- nodeCopy = xmlCreateChild(xmlFile, "file"); xmlNodeSetAttribute(nodeCopy, "src", temp[key]["filePathCopy"]); end fileCopy(temp[key]["filePath"], "savedata/"..resourcename.."/"..temp[key]["filePathCopy"], true); print("Create Temp-File in Savedata: "..temp[key]["filePath"]); end end end xmlSaveFile(xmlFile); xmlUnloadFile(file); endendaddCommandHandler("savetemp", saveTempFiles)function clearTempFiles() local temp = {}; local nodeval = 0; local file = xmlLoadFile("meta.xml"); if(file)then local child = xmlNodeGetChildren(file); for key, data in pairs(child) do local node = xmlNodeGetName(data); local attr = xmlNodeGetAttribute(data, 'src'); -- Script local type = xmlNodeGetAttribute(data, 'type'); -- Type if(type or node == 'file')then if(attr:find('temp'))then fileDelete(attr); print("Delete Temp-File: "..attr); while (xmlFindChild(file, node, nodeval)) do nodeAttrs = xmlNodeGetAttributes(xmlFindChild(file, node, nodeval)); if(nodeAttrs.src:find('temp/'))then nodeDelete = xmlFindChild(file, node, nodeval) xmlDestroyNode(nodeDelete); end nodeval = nodeval + 1; end end end end xmlSaveFile(file); endendaddCommandHandler("cleartemp", clearTempFiles);
Mfg
MulTi