HolySaint 11 Опубликовано 20 января, 2018 (изменено) Всем привет. Не работает у всех AugmentShop за исключением 1 персонажа который был сделан первым и является админом. На нем все прекрасно работает вставляет любой скил в любую пушку, но остальным не ошибок не диалогов не показывает. Бывает что говорит "Выберите вещь, которую нужно улучшить." хотя чистая пуха одета. Что тут не так? package custom.AugmentShop; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.model.L2ItemInstance; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.itemcontainer.Inventory; import ru.catssoftware.gameserver.model.quest.Quest; import ru.catssoftware.gameserver.model.quest.QuestState; import java.sql.Connection; import java.sql.PreparedStatement; public class AugmentShop extends Quest { private final static int ITEM_ID = 4037; /*id за продажу*/ private final static int ITEM_COUNT = 15; /*Укажите цену*/ private final static String qn = "AugmentShop"; private final static int NPC = 53; /*Укжите npc id;*/ public AugmentShop(int questId, String name, String descr) { super(questId, name, descr); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; if (event.equalsIgnoreCase("active")) { htmltext = "active.htm"; } else if (event.equalsIgnoreCase("passive")) { htmltext = "passive.htm"; } else { updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); } return htmltext; } @Override public String onFirstTalk(L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; QuestState qs = player.getQuestState(qn); if (qs == null) qs = newQuestState(player); htmltext = "main.htm"; return htmltext; } public static void main(String[] args) { new AugmentShop(-1, qn, "AugmentShop"); } private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) { player.sendMessage("Вы должны надеть оружие."); return; } if (item.isHeroItem()) { player.sendMessage("Вы не можете вставить в геройское оружие Life Stone."); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()) { player.sendMessage("Для начала удалите Life Stone!"); return; } if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) { player.sendMessage("Грустно, но у вас нет Coin Of Luck. Или вам не хватает!"); return; } Connection con = null; try { player.destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("REPLACE INTO item_attributes VALUES(?,?,?,?)"); statement.setInt(1, item.getObjectId()); statement.setInt(2, attributes*65536+1); statement.setInt(3, skill); statement.setInt(4, level); statement.executeUpdate(); player.sendMessage("Покупка прошла успешно. Вы должны перезайти теперь."); statement.close(); } catch (Exception e) { _log.warn("Не могли дополнить пунктом: "+item.getObjectId()+" "+ e); } finally { try { /*L2DatabaseFactory.close(con);*/ con.close(); } catch (Exception e) { } } } } Изменено 20 января, 2018 пользователем HolySaint Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 Сам скрипт логировали? Он вообще выполняется с теми персонажами, с которыми есть проблема? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 1 минуту назад, zGosu сказал: Сам скрипт логировали? Он вообще выполняется с теми персонажами, с которыми есть проблема? Честно я не знаю как сделать что бы лог писался, но диалоги показывает все т.е выбор скила. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 updateAugment Эта функция у них выполняется? На каком моменте он останавливается? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 Не могу сказать т.к не могу посмотреть. Как логирование включить? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Falkland 51 Опубликовано 20 января, 2018 26 минут назад, HolySaint сказал: Не могу сказать т.к не могу посмотреть. Как логирование включить? LoggerFactory.getLogger(AugmentShop.class).info("ну это тип лог крч понял да?"); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 5 минут назад, Falkland сказал: LoggerFactory.getLogger(AugmentShop.class).info("ну это тип лог крч понял да?"); Прошу прощения за мою безграмотность, но куда это вставить? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Falkland 51 Опубликовано 20 января, 2018 Только что, HolySaint сказал: Прошу прощения за мою безграмотность, но куда это вставить? Именно туда, откуда хочешь получить лог. В твоем случае это просто строка, выполнение которой ты хочешь проверить. Так что можешь натыкать логи хоть по всему скрипту. Ну или хотя бы в начало метода updateAugment Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 9 минут назад, Falkland сказал: Именно туда, откуда хочешь получить лог. В твоем случае это просто строка, выполнение которой ты хочешь проверить. Так что можешь натыкать логи хоть по всему скрипту. Ну или хотя бы в начало метода updateAugment Аааааааааа ну почему нельзя сразу ткнуть носом как надо? Спарсил 10 страниц гугла так и не понял куда это воткнуть. При копи пасте ГС матерится ошибками! Просто помогите и покажите дальше я буду знать, и в следующий раз буду вопрос ставить корректнее т.к уже буду понимать что меня научили это делать! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 System.out.println("текст лога"); Если настолько всё плохо, то можешь выводить результат себе в чат: player.sendMessage("Этап 1 пройден"); 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 10 минут назад, zGosu сказал: System.out.println("текст лога"); Если настолько всё плохо, то можешь выводить результат себе в чат: player.sendMessage("Этап 1 пройден"); Так? else { System.out.println("текст лога"); updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); System.out.println("текст лога"); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 1 минуту назад, HolySaint сказал: Так? else { System.out.println("текст лога"); updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); System.out.println("текст лога"); } Нет. Внутри метода Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Falkland 51 Опубликовано 20 января, 2018 (изменено) 2 минуты назад, HolySaint сказал: Так? else { System.out.println("текст лога"); updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); System.out.println("текст лога"); } private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { System.out.println("начало updateAugment()"); L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) Изменено 20 января, 2018 пользователем Falkland 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 Не пишет не чего и не где. Не в чат не в логи. private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { System.out.println("начало updateAugment()"); player.sendMessage("Этап 1 пройден"); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Falkland 51 Опубликовано 20 января, 2018 (изменено) 3 минуты назад, HolySaint сказал: Не пишет не чего и не где. Не в чат не в логи. private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { System.out.println("начало updateAugment()"); player.sendMessage("Этап 1 пройден"); Рестарт то сделал? И пробуй админом вставить лс сначала. И желательно в каждый метод вставь сообщение. Изменено 20 января, 2018 пользователем Falkland Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 В обще понял как должно было быть, но вышло так что до updateAugment дело не доходит если пробовать с чистого твинка. А если все делать с админа с 1 чара на серве все как надо и этап 1 показывает в чат и ГС фиксирует все. Значит проблема еще где то начала всего этого. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 (изменено) 5 минут назад, HolySaint сказал: Не пишет не чего и не где. Не в чат не в логи. private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { System.out.println("начало updateAugment()"); player.sendMessage("Этап 1 пройден"); Сделай теперь так: @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; System.out.println("начало updateAugment()"); player.sendMessage("Этап 1 пройден"); if (event.equalsIgnoreCase("active")) { htmltext = "active.htm"; } else if (event.equalsIgnoreCase("passive")) { htmltext = "passive.htm"; } else { System.out.println("конец updateAugment()"); player.sendMessage("Этап 2 пройден"); updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); } return htmltext; } Изменено 20 января, 2018 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 Расставил так не до конца, но даже так не проходит не одного этапа чистым твинком! Админом 1-вым чаром как обычно до конца все идет. package custom.AugmentShop; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.model.L2ItemInstance; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.itemcontainer.Inventory; import ru.catssoftware.gameserver.model.quest.Quest; import ru.catssoftware.gameserver.model.quest.QuestState; import java.sql.Connection; import java.sql.PreparedStatement; public class AugmentShop extends Quest { private final static int ITEM_ID = 4037; /*id за продажу*/ private final static int ITEM_COUNT = 40; /*Укажите цену*/ private final static String qn = "AugmentShop"; private final static int NPC = 53; /*Укжите npc id;*/ public AugmentShop(int questId, String name, String descr) { super(questId, name, descr); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; player.sendMessage("Этап 1 пройден"); if (event.equalsIgnoreCase("active")) { htmltext = "active.htm"; } else if (event.equalsIgnoreCase("passive")) { htmltext = "passive.htm"; } else { player.sendMessage("Этап 2 пройден"); updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); } return htmltext; } @Override public String onFirstTalk(L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; player.sendMessage("Этап 3 пройден"); QuestState qs = player.getQuestState(qn); if (qs == null) qs = newQuestState(player); htmltext = "main.htm"; player.sendMessage("Этап 4 пройден"); return htmltext; } public static void main(String[] args) { new AugmentShop(-1, qn, "AugmentShop"); } private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { player.sendMessage("Этап 5 пройден"); L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) { player.sendMessage("Этап 6 пройден"); player.sendMessage("Вы должны надеть оружие."); player.sendMessage("Этап 7 пройден"); return; } if (item.isHeroItem()) { player.sendMessage("Этап 8 пройден"); player.sendMessage("Вы не можете вставить в геройское оружие Life Stone."); player.sendMessage("Этап 9 пройден"); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()) { player.sendMessage("Этап 10 пройден"); player.sendMessage("Для начала удалите Life Stone!"); player.sendMessage("Этап 11 пройден"); return; } if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) { player.sendMessage("Этап 12 пройден"); player.sendMessage("Грустно, но у вас нет Coin Of Luck. Или вам не хватает!"); player.sendMessage("Этап 13 пройден"); return; } Connection con = null; try { player.destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("REPLACE INTO item_attributes VALUES(?,?,?,?)"); statement.setInt(1, item.getObjectId()); statement.setInt(2, attributes*65536+1); statement.setInt(3, skill); statement.setInt(4, level); statement.executeUpdate(); player.sendMessage("Покупка прошла успешно. Вы должны перезайти теперь."); statement.close(); } catch (Exception e) { _log.warn("Не могли дополнить пунктом: "+item.getObjectId()+" "+ e); } finally { try { /*L2DatabaseFactory.close(con);*/ con.close(); } catch (Exception e) { } } } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 5 минут назад, HolySaint сказал: Расставил так не до конца, но даже так не проходит не одного этапа чистым твинком! Админом 1-вым чаром как обычно до конца все идет. package custom.AugmentShop; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.model.L2ItemInstance; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.itemcontainer.Inventory; import ru.catssoftware.gameserver.model.quest.Quest; import ru.catssoftware.gameserver.model.quest.QuestState; import java.sql.Connection; import java.sql.PreparedStatement; public class AugmentShop extends Quest { private final static int ITEM_ID = 4037; /*id за продажу*/ private final static int ITEM_COUNT = 40; /*Укажите цену*/ private final static String qn = "AugmentShop"; private final static int NPC = 53; /*Укжите npc id;*/ public AugmentShop(int questId, String name, String descr) { super(questId, name, descr); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; player.sendMessage("Этап 1 пройден"); if (event.equalsIgnoreCase("active")) { htmltext = "active.htm"; } else if (event.equalsIgnoreCase("passive")) { htmltext = "passive.htm"; } else { player.sendMessage("Этап 2 пройден"); updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); } return htmltext; } @Override public String onFirstTalk(L2NpcInstance npc, L2PcInstance player) { String htmltext = ""; player.sendMessage("Этап 3 пройден"); QuestState qs = player.getQuestState(qn); if (qs == null) qs = newQuestState(player); htmltext = "main.htm"; player.sendMessage("Этап 4 пройден"); return htmltext; } public static void main(String[] args) { new AugmentShop(-1, qn, "AugmentShop"); } private static void updateAugment(L2PcInstance player, int attributes, int skill, int level) { player.sendMessage("Этап 5 пройден"); L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) { player.sendMessage("Этап 6 пройден"); player.sendMessage("Вы должны надеть оружие."); player.sendMessage("Этап 7 пройден"); return; } if (item.isHeroItem()) { player.sendMessage("Этап 8 пройден"); player.sendMessage("Вы не можете вставить в геройское оружие Life Stone."); player.sendMessage("Этап 9 пройден"); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()) { player.sendMessage("Этап 10 пройден"); player.sendMessage("Для начала удалите Life Stone!"); player.sendMessage("Этап 11 пройден"); return; } if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) { player.sendMessage("Этап 12 пройден"); player.sendMessage("Грустно, но у вас нет Coin Of Luck. Или вам не хватает!"); player.sendMessage("Этап 13 пройден"); return; } Connection con = null; try { player.destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("REPLACE INTO item_attributes VALUES(?,?,?,?)"); statement.setInt(1, item.getObjectId()); statement.setInt(2, attributes*65536+1); statement.setInt(3, skill); statement.setInt(4, level); statement.executeUpdate(); player.sendMessage("Покупка прошла успешно. Вы должны перезайти теперь."); statement.close(); } catch (Exception e) { _log.warn("Не могли дополнить пунктом: "+item.getObjectId()+" "+ e); } finally { try { /*L2DatabaseFactory.close(con);*/ con.close(); } catch (Exception e) { } } } } 1 админом? А со 2 что, не канает?) Если канает, то где-то стоит проверка на права ГМа Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 (изменено) 6 минут назад, zGosu сказал: 1 админом? А со 2 что, не канает?) Если канает, то где-то стоит проверка на права ГМа Не канает) Те же самые права на других админах и не канает. Изменено 20 января, 2018 пользователем HolySaint Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 Будут еще какие то идей? Я вот точно не понимаю почему так происходит? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 3 минуты назад, HolySaint сказал: Будут еще какие то идей? Я вот точно не понимаю почему так происходит? Ни одна из htm не запускается, которая есть в скрипте? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 3 минуты назад, zGosu сказал: Ни одна из htm не запускается, которая есть в скрипте? Исходя из этапов значит нет, но все таки запускаются каким то образом html с выбором этих скилов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 20 января, 2018 Выбор скилов это main.htm? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HolySaint 11 Опубликовано 20 января, 2018 4 минуты назад, zGosu сказал: Выбор скилов это main.htm? И вот тут меня осенило... Когда я ставил этого NPC в скрипте была запись addFirstTalkId(NPC); и лежали файлы HTML рядом со скриптом, я не стал марочиться и ставить отдельного NPC удалил строчку addFirstTalkId(NPC); посмотрел как происходят запросы на баипасс изменил NPC id в настройке, запустил гс, заспаунил, проверил все работает и забыл! А когда пошли игроки тут то оно и всплыло! Но почему? Что решает строчка addFirstTalkId(NPC); ? ПОчему не принимает байпассы с ID с настроики? И если оставлять addFirstTalkId(NPC) она перебивает HTML гм шопа. Понаписал чего то... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты