В принципе все сделано верно и правильно. Но после того как я получил диалог на выбор класса и выбрал класс данные перса не обновляются, т.е. я как был 9 уровнем, так и остался. По коду: Код: public static void setClass(Player player, PlayerClass playerClass) { if (validateSwitch(player, playerClass)) { player.getCommonData().setPlayerClass(playerClass); player.getCommonData().setLevel(10); player.getController().upgradePlayer(); SkillLearnService.addMissingSkills(player); DAOManager.getDAO(PlayerDAO.class).storePlayer(player); DAOManager.getDAO(PlayerQuestListDAO.class).store(player); PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 0, 0)); } } Должно все обновить было, но это произойдет только после того, как я выйду в релог этим персом. Также и с базой, к примеру я после выбора класса засчитываю персу квесты: Код: private static int [] elyQuests = {1000, 1006, 1007, 1929, 30217, 11276, 11049, 3932, 3931, 3930, 1044, 11550, 1205, 38002}; private static int [] asmoQuests = {2000, 2008, 2009, 2900, 30317, 21278, 21049, 4936, 4935, 4934, 2042, 21550, 2132, 48002}; Но пока релог не сделаю персом, в базе не появляются данные об этом. По коду ясно, что я обновляю данные, но ничего не происходит. Код: DAOManager.getDAO(PlayerDAO.class).storePlayer(player); DAOManager.getDAO(PlayerQuestListDAO.class).store(player); Может кто сталкивался с такой проблемой? Есть может у кого идеи от чего оно зависит? Сборка Чистые AL (не шара)
Сделай обновление базы с задержкой, а то получается ты одновременно обновляешь лист перса и тут же обновляешь в базу, получается в базу обновляется то что было, ну как пример может не из лучших но попробуй)) public static void setClass(Player player, PlayerClass playerClass) { if (validateSwitch(player, playerClass)) { player.getCommonData().setPlayerClass(playerClass); player.getCommonData().setLevel(10); player.getController().upgradePlayer(); SkillLearnService.addMissingSkills(player); ThreadPoolManager.getInstance().schedule(new Runnable() { @Override public void run() { DAOManager.getDAO(PlayerDAO.class).storePlayer(player); DAOManager.getDAO(PlayerQuestListDAO.class).store(player); } }, 90); PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 0, 0)); } }
Ну мне известно, что в программировании выполняется все по очереди, не так ли?.. Ну и этот метод с задержкой также не работает. Есть еще варианты? Просто именно как я выдаю 9 уровень и сетаю класс - работает, а вот после того как класс выдал - данные обновляются только после выхода в релог.
Написал сервис, которые решает вопрос со стартом персонана. 2018 года сборка слитая на форуме лежит. Она еще вроде доступна. В 2020 года сборке более улучшенный сервис, но суть таже --- Double Post Merged, 27 авг 2021, Original Post Date: 27 авг 2021 --- Я имел ввиду в моих сборках, что сливали там можно найти сервис этот. сборка LD