|
Você não é registrado, por favor registre-se para ter acesso ao conteúdo completo. Caso seja registrado, efetue login. Esqueceu sua senha? Clique aqui Recomendamos o uso do Mozilla Firefox para uma melhor visualização. |
|
| Início | Postados Hoje | Marcar Fóruns Como Lidos | Álbums | Banidos | SE Team | Medalhas |
|
|||||||
| Registrar | Loteria VIP | Staff SE | Regras do fórum | Comunidade | Arcade | Postados Hoje | Pesquisar | Experience |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
![]() |
|
|
Ferramentas do Tópico | Modos de Exibição |
|
|
#1 |
|
Banido
![]() Registrado em: May 2009
Posts: 5
Agradeceu: 35
Agradecido 17 Vezes em 3 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
|
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:
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
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)
{
[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) |
|
|
| Links Patrocinados |
|
|
#2 |
|
Membro - Capitão
![]() Registrado em: Jun 2009
Posts: 119
Agradeceu: 93
Agradecido 12 Vezes em 8 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
|
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 ![]() e estao todos de parabens |
|
|
|
|
|
#3 | ||||||||||||||
|
Membro - Aspirante
![]() Registrado em: Nov 2008
Posts: 69
Agradeceu: 52
Agradecido 41 Vezes em 25 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
|
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 |
||||||||||||||
|
|
|
||||||||||||||
|
|
#4 | ||||||||||||||
|
Membro - General
![]() Registrado em: Mar 2009
Posts: 246
Agradeceu: 115
Agradecido 114 Vezes em 62 Posts
Nome Real: Dândilo Richard.
|
Tem como colocar o core pra baixar não?
|
||||||||||||||
|
|
|
||||||||||||||
|
|
#5 | ||||||||||||||
![]() ![]() Registrado em: May 2009
Localização: Minas Gerais-Pouso Alegre
Posts: 2,249
Agradeceu: 754
Agradecido 2,075 Vezes em 922 Posts
Nome Real: Júlio César R.de Morães
|
@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)
__________________
Olá voce é novo na SecretExperience ?
Hum então voce ja deve ter lido as regras ? Não ? Então leia nossas regras evite ser alertado : [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar] Ainda tem dúvida de algo ? Então leia nosso FAQ : [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar] |
||||||||||||||
|
|
|
||||||||||||||
| O seguinte membro ao lado disse Obrigado(a) a : CavaleiroNegro por gostar deste Post : |
BioHazard (21-09-2009) |
|
|
#6 |
|
Membro - Aspirante
![]() 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
|
Aqui rodo perfeitamente para l2emu. Amanhã eu posto para você.
|
|
|
|
|
|
#7 | ||||||||||||||
|
Membro - Aspirante
![]() Registrado em: Nov 2008
Posts: 69
Agradeceu: 52
Agradecido 41 Vezes em 25 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
|
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 |
||||||||||||||
|
|
|
||||||||||||||
|
|
#8 |
|
Membro - Aspirante
![]() 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
|
O L2 Emu é o melhor pack que vi até agora. Você está usando l2jserver?
|
|
|
|
| O seguinte membro ao lado disse Obrigado(a) a : Aquilis por gostar deste Post : |
Loki (17-09-2009)
|
|
|
#9 | ||||||||||||||
|
Membro - Aspirante
![]() Registrado em: Nov 2008
Posts: 69
Agradeceu: 52
Agradecido 41 Vezes em 25 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
|
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 |
||||||||||||||
|
|
|
||||||||||||||
|
|
#10 |
|
Membro - Aspirante
![]() 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
|
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)
{
|
|
|
|