ArmA 3 Workshop Mods auf Server verwalten leicht gemacht.

    • Tut- Complete

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

    • ArmA 3 Workshop Mods auf Server verwalten leicht gemacht.

      Neu

      Hiermit präsentiere ich euch ein nettes Script, was ich für euch geschrieben habe um kinderleicht Workshop Mods direkt auf eurem Root Server herunterzuladen und automatisch den gewünschten Modordnername zu vergeben. Es ist also für Repo Verwaltung von Mods, die speziell nur im Workshop verfügbar sind gedacht, um euch ein Mühsamens runter- und hochladen zu ersparen.


      Voraussetzung für dieses batch-Script ist:
      1. Steam Account mit einer Arma 3 Lizenz.
      2. Ein Windows Betriebsystem auf dem das Batch Script ausgeführt werden kann.

      Funktionen des Scripts:
      1. Login in Steam mit euren Zugangsdaten
      2. "DownloadFolder" Festlegung des Zwischenspeichers (Muss vorhanden sein für Steam)
      3. "FinalPath" Festlegung des entgültigen Verzeichnisses wo ihr eure Mods haben wollt.
      4. Festlegung des Ordners der Steamcmd.exe
      5. Auflistung der Mod ID Nummern (Reihenfolge ist wichtig!)
      6. Setzen der Modordnernamen für die oben eingegebenen IDs (Reihenfolge beachten!)
      7. Herunterladen der Mods in gegebener Reihenfolge.
      8. Umbennnen der Ordner in den von euch in 5. angegebenen Ordnernamen
      9. Kopieren der umbenannten Ordner in das FinalPath-Verzeichnis
      10. Löschen der Quellordner (von Steam angelegt)
      11. Löschen einer .acf datei die ein erneutes Herunterladen verhindert.

      Hier ersteinmal der Quellcode. Diesen Kopiert ihr in eine leere .cmd Datei:

      Shell-Script

      1. @echo off
      2. REM Hier die Steam Logindaten Eintragen!
      3. SET STEAMLOGIN=BENUTZERNAME PASSWORT
      4. REM DownloadFolder bezeichnet den Ordner wo die Mods später reingeladen werden
      5. REM FinalPath ist der entgültige Ordner wo die Mods am Ende hin sollen.
      6. REM Steampath ist der Ordner wo eure steamcmd.exe drin ist.
      7. SET DownloadFolder=C:\ArmA3\Repositorys\workshop_temp
      8. SET FinalPath=C:\ArmA3\Repositorys\Workshop_Mods
      9. SET STEAMPATH="C:\Users\Administrator\Desktop\steam"
      10. REM Hier könnt ihr beliebig viele Mod IDs hinterlegen. Beachtet dabei bitte das Schema
      11. echo Setzen der Mod-IDs...
      12. SET MOD1=1115612632
      13. SET MOD2=815366548
      14. SET MOD3=970709033
      15. REM Hier könnt ihr beliebige Name für die Modordner festlegen.
      16. echo Setzen der Modordner
      17. SET MODNAME1=@XYZ
      18. SET MODNAME2=@Beispiel
      19. SET MODNAME3=@ACRE
      20. :: _________________________________________________________
      21. echo.
      22. echo Du bist gerade dabei Workshop Mods für ArmA herunterzuladen
      23. echo Dir: %DownloadFolder%
      24. echo
      25. echo.
      26. echo Key "ENTER" to proceed
      27. pause
      28. echo.
      29. echo.
      30. echo.
      31. REM Hier könnt ihr soviele Mods wie ihr wollt laden.
      32. REM Kopiert einfach die nächsten 4 Zeilen und fügt sie etwas weiter unten ein.
      33. REM Beachtet bitte dabei das übereinstimmend die %MODX% mit der jeweiligen oben angegebenen ID passt.
      34. echo %MODNAME1% wird heruntergeladen...
      35. %STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %DownloadFolder% +workshop_download_item 107410 %MOD1% validate +quit
      36. echo.
      37. echo.
      38. echo %MODNAME2% wird heruntergeladen...
      39. %STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %DownloadFolder% +workshop_download_item 107410 %MOD2% validate +quit
      40. echo.
      41. echo.
      42. echo %MODNAME3% wird heruntergeladen...
      43. %STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %DownloadFolder% +workshop_download_item 107410 %MOD3% validate +quit
      44. echo.
      45. echo.
      46. echo.
      47. echo.
      48. REM Hier werden die Ordner nurnoch euren Bedürfnissen entsprechend umbenannt.
      49. echo.
      50. echo Modordner werden umbenannt...
      51. echo.
      52. RENAME %DownloadFolder%\steamapps\workshop\content\107410\%MOD1% %MODNAME1%
      53. RENAME %DownloadFolder%\steamapps\workshop\content\107410\%MOD2% %MODNAME2%
      54. RENAME %DownloadFolder%\steamapps\workshop\content\107410\%MOD3% %MODNAME3%
      55. echo.
      56. echo Modordner wurden erfolgreich umbenannt!
      57. echo.
      58. XCOPY /Y %DownloadFolder%\steamapps\workshop\content\107410\%MODNAME1% %FinalPath%\%MODNAME1%\ /E /S
      59. XCOPY /Y %DownloadFolder%\steamapps\workshop\content\107410\%MODNAME2% %FinalPath%\%MODNAME2%\ /E /S
      60. XCOPY /Y %DownloadFolder%\steamapps\workshop\content\107410\%MODNAME3% %FinalPath%\%MODNAME3%\ /E /S
      61. RD /S /Q %DownloadFolder%\steamapps\workshop\content\107410\%MODNAME1%
      62. RD /S /Q %DownloadFolder%\steamapps\workshop\content\107410\%MODNAME2%
      63. RD /S /Q %DownloadFolder%\steamapps\workshop\content\107410\%MODNAME3%
      64. REM Diese Dateien müssen gelöscht werden, damit es IMMER zu einem erzwungenen Download der Mods kommt.
      65. echo Löschen der ACF Datei...
      66. del %DownloadFolder%\steamapps\workshop\*.ACF
      67. echo Fertig!
      68. echo.
      69. echo.
      70. echo.
      71. echo.
      72. echo Deine Arma 3 Workshop Mods wurden erfolgreich heruntergeladen und umbenannt!
      73. echo key "ENTER" to exit
      74. pause
      Alles anzeigen
      Es ist im Prinzip ganz einfach:
      Benutzername und Passwort eines Steam Accounts verwenden, der ArmA 3 besitzt. Dann nehmt Ihr den Quellcode und passt dort eure eigenen Ordnerpfade bei den SET Befehlen selbst an. Dann könnt ihr eure jeweiligen Workshop IDs setzen. Da könnt ihr einfach soviele IDs hinterlegen wie ihr wollt, beachtet aber die Syntax und die Reihenfolge.
      Alle Befehle, die sich in dem Script hintereinander wiederholen, können kopiert und für weitere Mods verwendet werden. Beachtet bitte hierbei das ihr dort nur die jeweiligen Dinge ändern müsst wie: %MODNAME4% und %MOD4%. Alles andere Entspricht euren Angegebenen Pfaden oder ist notwendig, damit SteamCMD arbeiten kann.

      Der Rest ist denke ich selbst erklärend.

      Ich stehe gerne für Fragen zur Verfügung und wünsche euch viel Spaß mit dem Script und ein angenehmes Verwalten der Workshop Mods für eure Repos.

      Mit freundlichen Grüßen

      Liquidblaze
      Tactical Corporation, ein ArmA 3 Projekt, dass Communitys zusammenschweißt: tac-corp.de/forum/

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LiquidBlaze ()

    • Neu

      Achja, wenn ihr mir noch einen kleinen Gefallen tun möchtet: Ich freue mich über Feedback, ob alles wie gewünscht funktioniert hat bzw. ob bei euch Probleme aufgetreten sind. Ich habe es bisher nur auf unserem Root Server getestet und dort kam es zu keinen Fehlermeldungen und alles lief.

      Mit freundlichen Grüßen

      LiquidBlaze
      Tactical Corporation, ein ArmA 3 Projekt, dass Communitys zusammenschweißt: tac-corp.de/forum/
    • Neu

      Moin,

      ich hab zwar das Script nicht getestet aber ein paar Anregungen:

      Anstelle pro Mod die Befehle auszuführen, könnte man das in einer Schleife laufen lassen (das verrringert auch den Aufwand wenn ein neuer Mod hinzu kommt und hält das Script sauber)
      Aktuell sind es pro Mod 5 Befehle (es sei denn ich habe mich verzählt) - bei 5 Mods sind es dann 25 usw. Bei einer Schleife bleiben es 5 Befehle - egal wie viele Mods du hast.


      Und naja Offtopic: Warum Batch und nicht Powershell?
      Cuiusvis hominis est errare, nullius nisi insipientis perseverare in errore.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Yoshi ()

    • Neu

      LiquidBlaze schrieb:

      Achja, wenn ihr mir noch einen kleinen Gefallen tun möchtet: Ich freue mich über Feedback, ob alles wie gewünscht funktioniert hat bzw. ob bei euch Probleme aufgetreten sind. Ich habe es bisher nur auf unserem Root Server getestet und dort kam es zu keinen Fehlermeldungen und alles lief.

      Mit freundlichen Grüßen

      LiquidBlaze
      Ich werde es am Wochenende testen
    • Neu

      Das Problem ist: Steam erzwingt einen Downloadordner im Format: \steamapps\workshop\content\10471\173747224
      Der Pfad ist leider automatisch durch Steam beschränkt. Auch die Ordnernamen entsprechen den Workshop IDs weshalb ein umbenennen zwingend notwendig ist. Daher habe ich die automatische Umbenennung unf verschiebung eingebaut. Du kannst natürlich den FinalPath direkt in dein Repo setzen so dass es direkt im richtigen Ordner landet.

      Ich werde mich aber dennoch mit den symlinks ausseinandersetzen. Es ist ja nur die erste Version. :)
      Tactical Corporation, ein ArmA 3 Projekt, dass Communitys zusammenschweißt: tac-corp.de/forum/
    • Neu

      @Yoshi ich schaue mal ob man nicht für jede Mod eine Datei erstellt die einfach im Namen bereits ID und Ordnernamen enthält de dann automatisch erkannt und eingebunden werden. Ansonsten sind es nur meine ersten Schritte in Batch. Ich werde mich mal mit schleifen ausseinandersetzen. Vielleicht sogar eine eigene "Datenbank".txt in der IDs und Ordnernamen stehen die dann über ein Batch Menü ausgewählt und einzeln geupdated werden.
      Tactical Corporation, ein ArmA 3 Projekt, dass Communitys zusammenschweißt: tac-corp.de/forum/
    • Neu

      Ich konnte mich mit Batch noch nicht so richtig anfreunden, daher hatte ich selbst auch die Idee wie du aber ich habe das ganze auf Python aufgebaut. Man braucht lediglich mehr oder minder nur Python auf dem Root zu installieren und man kann .py Dateien wie eine .bat oder .cmd aufrufen. Auch ist der Syntax teilweise etwas einfacher zu verstehen als bei Batch.

      Auch verwende ich einen anderen Weg als du, ich benenne den Ordner nicht um, sonder ich erstelle einen Symbolischen link, somit erspare ich mir dass erneute Runterladen des kompletten Mods, was zwar bei einem Root nicht zwingend nötig ist, aber doch unter Umständen Zeit sparen kann. Ich bin aber was Python angeht auch noch ein Anfänger, aber vielleicht kannst du aus meinen Script etwas für dich in dein Batch-Script übernehmen.

      Python-Quellcode: Arma3_WSUpdater.py

      1. import os
      2. #Default Settings
      3. steamCmdPath = 'C:\\steamcmd\\'
      4. steamCmdExe = 'steamcmd.exe'
      5. steamAppId = '107410'
      6. finalModPath = 'C:\\files\\repo_create\\workshop\\'
      7. #Login
      8. steamUser = 'userName'
      9. steamPass = 'userPassword'
      10. #Mods to Download
      11. steamMods = [
      12. ['623475643','@3den'],
      13. ['463939057','@ace3'],
      14. ['708250744','@acex'],
      15. ['751965892','@acre2'],
      16. ['620260972','@alive'],
      17. ['723217262','@ares'],
      18. ['713709341','@advanced_rappelling'],
      19. ['730310357','@advanced_urban_rappelling'],
      20. ['870276636','@bwa3'],
      21. ['870313336','@bwa3_ace'],
      22. ['835394852','@bw_kleiderkammer'],
      23. ['450814997','@cba_a3'],
      24. ['583496184','@cup_terrains_core'],
      25. ['583544987','@cup_terrains_maps'],
      26. ['853743366','@cup_terrains_cwa'],
      27. ['820994401','@ffaa'],
      28. ['792383905','@ffaa_ace'],
      29. ['909547724','@lythium'],
      30. ['520618345','@jbad'],
      31. ['1128145626','@red_n_tank'],
      32. ['753946944','@murshun_cigs'],
      33. ['421620913','@kunduz'],
      34. ['735566597','@project_opfor'],
      35. ['825179978','@lax_es'],
      36. ['825181638','@lax_ds2'],
      37. ['721359761','@vcomai']
      38. ]
      39. def fnc_modDownload(ModId, ModDir):
      40. steamModId = ModId
      41. finalModDir = ModDir
      42. cmdCommand = (steamCmdPath+steamCmdExe+' +login '+steamUser+' '+steamPass+' +"workshop_download_item '+steamAppId+' '+steamModId+'" validate +quit')
      43. symbolicLink = ('mklink /J "'+finalModPath+finalModDir+'" "'+steamCmdPath+'steamapps\\workshop\\content\\'+steamAppId+'\\'+steamModId+'"')
      44. print(
      45. '-- Verify final command --\n'
      46. 'AppId: '+steamAppId+'\n'
      47. 'ModId: '+steamModId+'\n'
      48. 'Mod Directory: '+finalModDir+'\n'
      49. 'SteamCmd command: '+cmdCommand+'\n'
      50. 'Symbolic link command: '+symbolicLink+'\n'
      51. '--- End of verification ---\n'
      52. )
      53. #Ask if the Update should be started
      54. runCode = input('Continue? y or n: ')
      55. if runCode == 'y':
      56. os.system(cmdCommand)
      57. symLink = input('Create symbolic link? y or n (default: n): ')
      58. #Ask if a SymbolicLink should be created
      59. if symLink == 'y':
      60. os.system(symbolicLink)
      61. print('Symbolic link created \n')
      62. else:
      63. print('No symbolic link created \n')
      64. else:
      65. print('No Update')
      66. for Mods in steamMods:
      67. fnc_modDownload(*Mods)
      68. input('Hit a key to exit')
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von sancron ()

    • Neu

      Um an diese Python Idee anzuknüpfen,
      bei uns läuft ein ähnliches Skript als Cronjob welches einen neuen Download startet sobald sich die Versionsnummer auf dem Server und im Workshop unterscheiden.

      Um einen Mod neu zu installieren reicht es aus diesen zu einer Collection hinzufügen, das Skript fragt diese ab und startet den Download.