Перейти к содержанию
Авторизация  
OoYaololo

Lucera

Рекомендуемые сообщения

Мужики такой вопрос вобшем есть премиум аккаунт в админке! подскажите как его сделать чтоб могли пользоваться все

да и вот еше 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 с которым мо

 

 

Вот как этого сервесного менждера в игру поставить с меня спасибка буду очень благодарен=)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в папку с квестами.

братюня ты говори что иенно там типо два вопроса а вот этот файл уже стоит в квестах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...