˚کp4g0®4m4NoS™ Posted June 9, 2010 Posted June 9, 2010 Original Poster: LurkerElf From G-Hamster Forum Γενικά : μολις ενας char φτάσει στα κατάληλα lvl (20.40.76) τότε αυτόματα ενα window με menu ιδιο με αυτο του roy the cat εμφανίζετε και ο Char μπορεί να κάνει ClassChange. Index: java/net/sf/l2j/gameserver/model/actor/instance/L2ClassMasterInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2ClassMasterInstance.java (revision 2705) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2ClassMasterInstance.java (working copy) @@ -18,9 +18,11 @@ import net.sf.l2j.Config; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.datatables.CharTemplateTable; +import net.sf.l2j.gameserver.datatables.NpcTable; 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.L2World; import net.sf.l2j.gameserver.model.quest.Quest; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; @@ -40,7 +42,11 @@ //private static Logger _log = Logger.getLogger(L2ClassMasterInstance.class.getName()); private static final int[] SECONDN_CLASS_IDS = {2,3,5,6,9,8,12,13,14,16,17,20,21,23,24,27, 28,30,33,34,36,37,40,41,43,46,48,51,52,55,57}; - + public static L2ClassMasterInstance ClassMaster = new L2ClassMasterInstance(31228, NpcTable.getInstance().getTemplate(31228)); + static + { + L2World.getInstance().storeObject(ClassMaster); + } /** * @param template */ @@ -52,8 +58,8 @@ @Override public void onAction(L2PcInstance player) { - if (!canTarget(player)) return; - + //if (!canTarget(player)) return; +/* // Check if the L2PcInstance already target the L2NpcInstance if (getObjectId() != player.getTargetId()) { @@ -73,7 +79,7 @@ player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this); return; } - +*/ if (Config.DEBUG) _log.fine("ClassMaster activated"); @@ -94,19 +100,16 @@ jobLevel = 3; } - if (!Config.ALLOW_CLASS_MASTERS) - jobLevel = 3; - if(player.isGM()) { showChatWindowChooseClass(player); } - else if (((level >= 20 && jobLevel == 1 ) || - (level >= 40 && jobLevel == 2 )) && Config.ALLOW_CLASS_MASTERS) + else if ((level >= 20 && jobLevel == 1 ) || + (level >= 40 && jobLevel == 2 )) { showChatWindow(player, classId.getId()); } - else if (level >= 76 && Config.ALLOW_CLASS_MASTERS && classId.getId() < 88) + else if (level >= 76 && classId.getId() < 88) { for (int i = 0; i < SECONDN_CLASS_IDS.length; i++) { @@ -126,7 +129,7 @@ } } } - else if (level >= 76 && Config.ALLOW_CLASS_MASTERS && ((classId.getId() >= 123 && classId.getId() < 131 ) || classId.getId() == 135)) // this is for Kamael Race 3rd Transfer + else if (level >= 76 && ((classId.getId() >= 123 && classId.getId() < 131 ) || classId.getId() == 135)) // this is for Kamael Race 3rd Transfer { showChatWindow(player, classId.getId()); } @@ -155,7 +158,7 @@ html.setHtml(sb.toString()); player.sendPacket(html); } - } + //} player.sendPacket(ActionFailed.STATIC_PACKET); } Index: java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java (revision 2705) +++ java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java (working copy) @@ -16,6 +16,7 @@ import net.sf.l2j.Config; import net.sf.l2j.gameserver.model.L2Character; +import net.sf.l2j.gameserver.model.actor.instance.L2ClassMasterInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.base.Experience; @@ -151,6 +152,17 @@ if (getLevel() + value > Experience.MAX_LEVEL - 1) return false; boolean levelIncreased = super.addLevel(value); + + switch (getLevel()) + { + case 20: + case 40: + case 76: + L2ClassMasterInstance.ClassMaster.onAction(getActiveChar()); + break; + default: + break; + } if (levelIncreased) { Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (revision 2705) +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (working copy) @@ -28,6 +28,7 @@ import net.sf.l2j.gameserver.model.L2CharPosition; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2World; +import net.sf.l2j.gameserver.model.actor.instance.L2ClassMasterInstance; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.entity.L2Event; @@ -113,9 +114,9 @@ try { L2Object object = L2World.getInstance().findObject(Integer.parseInt(id)); - + if (_command.substring(endOfId+1).startsWith("event_participate")) L2Event.inscribePlayer(activeChar); - else if (object instanceof L2NpcInstance && endOfId > 0 && activeChar.isInsideRadius(object, L2NpcInstance.INTERACTION_DISTANCE, false, false)) + else if (object instanceof L2ClassMasterInstance || (object instanceof L2NpcInstance && endOfId > 0 && activeChar.isInsideRadius(object, L2NpcInstance.INTERACTION_DISTANCE, false, false))) { ((L2NpcInstance)object).onBypassFeedback(activeChar, _command.substring(endOfId+1)); }
Kяaσh Posted June 9, 2010 Posted June 9, 2010 http://www.maxcheaters.com/forum/index.php?topic=50288.0 Already posted Locked
Recommended Posts