diff --git a/FactorioClient.py b/FactorioClient.py index 8678434e..382f2279 100644 --- a/FactorioClient.py +++ b/FactorioClient.py @@ -55,6 +55,7 @@ class FactorioContext(CommonContext): self.send_index = 0 self.rcon_client = None self.awaiting_bridge = False + self.write_data_path = None self.factorio_json_text_parser = FactorioJSONtoTextParser(self) async def server_auth(self, password_requested: bool = False): @@ -250,6 +251,12 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: if "Loading mod AP-" in msg and msg.endswith("(data.lua)"): parts = msg.split() ctx.mod_version = Utils.Version(*(int(number) for number in parts[-2].split("."))) + elif "Write data path: " in msg: + ctx.write_data_path = Utils.get_text_between(msg, "Write data path: ", " [") + if "AppData" in ctx.write_data_path: + logger.warning("It appears your mods are loaded from Appdata, " + "this can lead to problems with multiple Factorio instances. " + "If this is the case, you will get a file locked error running Factorio.") if not rcon_client and "Starting RCON interface at IP ADDR:" in msg: rcon_client = factorio_rcon.RCONClient("localhost", rcon_port, rcon_password) if ctx.mod_version == ctx.__class__.mod_version: diff --git a/Utils.py b/Utils.py index 53e54090..3bfddd2e 100644 --- a/Utils.py +++ b/Utils.py @@ -310,7 +310,6 @@ def get_adjuster_settings(romfile: str, skip_questions: bool = False) -> typing. if sprite_pool: printed_options["sprite_pool"] = sprite_pool - if hasattr(get_adjuster_settings, "adjust_wanted"): adjust_wanted = getattr(get_adjuster_settings, "adjust_wanted") elif persistent_load().get("adjuster", {}).get("never_adjust", False): # never adjust, per user request @@ -401,4 +400,8 @@ def restricted_loads(s): class KeyedDefaultDict(collections.defaultdict): def __missing__(self, key): self[key] = value = self.default_factory(key) - return value \ No newline at end of file + return value + + +def get_text_between(text: str, start: str, end: str) -> str: + return text[text.index(start) + len(start): text.rindex(end)] diff --git a/WebHostLib/static/assets/tutorial/factorio/setup_en.md b/WebHostLib/static/assets/tutorial/factorio/setup_en.md index 84ba33bc..1247c033 100644 --- a/WebHostLib/static/assets/tutorial/factorio/setup_en.md +++ b/WebHostLib/static/assets/tutorial/factorio/setup_en.md @@ -25,7 +25,7 @@ config-path=__PATH__executable__/../../config use-system-read-write-data-directories=false ``` 3. In this same folder if there are shortcuts named "mods" and "saves" delete these and replace with folders with the same names. -4. Navigate to where you installed ArchipelagoFactorioClient and open the host.yaml file as text. Find the entry `executable` under `factorio_options` and set it to point to your hosting Factorio.exe. If you put Factorio into your Archipelago folder, this would already match.
+4. Navigate to where you installed Archipelago and open the host.yaml file as text. Find the entry `executable` under `factorio_options` and set it to point to your hosting Factorio.exe. If you put Factorio into your Archipelago folder, this would already match.
ex. ```yaml factorio_options: @@ -50,3 +50,6 @@ factorio_options: 4. You can join yourself by connecting to address localhost, other people will need to connect to your IP and you may need to port forward for the Factorio Server for those connections. +## Problems + +FactorioClient will create a FactorioClient.txt in /logs, contents of this logfile may help you troubleshoot an issue on your own and is vital for us to help you with issues. \ No newline at end of file