dik 0 Опубликовано 6 февраля, 2014 (изменено) всем доброго времени суток. вообщем хочу реализовать следующее: на некоторых пвп серверах видел такую штуку что в ГМ-шопе есть кнопки 1-2-3 профессия, на неё тыкаешь и html окно ГМ-шопа переходит к окну класс мастера. очень удобная вещь чтобы не спавнить котов, а всё было сразу в гм-шопе. как такое реализовать можно знает кто? на скок я понял нужно какой то байпас дописывать в ядро. вообщем кто в курсе помогите плз. если что, юзаю сборку ИЛ, исходы l2jFrozen. заранее спс за ответы. Пробовал вот этот код, но бьет ошибки при компиляции if(command.startsWith("ololo"){ if (((level >= 20 && jobLevel == 1 ) || (level >= 40 && jobLevel == 2 )) && Config.ALLOW_CLASS_MASTERS) { showChatWindow(player, classId.getId()); } else if (level >= 76 && Config.ALLOW_CLASS_MASTERS && classId.getId() < 88) { for (int i = 0; i < SECONDN_CLASS_IDS.length; i++) { if (classId.getId() == SECONDN_CLASS_IDS) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); TextBuilder sb = new TextBuilder(); sb.append("<html><body<table width=200>"); sb.append("<tr><td><center>"+CharTemplateTable.getClassNameById(player.getClassId().getId())+" Class Master:</center></td></tr>"); sb.append("<tr><td><br></td></tr>"); sb.append("<tr><td><a action=\"bypass -h npc_"+getObjectId()+"_change_class "+(88+i)+"\">Advance to "+CharTemplateTable.getClassNameById(88+i)+"</a></td></tr>"); sb.append("<tr><td><br></td></tr>"); sb.append("</table></body></html>"); html.setHtml(sb.toString()); player.sendPacket(html); break; } } } else { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); TextBuilder sb = new TextBuilder(); sb.append("<html><body>"); switch (jobLevel) { case 1: sb.append("Come back here when you reach level 20 to change your class.<br>"); break; case 2: sb.append("Come back here when you reach level 40 to change your class.<br>"); break; case 3: sb.append("There are no more class changes for you.<br>"); break; } for (Quest q : Quest.findAllEvents()) sb.append("Event: <a action=\"bypass -h Quest "+q.getName()+"\">"+q.getDescr()+"</a><br>"); sb.append("</body></html>"); html.setHtml(sb.toString()); player.sendPacket(html); }} Изменено 6 февраля, 2014 пользователем dik Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
John 145 Опубликовано 7 февраля, 2014 всем доброго времени суток. вообщем хочу реализовать следующее: на некоторых пвп серверах видел такую штуку что в ГМ-шопе есть кнопки 1-2-3 профессия, на неё тыкаешь и html окно ГМ-шопа переходит к окну класс мастера. очень удобная вещь чтобы не спавнить котов, а всё было сразу в гм-шопе. как такое реализовать можно знает кто? на скок я понял нужно какой то байпас дописывать в ядро. вообщем кто в курсе помогите плз. если что, юзаю сборку ИЛ, исходы l2jFrozen. заранее спс за ответы. Пробовал вот этот код, но бьет ошибки при компиляции if(command.startsWith("ololo"){ if (((level >= 20 && jobLevel == 1 ) || (level >= 40 && jobLevel == 2 )) && Config.ALLOW_CLASS_MASTERS) { showChatWindow(player, classId.getId()); } else if (level >= 76 && Config.ALLOW_CLASS_MASTERS && classId.getId() < 88) { for (int i = 0; i < SECONDN_CLASS_IDS.length; i++) { if (classId.getId() == SECONDN_CLASS_IDS) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); TextBuilder sb = new TextBuilder(); sb.append("<html><body<table width=200>"); sb.append("<tr><td><center>"+CharTemplateTable.getClassNameById(player.getClassId().getId())+" Class Master:</center></td></tr>"); sb.append("<tr><td><br></td></tr>"); sb.append("<tr><td><a action=\"bypass -h npc_"+getObjectId()+"_change_class "+(88+i)+"\">Advance to "+CharTemplateTable.getClassNameById(88+i)+"</a></td></tr>"); sb.append("<tr><td><br></td></tr>"); sb.append("</table></body></html>"); html.setHtml(sb.toString()); player.sendPacket(html); break; } } } else { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); TextBuilder sb = new TextBuilder(); sb.append("<html><body>"); switch (jobLevel) { case 1: sb.append("Come back here when you reach level 20 to change your class.<br>"); break; case 2: sb.append("Come back here when you reach level 40 to change your class.<br>"); break; case 3: sb.append("There are no more class changes for you.<br>"); break; } for (Quest q : Quest.findAllEvents()) sb.append("Event: <a action=\"bypass -h Quest "+q.getName()+"\">"+q.getDescr()+"</a><br>"); sb.append("</body></html>"); html.setHtml(sb.toString()); player.sendPacket(html); }} пропиши в чате .classmaster если откроется окно, то можно в html покопаться и настроить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dik 0 Опубликовано 7 февраля, 2014 Html у класс мастера нету. он весь в ядре зашит. .classmaster не работет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dik 0 Опубликовано 8 февраля, 2014 (изменено) неужели никто не может помочь в данной проблеме? Нашел еще вот такой вариант компилит без ошибок но не работает if (Config.ALLOW_CLASS_MASTERS && Config.ALLOW_REMOTE_CLASS_MASTERS) { final L2ClassMasterInstance master_instance = L2ClassMasterInstance.getInstance(); if(master_instance != null){ ClassLevel lvlnow = PlayerClass.values()[activeChar.getClassId().getId()].getLevel(); if(activeChar.getLevel() >= 20 && lvlnow == ClassLevel.First) L2ClassMasterInstance.getInstance().onAction(activeChar); else if(activeChar.getLevel() >= 40 && lvlnow == ClassLevel.Second) L2ClassMasterInstance.getInstance().onAction(activeChar); else if(activeChar.getLevel() >= 76 && lvlnow == ClassLevel.Third) L2ClassMasterInstance.getInstance().onAction(activeChar); }else{ _log.info("Attention: Remote ClassMaster is Enabled, but not inserted into DataBase. Remember to install 31288 Custom_Npc .."); } } import com.l2jfrozen.gameserver.model.actor.instance.L2ClassMasterInstance; import com.l2jfrozen.gameserver.model.base.ClassLevel; import com.l2jfrozen.gameserver.model.base.PlayerClass; Изменено 8 февраля, 2014 пользователем dik Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 10 февраля, 2014 А ты инстанс то этот нпц проставляешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dik 0 Опубликовано 10 февраля, 2014 ты имеешь ввиду это? import com.l2jfrozen.gameserver.model.actor.instance.L2ClassMasterInstance; import com.l2jfrozen.gameserver.model.base.ClassLevel; import com.l2jfrozen.gameserver.model.base.PlayerClass; Происываю все в L2MerchantInstance Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 10 февраля, 2014 Нет, я имею ввиду, прописать как тип Npc Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 10 февраля, 2014 Делал подобное, могу помочь в реализации. =) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dik 0 Опубликовано 10 февраля, 2014 Нет, я имею ввиду, прописать как тип Npc Тип НПЦ L2Merchant Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты