Axis 25 Опубликовано 21 апреля, 2015 всем привет! подскажите пожалуйста как заставить класс менеджера брать названия профессий из таблицы char_templates? исходный код - феникс. на данный момент менеджер берет информацию из ядра ClassID.class собственно и названия профессий он показывает не корректно (elvenFighter, elvenKnight, templeKnight, swordSinger)я понимаю что надо добавить импорт на саму базу char_templates. но код не могу осилить.собственно сам код: package core.sunshine.game.model.instances; import java.util.StringTokenizer; import java.util.logging.Logger; import core.sunshine.Config; import core.sunshine.utilities.ext.scripts.Functions; import core.sunshine.utilities.ext.scripts.ScriptFile; import core.sunshine.game.cache.Msg; import core.sunshine.game.model.L2Player; import core.sunshine.game.model.base.ClassId; import core.sunshine.game.network.serverpackets.NpcHtmlMessage; import core.sunshine.game.network.serverpackets.SystemMessage; import core.sunshine.game.tables.ItemTable; import core.sunshine.game.templates.L2Item; import core.sunshine.game.templates.L2NpcTemplate; import core.sunshine.utilities.util.Files; import core.sunshine.utilities.util.Util; public final class L2ClassMasterInstance extends L2MerchantInstance implements ScriptFile { private static Logger _log = Logger.getLogger(L2ClassMasterInstance.class.getName()); public L2ClassMasterInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } private String makeMessage(L2Player player) { ClassId classId = player.getClassId(); int jobLevel = classId.getLevel(); int level = player.getLevel(); StringBuilder html = new StringBuilder("<html><head><title>Miki Cat</title></head>"); html.append("<center>"); //if (player.getLang().equalsIgnoreCase("ru")) { html.append(player.isLangRu() ? "* * * Менеджер профессий * * *" : "* * * Proff Manager * * *"); html.append("<img src=\"l2ui.squaregray\" width=\"250\" height=\"1\"><br>"); /*} else { html.append("* * * Proff Manager * * *"); html.append("<img src=\"l2ui.squaregray\" width=\"250\" height=\"1\"><br>"); }*/ if (Config.ALLOW_CLASS_MASTERS_LIST.isEmpty() || !Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel)) { jobLevel = 4; } if ((level >= 20 && jobLevel == 1 || level >= 40 && jobLevel == 2 || level >= 76 && jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel)) { L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM); if (Config.CLASS_MASTERS_PRICE_LIST[jobLevel] > 0) { html.append("Стоимость: <font color=\"LEVEL\">"); html.append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LIST[jobLevel])).append("</font> ").append(item.getName()).append("<br>"); } for (ClassId cid : ClassId.values()) { if (cid.childOf(classId) && cid.getLevel() == classId.getLevel() + 1) { html.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_change_class ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\"><font color=\"LEVEL\">").append(cid.name()).append("</font></a><br>"); } } player.sendPacket(new NpcHtmlMessage(player, this).setHtml(html.toString())); } else { switch (jobLevel) { case 1: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Возвращайтесь, РєРѕРіРґР° достигнете 20 СѓСЂРѕРІРЅСЏ, чтобы сменить вашу профессию.<br>"); } else { html.append("Come back here when reached level 20 to change your class.<br>"); } break; case 2: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Возвращайтесь, РєРѕРіРґР° достигнете 40 СѓСЂРѕРІРЅСЏ, чтобы сменить вашу профессию.<br>"); } else { html.append("Come back here when reached level 40 to change your class.<br>"); } break; case 3: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Возвращайтесь, РєРѕРіРґР° достигнете 76 СѓСЂРѕРІРЅСЏ, чтобы сменить вашу профессию.<br>"); } else { html.append("Come back here when reached level 76 to change your class.<br>"); } break; case 4: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Для вас больше нет доступных профессий.<br>"); } else { html.append("There is no class changes for you any more.<br>"); } break; } } html.append("<img src=\"l2ui.squaregray\" width=\"250\" height=\"1\">"); html.append("</center></body></html>"); return html.toString(); } @Override public void showChatWindow(L2Player player, int val) { NpcHtmlMessage msg = new NpcHtmlMessage(player, this, null, 0); String html = Files.read("data/html/custom/31860.htm", player); if (Config.SERVICES_CLASSMASTERS_BASIC_SHOP) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h npc_%objectId%_Buy 318601\">Купить обычные вещи</a>"; } else { html += "<br><a action=\"bypass -h npc_%objectId%_Buy 318601\">Buy basic items</a>"; } } if (Config.SERVICES_CLASSMASTERS_COL_SHOP) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h npc_%objectId%_Multisell 1\">Продвинутый магазин</a>"; } else { html += "<br><a action=\"bypass -h npc_%objectId%_Multisell 1\">Special shop</a>"; } } if (Config.SERVICES_CHANGE_NICK_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Rename:rename_page\">Смена РЅРёРєР°</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Rename:rename_page\">Nick change</a>"; } } if (Config.SERVICES_CHANGE_SEX_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Rename:changesex_page\">Смена пола</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Rename:changesex_page\">Sex change</a>"; } } if (Config.SERVICES_CHANGE_NICK_COLOR_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.NickColor:list\">Смена цвета РЅРёРєР°</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.NickColor:list\">Nick color change</a>"; } } if (Config.SERVICES_RATE_BONUS_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:list\">Премиум аккаунт</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:list\">Premium Account</a>"; } } if (Config.SERVICES_RATE_SPECIAL_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Bonus.bonus:show\">Премиум рейты</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Bonus.bonus:show\">Premium rates</a>"; } } if (Config.SERVICES_NOBLESS_SELL_ENABLED && !player.isNoble()) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.NoblessSell:get\">Стать РґРІРѕСЂСЏРЅРёРЅРѕРј</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.NoblessSell:get\">Become a Nobless</a>"; } } if (Config.SERVICES_HOW_TO_GET_COL) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:howtogetcol\">Как получить Coin of Mif</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:howtogetcol\">How to get Coin of Mif</a>"; } } if (Config.SERVICES_DONATE) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_events.donate.Shop:Chalange 10\">Donate Услуги</a>"; } else { html += "<br><a action=\"bypass -h scripts_events.donate.Shop:Chalange 10\">Donate</a>"; } } if (Config.SERVICES_CHANGE_PET_NAME_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showErasePetName\">Обнулить РёРјСЏ Сѓ пета</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showErasePetName\">Delete Pet's Name</a>"; } } if (Config.SERVICES_EXCHANGE_BABY_PET_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showBabyPetExchange\">Обменять Baby пета</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showBabyPetExchange\">Change Baby Pet</a>"; } } if (Config.SERVICES_EXPAND_INVENTORY_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ExpandInventory:show\">Сервис расширения инвентаря</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ExpandInventory:show\">Service of expansion of inventory</a>"; } } if (Config.SERVICES_EXPAND_WAREHOUSE_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ExpandWarhouse:show\">Сервис расширения склада</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ExpandWarhouse:show\">Service of expansion of WareHouse</a>"; } } if (Config.SERVICES_EXPAND_CWH_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ExpandCWH:show\">Сервис расширения кланового склада</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ExpandCWH:show\">Service of expansion of Clan WareHouse</a>"; } } if (Config.SERVICES_WINDOW_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Window:show\">Сервис расширения числа РѕРєРѕРЅ</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Window:show\">Service of expansion of number of windows</a>"; } } if (Config.SERVICES_CHANGE_CLAN_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ServiceClan:clan_rename_page\">Смена названия клана</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ServiceClan:clan_rename_page\">Change Clan Name</a>"; } } if (Config.ENCHANT_MASTER_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_events.enchanter.Main:Chalange\">Мастер заточки</a>"; } else { html += "<br><a action=\"bypass -h scripts_events.enchanter.Main:Chalange\">Enchant</a>"; } } msg.setHtml(html); msg.replace("%classmaster%", makeMessage(player)); player.sendPacket(msg); } @Override public void onBypassFeedback(L2Player player, String command) { StringTokenizer st = new StringTokenizer(command); if (st.nextToken().equals("change_class")) { short val = Short.parseShort(st.nextToken()); int price = Integer.parseInt(st.nextToken()); L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM); L2ItemInstance pay = player.getInventory().getItemByItemId(item.getItemId()); if (pay != null && pay.getCount() >= price) { player.getInventory().destroyItem(pay, price, true); changeClass(player, val); } else if (Config.CLASS_MASTERS_PRICE_ITEM == 57) { player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA); } else { player.sendPacket(Msg.INCORRECT_ITEM_COUNT); } } else { super.onBypassFeedback(player, command); } } private void changeClass(L2Player player, short val) { if (Config.DEBUG) { _log.fine("Changing class to ClassId:" + val); _log.fine("name:" + player.getName()); _log.fine("level:" + player.getLevel()); _log.fine("classId:" + player.getClassId()); } if (player.getClassId().getLevel() == 3) { player.sendPacket(new SystemMessage(SystemMessage.YOU_HAVE_COMPLETED_THE_QUEST_FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CLASS_CONGRATULATIONS)); // для 3 профы } else { player.sendPacket(new SystemMessage(SystemMessage.CONGRATULATIONS_YOU_HAVE_TRANSFERRED_TO_A_NEW_CLASS)); // для 1 Рё 2 профы } player.setClassId(val, false); player.broadcastUserInfo(true); player.rewardSkills(); if (Config.CLASS_MASTERS_SAY != "") { String text = Config.CLASS_MASTERS_SAY.replaceFirst("%player%", player.getName()).replaceFirst("%prof%", player.getClassId().name()); Functions.npcShout(this, text); } } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Izonami 31 Опубликовано 21 апреля, 2015 Прости и где он тебе выдает названия профессий в таком виде ? В логах ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Axis 25 Опубликовано 21 апреля, 2015 в самом диалоге с НПЦ при выборе профессий Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Axis 25 Опубликовано 21 апреля, 2015 где-то тут собака зарыта? } for (ClassId cid : ClassId.values()) { if (cid.childOf(classId) && cid.getLevel() == classId.getLevel() + 1) { html.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_change_class ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\"><font color=\"LEVEL\">").append(cid.name()).append("</font></a><br>"); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Axis 25 Опубликовано 21 апреля, 2015 (изменено) с диалогом разобрался! это заменяем html.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_change_class ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\"><font color=\"LEVEL\">").append(cid.name()).append("</font></a><br>"); на вот это html.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_change_class ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\"><font color=\"LEVEL\">").append(CharTemplateTable.getInstance().getClassNameById(cid.getId())).append("</font></a><br>"); добавил импорт import core.sunshine.game.tables.CharTemplateTable; осталось изменить в фразе которую он выкрикивает при смене профы private void changeClass(L2Player player, short val) { if (Config.DEBUG) { _log.fine("Changing class to ClassId:" + val); _log.fine("name:" + player.getName()); _log.fine("level:" + player.getLevel()); _log.fine("classId:" + player.getClassId()); } if (player.getClassId().getLevel() == 3) { player.sendPacket(new SystemMessage(SystemMessage.YOU_HAVE_COMPLETED_THE_QUEST_FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CLASS_CONGRATULATIONS)); // для 3 профы } else { player.sendPacket(new SystemMessage(SystemMessage.CONGRATULATIONS_YOU_HAVE_TRANSFERRED_TO_A_NEW_CLASS)); // для 1 Рё 2 профы } player.setClassId(val, false); player.broadcastUserInfo(true); player.rewardSkills(); if (Config.CLASS_MASTERS_SAY != "") { String text = Config.CLASS_MASTERS_SAY.replaceFirst("%player%", player.getName()).replaceFirst("%prof%", player.getClassId().name()); Functions.npcShout(this, text); что все тру кодеры в танки играют? Изменено 21 апреля, 2015 пользователем Axis Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Axis 25 Опубликовано 21 апреля, 2015 ну что ж... разобрался во всем сам! String text = Config.CLASS_MASTERS_SAY.replaceFirst("%player%", player.getName()).replaceFirst("%prof%", CharTemplateTable.getInstance().getClassNameById(val)); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Axis 25 Опубликовано 21 апреля, 2015 весь код. кстати это у всех кто на исходном коде феникса. package core.sunshine.game.model.instances; import java.util.StringTokenizer; import java.util.logging.Logger; import core.sunshine.Config; import core.sunshine.utilities.ext.scripts.Functions; import core.sunshine.utilities.ext.scripts.ScriptFile; import core.sunshine.game.cache.Msg; import core.sunshine.game.model.L2Player; import core.sunshine.game.model.base.ClassId; import core.sunshine.game.network.serverpackets.NpcHtmlMessage; import core.sunshine.game.network.serverpackets.SystemMessage; import core.sunshine.game.tables.ItemTable; import core.sunshine.game.tables.CharTemplateTable; import core.sunshine.game.templates.L2Item; import core.sunshine.game.templates.L2NpcTemplate; import core.sunshine.utilities.util.Files; import core.sunshine.utilities.util.Util; public final class L2ClassMasterInstance extends L2MerchantInstance implements ScriptFile { private static Logger _log = Logger.getLogger(L2ClassMasterInstance.class.getName()); public L2ClassMasterInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } private String makeMessage(L2Player player) { ClassId classId = player.getClassId(); int jobLevel = classId.getLevel(); int level = player.getLevel(); StringBuilder html = new StringBuilder("<html><head><title>Miki Cat</title></head>"); html.append("<center>"); //if (player.getLang().equalsIgnoreCase("ru")) { html.append(player.isLangRu() ? "* * * Менеджер профессий * * *" : "* * * Proff Manager * * *"); html.append("<img src=\"l2ui.squaregray\" width=\"250\" height=\"1\"><br>"); /*} else { html.append("* * * Proff Manager * * *"); html.append("<img src=\"l2ui.squaregray\" width=\"250\" height=\"1\"><br>"); }*/ if (Config.ALLOW_CLASS_MASTERS_LIST.isEmpty() || !Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel)) { jobLevel = 4; } if ((level >= 20 && jobLevel == 1 || level >= 40 && jobLevel == 2 || level >= 76 && jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel)) { L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM); if (Config.CLASS_MASTERS_PRICE_LIST[jobLevel] > 0) { if (player.getLang().equalsIgnoreCase("ru")) { html.append("Стоимость: <font color=\"LEVEL\">"); html.append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LIST[jobLevel])).append("</font> ").append(item.getName()).append("<br>"); } } else { html.append("Cost: <font color=\"LEVEL\">"); html.append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LIST[jobLevel])).append("</font> ").append(item.getName()).append("<br>"); } for (ClassId cid : ClassId.values()) { if (cid.childOf(classId) && cid.getLevel() == classId.getLevel() + 1) { html.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_change_class ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\"><font color=\"LEVEL\">").append(CharTemplateTable.getInstance().getClassNameById(cid.getId())).append("</font></a><br>"); } } player.sendPacket(new NpcHtmlMessage(player, this).setHtml(html.toString())); } else { switch (jobLevel) { case 1: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Возвращайтесь, когда достигнете 20 уровня, чтобы сменить вашу профессию.<br>"); } else { html.append("Come back here when reached level 20 to change your class.<br>"); } break; case 2: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Возвращайтесь, когда достигнете 40 уровня, чтобы сменить вашу профессию.<br>"); } else { html.append("Come back here when reached level 40 to change your class.<br>"); } break; case 3: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Возвращайтесь, когда достигнете 76 уровня, чтобы сменить вашу профессию.<br>"); } else { html.append("Come back here when reached level 76 to change your class.<br>"); } break; case 4: if (player.getLang().equalsIgnoreCase("ru")) { html.append("Для вас больше нет доступных профессий.<br>"); } else { html.append("There is no class changes for you any more.<br>"); } break; } } html.append("<img src=\"l2ui.squaregray\" width=\"250\" height=\"1\">"); html.append("</center></body></html>"); return html.toString(); } @Override public void showChatWindow(L2Player player, int val) { NpcHtmlMessage msg = new NpcHtmlMessage(player, this, null, 0); String html = Files.read("data/html/custom/31860.htm", player); if (Config.SERVICES_CLASSMASTERS_BASIC_SHOP) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h npc_%objectId%_Buy 318601\">Купить обычные вещи</a>"; } else { html += "<br><a action=\"bypass -h npc_%objectId%_Buy 318601\">Buy basic items</a>"; } } if (Config.SERVICES_CLASSMASTERS_COL_SHOP) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h npc_%objectId%_Multisell 1\">Продвинутый магазин</a>"; } else { html += "<br><a action=\"bypass -h npc_%objectId%_Multisell 1\">Special shop</a>"; } } if (Config.SERVICES_CHANGE_NICK_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Rename:rename_page\">Смена ника</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Rename:rename_page\">Nick change</a>"; } } if (Config.SERVICES_CHANGE_SEX_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Rename:changesex_page\">Смена пола</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Rename:changesex_page\">Sex change</a>"; } } if (Config.SERVICES_CHANGE_NICK_COLOR_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.NickColor:list\">Смена цвета ника</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.NickColor:list\">Nick color change</a>"; } } if (Config.SERVICES_RATE_BONUS_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:list\">Премиум аккаунт</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:list\">Premium Account</a>"; } } if (Config.SERVICES_RATE_SPECIAL_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Bonus.bonus:show\">Премиум рейты</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Bonus.bonus:show\">Premium rates</a>"; } } if (Config.SERVICES_NOBLESS_SELL_ENABLED && !player.isNoble()) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.NoblessSell:get\">Стать дворянином</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.NoblessSell:get\">Become a Nobless</a>"; } } if (Config.SERVICES_HOW_TO_GET_COL) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:howtogetcol\">Как получить Coin of Mif</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.RateBonus.RateBonus:howtogetcol\">How to get Coin of Mif</a>"; } } if (Config.SERVICES_DONATE) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_events.donate.Shop:Chalange 10\">Donate Услуги</a>"; } else { html += "<br><a action=\"bypass -h scripts_events.donate.Shop:Chalange 10\">Donate</a>"; } } if (Config.SERVICES_CHANGE_PET_NAME_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showErasePetName\">Обнулить имя у пета</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showErasePetName\">Delete Pet's Name</a>"; } } if (Config.SERVICES_EXCHANGE_BABY_PET_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showBabyPetExchange\">Обменять Baby пета</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.petevolve.exchange:showBabyPetExchange\">Change Baby Pet</a>"; } } if (Config.SERVICES_EXPAND_INVENTORY_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ExpandInventory:show\">Сервис расширения инвентаря</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ExpandInventory:show\">Service of expansion of inventory</a>"; } } if (Config.SERVICES_EXPAND_WAREHOUSE_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ExpandWarhouse:show\">Сервис расширения склада</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ExpandWarhouse:show\">Service of expansion of WareHouse</a>"; } } if (Config.SERVICES_EXPAND_CWH_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ExpandCWH:show\">Сервис расширения кланового склада</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ExpandCWH:show\">Service of expansion of Clan WareHouse</a>"; } } if (Config.SERVICES_WINDOW_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.Window:show\">Сервис расширения числа окон</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.Window:show\">Service of expansion of number of windows</a>"; } } if (Config.SERVICES_CHANGE_CLAN_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_services.ServiceClan:clan_rename_page\">Смена названия клана</a>"; } else { html += "<br><a action=\"bypass -h scripts_services.ServiceClan:clan_rename_page\">Change Clan Name</a>"; } } if (Config.ENCHANT_MASTER_ENABLED) { if (player.getLang().equalsIgnoreCase("ru")) { html += "<br><a action=\"bypass -h scripts_events.enchanter.Main:Chalange\">Мастер заточки</a>"; } else { html += "<br><a action=\"bypass -h scripts_events.enchanter.Main:Chalange\">Enchant</a>"; } } msg.setHtml(html); msg.replace("%classmaster%", makeMessage(player)); player.sendPacket(msg); } @Override public void onBypassFeedback(L2Player player, String command) { StringTokenizer st = new StringTokenizer(command); if (st.nextToken().equals("change_class")) { short val = Short.parseShort(st.nextToken()); int price = Integer.parseInt(st.nextToken()); L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM); L2ItemInstance pay = player.getInventory().getItemByItemId(item.getItemId()); if (pay != null && pay.getCount() >= price) { player.getInventory().destroyItem(pay, price, true); changeClass(player, val); } else if (Config.CLASS_MASTERS_PRICE_ITEM == 57) { player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA); } else { player.sendPacket(Msg.INCORRECT_ITEM_COUNT); } } else { super.onBypassFeedback(player, command); } } private void changeClass(L2Player player, short val) { if (Config.DEBUG) { _log.fine("Changing class to ClassId:" + val); _log.fine("name:" + player.getName()); _log.fine("level:" + player.getLevel()); _log.fine("classId:" + player.getClassId()); } if (player.getClassId().getLevel() == 3) { player.sendPacket(new SystemMessage(SystemMessage.YOU_HAVE_COMPLETED_THE_QUEST_FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CLASS_CONGRATULATIONS)); // для 3 профы } else { player.sendPacket(new SystemMessage(SystemMessage.CONGRATULATIONS_YOU_HAVE_TRANSFERRED_TO_A_NEW_CLASS)); // для 1 и 2 профы } player.setClassId(val, false); player.broadcastUserInfo(true); player.rewardSkills(); if (Config.CLASS_MASTERS_SAY != "") { String text = Config.CLASS_MASTERS_SAY.replaceFirst("%player%", player.getName()).replaceFirst("%prof%", CharTemplateTable.getInstance().getClassNameById(val)); Functions.npcShout(this, text); } } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты