Russian 49 Опубликовано 5 августа, 2013 И так выкладываю личный кабинет для оверов package services.community.custom; import org.mmocore.gameserver.Config; import org.mmocore.gameserver.data.htm.HtmCache; import org.mmocore.gameserver.handler.bbs.CommunityBoardManager; import org.mmocore.gameserver.handler.bbs.ICommunityBoardHandler; import org.mmocore.gameserver.handler.voicecommands.IVoicedCommandHandler; import org.mmocore.gameserver.handler.voicecommands.VoicedCommandHandler; import org.mmocore.gameserver.model.Player; import org.mmocore.gameserver.scripts.ScriptFile; import org.mmocore.gameserver.serverpackets.ShowBoard; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.SimpleDateFormat; /** * @author Russian * * Реализовано: * - реализовал вывод ника * - реализовал вывод статуса аккаунта, Обычный или Премиум * - реализовал вывод рейтов и изменение значений когда включен премиум аккаунт * - реализовал вывод названия общего аккаунта персонажа * - реализовал вывод клана и если игрок не состоит то пишем "нет клана" * - реализовал вывод IP адресса аккаунта */ public class CommunityAccount implements ScriptFile, ICommunityBoardHandler { private static final Logger _log = LoggerFactory.getLogger(CommunityAccount.class); @Override public String[] getBypassCommands() { return new String[]{ "_bbsaccount", //страница кабинета "_bbsaccount_help", //страница помощи "_bbsaccount_cfg", //различные настройки "_bbsaccount_bind", //безопасность "_bbsaccount_repair", //восстановить персонажа "_bbsaccount_password", //изменить пароль }; } @Override public void onBypassCommand(Player player, String bypass) { if (bypass.equals("_bbsaccount")) { showMain(player); } else if (bypass.equals("_bbsaccount_help")) { showHelp(player); } else if (bypass.startsWith("_bbsaccount_cfg")) { IVoicedCommandHandler cfg_voice = VoicedCommandHandler.getInstance().getVoicedCommandHandler("cfg"); if (cfg_voice != null) { cfg_voice.useVoicedCommand("cfg", player, ""); return; } } else if (bypass.startsWith("_bbsaccount_bind")) { IVoicedCommandHandler bind_voice = VoicedCommandHandler.getInstance().getVoicedCommandHandler("bind"); if (bind_voice != null) { bind_voice.useVoicedCommand("bind", player, ""); return; } } else if (bypass.startsWith("_bbsaccount_repair")) { IVoicedCommandHandler repair_voice = VoicedCommandHandler.getInstance().getVoicedCommandHandler("repair"); if (repair_voice != null) { repair_voice.useVoicedCommand("repair", player, ""); return; } } else if (bypass.startsWith("_bbsaccount_password")) { IVoicedCommandHandler password_voice = VoicedCommandHandler.getInstance().getVoicedCommandHandler("password"); if (password_voice != null) { password_voice.useVoicedCommand("password", player, ""); return; } } } private String getStatus(Player player) { return player.isPremium() ? "<font color=\"LEVEL\">премиум</font>" : "обычный"; } private void showMain(Player player) { if (player == null) { return; } String htm = HtmCache.getInstance().getNotNull("scripts/services/community/account/main.htm", player); StringBuilder sb = new StringBuilder(); SimpleDateFormat format_time = new SimpleDateFormat("HH:mm:ss"); SimpleDateFormat format_days = new SimpleDateFormat("dd"); //Отдельные переменные htm = htm.replace("<?content?>", sb.toString()); htm = htm.replace("<?Name_Server?>", Config.NAME_SERVER); //Ниже выводим информацию из переменных htm = htm.replace("<?STATUS_ACCOUNT?>", getStatus(player)); htm = htm.replace("<?NAME_ACCOUNT?>", "<font color=\"LEVEL\">" + player.getName() + "</font>"); htm = htm.replace("<?ACCOUNT_IP?>", player.getIP()); htm = htm.replace("<?ACCOUNT_CLAN?>", player.getClan() == null ? "нет клана" : player.getClan().getName() + ", уровень " + player.getClan().getLevel()); htm = htm.replace("<?ACCOUNT_MAIN?>", player.getAccountName()); htm = htm.replace("<?CHARACTER_ONLINE?>", format_time.format(player.getOnlineTime()) + ", дней " + format_days.format(player.getOnlineTime())); //вывести правильно игровое время персонажа игрока //Ниже выводим из опций рейты htm = htm.replace("<?RATE_XP?>", String.valueOf(player.getPremiumExp())); htm = htm.replace("<?RATE_SP?>", String.valueOf(player.getPremiumSp())); htm = htm.replace("<?RATE_ADENA?>", String.valueOf(player.getPremiumAdena())); htm = htm.replace("<?RATE_ITEMS?>", String.valueOf(player.getPremiumItems())); htm = htm.replace("<?RATE_SPOIL?>", String.valueOf(player.getPremiumSpoil())); htm = htm.replace("<?RATE_ATT?>", String.valueOf(player.getPremiumAttrChance())); htm = htm.replace("<?RATE_ENCHANT?>", String.valueOf(player.getPremiumEnchChance())); ShowBoard.separateAndSend(htm, player); } private void showHelp(Player player) { if (player == null) { return; } String htm = HtmCache.getInstance().getNotNull("scripts/services/community/account/help.htm", player); StringBuilder sb = new StringBuilder(); //Отдельные переменные htm = htm.replace("<?content?>", sb.toString()); htm = htm.replace("<?Name_Server?>", Config.NAME_SERVER); ShowBoard.separateAndSend(htm, player); } @Override public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5) {} @Override public void onLoad() { if (Config.COMMUNITYBOARD_ENABLED) { _log.info("CommunityBoard: Account loaded."); CommunityBoardManager.getInstance().registerHandler(this); } } @Override public void onReload() { CommunityBoardManager.getInstance().removeHandler(this); } @Override public void onShutdown() {} } P.S привязку делать самим. Config.java public static String NAME_SERVER; NAME_SERVER = properties.getProperty("CommunityNameServer", "Russian"); <html><body><center> <table><tr> <td><button value="Главная" action="bypass _bbspage:index" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> <td><button value="Магазин" action="bypass _bbspage:shop" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> <td><button value="Баффы" action="bypass _cbbsbuffer 0" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> <td><button value="Карьера" action="bypass _bbservices profession" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> <td><button value="Телепорт" action="bypass _cbbsteleportlist" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> <td><button value="Кабинет" action="bypass _bbsaccount" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> <td><button value="Справка" action="bypass _bbspage:help" width=90 height=25 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td> </tr></table> <img src="L2UI.SquareWhite" width=600 height=1><table width=600 bgcolor=A7A19A><tr><td height=20 width=600> <font color=LEVEL> <a action="bypass _bbspage:index"><?Name_Server?></a> -> Кабинет</font> </td></tr></table> <img src="L2UI.SquareWhite" width=600 height=1> <table width=350> <tr> <td valign=top> <table width=250 background="L2UI_CH3.refinewnd_back_Pattern" border=0 height=5> <tr> <td align="center"><br><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbsaccount_bind" value="Безопасность"></td> </tr> <tr> <td align="center"><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbs_add_fav" value="Журнал доступа"></td> </tr> <tr> <td align="center"><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbsaccount_password" value="Изменить пароль"></td> </tr> <tr> <td align="center"><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbsaccount_repair" value="Восстановить персонажа"></td> </tr> <tr> <td align="center"><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbsaccount_cfg" value="Различные настройки"></td> </tr> <tr> <td align="center"><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbs_add_fav" value="Привилегии"></td> </tr> <tr> <td align="center"><button width=173 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" action="bypass -h _bbsaccount_help" value="Помощь"><br></td> </tr> </table> <table width=310 border=0> <tr><td width=200> </td></tr> </table> </td> <td valign=top> <img src="L2UI.SquareWhite" width=291 height=1> <table width=298 bgcolor=A7A19A> <tr><td align="center"> <font color=LEVEL>ИНФОРМАЦИЯ АККАУНТА</font> </td></tr></table> <img src="L2UI.SquareWhite" width=291 height=1> <table width=292 bgcolor=414141 border=0 height=5> <tr> <td>Ваш ip: <?ACCOUNT_IP?></td> </tr> <tr> <td>Статус аккаунта: <?STATUS_ACCOUNT?></td> </tr> <tr> <td>Общий аккаунт персонажа: <?ACCOUNT_MAIN?></td> </tr> <tr> <td>Находитесь в клане: <?ACCOUNT_CLAN?></td> </tr> <tr> <td>Ник персонажа: <?NAME_ACCOUNT?></td> </tr> <tr> <td>Время игры: <?CHARACTER_ONLINE?></td> </tr> </table> <img src="L2UI.SquareWhite" width=291 height=1> <td valign=top> <img src="L2UI.SquareWhite" width=291 height=1> <table width=300 bgcolor=A7A19A> <tr><td align="center"> <font color=LEVEL>ИНФОРМАЦИЯ РЕЙТОВ</font> </td></tr></table> <img src="L2UI.SquareWhite" width=291 height=1> <table width=300 bgcolor=414141 border=0 height=5> <tr> <td>Хп: <font color=LEVEL>х<?RATE_XP?></font></td> </tr> <tr> <td>Сп: <font color=LEVEL>х<?RATE_SP?></font></td> </tr> <tr> <td>Адена: <font color=LEVEL>х<?RATE_ADENA?></font></td> </tr> <tr> <td>Предметы: <font color=LEVEL>х<?RATE_ITEMS?></font></td> </tr> <tr> <td>Спойл: <font color=LEVEL>х<?RATE_SPOIL?></font></td> </tr> <tr> <td>Шанс аттрибута: <font color=LEVEL>%<?RATE_ATT?></font></td> </tr> <tr> <td>Шанс заточки: <font color=LEVEL>%<?RATE_ENCHANT?></font></td> </tr> </table> <img src="L2UI.SquareWhite" width=291 height=1> </td> </tr> </table> </center></body></html> 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BORDIR 62 Опубликовано 7 августа, 2013 Ты писал, что не знаешь, как l2-dev поместили его в Избранное. Что мешает вместо main.htm поместить кабинет в bbs_getfavorite.htm? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BORDIR 62 Опубликовано 7 августа, 2013 \html-ru\scripts\services\community Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Russian 49 Опубликовано 8 августа, 2013 Весь прикол не будет работать =). У них то по другому, и я кажется знаю как сделать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Violence 11 Опубликовано 29 сентября, 2013 Кто знает у l2 dev после покупки сборки можно будет личный каб на главную выводить ? ну что бы типа приветствие в кб + мини информация по вашему чару и тд и тп. Там разработчик нормальный , и вообще кто пользуеться их продуктом , что можете сказать о них ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты