Jump to content

Recommended Posts

Posted (edited)

dual_blue.jpgdual_red.jpgfist_red.jpghero.jpg

 

 

 

 

 
The problem exists only in dual weapons, fists.
I want to shine other weapons too.
 
My weapongrp.dat
LineageEffect.w_vari_r4_004_a    LineageEffect.w_vari_r4_004_a    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.000000    2.000000    2.000000    2.000000

 

 

 

Info :

 

Chronicle : Interlude

Pack Files : L2jFrozen "Last Rev"

Edited by Shilien
Posted

Bcs the grp is done for 1 handed weapon. Copy other dual weapon grp and edit it to match your effect and glow size.

Posted (edited)
0    10034    1    1    6    1    0    SHEV_antaras_cutter_m00.SHEV_antaras_cutter_m00    SHEV_antaras_cutter_m00.SHEV_antaras_cutter_m00        ioioioii_weapon_fire.cutter.SHEV_BoosWeapon_cutter_01    ioioioii_weapon_fire.cutter.SHEV_BoosWeapon_cutter_01        ioioioii_weapon_fire.icons.weapon_antaras_dual_sword_i01    ioioioii_weapon_fire.icons.weapon_antaras_dual_sword_i01    ioioioii_weapon_fire.icons.weapon_antaras_dual_sword_i01            -1    2080    47    1    0    14    3    2    SHEV_antaras_cutter_m00.SHEV_antaras_cutter_m00    SHEV_antaras_cutter_m00.SHEV_antaras_cutter_m00    2    ioioioii_weapon_fire.cutter.SHEV_BoosWeapon_cutter_01    ioioioii_weapon_fire.cutter.SHEV_BoosWeapon_cutter_01        4    ItemSound.public_sword_shing_8    ItemSound.sword_great_4    ItemSound.sword_mid_2    ItemSound.public_sword_shing_4    ItemSound.itemdrop_dualsword    ItemSound.itemequip_dualsword        10    342    132    8    5    8    0    0    0    0    325    0    1    1    1000    0    -1    0    LineageEffect.w_vari_r4_004_a    LineageEffect.w_vari_r4_004_a    2.000000    2.000000    2.000000    2.000000    2.000000    2.000000    2.000000    2.000000    2.000000    2.000000    Lineageweapons.rangesample    Lineageweapons.rangesample    1.400000    0.800000    0.800000    1.500000    0.800000    0.800000    12.000000    0.000000    0.000000    11.500000    0.000000    0.000000    6    4    -1    -1    ioioioii_weapon_fire.icons.weapon_antaras_dual_sword_i01    ioioioii_weapon_fire.icons.weapon_antaras_dual_sword_i01    ioioioii_weapon_fire.icons.weapon_antaras_dual_sword_i01    



and not working...

 

I downloaded the new system and checked standard hero weapon and the same problem is.

Maybe something in the files l2jfrozen is wrong?

Edited by Shilien
Posted (edited)

Now I know that nothing is on the client side and weapongrp.dat.
This is something in the files l2jfrozen (java code).
But where I do not know AugmentationData.java? L2Weapon.java? L2WeaponType?

Edited by Shilien
Posted (edited)

Can here somewhere in the code is an error?

 

l2weapon.java

 

 

 

 

/*
* L2jFrozen Project - www.l2jfrozen.com
*
* 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 2, 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.templates;

import java.io.IOException;
import java.util.List;

import javolution.util.FastList;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.datatables.SkillTable;
import com.l2jfrozen.gameserver.handler.ISkillHandler;
import com.l2jfrozen.gameserver.handler.SkillHandler;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Effect;
import com.l2jfrozen.gameserver.model.L2Skill;
import com.l2jfrozen.gameserver.model.L2Skill.SkillType;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.quest.Quest;
import com.l2jfrozen.gameserver.skills.Env;
import com.l2jfrozen.gameserver.skills.conditions.ConditionGameChance;
import com.l2jfrozen.gameserver.skills.funcs.Func;
import com.l2jfrozen.gameserver.skills.funcs.FuncTemplate;

/**
* This class is dedicated to the management of weapons.
* @version $Revision: 1.4.2.3.2.5 $ $Date: 2005/04/02 15:57:51 $
*/
public final class L2Weapon extends L2Item
{
    private final int _soulShotCount;
    private final int _spiritShotCount;
    private final int _pDam;
    private final int _rndDam;
    private final int _critical;
    private final double _hitModifier;
    private final int _avoidModifier;
    private final int _shieldDef;
    private final double _shieldDefRate;
    private final int _atkSpeed;
    private final int _atkReuse;
    private final int _mpConsume;
    private final int _mDam;
    private L2Skill _itemSkill = null; // for passive skill
    private L2Skill _enchant4Skill = null; // skill that activates when item is enchanted +4 (for duals)
    
    // Attached skills for Special Abilities
    protected L2Skill[] _skillsOnCast;
    protected L2Skill[] _skillsOnCrit;
    
    /**
     * Constructor for Weapon.<BR>
     * <BR>
     * <U><I>Variables filled :</I></U><BR>
     * <LI>_soulShotCount & _spiritShotCount</LI> <LI>_pDam & _mDam & _rndDam</LI> <LI>_critical</LI> <LI>_hitModifier</LI> <LI>_avoidModifier</LI> <LI>_shieldDes & _shieldDefRate</LI> <LI>_atkSpeed & _AtkReuse</LI> <LI>_mpConsume</LI>
     * @param type : L2ArmorType designating the type of armor
     * @param set : StatsSet designating the set of couples (key,value) caracterizing the armor
     * @see L2Item constructor
     */
    public L2Weapon(final L2WeaponType type, final StatsSet set)
    {
        super(type, set);
        _soulShotCount = set.getInteger("soulshots");
        _spiritShotCount = set.getInteger("spiritshots");
        _pDam = set.getInteger("p_dam");
        _rndDam = set.getInteger("rnd_dam");
        _critical = set.getInteger("critical");
        _hitModifier = set.getDouble("hit_modify");
        _avoidModifier = set.getInteger("avoid_modify");
        _shieldDef = set.getInteger("shield_def");
        _shieldDefRate = set.getDouble("shield_def_rate");
        _atkSpeed = set.getInteger("atk_speed");
        _atkReuse = set.getInteger("atk_reuse", type == L2WeaponType.BOW ? 1500 : 0);
        _mpConsume = set.getInteger("mp_consume");
        _mDam = set.getInteger("m_dam");
        
        int sId = set.getInteger("item_skill_id");
        int sLv = set.getInteger("item_skill_lvl");
        if (sId > 0 && sLv > 0)
        {
            _itemSkill = SkillTable.getInstance().getInfo(sId, sLv);
        }
        
        sId = set.getInteger("enchant4_skill_id");
        sLv = set.getInteger("enchant4_skill_lvl");
        if (sId > 0 && sLv > 0)
        {
            _enchant4Skill = SkillTable.getInstance().getInfo(sId, sLv);
        }
        
        sId = set.getInteger("onCast_skill_id");
        sLv = set.getInteger("onCast_skill_lvl");
        int sCh = set.getInteger("onCast_skill_chance");
        if (sId > 0 && sLv > 0 && sCh > 0)
        {
            final L2Skill skill = SkillTable.getInstance().getInfo(sId, sLv);
            skill.attach(new ConditionGameChance(sCh), true);
            attachOnCast(skill);
        }
        
        sId = set.getInteger("onCrit_skill_id");
        sLv = set.getInteger("onCrit_skill_lvl");
        sCh = set.getInteger("onCrit_skill_chance");
        if (sId > 0 && sLv > 0 && sCh > 0)
        {
            final L2Skill skill = SkillTable.getInstance().getInfo(sId, sLv);
            skill.attach(new ConditionGameChance(sCh), true);
            attachOnCrit(skill);
        }
    }
    
    /**
     * Returns the type of Weapon
     * @return L2WeaponType
     */
    @Override
    public L2WeaponType getItemType()
    {
        return (L2WeaponType) super._type;
    }
    
    /**
     * Returns the ID of the Etc item after applying the mask.
     * @return int : ID of the Weapon
     */
    @Override
    public int getItemMask()
    {
        return getItemType().mask();
    }
    
    /**
     * Returns the quantity of SoulShot used.
     * @return int
     */
    public int getSoulShotCount()
    {
        return _soulShotCount;
    }
    
    /**
     * Returns the quatity of SpiritShot used.
     * @return int
     */
    public int getSpiritShotCount()
    {
        return _spiritShotCount;
    }
    
    /**
     * Returns the physical damage.
     * @return int
     */
    public int getPDamage()
    {
        return _pDam;
    }
    
    /**
     * Returns the random damage inflicted by the weapon
     * @return int
     */
    public int getRandomDamage()
    {
        return _rndDam;
    }
    
    /**
     * Returns the attack speed of the weapon
     * @return int
     */
    public int getAttackSpeed()
    {
        return _atkSpeed;
    }
    
    /**
     * Return the Attack Reuse Delay of the L2Weapon.<BR>
     * <BR>
     * @return int
     */
    public int getAttackReuseDelay()
    {
        return _atkReuse;
    }
    
    /**
     * Returns the avoid modifier of the weapon
     * @return int
     */
    public int getAvoidModifier()
    {
        return _avoidModifier;
    }
    
    /**
     * Returns the rate of critical hit
     * @return int
     */
    public int getCritical()
    {
        return _critical;
    }
    
    /**
     * Returns the hit modifier of the weapon
     * @return double
     */
    public double getHitModifier()
    {
        return _hitModifier;
    }
    
    /**
     * Returns the magical damage inflicted by the weapon
     * @return int
     */
    public int getMDamage()
    {
        return _mDam;
    }
    
    /**
     * Returns the MP consumption with the weapon
     * @return int
     */
    public int getMpConsume()
    {
        return _mpConsume;
    }
    
    /**
     * Returns the shield defense of the weapon
     * @return int
     */
    public int getShieldDef()
    {
        return _shieldDef;
    }
    
    /**
     * Returns the rate of shield defense of the weapon
     * @return double
     */
    public double getShieldDefRate()
    {
        return _shieldDefRate;
    }
    
    /**
     * Returns passive skill linked to that weapon
     * @return
     */
    public L2Skill getSkill()
    {
        return _itemSkill;
    }
    
    /**
     * Returns skill that player get when has equiped weapon +4 or more (for duals SA)
     * @return
     */
    public L2Skill getEnchant4Skill()
    {
        return _enchant4Skill;
    }
    
    /**
     * Returns array of Func objects containing the list of functions used by the weapon
     * @param instance : L2ItemInstance pointing out the weapon
     * @param player : L2Character pointing out the player
     * @return Func[] : array of functions
     */
    @Override
    public Func[] getStatFuncs(final L2ItemInstance instance, final L2Character player)
    {
        final List<Func> funcs = new FastList<>();
        if (_funcTemplates != null)
        {
            for (final FuncTemplate t : _funcTemplates)
            {
                final Env env = new Env();
                env.player = player;
                env.item = instance;
                final Func f = t.getFunc(env, instance);
                if (f != null)
                {
                    funcs.add(f);
                }
            }
        }
        return funcs.toArray(new Func[funcs.size()]);
    }
    
    /**
     * Returns effects of skills associated with the item to be triggered onHit.
     * @param caster : L2Character pointing out the caster
     * @param target : L2Character pointing out the target
     * @param crit : boolean tells whether the hit was critical
     * @return L2Effect[] : array of effects generated by the skill
     */
    public L2Effect[] getSkillEffects(final L2Character caster, final L2Character target, final boolean crit)
    {
        if (_skillsOnCrit == null || !crit)
            return _emptyEffectSet;
        final List<L2Effect> effects = new FastList<>();
        
        for (final L2Skill skill : _skillsOnCrit)
        {
            if (target.isRaid() && (skill.getSkillType() == SkillType.CONFUSION || skill.getSkillType() == SkillType.MUTE || skill.getSkillType() == SkillType.PARALYZE || skill.getSkillType() == SkillType.ROOT))
            {
                continue; // These skills should not work on RaidBoss
            }
            
            if (!skill.checkCondition(caster, target, true))
            {
                continue; // Skill condition not met
            }
            
            if (target.getFirstEffect(skill.getId()) != null)
            {
                target.getFirstEffect(skill.getId()).exit(false);
            }
            for (final L2Effect e : skill.getEffects(caster, target, false, false, false))
            {
                effects.add(e);
            }
        }
        if (effects.size() == 0)
            return _emptyEffectSet;
        return effects.toArray(new L2Effect[effects.size()]);
    }
    
    /**
     * Returns effects of skills associated with the item to be triggered onCast.
     * @param caster : L2Character pointing out the caster
     * @param target : L2Character pointing out the target
     * @param trigger : L2Skill pointing out the skill triggering this action
     * @return L2Effect[] : array of effects generated by the skill
     */
    public boolean getSkillEffects(final L2Character caster, final L2Character target, final L2Skill trigger)
    {
        boolean output = false;
        
        if (_skillsOnCast == null)
            return output;
        
        // return _emptyEffectSet;
        // List<L2Effect> effects = new FastList<L2Effect>();
        
        for (final L2Skill skill : _skillsOnCast)
        {
            if (trigger.isOffensive() != skill.isOffensive())
            {
                continue; // Trigger only same type of skill
            }
            
            if (trigger.getId() >= 1320 && trigger.getId() <= 1322)
            {
                continue; // No buff with Common and Dwarven Craft
            }
            
            if (trigger.isPotion())
            {
                continue; // No buff with potions
            }
            
            if (target.isRaid() && (skill.getSkillType() == SkillType.CONFUSION || skill.getSkillType() == SkillType.MUTE || skill.getSkillType() == SkillType.PARALYZE || skill.getSkillType() == SkillType.ROOT))
            {
                continue; // These skills should not work on RaidBoss
            }
            
            if (trigger.isToggle()/* && skill.getSkillType() == SkillType.BUFF */)
            {
                continue; // No buffing with toggle skills
            }
            
            if (!skill.checkCondition(caster, target, true)) // check skill condition and chance
            {
                continue; // Skill condition not met
            }
            
            try
            {
                // Get the skill handler corresponding to the skill type
                final ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getSkillType());
                
                final L2Character[] targets = new L2Character[1];
                targets[0] = target;
                
                // Launch the magic skill and calculate its effects
                if (handler != null)
                {
                    handler.useSkill(caster, skill, targets);
                }
                else
                {
                    skill.useSkill(caster, targets);
                }
                
                if (caster instanceof L2PcInstance && target instanceof L2NpcInstance)
                {
                    for (final Quest quest : ((L2NpcInstance) target).getTemplate().getEventQuests(Quest.QuestEventType.ON_SKILL_USE))
                    {
                        quest.notifySkillUse((L2NpcInstance) target, (L2PcInstance) caster, skill);
                    }
                }
                
                output = true;
            }
            catch (final IOException e)
            {
                if (Config.ENABLE_ALL_EXCEPTIONS)
                    e.printStackTrace();
            }
        }
        // if(effects.size() == 0)
        // return _emptyEffectSet;
        // return effects.toArray(new L2Effect[effects.size()]);
        
        return output;
    }
    
    /**
     * Add the L2Skill skill to the list of skills generated by the item triggered by critical hit
     * @param skill : L2Skill
     */
    public void attachOnCrit(final L2Skill skill)
    {
        if (_skillsOnCrit == null)
        {
            _skillsOnCrit = new L2Skill[]
            {
                skill
            };
        }
        else
        {
            final int len = _skillsOnCrit.length;
            final L2Skill[] tmp = new L2Skill[len + 1];
            // Definition : arraycopy(array source, begins copy at this position of source, array destination, begins copy at this position in dest,
            // number of components to be copied)
            System.arraycopy(_skillsOnCrit, 0, tmp, 0, len);
            tmp[len] = skill;
            _skillsOnCrit = tmp;
        }
    }
    
    /**
     * Add the L2Skill skill to the list of skills generated by the item triggered by casting spell
     * @param skill : L2Skill
     */
    public void attachOnCast(final L2Skill skill)
    {
        if (_skillsOnCast == null)
        {
            _skillsOnCast = new L2Skill[]
            {
                skill
            };
        }
        else
        {
            final int len = _skillsOnCast.length;
            final L2Skill[] tmp = new L2Skill[len + 1];
            // Definition : arraycopy(array source, begins copy at this position of source, array destination, begins copy at this position in dest,
            // number of components to be copied)
            System.arraycopy(_skillsOnCast, 0, tmp, 0, len);
            tmp[len] = skill;
            _skillsOnCast = tmp;
        }
    }
}

 

 


Edited by Shilien
Posted

I as a player i see only one weapon glow.
Player who looks at me sees that shines on the two weapons ...

 

 

Can here somewhere in the code is an error?

 

UserInfo.java

 

 

 

/*

 * L2jFrozen Project - www.l2jfrozen.com

 *

 * 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 2, 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, write to the Free Software

 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA

 * 02111-1307, USA.

 *

 * http://www.gnu.org/copyleft/gpl.html

 */

package com.l2jfrozen.gameserver.network.serverpackets;



import java.util.Map;



import com.l2jfrozen.Config;

import com.l2jfrozen.gameserver.datatables.sql.NpcTable;

import com.l2jfrozen.gameserver.managers.CursedWeaponsManager;

import com.l2jfrozen.gameserver.model.Inventory;

import com.l2jfrozen.gameserver.model.L2Summon;

import com.l2jfrozen.gameserver.model.actor.instance.L2CubicInstance;

import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;

import com.l2jfrozen.gameserver.templates.L2NpcTemplate;



/**

 * 0000: 04 03 15 00 00 77 ff 00 00 80 f1 ff ff 00 00 00 .....w.......... 0010: 00 2a 89 00 4c 43 00 61 00 6c 00 61 00 64 00 6f .*..LC.a.l.a.d.o 0020: 00 6e 00 00 00 01 00 00 00 00 00 00 00 19 00 00 .n.............. 0030: 00 0d 00 00 00 ee 81 02 00 15 00 00 00 18 00 00 ................ 0040: 00 19

 * 00 00 00 25 00 00 00 17 00 00 00 28 00 00 .....%.......(.. 0050: 00 14 01 00 00 14 01 00 00 02 01 00 00 02 01 00 ................ 0060: 00 fa 09 00 00 81 06 00 00 26 34 00 00 2e 00 00 .........&4..... 0070: 00 00 00 00 00 db 9f a1 41 93 26 64 41 de c8 31 ........A.&dA..1 0080: 41 ca 73 c0 41 d5

 * 22 d0 41 83 bd 41 41 81 56 10 A.s.A.".A..AA.V. 0090: 41 00 00 00 00 27 7d 30 41 69 aa e0 40 b4 fb d3 A....'}0Ai..@... 00a0: 41 91 f9 63 41 00 00 00 00 81 56 10 41 00 00 00 A..cA.....V.A... 00b0: 00 71 00 00 00 71 00 00 00 76 00 00 00 74 00 00 .q...q...v...t.. 00c0: 00 74 00 00 00 2a 00 00 00 e8

 * 02 00 00 00 00 00 .t...*.......... 00d0: 00 5f 04 00 00 ac 01 00 00 cf 01 00 00 62 04 00 ._...........b.. 00e0: 00 00 00 00 00 e8 02 00 00 0b 00 00 00 52 01 00 .............R.. 00f0: 00 4d 00 00 00 2a 00 00 00 2f 00 00 00 29 00 00 .M...*.../...).. 0100: 00 12 00 00 00 82 01 00 00 52 01 00 00 53

 * 00 00 .........R...S.. 0110: 00 00 00 00 00 00 00 00 00 7a 00 00 00 55 00 00 .........z...U.. 0120: 00 32 00 00 00 32 00 00 00 00 00 00 00 00 00 00 .2...2.......... 0130: 00 00 00 00 00 00 00 00 00 a4 70 3d 0a d7 a3 f0 ..........p=.... 0140: 3f 64 5d dc 46 03 78 f3 3f 00 00 00 00 00 00 1e

 * ?d].F.x.?....... 0150: 40 00 00 00 00 00 00 38 40 02 00 00 00 01 00 00 @......8@....... 0160: 00 00 00 00 00 00 00 00 00 00 00 c1 0c 00 00 01 ................ 0170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0180: 00 00 00 00 ....

 * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddcccdd (h) dddddSddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ffffddddSdddddcccddh (h) c dc hhdh

 * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddddcccddh (h) c dc hhdh ddddc c dcc cddd d (from 654) but it actually reads dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddddcccddh (h) c dc *dddddddd* hhdh ddddc dcc

 * cddd d *...*: here i am not sure at least it looks like it reads that much data (32 bytes), not sure about the format inside because it is not read thanks to the ususal

 * parsingfunctiondddddSddddQddddddddddddddddddddddddddddddddddddddddddddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddddddddddddddddffffddddSdddddcccddh [h] c dc d hhdh ddddc c dcc cddd d c dd d d

 * @version $Revision: 1.14.2.4.2.12 $ $Date: 2005/04/11 10:05:55 $

 */

public class UserInfo extends L2GameServerPacket

{

    private static final String _S__04_USERINFO = "[S] 04 UserInfo";

    private final L2PcInstance _activeChar;

    private final int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd;

    private int _flRunSpd;

    private int _flWalkSpd;

    private int _flyRunSpd;

    private int _flyWalkSpd;

    private int _relation;

    private final float _moveMultiplier;

    

    public boolean _critical_test = false;

    

    /**

     * @param character

     */

    public UserInfo(final L2PcInstance character)

    {

        _activeChar = character;

        

        _moveMultiplier = _activeChar.getMovementSpeedMultiplier();

        _runSpd = (int) (_activeChar.getRunSpeed() / _moveMultiplier);

        _walkSpd = (int) (_activeChar.getWalkSpeed() / _moveMultiplier);

        _swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;

        _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;

        _relation = _activeChar.isClanLeader() ? 0x40 : 0;

        

        if (_activeChar.getSiegeState() == 1)

        {

            _relation |= 0x180;

        }

        if (_activeChar.getSiegeState() == 2)

        {

            _relation |= 0x80;

        }

    }

    

    @Override

    protected final void writeImpl()

    {

        writeC(0x04);

        

        if (!_critical_test)

        {

            

            writeD(_activeChar.getX());

            writeD(_activeChar.getY());

            writeD(_activeChar.getZ());

            writeD(_activeChar.getHeading());

            

        }

        else

        { // critical values

        

            writeD(-999999999);

            writeD(-999999999);

            writeD(-999999999);

            writeD(-999999999);

            writeD(-999999999); // one more to change the UserInfo packet size

            

        }

        

        writeD(_activeChar.getObjectId());

        writeS(_activeChar.getName());

        writeD(_activeChar.getRace().ordinal());

        writeD(_activeChar.getAppearance().getSex() ? 1 : 0);

        

        if (_activeChar.getClassIndex() == 0)

        {

            writeD(_activeChar.getClassId().getId());

        }

        else

        {

            writeD(_activeChar.getBaseClass());

        }

        

        writeD(_activeChar.getLevel());

        writeQ(_activeChar.getExp());

        writeD(_activeChar.getSTR());

        writeD(_activeChar.getDEX());

        writeD(_activeChar.getCON());

        writeD(_activeChar.getINT());

        writeD(_activeChar.getWIT());

        writeD(_activeChar.getMEN());

        writeD(_activeChar.getMaxHp());

        writeD((int) _activeChar.getCurrentHp());

        writeD(_activeChar.getMaxMp());

        writeD((int) _activeChar.getCurrentMp());

        writeD(_activeChar.getSp());

        writeD(_activeChar.getCurrentLoad());

        writeD(_activeChar.getMaxLoad());

        

        writeD(_activeChar.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equippe

        

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));

        writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));

        

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));

        writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));

        

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        writeH(0x00);

        

        writeD(_activeChar.getPAtk(null));

        writeD(_activeChar.getPAtkSpd());

        writeD(_activeChar.getPDef(null));

        writeD(_activeChar.getEvasionRate(null));

        writeD(_activeChar.getAccuracy());

        writeD(_activeChar.getCriticalHit(null, null));

        writeD(_activeChar.getMAtk(null, null));

        

        writeD(_activeChar.getMAtkSpd());

        writeD(_activeChar.getPAtkSpd());

        

        writeD(_activeChar.getMDef(null, null));

        

        writeD(_activeChar.getPvpFlag()); // 0-non-pvp 1-pvp = violett name

        writeD(_activeChar.getKarma());

        

        writeD(_runSpd);

        writeD(_walkSpd);

        writeD(_swimRunSpd); // swimspeed

        writeD(_swimWalkSpd); // swimspeed

        writeD(_flRunSpd);

        writeD(_flWalkSpd);

        writeD(_flyRunSpd);

        writeD(_flyWalkSpd);

        writeF(_moveMultiplier);

        writeF(_activeChar.getAttackSpeedMultiplier());

        

        final L2Summon pet = _activeChar.getPet();

        if (_activeChar.getMountType() != 0 && pet != null)

        {

            writeF(pet.getTemplate().collisionRadius);

            writeF(pet.getTemplate().collisionHeight);

        }

        else

        {

            writeF(_activeChar.getBaseTemplate().collisionRadius);

            writeF(_activeChar.getBaseTemplate().collisionHeight);

        }

        

        writeD(_activeChar.getAppearance().getHairStyle());

        writeD(_activeChar.getAppearance().getHairColor());

        writeD(_activeChar.getAppearance().getFace());

        writeD(_activeChar.isGM() ? 1 : 0); // builder level

        

        String title = _activeChar.getTitle();

        if (_activeChar.getAppearance().getInvisible() && _activeChar.isGM())

        {

            title = "Invisible";

        }

        if (_activeChar.getPoly().isMorphed())

        {

            final L2NpcTemplate polyObj = NpcTable.getInstance().getTemplate(_activeChar.getPoly().getPolyId());

            if (polyObj != null)

            {

                title += " - " + polyObj.name;

            }

        }

        writeS(title);

        

        writeD(_activeChar.getClanId());

        writeD(_activeChar.getClanCrestId());

        writeD(_activeChar.getAllyId());

        writeD(_activeChar.getAllyCrestId()); // ally crest id

        // 0x40 leader rights

        // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader)

        writeD(_relation);

        writeC(_activeChar.getMountType()); // mount type

        writeC(_activeChar.getPrivateStoreType());

        writeC(_activeChar.hasDwarvenCraft() ? 1 : 0);

        writeD(_activeChar.getPkKills());

        writeD(_activeChar.getPvpKills());

        

        final Map<Integer, L2CubicInstance> cubics = _activeChar.getCubics();

        writeH(cubics.size());

        for (final Integer id : cubics.keySet())

        {

            writeH(id);

        }

        

        writeC(_activeChar.isInPartyMatchRoom() ? 1 : 0);

        

        writeD(_activeChar.getAbnormalEffect());

        writeC(0x00); // unk

        

        writeD(_activeChar.getClanPrivileges());

        

        writeH(_activeChar.getRecomLeft()); // c2 recommendations remaining

        writeH(_activeChar.getRecomHave()); // c2 recommendations received

        writeD(0x00); // FIXME: MOUNT NPC ID

        writeH(_activeChar.getInventoryLimit());

        

        writeD(_activeChar.getClassId().getId());

        writeD(0x00); // FIXME: special effects? circles around player...

        writeD(_activeChar.getMaxCp());

        writeD((int) _activeChar.getCurrentCp());

        writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());

        

        if (_activeChar.getTeam() == 1)

        {

            writeC(0x01); // team circle around feet 1= Blue, 2 = red

        }

        else if (_activeChar.getTeam() == 2)

        {

            writeC(0x02); // team circle around feet 1= Blue, 2 = red

        }

        else

        {

            writeC(0x00); // team circle around feet 1= Blue, 2 = red

        }

        

        writeD(_activeChar.getClanCrestLargeId());

        writeC(_activeChar.isNoble() ? 1 : 0); // 0x01: symbol on char menu ctrl+I

        writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) || _activeChar.getIsPVPHero()) ? 1 : 0); // 0x01: Hero Aura

        

        writeC(_activeChar.isFishing() ? 1 : 0); // Fishing Mode

        writeD(_activeChar.GetFishx()); // fishing x

        writeD(_activeChar.GetFishy()); // fishing y

        writeD(_activeChar.GetFishz()); // fishing z

        writeD(_activeChar.getAppearance().getNameColor());

        

        writeC(_activeChar.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window

        

        writeD(_activeChar.getPledgeClass()); // changes the text above CP on Status Window

        writeD(_activeChar.getPledgeType()); // TODO: PLEDGE TYPE

        

        writeD(_activeChar.getAppearance().getTitleColor());

        

        if (_activeChar.isCursedWeaponEquiped())

        {

            writeD(CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquipedId()));

        }

        else

        {

            writeD(0x00);

        }

    }

    

    /*

     * (non-Javadoc)

     * @see com.l2jfrozen.gameserver.serverpackets.ServerBasePacket#getType()

     */

    @Override

    public String getType()

    {

        return _S__04_USERINFO;

    }

}

 

 

 

Guest
This topic is now closed to further replies.


×
×
  • Create New...