Batch file 批量游戏:攻击无效

Batch file 批量游戏:攻击无效,batch-file,Batch File,我正在做一个处理四种不同攻击的游戏,这是我拙劣的口袋妖怪翻版,但当我第一次玩并使用其中一种攻击时,敌人的生命值不会改变。它只发生在一次叫做“刺伤”的攻击中 如果你想让我编辑更多的细节,请让我在评论中。谢谢大家! 很明显,您的问题出在哪里,您没有在:stabm之后的第3行“max1”和“min1”周围添加百分号。在发布问题之前,请先检查打字错误。问题:一行一次被解析,所以变量的值保留在该行之前: if '%dmg%'=='1' set stabdmg=30 & set /a monster

我正在做一个处理四种不同攻击的游戏,这是我拙劣的口袋妖怪翻版,但当我第一次玩并使用其中一种攻击时,敌人的生命值不会改变。它只发生在一次叫做“刺伤”的攻击中


如果你想让我编辑更多的细节,请让我在评论中。谢谢大家!

很明显,您的问题出在哪里,您没有在
:stabm
之后的第3行“max1”和“min1”周围添加百分号。在发布问题之前,请先检查打字错误。

问题:一行一次被解析,所以变量的值保留在该行之前:

if '%dmg%'=='1' set stabdmg=30 & set /a monsterhealth=%monsterhealth%-%stabdmg%-%exp% & echo You strike!
您设置了
stabdmg
,但
%stabdmg%
仍然是之前的值。您需要与第3行相同的语法(不带百分号):


(下三行当然也一样)

这不是问题所在。问题是,你在一轮中第一次使用攻击时,它不起作用,但在同一轮中第二次使用时它起作用。添加%符号不会起任何作用,但感谢您的回复。@SBlas-除了使用变量外,您必须用
%
符号将其包围,否则您使用的是文字字符串。因此,即使这不能解决你眼前的问题,它也会解决下一个问题。@darkfang:set/a的语法中没有百分号是可以的(有时甚至更好,请看我的答案)。在一个不相关的注释上,我不知道你怎么想,但这不是有效的批处理语法。
if '%dmg%'=='1' set stabdmg=30 & set /a monsterhealth=%monsterhealth%-%stabdmg%-%exp% & echo You strike!
if '%dmg%'=='1' set stabdmg=30 & set /a monsterhealth=monsterhealth-stabdmg-exp & echo You strike!