Jump to content
Sign in to follow this  
mihas102

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

Recommended Posts

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;
    }
}

 

Share this post


Link to post
Share on other sites

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

Уже помог

  • Upvote 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...