Мужики такой вопрос вобшем есть премиум аккаунт в админке! подскажите как его сделать чтоб могли пользоваться все
да и вот еше 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 с которым мо
Вот как этого сервесного менждера в игру поставить с меня спасибка буду очень благодарен=)