проверка на мейн класс

deadly4283

Свой человек
Пользователь
Сообщения
17
Розыгрыши
0
Репутация
0
Реакции
1
Баллы
525
Хроники
  1. Chaotic Throne: High Five
Сборка
fandc
Добрый день форумчане! Есть проблемка в сборке fandc. В КБ есть возможность брать саб класс, если ты эльф то страница сабклассов на темного эльфа пустая, однако через адреналин можно напрямую кинуть байпасс с ID класса, хоть хуман файтера, хоть камаеля, хоть любую третью профу. ДА может брать саб на Паладина, БД на СвСа и т.д.

Вот часть кода где вызывается байпасс для добавления нового саба. Может у кого есть идеи? Спасибо!
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);
}

При стандартном взятии суб класса в 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;
}

Как что-то подобное добавить для КБ и в каком это месте лежит чет не могу сообразить.
 
Купить защиту, сменить сборку.
 
Купить защиту, сменить сборку.
Чтож так кардинально :) Защита, по крайней мере смартгвардовская, никак на это не реагирует. Наверняка же есть способы просто добавить проверку. А сборка довольно неплохая, не знаю почему вы так)
 
Нужно добавить проверки в самом скрипте взятия сабов через alt+B.
Вероятно, что создатели того скрипта, о том просто не задумывались. Что будет если напрямую указывать ID.
А просто решили сделать "стрингом"....

Делов минут на 10 в самом деле то.

Сделай отдельные обозначения в самом скрипте каждому виду классов (их там не так много будет, возьми стандартную мап-часть из обычного скрипта по сабам, там обозначаются классы под каждый вариант саба - находится там же в PlayerClass.java только повыше того что ты скинул.)
Обозначения будут нечто типо: knight, mage, heler и т.д.

Затем в сам скрипт впиши на каждый под-вид проверки и сделай указание для каждого.

Например, если основа относится к списку knight`а, то тут можно или сделать, чтобы он не брал такие же или тупо вручную указать какие именно ID проф данной мапе запрещено брать.

Типо, если основа относится к knight и мы пробуем брать knight, то return; - можно даже перед ретурном отправить сообщение этому человеку аля: - "Вот тебе подарочек педик". И к примеру следом удалять чара кто попытался это сделать.

ну и так по аналогии со всеми классами и т.д. Просто постарайся не забыть указать в проверку какую-либо профу.

Тогда все будет нормально :)

Ну и еще там же сделай еще проверку, лучше в самом начале, что можно брать классы исключительно вторые.
(Это закроет проблему если кто-то укажет нулевые профы или третьи.)

Как это сделать? Если не можешь сделать через стандартные запросы, сделай перечислением.
Обычный инт, в который пишешь через запятую все реальные ID проф которые можно взять.

Ну, а следом уже идут проверки местечковые, которые будут смотреть на расу, или принадлежность к мапам.
 
Назад
Сверху Снизу