Saltant 1 Опубликовано 3 мая, 2017 Здравствуйте!У меня есть сборка от 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;@@overridepublic String onFirstTalk(L2NpcInstance npc, L2PcInstance player){return onTalk(npc, player);}@@overridepublic String onTalk(L2NpcInstance npc, L2PcInstance player){QuestState qs = player.getQuestState(getName());if (qs==null)newQuestState(player);npc.showChatWindow(player, 0);return null;}@@overridepublic 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;}@@overridepublic 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))));}} Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
IceWind 14 Опубликовано 5 мая, 2017 Здравствуйте! У меня есть сборка от 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 вашего НПС и почитайте его . все сразу станет понятно)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saltant 1 Опубликовано 9 мая, 2017 Так а премиум диалог добавить то тоже необходимо)) поищите в папке HTML файлик с ID вашего НПС и почитайте его . все сразу станет понятно)) Диалога там вообще нет, можно создать файл. Но только что там писать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
IceWind 14 Опубликовано 9 мая, 2017 Диалога там вообще нет, можно создать файл. Но только что там писать? конечно можно даже нужно) перейдите на мой канал ютуб там все есть по нпс и как диалог сделать и как самого нпс сделать и тд Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
se1dhe 501 Опубликовано 9 мая, 2017 конечно можно даже нужно) перейдите на мой канал ютуб там все есть по нпс и как диалог сделать и как самого нпс сделать и тд =\ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
IceWind 14 Опубликовано 9 мая, 2017 (изменено) =\ А чего грусняша ? )) я конечно понимаю что я вам бизнес порчу по полной программе но пусть учатся сами все делать может и выйдет чего хорошее)) Изменено 9 мая, 2017 пользователем IceWind Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
se1dhe 501 Опубликовано 9 мая, 2017 А чего грусняша ? )) я конечно понимаю что я вам бизнес порчу по полной программе но пусть учатся сами все делать может и выйдет чего хорошее)) Кому "нам" и какой "бизнес" ? На твоем канале есть видео о беспонтовой трепне и создание диалога, который не подойдет к скрипту. На кой хрен ты шлешь туда человека? По сабжу - где addTalkId()? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
IceWind 14 Опубликовано 10 мая, 2017 Кому "нам" и какой "бизнес" ? На твоем канале есть видео о беспонтовой трепне и создание диалога, который не подойдет к скрипту. На кой хрен ты шлешь туда человека? По сабжу - где addTalkId()? главное дать человеку пример и если у человека есть желание что то сделать он это сделает . к тому же гоу в личку по гайдам поговорим )) (без ругательств ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты