Перейти к содержанию
Авторизация  
mihas102

Цветные имена и титулы у мобов и боссов

Рекомендуемые сообщения

10 часов назад, mihas102 сказал:

Только вот скомпилить потом не получается
Может есть уже готовый файл скомпиленый под int.su?

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package ru.catssoftware.gameserver.network.serverpackets;

import ru.catssoftware.Config;
import ru.catssoftware.gameserver.model.L2Character;
import ru.catssoftware.gameserver.model.L2Summon;
import ru.catssoftware.gameserver.model.actor.instance.L2MonsterInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2SiegeFlagInstance;
import ru.catssoftware.gameserver.network.L2GameClient;

/**
 * This class ...
 *
 * @version $Revision: 1.7.2.4.2.9 $ $Date: 2005/04/11 10:05:54 $
 */
public class NpcInfo extends L2GameServerPacket {
    //   ddddddddddddddddddffffdddcccccSSddd dddddc
    //   ddddddddddddddddddffffdddcccccSSddd dddddccffd

    private static final String _S__22_NPCINFO = "[S] 16 NpcInfo";
    private L2Character _activeChar;
    private int _x, _y, _z, _heading;
    private int _idTemplate;
    private boolean _isSummoned;
    private int _mAtkSpd, _pAtkSpd;
    private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd, _flWalkSpd, _flyRunSpd, _flyWalkSpd;
    @SuppressWarnings("unused")
    private int _rhand;
    @SuppressWarnings("unused")
    private int _lhand;
    @SuppressWarnings("unused")
    private int _chest;
    @SuppressWarnings("unused")
    private int _team;
    private int _collisionHeight, _collisionRadius;
    private String _name = "";
    private String _title = "";
    @SuppressWarnings("unused")
    private int _form = 0;
 
    public NpcInfo(L2NpcInstance cha) {
        _activeChar = cha;
        _idTemplate = cha.getTemplate().getIdTemplate();
        _rhand = cha.getRightHandItem();
        _lhand = cha.getLeftHandItem();
        _isSummoned = cha.isShowSummonAnimation();
        _collisionHeight = cha.getCollisionHeight();
        _collisionRadius = cha.getCollisionRadius();

        if(cha.getTemplate().isServerSideName())
        {
            _name = cha.getTemplate().getName();
        }
        else
        {
            _name = cha.getName();
        }

        _team = _activeChar.getTeam();

        if (cha.isChampion())
        {
            _title = cha.isChampion2() ? Config.CHAMPION_TITLE2 : Config.CHAMPION_TITLE;
            _team = cha.isChampion2() ? Config.CHAMPION_AURA2 : Config.CHAMPION_AURA;
        }
        else if (cha.getTemplate().isServerSideTitle())
        {
            _title = cha.getTemplate().getTitle();
        }
        else
        {
            _title = cha.getTitle();
        }

        if (Config.SHOW_NPC_LVL && _activeChar instanceof L2MonsterInstance) {
            String t = "Lv " + cha.getLevel() + (cha.getAggroRange() > 0 ? "*" : "");
            if (_title != null && !_title.isEmpty()) {
                t += " " + _title;
            }

            _title = t;
        }
        if (_activeChar instanceof L2SiegeFlagInstance) {
            _title = cha.getTitle();
        }

        _x = _activeChar.getX();
        _y = _activeChar.getY();
        _z = _activeChar.getZ();
        _heading = _activeChar.getHeading();
        _mAtkSpd = _activeChar.getMAtkSpd();
        _pAtkSpd = _activeChar.getPAtkSpd();
        _runSpd = _activeChar.getTemplate().getBaseRunSpd();
        _walkSpd = _activeChar.getTemplate().getBaseWalkSpd();
        _swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
        _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
    }

    public NpcInfo(L2Summon cha, int val) {
        _activeChar = cha;
        _idTemplate = cha.getTemplate().getIdTemplate();
        _rhand = cha.getWeapon();
        _lhand = 0;
        _chest = cha.getArmor();
        int _val = val;
        _collisionHeight = _activeChar.getTemplate().getCollisionHeight();
        _collisionRadius = _activeChar.getTemplate().getCollisionRadius();

        if(cha.getTemplate().isServerSideName())
        {
            _name = cha.getTemplate().getName();
        }
        else
        {
            _name = cha.getName();
        }
        
        _title = cha.getOwner() != null ? (cha.getOwner().isOnline() == 0 ? "" : cha.getOwner().getName()) : ""; // when owner online, summon will show in title owner name
 /*
        if (cha.isAgathion()) {
            _name = " ";
            _title = " ";
        }
*/

        int npcId = cha.getTemplate().getNpcId();
        if (npcId == 16041 || npcId == 16042) {
            if (cha.getLevel() > 84) {
                _form = 3;
            } else if (cha.getLevel() > 79) {
                _form = 2;
            } else if (cha.getLevel() > 74) {
                _form = 1;
            }
        } else if (npcId == 16025 || npcId == 16037) {
            if (cha.getLevel() > 69) {
                _form = 3;
            } else if (cha.getLevel() > 64) {
                _form = 2;
            } else if (cha.getLevel() > 59) {
                _form = 1;
            }
        }

        _x = _activeChar.getX();
        _y = _activeChar.getY();
        _z = _activeChar.getZ();
        _heading = _activeChar.getHeading();
        _mAtkSpd = _activeChar.getMAtkSpd();
        _pAtkSpd = _activeChar.getPAtkSpd();
        _runSpd = cha.getPetSpeed();
        _walkSpd = cha.isMountable() ? 45 : 30;
        _swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
        _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
        _team = _activeChar.getTeam();
    }

    @Override
    protected void writeImpl(L2GameClient client, L2PcInstance activeChar) {
        if (_activeChar instanceof L2Summon) {
            if (((L2Summon) _activeChar).getOwner() != null && ((L2Summon) _activeChar).getOwner().getAppearance().isInvisible()) {
                return;
            }
        }
        writeC(0x16);
        writeD(_activeChar.getObjectId());
        writeD(_idTemplate + 1000000); // npctype id
        writeD(_activeChar.isAutoAttackable(activeChar) ? 1 : 0);
        writeD(_x);
        writeD(_y);
        writeD(_z);
        writeD(_heading);
        writeD(0x00);
        writeD(_mAtkSpd);
        writeD(_pAtkSpd);
        writeD(_runSpd);
        writeD(_walkSpd);
        writeD(_swimRunSpd/*0x32*/); // swimspeed
        writeD(_swimWalkSpd/*0x32*/); // swimspeed
        writeD(_flRunSpd);
        writeD(_flWalkSpd);
        writeD(_flyRunSpd);
        writeD(_flyWalkSpd);
        writeF(1.1/*_activeChar.getProperMultiplier()*/);
        //writeF(1/*_activeChar.getAttackSpeedMultiplier()*/);
        writeF(_pAtkSpd / 277.478340719);
        writeF(_collisionRadius);
        writeF(_collisionHeight);
        writeD(_rhand); // right hand weapon
        writeD(0);
        writeD(_lhand); // left hand weapon
        writeC(1); // name above char 1=true ... ??
        writeC(_activeChar.isRunning() ? 1 : 0);
        writeC(_activeChar.isInCombat() ? 1 : 0);
        writeC(_activeChar.isAlikeDead() ? 1 : 0);
        writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false  1=true   2=summoned (only works if model has a summon animation)
        writeS(_name);
        writeS(_title);
        writeD(0);
        writeD(0);
        writeD(0000); // hmm karma ??

        writeD(_activeChar.getAbnormalEffect()); // C2
        writeD(0000); // C2
        writeD(0000); // C2
        writeD(0000); // C2
        writeD(0000); // C2
        writeC(0000); // C2

        writeC(_team); // C3  team circle 1-blue, 2-red
        writeF(_collisionRadius);
        writeF(_collisionHeight);
        writeD(0x00); // C4
        writeD(0x00); // C6
    }

    @Override
    public boolean canBroadcast(L2PcInstance activeChar) {
        if (_activeChar instanceof L2Summon && ((L2Summon) _activeChar).getOwner() == activeChar) {
            return false;
        }

        return activeChar != null && activeChar.canSee(_activeChar);
    }

    /* (non-Javadoc)
     * @see ru.catssoftware.gameserver.serverpackets.ServerBasePacket#getType()
     */
    @Override
    public String getType() {
        return _S__22_NPCINFO;
    }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Данная тема не актуальна .

Уже помог

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...