Jump to content
  • 0

Ayuda Duda como Resolver Acumulacion de Pasivas Mastery y_y


GMDark

Question

Buenas tardes Adapte ese codigo pero me acumula solo cuando se hace subclass overlord,bishop,Prophet,Elemental Summoner,Elven Oracle,Elven Elder,Phantom Summoner,Shillien Oracle,Shillien Elder se acumula los 2 mistery Light y Robe pero con las demas profesiones no quien me puede ayudar a solucionar este problema

 

Boa tarde, adaptei esse código mas ele só acumula ao subclassificar overlord, bispo, Profeta, Elemental Summoner, Elven Oracle, Elven Elder, Phantom Summoner, Shillien Oracle, Shillien Elder acumula os 2 mistérios Light e Robe mas com as outras profissões isso acontece não Quem pode me ajudar a resolver este problema?

 

Gracias

 

Index: /Trunk/L2_GameServer/java/config/intrepid.properties
===================================================================
--- /Trunk/L2_GameServer/java/config/intrepid.properties (revision 30)
+++ /Trunk/L2_GameServer/java/config/intrepid.properties (revision 49)
@@ -30,2 +30,5 @@
#---------------------------------------------
AllowedNPCTypes = L2Boss,L2Chest,L2FestivalMonster,L2Minion,L2Monster,L2Pet,L2RaidBoss,L2SiegeGuard,L2SiegeNpc,L2ControlTower,L2GrandBoss,L2Artefact,L2FortManager,L2FortSiegeNpc,L2FortSiegeGuard,L2FortCommander,L2FortBallista
+
+# Sub stuck
+SubStucking = False
Index: /Trunk/L2_GameServer/java/net/sf/l2j/Config.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/Config.java (revision 30)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/Config.java (revision 49)
@@ -652,4 +652,6 @@
    /** List of NPC types that won't allow casting */
    public static FastList<String> LIST_ALLOWED_NPC_TYPES = new FastList<String>();
+    /** stuck sub **/
+    public static boolean ACUMULATIVE_SUBCLASS_SKILLS;

    /** ************************************************** **/
@@ -1552,4 +1554,5 @@
	                	LIST_ALLOWED_NPC_TYPES.add(npc_type);
	                }
+	                ACUMULATIVE_SUBCLASS_SKILLS = Boolean.parseBoolean(intrepidSettings.getProperty("SubStucking", "False"));
	            }
	            catch (Exception e)
Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 8)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 49)
@@ -816,6 +816,6 @@


-        final Race npcRace = getVillageMasterRace();
-        final ClassType npcTeachType = getVillageMasterTeachType();
+        getVillageMasterRace();
+        getVillageMasterTeachType();

        PlayerClass currClass = PlayerClass.values()[charClassId];
@@ -862,22 +862,4 @@
                        availSubs.remove(availSub);                        
                }
-
-                if (npcRace == Race.Human || npcRace == Race.Elf)
-                {
-                    // If the master is human or light elf, ensure that fighter-type
-                    // masters only teach fighter classes, and priest-type masters
-                    // only teach priest classes etc.
-                    if (!availSub.isOfType(npcTeachType)) availSubs.remove(availSub);
-
-                    // Remove any non-human or light elf classes.
-                    else if (!availSub.isOfRace(Race.Human)
-                        && !availSub.isOfRace(Race.Elf)) availSubs.remove(availSub);
-                }
-                else
-                {
-                    // If the master is not human and not light elf,
-                    // then remove any classes not of the same race as the master.
-                    if (!availSub.isOfRace(npcRace)) availSubs.remove(availSub);
-                }
            }
        }
Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 48)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 49)
@@ -231,4 +231,5 @@
    // Character Skill SQL String Definitions:
	private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE charId=? AND class_index=?";
+	private static final String ACUMULATE_SKILLS_FOR_CHAR_SUB = "SELECT skill_id,skill_level FROM character_skills WHERE charId=? ORDER BY skill_id , skill_level ASC";
	private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (charId,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)";
	private static final String UPDATE_CHARACTER_SKILL_LEVEL = "UPDATE character_skills SET skill_level=? WHERE skill_id=? AND charId=? AND class_index=?";
@@ -7557,10 +7558,14 @@
		try
		{
+			// L2 Emu Addon
+			boolean isAcumulative = Config.ACUMULATIVE_SUBCLASS_SKILLS;
+			
			// Retrieve all skills of this L2PcInstance from the database
			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR);
-			
+			PreparedStatement statement = con.prepareStatement(isAcumulative ? ACUMULATE_SKILLS_FOR_CHAR_SUB : RESTORE_SKILLS_FOR_CHAR);
			statement.setInt(1, getObjectId());
-			statement.setInt(2, getClassIndex());
+			if (!isAcumulative)
+				// L2 Emu Addon
+				statement.setInt(2, getClassIndex());
			ResultSet rset = statement.executeQuery();

Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/base/PlayerClass.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/base/PlayerClass.java (revision 6)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/base/PlayerClass.java (revision 49)
@@ -209,5 +209,4 @@

	private static final Set<PlayerClass> mainSubclassSet;
-	private static final Set<PlayerClass> neverSubclassed = EnumSet.of(Overlord, Warsmith);

	private static final Set<PlayerClass> subclasseSet1 = EnumSet.of(DarkAvenger, Paladin, TempleKnight, ShillienKnight);
@@ -222,5 +221,4 @@
	{
		Set<PlayerClass> subclasses = getSet(null, Third);
-		subclasses.removeAll(neverSubclassed);

		mainSubclassSet = subclasses;
@@ -269,9 +267,38 @@
				switch (_race)
				{
+					case Human:
+						subclasses.removeAll(getSet(DarkElf, Third));
+						subclasses.removeAll(getSet(Elf, Third));
+						subclasses.removeAll(getSet(Orc, Third));
+						subclasses.removeAll(getSet(Dwarf, Third));
+						subclasses.removeAll(getSet(Kamael, Third));
+						break;
+					case DarkElf:
+						subclasses.removeAll(getSet(Human, Third));
+						subclasses.removeAll(getSet(Elf, Third));
+						subclasses.removeAll(getSet(Orc, Third));
+						subclasses.removeAll(getSet(Dwarf, Third));
+						subclasses.removeAll(getSet(Kamael, Third));
+						break;
					case Elf:
+						subclasses.removeAll(getSet(Human, Third));
						subclasses.removeAll(getSet(DarkElf, Third));
-						break;
-					case DarkElf:
+						subclasses.removeAll(getSet(Orc, Third));
+						subclasses.removeAll(getSet(Dwarf, Third));
+						subclasses.removeAll(getSet(Kamael, Third));
+						break;
+					case Orc:
+						subclasses.removeAll(getSet(Human, Third));
+						subclasses.removeAll(getSet(DarkElf, Third));
						subclasses.removeAll(getSet(Elf, Third));
+						subclasses.removeAll(getSet(Dwarf, Third));
+						subclasses.removeAll(getSet(Kamael, Third));
+						break;
+					case Dwarf:
+						subclasses.removeAll(getSet(Human, Third));
+						subclasses.removeAll(getSet(DarkElf, Third));
+						subclasses.removeAll(getSet(Orc, Third));
+						subclasses.removeAll(getSet(Elf, Third));
+						subclasses.removeAll(getSet(Kamael, Third));
						break;
				}
@@ -294,6 +321,4 @@
				else
					subclasses.removeAll(EnumSet.of(femaleSoulbreaker));
-				if (player.getTotalSubClasses() < 2)
-					subclasses.removeAll(EnumSet.of(inspector));
			}
		}
Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 49)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 50)
@@ -7575,12 +7575,20 @@
				int id = rset.getInt("skill_id");
				int level = rset.getInt("skill_level");
+				int chclass = rset.getInt("class_index");

				if (id > 9000 && id < 9007)
					continue; // fake skills for base stats
-
+				if(chclass != getClassIndex())
+
+				{
+					// Remove armor mastery from other classes
+					if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
+				}
+					
				// Create a L2Skill object for each record
				L2Skill skill = SkillTable.getInstance().getInfo(id, level);
-
-				// Add the L2Skill object to the L2Character _skills and its Func objects to the calculator set of the L2Character
+					
+				// Add the L2Skill object to the L2Character _skills and its
+				// Func objects to the calculator set of the L2Character
				super.addSkill(skill);
				if (Config.CHECK_SKILLS && Config.CHECK_SKILLS_ACCESS_LEVEL_LIST.contains(getAccessLevel().getLevel()))
@@ -7594,5 +7602,5 @@
						removeSkill(skill);
					}
-			}
+				}

			rset.close();

 

Shot00000.jpg

GMDark

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

 

if(chclass != getClassIndex())

				{
					// Remove armor mastery from other classes
					if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
				}

 

Já consegui aquele vasto conhecimento nesse fórum louco 😄

Link to comment
Share on other sites


  • 0
hace 9 horas, lipiTanKEr dijo:
if(chclass != getClassIndex())

				{
					// Remove armor mastery from other classes
					if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
				}

 

Eu já fiz isso, modifiquei esses parâmetros com os das classes e a mesma coisa check

if(chclass != getClassIndex())
						{
						// Remove armor mastery from other classes
						   if(id == 15 || id == 49 || id == 50 || id == 51 || id == 118) continue;
						// if(id == 14 || id == 15 || id == 16 || id == 17 || id == 28 || id == 29 || id == 30 || id == 41 || id == 42 || id == 43 || id == 50 || id == 51 || id == 96 || id == 97 || id == 98 || id == 104 || id == 105 || id == 111 || id == 112 || id == 115 || id == 118) continue;
					    // if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
						// if(id == 118 || id == 88 || id == 89 || id == 90 || id == 91 || id == 92 || id == 93 || id == 94 || id == 95 || id == 96 || id == 97 || id == 98 || id == 99 || id == 100 || id == 101 || id == 102 || id == 103 || id == 104 || id == 105 || id == 106 || id == 107 || id == 108 || id == 109 || id == 110 || id == 111 || id == 112 || id == 113 || id == 114 || id == 115 || id == 116 || id == 117) continue;
						}

 

GMDark

Link to comment
Share on other sites

  • 0
hace 47 minutos, lipiTanKEr dijo:

Você não tem um erro no console quando loga o char que as skills não aparecem?

Não tenho nenhum erro no console

GMDark

Link to comment
Share on other sites

  • 0

Aqui tem uma condição que compara as skills da classe base(getClassIndex()) com a subclasse(chclass).

if(chclass != getClassIndex())

Então se condição for verdadeira, id da skill da base cujo índice é diferente das skills da subclasse, ele encontra outra condição.

if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259)

Esses "id" são as skills que serão ignoradas.

id == 236 -----> Ignora o Mastery Light.

Então na teoria, para que elas não sejam ignoradas, basta remover o "id" de dentro dessa condição.

Ou simplismente remova tudo e libera geral.

if(chclass != getClassIndex())

				{
					// Remove armor mastery from other classes
					if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
				}


 

 

Já consegui aquele vasto conhecimento nesse fórum louco 😄

Link to comment
Share on other sites

  • 0
hace 1 hora, lipiTanKEr dijo:

Aqui tem uma condição que compara as skills da classe base(getClassIndex()) com a subclasse(chclass).

if(chclass != getClassIndex())

Então se condição for verdadeira, id da skill da base cujo índice é diferente das skills da subclasse, ele encontra outra condição.

if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259)

Esses "id" são as skills que serão ignoradas.

id == 236 -----> Ignora o Mastery Light.

Então na teoria, para que elas não sejam ignoradas, basta remover o "id" de dentro dessa condição.

Ou simplismente remova tudo e libera geral.

if(chclass != getClassIndex())

				{
					// Remove armor mastery from other classes
					if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
				}

 

nas 2 modificações não funcionou

Vou fazer um teste das seguintes formas e avisarei vocês

primeiro teste será assim adicionei os ids das habilidades ao invés das classes

if(chclass != getClassIndex())
						{
						// Remove armor mastery from other classes
						 if(id == 232 || id == 253 || id == 259 || id == 227 || id == 233  || id == 236 || id == 252 || id == 258 || id == 234 || id == 235  || id == 251) continue;
						// if(id == 14 || id == 15 || id == 16 || id == 17 || id == 28 || id == 29 || id == 30 || id == 41 || id == 42 || id == 43 || id == 50 || id == 51 || id == 96 || id == 97 || id == 98 || id == 104 || id == 105 || id == 111 || id == 112 || id == 115 || id == 118) continue;
					    // if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
						// if(id == 118 || id == 88 || id == 89 || id == 90 || id == 91 || id == 92 || id == 93 || id == 94 || id == 95 || id == 96 || id == 97 || id == 98 || id == 99 || id == 100 || id == 101 || id == 102 || id == 103 || id == 104 || id == 105 || id == 106 || id == 107 || id == 108 || id == 109 || id == 110 || id == 111 || id == 112 || id == 113 || id == 114 || id == 115 || id == 116 || id == 117) continue;
						}

 

O segundo teste vai ser assim, comentei tudo

if(chclass != getClassIndex())
						{
						// Remove armor mastery from other classes
						// if(id == 232 || id == 253 || id == 259 || id == 227 || id == 233  || id == 236 || id == 252 || id == 258 || id == 234 || id == 235  || id == 251) continue;
						// if(id == 14 || id == 15 || id == 16 || id == 17 || id == 28 || id == 29 || id == 30 || id == 41 || id == 42 || id == 43 || id == 50 || id == 51 || id == 96 || id == 97 || id == 98 || id == 104 || id == 105 || id == 111 || id == 112 || id == 115 || id == 118) continue;
					    // if(id == 118 || id == 163 || id == 236 || id == 249 || id == 252 || id == 253 || id == 258 || id == 259) continue;
						// if(id == 118 || id == 88 || id == 89 || id == 90 || id == 91 || id == 92 || id == 93 || id == 94 || id == 95 || id == 96 || id == 97 || id == 98 || id == 99 || id == 100 || id == 101 || id == 102 || id == 103 || id == 104 || id == 105 || id == 106 || id == 107 || id == 108 || id == 109 || id == 110 || id == 111 || id == 112 || id == 113 || id == 114 || id == 115 || id == 116 || id == 117) continue;
						}

Eu fiz o teste e vou te contar

Edited by GMDark

GMDark

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Join now

    Be part of the largest and oldest communities about Lineage2 in Latin America.





×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.