【问题标题】:Save and Load .bat game -- Error with single numbers保存和加载 .bat 游戏 - 单个数字错误
【发布时间】:2011-10-11 06:06:33
【问题描述】:

在这个问题中,Save and Load .bat game 我使用了 Mat 的答案。

但现在我在使用上述答案“保存”数字时遇到了问题。

如果变量不是两位数(例如 1 或 0),它会将变量“保存”为“”,因此每当您执行任何需要该变量的操作时都会使游戏崩溃。游戏在此之前将变量设置好。

例如,如果我拿起抹布,然后输入 Inv,它会说我拿着抹布。如果我然后再次保存并加载,然后输入 Inv,它不会说我持有任何东西!

如果%raghave% = 00,它也不会回显它应该做的“无”

(我还在 Notepad++ 中打开了保存文件,所以可以看到 set RagHave=

(另外,如果我使用带空格的 Mat 代码,则变量设置为 "set RagHave=1" 并在末尾添加一个空格)

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    问题是马特的解决方案! 为了更好地理解,我重复他的解决方案

    @echo @ECHO OFF           > savegame.cmd
    @echo SET ITEMS=%ITEMS%   >> savegame.cmd
    @echo SET HEALTH=%HEALTH% >> savegame.cmd
    @echo SET MONEY=%MONEY%   >> savegame.cmd
    

    在我看来,它有很多缺点。
    @ 前缀不是必需的。
    每行都重复重定向(我不喜欢冗余)。
    它需要空格,因为没有空格你会遇到数字问题。

    items=1 的示例

    @echo set ITEMS=1>>savegame.cmd
    

    这导致不会写入set items=1,而是将set items= 写入1>>savegame.cmd 1>> 是标准流。

    你可以用

    解决所有问题
    (
        echo @ECHO OFF
        echo SET "ITEMS=%ITEMS%"
        echo SET "HEALTH=%HEALTH%"
        echo SET "MONEY=%MONEY%"
    ) > savegame.cmd
    

    引号用于确保忽略集合后的“隐藏”空格。

    顺便说一句。使用if %raghave% = 00 之类的构造是个坏主意,(您需要两个等号),因为00 不是您无法计算或计算的正常数字,最好使用0 代替。

    那么这也应该工作

    set /a items=0
    set /a items=items+1
    set /a items=items-1
    if %items%==0 echo There are no items
    

    【讨论】:

    • 我使用 00 只是为了测试 Mat 的方式是否喜欢 00,确实如此。感谢您的帮助,这有效!我确实想知道@。我还将它保存到 .ParadoxSave,然后我将其重命名为 .cmd,并在加载时再次返回(我非常喜欢的东西)
    猜你喜欢
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多