在这个问题中,保存并加载 .bat 游戏我用了马特的答案。
但现在我在使用上述答案“保存”数字时遇到问题。
如果变量不是两位数(例如 1 或 0),它会将变量“保存”为“”,因此每当您执行任何需要该变量的操作时都会使游戏崩溃。游戏在此之前将变量设置得很好。
例如,如果我拿起抹布,然后输入 Inv,它会说我拿着抹布。如果我再次保存并加载,然后输入 Inv,它不会说我拿着任何东西!
它也不会回显“Nothing”,如果%raghave% = 00
(我还在 Notepad++ 中打开了保存文件,因此可以看到set RagHave=
)
(另外,如果我使用带有空格的 Mat 代码,则变量将设置为"set RagHave=1
" 所以在末尾添加了一个空格)
问题是 Mat 的解决方案!
为了更好地理解我重复他的解决方案
@echo @ECHO OFF > savegame.cmd
@echo SET ITEMS=%ITEMS% >> savegame.cmd
@echo SET HEALTH=%HEALTH% >> savegame.cmd
@echo SET MONEY=%MONEY% >> savegame.cmd
在我看来,它有很多缺点。
The @
前缀不是必需的。
每行都会重复重定向(我不喜欢冗余)。
它需要空格,因为如果没有空格,数字就会出现问题。
项目样本=1
@echo set ITEMS=1>>savegame.cmd
这结果不以书面形式set items=1
它写道set items=
to 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)