Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Check Skills ON Enter

Iniciado por Swarlog, Sep 01, 2022, 12:26 AM

Tema anterior - Siguiente tema

Swarlog

Index: /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/network/clientpackets/EnterWorld.java (revision 10)
+++ /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/network/clientpackets/EnterWorld.java (revision 12)
@@ -284,4 +284,9 @@
  if (CTF._savePlayers.contains(activeChar.getName()))
  CTF.addDisconnectedPlayer(activeChar);
+
+ if (Config.CHECK_SKILLS_ON_ENTER && !Config.ALT_GAME_SKILL_LEARN)
+ {
+ activeChar.checkAllowedSkills();
+ }
 
  sendPacket(new ShortCutInit(activeChar));
Index: /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/model/actor/instance/L2VillageMasterInstance.java
===================================================================
--- /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 10)
+++ /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 12)
@@ -49,4 +49,5 @@
 import lt.l2ks.gameserver.templates.L2NpcTemplate;
 import lt.l2ks.gameserver.util.Util;
+import lt.l2ks.gameserver.instancemanager.CoupleManager;
 
 
@@ -422,4 +423,6 @@
 
  player.sendPacket(new SystemMessage(SystemMessageId.SUBCLASS_TRANSFER_COMPLETED)); // Transfer completed.
+ if(Config.CHECK_SKILLS_ON_ENTER && !Config.ALT_GAME_SKILL_LEARN) player.checkAllowedSkills();
+ CoupleManager.getInstance().checkCouple(player);
  break;
  case 6: // Change/Cancel Subclass - Choice
@@ -482,4 +485,6 @@
 
  player.sendPacket(new SystemMessage(SystemMessageId.ADD_NEW_SUBCLASS)); // Subclass added.
+ if(Config.CHECK_SKILLS_ON_ENTER && !Config.ALT_GAME_SKILL_LEARN) player.checkAllowedSkills();
+ CoupleManager.getInstance().checkCouple(player);
  }
  else
Index: /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/model/actor/instance/L2PcInstance.java (revision 10)
+++ /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/model/actor/instance/L2PcInstance.java (revision 12)
@@ -22,4 +22,5 @@
 import java.util.Collection;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -7523,7 +7524,85 @@
 
  /**
- * Retrieve from the database all skills of this L2PcInstance and add them to _skills.<BR>
- * <BR>
- */
+ * Retrieve from the database all skills of this L2PcInstance and add them to _skills.
+ */
+ public void checkAllowedSkills()
+    {
+        boolean flag = false;
+        if(!isGM())
+        {
+            Collection collection = SkillTreeTable.getInstance().getAllowedSkills(getClassId());
+            L2Skill al2skill[] = getAllSkills();
+            int i = al2skill.length;
+            for(int j = 0; j < i; j++)
+            {
+                L2Skill l2skill = al2skill[j];
+                int k = l2skill.getId();
+                boolean flag1 = false;
+                Iterator iterator = collection.iterator();
+                do
+                {
+                    if(!iterator.hasNext())
+                        break;
+                    L2SkillLearn l2skilllearn = (L2SkillLearn)iterator.next();
+                    if(l2skilllearn.getId() == k)
+                        flag1 = true;
+                } while(true);
+
+ if(Config.CHECK_NOBLE_SKILLS)
+ {
+ if(isNoble() && k >= 325 && k <= 327)
+ flag1 = true;
+ if(isNoble() && k >= 1323 && k <= 1327)
+ flag1 = true;
+ }
+ else
+ {
+ if(k >= 325 && k <= 327)
+ flag1 = true;
+ if(k >= 1323 && k <= 1327)
+ flag1 = true;
+ }
+ if(Config.CHECK_HERO_SKILLS)
+ {
+ if(isHero() && k >= 395 && k <= 396)
+ flag1 = true;
+ if(isHero() && k >= 1374 && k <= 1376)
+ flag1 = true;
+ }
+ else
+ {
+ if(k >= 395 && k <= 396)
+ flag1 = true;
+ if(k >= 1374 && k <= 1376)
+ flag1 = true;
+ }
+                if(getClan() != null && k >= 370 && k <= 391)
+                    flag1 = true;
+                if(getClan() != null && k >= 246 && k <= 247 && getClan().getLeaderId() == getObjectId())
+                    flag1 = true;
+                if(k >= 1312 && k <= 1322)
+                    flag1 = true;
+                if(k >= 1368 && k <= 1373)
+                    flag1 = true;
+                if(k >= 3000 && k < 7000)
+                {
+                    flag1 = true;
+                    if(!isCursedWeaponEquiped() && (k == 3603 || k == 3629))
+                        flag1 = false;
+                }
+ if(Config.LIST_NON_CHECK_SKILLS.contains(Integer.valueOf(k)))
+ flag1 = true;
+                if(!flag1)
+                {
+                    removeSkill(l2skill);
+                    sendMessage((new StringBuilder()).append("Skill ").append(l2skill.getName()).append(" removed and gm informed!").toString());
+                    _log.warning((new StringBuilder()).append("WARNING!!! Character ").append(getName()).append(" Cheater!. Skill ").append(l2skill.getName()).append(" removed. Skill level ").append(l2skill.getLevel()).toString());
+                    GmListTable.broadcastMessageToGMs((new StringBuilder()).append("WARNING!!! Character ").append(getName()).append(" Cheater!. Skill ").append(l2skill.getName()).append(" removed").toString());
+                }
+            }
+
+        }
+    }
+
  private void restoreSkills()
  {
Index: /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/instancemanager/CoupleManager.java
===================================================================
--- /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/instancemanager/CoupleManager.java (revision 10)
+++ /Trunk/L2JKS-GameServer/java/lt/l2ks/gameserver/instancemanager/CoupleManager.java (revision 12)
@@ -24,4 +24,8 @@
 import lt.l2ks.gameserver.model.entity.Couple;
 
+import lt.l2ks.gameserver.datatables.SkillTable;
+import lt.l2ks.gameserver.model.L2ItemInstance;
+import lt.l2ks.gameserver.model.L2Skill;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -132,5 +136,42 @@
  }
  }
-
+
+ public void checkCouple(L2PcInstance activeChar)
+ {
+ if (activeChar.isMarried())
+ {
+ if (activeChar.getInventory().getItemByItemId(9140) == null)
+ {
+ activeChar.addItem("Couple", 9140, 1, activeChar, true);
+ activeChar.getInventory().updateDatabase();
+ }
+ L2Skill skill;
+     skill = SkillTable.getInstance().getInfo(3260,1);
+ activeChar.addSkill(skill, true);
+ skill = SkillTable.getInstance().getInfo(3261,1);
+ activeChar.addSkill(skill, true);
+ skill = SkillTable.getInstance().getInfo(3262,1);
+ activeChar.addSkill(skill, true);
+ }
+ else
+ {
+ for (L2ItemInstance item : activeChar.getInventory().getItems())
+ {
+ if (item.getItemId() == 9140)
+ {
+ activeChar.destroyItem("Removing Couple", item, activeChar, true);
+ activeChar.getInventory().updateDatabase();
+ }
+ }
+ L2Skill skill;
+ skill = SkillTable.getInstance().getInfo(3260,1);
+ activeChar.removeSkill(skill, true);
+ skill = SkillTable.getInstance().getInfo(3261,1);
+ activeChar.removeSkill(skill, true);
+ skill = SkillTable.getInstance().getInfo(3262,1);
+ activeChar.removeSkill(skill, true);
+ }
+ }
+
  public void deleteCouple(int coupleId)
  {
Index: /Trunk/L2JKS-GameServer/java/lt/l2ks/Config.java
===================================================================
--- /Trunk/L2JKS-GameServer/java/lt/l2ks/Config.java (revision 10)
+++ /Trunk/L2JKS-GameServer/java/lt/l2ks/Config.java (revision 12)
@@ -203,4 +203,9 @@
  public static byte SIDE_BLOW_SUCCESS;
  public static int ALT_REPUTATION_SCORE_PER_KILL;
+ public static boolean CHECK_SKILLS_ON_ENTER;
+ public static String NON_CHECK_SKILLS;
+ public static List<Integer> LIST_NON_CHECK_SKILLS = new FastList<Integer>();
+ public static boolean CHECK_NOBLE_SKILLS;
+ public static boolean CHECK_HERO_SKILLS;
 
  // CLANHALL_CONFIG_FILE
@@ -1086,4 +1091,12 @@
  SIDE_BLOW_SUCCESS = Byte.parseByte(altSettings.getProperty("SideBlow", "60"));
  ALT_REPUTATION_SCORE_PER_KILL = Integer.parseInt(altSettings.getProperty("ReputationScorePerKill", "1"));
+ CHECK_SKILLS_ON_ENTER = Boolean.valueOf(altSettings.getProperty("CheckSkillsOnEnter", "False"));
+ CHECK_HERO_SKILLS = Boolean.valueOf(altSettings.getProperty("CheckHeroSkills", "True"));
+ CHECK_NOBLE_SKILLS = Boolean.valueOf(altSettings.getProperty("CheckNobleSkills", "True"));
+ NON_CHECK_SKILLS = altSettings.getProperty("NonCheckSkills", "10000");
+ LIST_NON_CHECK_SKILLS = new FastList<Integer>();
+ for (String id : NON_CHECK_SKILLS.split(",")) {
+ LIST_NON_CHECK_SKILLS.add(Integer.parseInt(id));
+ }
  _log.info("# " + ALT_SETTINGS_FILE + " Sucessfully LOADED #");
  }
Index: /Trunk/L2JKS-GameServer/config/altsettings.properties
===================================================================
--- /Trunk/L2JKS-GameServer/config/altsettings.properties (revision 10)
+++ /Trunk/L2JKS-GameServer/config/altsettings.properties (revision 12)
@@ -167,4 +167,19 @@
 
 #-------------------------------------------------------------
+# Check the presence of the players left skill
+CheckSkillsOnEnter = True
+
+# Check availability of conventional hero skill players (only works when CheckSkillsOnEnter = True)
+CheckHeroSkills = True
+
+# Check availability of conventional players nobless skill (only works when CheckSkillsOnEnter = True)
+CheckNobleSkills = True
+
+# Skills that will not be checked
+# Comma separated for example:
+# NonCheckSkills = 10,120,324
+NonCheckSkills = 0
+
+#-------------------------------------------------------------
 # Buffs config
 #-------------------------------------------------------------