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

修改AssaultCube时Console.ReadLine()在while循环中仅生效一次的问题

解决AssaultCube无限生命控制台的线程阻塞问题

哦,我太懂你这个困扰了——当你输入1开启无限生命后,程序就像“卡”住了一样,没法再输入指令关闭,对吧?这是因为你的主线程被内部的while循环完全霸占了,根本没机会去读取新的控制台输入。咱们用多线程就能完美解决这个问题,让输入监听和内存修改互不干扰。

问题根源分析

你原来的代码逻辑里,当开启无限生命后,主线程直接进入了while (healthToggle)的循环,一直在重复写内存和休眠,完全没时间回到外层去执行Console.ReadLine()。这就导致你后续输入的任何指令都没法被处理,陷入了“要关闭必须先结束循环,但循环结束又需要关闭指令”的死局。

修改后的代码

using System;
using System.Threading;

// 假设你的vam、localPLayer、health变量已经在别处定义好了
bool healthToggle = false;
int finalHealth = 0; // 提前初始化,第一次激活时再计算地址

while (true) 
{ 
    string select = Console.ReadLine(); 
    if (select == "1") 
    { 
        // 仅在第一次激活时计算最终内存地址,避免重复操作
        if (!healthToggle && finalHealth == 0)
        {
            finalHealth = localPLayer + health;
        }

        if (!healthToggle) 
        { 
            healthToggle = true; 
            Console.WriteLine("\n[1] Unlimited Health activated\n"); 
            
            // 启动单独线程处理无限生命循环,不阻塞主线程
            new Thread(() => 
            { 
                while (healthToggle) 
                { 
                    vam.WriteInt32((IntPtr)finalHealth, 999); 
                    Thread.Sleep(100); // 给CPU留休息时间
                } 
            }).Start(); // 启动新线程
        } 
        else 
        { 
            healthToggle = false; 
            Console.WriteLine("\n[1] Unlimited Health deactivated\n"); 
            vam.WriteInt32((IntPtr)finalHealth, 100); // 恢复默认生命值
        } 
    } 
    Thread.Sleep(100); 
}

关键改动说明

  • 变量作用域调整:把healthToggle和finalHealth移到外层循环外,确保它们的状态能在多次输入之间保持,同时新线程也能访问到这个开关变量。
  • 多线程分离任务:把原来的内存循环写入逻辑放到一个新线程中,这样主线程可以立刻回到控制台输入监听的状态,随时响应你的关闭指令。
  • 优化地址计算:仅在第一次激活无限生命时计算最终内存地址,避免重复执行无意义的加法操作。

额外注意事项

  • 这里healthToggle是bool类型,在.NET中bool的赋值和读取是原子操作,所以不需要额外的线程同步锁。如果以后扩展到更复杂的变量,建议使用lock或者Interlocked类保证线程安全。
  • 确保你的vam对象的WriteInt32方法是线程安全的,一般内存操作类都不会有问题,但如果是自定义的类,要注意避免多线程写入冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:12:50