Нашел скрипт но не знаю куда его сунуть, java только ищу литературу так что пока в ней не разбиравюсь подскажите куда это запихнуть
С помощью данного мода, при каждом АПе на 20, 40, 76 уровнях, будет вылазить окошко для выбора профы. Кота для получения проф не требуется, вы даже можите его отключить в конфигахх: ALLOW_CLASS_MASTERS = FALSE
вот и вся статья
С помощью данного мода, при каждом АПе на 20, 40, 76 уровнях, будет вылазить окошко для выбора профы. Кота для получения проф не требуется, вы даже можите его отключить в конфигахх: ALLOW_CLASS_MASTERS = FALSE
Код:
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));
}
вот и вся статья