Intrepid Posted December 5, 2008 Share Posted December 5, 2008 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. Quote Link to comment Share on other sites More sharing options...
eKoIce Posted December 5, 2008 Share Posted December 5, 2008 Code your Java Lines Got it ? Quote Link to comment Share on other sites More sharing options...
Intrepid Posted December 5, 2008 Author Share Posted December 5, 2008 sry it's coded now. Quote Link to comment Share on other sites More sharing options...
PrettyBOYY Posted January 22, 2009 Share Posted January 22, 2009 ummm i have l2jfree and i dont have model in my gameserver folder... where is it located? Quote Link to comment Share on other sites More sharing options...
Intrepid Posted January 22, 2009 Author Share Posted January 22, 2009 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 Quote Link to comment Share on other sites More sharing options...
PrettyBOYY Posted January 22, 2009 Share Posted January 22, 2009 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... Quote Link to comment Share on other sites More sharing options...
Intrepid Posted January 22, 2009 Author Share Posted January 22, 2009 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 Quote Link to comment Share on other sites More sharing options...
PrettyBOYY Posted January 23, 2009 Share Posted January 23, 2009 how do we open up the core from our datapack? Quote Link to comment Share on other sites More sharing options...
Intrepid Posted January 23, 2009 Author Share Posted January 23, 2009 how do we open up the core from our datapack? Learn to use svn!damn use the search button Quote Link to comment Share on other sites More sharing options...
Todo Posted January 24, 2009 Share Posted January 24, 2009 hmm is a good idea .. i will try :) Quote Link to comment Share on other sites More sharing options...
StarChild Posted February 21, 2009 Share Posted February 21, 2009 Thank you! Very good guide you have made ^^ Easy to understand :P Quote Link to comment Share on other sites More sharing options...
Vago Posted February 21, 2009 Share Posted February 21, 2009 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. Quote Link to comment Share on other sites More sharing options...
Intrepid Posted February 21, 2009 Author Share Posted February 21, 2009 good idea thanks:) Ps.:thats not a non mutant substuck you NEED that before you make a substuck server:P Quote Link to comment Share on other sites More sharing options...
rolinga Posted February 23, 2009 Share Posted February 23, 2009 aver Quote Link to comment Share on other sites More sharing options...
KaL Posted July 8, 2009 Share Posted July 8, 2009 Thanks! Nice guide! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.