2015-07-21 4 views
0

Я делаю текстовую игру в Notepad ++. У меня есть рабочий магазин, и я пытаюсь сделать инвентарь. Для этого, я положил в сценарий, как это:Пакетное программирование инвентаря

if %bat% equ true echo 1) Bat 

Теперь, после этого, если они давят один, я пытаюсь изменить %current% в «Bat». Я попробовал это, и это не сработало:

If %input3% equ 1 set %current%=Bat 

Я думал, что это будет отображать слово «Летучая мышь», где он отображает то, что %current% есть (она начинается как «кулак»)

Вместо этого, это просто отображает имя как «0», а не «Bat». Я также пытаюсь установить %damage% до 9, выполнив:

if %current% equ Bat set %damage%=9 

Но это не сработало. В целом, я хочу изменить %current% на «Бат», а также пытаюсь установить %damage% на 9.

+0

Aahhh ... Я не сделал поймать эту ошибку. Благодаря! – user5139295

ответ

1

Ваш set синтаксис неправильный. Это set variable=value, не set %variable%=value:

set current=Bat 

%variable% используется для получения значения переменной:

echo %current% 
if %current%==Bat set damage=9 

(заметьте == и equ эквивалентны)

+1

'==' и 'equ' не совсем эквивалентны:' if 7 == 07 echo Equal' не вернет 'Equal', но' if 7 equ 07 echo Equal' будет, потому что '==' обозначает чистую строку сравнение, но 'equ' сначала преобразует оба выражения в числа. (Обратите внимание, что '07' интерпретируется как восьмеричное число, а' 0x7' будет интерпретироваться как шестнадцатеричное число, но не документировано в 'help if'; это поведение похоже на команду' set/A' - см. 'Help set 'для деталей ...) Однако, если вы заключите оба выражения в двойные кавычки,' equ' также выполняет чистое сравнение строк ... – aschipfl

+0

@aschipfl вы правы. Я должен был добавить «в вашем случае (сравнение строк)» – Stephan

Смежные вопросы