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

PremiumManager NPC

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

Здравствуйте!
У меня есть сборка от Lucera с исходниками, в ней есть в скриптах файл PremiumManager.java который как я понял отвечает за раздачу премиум аккаунта населению, так вот, в нем я выставил npc с id 50030 так же добавил его в бд в таблицу custom_npc (50030    30082    Prem    1    Prem Manager    5    1    8    23    70    male    L2Npc    40    3862    1493            40    43    30    21    35    10    0    0    1314    470    780    382    278    0    999    0    0    0    80    120        0    1    0    LAST_HIT    0    0    0    balanced    false)
Скрипт в консоле загружается нормально при старте серва, нпц 50030 спавнится, но ни какого премиум диалога не появляется, там дефолтная страница разговора что типа нпц ничем помочь не может. Подскажите, как его оживить чтоб скрипт работал?
 
 

package ro0tt;



import ru.catssoftware.gameserver.datatables.ItemTable;
import ru.catssoftware.gameserver.handler.IAnswerHandler;
import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.quest.QuestState;
import ru.catssoftware.gameserver.network.serverpackets.ConfirmDlg;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;
import ru.catssoftware.gameserver.util.PcAction;
import ru.catssoftware.gameserver.util.TalkNpc;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ConcurrentHashMap;

public class PremiumManager extends TalkNpc implements IAnswerHandler
{
public static void main(String ...arg)
{
new PremiumManager();
}

public PremiumManager()
{
super("PremiumManager");
addNpc(50030);
answers = new ConcurrentHashMap();
_log.info("Premium Manager loaded.");
}

/*
Стоимость на 24 часа: 2 голды
Стоимость на 7 дней: 4 голды
Стоимость на 14 дней: 6 голды
Стоимость на 30 дней: 10 голды
*/
private static final int[][] packets =
{
{1, 9209, 2},
{7, 9209, 4},
{14, 9209, 6},
{30, 9209, 10}
};

private ConcurrentHashMap answers;

@@override
public String onFirstTalk(L2NpcInstance npc, L2PcInstance player)
{
return onTalk(npc, player);
}

@@override
public String onTalk(L2NpcInstance npc, L2PcInstance player)
{
QuestState qs = player.getQuestState(getName());
if (qs==null)
newQuestState(player);

npc.showChatWindow(player, 0);
return null;
}

@@override
public String onEvent(L2PcInstance player, String command)
{
if (command.matches("[0-9]+"))
{
int packet = Integer.parseInt(command);

if (packet >= 0 && packet < packets.length)
{
answers.put(player.getObjectId(), packet);
player.setAnswerHandler(this);
player.sendPacket(new ConfirmDlg("Вы уверены, что хотите подключить премиум на " + packets[packet][0] + " д.?"));
}
}

return fillHtml(player);
}

private String fillHtml(L2PcInstance player)
{
String content = getContentPage(player, "main");

for (int i = 0; i < packets.length; i++)
{
content = content.replace("%days"+i+"%", Integer.toString(packets[0]));
content = content.replace("%item"+i+"%", packets[2] + " " + ItemTable.getInstance().getItemName(packets[1]));
}

String time = player.isPremium() ? "до " + new SimpleDateFormat("dd/MM/yyyy HH:mm").format(new Date(player.getPremiumService())) + "" : "не подключен";
content = content.replace("%currentPremium%", time);

return content;
}

@@override
public void dialogAnswer(L2PcInstance player, boolean answer)
{
if (!answers.containsKey(player.getObjectId()) || !answer)
return;

int packet = answers.remove(player.getObjectId());

if (PcAction.removeItem(player, packets[packet][1], packets[packet][2], "premium"))
{
PcAction.addPremiumServices(player, player.getAccountName(), packets[packet][0]);
player.sendMessage("Поздравляем с приобретением премиум-аккаунта.");
}

int objectId = player.getTarget() != null && player.getTarget().isNpc() ? player.getTarget().getObjectId() : 0;
player.sendPacket(new NpcHtmlMessage(objectId, fillHtml(player).replace("%objectId%", Integer.toString(objectId))));
}
}

 

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


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

Здравствуйте!

У меня есть сборка от Lucera с исходниками, в ней есть в скриптах файл PremiumManager.java который как я понял отвечает за раздачу премиум аккаунта населению, так вот, в нем я выставил npc с id 50030 так же добавил его в бд в таблицу custom_npc (50030    30082    Prem    1    Prem Manager    5    1    8    23    70    male    L2Npc    40    3862    1493            40    43    30    21    35    10    0    0    1314    470    780    382    278    0    999    0    0    0    80    120        0    1    0    LAST_HIT    0    0    0    balanced    false)

Скрипт в консоле загружается нормально при старте серва, нпц 50030 спавнится, но ни какого премиум диалога не появляется, там дефолтная страница разговора что типа нпц ничем помочь не может. Подскажите, как его оживить чтоб скрипт работал?

 

 

package ro0tt;

 

import ru.catssoftware.gameserver.datatables.ItemTable;

import ru.catssoftware.gameserver.handler.IAnswerHandler;

import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;

import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;

import ru.catssoftware.gameserver.model.quest.QuestState;

import ru.catssoftware.gameserver.network.serverpackets.ConfirmDlg;

import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;

import ru.catssoftware.gameserver.util.PcAction;

import ru.catssoftware.gameserver.util.TalkNpc;

 

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.concurrent.ConcurrentHashMap;

 

public class PremiumManager extends TalkNpc implements IAnswerHandler

{

public static void main(String ...arg)

{

new PremiumManager();

}

 

public PremiumManager()

{

super("PremiumManager");

addNpc(50030);

answers = new ConcurrentHashMap();

_log.info("Premium Manager loaded.");

}

 

/*

Стоимость на 24 часа: 2 голды

Стоимость на 7 дней: 4 голды

Стоимость на 14 дней: 6 голды

Стоимость на 30 дней: 10 голды

*/

private static final int[][] packets =

{

{1, 9209, 2},

{7, 9209, 4},

{14, 9209, 6},

{30, 9209, 10}

};

 

private ConcurrentHashMap answers;

 

@@override

public String onFirstTalk(L2NpcInstance npc, L2PcInstance player)

{

return onTalk(npc, player);

}

 

@@override

public String onTalk(L2NpcInstance npc, L2PcInstance player)

{

QuestState qs = player.getQuestState(getName());

if (qs==null)

newQuestState(player);

 

npc.showChatWindow(player, 0);

return null;

}

 

@@override

public String onEvent(L2PcInstance player, String command)

{

if (command.matches("[0-9]+"))

{

int packet = Integer.parseInt(command);

 

if (packet >= 0 && packet < packets.length)

{

answers.put(player.getObjectId(), packet);

player.setAnswerHandler(this);

player.sendPacket(new ConfirmDlg("Вы уверены, что хотите подключить премиум на " + packets[packet][0] + " д.?"));

}

}

 

return fillHtml(player);

}

 

private String fillHtml(L2PcInstance player)

{

String content = getContentPage(player, "main");

 

for (int i = 0; i < packets.length; i++)

{

content = content.replace("%days"+i+"%", Integer.toString(packets[0]));

content = content.replace("%item"+i+"%", packets[2] + " " + ItemTable.getInstance().getItemName(packets[1]));

}

 

String time = player.isPremium() ? "до " + new SimpleDateFormat("dd/MM/yyyy HH:mm").format(new Date(player.getPremiumService())) + "" : "не подключен";

content = content.replace("%currentPremium%", time);

 

return content;

}

 

@@override

public void dialogAnswer(L2PcInstance player, boolean answer)

{

if (!answers.containsKey(player.getObjectId()) || !answer)

return;

 

int packet = answers.remove(player.getObjectId());

 

if (PcAction.removeItem(player, packets[packet][1], packets[packet][2], "premium"))

{

PcAction.addPremiumServices(player, player.getAccountName(), packets[packet][0]);

player.sendMessage("Поздравляем с приобретением премиум-аккаунта.");

}

 

int objectId = player.getTarget() != null && player.getTarget().isNpc() ? player.getTarget().getObjectId() : 0;

player.sendPacket(new NpcHtmlMessage(objectId, fillHtml(player).replace("%objectId%", Integer.toString(objectId))));

}

}

 

 

Так а премиум диалог добавить то тоже необходимо)) поищите в папке HTML файлик с ID вашего НПС и почитайте его . все сразу станет понятно)) 

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


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

Так а премиум диалог добавить то тоже необходимо)) поищите в папке HTML файлик с ID вашего НПС и почитайте его . все сразу станет понятно))

 

Диалога там вообще нет, можно создать файл. Но только что там писать?

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


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

Диалога там вообще нет, можно создать файл. Но только что там писать?

конечно можно даже нужно) перейдите на мой канал ютуб там все есть по нпс и как диалог сделать и как самого нпс сделать и тд

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


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

конечно можно даже нужно) перейдите на мой канал ютуб там все есть по нпс и как диалог сделать и как самого нпс сделать и тд

=\

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


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

=\

А чего грусняша ? )) я конечно понимаю что я вам бизнес порчу по полной программе но пусть учатся сами все делать может и выйдет чего хорошее))

Изменено пользователем IceWind

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


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

А чего грусняша ? )) я конечно понимаю что я вам бизнес порчу по полной программе но пусть учатся сами все делать может и выйдет чего хорошее))

Кому "нам" и какой "бизнес" ? На твоем канале есть видео о беспонтовой трепне и создание диалога, который не подойдет к скрипту. На кой хрен ты шлешь туда человека?

 

По сабжу - где addTalkId()?

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


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

Кому "нам" и какой "бизнес" ? На твоем канале есть видео о беспонтовой трепне и создание диалога, который не подойдет к скрипту. На кой хрен ты шлешь туда человека?

 

По сабжу - где addTalkId()?

главное дать человеку пример и если у человека есть желание что то сделать он это сделает . к тому же гоу в личку по гайдам поговорим )) (без ругательств )

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


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

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

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

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

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

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

Войти

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

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

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

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

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