Jump to content
  • 0

Champion Aura


Question

Recommended Posts

  • 0
Posted

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

  • 0
Posted

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

  • 0
Posted

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. 

  • 0
Posted (edited)

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
  • 0
Posted

try this

 

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

 

  • 0
Posted
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

 

  • 0
Posted

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...

  • 0
Posted

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.

Guest
This topic is now closed to further replies.



  • Posts

    • Our website: MobileProxy.Space Telegram channel: Mobileproxy.space - mobile proxies Promo code for a 20% discount: fur-1AB-zyE-4ur
    • If you’re scraping SERPs, running rank trackers, or managing multiple ad accounts, a reliable residential proxy isn’t optional—it’s essential. After testing 7 providers for 3 months, here’s the honest breakdown for SEO/SEM: 🥇 BrightData – Best overall. Massive pool (72M+ IPs), pay-as-you-go, and integrates with Scrapy/Selenium. Expensive, but zero blocks on Google. 🥈 MoMoProxy – Best emerging contender. 50M+ real residential IPs covering 150+ countries. Excellent success rate on Google, Bing, and Yahoo. Clean IP reputation, low CAPTCHA rates, and surprisingly competitive pricing. Great for rank tracking and ad verification. 🥉 IPRoyal – Best value. Genuine P2P residential IPs at nearly half the cost. Low failure rate on Bing Ads & Google Maps. Oxylabs – Enterprise choice. Ideal for large-scale SEM (ad verification, auction insights). Overkill for solo SEOs. Smartproxy is solid for local rank tracking. Soax excels at CAPTCHA-heavy sites. Pro tip: Avoid “unlimited bandwidth” deals. Start with a small test balance.   For most SEOs, MoMoProxy (price-to-performance) + BrightData (unmatched scale) is the new winning combo.
    • Looking for high-performance proxies without breaking the bank? 💸 Stop overpaying for your proxy traffic! Welcome to Novproxy.com, your ultimate solution for premium, unbanable, and ultra-fast residential proxies! Whether you are doing web scraping, multi-accounting, gaming, or SEO monitoring, Novproxy provides the highest quality IPs at the market's lowest price. 👉 Get Started Now: https://novproxy.com?kwd=tt-max ⚡ Why Choose Novproxy? 💰 Unbeatable Pricing: Starting from just 0.5$/GB ! No hidden fees. 🌍 Global Coverage: Access to over 80,000,000+ active residential pools across 190+ countries & cities. ⚡ Lightning Fast & Stable: 99.9% Up-time with rotating or sticky sessions (custom times available). 🔒 100% Anonymous & Secure: Pure ISP residential IPs that look like real users. Easily bypass advanced anti-bot systems. 🛠️ User-Friendly Dashboard: Generate proxy lists in seconds (supports User:Pass or IP Whitelist). 🎯 Perfect For All Tasks: Game Botting & Multi-boxing (Lineage 2, WoW, etc.) Social Media & Account Management Web Scraping & Data Extraction Sneaker Coping & E-commerce No complicated KYC, instant setup after purchase! 🚀 Boost your connection speed and secure your privacy today! 🔗 Official Website: https://novproxy.com?kwd=tt-max
    • base on server resources and how many active players, should increase DB max connection (default MariaDB max connection is 151) and open files limit.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..