dragoni 2 Опубликовано 8 октября, 2013 вот такая вот беда что не так кто знает????? вот КОД package custom.servicem; import java.io.File; import java.io.FileReader; import java.io.LineNumberReader; import java.util.HashMap; import java.util.Map; import java.sql.SQLException; import java.sql.Connection; import java.sql.PreparedStatement; import ru.catssoftware.gameserver.network.SystemChatChannelId; import ru.catssoftware.gameserver.network.serverpackets.CreatureSay; import ru.catssoftware.gameserver.datatables.CharNameTable; import ru.catssoftware.gameserver.datatables.ItemTable; import ru.catssoftware.gameserver.handler.IVoicedCommandHandler; import ru.catssoftware.gameserver.handler.VoicedCommandHandler; import ru.catssoftware.gameserver.model.L2World; import ru.catssoftware.gameserver.datatables.SkillTable; import ru.catssoftware.gameserver.network.serverpackets.PledgeSkillList; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.quest.Quest; import ru.catssoftware.gameserver.model.quest.QuestState; import ru.catssoftware.gameserver.util.PcAction; import ru.catssoftware.gameserver.model.itemcontainer.Inventory; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.model.L2ItemInstance; public class ServiceManager extends Quest { private static String qn = "ServiceManager"; private final static int ID_NPC_MANAGER = 50024; // ID Менеджера (NPC) private static class Price { private int []_itemId; private int []_prices; public Price(int []items, int[]count) { _itemId = items; _prices = count; } } /** * Настройки смены РЅРёРєР°: */ int priceChangeNameId = 9303; int priceChangeNameCount = 15; int priceChangeColorNameId = 9303; int priceChangeColorNameCount = 10; int priceItemIdAugment = 9303; int priceItemCountAugment = 40; int attributes; int skill; int level; int ItemIdClan = 9303; int ClanLevel6 = 5; int ClanLevel7 = 5; int ClanLevel8 = 5; int ClanCrpPrice = 5; int ClanCrpCount = 10000; int ClanSkillsCount = 30; String str = ""; private static Map<Integer, Price> _premiumPrice = new HashMap<Integer, Price>(); private static Map<Integer, Price> _heroPrice = new HashMap<Integer, Price>(); private static Price _NoblesPrice = new Price(new int[] {9303}, new int [] {5}); private String colorTable = "<html><body><br>Смена цвета: <font color=74bff5>"+priceChangeColorNameCount+" "+(ItemTable.getInstance().getItemName(priceChangeColorNameId))+"</font><br><center>"; public ServiceManager() { super(-1,qn,"custom"); // ================= ЦЕНЫ Р СњР С’ ДВОРЯНСТВО ======== // Р Т‘Р Р…Р С‘, new Price(new int[] {через , Р ВР” предРСетов},new int[] {через , количество}); _premiumPrice.put(1,new Price(new int[] { 9303},new int[] {1})); _premiumPrice.put(7,new Price(new int[] { 9303},new int[] {5})); _premiumPrice.put(14,new Price(new int[] { 9303},new int[] {10})); _premiumPrice.put(31,new Price(new int[] { 9303},new int[] {20})); // ================ ЦЕНЫ Р СњР С’ ГЕРОРВР—Рњ =============== _heroPrice.put(1, new Price(new int[] { 9303},new int[] {2})); _heroPrice.put(7, new Price(new int[] {9303},new int[] {15})); _heroPrice.put(31, new Price(new int[] {9303},new int[] {50})); // ================ РЎРїРёСЃРѕРє цветов РЅРёРєР° Рё титула =============== /* _colorPrice.put(1, new ColorId(new int[] {FFFF00},new int[] {голубым})); _colorPrice.put(2, new ColorId(new int[] {000000},new int[] {черным})); _colorPrice.put(3, new ColorId(new int[] {FF0000},new int[] {СЃРёРЅРёРј})); _colorPrice.put(4, new ColorId(new int[] {FF00FF},new int[] {розовым})); _colorPrice.put(5, new ColorId(new int[] {808080},new int[] {серым})); _colorPrice.put(6, new ColorId(new int[] {008000},new int[] {зеленым})); _colorPrice.put(7, new ColorId(new int[] {00FF00},new int[] {лаймовым})); _colorPrice.put(8, new ColorId(new int[] {800000},new int[] {темно-СЃРёРЅРёРј})); _colorPrice.put(9, new ColorId(new int[] {008080},new int[] {оливковым})); _colorPrice.put(10, new ColorId(new int[] {800080},new int[] {пурпурным})); _colorPrice.put(11, new ColorId(new int[] {808000},new int[] {СЃРёРЅРµ-зелёным})); _colorPrice.put(12, new ColorId(new int[] {FFFFFF},new int[] {белым})); _colorPrice.put(13, new ColorId(new int[] {00FFFF},new int[] {желтым})); _colorPrice.put(14, new ColorId(new int[] {C0C0C0},new int[] {серебряным})); _colorPrice.put(15, new ColorId(new int[] {17A0D4},new int[] {золотым})); */ // Таблица цветов РёР· colors.table File f = new File(getScriptFile()); try { LineNumberReader lnr = new LineNumberReader(new FileReader(f.getParent()+"/colors.table")); String line; while((line=lnr.readLine())!=null) { String []colors = line.split("\t"); for(int i=0;i<colors.length;i++) colorTable+="<a action=\"bypass -h Quest "+qn+" colorname "+colors+"\"><font color=\""+colors+"\">Выбрать цвет РЅРёРєР°</font></a> - <a action=\"bypass -h Quest "+qn+" colortitle "+colors+"\"><font color=\""+colors+"\">Выбрать цвет титула</font></a><br>"; } } catch(Exception e) { System.out.println("Error reading "+f.getParent()+"/colors.table"); } } public void criticalTo(L2PcInstance player, String text) { CreatureSay cs = new CreatureSay(0, SystemChatChannelId.Chat_Critical_Announce, "", text); player.sendPacket(cs); } private void updateAugment(L2PcInstance player, int attributes, int skill, int level) { L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) { criticalTo(player, "Р’С‹ должны одеть оружие."); } else if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()) { criticalTo(player, "Р’ оружие уже присутствует аугументация."); } else if (!checkMoney(player, priceItemIdAugment, priceItemCountAugment, true)) { criticalTo(player, "РЈ Вас недостаточно денег."); } else { try { Connection con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement stm = con.prepareStatement("REPLACE INTO item_attributes VALUES(?,?,?,?)"); stm.setInt(1, item.getObjectId()); stm.setInt(2, attributes*65536+1); stm.setInt(3, skill); stm.setInt(4, level); stm.execute(); criticalTo(player, "Аугументация прошла успешно. Вам нужно перезайти."); stm.close(); } catch (SQLException e) { _log.error("error creating augment shop data table ", e); } } } private boolean checkMoney(L2PcInstance player, Price price) { for(int i=0;i<price._itemId.length;i++) // Проверяем средства if(player.getInventory().getItemByItemId(price._itemId)==null || player.getInventory().getItemByItemId(price._itemId).getCount() < price._prices) { return false; // Нет денег? РЎРѕСЂРёРё } for(int i=0;i<price._itemId.length;i++) // Отнимаем средства Сѓ населения if(!player.destroyItemByItemId(qn, price._itemId, price._prices, null, true)) { return false; } return true; } private boolean checkMoney(L2PcInstance player, int itemId, int count, boolean destroy) { if(player.getInventory().getItemByItemId(itemId)==null || player.getInventory().getItemByItemId(itemId).getCount() < count) return false; // Нет денег? РЎРѕСЂРёРё if(destroy && !player.destroyItemByItemId(qn, itemId, count, null, true)) return false; return true; } @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { String []args = event.split(" "); // Разбираем строку параметров if(args[0].equals("premiumlist")) { // Формируем СЃРїРёСЃРѕРє доступных дней премиума String html = "<html><body><br>РџРѕРєСѓРїРєР° премиума:<br><center>"; for(int days : _premiumPrice.keySet()) { html+="<a action=\"bypass -h Quest "+qn+" premium "+days+"\">РќР° "+days+" дней</a> -"; Price price = _premiumPrice.get(days); for(int i=0;i<price._itemId.length;i++) { // Формируем СЃРїРёСЃРѕРє стоимости if(i!=0) // Добавляем , html+=","; html+=price._prices+" "+ItemTable.getInstance().getTemplate(price._itemId).getName(); } } html+="</center></body></html>"; return html; } else if(args[0].equals("herolist")) { // РЎРїРёСЃРѕРє достпуного геройства, аналогично премиуму String html = "<html><body><br>РџРѕРєСѓРїРєР° Геройства:<br><center>"; for(int days : _heroPrice.keySet()) { html+="<a action=\"bypass -h Quest "+qn+" hero "+days+"\">РќР° "+days+" дней</a> -"; Price price = _heroPrice.get(days); for(int i=0;i<price._itemId.length;i++) { // Формируем СЃРїРёСЃРѕРє стоимости if(i!=0) // Добавляем , html+=","; html+=price._prices+" "+ItemTable.getInstance().getTemplate(price._itemId).getName(); } } html+="</center></body></html>"; return html; } else if(args[0].equals("premium")) { // Выдаем премиум if(player.getPremiumService()!=0) // Проверяем Р° РЅРµ премимум ли чар? return "already-premium.htm"; int numDays = Integer.parseInt(args[1]); // Р’ Java массивы нумеруются СЃ 0 Price price = _premiumPrice.get(numDays); // Рщем цену РІ СЃРїРёСЃРєРµ цен if(price==null) // РќРµ нашли. Что-то тут РЅРµ то... return "invalid-param.htm"; if(!checkMoney(player,price)) // Проверяем деньги return "no-money.htm"; PcAction.addPremiumServices(player, numDays, player.getAccountName()); // Выдаем премиум // Показываем .premium меню IVoicedCommandHandler premium = VoicedCommandHandler.getInstance().getVoicedCommandHandler("premium"); if(premium!=null) premium.useVoicedCommand("premium", player, null); else return "success.htm"; } else if(args[0].equals("noblese")) { // Дворянство if(player.isNoble()) // РРіСЂРѕРє уже РЅСѓР±Р» return "already-noble.htm"; if(!checkMoney(player, _NoblesPrice)) // Проверяем Деньги return "Nobless.htm"; player.setNoble(true); // Даем нубла return "success.htm"; } else if(args[0].equals("hero")) { // Геройство if(player.isHero()) return "already-hero.htm"; int numDays = Integer.parseInt(args[1]); Price price = _heroPrice.get(numDays); // Рщем цену РІ СЃРїРёСЃРєРµ цен if(price==null) // РќРµ нашли. Что-то тут РЅРµ то... return "invalid-param.htm"; if(!checkMoney(player, price)) // Проверяем Деньги return "no-money.htm"; PcAction.addHeroStatus(player, numDays); // Даем героя Р РѕСЃСЃРёРё. return "success.htm"; } else if(args[0].equals("colorname")) { String colorsid = args[1]; if (!checkMoney(player, priceChangeColorNameId, priceChangeColorNameCount, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getAppearance().setNameColor(colorsid); L2World.getInstance().removeFromAllPlayers(player); player.store(); L2World.getInstance().addToAllPlayers(player); player.broadcastUserInfo(); criticalTo(player, "Р’С‹ успешно сменили цвет РЅРёРєР°!"); } } else if(args[0].equals("colortitle")) { String colorsid = args[1]; if (!checkMoney(player, priceChangeColorNameId, priceChangeColorNameCount, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getAppearance().setTitleColor(colorsid); L2World.getInstance().removeFromAllPlayers(player); player.store(); L2World.getInstance().addToAllPlayers(player); player.broadcastUserInfo(); criticalTo(player, "Р’С‹ успешно сменили цвет титула!"); } } else if(args[0].equals("augment")) { updateAugment(player, Integer.parseInt(args[1].substring(0,5)), Integer.parseInt(args[1].substring(6,10)), Integer.parseInt(args[1].substring(11,13))); } else if(args[0].equals("clanlevel6")) { if (!player.isClanLeader()) { criticalTo(player, "Р’С‹ РЅРµ глава клана. Только глава клана может это сделать."); } else if (player.getClan().getLevel() != 5) { criticalTo(player, "РЈ Вас РЅРµ верный уровень клана. Можете только РїСЂРё СѓСЂРѕРІРЅРµ клана 5"); } else if (!checkMoney(player, ItemIdClan, ClanLevel6, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getClan().changeLevel(6); L2World.getInstance().removeFromAllPlayers(player); player.store(); L2World.getInstance().addToAllPlayers(player); player.broadcastUserInfo(); criticalTo(player, "Р’С‹ успешно повысили левел клана РґРѕ 6 СѓСЂРѕРІРЅСЏ!"); } } else if(args[0].equals("clanlevel7")) { if (!player.isClanLeader()) { criticalTo(player, "Р’С‹ РЅРµ глава клана. Только глава клана может это сделать."); } else if (player.getClan().getLevel() != 6) { criticalTo(player, "РЈ Вас РЅРµ верный уровень клана. Можете только РїСЂРё СѓСЂРѕРІРЅРµ клана 6"); } else if (!checkMoney(player, ItemIdClan, ClanLevel7, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getClan().changeLevel(7); L2World.getInstance().removeFromAllPlayers(player); player.store(); L2World.getInstance().addToAllPlayers(player); player.broadcastUserInfo(); criticalTo(player, "Р’С‹ успешно повысили левел клана РґРѕ 7 СѓСЂРѕРІРЅСЏ!"); } } else if(args[0].equals("clanlevel8")) { if (!player.isClanLeader()) { criticalTo(player, "Р’С‹ РЅРµ глава клана. Только глава клана может это сделать."); } else if (player.getClan().getLevel() != 7) { criticalTo(player, "РЈ Вас РЅРµ верный уровень клана. Можете только РїСЂРё СѓСЂРѕРІРЅРµ клана 7"); } else if (!checkMoney(player, ItemIdClan, ClanLevel8, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getClan().changeLevel(; L2World.getInstance().removeFromAllPlayers(player); player.store(); L2World.getInstance().addToAllPlayers(player); player.broadcastUserInfo(); criticalTo(player, "Р’С‹ успешно повысили левел клана РґРѕ 8 СѓСЂРѕРІРЅСЏ!"); } } else if(args[0].equals("clanrepa")) { if (!player.isClanLeader()) { criticalTo(player, "Р’С‹ РЅРµ являетесь лидером клана"); } else if (!checkMoney(player, ItemIdClan, ClanCrpPrice, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getClan().setReputationScore(player.getClan().getReputationScore()+ClanCrpCount, true); criticalTo(player, "Ваш клан получил "+ClanCrpCount+" очков репутации! Сделайте релог."); } } else if(args[0].equals("clanskills")) { if (!player.isClanLeader()) { criticalTo(player, "Р’С‹ РЅРµ являетесь лидером клана"); } else if (player.getClan().getLevel() != { criticalTo(player, "РЈ Вас РЅРµ верный уровень клана. Можете только РїСЂРё СѓСЂРѕРІРЅРµ клана 8"); } else if (!checkMoney(player, ItemIdClan, ClanSkillsCount, true)) { criticalTo(player, "РЈ Вас РЅРµ хватает денег!"); } else { player.getClan().addNewSkill(SkillTable.getInstance().getInfo(370,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(371,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(372,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(373,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(374,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(375,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(376,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(377,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(378,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(379,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(380,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(381,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(382,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(383,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(384,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(385,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(386,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(387,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(388,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(389,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(390,3)); player.getClan().addNewSkill(SkillTable.getInstance().getInfo(391,1)); criticalTo(player, "Ваш клан получил РІСЃРµ Клановые Способности. Вам нужно перезайти."); player.getClan().addSkillEffects(true); player.getClan().broadcastToOnlineMembers(new PledgeSkillList(player.getClan())); } } else if(args[0].startsWith("changeName")) { String htmltext; if (args.length==1 || args.length>2) { htmltext = "<html><body>Смена имени: <font color=74bff5>"+priceChangeNameCount+" "+(ItemTable.getInstance().getItemName(priceChangeNameId))+"</font>"; htmltext += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI.SquareBlank\" width=260 height=2><br1>"; htmltext += "<center>Введите желаемое РёРјСЏ:</center>"; htmltext += "<center><edit var=\"nick\" width=200 length=\"16\"><br></center>"; htmltext += "<center><button value=\"Рзменить\" action=\"bypass -h Quest "+ qn +" changeName $nick\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"><br></center>"; htmltext += "<center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></center></body></html>"; return htmltext; } else if (args.length==2) { String name = args[1]; if (!name.matches("[a-zA-Z0-9!%:?()_+-@\\[\\]^]{3,16}") || name.contains("ADM") || name.contains("GM")) { criticalTo(player, "Ваш РЅРёРє РЅРµ соответствует правилам."); } else if (CharNameTable.getInstance().getByName(name) != null) { criticalTo(player, "Рто РёРјСЏ уже занято!"); } else if (player.getClanId()!=0) { criticalTo(player, "Р’С‹ должны выйти РёР· клана, прежде чем менять РЅРёРє. После РІС‹ можете войти обратно."); } else if (!checkMoney(player, priceChangeNameId, priceChangeNameCount, true)) { return "no-money.htm"; } else { player.setName(name); L2World.getInstance().removeFromAllPlayers(player); player.changeName(name); player.store(); L2World.getInstance().addToAllPlayers(player); player.broadcastUserInfo(); criticalTo(player, "Р’С‹ успешно сменили СЃРІРѕР№ РЅРёРє! Пожалуйста перезайдите."); } } } else if(args[0].equals("colorlist")) { colorTable = "<tr><td>"+colorTable+"</td></tr>"; colorTable += "<center></body></html>"; return colorTable; } else if(args[0].equals("clanlist")) { String html = "clanlist.htm"; return html; } else if(args[0].equals("active")) { String htmltext = "active.htm"; return htmltext; } else if(args[0].equals("passive")) { String htmltext = "passive.htm"; return htmltext; } else if(args[0].equals("chance")) { String htmltext = "chance.htm"; return htmltext; } return "donate.htm"; } @Override public String onFirstTalk(L2NpcInstance npc, L2PcInstance player) { return onTalk(npc, player); } @Override public String onTalk(L2NpcInstance npc, L2PcInstance player) { QuestState qs = player.getQuestState(qn); if(qs==null) qs = newQuestState(player); return "donate.htm"; } public static void main(String[] args) { ServiceManager ps = new ServiceManager(); ps.addFirstTalkId(ID_NPC_MANAGER); // РњС‹ РЅРµ хотим писать диалог для этого РќРџР¦ ps.addStartNpc(ID_NPC_MANAGER); // Автоматический контроль состояния квеста ps.addTalkId(ID_NPC_MANAGER); // NPC СЃ которым можно говорить. } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dragoni 2 Опубликовано 8 октября, 2013 Проблема в том что если не изменяю файл, то норм все без ошибок если изменяю ID все пипец ошибка!!!! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Aeore 326 Опубликовано 8 октября, 2013 notepad ++ юзай, это возможно при сохранении ошибки появляются Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
4ekist 106 Опубликовано 8 октября, 2013 notepad ++ юзай, это возможно при сохранении ошибки появляются да да именно так ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Fenixqq 70 Опубликовано 8 октября, 2013 люсю 1.7 сложно настроить я неделю парил себе мозги и не доконца настроил) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 8 октября, 2013 Недели мало. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dragoni 2 Опубликовано 8 октября, 2013 тоже самое( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dragoni 2 Опубликовано 9 октября, 2013 с нодои Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
se1dhe 501 Опубликовано 9 октября, 2013 (изменено) люсю 1.7 сложно настроить я неделю парил себе мозги и не доконца настроил) Пожалуйста, не отвечайте в теме, если вы не понимаете, о чем говорите. Уже не первый раз людей с толку сбиваете. ТС, на следующий раз - засовывайте код в теги code, и под спойлер. Код не читабелен, но из ошибки: Читайте о типах и кодировках Изменено 9 октября, 2013 пользователем seidhe Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jazzy 19 Опубликовано 9 октября, 2013 notepad++ Кодировки>Кодировки>Крилица>Windows-1251 Измени кодировку и всё... больше там ничего не надо :Р а ID меняется легко. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dragoni 2 Опубликовано 9 октября, 2013 кодировка норм стоит, дело не в ней! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты