私は作っている小さな個人用ゲームのために無限のレベリングシステムを作ろうとしていますが、動作しません。これは見た目です。バッチファイルのIF条件が3を2 * 2より大きく解釈するのはなぜですか?
if %exp% gtr %lvl%*%lvl% goto lvlup
:lvlup
set /a exp=%exp%-%lvl%*%lvl%
set /a cmhealth=%cmhealth%+5
set /a cchealth=%cchealth%+5
set /a cattack=%cattack%+3
set /a cDefence=%cDefence%+4
set /a cspeed=%cspeed%+2
set /a lvl=%lvl%+1
set /a SP=%SP%+1
goto decisions
それはのようなものになるまで、それは正常に動作:
if 3 GTR 2*2 goto lvlup
set /a exp=3-2*2
set /a cmhealth=25+5
set /a cchealth=18+5
set /a cattack=8+3
set /a cDefence=15+4
set /a cspeed=8+2
set /a lvl=2+1
set /a SP=1+1
goto decisions
そしてexp
は、その後-1
に設定されています。
なぜこれを行うのですか?どのように修正できますか?
問題は、それが IFコマンドは、プライマリ文字列を比較4または3 * 3
'if'文で演算を行うことはできません。単一の値しか比較できないので、' set/A'文で '%lvl%*%lvl%'をあらかじめ計算しておき、その結果比較のために; 'if'ステートメントに' 2 * 2'がある場合、それは文字列として比較されます。 – aschipfl
ありがとう、あなたは@aschipflを働かせました。 – bymdal