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

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

garfp

Свой человек
VIP
Сообщения
121
Розыгрыши
0
Репутация
28
Реакции
49
Баллы
595
Как-то на каком-то сервере видел такую фичу, как аллея нпс-героев(или статуи) текущего периода, с их никами, с оружием и в броне. Это было очень давно и такое ощущение, что я это придумал, потому что больше ни когда такого не видел на ил серверах. Кто-то видел подобное? Интересует как это было реализовано, если вообще было(вьетнамский флешбэк).
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Да, видел такое если не ошибаюсь на 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);
    }
}
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
На годе было помню заходил точно было )
 
Назад
Сверху Снизу