Secret Experience

Secret Experience (https://secretexperience.net/index.php)
-   [L2J] Dúvidas Solucionadas (https://secretexperience.net/forumdisplay.php?f=653)
-   -   Pegar classe onde estiver no mapa (https://secretexperience.net/showthread.php?t=10086)

janiltojack 27-06-2009 10:09 PM

Pegar classe onde estiver no mapa
 
ja vi em alguns servidores que quando o cara chega ao level 20 em nao pecisa ir no Class Master e assim sucessivamente ele simplesmente pega a classe em um html acredito que seja o de de tutorial modificado que abre justo na hora que o cara chega ao levle nescessario pra tal evento.
A pergunta é : como faço isso , e por favor detalhem o assunto


Obrigado

Abraços:rungun:

paytaly 27-06-2009 10:12 PM

@janiltojack, isso é uma configuração, chama-se Remote Class Master.
Porém para adiciona-la é necessário saber mexer no Java, principalmente pelo fato de
o código ter sido feito para Interlude.

janiltojack 27-06-2009 10:19 PM

Classe onde estiver no map
 
paytaly muito obrigado pela resposta , eu conseguiria usando quais programas pra fazer isso

Marven Eclipse ....


isso mesmo ?

paytaly 27-06-2009 10:27 PM

Eclipse ou outra IDE que sirva pra trabalhar com Java.

Bom, esta ai a Diff, caso saiba usar faça bom proveito.
Até amanhã!
Código:

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));
                                        }


KaL 27-06-2009 10:56 PM

Realmente o código não bate em quase nada, mas se é para Interlude, por que tem isso no código ?

Citação:

- else if (level >= 76 && Config.ALLOW_CLASS_MASTERS && ((classId.getId() >= 123 && classId.getId() < 131 ) || classId.getId() == 135)) // this is for Kamael Race 3rd Transfer
:err:

paytaly 28-06-2009 09:04 AM

Consegui encontrar esse, que foi feito creio que pra Kamael mesmo.
O do Interlude não sei onde foi parar! :(
Porém creio que esse também funcione quase que sem mudar nada no Interlude.


Horários baseados na GMT -3. Agora são 01:12 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.