Secret Experience

Secret Experience (https://secretexperience.net/)
-   [Lineage] Java Mods (https://secretexperience.net/lineage-java-mods/)
-   -   [L2JFree] Trocar de Classe Sem Ir Ao Gato (https://secretexperience.net/lineage-java-mods/13011-trocar-de-classe-sem-ir-ao-gato.html)

BioHazard 12-09-2009 03:28 PM

Trocar de Classe Sem Ir Ao Gato
 
Com isso, será como se você vai para o classmaster.
Em cada nível de mudança de classe (20, 40, 76) uma janela irá aparecer pedindo para você escolher a sua classe. No gato desova necessário. Você pode até deixar ALLOW_CLASS_MASTERS= false, se quiser.
Core:
Código:

Index: /java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- /java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java        (revision 2797)
+++ /java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java        (working copy)
@@ -27,6 +27,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;
@@ -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/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- /java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java        (revision 2797)
+++ /java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java        (working copy)
@@ -46,7 +46,10 @@
 import net.sf.l2j.gameserver.model.L2Clan;
 import net.sf.l2j.gameserver.model.L2Effect;
 import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.model.actor.instance.L2ClassMasterInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.base.ClassLevel;
+import net.sf.l2j.gameserver.model.base.PlayerClass;
 import net.sf.l2j.gameserver.model.entity.ClanHall;
 import net.sf.l2j.gameserver.model.entity.Couple;
 import net.sf.l2j.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/net/sf/l2j/gameserver/model/actor/instance/L2ClassMasterInstance.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/actor/instance/L2ClassMasterInstance.java        (revision 2797)
+++ /java/net/sf/l2j/gameserver/model/actor/instance/L2ClassMasterInstance.java        (working copy)
@@ -16,18 +16,17 @@
 
 import javolution.text.TextBuilder;
 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.L2World;
 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.quest.Quest;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
-import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
 import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
-import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation;
 import net.sf.l2j.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/net/sf/l2j/gameserver/model/actor/stat/PcStat.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java        (revision 2797)
+++ /java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java        (working copy)
@@ -16,9 +16,12 @@
 
 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.ClassLevel;
 import net.sf.l2j.gameserver.model.base.Experience;
+import net.sf.l2j.gameserver.model.base.PlayerClass;
 import net.sf.l2j.gameserver.model.quest.QuestState;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.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)
        {

DP:
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

Screenshot:
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

Creditos:poltomb(l2jserver)

nois 12-09-2009 04:10 PM

gostei mais nao sei mexe com coplacao nao sei nem se e isso q faz pra coloca no serve se alguem pude fazer esse favor pra mim agradesso desde ja
uso o pack do sound
para todos os moderadores do sit: se puder me ajuda agradesso pq aqui muita gente ja me ajudo e so muito grato a tantas pessoas bacanas q esta aqui no secret aqui tudo de bom:laugh:
e estao todos de parabens

Loki 12-09-2009 05:48 PM

mano se tem ele para l2emu pois coloquei ele em l2jserver
e
uma mao na roda so que em l2emu que e a rev que eu uso nao funfa
e sim gracia final

Dandilo 14-09-2009 07:00 PM

Tem como colocar o core pra baixar não?

CavaleiroNegro 15-09-2009 03:08 AM

@nois :

Não da para mexer no JAVA do pack de alguém ja copilado amigo....

@Loki :

Amigo,pq vc não busca os caminhos de referencias e adpta para sua rev eu mesmo não utilizo rev JFREE e vo add esse código com as alterações que precisar para minha rev.(Dependeno é só seguir os arquivo .java e adicionar as linhas)

Aquilis 15-09-2009 09:55 PM

Aqui rodo perfeitamente para l2emu. Amanhã eu posto para você.

Loki 16-09-2009 11:39 PM

cavaleiro pow mano vlw mesmo ae eu fiz tudo isso so que ta dando erro na hora de compila e alias nem cheguei a compilar pois o arquivo la nao e compativel e as linhas que usei de reerencia nao funfa elas nao batem com a do script diff

aquilis cara por favor master posta ae seu arquivo ae eu vejo o seu e faço na boa para o meu e se vc tiver um sistema vio ficaria mais gratoa ainda se me arrumasse
um que diferencie o nick dos chars vips que eu coloque os dias e tal e num dia acabe o vip dele
sabe ajuda ae brigado a todos

Aquilis 17-09-2009 12:17 PM

O L2 Emu é o melhor pack que vi até agora. Você está usando l2jserver?

Loki 17-09-2009 05:51 PM

mano eu to usando l2emu versao 1438 e a melhor ate agora eu to ela e so tenho novidades add varias coisas e resolvi alguns bugs safadinhos nela mais e a melhor as outras encontrei varios bugs ae to querendo apenas isso para completar meu server
essa parada ae de mudar a classe pop - up e um sistema de vip donate tipo que mude a cor do nick dos donates esero que se vc puder postar ae mano a diff do seu classe por janela e um sistema de mudar a cor eu add aqui no meu obrigado

Aquilis 18-09-2009 02:56 PM

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

Core:
Código:

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)
        {


Loki 19-09-2009 12:32 AM

Testando mano obrigado ae por esat ajudando simvc nao teria mano um sistema vip que o cara colcoque no site e os dados dele venha para uma tabela no navicat ajuda nisso muito obrigado me manda seu msn por pm vamos conversra

CavaleiroNegro 19-09-2009 05:07 AM

@Loki :

Creio que aqui não é área para fazer pedidos né...

Quer conversar com alguém ? Envia MP não precisa ficar pedino por meio de posts.

ShadowBR 08-04-2010 11:54 AM

kra naum consigo baixar a DP :@
vc tem uma q funcione no Gracia Epilogue?

Guma 08-04-2010 06:42 PM

funciona em qual quer emulador basta ter um logica de como adicionar.

Lorde 04-07-2010 10:22 AM

Como eu fasso para adicionar uma opcao ai nas config de True ou False se o cara quiser ativar ou desativar no serve dele pode me explicar ?????

Vlw

leonardoalves 21-11-2010 01:01 PM

Esse mod funciona na l2j2010 ?

Daniel2 21-11-2010 02:22 PM

Citação:

funciona em qual quer emulador basta ter um logica de como adicionar.
basta você ler neh mano.

Astry 26-12-2010 12:30 AM

Boa noite pessoal, so novo em servidores e gostei desse post e o que estava procurando, mais como eu não entendo muito teria como me ajuda como eu coloco isse no meu server estou com uma REV de OVER12 Freya e queria fazer isso teria como me ajuda?
Aguardo

Daniel2 26-12-2010 01:15 PM

[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

ta aii mano ai você vai ter uma boa noção de como add um mod java.

Astry 26-12-2010 09:05 PM

Boa noite DANIEL obrigado pela ajuda, mais eu fiquei mais perdido ainda...rsrs, teria como me mostra como eu faço pra ADD esse codico no meu sserver iria ficar muito grato.


Horários baseados na GMT -3. Agora são 06:03 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0