garri_il:
да а такои вопрос можно сделать телепорт как лотерею чтоб при выборе меню тебя закидывало в одну из 5 локации ?
Легко
Правда, не очень изящно, т.к., например, красивее было бы сделать через массив, но всё равно - не сложно.
Пишем в какой-нибудь Forth-файл:
code forth
: random-jump ( --) т.е. никаикх параметров на входе, никаких - на выходе. Это обозначение в скобках - просто комментарий, писать не обязательно, но полезно.
5 CHOOSE на выхрое число от 0 до 4
dup 0= if если выпал ноль (предварительно число дублируем, чтобы использовалось дальше)
drop сохранённый дубль нам теперь не нужен
12345 3456 -4566 player@ teleport_player_to перемещаем текущего игрока player@ в x y z.
exit выходим аз слова
then конец условия
дальше - вычитаем единицу и, если ноль, прыгаем в другую точку
1- вычитаем единицу и повторяем всю проверку
только для дуюлирования используем слово dup?, которое дупит только ненулевое число
dup? 0= if 9876 123456 -1834 player@ teleport_player_to exit then
1- dup? 0= if 193475 345623 -5834 player@ teleport_player_to exit then
1- dup? 0= if 433475 23423 -2834 player@ teleport_player_to exit then
1- dup? 0= if 433475 23423 -2834 player@ teleport_player_to exit then
ну и всё, дальше никаких условий не нужно :)
433475 23423 -2834 player@ teleport_player_to
;
Вызывать - просто вызовом слова без параметров.
code html4strict
<a action="bypass -h forth random-jump">Random teleport
</a>
Можно за прыжок брать N адены - вставляем в нужное место
code forth
5000 player@ adena-!
Вычесть 5000 из адены заданного игрока.
В порядке разминки (бесполезно, но вдруг что-то интересное придумается?)
code forth
5000 player@ target@ adena-!
Вычесть 5000 из адены игрока, являющегося целью текущего
player@ - возвращает на стек объект текущего игрока
target@ - снимает со стека объект игрока и возвращает на него объект цели выбранного игрока
adena-! - вычитает заданную сумму из инвентаря заданного игрока.