Чтобы не посылать в логи чата, выжму недошедшее сюда
>не понял синтаксиса...code forth
wtd@ ( считали weapon-to-del-id) items# ( считали сколько у игрока таких итемов ) 0= if ( если ноль ) "You not have item [ wtd@ i.name@ ]" .rexit ( то печать текста с выходом из этого слова ) then
.rexit описано чуть выше. Оно печатает выводимый текст с его парсингом (т.е. вставит в тело текста weapon to del name ), сбрасывает со стека адрес возврата того слова, из которого было вызвано (т.е. мы туда больше не вернёмся), сбрасывает опять же со стека возвратов хранимый там список параметров замены. После этого на стеке возврата оказывается слово, из которого было вызвано bypass_... - и мы возвращаемся туда.
>aa@ 5575 items# > if "Not enough [ paa@ ] Ancient Adena" .rexit then>5575 items# paa@ <= if "Not enough [ paa@ ] Ancient Adena" .rexit then>эти две записи равносильны так ?
Нет.
Вторая должна быть со строгим сравнением:
5575 items# paa@ < if "Not enough [ paa@ ] Ancient Adena" .rexit then
Выход только тогда, когда число необходимых предметов больше имеющегося. Или, что то же самое, имеющееся число предметов - меньше нужного
>paa@ 5575 items# <= if "Not enough [ paa@ ] Ancient Adena" .rexit then>вроде так вернее
Если число нужных предметов будет точно равно имеющемуся, то обмен должен осуществиться, но условие окажется истинным и произойдёт прерывание работы слова.