Сообщений: 5
Тем: 1
Зарегистрирован: Oct 2012
Репутация:
5
Всем привет.
Сборки от вованов98 для слабаков и ничему меня не научат, поэтому я собираю свою на основе официальной L2J Server.
Суть такова: хочу сделать, чтобы при нажатии на ссылку в коммунити, игроку слался пакет, делающий рамку вокруг его уровня (как с премиумом). Пакет отправлял через Packet Forge, все работает.
Создал файл PlayerSendPremiumState.java такого содержания:
0
PHP код: <?php
package com.l2jserver.communityserver.network.writepackets;
import org.netcon.BaseWritePacket;
public final class PlayerSendPremiumState extends BaseWritePacket
{
public PlayerSendPremiumState(final int playerObjId)
{
writeC(0xFE);
writeH(0xD9);
writeD(playerObjId);
writeC(1);
}
}
в ParseCmd добавил:
0
PHP код: <?php
else if (cmd.split(";")[1].equalsIgnoreCase("mycommand"))
{
mycommandHandler(playerObjId);
}
Ну и собственно сама функция:
0
PHP код: <?php
public final void mycommandHandler(final int playerObjId){
super.getCommunityBoardManager().getGST().sendPacket(new PlayerSendPremiumState(playerObjId));
}
Но когда я в игре нажимаю на свою кнопку в коммунити, сервер мне выдает ошибку:
Цитата:Exception in thread "Normal Packet Pool-5" java.lang.NegativeArraySizeException
at org.netcon.BaseReadPacket.readB(BaseReadPacket.java:97)
at com.l2jserver.gameserver.network.communityserver.readpackets.RequestP
layerShowBoard.run(RequestPlayerShowBoard.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Что я делаю не так? Все по аналогии с существующими файлами.
Или может, где-нибудь существуют шарные исходники Community Board сервера с более богатым функционалом, чем у стандартной?
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
cpp Написал:Всем привет.
Сборки от вованов98 для слабаков и ничему меня не научат, поэтому я собираю свою на основе официальной L2J Server. Правильный выбор да
cpp Написал:Суть такова: хочу сделать, чтобы при нажатии на ссылку в коммунити, игроку слался пакет, делающий рамку вокруг его уровня (как с премиумом). Пакет отправлял через Packet Forge, все работает.
Создал файл PlayerSendPremiumState.java такого содержания:
0
PHP код: <?php
package com.l2jserver.communityserver.network.writepackets;
import org.netcon.BaseWritePacket;
public final class PlayerSendPremiumState extends BaseWritePacket
{
public PlayerSendPremiumState(final int playerObjId)
{
writeC(0xFE);
writeH(0xD9);
writeD(playerObjId);
writeC(1);
}
}
в ParseCmd добавил:
0
PHP код: <?php
else if (cmd.split(";")[1].equalsIgnoreCase("mycommand"))
{
mycommandHandler(playerObjId);
}
Ну и собственно сама функция:
0
PHP код: <?php
public final void mycommandHandler(final int playerObjId){
super.getCommunityBoardManager().getGST().sendPacket(new PlayerSendPremiumState(playerObjId));
}
Но когда я в игре нажимаю на свою кнопку в коммунити, сервер мне выдает ошибку:
Что я делаю не так? Все по аналогии с существующими файлами.
Или может, где-нибудь существуют шарные исходники Community Board сервера с более богатым функционалом, чем у стандартной?Какие хроники? Пакетка привязана к хроникам, на каком-то с4 нет рамки вокруг ника соотвественно отправлять нечего. И какая ошибка коммьюнити?
Сообщений: 3,968
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
ТС, нужно наследовать класс L2GameServerPacket, а не BaseWritePacket.
Сообщений: 5
Тем: 1
Зарегистрирован: Oct 2012
Репутация:
5
Zubastic Написал:Какие хроники? Пакетка привязана к хроникам, на каком-то с4 нет рамки вокруг ника соотвественно отправлять нечего. И какая ошибка коммьюнити? High Five, a у сервера последняя ревизия (на позавчера). Рамка точно есть, ибо я отправил этот пакет через админку в игре (встроенная тулза Packet Forge) и рамка появилась. Коммьюнити ошибок не выдает. Ошибка та вылезает в геймсервере.
Ro_0TT Написал:ТС, нужно наследовать класс L2GameServerPacket, а не BaseWritePacket. Но ведь L2GameServerPacket нету в Community, а я хочу именно по нажатию в коммьюнити сообщить клиенту, что началось действие преимума.
Или можно заинклудить файлы из геймсервера в коммьюнити?
А может лучше редактировать встроенный в геймсервер коммьюнитисервер? Вроде бы он видит L2GameServerPacket, по крайней мере IDE показыват его в автозаполнении.
Я делал так: отключил его совсем (поставил CommunityType = 0 в General.properties) и запускал CommunityServer, который на svn валяется отдельно.
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Посмотрите реализацию у фениксов. Там это точно было сделано или у оверов.
Сообщений: 3,968
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
Zubastic Написал:Посмотрите реализацию у фениксов. Там это точно было сделано или у оверов.
Что? у них нет отдельного КБ сервера ).
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Ro_0TT Написал:Что? у них нет отдельного КБ сервера ). Какой пакет и откуда, дальше можно уже пытаться переделывать под себя.
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
10-23-2012, 12:57 PM
(Сообщение последний раз редактировалось: 10-23-2012, 01:21 PM Visor.)
Лично я не понял л2ж, зачем вообще было делать отдельный коммунити серрвер - если на входе потоки. Грубо говоря бесполезную работу проделали в очередной раз.
По сабжу - шлите вдогонку пакет ПА со значнием включенного ПА.
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Visor, типа оффлайк. На оффе же комьюнити - отдельный сервис.
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
Zubastic Написал:Visor, типа оффлайк. На оффе же комьюнити - отдельный сервис. Видимо никто не задумался, что офлайк не всегда лучшая конструкция, если результат тотже...
|