Q: Можно ли сделать телепорт как лоттерею?

 
+
-
edit
 

Balancer

администратор
★★★★★
garri_il:
да а такои вопрос можно сделать телепорт как лотерею чтоб при выборе меню тебя закидывало в одну из 5 локации ?
 


Легко :) Правда, не очень изящно, т.к., например, красивее было бы сделать через массив, но всё равно - не сложно.

Пишем в какой-нибудь Forth-файл:
code forth
  1. : random-jump  ( --)  т.е. никаикх параметров на входе, никаких - на выходе. Это обозначение в скобках - просто комментарий, писать не обязательно, но полезно.
  2.     5 CHOOSE   на выхрое число от 0 до 4
  3.     dup 0= if  если выпал ноль (предварительно число дублируем, чтобы использовалось дальше)
  4.         drop  сохранённый дубль нам теперь не нужен
  5.         12345 3456 -4566 player@ teleport_player_to  перемещаем текущего игрока player@ в x y z.
  6.         exit    выходим аз слова
  7.     then  конец условия
  8.      дальше - вычитаем единицу и, если ноль, прыгаем в другую точку
  9.     1-  вычитаем единицу и повторяем всю проверку
  10.      только для дуюлирования используем слово dup?, которое дупит только ненулевое число
  11.     dup? 0= if   9876 123456 -1834 player@ teleport_player_to   exit   then
  12.     1- dup? 0= if   193475 345623 -5834 player@ teleport_player_to   exit   then
  13.     1- dup? 0= if   433475 23423 -2834 player@ teleport_player_to   exit   then
  14.     1- dup? 0= if   433475 23423 -2834 player@ teleport_player_to   exit   then
  15.  
  16.      ну и всё, дальше никаких условий не нужно :)    
  17.     433475 23423 -2834 player@ teleport_player_to
  18. ;


Вызывать - просто вызовом слова без параметров.
code html4strict
  1. <a action="bypass -h forth random-jump">Random teleport</a>


Можно за прыжок брать N адены - вставляем в нужное место
code forth
  1. 5000 player@ adena-!

Вычесть 5000 из адены заданного игрока.

В порядке разминки (бесполезно, но вдруг что-то интересное придумается?)
code forth
  1. 5000 player@ target@ adena-!

Вычесть 5000 из адены игрока, являющегося целью текущего :D

player@ - возвращает на стек объект текущего игрока
target@ - снимает со стека объект игрока и возвращает на него объект цели выбранного игрока

adena-! - вычитает заданную сумму из инвентаря заданного игрока.
 
+
-
edit
 
+
-
edit
 

Balancer

администратор
★★★★★
Задавай вопросы, если что :D Форт вообще, и JBForth в частности - очень гибкая штука. Это у меня ещё реализовано только процентов 5 от полного функционала Форт-систем :D И при этом оно ещё в 2..3 раза быстрее, чем jython :)
 
+
-
edit
 

garri_il

втянувшийся
sovest' zamu4aet naprjgat' a idei kak nazlo v golovu lezut :)
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru