Аллея героев.

garfp

Интересующийся
VIP
Сообщения
118
Розыгрыши
0
Репутация
28
Реакции
46
Баллы
395
Как-то на каком-то сервере видел такую фичу, как аллея нпс-героев(или статуи) текущего периода, с их никами, с оружием и в броне. Это было очень давно и такое ощущение, что я это придумал, потому что больше ни когда такого не видел на ил серверах. Кто-то видел подобное? Интересует как это было реализовано, если вообще было(вьетнамский флешбэк).
 
Да, видел такое если не ошибаюсь на L2Mordor буржуйский. Невесома должен знать, вроде он делал.
 
Как-то на каком-то сервере видел такую фичу, как аллея нпс-героев(или статуи) текущего периода, с их никами, с оружием и в броне. Это было очень давно и такое ощущение, что я это придумал, потому что больше ни когда такого не видел на ил серверах. Кто-то видел подобное? Интересует как это было реализовано, если вообще было(вьетнамский флешбэк).
На голом годе вроде ставили, когда было всего несколько хиро слотов.
 
Ну как еще можно сделать? Через создание модельки.
понятно, что через модельки, а как имена подтягивать? постоянно заставлять игроков апдейтить нпснейм, чтобы сменялись имена?
 
понятно, что через модельки, а как имена подтягивать? постоянно заставлять игроков апдейтиться, чтобы сменялись имена?
По идее просто чаринфо шлёшь с нужной структурой и всё, никакие модельки не нужны.
 
Только нужно определиться, слать всегда актуальный чаринфо, или делать слепок в какой-то период, что тоже не всегда хорошо может получиться, ибо чар не презентабельно одет будет )
 
Только нужно определиться, слать всегда актуальный чаринфо, или делать слепок в какой-то период, что тоже не всегда хорошо может получиться, ибо чар не презентабельно одет будет )
Ну грейд брони проверять периодически, если A и выше все слоты, то записать данные)
 
У тебя там выше пример со скрином, где БД в Ц сете ) С ним что предлагаешь сделать в таком случае? )) Не достоин и не отображать? )
 
там пакет специальный, от глобальной системы статистики, которую корейцы ненадолго вводили, но вскоре выпилили - скорее сего видимо не расчитали что это добро будет сильно нагружать сервер.

но некоторые части до сих пор можно заюзать, по крайней мере в крусейде точно - насчет хроник выше не скажу.
те же статую можно поставить пакетом ServerObjectInfo (опкод 0x92)
Java:
package l2p.gameserver.network.s2c;

import l2p.gameserver.model.Creature;
import l2p.gameserver.model.instances.StatueInstance;
import l2p.gameserver.network.components.Opcode;

public class ServerObjectInfo extends L2GameServerPacket
{
    private final String _name;
    private final boolean _attackable;
    private final double _colRadius, _colHeight;
    private final int _id;
    private final int _objId;
    private final int _x, _y, _z, _heading;
    private final int _templateId;
    private final int _classId;
    private final int _raceId;
    private final int _sex;
    private final int _face;
    private final int _hairStyle;
    private final int _hairColor;
    private final int _head;
    private final int _rHand;
    private final int _lHand;
    private final int _chest;
    private final int _gloves;
    private final int _legs;
    private final int _feet;
    private final int _cloak;
    private final int _hair1;
    private final int _hair2;
    private final int _neck;

    public ServerObjectInfo(StatueInstance statue, Creature actor)
    {
        _id = statue.getTemplate().getType().getId();
        _objId = statue.getObjectId();
        _templateId = 1000000;
        _name = statue.getTemplate().getName();
        _attackable = statue.isAttackable(actor, null);
        _x = statue.getX();
        _y = statue.getY();
        _z = statue.getZ();
        _heading = statue.getHeading();
        _colRadius = statue.getColRadius();
        _colHeight = statue.getColHeight();
        _classId = statue.getTemplate().getClassId();
        _raceId = statue.getTemplate().getRaceId();
        _sex = statue.getTemplate().getSex();
        _hairStyle = statue.getTemplate().getHairStyle();
        _hairColor = statue.getTemplate().getHairColor();
        _face = statue.getTemplate().getFace();
        _neck = statue.getTemplate().getNecklace();
        _head = statue.getTemplate().getHead();
        _rHand = statue.getTemplate().getRHand();
        _lHand = statue.getTemplate().getLHand();
        _gloves = statue.getTemplate().getGloves();
        _chest = statue.getTemplate().getChest();
        _legs = statue.getTemplate().getLegs();
        _feet = statue.getTemplate().getFeet();
        _cloak = statue.getTemplate().getCloak();
        _hair1 = statue.getTemplate().getHair1();
        _hair2 = statue.getTemplate().getHair2();
    }

    @Override
    protected void writeImpl()
    {
        writeC(Opcode.ServerObjectInfo);
        writeD(_objId);
        writeD(_templateId + 1000000);
        writeS(_name); // name
        writeD(_attackable ? 1 : 0);
        writeD(_x);
        writeD(_y);
        writeD(_z);
        writeD(_heading);
        writeF(1.0); // movement multiplier
        writeF(1.0); // attack speed multiplier
        writeF(_colRadius);
        writeF(_colHeight);
        writeD(0); // Current HP
        writeD(0); // Max HP
        writeD(7); // Color
        writeD(0x00);
        writeD(_id);
        writeD(0x00);
        writeD(0x00); // Social ID
        writeD(0x00); // Social frame
        writeD(_classId);
        writeD(_raceId);
        writeD(_sex);
        writeD(_hairStyle);
        writeD(_hairColor);
        writeD(_face);
        writeD(_neck);
        writeD(_head);
        writeD(_rHand);
        writeD(_lHand);
        writeD(_gloves);
        writeD(_chest);
        writeD(_legs);
        writeD(_feet);
        writeD(_cloak);
        writeD(_hair1);
        writeD(_hair2);
    }
}
Java:
package l2p.gameserver.model.instances;

import java.util.ArrayList;
import java.util.List;

import l2p.gameserver.ai.CtrlIntention;
import l2p.gameserver.config.NpcConfig;
import l2p.gameserver.config.OtherConfig;
import l2p.gameserver.enums.StatisticTopType;
import l2p.gameserver.holders.statistic.StatisticData;
import l2p.gameserver.holders.statistic.StatueTemplate;
import l2p.gameserver.managers.StatisticManager;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.GameObject;
import l2p.gameserver.model.Location;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.skills.Skill;
import l2p.gameserver.network.s2c.ActionFail;
import l2p.gameserver.network.s2c.ExLoadStatHotLink;
import l2p.gameserver.network.s2c.L2GameServerPacket;
import l2p.gameserver.network.s2c.ServerObjectInfo;

public final class StatueInstance extends GameObject
{
    private StatueTemplate _template;
    private int _heading;

    public StatueInstance(int objectId, StatueTemplate template)
    {
        super(objectId);

        _template = template;
    }

    public StatueTemplate getTemplate()
    {
        return _template;
    }

    @Override
    public boolean isAttackable(Creature creature, Skill skill)
    {
        return false;
    }

    @Override
    public double getColRadius()
    {
        return 30.;
    }

    @Override
    public double getColHeight()
    {
        return 40.;
    }

    @Override
    public void setLoc(Location loc)
    {
        super.setLoc(loc);

        _heading = loc.getH();
    }

    @Override
    public int getHeading()
    {
        return _heading;
    }

    @Override
    public List<L2GameServerPacket> addPacketList(Player forPlayer, Creature dropper)
    {
        List<L2GameServerPacket> list = new ArrayList<>(1);
        list.add(new ServerObjectInfo(this, forPlayer));
        return list;
    }

    @Override
    public void onAction(Player player, boolean shift)
    {
        if (!isInRange(player, NpcConfig.MAX_INTERACTION_RANGE))
        {
            if (player.getAI().getIntention() != CtrlIntention.AI_INTENTION_INTERACT)
                player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this, null);

            return;
        }

        player.stopMove(false);
        List<StatisticData> global = StatisticManager.getTop(_template.getType(), StatisticTopType.STATUE_GLOBAL, OtherConfig.STATISTIC_STATUE_TOP_LIMIT);
        List<StatisticData> monthly = StatisticManager.getTop(_template.getType(), StatisticTopType.STATUE_MONTHLY, OtherConfig.STATISTIC_STATUE_TOP_LIMIT);
        player.sendPacket(new ExLoadStatHotLink(_template.getType().getId(), _template.getType().getSubId(), global, monthly), ActionFail.STATIC);
    }
}
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
На годе было помню заходил точно было )
 
Назад
Сверху Снизу