Jump to content

Recommended Posts

Posted

well here's my guide for edit the subclasses.

 

1st how to list subclasses in 1 npc:

go to L2VillageMasterInstance.java located in gameserver.model.actor.instance

search for this:

       

/**
         * If the race of your main class is Elf or Dark Elf,
         * you may not select each class as a subclass to the other class,
         * and you may not select Overlord and Warsmith class as a subclass.
         *
         * You may not select a similar class as the subclass.
         * The occupations classified as similar classes are as follows:
         *
         * Treasure Hunter, Plainswalker and Abyss Walker
         * Hawkeye, Silver Ranger and Phantom Ranger
         * Paladin, Dark Avenger, Temple Knight and Shillien Knight
         * Warlocks, Elemental Summoner and Phantom Summoner
         * Elder and Shillien Elder
         * Swordsinger and Bladedancer
         * Sorcerer, Spellsinger and Spellhowler
         *
         */

in l2jfree pack(i compile it now so the last rev of gracia) is in the 739.line

under this you see that:

           

    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);
                }

what was that mean:

                   

if (!availSub.isOfType(npcTeachType)) availSubs.remove(availSub);

this means fighter class npc teach only fighter class subclasses and mage type npc teach only mage classes if you dont want that just delete just delete it.

 

                    // Remove any non-human or light elf classes.
                    else if (!availSub.isOfRace(Race.Human)
                        && !availSub.isOfRace(Race.Elf)) availSubs.remove(availSub);

this means the npc dont list you for subclass the orc dwarf and dark elf if the master npc(priest)is elf or human.if you dont need this delete it.

 

                {
                    // 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);
                }

this means if the master npc is not human or elf the npc dont list subclasses from other classes only from the master npc's class.if you dont want it just delete.

 

you need to see this if you want to list all class at 1 npc:

       

Set<PlayerClass> availSubs = currClass.getAvailableSubclasses();

        if (availSubs != null)
        {
            for (PlayerClass availSub : availSubs)
            {
                for (Iterator<SubClass> subList = iterSubClasses(player); subList.hasNext();)
                {
                    SubClass prevSubClass = subList.next();
                    int subClassId = prevSubClass.getClassId();
                    if (subClassId >= 88) subClassId = ClassId.values()[subClassId].getParent().getId();

                    if (availSub.ordinal() == subClassId
                        || availSub.ordinal() == player.getBaseClass())
                        availSubs.remove(PlayerClass.values()[availSub.ordinal()]);
                }
            }
        }

        return availSubs;

 

2nd how to edit the subclass limitations beetwen classes:

go to PlayerClass.java located in gameserver.model.base

here you see a list with all classes go down until you see the enumsets:

	
        private static final Set<PlayerClass> subclasseSet1 = EnumSet.of(DarkAvenger, Paladin, TempleKnight, ShillienKnight);
private static final Set<PlayerClass> subclasseSet2 = EnumSet.of(TreasureHunter, AbyssWalker, Plainswalker);
private static final Set<PlayerClass> subclasseSet3 = EnumSet.of(Hawkeye, SilverRanger, PhantomRanger);
private static final Set<PlayerClass> subclasseSet4 = EnumSet.of(Warlock, ElementalSummoner, PhantomSummoner);
private static final Set<PlayerClass> subclasseSet5 = EnumSet.of(Sorceror, Spellsinger, Spellhowler);

 

you see the never subclassed enumset with overlord and warsmith if you want to allow them just delete these lines:

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

 

in the other 5 set you see the subclass limits beetwen classes with type you know dagger class cant sub to other dagger summoner cant sub to other cummoner class and so on...

if you want to allow these you need to delete 4 lines for each subclass set

these lines:

 

	private static final Set<PlayerClass> subclasseSet1 = EnumSet.of(DarkAvenger, Paladin, TempleKnight, ShillienKnight);

	subclassSetMap.put(DarkAvenger, subclasseSet1);
	subclassSetMap.put(Paladin, subclasseSet1);
	subclassSetMap.put(TempleKnight, subclasseSet1);
	subclassSetMap.put(ShillienKnight, subclasseSet1);

 

and so on for each set you want allow for subclass.

 

now allow elf class to sub for dark elf:

search for this:

				switch (_race)
			{
				case Elf:
					subclasses.removeAll(getSet(DarkElf, Third));
					break;
				case DarkElf:
					subclasses.removeAll(getSet(Elf, Third));
					break;
			}

here you see case Elf.case elf means the npc remove all delf class from master npc if you are elf and in case DarkElf the master npc remove all class from elf race if you are dark elf the only thing you need to do is delete these things if you want to allow them.

 

now let see the kamael.For kamael i dont want to allow all class to sub to that shitty race because of the wing...if a warlord for example sub to kamael he cant use kamael skills because of they are wing reletad and it's make errors in gs consol...

so i show 2 things you can edit with kamael classes.

1st thing subclass beetwen male and female classes:

				subclasses = getSet(Kamael, Third);
			subclasses.remove(this);
			//Check sex, male can't subclass female and vice versa
			if (player.getAppearance().getSex())
				subclasses.removeAll(EnumSet.of(maleSoulbreaker));
			else
				subclasses.removeAll(EnumSet.of(femaleSoulbreaker));

search for this here you can see male cant sub to female and female cant sub to male.delete it if you want to allow.

2nd the inspector class:

				if (player.getTotalSubClasses() < 2)
				subclasses.removeAll(EnumSet.of(inspector));

here you can edit how many completed subclass needed to be an inspector.you need to edit number in player.getTotalSubClasses.

 

i think it's done now.The kamael section is totally untested!(because i hate them too much:D)

If you have problem post it.

credits to me.

  • 1 month later...
Posted

ummm i have l2jfree and i dont have model in my gameserver folder... where is it located?

 

Its in the java not directly in your downloaded gs folder.

 

L2VillageMasterInstance.java located in gameserver.model.actor.instance

Posted

Its in the java not directly in your downloaded gs folder.

 

L2VillageMasterInstance.java located in gameserver.model.actor.instance

 

ummm what where is gameserver.model.actor.instance located? lol... i only see like data, sql, etc...

Posted

ummm what where is gameserver.model.actor.instance located? lol... i only see like data, sql, etc...

 

if you dont know java you cant make it...thats how it looks..if you want to learn it...

http://www.maxcheaters.com/forum/index.php?topic=44325.0

  • 4 weeks later...
Posted

Id like to add the fallowing

 

With this you can set form what race a main's subclass can be. Something like non-mutant substuck servers.

You can set orcs subclass only from orcs , orc subclass from dark elven and human etc...As you wish...

 

Go to net/sf/l2j/gameserver/model/base/PlayerClass.java

 

and you got this code

	public final Set<PlayerClass> getAvailableSubclasses(L2PcInstance player)
{
	Set<PlayerClass> subclasses = null;

	if (_level == Third)
	{
		if (player.getRace() != Kamael)
		{
			subclasses = EnumSet.copyOf(mainSubclassSet);

			subclasses.remove(this);

			switch (_race)
			{
				case Elf:
					subclasses.removeAll(getSet(DarkElf, Third));
					break;
				case DarkElf:
					subclasses.removeAll(getSet(Elf, Third));
					break;
			}

			subclasses.removeAll(getSet(Kamael, Third));

			Set<PlayerClass> unavailableClasses = subclassSetMap.get(this);

			if (unavailableClasses != null)
				subclasses.removeAll(unavailableClasses);

		}

 

 

You probably noticed already the code

case Elf:

subclasses.removeAll(getSet(DarkElf, Third));

break;

case DarkElf:

subclasses.removeAll(getSet(Elf, Third));

break;

 

That code means that the elf classes are deleted from a dark elf's character menu when he talks to a subclass manager and vice-versa.

 

For example you want an orc to be able to subclass only from its own race...Youre gonna use this

 

case Elf:

subclasses.removeAll(getSet(DarkElf, Third));

break;

case DarkElf:

subclasses.removeAll(getSet(Elf, Third));

break;

+case Orc:

+subclasses.removeAll(getSet(Elf, Third));

+subclasses.removeAll(getSet(DarkElf, Third));

+subclasses.removeAll(getSet(Human, Third));

+subclasses.removeAll(getSet(Dwarf, Third));

+subclasses.removeAll(getSet(Kamael, Third));

+break;

 

The point is that for every race that you wanna change, you delete the other races.

  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Website: https://l2aurum.com/ Discord: https://discord.gg/ngaD9DJRjE   Dear Players, We are excited to announce that the x300 Summer Season Beta server will open on 19‑06‑2026 at 20:00 GMT+2. As previously mentioned, there will be no wipe and no account deletion. All accounts, characters, items, and progress from Season 1 will remain completely safe. To ensure a fair and competitive start for new players, all Season 1 accounts will be temporarily locked. The official Summer Season launch will take place on 26‑06‑2026 at 20:00 GMT+2. A few weeks after the official launch, Season 1 accounts will be unlocked so previous players can access their characters and continue their journey. This approach allows new players to enjoy a fresh start while preserving the progress and achievements of our long-term community. Thank you for your continued support, and we look forward to welcoming everyone to the new Summer Season. L2Aurum Team   Explore L2 Aurum Features Discover the Enhancements that set us apart!   Information Server Version: Interlude - PvP Server Client Interface: Unique Interface   Rates     Additional Features and changes When you create a new character, you will start in Giran Harbor at Level 1, equipped with full No-Grade items. Auto Farm is available for free for 2 hour daily without VIP. VIP players receive 4 hours of Auto Farm per day. The Auto Farm time resets with the server restart at 5:30 AM. Status Noblesse: Last hit Barakiel. Player Spawn Protection: 7 seconds. Geodata + Pathnodes: Enabled. All commands are available in the Community Board. Maximum 3 Bishops Per Party: Enabled. Boss Protect - Anti-Zerg: Enabled. Shift + click on monsters to see the droplist. Offline shop. Mana Potion Restores 1000 MP with a cooldown of 8 seconds. Inventory Slots: 250.   Weapon Information Lv1 Black Chaotic Weapons. Lv2 Aurum Weapons.   Armor Information Lv1 Blue Apella Armor. Lv2 Aurum Apella Armor. Misc additions Accessories +50 and +150 pdef|mdef. Tattoos: Resolve | Soul | Avadon. Agathions: Cosmetic only (no stats).   Buffs / Dances / Songs / Prophecies Duration: 2 hours. Total Buff Slots: 32 + 4 (Divine Inspiration). Vote Buff: You must vote on 3 of 6 vote sites to get the vote buff blessing. Castle Reward Every clan that captures a castle receives the castle owner clan blessing buff. To receive it, the clan leader must be online.   Events   Raid Bosses Epic Bosses Final Bosses     For full server information please visit website PvP: Server Features   Website: https://l2aurum.com/ Discord: https://discord.gg/ngaD9DJRjE      
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and 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..