java/net/sf/l2j/Config.java <----- autin tin diadromi den briskw sto compiled mou ....kai einai Freya L2Jserver
oriste kai to code pou thelw na balw
Index: java/config/l2jmods.properties
===================================================================
--- java/config/l2jmods.properties (revision 2814)
+++ java/config/l2jmods.properties (working copy)
@@ -170,4 +170,25 @@
# - mana potion (item id 728), using skill id 2005
# Please, notice this is just core support, server administrator is requested to
# edit skill 2005 on DataPack to get them working
-EnableManaPotionSupport = False
\ No newline at end of file
+EnableManaPotionSupport = False
+
+#---------------------------------------------------------------
+# PK protection
+#---------------------------------------------------------------
+# Disables attacking char if the attacker's lvl minus victim's lvl is over
+# specified difference and the target is not flagged. For example, if you want
+# to disable PK'ing chars that are more than 20 lvls below attacker's lvl, set
+# the value to 20. Setting the value to 0 disables the feature.
+DisableAttackIfLvlDifferenceOver=0
+# If player has more than specified number of PKs in the monitored period,
+# he/she is automatically punished. If set to zero, this feature is disabled.
+PunishPKPlayerIfPKsOver=0
+# For what period (in seconds) the PKs should be monitored
+PKMonitorPeriod=3600
+# Punisment type:
+# jail - char will be jailed
+PKPunishmentType=jail
+# Punishment length (in seconds)
+# If punishment type is jail then the punishment period should be divisable by
+# 60 as jail punishment is counted in minutes
+PKPunishmentPeriod=3600
\ No newline at end of file
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java (revision 2814)
+++ java/net/sf/l2j/Config.java (working copy)
@@ -561,6 +561,11 @@
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE;
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT;
public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
+ public static int L2JMOD_DISABLE_ATTACK_IF_LVL_DIFFERENCE_OVER;
+ public static int L2JMOD_PUNISH_PK_PLAYER_IF_PKS_OVER;
+ public static long L2JMOD_PK_MONITOR_PERIOD;
+ public static String L2JMOD_PK_PUNISHMENT_TYPE;
+ public static long L2JMOD_PK_PUNISHMENT_PERIOD;
/** ************************************************** **/
/** L2JMods Settings -End **/
@@ -1768,6 +1773,12 @@
L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingClan", "False"));
L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingPrivate", "False"));
L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingFreight", "False"));
+
+ L2JMOD_DISABLE_ATTACK_IF_LVL_DIFFERENCE_OVER = Integer.parseInt(L2JModSettings.getProperty("DisableAttackIfLvlDifferenceOver", "0"));
+ L2JMOD_PUNISH_PK_PLAYER_IF_PKS_OVER = Integer.parseInt(L2JModSettings.getProperty("PunishPKPlayerIfPKsOver", "0"));
+ L2JMOD_PK_MONITOR_PERIOD = Long.parseLong(L2JModSettings.getProperty("PKMonitorPeriod", "3600"));
+ L2JMOD_PK_PUNISHMENT_TYPE = L2JModSettings.getProperty("PKPunishmentType", "jail");
+ L2JMOD_PK_PUNISHMENT_PERIOD = Long.parseLong(L2JModSettings.getProperty("PKPunishmentPeriod", "3600"));
if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
{
@@ -2310,6 +2321,13 @@
// L2JMod Mana potion
else if (pName.equalsIgnoreCase("EnableManaPotionSupport")) L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(pValue);
+ // L2JMOD Disable PK'ing Low Lvls
+ else if (pName.equalsIgnoreCase("DisableAttackIfLvlDifferenceOver")) L2JMOD_DISABLE_ATTACK_IF_LVL_DIFFERENCE_OVER = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PunishPKPlayerIfPKsOver")) L2JMOD_PUNISH_PK_PLAYER_IF_PKS_OVER = Integer.parseInt(pValue);
+ else if (pName.equalsIgnoreCase("PKMonitorPeriod")) L2JMOD_PK_MONITOR_PERIOD = Long.parseLong(pValue);
+ else if (pName.equalsIgnoreCase("PKPunishmentType")) L2JMOD_PK_PUNISHMENT_TYPE = pValue;
+ else if (pName.equalsIgnoreCase("PKPunishmentPeriod")) L2JMOD_PK_PUNISHMENT_PERIOD = Long.parseLong(pValue);
+
// PvP settings
else if (pName.equalsIgnoreCase("MinKarma")) KARMA_MIN_KARMA = Integer.parseInt(pValue);
else if (pName.equalsIgnoreCase("MaxKarma")) KARMA_MAX_KARMA = Integer.parseInt(pValue);
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 2814)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -307,10 +307,16 @@
@Override
public void doAttack(L2Character target)
{
+ if (target instanceof L2PcInstance &&
+ isPKProtected((L2PcInstance) target)) {
+ sendMessage("You cannot attack player with too low level.");
+ sendPacket(ActionFailed.STATIC_PACKET);
+ } else {
super.doAttack(target);
// cancel the recent fake-death protection instantly if the player attacks or casts spells
getPlayer().setRecentFakeDeath(false);
+ }
}
@Override
@@ -760,6 +766,9 @@
private boolean _marryrequest = false;
private boolean _marryaccepted = false;
+ /** L2JMOD PK protection **/
+ private List<Long> _pKsCounter = new FastList<Long>();
+
/** Skill casting information (used to queue when several skills are cast in a short time) **/
public class SkillDat
{
@@ -5334,6 +5343,32 @@
// Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
sendPacket(new UserInfo(this));
+
+ /** Mass PK protection stuff **/
+ if (Config.L2JMOD_PUNISH_PK_PLAYER_IF_PKS_OVER > 0) {
+ // Remove expired PKs
+ for (final Long pKTime : _pKsCounter) {
+ if (System.currentTimeMillis() - pKTime.longValue() >
+ Config.L2JMOD_PK_MONITOR_PERIOD * 1000) {
+ _pKsCounter.remove(pKTime);
+ } else {
+ // We reached timestamps that are still valid
+ break;
+ }
+ }
+
+ // Add new timestamp
+ _pKsCounter.add(Long.valueOf(System.currentTimeMillis()));
+
+ // If PK count is greater than limit then punish the char
+ if (_pKsCounter.size() > Config.L2JMOD_PUNISH_PK_PLAYER_IF_PKS_OVER) {
+ if ("jail".equals(Config.L2JMOD_PK_PUNISHMENT_TYPE)) {
+ setPunishLevel(PunishLevel.JAIL,
+ (int) (Config.L2JMOD_PK_PUNISHMENT_PERIOD / 60));
+ sendMessage("Jailed for excessive PK.");
+ }
+ }
+ }
}
public int calculateKarmaLost(long exp)
@@ -8042,6 +8077,14 @@
break;
}
+ if (target != this && target instanceof L2PcInstance &&
+ skill.isOffensive() && isPKProtected((L2PcInstance) target)) {
+ setIsCastingNow(false);
+ sendMessage("You cannot attack player with too low level.");
+ sendPacket(ActionFailed.STATIC_PACKET);
+ return;
+ }
+
// Notify the AI with AI_INTENTION_CAST and target
getAI().setIntention(CtrlIntention.AI_INTENTION_CAST, skill, target);
}
@@ -8578,6 +8621,43 @@
return true;
}
+ /**
+ * Checks whether <code>target</code> is PK protected when attacking
+ * by <code>this</code>. <code>target</code> is PK protected if it is
+ * not flagged, has no karma and difference between players lvl and
+ * target's lvl is above {@link
+ * net.sf.l2j.Config#L2JMOD_DISABLE_ATTACK_IF_LVL_DIFFERENCE_OVER}.
+ * <code>target</code> is not protected if in mutual war with attacker's
+ * clan or if in siege zone or pvp zone.
+ *
+ * @param target attack target
+ *
+ * @return true if target is PK protected, otherwise false
+ */
+ public boolean isPKProtected(final L2PcInstance target) {
+ if (Config.L2JMOD_DISABLE_ATTACK_IF_LVL_DIFFERENCE_OVER > 0 &&
+ target instanceof L2PcInstance) {
+ final L2PcInstance targetPlayer = (L2PcInstance) target;
+
+ if (targetPlayer.isInsideZone(L2Character.ZONE_SIEGE) ||
+ targetPlayer.isInsideZone(L2Character.ZONE_PVP) ||
+ (getClan() != null && targetPlayer.getClan() != null &&
+ targetPlayer.getClan().isAtWarWith(getClanId()))) {
+ return false;
+ }
+
+ if (targetPlayer.getPvpFlag() == 0 &&
+ targetPlayer.getKarma() == 0 &&
+ targetPlayer.getLevel() +
+ Config.L2JMOD_DISABLE_ATTACK_IF_LVL_DIFFERENCE_OVER <
+ getLevel()) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
/**
* Return True if the L2PcInstance is a Mage.<BR><BR>
*/
DISCORD :
https://discord.com/users/325653525793210378
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/uthciha-services
https://campsite.bio/utchihaamkt
Question
BlackDevilDev
java/net/sf/l2j/Config.java <----- autin tin diadromi den briskw sto compiled mou ....kai einai Freya L2Jserver
oriste kai to code pou thelw na balw
3 answers to this question
Recommended Posts