|
Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.
Описание темы:прошу помощи |
Ссылки сообщества |
Изображения и альбомы |
Пользователи |
К странице... |
Опции темы |
16.03.2014, 13:32 | #1 |
Участник
|
ClassBBSManager
Здравствуйте
Уважаемые! Помогите решить данную траблу : Ошибка GS: Код:
INFO L2ScriptEventManager: register event name=BBSPlayerOnEnterWorld type=PLAYER _ONENTER ---------- 1. WARNING in \ClassBBSManager.java (at line 439) else if (!CANCHANGECLASS_NOWINPEACEZONE && !player.isInsideZone(L2Zone.F LAG_PEACE)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ Dead code ---------- 2. WARNING in \ClassBBSManager.java (at line 440) { player.sendMessage("╨Ф╨░╨╜╨╜╨╛╨╡ ╨┤╨╡╨╣╤Б╤В╨▓╨╕╨╡ ╨╖╨░╨┐ ╤А╨╡╤Й╨╡╨╜╨╛ ╨▓╨╜╨╡ ╨╝╨╕╤А╨╜╨╛╨╣ ╨╖╨╛╨╜╤Л."); return false; } ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ Dead code ---------- 2 problems (2 warnings)Service: Bash - RSS data parsed: loaded 100 quotes. Помогите пожалуйста написать правильно эти строки Сборка c исходниками l2emuEnterprise Вот сам скрипт Код:
package handlers.bbs.pvp; import java.util.Map; import java.util.StringTokenizer; import javolution.text.TextBuilder; import net.l2emuproject.Config; import net.l2emuproject.gameserver.cache.HtmCache; import net.l2emuproject.gameserver.communitybbs.CommunityBoard; import net.l2emuproject.gameserver.communitybbs.IBBSHandler; import net.l2emuproject.gameserver.communitybbs.Manager.TopBBSManager; import net.l2emuproject.gameserver.datatables.CharTemplateTable; import net.l2emuproject.gameserver.datatables.ItemTable; import net.l2emuproject.gameserver.instancemanager.games.HandysBlockCheckerManager; import net.l2emuproject.gameserver.model.L2ItemInstance; import net.l2emuproject.gameserver.model.actor.instance.L2PcInstance; import net.l2emuproject.gameserver.model.base.ClassId; import net.l2emuproject.gameserver.model.base.SubClass; import net.l2emuproject.gameserver.model.olympiad.Olympiad; import net.l2emuproject.gameserver.model.zone.L2Zone; import net.l2emuproject.gameserver.network.SystemMessageId; import net.l2emuproject.gameserver.network.serverpackets.SystemMessage; import net.l2emuproject.gameserver.network.serverpackets.ValidateLocation; import net.l2emuproject.gameserver.util.FloodProtector; import net.l2emuproject.gameserver.util.FloodProtector.Protected; public class ClassBBSManager extends TopBBSManager implements IBBSHandler { private static final boolean CANCHANGESUBCLASS = true;//можно менять сабкласс private static final boolean CANCHANGECLASS_NOWINPEACEZONE = true; //можно менять сабкласс за мирной зоной private static final boolean CANCHANGECLASS_INSTANCE = false; //можно менять сабкласс в инстансах private static final boolean CANCHANGECLASS_BOSSZONE = false; //можно менять сабкласс в инстансах private static final boolean CANCHANGECLASS_PVPZONE = false; //можно менять сабкласс на арене private static final boolean CANCHANGECLASS_SIEGEZONE = false; //можно менять сабкласс в зоне осады private static final boolean CANCHANGECLASS_PVPSTATE = false; //можно менять сабкласс в ПвП состоянии - розовый private static final boolean CANCHANGECLASS_DEBUFF = false; //можно менять сабкласс пока висит дебаф private static final boolean CANBUYNOBLE = true;// можно купить ноблес private static final int BUYNOBLEITEMID = 6393; private static final long BUYNOBLEITEMCOUNT = 3000; private static final int NOBLESS_TIARA = 7694; @Override public String getBoard() { return "101"; } private static String[] _COMMANDS = {"class", "changeclass", "changesubclass", "noble"}; @Override public String[] getCommands() { return _COMMANDS; } public void onEvent(Object...objects){}; @Override public String handleCommand(L2PcInstance activeChar, String command, String param) { if(command.equals("class")) { TextBuilder sb = new TextBuilder(); ClassId classId = activeChar.getClassId(); int level = activeChar.getLevel(); int jobLevel = classId.level(); int newJobLevel = jobLevel + 1; if(level >= 20 && jobLevel == 0 || level >= 40 && jobLevel == 1 || level >= 76 && jobLevel == 2 && Config.CLASS_MASTER_SETTINGS.isAllowed(newJobLevel)) { sb.append("<center>Приветствую <font color=F2C202>" + activeChar.getName() + "</font>! Ваша текущая профессия <font color=F2C202>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "</font></center>.<br>"); sb.append("<center>Список доступных классов:</center><br>"); for(ClassId child : ClassId.values()) { if(child.childOf(classId) && child.level() == newJobLevel) { sb.append("<br><center><button value=\"" + CharTemplateTable.getClassNameById(child.getId()) + "\" action=\"bypass -h _bbschangeclass " + child.getId() + "\" width=175 height=18 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center>"); } } if((Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel) != null) && (!Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).isEmpty())) { sb.append("<br><br><center>Список необходимых предметов:</center>"); sb.append("<center><table width=200>"); for(Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet()) { int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId).intValue(); sb.append("<tr><td><center><font color=\"LEVEL\">" + _count + "</font></center></td><td><center>" + ItemTable.getInstance().getTemplate(_itemId.intValue()).getName() + "</center></td></tr>"); } sb.append("</table></center><br>"); } } else { switch(jobLevel) { case 0: if(Config.CLASS_MASTER_SETTINGS.isAllowed(1)) { sb.append("Приветствую <font color=F2C202>" + activeChar.getName() + "</font>! Ваша текущая профессия <font color=F2C202>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "</font>.<br>"); sb.append("Для того, чтобы сменить вашу профессию, вы должны достичь: <font color=F2C202>20-го уровня</font>.<br>"); sb.append("Для активации сабклассов, вы должны достичь <font color=F2C202>76-го уровня</font>.<br>"); sb.append("Чтобы стать дворянином, вы должны прокачать сабкласс до <font color=F2C202>76-го уровня</font>.<br>"); } else if(Config.CLASS_MASTER_SETTINGS.isAllowed(2)) sb.append("Вернитесь после получения 1 профессии.<br>"); else if(Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Вернитесь после получения 2 профессии.<br>"); else sb.append("Вы не можете изменить вашу профессию.<br>"); break; case 1: if(Config.CLASS_MASTER_SETTINGS.isAllowed(2)) { sb.append("Приветствую <font color=F2C202>" + activeChar.getName() + "</font>! Ваша текущая профессия <font color=F2C202>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "</font>.<br>"); sb.append("Для того, чтобы сменить вашу профессию, вы должны достичь: <font color=F2C202>40-го уровня</font>.<br>"); sb.append("Для активации сабклассов, вы должны достичь <font color=F2C202>76-го уровня</font>.<br>"); sb.append("Чтобы стать дворянином, вы должны прокачать сабкласс до <font color=F2C202>76-го уровня</font>.<br>"); } else if(Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Вернитесь после получения 2 профессии.<br>"); else sb.append("Вы не можете изменить вашу профессию.<br>"); break; case 2: if(Config.CLASS_MASTER_SETTINGS.isAllowed(3)) { sb.append("Приветствую <font color=F2C202>" + activeChar.getName() + "</font>! Ваша текущая профессия <font color=F2C202>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "</font><br>"); sb.append("Для того, чтобы сменить вашу профессию, вы должны достичь: <font color=F2C202>76-го уровня</font>.<br>"); sb.append("Для активации сабклассов, вы должны достичь <font color=F2C202>76-го уровня</font>.<br>"); sb.append("Чтобы стать дворянином, вы должны прокачать сабкласс до <font color=F2C202>76-го уровня</font>.<br>"); } else sb.append("Вы не можете изменить вашу профессию.<br>"); break; case 3: sb.append("Приветствую <font color=F2C202>" + activeChar.getName() + "</font>! Ваша текущая профессия <font color=F2C202>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "</font>.<br>"); sb.append("Для вас больше нет доступных профессий.<br><br>"); if(canBuyNoble(activeChar, false)) { if(!activeChar.isNoble()) { sb.append("Вы достигли <font color=F2C202>76-го уровня</font>. Активация сабклассов теперь доступна.<br>"); sb.append("<br><button value=\"" + "Получить Дворянина" + "\" action=\"bypass -h _bbsnoble " + "\" width=175 height=18 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); sb.append("<br1>Необходимый предмет:"+ItemTable.getInstance().getTemplate(BUYNOBLEITEMID).getName()+" количество:"+BUYNOBLEITEMCOUNT); } else sb.append("Вы уже Дворянин. Получение дворянства более не доступно.<br>"); } } sb.append("<br>"); } TextBuilder sb1 = new TextBuilder(); if (activeChar.getSubClasses().size() > 0 && CANCHANGESUBCLASS) { sb1.append("Смена сабкласса:<br>"); sb1.append("<table width=200>"); if (activeChar.getBaseClass() == activeChar.getActiveClass()) sb1.append("<tr><td>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "(базовый класс)</td></tr>"); else sb1.append("<tr><td><a action=\"bypass -h _bbschangesubclass " + 0 + "\">" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "(базовый класс)</a></td></tr>"); for (Map.Entry<Integer, SubClass> en : activeChar.getSubClasses().entrySet()) { if (en.getValue().getClassId() == activeChar.getActiveClass()) sb1.append("<tr><td>" + CharTemplateTable.getClassNameById(en.getValue().getClassId()) + "</td></tr>"); else sb1.append("<tr><td><a action=\"bypass -h _bbschangesubclass " + en.getValue().getClassIndex() + "\">" + CharTemplateTable.getClassNameById(en.getValue().getClassId()) + "</a></td></tr>"); } sb1.append("</table><br>"); } else sb1.append("<br>"); String content = HtmCache.getInstance().getHtm("data/html/CommunityBoard/100.htm"); content = content.replace("%classmaster%", sb.toString()); content = content.replace("%subclasses%", sb1.toString()); separateAndSend(content, activeChar); } else if(command.equals("changeclass")) { if (activeChar.isChangeProcess()) return null; if (!checkCondition(activeChar)) return null; StringTokenizer st = new StringTokenizer(param, ";"); int val = Short.parseShort(st.nextToken()); ClassId classId = activeChar.getClassId(); ClassId newClassId = ClassId.values()[val]; int level = activeChar.getLevel(); int jobLevel = classId.level(); int newJobLevel = newClassId.level(); if(!Config.CLASS_MASTER_SETTINGS.isAllowed(newJobLevel)) return null; if(!newClassId.childOf(classId)) return null; if(newJobLevel != jobLevel + 1) return null; if(level < 20 && newJobLevel > 1) return null; if(level < 40 && newJobLevel > 2) return null; if(level < 76 && newJobLevel > 3) { return null; } if(!Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).isEmpty() && activeChar.getWeightPenalty() >= 3 || activeChar.getInventoryLimit() * 0.8D <= activeChar.getInventory().getSize()) { activeChar.sendPacket(new SystemMessage(SystemMessageId.INVENTORY_LESS_THAN_80_PERCENT)); return null; } for(Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet()) { int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId).intValue(); if(activeChar.getInventory().getInventoryItemCount(_itemId.intValue(), -1) < _count) { activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); return null; } } for(Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet()) { int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId).intValue(); activeChar.destroyItemByItemId("ClassMaster", _itemId.intValue(), _count, activeChar, true); } for(Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).keySet()) { int _count = Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).get(_itemId).intValue(); activeChar.addItem("ClassMaster", _itemId.intValue(), _count, activeChar, true); } changeClass(activeChar, val); if (Config.ALLOW_SKILL_TRANSFER) rewardPormanders(activeChar, val); if(newJobLevel == 3) activeChar.sendPacket(SystemMessageId.THIRD_CLASS_TRANSFER); else activeChar.sendPacket(SystemMessageId.CLASS_TRANSFER); TextBuilder sb = new TextBuilder(); sb.append("<br>"); sb.append("<center>Поздравляю, Вы получили класс: <font color=\"LEVEL\">" + CharTemplateTable.getClassNameById(activeChar.getClassId().getId()) + "</font>.</center>"); TextBuilder sb1 = new TextBuilder(); sb1.append("<br>"); String content = HtmCache.getInstance().getHtm("data/html/CommunityBoard/100.htm"); content = content.replace("%classmaster%", sb.toString()); content = content.replace("%subclasses%", sb1.toString()); separateAndSend(content, activeChar); activeChar.refreshOverloaded(); activeChar.refreshExpertisePenalty(); } else if(command.equals("changesubclass")) { if (!CANCHANGESUBCLASS) return null; if (activeChar.isChangeProcess()) return null; if (!checkCondition(activeChar)) return null; StringTokenizer st = new StringTokenizer(param, ";"); int val = Short.parseShort(st.nextToken()); if (!FloodProtector.tryPerformAction(activeChar, Protected.SUBCLASS)) return null; activeChar.setChangeProcess(true); activeChar.stopAllEffects(); activeChar.clearSouls(); activeChar.clearCharges(); activeChar.setActiveClass(val); activeChar.setChangeProcess(false); activeChar.sendPacket(new ValidateLocation(activeChar)); activeChar.sendPacket(SystemMessageId.SUBCLASS_TRANSFER_COMPLETED); // Transfer completed. TextBuilder sb = new TextBuilder(); sb.append("<br>"); TextBuilder sb1 = new TextBuilder(); if (activeChar.getSubClasses().size() > 0) { sb1.append("Смена сабкласса<br>"); sb1.append("<table width=200>"); if (activeChar.getBaseClass() == activeChar.getActiveClass()) sb1.append("<tr><td>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "(базовый класс)</td></tr>"); else sb1.append("<tr><td><a action=\"bypass -h _bbschangesubclass " + 0 + "\">" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "(базовый класс)</a></td></tr>"); for (Map.Entry<Integer, SubClass> en : activeChar.getSubClasses().entrySet()) { if (en.getValue().getClassId() == activeChar.getActiveClass()) sb1.append("<tr><td>" + CharTemplateTable.getClassNameById(en.getValue().getClassId()) + "</td></tr>"); else sb1.append("<tr><td><a action=\"bypass -h _bbschangesubclass " + en.getValue().getClassIndex() + "\">" + CharTemplateTable.getClassNameById(en.getValue().getClassId()) + "</a></td></tr>"); } sb1.append("</table><br>"); } else sb1.append("<br>"); String content = HtmCache.getInstance().getHtm("data/html/CommunityBoard/100.htm"); content = content.replace("%classmaster%", sb.toString()); content = content.replace("%subclasses%", sb1.toString()); separateAndSend(content, activeChar); } else if(command.equals("noble")) { if (canBuyNoble(activeChar, true)) { if (!checkCondition(activeChar)) return null; if (!activeChar.destroyItemByItemId("CommunityNoble", BUYNOBLEITEMID, BUYNOBLEITEMCOUNT, activeChar, true)) return null; activeChar.setNoble(true); activeChar.addItem("CommunityNoble", NOBLESS_TIARA, 1, null, true); activeChar.store(false); TextBuilder sb = new TextBuilder(); sb.append("<br>Поздравляем!<br1>Вы стали Дворянином<br>"); TextBuilder sb1 = new TextBuilder(); if (activeChar.getSubClasses().size() > 0 && CANCHANGESUBCLASS) { sb1.append("Смена сабкласса:<br>"); sb1.append("<table width=200>"); if (activeChar.getBaseClass() == activeChar.getActiveClass()) sb1.append("<tr><td>" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "(базовый класс)</td></tr>"); else sb1.append("<tr><td><a action=\"bypass -h _bbschangesubclass " + 0 + "\">" + CharTemplateTable.getClassNameById(activeChar.getBaseClass()) + "(базовый класс)</a></td></tr>"); for (Map.Entry<Integer, SubClass> en : activeChar.getSubClasses().entrySet()) { if (en.getValue().getClassId() == activeChar.getActiveClass()) sb1.append("<tr><td>" + CharTemplateTable.getClassNameById(en.getValue().getClassId()) + "</td></tr>"); else sb1.append("<tr><td><a action=\"bypass -h _bbschangesubclass " + en.getValue().getClassIndex() + "\">" + CharTemplateTable.getClassNameById(en.getValue().getClassId()) + "</a></td></tr>"); } sb1.append("</table><br>"); } else sb1.append("<br>"); String content = HtmCache.getInstance().getHtm("data/html/CommunityBoard/100.htm"); content = content.replace("%classmaster%", sb.toString()); content = content.replace("%subclasses%", sb1.toString()); separateAndSend(content, activeChar); } } return null; } private static void changeClass(L2PcInstance player, int val) { player.setChangeProcess(true); player.setClassId(val); if (player.isSubClassActive()) player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass()); else player.setBaseClass(player.getActiveClass()); player.store(); player.setChangeProcess(false); } public static boolean checkCondition(L2PcInstance player) { if(player == null){ return false; } if(player.isAlikeDead()) { player.sendMessage("Смена класса в таком режиме запрещена."); return false; } if(player.isInCombat()) { player.sendMessage("Смена класса в режиме боя запрещена."); return false; } else if(player.isChaotic()) { player.sendMessage("Смена класса в режиме PK запрещена."); return false; } else if(player.isInOlympiadMode() || Olympiad.isRegistered(player)) { player.sendMessage("Данное действие запрещено на Олимпе."); return false; } else if(player.isInFunEvent()) { player.sendMessage("Данное действие запрещено во время ивента."); return false; } else if (player.getBlockCheckerArena() >= 0 || HandysBlockCheckerManager.getInstance().isRegistered(player)) { player.sendMessage("Действие на ивенте Handy Block Checker запрещено."); return false; } else if(player.isInJail()) { player.sendMessage("Данное действие запрещено в Тюрьме."); return false; } else if(player.isFlying()) { player.sendMessage("Во время полёта Смена класса запрещена."); return false; } else if(!CANCHANGECLASS_INSTANCE && player.getInstanceId() > 0) { player.sendMessage("Смена класса в Инстансе запрещена."); return false; } else if (!CANCHANGECLASS_BOSSZONE && player.isInsideZone(L2Zone.FLAG_BOSS)) { player.sendMessage("Данное действие запрещено в зоне Эпик-босса."); return false; } else if (!CANCHANGECLASS_PVPZONE && player.isInsideZone(L2Zone.FLAG_PVP) && !player.isInsideZone(L2Zone.FLAG_PEACE)) { player.sendMessage("Данное действие запрещено на Арене."); return false; } else if (!CANCHANGECLASS_SIEGEZONE && player.isInsideZone(L2Zone.FLAG_SIEGE)) { player.sendMessage("Данное действие запрещено на Арене."); return false; } else if (!CANCHANGECLASS_NOWINPEACEZONE && !player.isInsideZone(L2Zone.FLAG_PEACE)) { player.sendMessage("Данное действие запрещено вне мирной зоны."); return false; } else if (!CANCHANGECLASS_PVPSTATE && player.getPvpFlag() > 0) { player.sendMessage("Данное действие запрещено в режиме ПвП (розовый ник)."); return false; } else if (!CANCHANGECLASS_DEBUFF && player.getEffectsDeBuffCount() > 0) { player.sendMessage("Данное действие запрещено пока висит дебаф."); return false; } else if (player.isInObserverMode()) return false; return true; } private void rewardPormanders(L2PcInstance player, int val) { switch (val) { case 97: // http://lineage2.rochand.com/Knowledge/race_human.php?my_class=human_cardinal player.addItem("ClassReward", 15307, 1, player, true); break; case 105: // http://lineage2.rochand.com/Knowledge/race_elf.php?my_class=elf_evas_saint player.addItem("ClassReward", 15308, 1, player, true); break; case 112: // http://lineage2.rochand.com/Knowledge/race_darkelf.php?my_class=dark_elf_shillien_saint player.addItem("ClassReward", 15309, 4, player, true); break; } } private static boolean canBuyNoble(L2PcInstance player, boolean showMsg) { if (!CANBUYNOBLE) return false; if (player.getLevel() < 76) {if(showMsg) player.sendMessage("Невозможно получить Дворянина, потому что уровень меньше 76."); return false;} if (player.isSubClassActive()) {if(showMsg) player.sendMessage("Невозможно получить Дворянина, потому что вы на сабклассе."); return false;} if (player.getSubClasses().size() == 0) {if(showMsg) player.sendMessage("Невозможно получить Дворянина, потому что у вас нет ни одного сабкласса."); return false;} boolean canTrueSub = false; for (SubClass sub : player.getSubClasses().values()) { if (sub.getLevel() >= 75) { canTrueSub = true; break; } } if (!canTrueSub) {if(showMsg) player.sendMessage("Невозможно получить Дворянина, потому что у вас нет ни одного сабкласса с уровнем 75+."); return false;} if (showMsg) { if (player.isNoble()){player.sendMessage("Вы уже Дворянин. Получение дворянства более не доступно."); return false;} L2ItemInstance payItem = player.getInventory().getItemByItemId(BUYNOBLEITEMID); if (payItem == null || payItem.getCount() < BUYNOBLEITEMCOUNT) {player.sendMessage("Невозможно получить Дворянина, потому что у вас нет необходимого кол-ва "+ItemTable.getInstance().getTemplate(BUYNOBLEITEMID).getName()+"."); return false;} } return true; } public static void main(String[] args) { CommunityBoard.getInstance().registerBBSHandler(new ClassBBSManager()); } } [CODE] else if (!CANCHANGECLASS_NOWINPEACEZONE && !player.isInsideZone(L2Zone.FLAG_PEACE)) { player.sendMessage("Данное действие запрещено вне мирной зоны."); return false; }[CODE] |
16.03.2014, 15:22 | #2 |
ZG troll squad
|
Re: ClassBBSManager
Видимо постоянно возвращает false, на это и ругается среда.
|
Сказали спасибо: |
16.03.2014, 18:05 | #4 |
Участник
|
Re: ClassBBSManager
Спасибо уважаемые!)
Разобрался!) |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|