I made this while i was bored, i haven't tested it, so if anyone can test it and reply would be really helpful.
What it does is rewarding players with levels from their pvps amount. I used levels from 85 to 100 but of course you can & should change them.
Idea=> you can increase the maximum level, allow the players to level up till 85 with mobs and then from 85 to 100 with this system.
Index: I:/workspace/L2_GameServer/java/config/pvp.properties
===================================================================
--- I:/workspace/L2_GameServer/java/config/pvp.properties (revision 3645)
+++ I:/workspace/L2_GameServer/java/config/pvp.properties (working copy)
@@ -57,4 +57,39 @@
# Length one stays in PvP mode after hitting a purple player (in ms)
# Default: 60000
-PvPVsPvPTime = 60000
\ No newline at end of file
+PvPVsPvPTime = 60000
+
+# Allow pvp level system, a system which awards players with levels from their pvps
+# system is auto enabled only after level 85 & 100%
+AllowPvPLevelSystem = false
+
+# Ammount for 1st level
+PvPLevelAmmount1 = 300
+# Ammount for 2nd level
+PvPLevelAmmount2 = 400
+# Ammount for 3nd level
+PvPLevelAmmount3 = 500
+# Ammount for 4th level
+PvPLevelAmmount4 = 600
+# Ammount for 5th level
+PvPLevelAmmount5 = 700
+# Ammount for 6th level
+PvPLevelAmmount6 = 800
+# Ammount for 7th level
+PvPLevelAmmount7 = 900
+# Ammount for 8th level
+PvPLevelAmmount8 = 1000
+# Ammount for 9th level
+PvPLevelAmmount9 = 1100
+# Ammount for 10th level
+PvPLevelAmmount10 = 1200
+# Ammount for 11th level
+PvPLevelAmmount11 = 1300
+# Ammount for 12th level
+PvPLevelAmmount12 = 1400
+# Ammount for 13th level
+PvPLevelAmmount13 = 1500
+# Ammount for 14th level
+PvPLevelAmmount14 = 1600
+# Ammount for 15th level
+PvPLevelAmmount15 = 2000
\ No newline at end of file
Index: I:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- I:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 3645)
+++ I:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -5656,6 +5656,96 @@
}
/**
+ * PvP counts as xp after level 85.
+ *
+ */
+ public void increaseLevelFromPvPs(int pvpKills)
+ {
+ if (getLevel() <= 85)
+ return;
+ {
+ if (Config.ALLOW_PVP_LEVEL_SYSTEM && getLevel() >= 86 && getLevel() < 101)
+ {
+ if ((getLevel() == 86 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT1)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT2)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT1 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 87 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT2)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT3)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT2 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 88 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT3)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT4)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT3 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 89 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT4)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT5)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT4 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 90 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT5)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT6)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT5 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 91 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT6)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT7)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT6 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 92 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT7)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT8)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT7 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 93 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT8)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT9)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT8 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 94 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT9)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT10)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT9 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 95 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT10)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT11)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT10 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 96 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT11)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT12)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT11 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 97 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT12)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT13)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT12 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 98 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT13)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT14)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT13 +" pvps and leveled up!");
+ }
+ else if ((getLevel() == 99 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT14)) && (pvpKills < (Config.PVP_LEVEL_AMMOUNT15)))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT14 +" pvps and leveled up!");
+ }
+ else if (getLevel() == 100 && pvpKills >= (Config.PVP_LEVEL_AMMOUNT15))
+ {
+ addExpAndSp(Experience.LEVEL[getLevel() + 1], 0);
+ sendMessage("You reached " + Config.PVP_LEVEL_AMMOUNT15 +" pvps and leveled up!");
+ }
+ }
+ }
+ }
+
+ /**
* Increase the pvp kills count and send the info to the player
*
*/
@@ -5664,6 +5754,9 @@
// Add karma to attacker and increase its PK counter
setPvpKills(getPvpKills() + 1);
+ increaseLevelFromPvPs(getPvpKills());
+ broadcastUserInfo();
+
// Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
sendPacket(new UserInfo(this));
sendPacket(new ExBrExtraUserInfo(this));
Index: I:/workspace/L2_GameServer/java/net/sf/l2j/Config.java
===================================================================
--- I:/workspace/L2_GameServer/java/net/sf/l2j/Config.java (revision 3645)
+++ I:/workspace/L2_GameServer/java/net/sf/l2j/Config.java (working copy)
@@ -793,6 +793,24 @@
public static String DATAPACK_VERSION;
public static int PVP_NORMAL_TIME;
public static int PVP_PVP_TIME;
+ public static boolean ALLOW_PVP_LEVEL_SYSTEM;
+ public static int PVP_LEVEL_AMMOUNT1;
+ public static int PVP_LEVEL_AMMOUNT2;
+ public static int PVP_LEVEL_AMMOUNT3;
+ public static int PVP_LEVEL_AMMOUNT4;
+ public static int PVP_LEVEL_AMMOUNT5;
+ public static int PVP_LEVEL_AMMOUNT6;
+ public static int PVP_LEVEL_AMMOUNT7;
+ public static int PVP_LEVEL_AMMOUNT8;
+ public static int PVP_LEVEL_AMMOUNT9;
+ public static int PVP_LEVEL_AMMOUNT10;
+ public static int PVP_LEVEL_AMMOUNT11;
+ public static int PVP_LEVEL_AMMOUNT12;
+ public static int PVP_LEVEL_AMMOUNT13;
+ public static int PVP_LEVEL_AMMOUNT14;
+ public static int PVP_LEVEL_AMMOUNT15;
public static enum IdFactoryType
{
Compaction,
@@ -2454,6 +2472,24 @@
else if (pName.equalsIgnoreCase("PvPVsNormalTime")) PVP_NORMAL_TIME = Integer.parseInt(pValue);
else if (pName.equalsIgnoreCase("PvPVsPvPTime")) PVP_PVP_TIME = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("AllowPvPLevelSystem")) ALLOW_PVP_LEVEL_SYSTEM = Boolean.parseBoolean(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount1")) PVP_LEVEL_AMMOUNT1 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount2")) PVP_LEVEL_AMMOUNT2 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount3")) PVP_LEVEL_AMMOUNT3 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount4")) PVP_LEVEL_AMMOUNT4 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount5")) PVP_LEVEL_AMMOUNT5 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount6")) PVP_LEVEL_AMMOUNT6 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount7")) PVP_LEVEL_AMMOUNT7 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount8")) PVP_LEVEL_AMMOUNT8 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount9")) PVP_LEVEL_AMMOUNT9 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount10")) PVP_LEVEL_AMMOUNT10 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount11")) PVP_LEVEL_AMMOUNT11 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount12")) PVP_LEVEL_AMMOUNT12 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount13")) PVP_LEVEL_AMMOUNT13 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount14")) PVP_LEVEL_AMMOUNT14 = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PvPLevelAmmount15")) PVP_LEVEL_AMMOUNT15 = Integer.parseInt(pValue);
else if (pName.equalsIgnoreCase("GlobalChat")) DEFAULT_GLOBAL_CHAT = pValue;
else if (pName.equalsIgnoreCase("TradeChat")) DEFAULT_TRADE_CHAT = pValue;
else if (pName.equalsIgnoreCase("GMAdminMenuStyle")) GM_ADMIN_MENU_STYLE = pValue;
Note: lvl 101 means 100 & 100%
With the following you can stop people from receiving exp & sp after lvl 85.
Index: I:/workspace/L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Attackable.java
===================================================================
--- I:/workspace/L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Attackable.java (revision 4250)
+++ I:/workspace/L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Attackable.java (working copy)
@@ -704,7 +704,7 @@
}
// Distribute the Exp and SP between the L2PcInstance and its L2Summon
- if (!attacker.isDead())
+ if (!attacker.isDead() && attacker.getLevel() <= 85)
{
long addexp = Math.round(attacker.calcStat(Stats.EXPSP_RATE, exp, null, null));
int addsp = (int)attacker.calcStat(Stats.EXPSP_RATE, sp, null, null);