Рейтинг темы:
  • 2 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Работа над Goddess of Destruction (part 6)
BoneBreaker Написал:Дядьки добрые, подскажите пожалуйста, что в эпизодеоне сотворили с кланом? Сравнил структуры пакетов линдвиор<->эпизодеон, всё сходится, но менюшка клана мертвая.

GameGuard killer другой используйте.
Bonux Написал:GameGuard killer другой используйте.

А это тут причем??

Речь не о заблокированных кнопках в интерфейсе клана, как было на линдвиоре 531.

Речь о самом по себе пустом интерфейсе, то есть без списка членов клана, отображения наличия клана в нижнем меню, отображения названия клана
тоже очень интересно
anyone knows when server send the PledgeCrest then L2 window Stuck?
disable the PledgeCrest will ignore the crest show.

name: PledgeCrest
Opcode : 6A
Size: 269 + 2

0001 serverid : 1 (0x00000001)
0005 crestId : 17853 (0x000045BD)
0009 size : 256 (0x00000100)
the below is data
Мб кому-то пригодится...

UIPacket (UserInfo) (Opcode 0x32). Protocol 597. (Не полностью разобран)

Код:
            writeD(obj_id);
            writeD(372 + _name.length() * 2 + title.length() * 2);
            writeH(23);

            writeB(new byte[]{(byte) 0xFF, (byte) 0xFF, (byte) 0xFF});

            writeD(_relation);
            writeH(16 + _name.length() * 2);
            writeH(_name.length());
            writeCutS(_name);
            writeC(gm_commands);
            writeC(_race);
            writeC(sex);
            writeD(base_class);
            writeD(class_id);
            writeC(level);

            writeH(18);
            writeH(_str);
            writeH(_dex);
            writeH(_con);
            writeH(_int);
            writeH(_wit);
            writeH(_men);
            writeH(_luc);
            writeH(_cha);

            writeH(14);
            writeD(maxHp);
            writeD(maxMp);
            writeD(maxCp);

            writeH(38);
            writeD(curHp);
            writeD(curMp);
            writeD(curCp);
            writeQ(_sp);
            writeQ(_exp);
            writeF(_expPercent);

            writeH(4);
            writeH(_enchant);

            writeH(15);
            writeD(hair_style);
            writeD(hair_color);
            writeD(face);
            writeC(0x00);

            writeH(6);
            writeC(mount_type);
            writeC(private_store);
            writeC(can_crystalize);
            writeC(0x00);

            writeH(56);
            writeH(_weaponFlag);
            writeD(_patk);
            writeD(_patkspd);
            writeD(_pdef);
            writeD(_pEvasion);
            writeD(_pAccuracy);
            writeD(_pCrit);
            writeD(_matk);
            writeD(_matkspd);
            writeD(_patkspd);
            writeD(_mdef);
            writeD(_mEvasion);
            writeD(_mAccuracy);
            writeD(_mCrit);

            writeH(14);
            writeH(defenceFire);
            writeH(defenceWater);
            writeH(defenceWind);
            writeH(defenceEarth);
            writeH(defenceHoly);
            writeH(defenceUnholy);

            writeH(18);
            writeD(_loc.x);
            writeD(_loc.y);
            writeD(_loc.z + Config.CLIENT_Z_SHIFT);
            writeD(vehicle_obj_id);

            writeH(18);
            writeH(_runSpd);
            writeH(_walkSpd);
            writeH(_swimRunSpd);
            writeH(_swimWalkSpd);
            writeH(_flRunSpd);
            writeH(_flWalkSpd);
            writeH(_flyRunSpd);
            writeH(_flyWalkSpd);

            writeH(18);
            writeF(move_speed);
            writeF(attack_speed);

            writeH(18);
            writeF(col_radius);
            writeF(col_height);

            writeH(5);
            writeC(attackElement.getId());
            writeH(attackElementValue);

            writeH(32 + title.length() * 2);
            writeH(title.length());
            writeCutS(title);
            writeH(pledge_type);
            writeD(clan_id);
            writeD(large_clan_crest_id);
            writeD(clan_crest_id);
            writeD(ClanPrivs);
            writeC(0x00);
            writeD(ally_id);
            writeD(ally_crest_id);
            writeC(partyRoom ? 0x01 : 0x00);

            writeH(22);
            writeC(pvp_flag);
            writeD(karma);
            writeC(noble);
            writeC(hero);
            writeC(pledge_class);
            writeD(pk_kills);
            writeD(pvp_kills);
            writeH(rec_left);
            writeH(rec_have);

            writeH(15);
            writeD(vitality);
            writeC(0);
            writeD(fame);
            writeD(0x00); // Рейдовые Очки

            writeH(9);
            writeC(talismans);
            writeC(openCloak);
            writeC(_team.ordinal());
            writeC(0);
            writeC(0);
            writeC(0);
            writeC(0);

            writeH(4);
            writeC(isFlying ? 0x02 : 0x00);
            writeC(running);

            writeH(10);
            writeD(name_color);
            writeD(title_color);

            writeH(9);
            writeD(0);
            writeH(InventoryLimit);
            writeC(0);

            writeH(9);
            writeC(1);
            writeH(0);
            writeD(0);

[Изображение: f6c5a1fe9c0a.jpg]
P.S. Перевод клиента позаимствован с ГВ.

Добавлено через 4 минуты
CharacterSelectionInfoPacket (Opcode 0x09). Protocol 597.

Код:
        writeD(size);
        writeD(0x07); // Максимальное количество персонажей на сервере
        writeC(0x00); // 0x00 - Разрешить, 0x01 - запретить. Разрешает или запрещает создание игроков
        writeC(0x00);
        writeD(0x02); // 0x01 - Выводит окно, что нужно купить игру, что создавать более 2х чаров. 0х02 - обычное лобби.
        writeC(0x00); // 0x01 - Предлогает купить ПА.

        long lastAccess = -1L;
        int lastUsed = -1;
        for(int i = 0; i < size; i++)
            if(lastAccess < _characterPackages[i].getLastAccess())
            {
                lastAccess = _characterPackages[i].getLastAccess();
                lastUsed = i;
            }

        for(int i = 0; i < size; i++)
        {
            CharSelectInfoPackage charInfoPackage = _characterPackages[i];

            writeS(charInfoPackage.getName());
            writeD(charInfoPackage.getCharId()); // ?
            writeS(_loginName);
            writeD(_sessionId);
            writeD(charInfoPackage.getClanId());
            writeD(0x00); // ??

            writeD(charInfoPackage.getSex());
            writeD(charInfoPackage.getRace());
            writeD(charInfoPackage.getBaseClassId());

            writeD(0x01); // active ??

            writeD(charInfoPackage.getX());
            writeD(charInfoPackage.getY());
            writeD(charInfoPackage.getZ());

            writeF(charInfoPackage.getCurrentHp());
            writeF(charInfoPackage.getCurrentMp());

            writeQ(charInfoPackage.getSp());
            writeQ(charInfoPackage.getExp());
            int lvl = charInfoPackage.getLevel();
            writeF(Experience.getExpPercent(lvl, charInfoPackage.getExp()));
            writeD(lvl);

            writeD(charInfoPackage.getKarma());
            writeD(charInfoPackage.getPk());
            writeD(charInfoPackage.getPvP());

            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);

            writeD(0x00); // unk Ertheia
            writeD(0x00); // unk Ertheia

            for(int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
                writeD(charInfoPackage.getPaperdollItemId(PAPERDOLL_ID));

            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_RHAND)); //Внешний вид оружия (ИД Итема).
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_LHAND)); //Внешний вид щита (ИД Итема).
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_GLOVES)); //Внешний вид перчаток (ИД Итема).
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_CHEST)); //Внешний вид верха (ИД Итема).
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_LEGS)); //Внешний вид низа (ИД Итема).
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_FEET)); //Внешний вид ботинок (ИД Итема).
            writeD(0x00); //???
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_HAIR)); //Внешний вид шляпы (ИД итема).
            writeD(charInfoPackage.getPaperdollVisualId(Inventory.PAPERDOLL_DHAIR)); //Внешний вид маски (ИД итема).

            writeH(0x00); // unk Episodion
            writeH(0x00); // unk Episodion
            writeH(0x00); // unk Episodion
            writeH(0x00); // unk Episodion
            writeH(0x01); // unk Episodion

            writeD(charInfoPackage.getHairStyle());
            writeD(charInfoPackage.getHairColor());
            writeD(charInfoPackage.getFace());

            writeF(charInfoPackage.getMaxHp()); // hp max
            writeF(charInfoPackage.getMaxMp()); // mp max

            writeD(charInfoPackage.getAccessLevel() > -100 ? charInfoPackage.getDeleteTimer() : -1);
            writeD(charInfoPackage.getClassId());
            writeD(i == lastUsed ? 1 : 0);

            writeC(Math.min(charInfoPackage.getPaperdollEnchantEffect(Inventory.PAPERDOLL_RHAND), 127));
            writeH(charInfoPackage.getPaperdollVariation1Id(Inventory.PAPERDOLL_RHAND));
            writeH(charInfoPackage.getPaperdollVariation2Id(Inventory.PAPERDOLL_RHAND));
            int weaponId = charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND);
            if(weaponId == 8190) // Transform id (на оффе отображаются только КВ трансформации или вообще не отображаются ;)
                writeD(301);
            else if(weaponId == 8689)
                writeD(302);
            else
                writeD(0x00);

            //TODO: Pet info?
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeF(0x00);
            writeF(0x00);

            writeD(charInfoPackage.getVitalityPoints());
            /*TODO: Сделать, чтобы реагировало на ПА.
            if(hasPremiumAccount)
            {
                writeD(charInfoPackage.getVitalityPoints() > 0 ? (int) (100 * Config.ALT_VITALITY_PA_RATE) : 100);
                writeD(Config.ALT_VITALITY_POTIONS_PA_LIMIT - charInfoPackage.getVitalityUsedPotions());
            }
            else
            {*/
                writeD(charInfoPackage.getVitalityPoints() > 0 ? (int) (100 * Config.ALT_VITALITY_RATE) : 100);
                writeD(Config.ALT_VITALITY_POTIONS_LIMIT - charInfoPackage.getVitalityUsedPotions());
            /*}*/
            writeD(0x01); // Активен персонаж или нет.
            writeC(0x00); // UNK
            writeC(0x00); // UNK
            writeC(0x00); // UNK Episodion

Добавлено через 7 минут
ExUserInfoEquipSlot (Opcode 0xFE:0x151). Protocol 597.

Код:
        writeD(_objectId);
        writeH(_inv.length);

        writeB(new byte[]{(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF});

        for(int[] inv : _inv)
        {
            writeH(18); // size
            writeD(inv[0]); // item ObjID
            writeD(inv[1]); // item ID
            writeH(inv[2]); // variation ID 1 (augment)
            writeH(inv[3]); // variation ID 2 (augment)
            writeD(inv[4]); // visual ID
        }
Bonux Написал:Мб кому-то пригодится...

UIPacket (UserInfo) (Opcode 0x32). Protocol 597. (Не полностью разобран)

597 протокол это Артеас уже?
Melcor Написал:597 протокол это Артеас уже?

Да. Артеас.
Bonux Написал:P.S. Перевод клиента позаимствован с ГВ.
Достали таки ключ =(

п.с вроде это все в шаре было.
да и разбор не совсем верный. На нпцИнфо этот трюк уже не пройдет.
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Bonux Написал:Да. Артеас.
writeD(face);
writeC(0x00);
->
writeD(face);
writeC(stathair);

Smile
Bacek Написал:Достали таки ключ =(

п.с вроде это все в шаре было.
да и разбор не совсем верный. На нпцИнфо этот трюк уже не пройдет.

Хз...
[Изображение: 1dc2866fd986.jpg]

Добавлено через 25 минут
To: Bacek


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Работа над Goddess of Destruction (part 7) n3k0nation 459 174,315 03-21-2022, 04:21 PM
Последний пост: TieLay
  Помогите с Сервером L2Dream версии 439 для Lineage 2 Gracia Part 2 CAHTEX 4 3,382 10-01-2021, 02:40 PM
Последний пост: tenor
  Работа с камерой и Энтер чат FriendlyGhost 0 1,302 04-29-2018, 06:07 AM
Последний пост: FriendlyGhost
  Goddess of Destruction ( новая ветка от NcSoft ) Bacek 180 59,019 08-22-2017, 12:32 PM
Последний пост: BadStealth
  EmuRT Gracia part 2 ? knaif 3 1,623 02-08-2016, 01:19 PM
Последний пост: knaif
  Gracia Part 1 от l2emu исходы TFH 6 1,965 10-05-2015, 07:53 PM
Последний пост: G1ta0
  Ищу исходы L2-Dream gracia part 2 knaif 1 1,386 10-05-2015, 07:51 PM
Последний пост: G1ta0
  Оплачиваемая работа Grek1993 1 1,352 08-01-2015, 11:29 AM
Последний пост: ztaecz
  Работа с мультиселлом Evencelance 11 2,446 09-19-2014, 12:43 PM
Последний пост: Evencelance
  Работа над Goddess of Destruction (part 5) Ozzy 980 339,204 10-09-2013, 09:13 AM
Последний пост: Ashe

Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)