Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
flopix Написал:И как успехи?
В среднем емуле L2 на java наверно не один миллион строк кода.
Это тысячи часов человекочасов не считая отладки и продумывания архитектуры приложения. милион таких строк
Код: if(_face > 2 || _face < 0)
{
_log.log(Level.WARN, "Character Creation Failure: Character face " + _face + " is invalid. Possible client hack. " + getClient());
sendPacket(new CharacterCreateFail(CharacterCreateFail.CharacterCreateFailReason.REASON_CREATION_FAILED));
return;
}
if(_hairStyle < 0 || _sex == 0 && _hairStyle > 4 || _sex != 0 && _hairStyle > 6)
{
_log.log(Level.WARN, "Character Creation Failure: Character hair style " + _hairStyle + " is invalid. Possible client hack. " + getClient());
sendPacket(new CharacterCreateFail(CharacterCreateFail.CharacterCreateFailReason.REASON_CREATION_FAILED));
return;
}
if(_hairColor > 3 || _hairColor < 0)
{
_log.log(Level.WARN, "Character Creation Failure: Character hair color " + _hairColor + " is invalid. Possible client hack. " + getClient());
sendPacket(new CharacterCreateFail(CharacterCreateFail.CharacterCreateFailReason.REASON_CREATION_FAILED));
return;
}
Можно превратить в 100к таких.
Код: public static bool CheckAppearence(int face, int hairStyle, int hairColor, int sex)
{
return face <= 2 && face >= 0 && hairStyle >= 0 && (sex != 0 || hairStyle <= 4) && (sex == 0 || hairStyle <= 6) && hairColor <= 3 && hairColor >= 0;
}
Ибо если уж хакают клиент то никакой полезной информации от того что вы выведите в лог
_hairStyle который кто то отправил через пакетхак нет.
Сообщений: 561
Тем: 44
Зарегистрирован: Sep 2011
Репутация:
412
Я такие строки не считаю. Это вы какой то кусок "говна" привели в пример .
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
откуда я знаю что вы имеете ввиду)) во всех исходах l2 эмуляторов присутствуют подобные куски "Говна" и их просто колоссальное кол-во.
Сообщений: 287
Тем: 24
Зарегистрирован: Feb 2010
Репутация:
919
Alay Написал:во всех Откуда столько максимализма?
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
ОФФТОП
мне 22 - максимализм в самом рассвете.
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
ОФФТОП с кодом
Мне вот интерестно. Как думаете? данный код считается говнокодом?)
если учесть что все параметры верны и брались с учетом
аксиомы
Люди мужики (race = 0, sex = 0)
{Class = 0 и 10, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Люди бабы (race = 0, sex = 1)
{Class = 0 и 10, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Эльфы мужики (race = 1, sex = 0)
{Class = 18 и 25, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Эльфы бабы (race = 1, sex = 1)
{Class = 18 и 25, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Темные эльфы мужики (race = 2, sex = 0)
{Class = 31 и 38, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Темные эльфы бабы (race = 2, sex = 1)
{Class = 31 и 38, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Орки мужики (race = 3, sex = 0)
{Class = 44 и 49, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Орки бабы (race = 3, sex = 1)
{Class = 44 и 49, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Гномы мужики(race = 4, sex = 0)
{Class = 53, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Гномы бабы (race = 4, sex = 1)
{Class = 53, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Камаэли мужики(race = 5, sex = 0)
{Class = 123, face = 0-2, hairStyle = 0-4, hairColor = 0-2}
Камаэли бабы(race = 5, sex = 1)
{Class = 124, face = 0-2, hairStyle = 0-6, hairColor = 0-2}
Артейки(race = 6, sex = 1)
{Class = 182, face = 0-2, hairStyle = 0-6, hairColor = 0-2}
Артейки(race = 6, sex = 1)
{Class = 183, face = 0-2, hairStyle = 0-6, hairColor = 0-2}
Код: public static bool CheckAppearence(BaseRace baseRace, BaseSex baseSex, int baseClassId, int face, int hairStyle, int hairColor)
{
if (face < 0 || face > 2)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseRace)
{
case BaseRace.Human:
if (baseClassId != 0 && baseClassId != 10)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Elf:
if (baseClassId != 18 && baseClassId != 25)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.DarkElf:
if (baseClassId != 31 && baseClassId != 38)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Ork:
if (baseClassId != 44 && baseClassId != 49)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Dwarf:
if (baseClassId != 53)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Kamael:
if (hairColor < 0 || hairColor > 2)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (baseClassId != 123)
return false;
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (baseClassId != 124)
return false;
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Ethria:
if (baseSex == BaseSex.Male)
return false;
if (baseClassId != 182 && baseClassId != 183)
return false;
if (hairStyle < 0 || hairStyle > 6)
return false;
// ReSharper disable once ConvertIfStatementToReturnStatement
if (hairColor < 0 || hairColor > 2)
return false;
return true;
}
return false;
}
А ведь на сколько мне известно на данный момент ни в одной сборке нет подобного обработчика и можно (пакетами) создать артейку или камаэля с 3м цветом волос которой нет в клиенте и бегать инвизом:redlol:
Код написан на шарпе но без проблем встанет на java. Кто хочет - забирайте.
Код: public enum BaseRace
{
Human = 0,
Elf = 1,
DarkElf = 2,
Ork = 3,
Dwarf = 4,
Kamael = 5,
Ethria = 6
}
public enum BaseSex
{
Male = 0,
Female = 1
}
Сообщений: 136
Тем: 28
Зарегистрирован: Dec 2012
Репутация:
42
спасибо, было интересно Вас почитать.
Сообщений: 666
Тем: 15
Зарегистрирован: Aug 2014
Репутация:
1,790
Alay Написал:
ОФФТОП с кодом
Мне вот интерестно. Как думаете? данный код считается говнокодом?)
если учесть что все параметры верны и брались с учетом
аксиомы
Люди мужики (race = 0, sex = 0)
{Class = 0 и 10, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Люди бабы (race = 0, sex = 1)
{Class = 0 и 10, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Эльфы мужики (race = 1, sex = 0)
{Class = 18 и 25, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Эльфы бабы (race = 1, sex = 1)
{Class = 18 и 25, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Темные эльфы мужики (race = 2, sex = 0)
{Class = 31 и 38, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Темные эльфы бабы (race = 2, sex = 1)
{Class = 31 и 38, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Орки мужики (race = 3, sex = 0)
{Class = 44 и 49, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Орки бабы (race = 3, sex = 1)
{Class = 44 и 49, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Гномы мужики(race = 4, sex = 0)
{Class = 53, face = 0-2, hairStyle = 0-4, hairColor = 0-3}
Гномы бабы (race = 4, sex = 1)
{Class = 53, face = 0-2, hairStyle = 0-6, hairColor = 0-3}
Камаэли мужики(race = 5, sex = 0)
{Class = 123, face = 0-2, hairStyle = 0-4, hairColor = 0-2}
Камаэли бабы(race = 5, sex = 1)
{Class = 124, face = 0-2, hairStyle = 0-6, hairColor = 0-2}
Артейки(race = 6, sex = 1)
{Class = 182, face = 0-2, hairStyle = 0-6, hairColor = 0-2}
Артейки(race = 6, sex = 1)
{Class = 183, face = 0-2, hairStyle = 0-6, hairColor = 0-2}
Код: public static bool CheckAppearence(BaseRace baseRace, BaseSex baseSex, int baseClassId, int face, int hairStyle, int hairColor)
{
if (face < 0 || face > 2)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseRace)
{
case BaseRace.Human:
if (baseClassId != 0 && baseClassId != 10)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Elf:
if (baseClassId != 18 && baseClassId != 25)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.DarkElf:
if (baseClassId != 31 && baseClassId != 38)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Ork:
if (baseClassId != 44 && baseClassId != 49)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Dwarf:
if (baseClassId != 53)
return false;
if (hairColor < 0 || hairColor > 3)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Kamael:
if (hairColor < 0 || hairColor > 2)
return false;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (baseSex)
{
case BaseSex.Male:
if (baseClassId != 123)
return false;
if (hairStyle < 0 || hairStyle > 4)
return false;
break;
case BaseSex.Female:
if (baseClassId != 124)
return false;
if (hairStyle < 0 || hairStyle > 6)
return false;
break;
}
return true;
case BaseRace.Ethria:
if (baseSex == BaseSex.Male)
return false;
if (baseClassId != 182 && baseClassId != 183)
return false;
if (hairStyle < 0 || hairStyle > 6)
return false;
// ReSharper disable once ConvertIfStatementToReturnStatement
if (hairColor < 0 || hairColor > 2)
return false;
return true;
}
return false;
}
А ведь на сколько мне известно на данный момент ни в одной сборке нет подобного обработчика и можно (пакетами) создать артейку или камаэля с 3м цветом волос которой нет в клиенте и бегать инвизом:redlol:
Код написан на шарпе но без проблем встанет на java. Кто хочет - забирайте.
Код: public enum BaseRace
{
Human = 0,
Elf = 1,
DarkElf = 2,
Ork = 3,
Dwarf = 4,
Kamael = 5,
Ethria = 6
}
public enum BaseSex
{
Male = 0,
Female = 1
}
это и есть говнокод
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
Influence Написал:это и есть говнокод Как же в таком случае написать проверки без такого "говнокода" и существенной потери производительности. Без сарказма если есть вариант лучше с удовольствием посмотрю
|