保存并加载.bat游戏 - 单个数字出错

时间:2011-10-11 06:06:33

标签: batch-file

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

但是现在我使用所述答案“保存”数字有问题。

如果变量不是两位数(例如1或0),它会将变量“保存”为“”,因此每当你做任何需要变量的事情时都会使游戏崩溃。游戏在此之前将变量设置得很好。

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

如果%raghave% = 00

,它也不会回应它应该做的“无”

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

(如果我将Mat的代码与空格一起使用,则变量设置为"set RagHave=1“,因此在末尾添加空格)

1 个答案:

答案 0 :(得分:4)

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

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

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

示例项目= 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不是你无法计算或计算的正常数字,最好使用{ {1}}而不是。

然后这也应该起作用

0