XaTTa6bI4 7 Опубликовано 2 июля, 2014 нужна помощь в исходщиках надо убрать ограничения в расах и профах и когда переключаеся что б панель на нову не переключало package com.l2jserver.gameserver.model.base; import static com.l2jserver.gameserver.model.base.ClassLevel.First; import static com.l2jserver.gameserver.model.base.ClassLevel.Fourth; import static com.l2jserver.gameserver.model.base.ClassLevel.Second; import static com.l2jserver.gameserver.model.base.ClassLevel.Third; import static com.l2jserver.gameserver.model.base.ClassType.Fighter; import static com.l2jserver.gameserver.model.base.ClassType.Mystic; import static com.l2jserver.gameserver.model.base.ClassType.Priest; import static com.l2jserver.gameserver.model.base.Race.DarkElf; import static com.l2jserver.gameserver.model.base.Race.Dwarf; import static com.l2jserver.gameserver.model.base.Race.Elf; import static com.l2jserver.gameserver.model.base.Race.Human; import static com.l2jserver.gameserver.model.base.Race.Kamael; import static com.l2jserver.gameserver.model.base.Race.Orc; import java.util.EnumMap; import java.util.EnumSet; import java.util.Set; import com.l2jserver.Config; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; /** * @author luisantonioa */ public enum PlayerClass { HumanFighter(Human, Fighter, First), Warrior(Human, Fighter, Second), Gladiator(Human, Fighter, Third), Warlord(Human, Fighter, Third), HumanKnight(Human, Fighter, Second), Paladin(Human, Fighter, Third), DarkAvenger(Human, Fighter, Third), Rogue(Human, Fighter, Second), TreasureHunter(Human, Fighter, Third), Hawkeye(Human, Fighter, Third), HumanMystic(Human, Mystic, First), HumanWizard(Human, Mystic, Second), Sorceror(Human, Mystic, Third), Necromancer(Human, Mystic, Third), Warlock(Human, Mystic, Third), Cleric(Human, Priest, Second), Bishop(Human, Priest, Third), Prophet(Human, Priest, Third), ElvenFighter(Elf, Fighter, First), ElvenKnight(Elf, Fighter, Second), TempleKnight(Elf, Fighter, Third), Swordsinger(Elf, Fighter, Third), ElvenScout(Elf, Fighter, Second), Plainswalker(Elf, Fighter, Third), SilverRanger(Elf, Fighter, Third), ElvenMystic(Elf, Mystic, First), ElvenWizard(Elf, Mystic, Second), Spellsinger(Elf, Mystic, Third), ElementalSummoner(Elf, Mystic, Third), ElvenOracle(Elf, Priest, Second), ElvenElder(Elf, Priest, Third), DarkElvenFighter(DarkElf, Fighter, First), PalusKnight(DarkElf, Fighter, Second), ShillienKnight(DarkElf, Fighter, Third), Bladedancer(DarkElf, Fighter, Third), Assassin(DarkElf, Fighter, Second), AbyssWalker(DarkElf, Fighter, Third), PhantomRanger(DarkElf, Fighter, Third), DarkElvenMystic(DarkElf, Mystic, First), DarkElvenWizard(DarkElf, Mystic, Second), Spellhowler(DarkElf, Mystic, Third), PhantomSummoner(DarkElf, Mystic, Third), ShillienOracle(DarkElf, Priest, Second), ShillienElder(DarkElf, Priest, Third), OrcFighter(Orc, Fighter, First), OrcRaider(Orc, Fighter, Second), Destroyer(Orc, Fighter, Third), OrcMonk(Orc, Fighter, Second), Tyrant(Orc, Fighter, Third), OrcMystic(Orc, Mystic, First), OrcShaman(Orc, Mystic, Second), Overlord(Orc, Mystic, Third), Warcryer(Orc, Mystic, Third), DwarvenFighter(Dwarf, Fighter, First), DwarvenScavenger(Dwarf, Fighter, Second), BountyHunter(Dwarf, Fighter, Third), DwarvenArtisan(Dwarf, Fighter, Second), Warsmith(Dwarf, Fighter, Third), dummyEntry1(null, null, null), dummyEntry2(null, null, null), dummyEntry3(null, null, null), dummyEntry4(null, null, null), dummyEntry5(null, null, null), dummyEntry6(null, null, null), dummyEntry7(null, null, null), dummyEntry8(null, null, null), dummyEntry9(null, null, null), dummyEntry10(null, null, null), dummyEntry11(null, null, null), dummyEntry12(null, null, null), dummyEntry13(null, null, null), dummyEntry14(null, null, null), dummyEntry15(null, null, null), dummyEntry16(null, null, null), dummyEntry17(null, null, null), dummyEntry18(null, null, null), dummyEntry19(null, null, null), dummyEntry20(null, null, null), dummyEntry21(null, null, null), dummyEntry22(null, null, null), dummyEntry23(null, null, null), dummyEntry24(null, null, null), dummyEntry25(null, null, null), dummyEntry26(null, null, null), dummyEntry27(null, null, null), dummyEntry28(null, null, null), dummyEntry29(null, null, null), dummyEntry30(null, null, null), /* * (3rd classes) */ duelist(Human, Fighter, Fourth), dreadnought(Human, Fighter, Fourth), phoenixKnight(Human, Fighter, Fourth), hellKnight(Human, Fighter, Fourth), sagittarius(Human, Fighter, Fourth), adventurer(Human, Fighter, Fourth), archmage(Human, Mystic, Fourth), soultaker(Human, Mystic, Fourth), arcanaLord(Human, Mystic, Fourth), cardinal(Human, Priest, Fourth), hierophant(Human, Priest, Fourth), evaTemplar(Elf, Fighter, Fourth), swordMuse(Elf, Fighter, Fourth), windRider(Elf, Fighter, Fourth), moonlightSentinel(Elf, Fighter, Fourth), mysticMuse(Elf, Mystic, Fourth), elementalMaster(Elf, Mystic, Fourth), evaSaint(Elf, Priest, Fourth), shillienTemplar(DarkElf, Fighter, Fourth), spectralDancer(DarkElf, Fighter, Fourth), ghostHunter(DarkElf, Fighter, Fourth), ghostSentinel(DarkElf, Fighter, Fourth), stormScreamer(DarkElf, Mystic, Fourth), spectralMaster(DarkElf, Mystic, Fourth), shillienSaint(DarkElf, Priest, Fourth), titan(Orc, Fighter, Fourth), grandKhavatari(Orc, Fighter, Fourth), dominator(Orc, Mystic, Fourth), doomcryer(Orc, Mystic, Fourth), fortuneSeeker(Dwarf, Fighter, Fourth), maestro(Dwarf, Fighter, Fourth), dummyEntry31(null, null, null), dummyEntry32(null, null, null), dummyEntry33(null, null, null), dummyEntry34(null, null, null), maleSoldier(Kamael, Fighter, First), femaleSoldier(Kamael, Fighter, First), trooper(Kamael, Fighter, Second), warder(Kamael, Fighter, Second), berserker(Kamael, Fighter, Third), maleSoulbreaker(Kamael, Fighter, Third), femaleSoulbreaker(Kamael, Fighter, Third), arbalester(Kamael, Fighter, Third), doombringer(Kamael, Fighter, Fourth), maleSoulhound(Kamael, Fighter, Fourth), femaleSoulhound(Kamael, Fighter, Fourth), trickster(Kamael, Fighter, Fourth), inspector(Kamael, Fighter, Third), judicator(Kamael, Fighter, Fourth); private Race _race; private ClassLevel _level; private ClassType _type; private static final Set mainSubclassSet; private static final Set neverSubclassed = EnumSet.of(Overlord, Warsmith); private static final Set subclasseSet1 = EnumSet.of(DarkAvenger, Paladin, TempleKnight, ShillienKnight); private static final Set subclasseSet2 = EnumSet.of(TreasureHunter, AbyssWalker, Plainswalker); private static final Set subclasseSet3 = EnumSet.of(Hawkeye, SilverRanger, PhantomRanger); private static final Set subclasseSet4 = EnumSet.of(Warlock, ElementalSummoner, PhantomSummoner); private static final Set subclasseSet5 = EnumSet.of(Sorceror, Spellsinger, Spellhowler); private static final EnumMap> subclassSetMap = new EnumMap<>(PlayerClass.class); static { Set subclasses = getSet(null, Third); subclasses.removeAll(neverSubclassed); mainSubclassSet = subclasses; subclassSetMap.put(DarkAvenger, subclasseSet1); subclassSetMap.put(Paladin, subclasseSet1); subclassSetMap.put(TempleKnight, subclasseSet1); subclassSetMap.put(ShillienKnight, subclasseSet1); subclassSetMap.put(TreasureHunter, subclasseSet2); subclassSetMap.put(AbyssWalker, subclasseSet2); subclassSetMap.put(Plainswalker, subclasseSet2); subclassSetMap.put(Hawkeye, subclasseSet3); subclassSetMap.put(SilverRanger, subclasseSet3); subclassSetMap.put(PhantomRanger, subclasseSet3); subclassSetMap.put(Warlock, subclasseSet4); subclassSetMap.put(ElementalSummoner, subclasseSet4); subclassSetMap.put(PhantomSummoner, subclasseSet4); subclassSetMap.put(Sorceror, subclasseSet5); subclassSetMap.put(Spellsinger, subclasseSet5); subclassSetMap.put(Spellhowler, subclasseSet5); } PlayerClass(Race pRace, ClassType pType, ClassLevel pLevel) { _race = pRace; _level = pLevel; _type = pType; } public final Set getAvailableSubclasses(L2PcInstance player) { Set subclasses = null; if (_level == Third) { if (player.getRace() != Kamael) { subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(this); switch (player.getRace()) { case Elf: subclasses.removeAll(getSet(DarkElf, Third)); break; case DarkElf: subclasses.removeAll(getSet(Elf, Third)); break; } subclasses.removeAll(getSet(Kamael, Third)); Set unavailableClasses = subclassSetMap.get(this); if (unavailableClasses != null) { subclasses.removeAll(unavailableClasses); } } else { subclasses = getSet(Kamael, Third); subclasses.remove(this); // Check sex, male subclasses female and vice versa // If server owner set MaxSubclass > 3 some kamael's cannot take 4 sub // So, in that situation we must skip sex check if (Config.MAX_SUBCLASS <= 3) { if (player.getAppearance().getSex()) { subclasses.removeAll(EnumSet.of(femaleSoulbreaker)); } else { subclasses.removeAll(EnumSet.of(maleSoulbreaker)); } } if (!player.getSubClasses().containsKey(2) || (player.getSubClasses().get(2).getLevel() < 75)) { subclasses.removeAll(EnumSet.of(inspector)); } } } return subclasses; } public static final EnumSet getSet(Race race, ClassLevel level) { EnumSet allOf = EnumSet.noneOf(PlayerClass.class); for (PlayerClass playerClass : EnumSet.allOf(PlayerClass.class)) { if ((race == null) || playerClass.isOfRace(race)) { if ((level == null) || playerClass.isOfLevel(level)) { allOf.add(playerClass); } } } return allOf; } public final boolean isOfRace(Race pRace) { return _race == pRace; } public final boolean isOfType(ClassType pType) { return _type == pType; } public final boolean isOfLevel(ClassLevel pLevel) { return _level == pLevel; } public final ClassLevel getLevel() { return _level; } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
XaTTa6bI4 7 Опубликовано 2 июля, 2014 /** * Character Sub-Class Definition <BR> * Used to store key information about a character's sub-class. * @author Tempy */ public final class SubClass { private static final byte _maxLevel = Config.MAX_SUBCLASS_LEVEL < ExperienceTable.getInstance().getMaxLevel() ? Config.MAX_SUBCLASS_LEVEL : (byte) (ExperienceTable.getInstance().getMaxLevel() - 1); private PlayerClass _class; private long _exp = ExperienceTable.getInstance().getExpForLevel(Config.BASE_SUBCLASS_LEVEL); private int _sp = 0; private byte _level = Config.BASE_SUBCLASS_LEVEL; private int _classIndex = 1; public SubClass(int classId, long exp, int sp, byte level, int classIndex) { _class = PlayerClass.values()[classId]; _exp = exp; _sp = sp; _level = level; _classIndex = classIndex; } public SubClass(int classId, int classIndex) { // Used for defining a sub class using default values for XP, SP and player level. _class = PlayerClass.values()[classId]; _classIndex = classIndex; } public SubClass() { // Used for specifying ALL attributes of a sub class directly, // using the preset default values. } public PlayerClass getClassDefinition() { return _class; } public int getClassId() { return _class.ordinal(); } public long getExp() { return _exp; } public int getSp() { return _sp; } public byte getLevel() { return _level; } /** * First Sub-Class is index 1. * @return int _classIndex */ public int getClassIndex() { return _classIndex; } public void setClassId(int classId) { _class = PlayerClass.values()[classId]; } public void setExp(long expValue) { if (expValue > (ExperienceTable.getInstance().getExpForLevel(_maxLevel + 1) - 1)) { expValue = ExperienceTable.getInstance().getExpForLevel(_maxLevel + 1) - 1; } _exp = expValue; } public void setSp(int spValue) { _sp = spValue; } public void setClassIndex(int classIndex) { _classIndex = classIndex; } public void setLevel(byte levelValue) { if (levelValue > _maxLevel) { levelValue = _maxLevel; } else if (levelValue < Config.BASE_SUBCLASS_LEVEL) { levelValue = Config.BASE_SUBCLASS_LEVEL; } _level = levelValue; } public void incLevel() { if (getLevel() == _maxLevel) { return; } _level++; setExp(ExperienceTable.getInstance().getExpForLevel(getLevel())); } public void decLevel() { if (getLevel() == Config.BASE_SUBCLASS_LEVEL) { return; } _level--; setExp(ExperienceTable.getInstance().getExpForLevel(getLevel())); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LifeGame32 312 Опубликовано 2 июля, 2014 Ход ваших мыслей не совсем ясен. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 2 июля, 2014 Согласен, тоже ничего не понял. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
XaTTa6bI4 7 Опубликовано 2 июля, 2014 суть моих мисель обьясню на примери паладин он не моет брать саб танков овера крафтера и камов суть вопроса как снять ети огранечения и если моно что ю табличка бистрава запуска не минялася Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 3 июля, 2014 Если я тебя правильно понял, то тебе нужно все сабы в 1 NPC без ограничений. Вот патч. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты