Знатокам форта

 
+
-
edit
 

masterXL

разработчик OpenWorlds
необходима помощь в таком вопросе
{ 1 2 3 } value items-list
как заставить этот список обработать в такой задаче
item-list ['] n items_remove
тормознул полностью. думаю это многим пригодится
Бал помогай!!!!! не молчи
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  
+
-
edit
 

masterXL

разработчик OpenWorlds
еще вопросик: как определить id выделенной вещи в инвентаре (и получить уровень enchant_level для нее)?
то что предлагается в Вики оаботает без учета количества предметов в инвентаре, т.е. при наличии пяти предметов с id 902 имеющих разную величину енчанта от 0 до +4 он определяет самый низкий уровень. дальше непонятно. Выкидываешь вещь и светит не 2, а 4. Это от порядка записи в базе завист, я так полагаю?
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  
+
-
edit
 

Balancer

администратор
★★★★★
masterXL> необходима помощь в таком вопросе
masterXL> { 1 2 3 } value items-list
masterXL> как заставить этот список обработать в такой задаче
masterXL> item-list ['] n items_remove
masterXL> тормознул полностью. думаю это многим пригодится
masterXL> Бал помогай!!!!! не молчи

1. Если просто забрать список из N предметов с разным количеством, то я делал в эвентах, скажем, так:
code forth
  1. false uvalue flag
  2.  item_id remove_count
  3. {   { 3879 2 }  G
  4.     { 3875 2 }  A
  5.     { 3877 1 }  E
  6.     { 3886 1 }  S
  7.     { 3882 1 }  L
  8. } value needed_items_list
  9.  
  10. : item-check  ( {item_id count} -- )
  11.     list> drop items# <=
  12.     flag and to flag
  13. ;
  14.  
  15. : all-runes?  ( -- flag )
  16.     true to flag
  17.     needed_items_list ['] item-check do-list
  18.     flag
  19. ;
  20.  
  21. : remove-rune  ( {item_id count} -- )
  22.     list> drop items_remove
  23. ;
  24.  
  25. : remove-runes  ( -- success-flag )
  26.     all-runes? not if false exit then
  27.     needed_items_list ['] remove-rune do-list
  28.     true
  29. ;


Это с проверкой на наличие итемов заданного количества и, если их достаточно, то с удалением.

Пример эвента с обменом квестовых вещей на полезные безделущки см. в Error: Not Found – L2J Fortress
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

администратор
★★★★★
masterXL> еще вопросик: как определить id выделенной вещи в инвентаре (и получить уровень enchant_level для нее)?

Просто выделенной - никак. Клиент не передаёт эту информацию серверу, на сколько я знаю.

masterXL> то что предлагается в Вики оаботает без учета количества предметов в инвентаре, т.е. при наличии пяти предметов с id 902 имеющих разную величину енчанта от 0 до +4 он определяет самый низкий уровень. дальше непонятно. Выкидываешь вещь и светит не 2, а 4. Это от порядка записи в базе завист, я так полагаю?

Можно просто проанализировать все вещи и выбрать вещь с максимальным или минимальным энчантом.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

masterXL

разработчик OpenWorlds
тогда такой вопрос: а форт можно привязать к явовской процедуре заточки?
объясню для чего это нужно - по выполнению условия квеста квеста игроку предлагается "заточить" любой предмет +5. остается только передать данные выбранной вещи (id, enchant_level)
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Balancer

администратор
★★★★★
Из Форта можно вызвать практически любой Java-метод.

Смотри примеры использования слов jexec (выполнение Java-вызова без возврата результата), jget (то же самое, но с возвратом) и jnew (создание нового объекта).
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

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