- Хроники
- Chaotic Throne: High Five
- Сборка
- fandc
Добрый день форумчане! Есть проблемка в сборке fandc. В КБ есть возможность брать саб класс, если ты эльф то страница сабклассов на темного эльфа пустая, однако через адреналин можно напрямую кинуть байпасс с ID класса, хоть хуман файтера, хоть камаеля, хоть любую третью профу. ДА может брать саб на Паладина, БД на СвСа и т.д.
Вот часть кода где вызывается байпасс для добавления нового саба. Может у кого есть идеи? Спасибо!
При стандартном взятии суб класса в PlayerClass.java есть вот такой код, для проверки совместимости классов:
Как что-то подобное добавить для КБ и в каком это месте лежит чет не могу сообразить.
Вот часть кода где вызывается байпасс для добавления нового саба. Может у кого есть идеи? Спасибо!
private static void addNewSubPage(Player player, String raceName)
{
Race race = Race.valueOf(raceName);
Set<PlayerClass> allSubs = VillageMasterInstance.getAllAvailableSubs(player, true);
allSubs = getSubsByRace(allSubs, race);
PlayerClass[] arraySubs = new PlayerClass[allSubs.size()];
arraySubs = allSubs.toArray(arraySubs);
String[] replacements = new String[FIELDS_IN_SUB_SELECT_PAGE * 2];
for(int i = 0; i < FIELDS_IN_SUB_SELECT_PAGE; i++)
{
replacements[i * 2] = "%sub" + i + '%';
if(arraySubs.length <= i)
replacements[i * 2 + 1] = "<br>";
else
{
PlayerClass playerClass = arraySubs;
replacements[i * 2 + 1] = "<button value=\"Add " + playerClass.name() + "\" action=\"bypass _bbsAddNewSub_" + playerClass.ordinal() + "\" width=200 height=30 back=\"L2UI_CT1.OlympiadWnd_DF_Fight1None_Down\" fore=\"L2UI_ct1.OlympiadWnd_DF_Fight1None\">";
}
}
sendFileToPlayer(player, "smallNpcs/subclassChanger_select.htm", true, replacements);
}
{
Race race = Race.valueOf(raceName);
Set<PlayerClass> allSubs = VillageMasterInstance.getAllAvailableSubs(player, true);
allSubs = getSubsByRace(allSubs, race);
PlayerClass[] arraySubs = new PlayerClass[allSubs.size()];
arraySubs = allSubs.toArray(arraySubs);
String[] replacements = new String[FIELDS_IN_SUB_SELECT_PAGE * 2];
for(int i = 0; i < FIELDS_IN_SUB_SELECT_PAGE; i++)
{
replacements[i * 2] = "%sub" + i + '%';
if(arraySubs.length <= i)
replacements[i * 2 + 1] = "<br>";
else
{
PlayerClass playerClass = arraySubs;
replacements[i * 2 + 1] = "<button value=\"Add " + playerClass.name() + "\" action=\"bypass _bbsAddNewSub_" + playerClass.ordinal() + "\" width=200 height=30 back=\"L2UI_CT1.OlympiadWnd_DF_Fight1None_Down\" fore=\"L2UI_ct1.OlympiadWnd_DF_Fight1None\">";
}
}
sendFileToPlayer(player, "smallNpcs/subclassChanger_select.htm", true, replacements);
}
При стандартном взятии суб класса в PlayerClass.java есть вот такой код, для проверки совместимости классов:
public static boolean areClassesComportable(PlayerClass c1, PlayerClass c2)
{
if (c1.isOfRace(Race.kamael) != c2.isOfRace(Race.kamael))
return false; // камаэли только с камаэлями
if (c1.isOfRace(Race.elf) && c2.isOfRace(Race.darkelf) || c1.isOfRace(Race.darkelf) && c2.isOfRace(Race.elf))
return false; // эльфы несовместимы с темными
if (c1 == PlayerClass.Overlord || c1 == PlayerClass.Warsmith || c2 == PlayerClass.Overlord || c2 == PlayerClass.Warsmith)
return false; // эти вообще
if (subclassSetMap.get(c1) == subclassSetMap.get(c2))
return false; // однотипные
return true;
}
{
if (c1.isOfRace(Race.kamael) != c2.isOfRace(Race.kamael))
return false; // камаэли только с камаэлями
if (c1.isOfRace(Race.elf) && c2.isOfRace(Race.darkelf) || c1.isOfRace(Race.darkelf) && c2.isOfRace(Race.elf))
return false; // эльфы несовместимы с темными
if (c1 == PlayerClass.Overlord || c1 == PlayerClass.Warsmith || c2 == PlayerClass.Overlord || c2 == PlayerClass.Warsmith)
return false; // эти вообще
if (subclassSetMap.get(c1) == subclassSetMap.get(c2))
return false; // однотипные
return true;
}
Как что-то подобное добавить для КБ и в каком это месте лежит чет не могу сообразить.