Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Community board l2j Interlude
#1
Товарищи, кто-нибудь знает, как, вообще, заставить работать вкладки mail и friends. Чтобы они были способны хотя бы что-нибудь отображать. В самом коде _bbsmail и _bbsfrieds задаются, но толку от них ноль. Прошу Вас о помощи а заранее спасибо!
Мне кажется проблема в этом куске кода
Код:
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package net.sf.l2j.gameserver.serverpackets;

import java.util.List;

public class ShowBoard extends L2GameServerPacket
{
    private static final String _S__6E_SHOWBOARD = "[S] 6e ShowBoard";

    private String _htmlCode;
    private String _id;
    private List<String> _arg;

    public ShowBoard(String htmlCode, String id)
    {
        _id = id;
        _htmlCode = htmlCode; // html code must not exceed 8192 bytes
    }

    public ShowBoard(List<String> arg)
    {
        _id = "1002";
        _htmlCode = null;
        _arg = arg;

    }

    private byte[] get1002()
    {
        int len = _id.getBytes().length * 2 + 2;
        for (String arg : _arg)
        {
            len += (arg.getBytes().length + 4) * 2;
        }
        byte data[] = new byte[len];
        int i = 0;
        for (int j = 0; j < _id.getBytes().length; j++, i += 2)
        {
            data[i] = _id.getBytes()[j];
            data[i + 1] = 0;
        }
        data[i] = 8;
        i++;
        data[i] = 0;
        i++;
        for (String arg : _arg)
        {
            for (int j = 0; j < arg.getBytes().length; j++, i += 2)
            {
                data[i] = arg.getBytes()[j];
                data[i + 1] = 0;
            }
            data[i] = 0x20;
            i++;
            data[i] = 0x0;
            i++;
            data[i] = 0x8;
            i++;
            data[i] = 0x0;
            i++;
        }
        return data;
    }

    @Override
    protected final void writeImpl()
    {
        writeC(0x6e);
        writeC(0x01); //c4 1 to show community 00 to hide
        writeS("bypass _bbshome"); // top
        writeS("bypass _bbsgetfav"); // favorite
        writeS("bypass _bbsloc"); // region
        writeS("bypass _bbsclan"); // clan
        writeS("bypass _bbsmemo"); // memo
        writeS("bypass _bbsmail"); // mail
        writeS("bypass _bbsfriends"); // friends
        writeS("bypass _bbs_add_fav"); // add fav.
        if (!_id.equals("1002"))
        {
            // getBytes is a very costy operation, and should only be called once
            byte htmlBytes[] = null;
            if (_htmlCode != null)
                htmlBytes = _htmlCode.getBytes();
            byte data[] = new byte[2 + 2 + 2 + _id.getBytes().length * 2 + 2
                * ((_htmlCode != null) ? htmlBytes.length : 0)];
            int i = 0;
            for (int j = 0; j < _id.getBytes().length; j++, i += 2)
            {
                data[i] = _id.getBytes()[j];
                data[i + 1] = 0;
            }
            data[i] = 8;
            i++;
            data[i] = 0;
            i++;
            if (_htmlCode == null)
            {

            }
            else
            {
                for (int j = 0; j < htmlBytes.length; i += 2, j++)
                {
                    data[i] = htmlBytes[j];
                    data[i + 1] = 0;
                }
            }
            data[i] = 0;
            i++;
            data[i] = 0;
            writeS(_htmlCode); // current page
            writeB(data);
        }
        else
        {
            writeB(get1002());
        }
    }

    /* (non-Javadoc)
     * @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
     */
    @Override
    public String getType()
    {
        return _S__6E_SHOWBOARD;
    }
}
Ответ
#2
Если в сборке это не реализовано то соответсвенно не работает. Вам надо писать класс который будет обрабатывать команды _bbsmail и _bbsfrieds. Иначе никак.

И кстати, не трогайте код который привели в своем посте. Там все Ок.

Копать нужно здесь: net.sf.l2j.gameserver.communityboard
Ответ
#3
Там я уже заправил в принципе. Вот пример кода
Код:
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package net.sf.l2j.gameserver.communitybbs;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.communitybbs.tables.AddFav;
import net.sf.l2j.gameserver.communitybbs.tables.Clan;
import net.sf.l2j.gameserver.communitybbs.tables.Fav;
import net.sf.l2j.gameserver.communitybbs.tables.Fr;
import net.sf.l2j.gameserver.communitybbs.tables.Home;
import net.sf.l2j.gameserver.communitybbs.tables.Loc;
import net.sf.l2j.gameserver.communitybbs.tables.Mail;
import net.sf.l2j.gameserver.communitybbs.tables.Memo;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.L2GameClient;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.serverpackets.ShowBoard;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;

public class CommunityBoard
{
    private static CommunityBoard _instance;

    public CommunityBoard()
    {
    }

    public static CommunityBoard getInstance()
    {
        if (_instance == null)
        {
            _instance = new CommunityBoard();
        }

        return _instance;
    }

    public void handleCommands(L2GameClient client, String command)
    {
        L2PcInstance activeChar = client.getActiveChar();
        if(activeChar == null)
            return;

        if(Config.COMMUNITY_TYPE.equals("full"))
        {
            if (command.startsWith("_bbshome"))
            {
                Home.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbsgetfav"))
            {
                Fav.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbsloc"))
            {
                Loc.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbsclan"))
            {
                Clan.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbsmemo"))
            {
                Memo.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbsmail"))
            {
                Mail.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbsfriends"))
            {
                Fr.getInstance().parsecmd(command,activeChar);
            }
            else if(command.startsWith("_bbs_add_fav"))
            {
                AddFav.getInstance().parsecmd(command,activeChar);
            }
            else
            {
                ShowBoard sb = new ShowBoard("<html><body><br><br><center>the command: "+command+" is not implemented yet</center><br><br></body></html>","101");
                activeChar.sendPacket(sb);
                activeChar.sendPacket(new ShowBoard(null,"102"));
                activeChar.sendPacket(new ShowBoard(null,"103"));
            }
        }
        else  if(Config.COMMUNITY_TYPE.equals("old"))
        {
            Loc.getInstance().parsecmd(command,activeChar);
        }
        else
        {
            activeChar.sendPacket(new SystemMessage(SystemMessageId.CB_OFFLINE));
        }
    }
    /**
     * @param client
     * @param url
     * @param arg1
     * @param arg2
     * @param arg3
     * @param arg4
     * @param arg5
     */
    public void handleWriteCommands(L2GameClient client, String url, String arg1, String arg2, String arg3, String arg4, String arg5)
    {
        L2PcInstance activeChar = client.getActiveChar();
        if(activeChar == null)
            return;

        if (Config.COMMUNITY_TYPE.equals("full"))
        {
            if (url.equals("Topic"))
            {
                Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
            } else if (url.equals("Post"))
            {
                Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
            } else if (url.equals("Region"))
            {
                Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
            } else
            {
                ShowBoard sb = new ShowBoard("<html><body><br><br><center>the command: " + url + " is not implemented yet</center><br><br></body></html>", "101");
                activeChar.sendPacket(sb);
                activeChar.sendPacket(new ShowBoard(null, "102"));
                activeChar.sendPacket(new ShowBoard(null, "103"));
            }
        } else if (Config.COMMUNITY_TYPE.equals("old"))
        {
            Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
        } else
        {
            ShowBoard sb = new ShowBoard("<html><body><br><br><center>The Community board is currently disable</center><br><br></body></html>", "101");
            activeChar.sendPacket(sb);
            activeChar.sendPacket(new ShowBoard(null, "102"));
            activeChar.sendPacket(new ShowBoard(null, "103"));
        }
    }
}
Ответ
#4
работает так. пишите класс (примеры в пакете manager помоему, в грации точно), этот класс будет обрабатывать пришедшую команду (handler), добавляете в CommunityBoard активацию этого хендлера (если пришла соответствующая команда), ну и собсно все будет работать. можешь в скайп вопросы задавать, если реал будет желание разобраться, а не чтоб за тебя сделали, я помогу
Ответ
#5
Так я и так сам всё пытаюсь сделать) Просто почему работают все, кроме mail и friends...
Ответ
#6
Неожиданно нашёл решение этой задачи! Если кому-то интересно прошу в пм всё довольно легко решается.
Ответ
#7
И как же их включить?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [Share] PTS Vanganth - Classic Interlude P110 zoumhs 0 1,541 05-13-2023, 05:04 PM
Последний пост: zoumhs
  Требуется Тех. Администратор на сервер Interlude/High Five! sfmusic 1 1,350 03-15-2023, 01:11 PM
Последний пост: Adamheers
  WTS PTS L2OFF Vanganth - Classic interlude protocol 110 zoumhs 0 1,246 01-29-2023, 01:39 AM
Последний пост: zoumhs
  Продам лицензию Luecra Interlude OrfiSs 0 1,457 03-28-2022, 05:56 PM
Последний пост: OrfiSs
  PetitionD сервис на interlude off atomicos 0 1,334 03-28-2022, 03:19 PM
Последний пост: atomicos
  Interlude Test Server. yoqoyoqo 4 1,671 03-11-2021, 11:57 PM
Последний пост: krisadr
  Kamael Client - Interlude Server Katia666 3 2,583 11-03-2020, 10:51 AM
Последний пост: FaintSmile
  Interlude в 2020 Chessy 6 2,388 09-09-2020, 10:45 PM
Последний пост: Shell
  Продается готовый проект Lineage 2 Interlude PTS L2Rage 2 1,964 02-26-2019, 05:29 AM
Последний пост: kolibri
  Проблема с квестами Interlude MIKE11 4 2,167 12-05-2017, 09:36 PM
Последний пост: MIKE11

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)