Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Серверная часть (https://forum.zone-game.info/forumdisplay.php?f=148)
-   -   Подробная информация (https://forum.zone-game.info/showthread.php?t=11068)

Wolfas 13.11.2010 22:32

Подробная информация
 
Подскажите как отключить, запрет на просмотр подробной информации о игроке?

VISTALL 13.11.2010 23:17

Re: Подробная информация
 
найти нужный клиент пакет аля CM_PLAYER_INFO и убить посылку серверного пакета

TieLay 13.11.2010 23:18

Re: Подробная информация
 
А для кого для Gm или для всех?

Wolfas 14.11.2010 00:18

Re: Подробная информация
 
Для всех, ну или только для GM, но думаю будет слишком проблематично

Добавлено через 4 минуты
Код:

public class SM_PLAYER_INFO extends AionServerPacket
{

        /**
        * Visible player
        */
        private final Player        player;
        private boolean                enemy;

        /**
        * Constructs new <tt>SM_PLAYER_INFO </tt> packet
        *
        * @param player
        *            actual player.
        * @param enemy
        */
        public SM_PLAYER_INFO(Player player, boolean enemy)
        {
                this.player = player;
                this.enemy = enemy;
        }

        /**
        * {@inheritDoc}
        */
        @Override
        protected void writeImpl(AionConnection con, ByteBuffer buf)
        {
                PlayerCommonData pcd = player.getCommonData();
               
                final int raceId;

                if(player.getAdminNeutral() > 1 || con.getActivePlayer().getAdminNeutral() > 1)
                        raceId = con.getActivePlayer().getCommonData().getRace().getRaceId();

                else if((player.getAdminEnmity() > 1 || con.getActivePlayer().getAdminEnmity() > 1) &&
                        con.getActivePlayer().getName() != player.getName() && con.getActivePlayer().isFriend(player))
                        raceId = (con.getActivePlayer().getCommonData().getRace().getRaceId() == 0 ? 1 : 0);

                else
                        raceId = pcd.getRace().getRaceId();

                final int genderId = pcd.getGender().getGenderId();
                final PlayerAppearance playerAppearance = player.getPlayerAppearance();

                writeF(buf, player.getX());// x
                writeF(buf, player.getY());// y
                writeF(buf, player.getZ());// z
                writeD(buf, player.getObjectId());
                /**
                * A3 female asmodian A2 male asmodian A1 female elyos A0 male elyos
                */
                writeD(buf, pcd.getTemplateId());
                /**
                * Transformed state - send transformed model id Regular state - send player model id (from common data)
                */
                writeD(buf, player.getTransformedModelId() == 0 ? pcd.getTemplateId() : player.getTransformedModelId());
               
                writeC(buf, 0x00); // new 2.0 Packet --- probably pet info?
                writeC(buf, enemy ? 0x00 : 0x26);

                writeC(buf, raceId); // race
                writeC(buf, pcd.getPlayerClass().getClassId());
                writeC(buf, genderId); // sex
                writeH(buf, player.getState());

                byte[] unk = new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                        (byte) 0x00, (byte) 0x00 };
                writeB(buf, unk);

                writeC(buf, player.getHeading());

                writeS(buf, player.getName());

                writeD(buf, pcd.getTitleId());
                writeC(buf, 0x0);// if set 0x1 can't jump and fly..
                writeH(buf, player.getCastingSkillId());
                writeH(buf, player.isLegionMember() ? player
                        .getLegion().getLegionId() : 0);
                writeH(buf, 0); // User Emblem related?
                writeH(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getEmblemId() : 0);
                writeC(buf, 0xFF);
                writeC(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getColor_r() : 0);
                writeC(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getColor_g() : 0);
                writeC(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getColor_b() : 0);
                writeS(buf, player.isLegionMember() ? player
                        .getLegion().getLegionName() : "");

                int maxHp = player.getLifeStats().getMaxHp();
                int currHp = player.getLifeStats().getCurrentHp();
                writeC(buf, 100 * currHp / maxHp);// %hp
                writeH(buf, pcd.getDp());// current dp
                writeC(buf, 0x00);// unk (0x00)

                List<Item> items = player.getEquipment().getEquippedItemsWithoutStigma();
                short mask = 0;
                for(Item item : items)
                {
                        mask |= item.getEquipmentSlot();
                }

                writeH(buf, mask);

                for(Item item : items)
                {
                        if(item.getEquipmentSlot() < Short.MAX_VALUE * 2)
                        {
                                writeD(buf, item.getItemSkinTemplate().getTemplateId());
                                GodStone godStone = item.getGodStone();
                                writeD(buf, godStone != null ? godStone.getItemId() : 0);
                                writeD(buf, item.getItemColor());
                                writeH(buf, 0x00);// unk (0x00)
                        }
                }

                writeD(buf, playerAppearance.getSkinRGB());
                writeD(buf, playerAppearance.getHairRGB());
                writeD(buf, playerAppearance.getEyeRGB());
                writeD(buf, playerAppearance.getLipRGB());
                writeC(buf, playerAppearance.getFace());
                writeC(buf, playerAppearance.getHair());
                writeC(buf, playerAppearance.getDeco());
                writeC(buf, playerAppearance.getTattoo());

                writeC(buf, 5);// always 5 o0

                writeC(buf, playerAppearance.getFaceShape());
                writeC(buf, playerAppearance.getForehead());

                writeC(buf, playerAppearance.getEyeHeight());
                writeC(buf, playerAppearance.getEyeSpace());
                writeC(buf, playerAppearance.getEyeWidth());
                writeC(buf, playerAppearance.getEyeSize());
                writeC(buf, playerAppearance.getEyeShape());
                writeC(buf, playerAppearance.getEyeAngle());

                writeC(buf, playerAppearance.getBrowHeight());
                writeC(buf, playerAppearance.getBrowAngle());
                writeC(buf, playerAppearance.getBrowShape());

                writeC(buf, playerAppearance.getNose());
                writeC(buf, playerAppearance.getNoseBridge());
                writeC(buf, playerAppearance.getNoseWidth());
                writeC(buf, playerAppearance.getNoseTip());

                writeC(buf, playerAppearance.getCheek());
                writeC(buf, playerAppearance.getLipHeight());
                writeC(buf, playerAppearance.getMouthSize());
                writeC(buf, playerAppearance.getLipSize());
                writeC(buf, playerAppearance.getSmile());
                writeC(buf, playerAppearance.getLipShape());
                writeC(buf, playerAppearance.getJawHeigh());
                writeC(buf, playerAppearance.getChinJut());
                writeC(buf, playerAppearance.getEarShape());
                writeC(buf, playerAppearance.getHeadSize());
                // 1.5.x 0x00, shoulderSize, armLength, legLength (BYTE) after HeadSize

                writeC(buf, playerAppearance.getNeck());
                writeC(buf, playerAppearance.getNeckLength());
                writeC(buf, playerAppearance.getShoulderSize());

                writeC(buf, playerAppearance.getTorso());
                writeC(buf, playerAppearance.getChest()); // only woman
                writeC(buf, playerAppearance.getWaist());

                writeC(buf, playerAppearance.getHips());
                writeC(buf, playerAppearance.getArmThickness());
                writeC(buf, playerAppearance.getHandSize());
                writeC(buf, playerAppearance.getLegThicnkess());

                writeC(buf, playerAppearance.getFootSize());
                writeC(buf, playerAppearance.getFacialRate());

                writeC(buf, 0x00); // always 0
                writeC(buf, playerAppearance.getArmLength());
                writeC(buf, playerAppearance.getLegLength());
                writeC(buf, playerAppearance.getShoulders());
                writeC(buf, 0x00); // always 0
                writeC(buf, 0x00); // 0x00

                writeC(buf, playerAppearance.getVoice());

                writeF(buf, playerAppearance.getHeight());
                writeF(buf, 0.25f); // scale
                writeF(buf, 2.0f); // gravity or slide surface o_O
                writeF(buf, player.getGameStats().getCurrentStat(StatEnum.SPEED) / 1000f); // move speed

                writeH(buf, player.getGameStats().getBaseStat(StatEnum.ATTACK_SPEED));
                writeH(buf, player.getGameStats().getCurrentStat(StatEnum.ATTACK_SPEED));
                writeC(buf, 2);

                writeS(buf, player.hasStore() ? player.getStore().getStoreMessage() : "");// private store message

                /**
                * Movement
                */
                writeF(buf, 0);
                writeF(buf, 0);
                writeF(buf, 0);

                writeF(buf, player.getX());// x
                writeF(buf, player.getY());// y
                writeF(buf, player.getZ());// z
                writeC(buf, 0x00); // move type

                if(player.isUsingFlyTeleport())
                {
                        writeD(buf, player.getFlightTeleportId());
                        writeD(buf, player.getFlightDistance());
                }

                writeC(buf, player.getVisualState()); // visualState
                writeS(buf, player.getCommonData().getNote()); // note show in right down windows if your target on player

                writeH(buf, player.getLevel()); // [level]
                writeH(buf, player.getPlayerSettings().getDisplay()); // unk - 0x04
                writeH(buf, player.getPlayerSettings().getDeny()); // unk - 0x00
                writeH(buf, player.getAbyssRank().getRank().getId()); // abyss rank
                writeH(buf, 0x00); // unk - 0x01
                writeD(buf, player.getTarget() == null ? 0 : player.getTarget().getObjectId());
                writeC(buf, 0); // suspect id
        }
}

Добавлено через 19 минут
Вродь, эти

writeH(buf, player.getPlayerSettings().getDisplay()); // unk - 0x04
writeH(buf, player.getPlayerSettings().getDeny()); // unk - 0x00

VISTALL 14.11.2010 00:39

Re: Подробная информация
 
Цитата:

Сообщение от Wolfas (Сообщение 96438)
Для всех, ну или только для GM, но думаю будет слишком проблематично

Добавлено через 4 минуты
Код:

public class SM_PLAYER_INFO extends AionServerPacket
{

        /**
        * Visible player
        */
        private final Player        player;
        private boolean                enemy;

        /**
        * Constructs new <tt>SM_PLAYER_INFO </tt> packet
        *
        * @param player
        *            actual player.
        * @param enemy
        */
        public SM_PLAYER_INFO(Player player, boolean enemy)
        {
                this.player = player;
                this.enemy = enemy;
        }

        /**
        * {@inheritDoc}
        */
        @Override
        protected void writeImpl(AionConnection con, ByteBuffer buf)
        {
                PlayerCommonData pcd = player.getCommonData();
               
                final int raceId;

                if(player.getAdminNeutral() > 1 || con.getActivePlayer().getAdminNeutral() > 1)
                        raceId = con.getActivePlayer().getCommonData().getRace().getRaceId();

                else if((player.getAdminEnmity() > 1 || con.getActivePlayer().getAdminEnmity() > 1) &&
                        con.getActivePlayer().getName() != player.getName() && con.getActivePlayer().isFriend(player))
                        raceId = (con.getActivePlayer().getCommonData().getRace().getRaceId() == 0 ? 1 : 0);

                else
                        raceId = pcd.getRace().getRaceId();

                final int genderId = pcd.getGender().getGenderId();
                final PlayerAppearance playerAppearance = player.getPlayerAppearance();

                writeF(buf, player.getX());// x
                writeF(buf, player.getY());// y
                writeF(buf, player.getZ());// z
                writeD(buf, player.getObjectId());
                /**
                * A3 female asmodian A2 male asmodian A1 female elyos A0 male elyos
                */
                writeD(buf, pcd.getTemplateId());
                /**
                * Transformed state - send transformed model id Regular state - send player model id (from common data)
                */
                writeD(buf, player.getTransformedModelId() == 0 ? pcd.getTemplateId() : player.getTransformedModelId());
               
                writeC(buf, 0x00); // new 2.0 Packet --- probably pet info?
                writeC(buf, enemy ? 0x00 : 0x26);

                writeC(buf, raceId); // race
                writeC(buf, pcd.getPlayerClass().getClassId());
                writeC(buf, genderId); // sex
                writeH(buf, player.getState());

                byte[] unk = new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                        (byte) 0x00, (byte) 0x00 };
                writeB(buf, unk);

                writeC(buf, player.getHeading());

                writeS(buf, player.getName());

                writeD(buf, pcd.getTitleId());
                writeC(buf, 0x0);// if set 0x1 can't jump and fly..
                writeH(buf, player.getCastingSkillId());
                writeH(buf, player.isLegionMember() ? player
                        .getLegion().getLegionId() : 0);
                writeH(buf, 0); // User Emblem related?
                writeH(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getEmblemId() : 0);
                writeC(buf, 0xFF);
                writeC(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getColor_r() : 0);
                writeC(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getColor_g() : 0);
                writeC(buf, player.isLegionMember() ? player
                        .getLegion().getLegionEmblem().getColor_b() : 0);
                writeS(buf, player.isLegionMember() ? player
                        .getLegion().getLegionName() : "");

                int maxHp = player.getLifeStats().getMaxHp();
                int currHp = player.getLifeStats().getCurrentHp();
                writeC(buf, 100 * currHp / maxHp);// %hp
                writeH(buf, pcd.getDp());// current dp
                writeC(buf, 0x00);// unk (0x00)

                List<Item> items = player.getEquipment().getEquippedItemsWithoutStigma();
                short mask = 0;
                for(Item item : items)
                {
                        mask |= item.getEquipmentSlot();
                }

                writeH(buf, mask);

                for(Item item : items)
                {
                        if(item.getEquipmentSlot() < Short.MAX_VALUE * 2)
                        {
                                writeD(buf, item.getItemSkinTemplate().getTemplateId());
                                GodStone godStone = item.getGodStone();
                                writeD(buf, godStone != null ? godStone.getItemId() : 0);
                                writeD(buf, item.getItemColor());
                                writeH(buf, 0x00);// unk (0x00)
                        }
                }

                writeD(buf, playerAppearance.getSkinRGB());
                writeD(buf, playerAppearance.getHairRGB());
                writeD(buf, playerAppearance.getEyeRGB());
                writeD(buf, playerAppearance.getLipRGB());
                writeC(buf, playerAppearance.getFace());
                writeC(buf, playerAppearance.getHair());
                writeC(buf, playerAppearance.getDeco());
                writeC(buf, playerAppearance.getTattoo());

                writeC(buf, 5);// always 5 o0

                writeC(buf, playerAppearance.getFaceShape());
                writeC(buf, playerAppearance.getForehead());

                writeC(buf, playerAppearance.getEyeHeight());
                writeC(buf, playerAppearance.getEyeSpace());
                writeC(buf, playerAppearance.getEyeWidth());
                writeC(buf, playerAppearance.getEyeSize());
                writeC(buf, playerAppearance.getEyeShape());
                writeC(buf, playerAppearance.getEyeAngle());

                writeC(buf, playerAppearance.getBrowHeight());
                writeC(buf, playerAppearance.getBrowAngle());
                writeC(buf, playerAppearance.getBrowShape());

                writeC(buf, playerAppearance.getNose());
                writeC(buf, playerAppearance.getNoseBridge());
                writeC(buf, playerAppearance.getNoseWidth());
                writeC(buf, playerAppearance.getNoseTip());

                writeC(buf, playerAppearance.getCheek());
                writeC(buf, playerAppearance.getLipHeight());
                writeC(buf, playerAppearance.getMouthSize());
                writeC(buf, playerAppearance.getLipSize());
                writeC(buf, playerAppearance.getSmile());
                writeC(buf, playerAppearance.getLipShape());
                writeC(buf, playerAppearance.getJawHeigh());
                writeC(buf, playerAppearance.getChinJut());
                writeC(buf, playerAppearance.getEarShape());
                writeC(buf, playerAppearance.getHeadSize());
                // 1.5.x 0x00, shoulderSize, armLength, legLength (BYTE) after HeadSize

                writeC(buf, playerAppearance.getNeck());
                writeC(buf, playerAppearance.getNeckLength());
                writeC(buf, playerAppearance.getShoulderSize());

                writeC(buf, playerAppearance.getTorso());
                writeC(buf, playerAppearance.getChest()); // only woman
                writeC(buf, playerAppearance.getWaist());

                writeC(buf, playerAppearance.getHips());
                writeC(buf, playerAppearance.getArmThickness());
                writeC(buf, playerAppearance.getHandSize());
                writeC(buf, playerAppearance.getLegThicnkess());

                writeC(buf, playerAppearance.getFootSize());
                writeC(buf, playerAppearance.getFacialRate());

                writeC(buf, 0x00); // always 0
                writeC(buf, playerAppearance.getArmLength());
                writeC(buf, playerAppearance.getLegLength());
                writeC(buf, playerAppearance.getShoulders());
                writeC(buf, 0x00); // always 0
                writeC(buf, 0x00); // 0x00

                writeC(buf, playerAppearance.getVoice());

                writeF(buf, playerAppearance.getHeight());
                writeF(buf, 0.25f); // scale
                writeF(buf, 2.0f); // gravity or slide surface o_O
                writeF(buf, player.getGameStats().getCurrentStat(StatEnum.SPEED) / 1000f); // move speed

                writeH(buf, player.getGameStats().getBaseStat(StatEnum.ATTACK_SPEED));
                writeH(buf, player.getGameStats().getCurrentStat(StatEnum.ATTACK_SPEED));
                writeC(buf, 2);

                writeS(buf, player.hasStore() ? player.getStore().getStoreMessage() : "");// private store message

                /**
                * Movement
                */
                writeF(buf, 0);
                writeF(buf, 0);
                writeF(buf, 0);

                writeF(buf, player.getX());// x
                writeF(buf, player.getY());// y
                writeF(buf, player.getZ());// z
                writeC(buf, 0x00); // move type

                if(player.isUsingFlyTeleport())
                {
                        writeD(buf, player.getFlightTeleportId());
                        writeD(buf, player.getFlightDistance());
                }

                writeC(buf, player.getVisualState()); // visualState
                writeS(buf, player.getCommonData().getNote()); // note show in right down windows if your target on player

                writeH(buf, player.getLevel()); // [level]
                writeH(buf, player.getPlayerSettings().getDisplay()); // unk - 0x04
                writeH(buf, player.getPlayerSettings().getDeny()); // unk - 0x00
                writeH(buf, player.getAbyssRank().getRank().getId()); // abyss rank
                writeH(buf, 0x00); // unk - 0x01
                writeD(buf, player.getTarget() == null ? 0 : player.getTarget().getObjectId());
                writeC(buf, 0); // suspect id
        }
}

Добавлено через 19 минут
Вродь, эти

writeH(buf, player.getPlayerSettings().getDisplay()); // unk - 0x04
writeH(buf, player.getPlayerSettings().getDeny()); // unk - 0x00

клиент пакет

Wolfas 14.11.2010 01:32

Re: Подробная информация
 
Цитата:

Сообщение от VISTALL (Сообщение 96443)
клиент пакет

VISTALL, объясните пожалуйста по подробнее

rreanimatorr 18.11.2010 19:23

Re: Подробная информация
 
для этого есть сканер который просматривает шмотки любого персонажа

Wolfas 18.11.2010 22:28

Re: Подробная информация
 
rreanimatorr Дайте ссыль на сканер


Текущее время: 00:56. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot