[MTALuaCompiler] Alle Dateien in Ordnern kompilieren

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [MTALuaCompiler] Alle Dateien in Ordnern kompilieren

      Hey,
      habe gerade einiges an TDS angepasst und keine Lust nun alle Dateien einzeln zu compilen.
      Deshalb habe ich ein kleine Programm geschrieben, was den luac_mta.exe nutzt, um alle Dateien in einem Ordner zu compilen.

      Habe es eigentlich für den eigenen Gebrauch geschrieben, damit ich am TDS Gamemode arbeiten kann ohne dauerhaft die Dateien compilen zu müssen.
      Damit es auch andere bei Bedarf nutzen können, hier das Programm:

      github.com/emre1702/MTALuaCompiler
      Einfach die Readme.md lesen.
      Mein Discord:
      discord.gg/Kpm3CYB

      Nächstes Projekt auf nan0s-w0rld

      Miitglied der denismit1n Gruppe mit 6 Ehre
    • Warum nicht einfach die API nutzen und beim Serverstart die Dateien automatisch kompilieren lassen ?
      Ist doch viel einfacher.

      Edit://

      Hier mal ein Beispiel, wie ich mein Compiler geschrieben habe:

      LUA-Quellcode

      1. cServerCompiler = {};
      2. function cServerCompiler:constructor()
      3. -- SETTINGS --
      4. self.bActive = true;
      5. self.bEncrypt = true;
      6. self.bAntiDecompile = true;
      7. if (self.bActive) then
      8. self:compileAll();
      9. end
      10. end
      11. function cServerCompiler:compileAll()
      12. local uMeta = xmlLoadFile("meta.xml");
      13. if (uMeta) then
      14. local iIndex = 0;
      15. local uNode = xmlFindChild(uMeta, "script", iIndex);
      16. if (uNode) then
      17. repeat
      18. local strPath = xmlNodeGetAttribute(uNode, "src") or false;
      19. local strType = xmlNodeGetAttribute(uNode, "type") or "server";
      20. if (strPath) then
      21. if not string.find(strPath:lower(), "luac") then
      22. local strFrom = strPath;
      23. local strTo = strPath.."c";
      24. local iAntiDecompile = 0;
      25. local iEncrypt = 0;
      26. if (self.bEncrypt) then
      27. iEncrypt = 1;
      28. end
      29. if (self.bAntiDecompile) then
      30. iAntiDecompile = 1;
      31. end
      32. local function loadFile(strFrom)
      33. return self:loadFile(strFrom);
      34. end
      35. fetchRemote("http://luac.mtasa.com/?compile=1&debug=0&blockdecompile="..(iAntiDecompile).."&encrypt="..(iEncrypt), function(strData)
      36. self:saveFile(strTo, strData);
      37. end, loadFile(strFrom), true);
      38. xmlNodeSetAttribute(uNode, "src", strPath.."c");
      39. fileDelete(strPath);
      40. end
      41. end
      42. iIndex = iIndex + 1;
      43. uNode = xmlFindChild(uMeta, "script", iIndex);
      44. until not uNode;
      45. end
      46. xmlSaveFile(uMeta);
      47. xmlUnloadFile(uMeta);
      48. end
      49. end
      50. function cServerCompiler:loadFile(strPath)
      51. local uFile = fileOpen(strPath, true);
      52. if (uFile) then
      53. local uData = fileRead(uFile, 500000000);
      54. fileClose(uFile);
      55. return uData;
      56. end
      57. end
      58. function cServerCompiler:saveFile(strPath, strData)
      59. local uFile = fileCreate(strPath);
      60. if (uFile) then
      61. fileWrite(uFile, strData);
      62. fileClose(uFile);
      63. end
      64. end
      65. addEventHandler("onResourceStart", resourceRoot, bind(new, cServerCompiler))
      Alles anzeigen
    • Klar, ist auch möglich.
      Aber in meinem Fall ist es nicht einfach, da ich MTA hierbei gar nicht nutze, die nicht-kompilierten Dateien lokal und nicht auf dem Server wären (habe keinen Vorteil davon die normalen Dateien da hochzuladen) und ich das Tool für mehrere Scripts nutze.
      Da ist es für mich um ein vielfaches einfacher das Programm zu starten und auf dem Pfad auszuführen.

      Außerdem brauche ich mit dem Programm nicht wirklich ALLE Dateien zu compilen, sondern kann auch einzelne Ordner im Gamemode nutzen.
      Mein Discord:
      discord.gg/Kpm3CYB

      Nächstes Projekt auf nan0s-w0rld

      Miitglied der denismit1n Gruppe mit 6 Ehre
    • Bonus schrieb:

      Klar, ist auch möglich.
      Aber in meinem Fall ist es nicht einfach, da ich MTA hierbei gar nicht nutze, die nicht-kompilierten Dateien lokal und nicht auf dem Server wären (habe keinen Vorteil davon die normalen Dateien da hochzuladen) und ich das Tool für mehrere Scripts nutze.
      Da ist es für mich um ein vielfaches einfacher das Programm zu starten und auf dem Pfad auszuführen.

      Außerdem brauche ich mit dem Programm nicht wirklich ALLE Dateien zu compilen, sondern kann auch einzelne Ordner im Gamemode nutzen.
      War ja auch nur ein Beispiel, das man auch variabel einstellen lassen. Geht hier lediglich um das fetchen.
      Wenn du jedoch MTA gar nicht nutzt, warum dann überhaupt Scripts kompilieren ?
    • INCepted schrieb:

      Bonus schrieb:

      Klar, ist auch möglich.
      Aber in meinem Fall ist es nicht einfach, da ich MTA hierbei gar nicht nutze, die nicht-kompilierten Dateien lokal und nicht auf dem Server wären (habe keinen Vorteil davon die normalen Dateien da hochzuladen) und ich das Tool für mehrere Scripts nutze.
      Da ist es für mich um ein vielfaches einfacher das Programm zu starten und auf dem Pfad auszuführen.

      Außerdem brauche ich mit dem Programm nicht wirklich ALLE Dateien zu compilen, sondern kann auch einzelne Ordner im Gamemode nutzen.
      War ja auch nur ein Beispiel, das man auch variabel einstellen lassen. Geht hier lediglich um das fetchen.Wenn du jedoch MTA gar nicht nutzt, warum dann überhaupt Scripts kompilieren ?
      [Verkaufe] TDS SA Gamemode

      Und das Compilen nutze ich eben auch, um mögliche Zeichensetzungsfehler o.ä. sofort zu erkennen.
      Mein Discord:
      discord.gg/Kpm3CYB

      Nächstes Projekt auf nan0s-w0rld

      Miitglied der denismit1n Gruppe mit 6 Ehre
    • Neu

      Jungens, es gibt zig Möglichkeiten, bitte hört auf weitere aufzulisten.
      Ich verkaufe kein Programm, ich stelle es nur denen zur Verfügung, die einfach mal schnell ohne weiteres alle Dateien in einem Ordner compilen wollen, so wie ich es wollte.
      Dass es auf Dauer nicht die beste Lösung ist, weiß ich selber, habe genug Erfahrung und arbeite im .NET Umfeld in einer einigermaßen großen Firma.

      Das Programm wurde in wenigen Minuten auf eine einfache Weise geschrieben, es soll kein Meisterwerk sein, sondern genau eine einfache Aufgabe erfüllen, Ende.
      Mein Discord:
      discord.gg/Kpm3CYB

      Nächstes Projekt auf nan0s-w0rld

      Miitglied der denismit1n Gruppe mit 6 Ehre