Jump to content

Search the Community

Showing results for tags 'python'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • BOHEMIA INTERACTIVE
    • BOHEMIA INTERACTIVE - NEWS
    • BOHEMIA INTERACTIVE - JOBS
    • BOHEMIA INTERACTIVE - GENERAL
  • FEATURED GAMES
    • Vigor
    • DAYZ
    • ARMA 3
    • ARMA 2
    • YLANDS
  • MOBILE GAMES
    • ARMA MOBILE OPS
    • MINIDAYZ
    • ARMA TACTICS
    • ARMA 2 FIRING RANGE
  • BI MILITARY GAMES FORUMS
  • BOHEMIA INCUBATOR
    • PROJECT LUCIE
  • OTHER BOHEMIA GAMES
    • ARGO
    • TAKE ON MARS
    • TAKE ON HELICOPTERS
    • CARRIER COMMAND: GAEA MISSION
    • ARMA: ARMED ASSAULT / COMBAT OPERATIONS
    • ARMA: COLD WAR ASSAULT / OPERATION FLASHPOINT
    • IRON FRONT: LIBERATION 1944
    • BACK CATALOGUE
  • OFFTOPIC
    • OFFTOPIC
  • ArmA Toolmakers's Releases
  • ArmA Toolmakers's General
  • Die Hard OFP Lovers' Club's Topics
  • Japan in Arma's Topics
  • Arma 3 Photography Club's Discussions
  • The Order Of the Wolfs- Unit's Topics
  • 4th Infantry Brigade's Recruitment
  • 11th Marine Expeditionary Unit OFFICIAL | 11th MEU(SOC)'s 11th MEU(SOC) Recruitment Status - OPEN
  • Legion latina semper fi's New Server Legion latina next wick
  • Legion latina semper fi's https://www.facebook.com/groups/legionlatinasemperfidelis/
  • Legion latina semper fi's Server VPN LEGION LATINA SEMPER FI
  • Team Nederland's Welkom bij ons club
  • Team Nederland's Facebook
  • [H.S.O.] Hellenic Special Operations's Infos

XBOX Live


PlayStation PSN


Origin


PlayFire


SoundCloud


Pinterest


Reddit


Twitch.Tv


Ustream.Tv


Duxter


Instagram


Location


Interests


Interests


Occupation

Found 3 results

  1. Hey Guys, I made a python script to automate updating my server and figured I'd share. I've only tested it on Python 3.6 but I think it would work for any version. Just update the directories and files section to where your stuff is located. The "Steam Workshop IDs.txt" file just contains the workshop item number and a human readable string which automatically gets changed to a lowercase name without spaces. It uses a symbolic link to add the mods to the server's addons folder instead of moving it so updating works without redownloading everything. I know theres a bunch of GUI server managers out there, but I don't like the complexity that adds and this way I can just SSH from any device to update/boot my server. Update.py import os import sys from subprocess import Popen, PIPE, CalledProcessError, DEVNULL, STDOUT, check_call import glob armaServerAppId = "233780" armaClientAppId = "107410" modsDirectory = "C:\\Users\\arma\\Desktop\\Arma\\Master\\addons\\" keysDirectory = "C:\\Users\\arma\\Desktop\\Arma\\Master\\keys\\" armaDirectory = "C:\\Users\\arma\\Desktop\\Arma\\Master" steamCMD = "C:\\Users\\arma\\Desktop\\steamcmd\\steamcmd.exe" steamContentDirectory = "C:\\Users\\arma\\Desktop\\steamcmd\\steamapps\\workshop\\content\\" + armaClientAppId + "\\" steamTempScript = "C:\\Users\\arma\\Desktop\\steamcmd\\tempUpdateScript.txt" steamAuth = "C:\\Users\\arma\\Desktop\\steamcmd\\auth.txt" workshopItems = "C:\\Users\\arma\\Desktop\\Arma\\Steam Workshop IDs.txt" userLogin = "" userPass = "" def updateServer(): print("Updating Server...") # Get the users login checkUserLogin() os.system(steamCMD + ' +login ' + userLogin + ' ' + userPass + ' +force_install_dir ' + armaDirectory + ' "+app_update ' + armaServerAppId + '" validate +quit') def checkUserLogin(): global userLogin global userPass if userLogin == "": userLogin = input("Steam> Username: ") if userPass == "": userPass = input("Steam> Password: ") def copyKeys(): for filename in glob.iglob(modsDirectory+'**\\*.bikey', recursive=True): os.system("xcopy " + filename + " " + keysDirectory + " /s /y") error = "" os.system('cls') try: with open(steamAuth) as f: for line in f: info = line.split(" ") if len(info) == 2: userLogin = info[0] userPass = info[1] except: pass while True: userInput = input("Main Menu \n1. Update Server\n2. Update Mods\n4. Update Keys\n4. Exit\n" + error + ">> ") error = "" if userInput == "1": updateServer() input("Press any key to continue...") os.system('cls') elif userInput == "2": # Get the users login checkUserLogin() # Clear the temp script file = open(steamTempScript, 'w') script = "@ShutdownOnFailedCommand 1\n" script += "@NoPromptForPassword 1\n" script += "login " + userLogin + " " + userPass + "\n" script += "force_install_dir " + armaDirectory + "\n" mods = {} # Loop through each item in the workshop file with open(workshopItems) as f: for line in f: modInfo = line.split(" ", 1) steamWorkshopId = modInfo[0].strip() modName = modInfo[1].strip() modFolder = "@"+modName.replace(" ", "_").lower() mods[steamWorkshopId] = {"name": modName, "folder": modFolder} script += 'workshop_download_item ' + armaClientAppId + ' ' + steamWorkshopId + ' validate\n' # Make a link to the downloaded content (way better than moving...) symLink = modsDirectory + modFolder if not os.path.exists(symLink): os.system('mklink /J ' + symLink + ' ' + steamContentDirectory + steamWorkshopId + '\n') script += "quit" file.write(script) file.close() # Run the script print("\n=====================================\nLogging into Steam...\n=====================================") with Popen(steamCMD + " +runscript " + steamTempScript, stdout=PIPE, bufsize=1, universal_newlines=True) as p: for line in p.stdout: line = line.strip() if line != "": if line.find("Downloading item") != -1: downloadingLine = line.split("Downloading item") if downloadingLine[0]: print(downloadingLine[0]) try: modIdLine = downloadingLine[1].strip().split(" ") steamWorkshopId = modIdLine[0] print("\n=====================================\nDownloading "+mods[steamWorkshopId]["name"] + " ["+str(steamWorkshopId)+"]...\n=====================================") except: pass else: print(line) # Automatically copy bikeys over print("\n=====================================\nCopying addon keys...\n=====================================") copyKeys() input("\nPress any key to continue...") os.system('cls') elif userInput == "3": # Search for any bikeys and copy them into keys folder copyKeys() input("Press any key to continue...") os.system('cls') elif userInput == "4": sys.exit(0) elif userInput == "": os.system('cls') else: error = "[ERROR] Unknown choice. Try again\n" Steam Workshop IDs.txt 450814997 CBA 463939057 ACE 708250744 ACEX 773131200 ACE Compat RHSAFRF 773125288 ACE Compat RHSUSAF 689845793 ACD 853743366 CUP Terrains CWA 583496184 CUP Terrains Core 583544987 CUP Terrains Maps 671539540 EM Buildings 753946944 Murshun Cigs 498740884 Shacktac 698078148 Spec4gear 696177964 VSM WARFIGHTERS ... and so on ...
  2. Just wanted to post this script in case it's helpful for people. For our Arma 3 Linux server (headless) we use: LinuxGSM - for Arma 3 server startup and updating Arma3Sync - for providing delta diffs of mods Apache - for serving up mod files Steam - for updating Arma 3 server and downloading mods from the workshop I wrote a little Python script that automates the updating of mods via Steam workshop, copies keys, updates mods via Arma3Sync and then restarts the server all via the command-line. No more manually downloading and extracting files! If you have suggestions or improvements, feel free to fork the file or post here.
  3. Hello, our game development team in Brno has a great opportunity for a talented, self-motivated senior back-end programmer experienced in creating robust cloud based applications and well-rounded in modern development frameworks. You will be in charge of development for the back-end part of our game apps and services for players. Additionally, you would be mentoring the more junior members of the Cloud development team and actively contributing to the technical design of these Cloud apps and services, ensuring they are tailor-made to a game's needs and manageable within given constraints at the same time. Being a part of the expanding game development team at Bohemia, you’ll also contribute to our games and have an excellent opportunity to learn new skills/share ideas with a team of enthusiastic, highly-motivated colleagues. Development of server-side systems for cross-platform online games Writing re-usable server code and libraries Optimizing technologies with respect to cost and performance Oversee design, architecture and implementation of both small and large-scale Cloud projects Mentoring junior programmers R&D of new technologies that could improve current and future projects Requirements experience with cloud-based systems good knowledge of Java, JavaScript, Python, C# or Ruby experience with implementation of REST APIs Welcomed Skills experience with scalable cloud based systems experience with C++ experience with game development experience with any modern JavaScript framework (jQuery, AngularJS) We Offer Participate in a great project Friendly atmosphere in a mid-size multinational team of passionate developers Work with living Czech gamedev veterans and legends Work for the largest and most mature game development company in the Czech Republic Possibilities for skill-development and growth Competitive salary & benefits (semi-flexible hours, extra vacation, language courses etc.) Please contact us at jobs@bistudio.com.
×