Tópico: [L2JFree] Trocar de Classe Sem Ir Ao Gato
Ver um Único Post
Antigo 18-09-2009, 02:56 PM   #10 (permalink)
Aquilis
Membro - Aspirante
 
Avatar de Aquilis
 
Registrado em: Aug 2009
Localização: Curitiba
Posts: 73
Agradeceu: 47
Agradecido 15 Vezes em 14 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Nome Real: Felipe

Inventório de Aquilis

Padrão

Pronto, a DP continua a mesma. Se não der para aplicar pelo path aplique manualmente.

Core:
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
Index: /java/com/l2emu/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- /java/com/l2emu/gameserver/network/clientpackets/RequestBypassToServer.java	(revision 2797)
+++ /java/com/l2emu/gameserver/network/clientpackets/RequestBypassToServer.java	(working copy)
@@ -27,6 +27,7 @@
 import com.l2emu.gameserver.model.L2CharPosition;
 import com.l2emu.gameserver.model.L2Object;
 import com.l2emu.gameserver.model.L2World;
+import com.l2emu.gameserver.model.actor.instance.L2ClassMasterInstance;
 import com.l2emu.gameserver.model.actor.instance.L2NpcInstance;
 import com.l2emu.gameserver.model.actor.instance.L2PcInstance;
 import com.l2emu.gameserver.model.entity.L2Event;
@@ -116,7 +117,7 @@
 					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 ((Config.ALLOW_CLASS_MASTERS && object instanceof L2ClassMasterInstance) || (object instanceof L2NpcInstance && endOfId > 0 && activeChar.isInsideRadius(object, L2NpcInstance.INTERACTION_DISTANCE, false, false)))
 					{
 						((L2NpcInstance)object).onBypassFeedback(activeChar, _command.substring(endOfId+1));
 					}
Index: /java/com/l2emu/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- /java/com/l2emu/gameserver/network/clientpackets/EnterWorld.java	(revision 2797)
+++ /java/com/l2emu/gameserver/network/clientpackets/EnterWorld.java	(working copy)
@@ -46,7 +46,10 @@
 import com.l2emu.gameserver.model.L2Clan;
 import com.l2emu.gameserver.model.L2Effect;
 import com.l2emu.gameserver.model.L2World;
+import com.l2emu.gameserver.model.actor.instance.L2ClassMasterInstance;
 import com.l2emu.gameserver.model.actor.instance.L2PcInstance;
+import com.l2emu.gameserver.model.base.ClassLevel;
+import com.l2emu.gameserver.model.base.PlayerClass;
 import com.l2emu.gameserver.model.entity.ClanHall;
 import com.l2emu.gameserver.model.entity.Couple;
 import com.l2emu.gameserver.model.entity.Fort;
@@ -340,6 +343,23 @@
         activeChar.onPlayerEnter();
         
         sendPacket(new SkillCoolTime(activeChar));
+        
+                if(Config.ALLOW_CLASS_MASTERS)
+        	        {
+        	        	ClassLevel lvlnow = PlayerClass.values()[activeChar.getClassId().getId()].getLevel();
+        		        if(activeChar.getLevel() >= 20 && lvlnow == ClassLevel.First)
+        		        {
+        		        	L2ClassMasterInstance.ClassMaster.onAction(activeChar);
+        		        }
+        		        else if(activeChar.getLevel() >= 40 && lvlnow == ClassLevel.Second)
+        		        {
+        		        	L2ClassMasterInstance.ClassMaster.onAction(activeChar);
+        		        }
+        		        else if(activeChar.getLevel() >= 76 && lvlnow == ClassLevel.Third)
+        		        {
+        		        	L2ClassMasterInstance.ClassMaster.onAction(activeChar);
+        		        }
+        	        }
 
         if (Olympiad.getInstance().playerInStadia(activeChar))
         {
Index: /java/com/l2emu/gameserver/model/actor/instance/L2ClassMasterInstance.java
===================================================================
--- /java/com/l2emu/gameserver/model/actor/instance/L2ClassMasterInstance.java	(revision 2797)
+++ /java/com/l2emu/gameserver/model/actor/instance/L2ClassMasterInstance.java	(working copy)
@@ -16,18 +16,17 @@
 
 import javolution.text.TextBuilder;
 import com.l2emu.Config;
-import com.l2emu.gameserver.ai.CtrlIntention;
 import com.l2emu.gameserver.datatables.CharTemplateTable;
+import com.l2emu.gameserver.datatables.NpcTable;
+import com.l2emu.gameserver.model.L2World;
 import com.l2emu.gameserver.model.base.ClassId;
 import com.l2emu.gameserver.model.base.ClassLevel;
 import com.l2emu.gameserver.model.base.PlayerClass;
 import com.l2emu.gameserver.model.quest.Quest;
 import com.l2emu.gameserver.network.SystemMessageId;
 import com.l2emu.gameserver.network.serverpackets.ActionFailed;
-import com.l2emu.gameserver.network.serverpackets.MyTargetSelected;
 import com.l2emu.gameserver.network.serverpackets.NpcHtmlMessage;
 import com.l2emu.gameserver.network.serverpackets.SystemMessage;
-import com.l2emu.gameserver.network.serverpackets.ValidateLocation;
 import com.l2emu.gameserver.templates.chars.L2NpcTemplate;
 
 /**
@@ -40,6 +39,12 @@
 	//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,109 +57,90 @@
 	@Override
 	public void onAction(L2PcInstance player)
 	{
-		if (!canTarget(player)) return;
+		if (Config.DEBUG)
+		_log.fine("ClassMaster activated");
 
-		// Check if the L2PcInstance already target the L2NpcInstance
-		if (getObjectId() != player.getTargetId())
-		{
-			// Set the target of the L2PcInstance player
-			player.setTarget(this);
+		ClassId classId = player.getClassId();
 
-			// Send a Server->Client packet MyTargetSelected to the L2PcInstance player
-			player.sendPacket(new MyTargetSelected(getObjectId(), 0));
-
-			// Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and heading on the client
-			player.sendPacket(new ValidateLocation(this));
+				int jobLevel = 0;
+				int level = player.getLevel();
+				ClassLevel lvl = PlayerClass.values()[classId.getId()].getLevel();
+				switch (lvl)
+				{
+					case First:
+						jobLevel = 1;
+						break;
+					case Second:
+						jobLevel = 2;
+						break;
+					case Third:
+						jobLevel = 3;
+						break;
+					default:
+						jobLevel = 4;
 		}
-		else
+							
+						if (!Config.ALLOW_CLASS_MASTERS)
+							jobLevel = 3;
+				
+						if(player.isGM())
 		{
-			if (!canInteract(player))
+										showChatWindowChooseClass(player);
+									}
+									else 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++)
 			{
-				player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
-				return;
+															if (classId.getId() == SECONDN_CLASS_IDS[i])
+															{
+																NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+											                    TextBuilder sb = new TextBuilder();
+											                    sb.append("<html><title>Class Change</title><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br><font color=AAAAAA>Please choose from the list of classes below...</font><br><br>");
+											                    sb.append("<a action=\"bypass -h npc_"+getObjectId()+"_change_class "+(88+i)+"\">Advance to "+CharTemplateTable.getInstance().getClassNameById(88+i)+"</a><br>");
+											                    sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><font color=808080>kthxbai</font></center></body></html>");
+											                    html.setHtml(sb.toString());
+											                    player.sendPacket(html);
+											                    break;
+															}
 			}
 
-			if (Config.DEBUG)
-				_log.fine("ClassMaster activated");
-
-			ClassId classId = player.getClassId();
-
-			int jobLevel = 0;
-			int level = player.getLevel();
-			ClassLevel lvl = PlayerClass.values()[classId.getId()].getLevel();
-			switch (lvl)
+												}
+									        else if (level >= 76 && Config.ALLOW_CLASS_MASTERS && ((classId.getId() >= 123 && classId.getId() < 131 ) || classId.getId() == 135)) // this is for Kamael Race 3rd Transfer
+									        {
+									        	showChatWindow(player, classId.getId());
+									        }
+									        else
+											{
+												NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+											TextBuilder sb = new TextBuilder();
+												sb.append("<html><title>Class Change</title><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br>");
+												switch (jobLevel)
 			{
-				case First:
-					jobLevel = 1;
+				case 1:
+				    sb.append("Come back here when you reach level 20 to change your class.<br>");
 					break;
-				case Second:
-					jobLevel = 2;
+				case 2:
+					sb.append("Come back here when you reach level 40 to change your class.<br>");
 					break;
-				default:
-					jobLevel = 3;
+				case 3:
+					sb.append("Come back here when you reach level 76 to change your class.<br>");
+					break;
+				case 4:
+					sb.append("There are no more class changes for you.<br>");
+					break;
 			}
 
-			if (!Config.ALLOW_CLASS_MASTERS)
-				jobLevel = 3;
+			for (Quest q : Quest.findAllEvents())
+				sb.append("Event: <a action=\"bypass -h Quest "+q.getName()+"\">"+q.getDescr()+"</a><br>");
 
-			if(player.isGM())
-			{
-				showChatWindowChooseClass(player);
-			}
-			else 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[i])
-					{
-                        NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
-                        TextBuilder sb = new TextBuilder();
-                        sb.append("<html><body<table width=200>");
-                        sb.append("<tr><td><center>"+CharTemplateTable.getInstance().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.getInstance().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 if (level >= 76 && Config.ALLOW_CLASS_MASTERS && ((classId.getId() >= 123 && classId.getId() < 131 ) || classId.getId() == 135)) // this is for Kamael Race 3rd Transfer
-            {
-                showChatWindow(player, classId.getId());
-            }
-			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);
-			}
+						sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><font color=808080>kthxbai</font></center></body></html>");
+						html.setHtml(sb.toString());
+						player.sendPacket(html);
 		}
 		player.sendPacket(ActionFailed.STATIC_PACKET);
 	}
@@ -219,9 +205,9 @@
 
                 NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
                 TextBuilder sb = new TextBuilder();
-                sb.append("<html><body>");
+                sb.append("<html><title>Class Change</title><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br>");
                 sb.append("You have now become a <font color=\"LEVEL\">" + CharTemplateTable.getInstance().getClassNameById(player.getClassId().getId()) + "</font>.");
-                sb.append("</body></html>");
+                sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><font color=808080>kthxbai</font></center></body></html>");
 
                 html.setHtml(sb.toString());
                 player.sendPacket(html);
@@ -280,9 +266,9 @@
 
             NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
             TextBuilder sb = new TextBuilder();
-            sb.append("<html><body>");
+            sb.append("<html><title>Class Change</title><body><center><img src=L2Font-e.replay_logo-e width=258 height=60><br><br><br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><br>");
             sb.append("You have now become a <font color=\"LEVEL\">" + CharTemplateTable.getInstance().getClassNameById(player.getClassId().getId()) + "</font>.");
-            sb.append("</body></html>");
+            sb.append("<br><img src=L2UI_CH3.herotower_deco width=256 height=32><br><font color=808080>kthxbai</font></center></body></html>");
 
             html.setHtml(sb.toString());
             player.sendPacket(html);
Index: /java/com/l2emu/gameserver/model/actor/stat/PcStat.java
===================================================================
--- /java/com/l2emu/gameserver/model/actor/stat/PcStat.java	(revision 2797)
+++ /java/com/l2emu/gameserver/model/actor/stat/PcStat.java	(working copy)
@@ -16,9 +16,12 @@
 
 import com.l2emu.Config;
 import com.l2emu.gameserver.model.L2Character;
+import com.l2emu.gameserver.model.actor.instance.L2ClassMasterInstance;
 import com.l2emu.gameserver.model.actor.instance.L2PcInstance;
 import com.l2emu.gameserver.model.actor.instance.L2PetInstance;
+import com.l2emu.gameserver.model.base.ClassLevel;
 import com.l2emu.gameserver.model.base.Experience;
+import com.l2emu.gameserver.model.base.PlayerClass;
 import com.l2emu.gameserver.model.quest.QuestState;
 import com.l2emu.gameserver.network.SystemMessageId;
 import com.l2emu.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
@@ -152,6 +155,24 @@
 		if (getLevel() + value > Experience.MAX_LEVEL - 1) return false;
 
         boolean levelIncreased = super.addLevel(value);
+        
+               
+                if(Config.ALLOW_CLASS_MASTERS)
+                {
+                	ClassLevel lvlnow = PlayerClass.values()[getActiveChar().getClassId().getId()].getLevel();
+        	        if(getLevel() >= 20 && lvlnow == ClassLevel.First)
+        	        {
+        	        	L2ClassMasterInstance.ClassMaster.onAction(getActiveChar());
+        	        }
+        	        else if(getLevel() >= 40 && lvlnow == ClassLevel.Second)
+        	        {
+        	        	L2ClassMasterInstance.ClassMaster.onAction(getActiveChar());
+        	        }
+        	        else if(getLevel() >= 76 && lvlnow == ClassLevel.Third)
+        	        {
+        	        	L2ClassMasterInstance.ClassMaster.onAction(getActiveChar());
+        	        }
+                }
         if (levelIncreased)
         {

Aquilis está offline   Responder com Citação
Os Seguintes 2 Usuários disseram Obrigado(a) para Aquilis por gostarem deste post :
Loki (19-09-2009), ShadowBR (28-09-2009)