Нужна пакетка

  • Автор темы Автор темы Gremory
  • Дата начала Дата начала

Gremory

Заблокирован
Заблокирован
Сообщения
187
Розыгрыши
0
Репутация
-129
Реакции
267
Баллы
0
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Привет всем собственно всем известно что вышло уж давно вышло обновления Infinite Odyssey

так вот к чему я веду может кто то поделится пакеткой да бы апнуть лыжу Ertheia до Infinite Odyssey?
 

Вот все взяли и поделились,что бы ты опять новую тиму открыл и продавал:dance4:
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Коечто то я нашол
Код:
 writeC(0x32);
    writeD(_activeChar.getObjectId());
    writeD(_initSize);
    writeH(23);
    writeC(_masks);
    writeC(_masks);
    writeC(_masks);
    writeD(_relation);
    writeH(16 + (_activeChar.getName().length() * 2));
    writeH(??);
    writeS(_activeChar.getName());
    writeC(_activeChar.isGM() ? 0x01 : 0x00);
    writeC(_activeChar.getRace().ordinal());
    writeC(_activeChar.getAppearance().getSex() ? 0x01 : 0x00);
    writeH(_activeChar.getBaseClass());
    writeD(_activeChar.getClassId().getId());
    writeC(_activeChar.getLevel());
    writeH(18);
    writeH(_activeChar.getSTR());
    writeH(_activeChar.getDEX());
    writeH(_activeChar.getCON());
    writeH(_activeChar.getINT());
    writeH(_activeChar.getWIT());
    writeH(_activeChar.getMEN());
    writeH(_activeChar.getLUC());
    writeH(_activeChar.getCHA());
    writeH(14);
    writeD(_activeChar.getMaxHp());
    writeD(_activeChar.getMaxMp());
    writeD(_activeChar.getMaxCp());
    writeH(38);
    writeD((int) Math.round(_activeChar.getCurrentHp()));
    writeD((int) Math.round(_activeChar.getCurrentMp()));
    writeD((int) Math.round(_activeChar.getCurrentCp()));
    writeQ(_activeChar.getSp());
    writeQ(_activeChar.getExp());
    writeF((float) (_activeChar.getExp() - ExperienceData.getInstance().getExpForLevel(_activeChar.getLevel())) / (ExperienceData.getInstance().getExpForLevel(_activeChar.getLevel() + 1) - ExperienceData.getInstance().getExpForLevel(_activeChar.getLevel())));
    writeH(4);
    writeC(_enchantLevel);
    writeC(_armorEnchant);
    writeH(15);
    writeD(_activeChar.getVisualHair());
    writeD(_activeChar.getVisualHairColor());
    writeD(_activeChar.getVisualFace());
    writeC(_activeChar.isHairAccessoryEnabled() ? 0x01 : 0x00);
    writeH(6);
    writeC(_activeChar.getMountType().ordinal());
    writeC(_activeChar.getPrivateStoreType().getId());
    writeC(_activeChar.hasDwarvenCraft() ? 1 : 0);
    writeC(_activeChar.getAbilityPointsUsed());
    writeH(56);
    writeH(_activeChar.getActiveWeaponItem() != null ? 40 : 20);
    writeD(_activeChar.getPAtk(null));
    writeD(_activeChar.getPAtkSpd());
    writeD(_activeChar.getPDef(null));
    writeD(_activeChar.getEvasionRate(null));
    writeD(_activeChar.getAccuracy());
    writeD(_activeChar.getCriticalHit(null, null));
    writeD(_activeChar.getMAtk(null, null));
    writeD(_activeChar.getMAtkSpd());
    writeD(_activeChar.getPAtkSpd()); // Seems like atk speed - 1
    writeD(_activeChar.getMagicEvasionRate(null));
    writeD(_activeChar.getMDef(null, null));
    writeD(_activeChar.getMagicAccuracy());
    writeD(_activeChar.getMCriticalHit(null, null));
    writeH(14);
    writeH(_activeChar.getDefenseElementValue(Elementals.FIRE));
    writeH(_activeChar.getDefenseElementValue(Elementals.WATER));
    writeH(_activeChar.getDefenseElementValue(Elementals.WIND));
    writeH(_activeChar.getDefenseElementValue(Elementals.EARTH));
    writeH(_activeChar.getDefenseElementValue(Elementals.HOLY));
    writeH(_activeChar.getDefenseElementValue(Elementals.DARK));
    writeH(18);
    writeD(_activeChar.getX());
    writeD(_activeChar.getY());
    writeD(_activeChar.getZ());
    writeD(_activeChar.isInVehicle() ? _activeChar.getVehicle().getObjectId() : 0);
    writeH(18);
    writeH(_runSpd);
    writeH(_walkSpd);
    writeH(_swimRunSpd);
    writeH(_swimWalkSpd);
    writeH(_flRunSpd);
    writeH(_flWalkSpd);
    writeH(_flyRunSpd);
    writeH(_flyWalkSpd);
    writeH(18);
    writeF(_moveMultiplier);
    writeF(_activeChar.getAttackSpeedMultiplier());
    writeH(18);
    writeF(_activeChar.getCollisionRadius());
    writeF(_activeChar.getCollisionHeight());
    writeH(5);
    writeC(attackAttribute);
    writeH(_activeChar.getAttackElementValue(attackAttribute));
    writeH(32 + (_title.length() * 2));
    writeS(_title);
    writeH(_activeChar.getPledgeType());
    writeD(_activeChar.getClanId());
    writeD(_activeChar.getClanCrestLargeId());
    writeD(_activeChar.getClanCrestId());
    writeC(_activeChar.isClanLeader() ? -1 : 0x00);
    writeD(_activeChar.getClanPrivileges().getBitmask());
    writeD(_activeChar.getAllyId());
    writeD(_activeChar.getAllyCrestId());
    writeC(_activeChar.isInPartyMatchRoom() ? 0x01 : 0x00);
    writeH(22);
    writeC(_activeChar.getPvpFlag());
    writeD(_activeChar.getReputation());
    writeC(_activeChar.isNoble() ? 0x01 : 0x00);
    writeC(_activeChar.isHero() ? 0x01 : 0x00);
    writeC(_activeChar.getPledgeClass());
    writeD(_activeChar.getPkKills());
    writeD(_activeChar.getPvpKills());
    writeD(_activeChar.getRecomLeft());
    writeH(15);
    writeD(_activeChar.getVitalityPoints());
    writeC(0x00); // Vita Bonus
    writeD(_activeChar.getFame());
    writeD(RaidBossPointsManager.getInstance().getPointsByOwnerId(_activeChar.getObjectId()));
    writeH(9);
    writeC(_activeChar.getInventory().getTalismanSlots()); // Confirmed
    writeC(_activeChar.getInventory().getBroochJewelSlots()); // Confirmed
    writeC(_activeChar.getTeam().getId()); // Confirmed
    writeC(0x00); // (1 = Red, 2 = White, 3 = White Pink) dotted ring on the floor
    writeC(0x00);
    writeC(0x00);
    writeC(0x00);
    writeH(4);
    writeC(_activeChar.isInsideZone(ZoneId.WATER) ? 1 : _activeChar.isFlyingMounted() ? 2 : 0);
    writeC(_activeChar.isRunning() ? 0x01 : 0x00);
    writeH(10);
    writeD(_activeChar.getAppearance().getNameColor());
    writeD(_activeChar.getAppearance().getTitleColor());
    writeH(9);
    writeH(0x00);
    writeH(0x00);
    writeH(_activeChar.getInventoryLimit());
    writeC(0x00); // if greater than 1 show the attack cursor when interacting
    writeH(9);
    writeC(0x00);
    writeH(0x00);
    writeD(0x00);
Вот структура, взятая опираясь на снифф с евро
writeC(0x09);
int _size = _characterPackages.size();
writeD(_size);
writeD(Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT);
writeC(_size == Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT ? 0x01 : 0x00);
writeC(0x02);
writeD(0x00);
writeC(0x00);
for (int i = 0; i < _size; i++)
{
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getObjectId());
writeS(_loginName);
writeD(_sessionId);
writeD(0x00);
writeD(0x00);
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
writeD(charInfoPackage.getClassId());
writeD(0x11); //??
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeQ(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
writeF((float) (charInfoPackage.getExp() - ExperienceData.getInstance().getExpForLevel(charInfoPackage.getLevel())) / (ExperienceData.getInstance().getExpForLevel(charInfoPackage.getLevel() + 1) - ExperienceData.getInstance().getExpForLevel(charInfoPackage.getLevel()))); // High Five
writeD(charInfoPackage.getLevel());
writeD(charInfoPackage.getKarma() > 0 ? charInfoPackage.getKarma() * -1 : charInfoPackage.getReputation());
writeD(charInfoPackage.getPkKills());
writeD(charInfoPackage.getPvPKills());
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp());
writeF(charInfoPackage.getMaxMp());
writeD(charInfoPackage.getDeleteTimer() > 0 ? (int) ((charInfoPackage.getDeleteTimer() - System.currentTimeMillis()) / 1000) : 0);
writeD(charInfoPackage.getClassId());
writeD(i == _activeId ? 1 : 0);
writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect());
writeD(charInfoPackage.getAugmentationId());
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeF(0x00);
writeF(0x00);
writeD(charInfoPackage.getVitalityPoints());
writeD(200); //??? - vitality what
writeD(_vitalityItems);
writeD(1); //?? - maybe access type
writeC(0x00); //???
writeC(Hero.getInstance().isHero(charInfoPackage.getObjectId()) ? 0x01 : 0x00);
writeC(charInfoPackage.isHairAccessoryEnabled() ? 0x01 : 0x00);
}
09 01 00 00 00 07 00 00 00 00 02 00 00 00 00 00 47 00 68 00 30 00 75 00 4C 00 00 00 20 C7 0D 00 5F 00 33 00 35 00 30 00 32 00 39 00 32 00 32 00 00 00 4A 73 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 38 42 02 00 0F 28 FF FF 58 F5 FF FF 43 65 F7 13 FB 04 B8 40 E5 A7 6B 3E 4A 41 A0 40 C6 92 00 00 00 00 00 00 BD DA DC 10 00 00 00 00 88 B6 EA FA 1D 52 D6 3F 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 76 3A 00 00 76 3A 00 00 77 3A 00 00 78 3A 00 00 78 3A 00 00 83 3A 00 00 C0 3A 00 00 FD 7D 00 00 96 3A 00 00 94 3A 00 00 95 3A 00 00 97 3A 00 00 00 00 00 00 C0 3A 00 00 C7 87 00 00 00 00 00 00 00 00 00 00 B1 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 46 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 43 65 F7 13 FB 04 B8 40 E5 A7 6B 3E 4A 41 A0 40 00 00 00 00 09 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C8 00 00 00 E7 03 00 00 01 00 00 00 00 00 00
Код:
writeC(0x31);
        writeD(_x);
        writeD(_y);
        writeD(_z);
        writeD(_vehicleId);
        writeD(_objId);
        writeS(_activeChar.getAppearance().getVisibleName());
        writeH(_activeChar.getRace().ordinal());
        writeC(_activeChar.getAppearance().getSex() ? 0x01 : 0x00);
        writeD(_activeChar.getBaseClass());
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
        writeD(_activeChar.getInventory().getPaperdollAugmentationId(slot));
        writeD(_activeChar.getInventory().getPaperdollAugmentationId(slot));
        writeD(_activeChar.getInventory().getPaperdollAugmentationId(slot));
        writeD(0x00);
        writeD(0x00);
        writeD(0x00);
        writeC(_armorEnchant);
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
        writeC(_activeChar.getPvpFlag());
        writeD(_activeChar.getKarma());
        writeD(_mAtkSpd);
        writeD(_pAtkSpd);
        writeH(_runSpd);
        writeH(_walkSpd);
        writeH(_swimRunSpd);
        writeH(_swimWalkSpd);
        writeH(_flyRunSpd);
        writeH(_flyWalkSpd);
        writeH(_flyRunSpd);
        writeH(_flyWalkSpd);
        writeF(_moveMultiplier);
        writeF(_attackSpeedMultiplier);
        writeF(_activeChar.getCollisionRadius());
        writeF(_activeChar.getCollisionHeight());
        writeD(_activeChar.getVisualHair());
        writeD(_activeChar.getVisualHairColor());
        writeD(_activeChar.getVisualFace());
        writeS(gmSeeInvis ? "[Invisible]" : _activeChar.getAppearance().getVisibleTitle());
        writeD(_activeChar.getClanId());
        writeD(_activeChar.getClanCrestId());
        writeD(_activeChar.getAllyId());
        writeD(_activeChar.getAllyCrestId());
        writeC(_activeChar.isSitting() ? 0x00 : 0x01);
        writeC(_activeChar.isRunning() ? 0x01 : 0x00);
        writeC(_activeChar.isInCombat() ? 0x01 : 0x00);
        writeC(!_activeChar.isInOlympiadMode() && _activeChar.isAlikeDead() ? 0x01 : 0x00);
        writeC(!gmSeeInvis && isInvisible() ? 0x01 : 0x00);
        writeC(_activeChar.getMountType().ordinal());
        writeC(_activeChar.getPrivateStoreType().getId());
        short cubicSize = _activeChar.getCubics().size();
        writeH(cubicSize);
        for (short i=0;i<cubicSize;i++)
        {
            writeH(_cubicId);
        }
        writeC(_activeChar.isInPartyMatchRoom() ? 0x01 : 0x00);
        writeC(_activeChar.isInsideZone(ZoneId.WATER) ? 1 : _activeChar.isFlyingMounted() ? 2 : 0);
        writeH(_activeChar.getRecomHave());
        writeD(_activeChar.getMountNpcId() == 0 ? 0 : _activeChar.getMountNpcId() + 1000000);
        writeD(_activeChar.getClassId().getId());
        writeD(0x00);
        writeC(_activeChar.isMounted() ? 0 : _enchantLevel);
        writeC(_activeChar.getTeam().getId());
        writeD(_activeChar.getClanCrestLargeId());
        writeC(_activeChar.isNoble() ? 1 : 0);
        writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0);
        writeC(_activeChar.isFishing() ? 1 : 0);
        writeD(_activeChar.getFishx());
        writeD(_activeChar.getFishy());
        writeD(_activeChar.getFishz());
        writeD(_activeChar.getAppearance().getNameColor());
        writeD(_heading);
        writeC(_activeChar.getPledgeClass());
        writeH(_activeChar.getPledgeType());
        writeD(_activeChar.getAppearance().getTitleColor());
        writeC(_activeChar.isCursedWeaponEquipped() ? CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquippedId()) : 0);
        writeD(_activeChar.getClanId() > 0 ? _activeChar.getClan().getReputationScore() : 0);
        writeD(_activeChar.getTransformationDisplayId());
        writeD(_activeChar.getAgathionId());
        writeC(0x01);
        writeD((int) Math.round(_activeChar.getCurrentCp()));
        writeD(_activeChar.getMaxHp());
        writeD((int) Math.round(_activeChar.getCurrentHp()));
        writeD(_activeChar.getMaxMp());
        writeD((int) Math.round(_activeChar.getCurrentMp()));
        writeC(0x00);
        int abnormalSize = abnormalVisualEffects.size();
        writeD(abnormalSize);
        for (int i=0;i<abnormalSize;i++)
        {
            writeH(abnormalVisualEffect.getClientId());
        }
        writeC(0x00);
        writeC(_activeChar.isHairAccessoryEnabled() ? 0x01 : 0x00);
        writeC(_activeChar.getAbilityPointsUsed());
 
 
writeD(_activeChar.getClassId().getId()); - здесь не совсем так, скорее всего 2 Word.
 
Почему именно лыжу если не секрет ?)
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
потому что оно *шарное* - так правдивей думаю...
 
На лыже в ядре дерьма в разы меньше. В общем, кому как. Хотя ТСу, думаю, лишь бы что. Главное, Config.java есть и хватит.
 
На счет UI - в нем с Артеас вроде ниче не поменялось. Просто забыл, что в l2phx нет "обрезанной" строки.
 
Не совсем. С того времени у меня появилось несколько проблем :sorry: Все же, пожалуй, лучшей основой будет оверы + выпиливание лишнего дерьма = "чистый" (смотря, кто выпиливал) и приятный для чтения код.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
"чистый" (смотря, кто выпиливал) и приятный для чтения код.
На первом месте - выполнение конечной для юзера задачи, в том виде, в котором это ожидается.
А "чистый" (хз что тут имеется введу) и приятный для чтения код - это уже блага для программиста.
Ну и поскольку продукт всегда делается для юзера, а не для программиста, делаем вывод - что "чистый" и "приятный" код - далеко не главное :)

P.S. Лично я стремплюсь делать код максимально логичным, а не "чистым" и "приятным" (меня вымораживают эти определения, никогда их не понимал xD)
 
На первом месте - выполнение конечной для юзера задачи, в том виде, в котором это ожидается.
А "чистый" (хз что тут имеется введу) и приятный для чтения код - это уже блага для программиста.
Ну и поскольку продукт всегда делается для юзера, а не для программиста, делаем вывод - что "чистый" и "приятный" код - далеко не главное :)

P.S. Лично я стремплюсь делать код максимально логичным, а не "чистым" и "приятным" (меня вымораживают эти определения, никогда их не понимал xD)
Под чистым я имел в виду как можно более оптимизированным и правильным.
Продукт делается для юзера, это да, но важно и то, кем он делается. Достаточно неловкая ситуация, когда "накалякал" кода с 1к строк (к примеру), без комментариев, с непонятными именами переменных и усложненными конструкциями, а потом надо что-то поправить - и приходится подолгу рыться в тех 1к строках в поисках нужной части кода.
 
L2J не очень, я годами перебирал то, что в L2Emu Project и соответственно пошло в L2EMu Enterprise - от L2J и глупостей и ошибок было много. Оно конечно со временем немного было облагорожено и исправлено - но его еще надо фиксить, и часть подсистем переписывать.
 
Назад
Сверху