在这个问题中,Save and Load .bat game我使用了Mat的答案。
但是现在我使用所述答案“保存”数字有问题。
如果变量不是两位数(例如1或0),它会将变量“保存”为“”,因此每当你做任何需要变量的事情时都会使游戏崩溃。游戏在此之前将变量设置得很好。
例如,如果我拿起抹布,然后输入Inv,它会说我拿着抹布。如果我然后再次保存并加载,则输入Inv,它不会说我拿着任何东西!
如果%raghave% = 00
(我也在Notepad ++中打开了保存文件,因此可以看到set RagHave=
)
(如果我将Mat的代码与空格一起使用,则变量设置为"set RagHave=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