Инвентарь

 

Styx

разработчик l2j-сервера
Возможно ли как-то получить список инвентаря чара?
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

leva1988

новичок
esli ya ponal tvoi vopros pravelno, spisok lubovo chara est v navicate, item.sql
 

Styx

разработчик l2j-сервера
leva1988:
esli ya ponal tvoi vopros pravelno, spisok lubovo chara est v navicate, item.sql
 

Нет, ты понял неправильно :)

Я имел в виду - средствами JBForth в игре.
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

mrSteam

втянувшийся
Насчет JBF незнаю, но можно так Alt+G :)
Баги для читера это средство выживания Баги для админа это веревка и мыло  
+
-
edit
 

Balancer

администратор
★★★★★
Попробуй так:
player@ "Inventory" p@ сделает вызов player.getInventory() и вернёт PCInventory
Дальше - "Items" p@ - читаем массив итемов. Но это, блин, массив, а не список :-/ Если нет другой функции, которая не массив, а ArrayList вернёт, придётся делать на Форте функцию преобразования массива в список или работу с массивом :)

Весь идиотизм ситуации в том, что список итемов в Inventory лежит как раз именно списком, но функции для его доставания не предусмотрели, возвращают только массив. Преобразуя в него список... Ещё одно место в коде, которое нам можно будет выправить :)

Завтра постараюсь SVN поднять, там и сделаю :)
 
+
-
edit
 

leva1988

новичок
a vozmojno sdelat tak chtobi iz inventara mojno bilo vikidivat veshi, odevat ih, snemat i t.d.?
 

Styx

разработчик l2j-сервера
Balancer:
Попробуй так:
player@ "Inventory" p@ сделает вызов player.getInventory() и вернёт PCInventory
Дальше - "Items" p@ - читаем массив итемов. Но это, блин, массив, а не список :-/ Если нет другой функции, которая не массив, а ArrayList вернёт, придётся делать на Форте функцию преобразования массива в список или работу с массивом :)

Весь идиотизм ситуации в том, что список итемов в Inventory лежит как раз именно списком, но функции для его доставания не предусмотрели, возвращают только массив. Преобразуя в него список... Ещё одно место в коде, которое нам можно будет выправить :)

Завтра постараюсь SVN поднять, там и сделаю :)
 


Спасибо. Мне, в общем, надо примерно такое получить:
{
{ 555 1 } 1 айтем с айди 555
{ 666 2 } 2 айтема с айди 666
и т.д.
}

тоесть получается двумерный массив (сорри, говорил список), в котором айди айтема и кол-во этих айтемов

Сейчас попробую :)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  

Styx

разработчик l2j-сервера
Вот что у меня получилось:

gameserver/lib/jbf/words/L2j_items.java
code text
  1. ...
  2. import java.util.ArrayList;
  3. ...
  4. import net.sf.l2j.gameserver.model.Inventory;
  5. ...
  6. public class L2j_items
  7. {
  8.     ...
  9.     public L2j_chars(Dict d)
  10.     {
  11.         ...
  12.         d.reg("INVENTORY>", new inventory_list());
  13.         ...
  14.     }
  15.     ...
  16.     public class inventory_list extends Word
  17.     {
  18. //      ( player - )
  19.         public void exec(JBData data)
  20.         {
  21.             Inventory inv = ((L2PcInstance) data.st.pop()).getInventory();
  22.             ArrayList inv_list = new ArrayList();
  23.                        
  24.                 for (L2ItemInstance item : inv.getItems())
  25.                 {
  26.                     int it = item.getItem().getType2();
  27.                     if(it == 3 || it == 4) continue;
  28.                     ArrayList temp = new ArrayList();
  29.                     temp.add(item.getItemId());
  30.                     temp.add(item.getCount());
  31.                     temp.add(item.getItem().getName());
  32.                     inv_list.add(temp);
  33.                 }
  34.             data.st.push(inv_list);
  35.         }
  36.     }
  37.     ...
  38. }


Получается следующий список:
code text
  1. [
  2.     [ 2386, 1, Wooden Gaiters ],
  3.     [ 23, 1, Wooden Breastplate ],
  4. ...
  5. ]


Деньги и квестовые айтемы в список не входят

Вызывать так:
code text
  1. : get-inventory
  2.     player@ inventory>
  3. ;



Критика и предложения очень даже приветствуются :)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  

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