OoYaololo 27 Опубликовано 24 апреля, 2013 Мужики такой вопрос вобшем есть премиум аккаунт в админке! подскажите как его сделать чтоб могли пользоваться все да и вот еше package custom.ServiceManager; import java.io.File; import java.io.FileReader; import java.io.LineNumberReader; import java.util.HashMap; import java.util.Map; import ru.catssoftware.gameserver.datatables.ItemTable; import ru.catssoftware.gameserver.handler.IVoicedCommandHandler; import ru.catssoftware.gameserver.handler.VoicedCommandHandler; 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; public class ServiceManager extends Quest { private static String qn = "ServiceManager"; private static class Price { private int []_itemId; private int []_prices; public Price(int []items, int[]count) { _itemId = items; _prices = count; } } private static Map<Integer, Price> _premiumPrice = new HashMap<Integer, Price>(); private static Map<Integer, Price> _heroPrice = new HashMap<Integer, Price>(); private static Price _colorPrice = new Price(new int[] {57}, new int [] {10000}); private static Price _NoblesPrice = new Price(new int[] {4037}, new int [] {5}); private String colorTable = ""; public ServiceManager() { super(-1,qn,"custom"); // ================= ЦЕНЫ РќРђ ДВОРЯНСТВО ======== // РґРЅРё, new Price(new int[] {через , РР” предметов},new int[] {через , количество}); _premiumPrice.put(1,new Price(new int[] { 57},new int[] {1000})); _premiumPrice.put(30,new Price(new int[] { 4037, 57},new int[] {10, 10000})); _premiumPrice.put(60,new Price(new int[] { 4037, 57},new int[] {17, 15000})); // ================ ЦЕНЫ РќРђ ГЕРОРР—Рњ =============== _heroPrice.put(1, new Price(new int[] { 4037},new int[] {1})); _heroPrice.put(10, new Price(new int[] { 4037,17},new int[] {1,1})); // Таблица цветов РёР· 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"); colorTable +="<tr>"; for(int i=0;i<colors.length;i++) colorTable+="<td><a action=\"bypass -h Quest "+qn+" color "+colors+"\"><font color=\""+colors+"\">%name%</font></a></td>"; colorTable +="</tr>"; } } catch(Exception e) { System.out.println("Error reading "+f.getParent()+"/colors.table"); } } 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; } @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 "no-money.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("colorlist")) { // РЎРїРёСЃРѕРє цветов String html = "<html><body><br>Выбор цвета<table width=220>"; html+=(colorTable.replace("%name%", player.getName())); html+="</table></body></html>"; return html; } else if(args[0].equals("color")) { //Смена цвета if(!checkMoney(player, _colorPrice)) return "no-money.htm"; int color = Integer.parseInt(args[1],16); // Получаем цвет Рё меняем старший Рё младший байты color = (color & 0xFF) << 16 | (color & 0xff0000) >> 16 | (color & 0xff00); // Меняем цвет Рё посылаем всем пакет что цвет сменен player.getAppearance().setNameColor(color); player.broadcastFullInfo(); return "success.htm"; } return "hello.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 "hello.htm"; } public static void main(String[] args) { ServiceManager ps = new ServiceManager(); ps.addFirstTalkId(50025); // РњС‹ РЅРµ хотим писать диалог для этого РќРџР¦ ps.addStartNpc(50025); // Автоматический контроль состояния квеста ps.addTalkId(50025); // NPC СЃ которым РјРѕ Вот как этого сервесного менждера в игру поставить с меня спасибка буду очень благодарен=) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
IIPOCIIEKT 33 Опубликовано 24 апреля, 2013 в папку с квестами. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
OoYaololo 27 Опубликовано 24 апреля, 2013 в папку с квестами. братюня ты говори что иенно там типо два вопроса а вот этот файл уже стоит в квестах Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
OoYaololo 27 Опубликовано 24 апреля, 2013 Прост овсем спасибо +++++ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Brawn 22 Опубликовано 24 апреля, 2013 =) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты