所以我似乎很难将'if'语句放在另一个'if'语句中。我有正确设置的标签,当代码进入levelstats
时会发生错误一旦玩家达到max exp,代码就意味着进入下一个级别。 lvlguage检查是否满足exp要求。这很好。它转到levelstats然后提示关闭。
:LvlGuage
If %CharExp% GEQ %CharMaxExp% (
Goto LevelStats
)
Goto MENU
:LevelStats
::the error starts here
If %CharLevel%==1 (
Goto Level2
)
Goto MENU
If %CharLevel%==2 (
Goto Level3
)
Goto MENU
:: This goes on till level 10
:Level2
If %CharExp% GEQ 100 (
Set /a CharExp=%CharExp% -100
Set CharMaxExp=280
Set CharLevel=2
Set /a CharAttack=(%CharAttack% * 1.5) + 1
Goto LEVELUP
)
Goto MENU
:Level3
If %CharExp% GEQ 280 (
Set /a CharExp=%CharExp% -280
Set CharMaxExp=784
Set CharLevel=3
Set /a CharAttack=(%CharAttack% * 1.5) + 1
Goto LEVELUP
)
Goto MENU
:LEVELUP
Cls
Echo You Have Leveled Up.
Timeout 2 >nul
Goto MENU
答案 0 :(得分:0)
您的变量只在脚本启动时计算一次。看看这个:http://www.ss64.com/nt/delayedexpansion.html
您需要在脚本的开头添加Setlocal EnableDelayedExpansion
,并在想要获取更改后的值时使用!varname!
代替%varname%
添加到您的变种。这将始终为您提供变量的最后设定值,而不是第一个指定的值。