Установка jbforth...

 
1 2 3 4
+
-
edit
 

Balancer

администратор
★★★★★
Хм, пример, который я привел придуман не мною, а просто выдран из Fortress и в данной сборке компилция проходит успешно. А замена на L2World.getInstance().getAllPlayers() не приводит к нужному результату :(
 


В Fortress весь L2World (как и многие другие базовые классы) статический. Соответственно, getInstance не нужен. В SF - нужен.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Malish

новичок
Муркт, Balancer, спасибо вам. Компилится теперь, но вот что-то пока не пойму работает ли ето как надо ... где-то что-то не хватат :)
 
+
-
edit
 

Malish

новичок
С сборку установил старую папку jbforth, при запуске выдает ошибку:

Input:



File: datajbforthl2jvar-load.f
... : suvalue ( val — name )
user-value
last-word >| suv-list |< list+
player@ null? if exit then
last_word uv@ d ...



Return stack trace:
java.lang.ArrayIndexOutOfBoundsException: -1
at ru.balancer.jbforth.Stack.pop(Stack.java:55)
at ru.balancer.JBForth.do_code(JBForth.java:219)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:341)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:331)
at ru.balancer.JBForth.tryAsFile(JBForth.java:320)
at ru.balancer.JBForth.do_code(JBForth.java:292)
at ru.balancer.JBForth.do_code(JBForth.java:218)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:341)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:328)
at ru.balancer.JBForth.tryAsFile(JBForth.java:317)
at ru.balancer.JBForth.do_code(JBForth.java:292)
at ru.balancer.JBForth.do_code(JBForth.java:218)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:341)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:328)
at ru.balancer.JBForth.tryAsFile(JBForth.java:317)
at ru.balancer.JBForth.do_code(JBForth.java:292)
at ru.balancer.JBForth.do_code(JBForth.java:218)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:341)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:325)
at ru.balancer.JBForth.tryAsFile(JBForth.java:320)
at ru.balancer.JBForth.do_code(JBForth.java:292)
at ru.balancer.JBForth.do_code(JBForth.java:210)
at ru.balancer.JBForth.exec(JBForth.java:138)
at ru.balancer.JBForth.execp(JBForth.java:149)
at ru.balancer.JBForth.reload(JBForth.java:119)
at ru.balancer.JBForth.<init>(JBForth.java:92)
at net.sf.l2j.gameserver.GameServer.<init>(GameServer.java:253)
at net.sf.l2j.gameserver.GameServer.main(GameServer.java:513)
Abort: Unknown word 'last-word' in File: datajbforthl2jvar-load.f
... ( val — name )
user-value >|
last-word |< suv-list list+
player@ null? i ... in file datajbforthl2jvar-load.f

Как я понимаю раньше данное слово (last-word) было определенно в самой библиотеке форта?
 
+
-
edit
 

Malish

новичок
Подскажите где я в очередной раз туплю? :(
 
+
-
edit
 

Malish

новичок
Старый jbforth удалось прикрутить к сборке SF. Кажется все работает как надо, спасибо всем кто оказывал помощь :) Теперь буду пытаться новый jbforth прикрутить :)
 

a4n

новичок
Ну и как успехи ?
У меня вот все встало на старте сервера:
code text
  1. ....
  2. EnchantSkillTreeTable: Loaded 13200 enchant skills.
  3. Abort: Unknown word 'item_spawn' in File: data\jbforth\l2j\spawns.f
  4. ... r >r >r
  5.         swap
  6.         self
  7.         r> r> r> >|  item_spawn |<
  8. ;
  9. ....

И так далее, а потом:
code text
  1. Exception in input file .\data\jbforth\geodata\main.f
  2. Input:
  3. === cut ===
  4. File: .\data\jbforth\geodata\main.f
  5. ... odata: definitions
  6.  
  7. territories/main.f
  8.  
  9. previous >|  definitions |<
  10. === cut ===
  11. Return stack trace:
  12.  
  13. java.lang.NullPointerException
  14.         at ru.balancer.JBForth.findWord(JBForth.java:170)
  15.         at ru.balancer.JBForth.do_code(JBForth.java:246)
  16.         at ru.balancer.JBForth.do_code(JBForth.java:227)
  17.         at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
  18. )
  19.         at ru.balancer.JBForth.tryAsFileExact(JBForth.java:365)
  20.         at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:349)
  21.         at ru.balancer.JBForth.tryAsFile(JBForth.java:332)
  22.         at ru.balancer.JBForth.do_code(JBForth.java:307)
  23.         at ru.balancer.JBForth.do_code(JBForth.java:227)
  24.         at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
  25. )
  26.         at ru.balancer.JBForth.tryAsFileExact(JBForth.java:365)
  27.         at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:343)
  28.         at ru.balancer.JBForth.tryAsFile(JBForth.java:332)
  29.         at ru.balancer.JBForth.do_code(JBForth.java:307)
  30.         at ru.balancer.JBForth.do_code(JBForth.java:227)
  31.         at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:42
  32. )
  33.         at ru.balancer.JBForth.tryAsFileExact(JBForth.java:365)
  34.         at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:340)
  35.         at ru.balancer.JBForth.tryAsFile(JBForth.java:335)
  36.         at ru.balancer.JBForth.do_code(JBForth.java:307)
  37.         at ru.balancer.JBForth.do_code(JBForth.java:219)
  38.         at ru.balancer.JBForth.exec(JBForth.java:138)
  39.         at ru.balancer.JBForth.execp(JBForth.java:149)
  40.         at ru.balancer.JBForth.reload(JBForth.java:119)
  41.         at ru.balancer.JBForth.<init>(JBForth.java:92)
  42.         at net.sf.l2j.gameserver.GameServer.<init>(GameServer.java:165)
  43.         at net.sf.l2j.gameserver.GameServer.main(GameServer.java:512)


Декомпилировал 3525, сам jar форта с свн последний.

есть идеи ? :)
 
+
-
edit
 

Diamond

втянувшийся

Лучше сначало удали все лишнее, а уже потом запускай. То что в папке geodata да и многое другое на сф работать не будет...
 

a4n

новичок
Он почему-то не выучивает слова item*, adena*, inventory* хотя из Дикта классы грузит, но видимо что-то не так.

  • ну и производные к ним (например item_spawn)
 
+
-
edit
 

photon

новичок
Где взять Forth virtual machine или или как там называется сама прога??
Она ж не станет понимать этот язык без установленной на компе программы!!??
Зарание спасобо за ответ...
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

photon

новичок
или JBfirth,jar в ява машину в библиотеки засунуть??
Если да то куда..?
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

Balancer

администратор
★★★★★
jbforth.jar входит в комплект l2fortress.

Отдельно скачать можно с JBForth
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

photon

новичок
Balancer> jbforth.jar входит в комплект l2fortress.
Взял от туда

Balancer> Отдельно скачать можно с JBForth
и от туда тоже брал

что хранится здесь = data/jbforth ( по-моему код форта)
что хранится здесь = ./l2f (а здесь вроде код ява скомпиленый)

вопрос в следующем ка это между собой взаимодействует?

Например //do скажем эта команда описана в data/jbforth...и в яве ./net/sf/......
каким образом Ява поймет что надо при команде //do обратится к коду в data/jbforth...

А может я вообще что то не то несу...
Не судите строго минут 30 читаю форум и просматриваю сборку 4216....


основная задача на данный момент запустить скажем AI на сборке не имеющей Forth..
И кстати мне не принципиальна сборка Херо Фрее или СТ просто мне интересно научится как задействовать Форз на других серверах...
А там может и Рома ответит мне в Жабере...
ps: Рома уже больше месяца прошло с того момента как ты обещал мне ответить...Ник мой немного сменился 2 раза каждый раз свой пароль забывал..!!Очень надеюсь на ответ..
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

Balancer

администратор
★★★★★
>Например //do скажем эта команда описана в data/jbforth...и в яве ./net/sf/......

А "в яве" где? DO - это, вообще-то, штатное слово стандартного Форта. Начало цикла с параметром :)

Кажется, когда-то ещё по //do можно было вызывать на исполнение Форт-код (тогда его Ява обрабатывала, как синоним админкоманде //forth), но это не слово Форта. И впоследствии эти команды были убраны, так как сейчас сервер обрабатывает как Форт-команды всё, что не понял, как админ-команды.

>каким образом Ява поймет что надо при команде //do обратится к коду в data/jbforth...

Сервер, получив админ-команду (//<command>) сперва ищет Форт-слово admin_<command>. Находит - выполняет. Нет - ищет соответствующий Java-хэндлер. Не находит - пытается выполнить Форт-команду <command>.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

photon

новичок
>>Например //do скажем эта команда описана в data/jbforth...и в яве ./net/sf/......
Balancer> А "в яве" где? DO - это, вообще-то, штатное слово стандартного Форта. Начало цикла с параметром :)

Я этим не хотел показать конкретную задачу на команду //do
я имел ввиду не конкретно \\ду а любую команду ведь при //(неважно что тут будет) он отправляет запрос на данную команду пускай даже //notworkthiscommand он ищет такую команду и выполняет действие связанное с ним....

Ну так вот интересует всвязи с ответом следуещее :
Почему сработает не в яве а в форзе если скажем Форя только прикручен к серверу ??или у него приоритет выше??
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

Balancer

администратор
★★★★★
Вот точный код. Надеюсь, тут всё понятно :)

gameserver/clientpackets/SendBypassBuildCmd.java
code java
  1.     void runImpl()
  2.     {
  3.         if(Config.DEBUG)
  4.             _log.info("Got command '" + _command + "'");
  5.  
  6.         L2Player activeChar = getClient().getActiveChar();
  7.  
  8.         if(activeChar == null)
  9.             return;
  10.  
  11.         String word = (_command.split("\\s+"))[0];
  12.         String args = _command.substring(word.length()).trim();
  13.  
  14.         if(JBForth.word_exists("admin_" + word))
  15.         {
  16.  
  17.             if(Config.DEBUG)
  18.                 _log.info("Parsed by forth as '" + args + "' admin_" + word);
  19.             if(!(activeChar.getPlayerAccess().IsGM || activeChar.getPlayerAccess().CanUseGMCommand))
  20.             {
  21.                 activeChar.illegalAction(activeChar.getName() + " user use adm command admin_" + _command, 200);
  22.                 return;
  23.             }
  24.             JBForth tmp = new JBForth(activeChar);
  25.             tmp.st.push(args);
  26.             tmp.execp("admin_" + word);
  27.             return;
  28.         }
  29.  
  30.         if(JBForth.word_exists("gm_" + word))
  31.         {
  32.             if(Config.DEBUG)
  33.                 _log.info("Parsed by forth as '" + args + "' gm_" + word);
  34.             if(!(activeChar.getPlayerAccess().IsGM || activeChar.getPlayerAccess().CanUseGMCommand))
  35.             {
  36.                 activeChar.illegalAction(activeChar.getName() + " user use adm command admin_" + _command, 200);
  37.                 return;
  38.             }
  39.             JBForth tmp = new JBForth(activeChar);
  40.             tmp.st.push(args);
  41.             tmp.execp("gm_" + word);
  42.             return;
  43.         }
  44.  
  45.         IAdminCommandHandler ach = AdminCommandHandler.getInstance().getAdminCommandHandler("admin_" + _command);
  46.         if(ach != null)
  47.         {
  48.             if(!(activeChar.getPlayerAccess().IsGM || activeChar.getPlayerAccess().CanUseGMCommand))
  49.             {
  50.                 activeChar.illegalAction(activeChar.getName() + " user use adm command admin_" + _command, 200);
  51.                 return;
  52.             }
  53.             ach.useAdminCommand("admin_" + _command, activeChar);
  54.             return;
  55.         }
  56.  
  57.         if(activeChar.getPlayerAccess().UseForth)
  58.         {
  59.             if(Config.DEBUG)
  60.                 _log.info("Eval by JBForth");
  61.             activeChar.getJBForth().execp(_command);
  62.             return;
  63.         }
  64.  
  65.         activeChar.sendMessage("No access to use forth or command '" + _command + "' not recognized");
  66.     }
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

photon

новичок
Я сделал следуещее:
Добавил из вашей сборки все что знал что можно добавить:
(jbforth и main.f в корень сервера)
(Форз коды из balance/data/jbforth в l2sf/data/jbforth)
(изменил gameserver.bat вставил java %-jar jbforth.jar%)
(Добавил в Корень ваши код сервера так как без него все ошибками засыпало оно и неудевительно что он не знал что такое playr@ после добавления вашего кода явы ошибки изчезли но одна всетаки осталась

Exception in thread "main" java.lang.NoClassDefFoundError: javolution/util/Fast
ist$Node
at l2f.extensions.jbforth.characters$do_players.exec(characters.java:21)
at ru.balancer.JBForth.do_word(JBForth.java:398)
at ru.balancer.JBForth.do_code(JBForth.java:249)
at ru.balancer.JBForth.do_code(JBForth.java:227)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:4)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:355)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:345)
at ru.balancer.JBForth.tryAsFile(JBForth.java:334)
at ru.balancer.JBForth.do_code(JBForth.java:306)
at ru.balancer.JBForth.do_code(JBForth.java:227)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:4)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:355)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:342)
at ru.balancer.JBForth.tryAsFile(JBForth.java:331)
at ru.balancer.JBForth.do_code(JBForth.java:306)
at ru.balancer.JBForth.do_code(JBForth.java:227)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:4)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:355)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:342)
at ru.balancer.JBForth.tryAsFile(JBForth.java:331)
at ru.balancer.JBForth.do_code(JBForth.java:306)
at ru.balancer.JBForth.do_code(JBForth.java:227)
at ru.balancer.jbforth.words.FileSystem$included.exec(FileSystem.java:4)
at ru.balancer.JBForth.tryAsFileExact(JBForth.java:355)
at ru.balancer.JBForth.tryAsFileWithPath(JBForth.java:339)
at ru.balancer.JBForth.tryAsFile(JBForth.java:334)
at ru.balancer.JBForth.do_code(JBForth.java:306)
at ru.balancer.JBForth.do_code(JBForth.java:219)
at ru.balancer.JBForth.exec(JBForth.java:138)
at ru.balancer.JBForth.execp(JBForth.java:149)
at ru.balancer.JBForth.reload(JBForth.java:119)
at ru.balancer.JBForth.<init>(JBForth.java:92)
at ru.balancer.JBForth.main(JBForth.java:592)
INFO : loading gameserver config)

Сервер запускается с двумя движками с Вашим и с СФ папки l2f и net ..из jar архива убраны все файлы так что он не использует l2jserver.jar...
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

photon

новичок
Рома ответь пожалуйста в Жабе или хоть в Асе ....В асе тебя знакомый мой видит каждый день а в Жабе ты не появляешся..
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

phoptik

разработчик L2J Fortress

Ты Форт к СТ прикручиваеш ?
 
+
-
edit
 

photon

новичок
phoptik> Ты Форт к СТ прикручиваеш ?
Пробую...Конкретной цели сделать это у меня нету!
А ты можешь что то мне посоветоввать на этот счет??
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

photon

новичок
вставил так
java -jar jbforth.jar
ibmaio.jar;log4j-1.2.14.jar;bsf.jar;bsh-2.0.jar;javolution.jar;c3p0-0.9.0.4.jar;mysql-connector-java-3.1.10-bin.jar;l2j-gameserver.jar;jython.jar net.sf.l2j.gameserver.GameServer


Сервер виснет при старте выводит=

Starting L2J Game Server.
JBForth loaded

и все...

Добавил только скаченный с СВН JBforth И main.f
Лед тронулся господа присяжные заседатели...  
UA SoulKeeper #12.12.2006 23:56
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

Оно и в помине работать не должно.
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  
+
-
edit
 

photon

новичок
SoulKeeper> Оно и в помине работать не должно.

Содержательный ответ....Все понял большое спасибо.!
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

phoptik

разработчик L2J Fortress

photon, забей, я уверен что ты не сможеш это сделать.
 
+
-
edit
 

photon

новичок
phoptik> photon, забей, я уверен что ты не сможеш это сделать.

И тебе спасибо добрый человек на добром слове=)
Лед тронулся господа присяжные заседатели...  
+
-
edit
 

photon

новичок
И вобще..! Танки грязи не боятся...!!
Не поможите сам сделаю просто времени больше потрачу...
Лед тронулся господа присяжные заседатели...  
1 2 3 4

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