0000 2 Опубликовано 4 августа, 2020 (изменено) Привет всем! Скачал исходник pw, возникли две проблемы кто поможет ? 1) Решил добавить .classmaster, взял другое ядро PW где пашет, все вытащил и добавляю себе, вроде все хорошо, но выдает 1 ошибку, в чем проблема может быть ? Спойлер init: [mkdir] Created dir: C:\workspace\5\build [mkdir] Created dir: C:\workspace\5\build\classes compile: [javac] Compiling 1441 source files to C:\workspace\5\build\classes [javac] C:\workspace\5\src\scripts\commands\voicedcommandhandlers\ClassMaster.java:136: error: incompatible types: net.sf.l2j.Config.EventReward cannot be converted to net.sf.l2j.gameserver.model.EventReward [javac] /* 136 */ EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level)); [javac] ^ [javac] Note: Some input files use or override a deprecated API. [javac] Note: Recompile with -Xlint:deprecation for details. [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 1 error BUILD FAILED C:\workspace\5\build.xml:31: Compile failed; see the compiler error output for details. Спойлер /* */ package scripts.commands.voicedcommandhandlers; /* */ /* */ import java.util.List; /* */ import net.sf.l2j.Config; /* */ 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.EventReward; /* */ 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 { /* 25 */ private static final String[] VOICED_COMMANDS = new String[] { "classmaster" }; /* */ /* */ /* */ /* */ public boolean useVoicedCommand(String command, L2PcInstance player, String target) { /* 30 */ if (command.equalsIgnoreCase("classmaster")) { /* */ /* 32 */ showWelcome(player); /* */ } /* 34 */ else if (command.startsWith("classmaster_")) { /* */ /* 36 */ String classmaster = command.substring(12).trim(); /* 37 */ if (classmaster.startsWith("changeclass")) { /* */ /* 39 */ int class_id = Integer.parseInt(classmaster.substring(11).trim()); /* 40 */ profList(player, class_id); /* */ } /* 42 */ else if (classmaster.startsWith("reward")) { /* */ /* 44 */ int set_id = Integer.parseInt(classmaster.substring(6).trim()); /* 45 */ giveReward(player, set_id); /* */ } /* */ } /* */ /* 49 */ return true; /* */ } /* */ /* */ /* */ private void giveReward(L2PcInstance player, int set_id) { /* 54 */ if (!player.getShadeItems()) { /* */ return; /* */ } /* 57 */ player.setShadeItems(false); /* */ /* 59 */ PcInventory pcInventory = player.getInventory(); /* */ /* 61 */ List<ClassRewardsData.ClassReward> classreward = (List<ClassRewardsData.ClassReward>)ClassRewardsData.getInstance().getClassRewards().get(set_id); /* */ /* 63 */ if (classreward == null) { /* */ /* 65 */ player.sendCritMessage("Ошибка, набора не существует"); /* */ /* */ return; /* */ } /* 69 */ for (ClassRewardsData.ClassReward value : classreward) { /* */ /* 71 */ L2ItemInstance item = ItemTable.getInstance().createItem("ClassReward", value.id, value.count, player); /* 72 */ player.addItem("ClassReward", item, null, true); /* 73 */ if (value.equip && item.isEquipable()) /* 74 */ pcInventory.equipItem(item); /* 75 */ if (value.enchant > 0 && item.canBeEnchanted()) { /* 76 */ item.setEnchantLevel(value.enchant); /* */ } /* */ } /* 79 */ player.sendChanges(); /* 80 */ player.sendItems(true); /* */ /* 82 */ ClassLevel classLevel = PlayerClass.values()[player.getClassId().getId()].getLevel(); /* 83 */ if ((classLevel == ClassLevel.Second && player.getLevel() >= 40) || (classLevel == ClassLevel.Third && player.getLevel() >= 76)) { /* 84 */ useVoicedCommand("classmaster", player, null); /* */ } /* */ } /* */ /* */ private void showWelcome(L2PcInstance player) { /* 89 */ ClassId class_id = player.getClassId(); /* 90 */ int class_level = class_id.level(); /* 91 */ int new_class_level = class_level + 1; /* 92 */ int p_level = player.getLevel(); /* */ /* 94 */ if (((p_level >= 20 && class_level == 0) || (p_level >= 40 && class_level == 1) || (p_level >= 76 && class_level == 2)) && class_id.getId() < 88) { /* */ /* 96 */ NpcHtmlMessage htm = new NpcHtmlMessage(0); /* 97 */ htm.setFile("classmaster/ClassList.htm"); /* 98 */ StringBuilder html = new StringBuilder(); /* */ /* 100 */ for (ClassId child : ClassId.values()) { /* */ /* 102 */ if (child.childOf(class_id) && child.level() == new_class_level) { /* 103 */ 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>"); /* */ } /* */ } /* 106 */ htm.replace("%classname%", CharTemplateTable.getClassNameById(class_id.getId())); /* 107 */ htm.replace("%classlist%", html.toString()); /* 108 */ player.sendPacket((L2GameServerPacket)htm); /* */ } /* */ else { /* */ /* 112 */ switch (class_level) { /* */ /* */ case 0: /* 115 */ player.sendCritMessage("Попробуйте, когда получите 20 уровень."); /* */ break; /* */ case 1: /* 118 */ player.sendCritMessage("Попробуйте, когда получите 40 уровень."); /* */ break; /* */ case 2: /* 121 */ player.sendCritMessage("Попробуйте, когда получите 76 уровень."); /* */ break; /* */ case 3: /* 124 */ player.sendCritMessage("Нет доступных профессий."); /* */ break; /* */ } /* */ } /* */ } /* */ /* */ /* */ private void profList(L2PcInstance player, int class_id) { /* 132 */ int class_level = player.getClassId().level(); /* 133 */ int new_class_level = class_level + 1; /* 134 */ int p_level = player.getLevel(); /* */ /* 136 */ EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level)); /* 137 */ if (pay != null) { /* */ /* 139 */ if (player.getItemCount(pay.id) < pay.count) { /* */ /* 141 */ player.sendCritMessage("Cтоимость получения профессии " + pay.count + " " + ItemTable.getInstance().getTemplate(pay.id).getName()); /* */ return; /* */ } /* 144 */ player.destroyItemByItemId("clasmaster", pay.id, pay.count, (L2Object)player, true); /* */ } /* */ /* 147 */ changeClass(player, class_id); /* 148 */ player.checkAllowedSkills(); /* */ /* 150 */ if (class_id >= 88) { /* 151 */ player.sendPacket((L2GameServerPacket)Static.THIRD_CLASS_TRANSFER); /* */ } else { /* 153 */ player.sendPacket((L2GameServerPacket)Static.CLASS_TRANSFER); /* */ } /* 155 */ if (Config.REWARD_CLASS) /* */ { /* 157 */ if ((Config.REWARD_FIRST_CLASS && class_level == 0) || (Config.REWARD_SECOND_CLASS && class_level == 1) || (Config.REWARD_THIRD_CLASS && class_level == 2)) { /* */ /* 159 */ player.setShadeItems(true); /* 160 */ NpcHtmlMessage html = NpcHtmlMessage.id(0); /* 161 */ String htm = HtmCache.getInstance().getHtm("classmaster/Up_" + new_class_level + ".htm"); /* 162 */ html.setHtml(htm); /* 163 */ html.replace("%ClassName%", CharTemplateTable.getClassNameById(player.getClassId().getId())); /* 164 */ player.sendPacket((L2GameServerPacket)html); /* */ } /* */ } /* */ /* 168 */ 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)) { /* 169 */ showWelcome(player); /* */ } /* */ } /* */ /* */ private void changeClass(L2PcInstance player, int val) { /* 174 */ player.abortAttack(); /* 175 */ player.abortCast(); /* 176 */ player.setIsParalyzed(true); /* 177 */ player.setClassId(val); /* */ /* 179 */ if (player.isSubClassActive()) { /* 180 */ ((SubClass)player.getSubClasses().get(Integer.valueOf(player.getClassIndex()))).setClassId(player.getActiveClass()); /* */ } else { /* 182 */ player.setBaseClass(player.getActiveClass()); /* */ } /* 184 */ player.rewardSkills(); /* 185 */ player.store(); /* 186 */ player.broadcastUserInfo(); /* 187 */ player.setIsParalyzed(false); /* */ } /* */ /* */ /* */ /* */ public String[] getVoicedCommandList() { /* 193 */ return VOICED_COMMANDS; /* */ } /* */ } 2) В каком именно файле стоит запрет на использование банки НР при смерти ??? хочу ACP доделать(юзается банка НР когда мертв) Есть ядро с фиксом, но какой именной файл отвечает за запрет на использование банки?? Изменено 4 августа, 2020 пользователем 0000 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Legions 14 Опубликовано 4 августа, 2020 39 минут назад, 0000 сказал: Привет всем! Скачал исходник pw, возникли две проблемы кто поможет ? 1) Решил добавить .classmaster, взял другое ядро PW где пашет, все вытащил и добавляю себе, вроде все хорошо, но выдает 1 ошибку, в чем проблема может быть ? ОШИБКА (Скрыть контент) init: [mkdir] Created dir: C:\workspace\5\build [mkdir] Created dir: C:\workspace\5\build\classes compile: [javac] Compiling 1441 source files to C:\workspace\5\build\classes [javac] C:\workspace\5\src\scripts\commands\voicedcommandhandlers\ClassMaster.java:136: error: incompatible types: net.sf.l2j.Config.EventReward cannot be converted to net.sf.l2j.gameserver.model.EventReward [javac] /* 136 */ EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level)); [javac] ^ [javac] Note: Some input files use or override a deprecated API. [javac] Note: Recompile with -Xlint:deprecation for details. [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 1 error BUILD FAILED C:\workspace\5\build.xml:31: Compile failed; see the compiler error output for details. ClassMaster (Показать контент) /* */ package scripts.commands.voicedcommandhandlers; /* */ /* */ import java.util.List; /* */ import net.sf.l2j.Config; /* */ 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.EventReward; /* */ 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 { /* 25 */ private static final String[] VOICED_COMMANDS = new String[] { "classmaster" }; /* */ /* */ /* */ /* */ public boolean useVoicedCommand(String command, L2PcInstance player, String target) { /* 30 */ if (command.equalsIgnoreCase("classmaster")) { /* */ /* 32 */ showWelcome(player); /* */ } /* 34 */ else if (command.startsWith("classmaster_")) { /* */ /* 36 */ String classmaster = command.substring(12).trim(); /* 37 */ if (classmaster.startsWith("changeclass")) { /* */ /* 39 */ int class_id = Integer.parseInt(classmaster.substring(11).trim()); /* 40 */ profList(player, class_id); /* */ } /* 42 */ else if (classmaster.startsWith("reward")) { /* */ /* 44 */ int set_id = Integer.parseInt(classmaster.substring(6).trim()); /* 45 */ giveReward(player, set_id); /* */ } /* */ } /* */ /* 49 */ return true; /* */ } /* */ /* */ /* */ private void giveReward(L2PcInstance player, int set_id) { /* 54 */ if (!player.getShadeItems()) { /* */ return; /* */ } /* 57 */ player.setShadeItems(false); /* */ /* 59 */ PcInventory pcInventory = player.getInventory(); /* */ /* 61 */ List<ClassRewardsData.ClassReward> classreward = (List<ClassRewardsData.ClassReward>)ClassRewardsData.getInstance().getClassRewards().get(set_id); /* */ /* 63 */ if (classreward == null) { /* */ /* 65 */ player.sendCritMessage("Ошибка, набора не существует"); /* */ /* */ return; /* */ } /* 69 */ for (ClassRewardsData.ClassReward value : classreward) { /* */ /* 71 */ L2ItemInstance item = ItemTable.getInstance().createItem("ClassReward", value.id, value.count, player); /* 72 */ player.addItem("ClassReward", item, null, true); /* 73 */ if (value.equip && item.isEquipable()) /* 74 */ pcInventory.equipItem(item); /* 75 */ if (value.enchant > 0 && item.canBeEnchanted()) { /* 76 */ item.setEnchantLevel(value.enchant); /* */ } /* */ } /* 79 */ player.sendChanges(); /* 80 */ player.sendItems(true); /* */ /* 82 */ ClassLevel classLevel = PlayerClass.values()[player.getClassId().getId()].getLevel(); /* 83 */ if ((classLevel == ClassLevel.Second && player.getLevel() >= 40) || (classLevel == ClassLevel.Third && player.getLevel() >= 76)) { /* 84 */ useVoicedCommand("classmaster", player, null); /* */ } /* */ } /* */ /* */ private void showWelcome(L2PcInstance player) { /* 89 */ ClassId class_id = player.getClassId(); /* 90 */ int class_level = class_id.level(); /* 91 */ int new_class_level = class_level + 1; /* 92 */ int p_level = player.getLevel(); /* */ /* 94 */ if (((p_level >= 20 && class_level == 0) || (p_level >= 40 && class_level == 1) || (p_level >= 76 && class_level == 2)) && class_id.getId() < 88) { /* */ /* 96 */ NpcHtmlMessage htm = new NpcHtmlMessage(0); /* 97 */ htm.setFile("classmaster/ClassList.htm"); /* 98 */ StringBuilder html = new StringBuilder(); /* */ /* 100 */ for (ClassId child : ClassId.values()) { /* */ /* 102 */ if (child.childOf(class_id) && child.level() == new_class_level) { /* 103 */ 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>"); /* */ } /* */ } /* 106 */ htm.replace("%classname%", CharTemplateTable.getClassNameById(class_id.getId())); /* 107 */ htm.replace("%classlist%", html.toString()); /* 108 */ player.sendPacket((L2GameServerPacket)htm); /* */ } /* */ else { /* */ /* 112 */ switch (class_level) { /* */ /* */ case 0: /* 115 */ player.sendCritMessage("Попробуйте, когда получите 20 уровень."); /* */ break; /* */ case 1: /* 118 */ player.sendCritMessage("Попробуйте, когда получите 40 уровень."); /* */ break; /* */ case 2: /* 121 */ player.sendCritMessage("Попробуйте, когда получите 76 уровень."); /* */ break; /* */ case 3: /* 124 */ player.sendCritMessage("Нет доступных профессий."); /* */ break; /* */ } /* */ } /* */ } /* */ /* */ /* */ private void profList(L2PcInstance player, int class_id) { /* 132 */ int class_level = player.getClassId().level(); /* 133 */ int new_class_level = class_level + 1; /* 134 */ int p_level = player.getLevel(); /* */ /* 136 */ EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level)); /* 137 */ if (pay != null) { /* */ /* 139 */ if (player.getItemCount(pay.id) < pay.count) { /* */ /* 141 */ player.sendCritMessage("Cтоимость получения профессии " + pay.count + " " + ItemTable.getInstance().getTemplate(pay.id).getName()); /* */ return; /* */ } /* 144 */ player.destroyItemByItemId("clasmaster", pay.id, pay.count, (L2Object)player, true); /* */ } /* */ /* 147 */ changeClass(player, class_id); /* 148 */ player.checkAllowedSkills(); /* */ /* 150 */ if (class_id >= 88) { /* 151 */ player.sendPacket((L2GameServerPacket)Static.THIRD_CLASS_TRANSFER); /* */ } else { /* 153 */ player.sendPacket((L2GameServerPacket)Static.CLASS_TRANSFER); /* */ } /* 155 */ if (Config.REWARD_CLASS) /* */ { /* 157 */ if ((Config.REWARD_FIRST_CLASS && class_level == 0) || (Config.REWARD_SECOND_CLASS && class_level == 1) || (Config.REWARD_THIRD_CLASS && class_level == 2)) { /* */ /* 159 */ player.setShadeItems(true); /* 160 */ NpcHtmlMessage html = NpcHtmlMessage.id(0); /* 161 */ String htm = HtmCache.getInstance().getHtm("classmaster/Up_" + new_class_level + ".htm"); /* 162 */ html.setHtml(htm); /* 163 */ html.replace("%ClassName%", CharTemplateTable.getClassNameById(player.getClassId().getId())); /* 164 */ player.sendPacket((L2GameServerPacket)html); /* */ } /* */ } /* */ /* 168 */ 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)) { /* 169 */ showWelcome(player); /* */ } /* */ } /* */ /* */ private void changeClass(L2PcInstance player, int val) { /* 174 */ player.abortAttack(); /* 175 */ player.abortCast(); /* 176 */ player.setIsParalyzed(true); /* 177 */ player.setClassId(val); /* */ /* 179 */ if (player.isSubClassActive()) { /* 180 */ ((SubClass)player.getSubClasses().get(Integer.valueOf(player.getClassIndex()))).setClassId(player.getActiveClass()); /* */ } else { /* 182 */ player.setBaseClass(player.getActiveClass()); /* */ } /* 184 */ player.rewardSkills(); /* 185 */ player.store(); /* 186 */ player.broadcastUserInfo(); /* 187 */ player.setIsParalyzed(false); /* */ } /* */ /* */ /* */ /* */ public String[] getVoicedCommandList() { /* 193 */ return VOICED_COMMANDS; /* */ } /* */ } 2) В каком именно файле стоит запрет на использование банки НР при смерти ??? хочу ACP доделать(юзается банка НР когда мертв) Есть ядро с фиксом, но какой именной файл отвечает за запрет на использование банки?? Стырил с другой пв и даже доделать не может, ор . Кажется я даже знаю с какой ты пв всё это воруешь, фикс ацп только у одной недавно вышел. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0000 2 Опубликовано 4 августа, 2020 (изменено) А кому-то интересно ор, не ор ? Пиши по делу, Legions не может помочь, ор Изменено 4 августа, 2020 пользователем 0000 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 4 августа, 2020 добавь импорт (если его нет) net.sf.l2j.Config.EventReward а этот удали net.sf.l2j.gameserver.model.EventReward 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0000 2 Опубликовано 4 августа, 2020 CalypsoToolz ПОМОГ в очередной раз! Жаль не пашет, накосячил где то, пороюсь отпишусь) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты