You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为LethalCompany模组编写DLL:实现可变配置文件下音频迁移

动态路径处理解决方案(LethalCompany模组音频复制)

核心思路

不用硬编码固定路径,而是通过当前模组DLL的运行路径反向推导,自动适配不同的profile目录。具体逻辑:

  1. 获取当前模组DLL的所在路径
  2. 从该路径回退到自身模组的音频目录(MySounds)
  3. 再从该位置回退到plugins根目录,定位到目标模组的音频目录(HisSounds)

修改后的完整代码

using System;
using System.IO;
using System.Reflection;

namespace SoundsMove
{
    class Program
    {
        static void Main(string[] args)
        {
            // 动态获取当前运行的模组DLL路径,适配任意profile
            string dllPath = Assembly.GetExecutingAssembly().Location;
            // 回退到DLL所在的MyMod目录
            string myModDir = Path.GetDirectoryName(dllPath);
            // 拼接源音频目录:MyMod下的MySounds文件夹
            string ModSource = Path.Combine(myModDir, "MySounds");

            // 从MyMod目录回退两级,到达plugins根目录
            string pluginsDir = Path.GetDirectoryName(Path.GetDirectoryName(myModDir));
            // 拼接目标音频目录:plugins下的TheMod/HisSounds文件夹
            string ModDest = Path.Combine(pluginsDir, "TheMod", "HisSounds");

            // 确保目标目录存在,避免移动文件时出错
            Directory.CreateDirectory(ModDest);

            // 获取源目录下的所有音频文件
            var allFiles = Directory.GetFiles(ModSource);
            foreach (var file in allFiles)
            {
                // 安全拼接目标文件路径,避免手动拼接的格式错误
                string destFilePath = Path.Combine(ModDest, Path.GetFileName(file));
                // 移动文件(如需复制而非移动,替换为File.Copy(file, destFilePath, true),true表示覆盖已存在文件)
                File.Move(file, destFilePath);
            }
        }
    }
}

关键代码说明

  • Assembly.GetExecutingAssembly().Location:拿到当前DLL的绝对路径,不管用户用的是Profile1还是Hide'N'Seek这类自定义profile,都能准确找到模组安装位置。
  • Path.GetDirectoryName():每调用一次就回退到上一级目录,实现动态路径跳转。
  • Path.Combine():自动处理不同系统的路径分隔符,避免手动拼字符串出现格式错误。
  • Directory.CreateDirectory(ModDest):如果目标目录不存在,自动创建,防止文件操作失败。

内容的提问来源于stack exchange,提问作者user28063031

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:30:58