0000 2 Опубликовано 19 августа, 2020 (изменено) Всем привет! Добавил себе в ядро PW фишку которой не хватает .classmaster, все прекрасно при достижении 20/40/80 лвл появляется окно, выбираешь профу ничего не происходит, вообще никаких ошибок не показывает! Даже через кота не хочет братся профа. Извлек скрипт из ядра другого pw, полностью то есть конфиги и тд. успешно скомпил без ошибок! Уже неделю ищу, но никаких зацепок даже. Кто может хоть чем то помочь, зацепку хотя бы ? Спойлер package scripts.commands.voicedcommandhandlers; import java.util.List; import net.sf.l2j.Config; import net.sf.l2j.Config.EventReward; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.cache.Static; import net.sf.l2j.gameserver.datatables.CharTemplateTable; import net.sf.l2j.gameserver.datatables.ClassRewardsData; import net.sf.l2j.gameserver.datatables.ItemTable; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.PcInventory; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.base.ClassId; import net.sf.l2j.gameserver.model.base.ClassLevel; import net.sf.l2j.gameserver.model.base.PlayerClass; import net.sf.l2j.gameserver.model.base.SubClass; import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import scripts.commands.IVoicedCommandHandler; public class ClassMaster implements IVoicedCommandHandler { private static final String[] VOICED_COMMANDS = new String[] { "classmaster" }; public boolean useVoicedCommand(String command, L2PcInstance player, String target) { if (command.equalsIgnoreCase("classmaster")) { showWelcome(player); } else if (command.startsWith("classmaster_")) { String classmaster = command.substring(12).trim(); if (classmaster.startsWith("changeclass")) { int class_id = Integer.parseInt(classmaster.substring(11).trim()); profList(player, class_id); } else if (classmaster.startsWith("reward")) { int set_id = Integer.parseInt(classmaster.substring(6).trim()); giveReward(player, set_id); } } return true; } private void giveReward(L2PcInstance player, int set_id) { if (!player.getShadeItems()) return; player.setShadeItems(false); PcInventory pcInventory = player.getInventory(); List<ClassRewardsData.ClassReward> classreward = (List<ClassRewardsData.ClassReward>)ClassRewardsData.getInstance().getClassRewards().get(set_id); if (classreward == null) { player.sendCritMessage("Ошибка, набора не существует"); return; } for (ClassRewardsData.ClassReward value : classreward) { L2ItemInstance item = ItemTable.getInstance().createItem("ClassReward", value.id, value.count, player); player.addItem("ClassReward", item, null, true); if (value.equip && item.isEquipable()) pcInventory.equipItem(item); if (value.enchant > 0 && item.canBeEnchanted()) item.setEnchantLevel(value.enchant); } player.sendChanges(); player.sendItems(true); ClassLevel classLevel = PlayerClass.values()[player.getClassId().getId()].getLevel(); if ((classLevel == ClassLevel.Second && player.getLevel() >= 40) || (classLevel == ClassLevel.Third && player.getLevel() >= 76)) useVoicedCommand("classmaster", player, null); } private void showWelcome(L2PcInstance player) { ClassId class_id = player.getClassId(); int class_level = class_id.level(); int new_class_level = class_level + 1; int p_level = player.getLevel(); if (((p_level >= 20 && class_level == 0) || (p_level >= 40 && class_level == 1) || (p_level >= 76 && class_level == 2)) && class_id.getId() < 88) { NpcHtmlMessage htm = new NpcHtmlMessage(0); htm.setFile("data/html/classmaster/ClassList.htm"); StringBuilder html = new StringBuilder(); for (ClassId child : ClassId.values()) { if (child.childOf(class_id) && child.level() == new_class_level) html.append("<tr><td align=center><a action=\"bypass -h vch_classmaster_changeclass ").append(child.getId()).append("\">").append(CharTemplateTable.getClassNameById(child.getId())).append("</a></td></tr>"); } htm.replace("%classname%", CharTemplateTable.getClassNameById(class_id.getId())); htm.replace("%classlist%", html.toString()); player.sendPacket((L2GameServerPacket)htm); } else { switch (class_level) { case 0: player.sendCritMessage("Попробуйте, когда получите 20 уровень."); break; case 1: player.sendCritMessage("Попробуйте, когда получите 40 уровень."); break; case 2: player.sendCritMessage("Попробуйте, когда получите 76 уровень."); break; case 3: player.sendCritMessage("Нет доступных профессий."); break; } } } private void profList(L2PcInstance player, int class_id) { int class_level = player.getClassId().level(); int new_class_level = class_level + 1; int p_level = player.getLevel(); EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level)); if (pay != null) { if (player.getItemCount(pay.id) < pay.count) { player.sendCritMessage("C" + pay.count + " " + ItemTable.getInstance().getTemplate(pay.id).getName()); return; } player.destroyItemByItemId("clasmaster", pay.id, pay.count, (L2Object)player, true); } changeClass(player, class_id); player.checkAllowedSkills(); if (class_id >= 88) { player.sendPacket((L2GameServerPacket)Static.THIRD_CLASS_TRANSFER); } else { player.sendPacket((L2GameServerPacket)Static.CLASS_TRANSFER); } if (Config.REWARD_CLASS) if ((Config.REWARD_FIRST_CLASS && class_level == 0) || (Config.REWARD_SECOND_CLASS && class_level == 1) || (Config.REWARD_THIRD_CLASS && class_level == 2)) { player.setShadeItems(true); NpcHtmlMessage html = NpcHtmlMessage.id(0); String htm = HtmCache.getInstance().getHtm("data/html/classmaster/Up_" + new_class_level + ".htm"); html.setHtml(htm); html.replace("%ClassName%", CharTemplateTable.getClassNameById(player.getClassId().getId())); player.sendPacket((L2GameServerPacket)html); } if ((!Config.REWARD_CLASS && ((new_class_level == 1 && p_level >= 40) || (new_class_level == 2 && p_level >= 76))) || (!Config.REWARD_FIRST_CLASS && class_level == 0) || (!Config.REWARD_SECOND_CLASS && class_level == 1)) showWelcome(player); } private void changeClass(L2PcInstance player, int val) { player.abortAttack(); player.abortCast(); player.setIsParalyzed(true); player.setClassId(val); if (player.isSubClassActive()) { ((SubClass)player.getSubClasses().get(Integer.valueOf(player.getClassIndex()))).setClassId(player.getActiveClass()); } else { player.setBaseClass(player.getActiveClass()); } player.rewardSkills(); player.store(); player.broadcastUserInfo(); player.setIsParalyzed(false); } public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } Спойлер <html><title>Class Master</title><body><center><br> <font color="e15800">Смена професси для %classname%</font> <img src="l2ui.squaregray" width="295" height="1"> <table width=295> %classlist% </table> <img src="l2ui.squaregray" width="295" height="1"><br> </center></body></html> Изменено 19 августа, 2020 пользователем 0000 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 19 августа, 2020 25 минут назад, 0000 сказал: Всем привет! Добавил себе в ядро PW фишку которой не хватает .classmaster, все прекрасно при достижении 20/40/80 лвл появляется окно, выбираешь профу ничего не происходит, вообще никаких ошибок не показывает! Даже через кота не хочет братся профа. Извлек скрипт из ядра другого pw, полностью то есть конфиги и тд. успешно скомпил без ошибок! Уже неделю ищу, но никаких зацепок даже. Кто может хоть чем то помочь, зацепку хотя бы ? classmaster (Показать контент) package scripts.commands.voicedcommandhandlers; import java.util.List; import net.sf.l2j.Config; import net.sf.l2j.Config.EventReward; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.cache.Static; import net.sf.l2j.gameserver.datatables.CharTemplateTable; import net.sf.l2j.gameserver.datatables.ClassRewardsData; import net.sf.l2j.gameserver.datatables.ItemTable; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.PcInventory; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.base.ClassId; import net.sf.l2j.gameserver.model.base.ClassLevel; import net.sf.l2j.gameserver.model.base.PlayerClass; import net.sf.l2j.gameserver.model.base.SubClass; import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import scripts.commands.IVoicedCommandHandler; public class ClassMaster implements IVoicedCommandHandler { private static final String[] VOICED_COMMANDS = new String[] { "classmaster" }; public boolean useVoicedCommand(String command, L2PcInstance player, String target) { if (command.equalsIgnoreCase("classmaster")) { showWelcome(player); } else if (command.startsWith("classmaster_")) { String classmaster = command.substring(12).trim(); if (classmaster.startsWith("changeclass")) { int class_id = Integer.parseInt(classmaster.substring(11).trim()); profList(player, class_id); } else if (classmaster.startsWith("reward")) { int set_id = Integer.parseInt(classmaster.substring(6).trim()); giveReward(player, set_id); } } return true; } private void giveReward(L2PcInstance player, int set_id) { if (!player.getShadeItems()) return; player.setShadeItems(false); PcInventory pcInventory = player.getInventory(); List<ClassRewardsData.ClassReward> classreward = (List<ClassRewardsData.ClassReward>)ClassRewardsData.getInstance().getClassRewards().get(set_id); if (classreward == null) { player.sendCritMessage("Ошибка, набора не существует"); return; } for (ClassRewardsData.ClassReward value : classreward) { L2ItemInstance item = ItemTable.getInstance().createItem("ClassReward", value.id, value.count, player); player.addItem("ClassReward", item, null, true); if (value.equip && item.isEquipable()) pcInventory.equipItem(item); if (value.enchant > 0 && item.canBeEnchanted()) item.setEnchantLevel(value.enchant); } player.sendChanges(); player.sendItems(true); ClassLevel classLevel = PlayerClass.values()[player.getClassId().getId()].getLevel(); if ((classLevel == ClassLevel.Second && player.getLevel() >= 40) || (classLevel == ClassLevel.Third && player.getLevel() >= 76)) useVoicedCommand("classmaster", player, null); } private void showWelcome(L2PcInstance player) { ClassId class_id = player.getClassId(); int class_level = class_id.level(); int new_class_level = class_level + 1; int p_level = player.getLevel(); if (((p_level >= 20 && class_level == 0) || (p_level >= 40 && class_level == 1) || (p_level >= 76 && class_level == 2)) && class_id.getId() < 88) { NpcHtmlMessage htm = new NpcHtmlMessage(0); htm.setFile("data/html/classmaster/ClassList.htm"); StringBuilder html = new StringBuilder(); for (ClassId child : ClassId.values()) { if (child.childOf(class_id) && child.level() == new_class_level) html.append("<tr><td align=center><a action=\"bypass -h vch_classmaster_changeclass ").append(child.getId()).append("\">").append(CharTemplateTable.getClassNameById(child.getId())).append("</a></td></tr>"); } htm.replace("%classname%", CharTemplateTable.getClassNameById(class_id.getId())); htm.replace("%classlist%", html.toString()); player.sendPacket((L2GameServerPacket)htm); } else { switch (class_level) { case 0: player.sendCritMessage("Попробуйте, когда получите 20 уровень."); break; case 1: player.sendCritMessage("Попробуйте, когда получите 40 уровень."); break; case 2: player.sendCritMessage("Попробуйте, когда получите 76 уровень."); break; case 3: player.sendCritMessage("Нет доступных профессий."); break; } } } private void profList(L2PcInstance player, int class_id) { int class_level = player.getClassId().level(); int new_class_level = class_level + 1; int p_level = player.getLevel(); EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level)); if (pay != null) { if (player.getItemCount(pay.id) < pay.count) { player.sendCritMessage("C" + pay.count + " " + ItemTable.getInstance().getTemplate(pay.id).getName()); return; } player.destroyItemByItemId("clasmaster", pay.id, pay.count, (L2Object)player, true); } changeClass(player, class_id); player.checkAllowedSkills(); if (class_id >= 88) { player.sendPacket((L2GameServerPacket)Static.THIRD_CLASS_TRANSFER); } else { player.sendPacket((L2GameServerPacket)Static.CLASS_TRANSFER); } if (Config.REWARD_CLASS) if ((Config.REWARD_FIRST_CLASS && class_level == 0) || (Config.REWARD_SECOND_CLASS && class_level == 1) || (Config.REWARD_THIRD_CLASS && class_level == 2)) { player.setShadeItems(true); NpcHtmlMessage html = NpcHtmlMessage.id(0); String htm = HtmCache.getInstance().getHtm("data/html/classmaster/Up_" + new_class_level + ".htm"); html.setHtml(htm); html.replace("%ClassName%", CharTemplateTable.getClassNameById(player.getClassId().getId())); player.sendPacket((L2GameServerPacket)html); } if ((!Config.REWARD_CLASS && ((new_class_level == 1 && p_level >= 40) || (new_class_level == 2 && p_level >= 76))) || (!Config.REWARD_FIRST_CLASS && class_level == 0) || (!Config.REWARD_SECOND_CLASS && class_level == 1)) showWelcome(player); } private void changeClass(L2PcInstance player, int val) { player.abortAttack(); player.abortCast(); player.setIsParalyzed(true); player.setClassId(val); if (player.isSubClassActive()) { ((SubClass)player.getSubClasses().get(Integer.valueOf(player.getClassIndex()))).setClassId(player.getActiveClass()); } else { player.setBaseClass(player.getActiveClass()); } player.rewardSkills(); player.store(); player.broadcastUserInfo(); player.setIsParalyzed(false); } public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } окно проф (Скрыть контент) <html><title>Class Master</title><body><center><br> <font color="e15800">Смена професси для %classname%</font> <img src="l2ui.squaregray" width="295" height="1"> <table width=295> %classlist% </table> <img src="l2ui.squaregray" width="295" height="1"><br> </center></body></html> а этот хендлер зарегистрирован? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0000 2 Опубликовано 19 августа, 2020 Полностью, вытащил и закинул(не тупо, а именно вникая что куда). Думаю что зарегистрирован(в игре .classmaster появляется окно) Честно не совсем понял о чем именно речь, в каком файле регистрируется ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 19 августа, 2020 7 минут назад, 0000 сказал: Полностью, вытащил и закинул(не тупо, а именно вникая что куда). Думаю что зарегистрирован(в игре .classmaster появляется окно) Честно не совсем понял о чем именно речь, в каком файле регистрируется ? в VoicedCommandHandler Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0000 2 Опубликовано 19 августа, 2020 Да, вот скрин в игре, выбарешь дальше никакой реакции или ошибок в гс Спойлер /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */ package scripts.commands; import java.util.Map; import java.util.logging.Logger; import javolution.util.FastMap; import net.sf.l2j.Config; import scripts.commands.voicedcommandhandlers.*; import net.sf.l2j.util.log.AbstractLogger; /** * This class ... * * @version $Revision: 1.1.4.5 $ $Date: 2005/03/27 15:30:09 $ */ public class VoicedCommandHandler { private static Logger _log = AbstractLogger.getLogger(VoicedCommandHandler.class.getName()); private static VoicedCommandHandler _instance; private Map<String, IVoicedCommandHandler> _datatable; public static VoicedCommandHandler getInstance() { if (_instance == null) { _instance = new VoicedCommandHandler(); } return _instance; } private VoicedCommandHandler() { _datatable = new FastMap<String, IVoicedCommandHandler>(); if (Config.CMD_ADENA_COL) { registerVoicedCommandHandler(new AdenaCol()); } if (Config.CMD_EVENTS) { registerVoicedCommandHandler(new Events()); } if (Config.CMD_MENU) { registerVoicedCommandHandler(new Menu()); } if (Config.ALT_ALLOW_OFFLINE_TRADE) { registerVoicedCommandHandler(new Offline()); } if (Config.L2JMOD_ALLOW_WEDDING) { registerVoicedCommandHandler(new Wedding()); } registerVoicedCommandHandler(new Silence()); registerVoicedCommandHandler(new BlockBuff()); registerVoicedCommandHandler(new Security()); //модераторы registerVoicedCommandHandler(new ModBanChat()); registerVoicedCommandHandler(new ModKick()); registerVoicedCommandHandler(new ModTitle()); registerVoicedCommandHandler(new ModHelp()); registerVoicedCommandHandler(new ModSpecial()); if (Config.ALLOW_CLASS_MASTERS) registerVoicedCommandHandler((IVoicedCommandHandler)new ClassMaster()); _log.config("VoicedCommandHandler: Loaded " + _datatable.size() + " handlers."); } public void registerVoicedCommandHandler(IVoicedCommandHandler handler) { String[] ids = handler.getVoicedCommandList(); for (int i = 0; i < ids.length; i++) { //if (Config.DEBUG) _log.fine("Adding handler for command "+ids[i]); _datatable.put(ids[i], handler); } } public IVoicedCommandHandler getVoicedCommandHandler(String voicedCommand) { String command = voicedCommand; if (voicedCommand.indexOf(" ") != -1) { command = voicedCommand.substring(0, voicedCommand.indexOf(" ")); } //if (Config.DEBUG) //_log.fine("getting handler for command: "+command+" -> "+(_datatable.get(command) != null)); return _datatable.get(command); } /** * @return */ public int size() { return _datatable.size(); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 19 августа, 2020 ну тогда только добавить логирование/дебаг и смотреть на каком моменте останавливается выполнение Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0000 2 Опубликовано 19 августа, 2020 7 минут назад, CalypsoToolz сказал: ну тогда только добавить логирование/дебаг и смотреть на каком моменте останавливается выполнение Спойлер 2020.08.20 00:54:09,817 INFO 1 net.sf.l2j.gameserver.AutoRestart #Auto Restart: scheduled at 5 hour. (1685 minutes remaining.) 2020.08.20 00:54:09,840 SEVERE 264 net.sf.l2j.gameserver.datatables.CustomServerData GameServer [ERROR]: Failed to restore offline traders. Reason: null 2020.08.20 00:54:09,883 INFO 263 net.sf.l2j.gameserver.datatables.FakePlayersTablePlus FakePlayersTablePlus: Cached 6000 players. 2020.08.20 00:54:11,496 WARNING 98 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:12,480 WARNING 41 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:17,778 CONFIG 266 net.sf.l2j.gameserver.datatables.SpawnTable SpawnTable [XML]: spawned 4 territories. 2020.08.20 00:54:23,011 WARNING 45 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:28,594 WARNING 118 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:30,139 WARNING 98 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:33,273 WARNING 88 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:51,963 WARNING 77 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:00,044 WARNING 135 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:01,558 WARNING 48 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:08,532 WARNING 128 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:14,795 WARNING 31 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:16,914 WARNING 97 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. Ничего не показывает ( вот у меня есть догадка, но это так мысль старое окно профы имеет вид <td><center><a action="bypass -h npc_%objectId%_class_master">Получить профессию</a></center></td> новое такой <td><center><a action="bypass -h vch_classmaster">Получить профессию</a></center></td> Может в этом есть что то куда можно ковырнуть, на другом ядре то пашет все Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ammy 98 Опубликовано 19 августа, 2020 6 минут назад, 0000 сказал: Скрыть контент 2020.08.20 00:54:09,817 INFO 1 net.sf.l2j.gameserver.AutoRestart #Auto Restart: scheduled at 5 hour. (1685 minutes remaining.) 2020.08.20 00:54:09,840 SEVERE 264 net.sf.l2j.gameserver.datatables.CustomServerData GameServer [ERROR]: Failed to restore offline traders. Reason: null 2020.08.20 00:54:09,883 INFO 263 net.sf.l2j.gameserver.datatables.FakePlayersTablePlus FakePlayersTablePlus: Cached 6000 players. 2020.08.20 00:54:11,496 WARNING 98 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:12,480 WARNING 41 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:17,778 CONFIG 266 net.sf.l2j.gameserver.datatables.SpawnTable SpawnTable [XML]: spawned 4 territories. 2020.08.20 00:54:23,011 WARNING 45 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:28,594 WARNING 118 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:30,139 WARNING 98 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:33,273 WARNING 88 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:54:51,963 WARNING 77 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:00,044 WARNING 135 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:01,558 WARNING 48 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:08,532 WARNING 128 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:14,795 WARNING 31 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. 2020.08.20 00:55:16,914 WARNING 97 net.sf.l2j.gameserver.ai.AbstractAI Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead. Ничего не показывает ( вот у меня есть догадка, но это так мысль старое окно профы имеет вид <td><center><a action="bypass -h npc_%objectId%_class_master">Получить профессию</a></center></td> новое такой <td><center><a action="bypass -h vch_classmaster">Получить профессию</a></center></td> Может в этом есть что то куда можно ковырнуть, на другом ядре то пашет все Нет всплывающего окна ? %class_master_list% Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0000 2 Опубликовано 19 августа, 2020 21 час назад, ammy сказал: Нет всплывающего окна ? %class_master_list% Спойлер <html><title>Class Master</title><body><center><br> <font color="e15800">Смена професси для %classname%</font> <img src="l2ui.squaregray" width="295" height="1"> <table width=295> %classlist% </table> <img src="l2ui.squaregray" width="295" height="1"><br> </center></body></html> Когда всплывает(команда .classmaster или уровень нужный), то выскакивает это окно. Ну вообще по идее почти полностью изменен файл L2ClassMasterInstance.java так что окна те что должны по идее А может кто-то знает про эту функцию в PW SOFT, в конфигах есть во многих шаровых ядрах и в исхонике так же, но она не пашет и вот мучаюсь с этим окном... JOB_WINDOW = Boolean.parseBoolean(altSettings.getProperty("JobWindow", "False")); Есть какие то мануалы или pw ядро с этим проф окном у кого нибудь, хотя бы через alt+b, поделитесь пожалуйста или ссылку скиньте! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты