Jump to content
  • 0

Champion Aura


InFocus

Question

Recommended Posts

  • 0

Well, Normal and CHampion have same aura with 

writeD(-1); // High Five NPCString ID
			writeS(_title);
			writeD(0x00);
			if (_npc.isChampion())
			{
				writeC(1);
			}
			else
			{
				writeC(0);
			}
			writeD(0x00); // pvp flag
			writeD(0x00); // karma
			

http://5SCSyI6.jpg

Link to comment
Share on other sites

  • 0

Forget about the packet thing. The problem is with the 'Champion' system. Probably is broken or you just added the method by Ur self

Link to comment
Share on other sites

  • 0

Or you simply edited wrong writeC, the comment says it's title color. Try editing this line writeC(_npc.getTeam().getId());

If you have it. Not sure what stands for getTeam for npc but you can try. 

Link to comment
Share on other sites

  • 0

Ok SweeTs, i post now, all my code,

 

/*
 * Copyright (C) 2004-2015 L2J Server
 * 
 * This file is part of L2J Server.
 * 
 * L2J Server 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.
 * 
 * L2J Server 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 com.l2jserver.gameserver.network.serverpackets;

import com.l2jserver.Config;
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
import com.l2jserver.gameserver.instancemanager.TownManager;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.PcCondOverride;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2jserver.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance;
import com.l2jserver.gameserver.model.skills.AbnormalVisualEffect;
import com.l2jserver.gameserver.model.zone.ZoneId;

public abstract class AbstractNpcInfo extends L2GameServerPacket
{
    protected int _x, _y, _z, _heading;
    protected int _idTemplate;
    protected boolean _isAttackable, _isSummoned;
    protected int _mAtkSpd, _pAtkSpd;
    protected final int _runSpd, _walkSpd;
    protected final int _swimRunSpd, _swimWalkSpd;
    protected final int _flyRunSpd, _flyWalkSpd;
    protected double _moveMultiplier;
    
    protected int _rhand, _lhand, _chest, _enchantEffect;
    protected double _collisionHeight, _collisionRadius;
    protected String _name = "";
    protected String _title = "";
    
    public AbstractNpcInfo(L2Character cha)
    {
        _isSummoned = cha.isShowSummonAnimation();
        _x = cha.getX();
        _y = cha.getY();
        _z = cha.getZ();
        _heading = cha.getHeading();
        _mAtkSpd = cha.getMAtkSpd();
        _pAtkSpd = cha.getPAtkSpd();
        _moveMultiplier = cha.getMovementSpeedMultiplier();
        _runSpd = (int) Math.round(cha.getRunSpeed() / _moveMultiplier);
        _walkSpd = (int) Math.round(cha.getWalkSpeed() / _moveMultiplier);
        _swimRunSpd = (int) Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
        _swimWalkSpd = (int) Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
        _flyRunSpd = cha.isFlying() ? _runSpd : 0;
        _flyWalkSpd = cha.isFlying() ? _walkSpd : 0;
    }
    
    /**
     * Packet for Npcs
     */
    public static class NpcInfo extends AbstractNpcInfo
    {
        private final L2Npc _npc;
        private int _clanCrest = 0;
        private int _allyCrest = 0;
        private int _allyId = 0;
        private int _clanId = 0;
        private int _displayEffect = 0;
        
        public NpcInfo(L2Npc cha, L2Character attacker)
        {
            super(cha);
            _npc = cha;
            _idTemplate = cha.getTemplate().getDisplayId(); // On every subclass
            _rhand = cha.getRightHandItem(); // On every subclass
            _lhand = cha.getLeftHandItem(); // On every subclass
            _enchantEffect = cha.getEnchantEffect();
            _collisionHeight = cha.getCollisionHeight();// On every subclass
            _collisionRadius = cha.getCollisionRadius();// On every subclass
            _isAttackable = cha.isAutoAttackable(attacker);
            if (cha.getTemplate().isUsingServerSideName())
            {
                _name = cha.getName();// On every subclass
            }
            
            if (_npc.isInvisible())
            {
                _title = "Invisible";
            }
            else if (Config.L2JMOD_CHAMPION_ENABLE && cha.isChampion())
            {
                _title = (Config.L2JMOD_CHAMP_TITLE); // On every subclass
            }
            else if (cha.getTemplate().isUsingServerSideTitle())
            {
                _title = cha.getTemplate().getTitle(); // On every subclass
            }
            else
            {
                _title = cha.getTitle(); // On every subclass
            }
            
            if (Config.SHOW_NPC_LVL && (_npc instanceof L2MonsterInstance))
            {
                String t = "Lv " + cha.getLevel() + (cha.isAggressive() ? "*" : "");
                if (_title != null)
                {
                    t += " " + _title;
                }
                
                _title = t;
            }
            
            // npc crest of owning clan/ally of castle
            if ((cha instanceof L2NpcInstance) && cha.isInsideZone(ZoneId.TOWN) && (Config.SHOW_CREST_WITHOUT_QUEST || cha.getCastle().getShowNpcCrest()) && (cha.getCastle().getOwnerId() != 0))
            {
                int townId = TownManager.getTown(_x, _y, _z).getTownId();
                if ((townId != 33) && (townId != 22))
                {
                    L2Clan clan = ClanTable.getInstance().getClan(cha.getCastle().getOwnerId());
                    _clanCrest = clan.getCrestId();
                    _clanId = clan.getId();
                    _allyCrest = clan.getAllyCrestId();
                    _allyId = clan.getAllyId();
                }
            }
            
            _displayEffect = cha.getDisplayEffect();
        }
        
        @Override
        protected void writeImpl()
        {
            writeC(0x0c);
            writeD(_npc.getObjectId());
            writeD(_idTemplate + 1000000); // npctype id
            writeD(_isAttackable ? 1 : 0);
            writeD(_x);
            writeD(_y);
            writeD(_z);
            writeD(_heading);
            writeD(0x00);
            writeD(_mAtkSpd);
            writeD(_pAtkSpd);
            writeD(_runSpd);
            writeD(_walkSpd);
            writeD(_swimRunSpd);
            writeD(_swimWalkSpd);
            writeD(_flyRunSpd);
            writeD(_flyWalkSpd);
            writeD(_flyRunSpd);
            writeD(_flyWalkSpd);
            writeF(_moveMultiplier);
            writeF(_npc.getAttackSpeedMultiplier());
            writeF(_collisionRadius);
            writeF(_collisionHeight);
            writeD(_rhand); // right hand weapon
            writeD(_chest);
            writeD(_lhand); // left hand weapon
            writeC(1); // name above char 1=true ... ??
            writeC(_npc.isRunning() ? 1 : 0);
            writeC(_npc.isInCombat() ? 1 : 0);
            writeC(_npc.isAlikeDead() ? 1 : 0);
            writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation)
            writeD(-1); // High Five NPCString ID
            writeS(_name);
            writeD(-1); // High Five NPCString ID
            writeS(_title);
            writeD(0x00);
            writeD(0x00); // pvp flag
            writeD(0x00); // karma
            
            writeD(_npc.isInvisible() ? _npc.getAbnormalVisualEffects() | AbnormalVisualEffect.STEALTH.getMask() : _npc.getAbnormalVisualEffects());
            writeD(_clanId); // clan id
            writeD(_clanCrest); // crest id
            writeD(_allyId); // ally id
            writeD(_allyCrest); // all crest
            
            writeC(_npc.isInsideZone(ZoneId.WATER) ? 1 : _npc.isFlying() ? 2 : 0); // C2
            
            writeC(_npc.getTeam().getId());
            writeF(_collisionRadius);
            writeF(_collisionHeight);
            writeD(_enchantEffect); // C4
            writeD(_npc.isFlying() ? 1 : 0); // C6
            
            
            writeD(_npc.getColorEffect()); // CT1.5 Pet form and skills, Color effect
            writeC(_npc.isTargetable() ? 0x01 : 0x00);
            writeC(_npc.isShowName() ? 0x01 : 0x00);
            writeD(_npc.getAbnormalVisualEffectSpecial());
            writeD(_displayEffect);
        }
        
        /**
         * @param object
         */
    }
    
    public static class TrapInfo extends AbstractNpcInfo
    {
        private final L2TrapInstance _trap;
        
        public TrapInfo(L2TrapInstance cha, L2Character attacker)
        {
            super(cha);
            
            _trap = cha;
            _idTemplate = cha.getTemplate().getDisplayId();
            _isAttackable = cha.isAutoAttackable(attacker);
            _rhand = 0;
            _lhand = 0;
            _collisionHeight = _trap.getTemplate().getfCollisionHeight();
            _collisionRadius = _trap.getTemplate().getfCollisionRadius();
            if (cha.getTemplate().isUsingServerSideName())
            {
                _name = cha.getName();
            }
            _title = cha.getOwner() != null ? cha.getOwner().getName() : "";
        }
        
        @Override
        protected void writeImpl()
        {
            writeC(0x0c);
            writeD(_trap.getObjectId());
            writeD(_idTemplate + 1000000); // npctype id
            writeD(_isAttackable ? 1 : 0);
            writeD(_x);
            writeD(_y);
            writeD(_z);
            writeD(_heading);
            writeD(0x00);
            writeD(_mAtkSpd);
            writeD(_pAtkSpd);
            writeD(_runSpd);
            writeD(_walkSpd);
            writeD(_swimRunSpd);
            writeD(_swimWalkSpd);
            writeD(_flyRunSpd);
            writeD(_flyWalkSpd);
            writeD(_flyRunSpd);
            writeD(_flyWalkSpd);
            writeF(_moveMultiplier);
            writeF(_trap.getAttackSpeedMultiplier());
            writeF(_collisionRadius);
            writeF(_collisionHeight);
            writeD(_rhand); // right hand weapon
            writeD(_chest);
            writeD(_lhand); // left hand weapon
            writeC(1); // name above char 1=true ... ??
            writeC(1);
            writeC(_trap.isInCombat() ? 1 : 0);
            writeC(_trap.isAlikeDead() ? 1 : 0);
            writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation)
            writeD(-1); // High Five NPCString ID
            writeS(_name);
            writeD(-1); // High Five NPCString ID
            writeS(_title);
            writeD(0x01); // title color 0 = client default
            
            writeD(_trap.getPvpFlag());
            writeD(_trap.getKarma());
            
            writeD(_trap.isInvisible() ? _trap.getAbnormalVisualEffects() | AbnormalVisualEffect.STEALTH.getMask() : _trap.getAbnormalVisualEffects());
            writeD(0x00); // clan id
            writeD(0x00); // crest id
            writeD(0000); // C2
            writeD(0000); // C2
            writeC(0000); // C2
            
            writeC(_trap.getTeam().getId());
            
            writeF(_collisionRadius);
            writeF(_collisionHeight);
            writeD(0x00); // C4
            writeD(0x00); // C6
            writeD(0x00);
            writeD(0);// CT1.5 Pet form and skills
            writeC(0x01);
            writeC(0x01);
            writeD(0x00);
        }
    }
    
    /**
     * Packet for summons.
     */
    public static class SummonInfo extends AbstractNpcInfo
    {
        private final L2Summon _summon;
        private final int _form;
        private final int _val;
        
        public SummonInfo(L2Summon cha, L2Character attacker, int val)
        {
            super(cha);
            _summon = cha;
            _val = val;
            _form = cha.getFormId();
            
            _isAttackable = cha.isAutoAttackable(attacker);
            _rhand = cha.getWeapon();
            _lhand = 0;
            _chest = cha.getArmor();
            _enchantEffect = cha.getTemplate().getWeaponEnchant();
            _name = cha.getName();
            _title = (cha.getOwner() != null) && cha.getOwner().isOnline() ? cha.getOwner().getName() : "";
            _idTemplate = cha.getTemplate().getDisplayId();
            _collisionHeight = cha.getTemplate().getfCollisionHeight();
            _collisionRadius = cha.getTemplate().getfCollisionRadius();
            setInvisible(cha.isInvisible());
        }
        
        @Override
        protected void writeImpl()
        {
            boolean gmSeeInvis = false;
            if (isInvisible())
            {
                final L2PcInstance activeChar = getClient().getActiveChar();
                if ((activeChar != null) && activeChar.canOverrideCond(PcCondOverride.SEE_ALL_PLAYERS))
                {
                    gmSeeInvis = true;
                }
            }
            
            writeC(0x0c);
            writeD(_summon.getObjectId());
            writeD(_idTemplate + 1000000); // npctype id
            writeD(_isAttackable ? 1 : 0);
            writeD(_x);
            writeD(_y);
            writeD(_z);
            writeD(_heading);
            writeD(0x00);
            writeD(_mAtkSpd);
            writeD(_pAtkSpd);
            writeD(_runSpd);
            writeD(_walkSpd);
            writeD(_swimRunSpd);
            writeD(_swimWalkSpd);
            writeD(_flyRunSpd);
            writeD(_flyWalkSpd);
            writeD(_flyRunSpd);
            writeD(_flyWalkSpd);
            writeF(_moveMultiplier);
            writeF(_summon.getAttackSpeedMultiplier());
            writeF(_collisionRadius);
            writeF(_collisionHeight);
            writeD(_rhand); // right hand weapon
            writeD(_chest);
            writeD(_lhand); // left hand weapon
            writeC(0x01); // name above char 1=true ... ??
            writeC(0x01); // always running 1=running 0=walking
            writeC(_summon.isInCombat() ? 1 : 0);
            writeC(_summon.isAlikeDead() ? 1 : 0);
            writeC(_val); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation)
            writeD(-1); // High Five NPCString ID
            writeS(_name);
            writeD(-1); // High Five NPCString ID
            writeS(_title);
            
            writeD(_summon.getPvpFlag());
            writeD(_summon.getKarma());
            
            writeD(gmSeeInvis ? _summon.getAbnormalVisualEffects() | AbnormalVisualEffect.STEALTH.getMask() : _summon.getAbnormalVisualEffects());
            
            writeD(0x00); // clan id
            writeD(0x00); // crest id
            writeD(0x00); // C2
            writeD(0x00); // C2
            writeC(_summon.isInsideZone(ZoneId.WATER) ? 1 : _summon.isFlying() ? 2 : 0); // C2
            
            writeC(_summon.getTeam().getId());
            
            writeF(_collisionRadius);
            writeF(_collisionHeight);
            writeD(_enchantEffect); // C4
            writeD(0x00); // C6
            writeD(0x00);
            writeD(_form); // CT1.5 Pet form and skills
            writeC(0x01);
            writeC(0x01);
            writeD(_summon.getAbnormalVisualEffectSpecial());
        }
    }
}
 

 

 

 

And tell me exactly where i put 

 

 

if (_npc.isChampion())
			{
				writeC(0);
			}
			else
			{
				writeC(1);
			}

Help me this time, or give me a suggestion, I want to close this topic. And i want to solve it :((

Edited by InFocus
Link to comment
Share on other sites

  • 0

try this

 

-			writeC(_npc.getTeam().getId());
+			writeC(_npc.isChampion? Config.CHAMPION_AURA_TYPE : _npc.getTeam().getId());

 

Link to comment
Share on other sites

  • 0
15 hours ago, melron said:

try this

 


-			writeC(_npc.getTeam().getId());
+			writeC(_npc.isChampion? Config.CHAMPION_AURA_TYPE : _npc.getTeam().getId());

 

writeC(_npc.isChampion() ? Config.CHAMPION_AURA_TYPE : _npc.getTeam().getId());

and with this setting , 

http://DmF63w7.jpg

 

Link to comment
Share on other sites

  • 0

This one is the correct. If it does not work then, either the config is not parsed or the method for champion is wrong

Link to comment
Share on other sites

  • 0

Eh, you are showing us monsters.. but the config is for CHAMPION. Does those mobs are champions?! NO, I don't think so. So, until you don't find a champion monster, you can't say if it's working or not. So, simply change the line to 1 or 2, to give aura for all monsters - if you see the aura, the line is LEGIT and your champion config sux balls, you are wasting our time showing normal monster. Which means, you are...

Link to comment
Share on other sites

  • 0

When monster is a champion, you should see a title "Champion". Check champion settings, enable, chage chance, set proper level range. If it's broken, it's broken.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.



×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock