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

 
1 2 3 4
+
-
edit
 

Malish

новичок
Вот за етот ответ большое спасибо тебе Balancer :)

Сложность корректно задать вопрос была в том, что не знаешь как же ето все работает и с чего начать, а вот после етого ответа теперь можно поискать откуда ноги растут.
 

Murkt

Pythoneer

Abaddon, Вы конечно наверно очень умный человек, если пользоваться программами или утилитами учитесь по их исходникам.
 

Ну не знаю, но мне гораздо проще оказалось написать что-нибудь на форте, поглядывая в его исходники =)
[team Їжачки - сумні падлюки]  
+
-
edit
 

Malish

новичок
Имея большой опыт программирования, то не спорю. Нео в Матрице вообще в етом отношении был куда более продвинут :)
 

Murkt

Pythoneer

Имея большой опыт программирования, то не спорю. Нео в Матрице вообще в етом отношении был куда более продвинут :)
 

Я программить с L2J и начал.
[team Їжачки - сумні падлюки]  

Styx

разработчик l2j-сервера
Я программить с L2J и начал.
 

Я вообще джавой занялся с исходников сервера :) (понтанулся)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

Balancer

администратор
★★★★★
Я вообще джавой занялся с исходников сервера :) (понтанулся)
 


+1 :)
 
+
-
edit
 
+1 :)
 
+1 :)
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  

Murkt

Pythoneer

Может мне ещё линейку достать?
[team Їжачки - сумні падлюки]  

Styx

разработчик l2j-сервера
Может мне ещё линейку достать?
 

Беспонтово, ты тут не при делах :P
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

masterXL

разработчик OpenWorlds
а чего меряем? ???
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  
+
-
edit
 
+
-
edit
 

Malish

новичок
Сейчас делаю, чтобы команды форта можно было вводить через консоль клиента. В файле SendBypassBuildCmd.java добавил строчки:

if(activeChar.getAccessLevel() >= Config.GM_USE_FORTH)
{
if(Config.DEBUG) _log.warning("Eval by JBForth");
activeChar.jbf.execp(_command);
return;
}

строка activeChar.jbf.execp(_command); выдает ошибку:

net.sf.l2j.gameserver.clientpackets.ClientBasePacket run
SEVERE: error handling client message [C] 5b SendBypassBuildCmd
java.lang.NullPointerException
at net.sf.l2j.gameserver.clientpackets.SendBypassBuildCmd.runImpl(SendBypassBuildCmd.java:106)
at net.sf.l2j.gameserver.clientpackets.ClientBasePacket.run(ClientBasePacket.java:57)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

я не понимаю в чем ошибка, где ковыряться для ее исправления или объясните принцип как организовать ввод через игровую консоль команд Форта.


 

Murkt

Pythoneer

Которая строка - 106?

activeChar.jbf.execp(_command); - у игрока есть jbf?
[team Їжачки - сумні падлюки]  
+
-
edit
 

Malish

новичок
106 и есть activeChar.jbf.execp(_command);

> activeChar.jbf.execp(_command); - у игрока есть jbf?

Муркт, я не понял вопроса, если можна, то напиши как для чайника, я все-таки Java тока несколько дней вижу :)

 

Murkt

Pythoneer

jbf != null?
[team Їжачки - сумні падлюки]  
+
-
edit
 

Malish

новичок
Хм, всего скорей он равен null, покапаюсь в етом напрвлении, пасиба.
 

Murkt

Pythoneer

сделай jbf приватным, и вызывай его по getJBForth() у игрока, что-то по типу такого


public JBForth getJBForth()
{
if(jbf == null)
jbf = new JBForth(this);
return jbf;
}
[team Їжачки - сумні падлюки]  
+
-
edit
 

Malish

новичок
Дело в том, что я смотрю как ето сделано по старым сборкам Фортресса и пытаюсь привести к данному виду "свою" сборку, т.е. надо думаю поискать где идет определение в других файлах.
 

Murkt

Pythoneer

В старых было сделано напрямую, да.

Если в Эклипсе - юзай Ctrl+H, Ctrl+Alt+H, etc. Посмотри менюшки Source, Refactor, Navigate.
[team Їжачки - сумні падлюки]  
+
-
edit
 

Malish

новичок
Консоль заработа, решение было в следующем: в файл L2PcInstance добавил строку jbf = new JBForth(this);
 
+
-
edit
 

Malish

новичок
Имеется код:

for(L2PcInstance player : L2World.getAllPlayers())
{
JBForth jbf_tmp = new JBForth(player);
jbf_tmp.st.push(jbf.getObject());
jbf_tmp.execp("to caller "+code);
}

при компиляции выдается ошибка вида:

[javac] I:l2jsftrunkjavanetsfl2jextensionsjbforthcharacters.java:12
4: non-static method getAllPlayers() cannot be referenced from a static context
[javac] for(L2PcInstance player : L2World.getAllPlayers(
))
[javac] ^

объясните пожалуста, что ето за ошибка и в каком месте копать?
 

Murkt

Pythoneer

L2World.getInstance().getAllPlayers()
[team Їжачки - сумні падлюки]  
+
-
edit
 

Malish

новичок
Я как понял, то строку L2World.getAllPlayers() заменить на L2World.getInstance().getAllPlayers() ?
 

Murkt

Pythoneer

Да. Потому что тебе нужна нестатическая функция, а значит нужно получить объект L2World, а не его класс.

Так как мир на сервере может быть только один, то его конструктор спрятан, а наружу выставлен только getInstance(). Если интересно - порыскай по инету насчёт шаблона проектирования singleton. Можешь это почитать, например.
[team Їжачки - сумні падлюки]  
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Malish

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

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