Дорабатываем команду //idrop

 
+
-
edit
 

Balancer

администратор
★★★★★
Ответ на Вопросы по форту (подскажите) [Balancer#09.01.07 12:42]

Megawolf> Еще бы сделать другую команду, с радиусом :)

Там код у команды - примитивнейший:
code forth
  1. forth:: drop-avoid  ( item count player -- {items-list} )
  2.     new-list rot ( item player {list} count )
  3.     1 max 0 ?do
  4.         ( item player {list} )
  5.         >r >r
  6.         dup 1 r@ r@ coords@ 100 + 100 coords-randomize item_spawn
  7.         ( item_id new_item_obj; R: player list )
  8.         r> swap r@ list+ r>
  9.     loop nip nip
  10. ;
  11.  
  12. forth:: admin_idrop  ( -- \ item_id [count] )
  13.     \ Drop <count> items with <item_id> around GM
  14.     "drop" check-access
  15.     2 args int 1 max
  16.     swap int
  17.     swap
  18.     player@
  19.     drop-avoid
  20.     drop
  21. ;



Т.е., скажем, пишем:

code forth
  1. forth:: drop-in-range  (( item count player radius -- {items-list} ))
  2.     new-list
  3.     count 1 max 0 ?do
  4.         item 1
  5.         player
  6.         player coords@ 100 + radius coords-randomize
  7.         item_spawn
  8.         over list+
  9.     loop
  10. ;
  11.  
  12. forth:: admin_irdrop  ( -- \ item_id [count] [radius] )
  13.     \ Drop <count> items with <item_id> around GM in range <radius>
  14.     "drop" check-access
  15.     2 args
  16.     int 10 min 10000 max >r
  17.     int 1 max
  18.     swap int
  19.     swap
  20.     self r> drop-in-range
  21.     drop
  22. ;


Код с 90% вероятностью не рабочий, так как для проверки нужно клиент запускать. Скорее, как демонстратор, что нужно править (заодно переписан с использованием новых возможностей - скажем, локальных переменных-аргументов слова)
 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Balancer

администратор
★★★★★
Так, ещё и разметка кода поехала. Это в первую очередь поправлю. Пока же - вместо &gt; читать > :)
 

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