Jump to content
  • 0

Stuck After Attacking The Npc


Question

Posted

Hello,

 

I have problem, when attacking NPC (not mob) with skill for example gatekeeper in random zone, character gets stuck. You cant move, use skills, use /unstuck command or escape scrolls you have to reconnect. Pack is L2jAcis.

 

Please, help me to sort out this problem, thank you ;)

Recommended Posts

  • 0
Posted

1. Make npcs not attackable  :happyforever:

2. Was it inside L2Attackable or L2Npc? Who knows..  :forever alone like a boss:

3. CTRL + H  :okey:

  • 0
Posted

NPCs are non attackable, but when you try to attack, then you get stuck.

Then take a look in your console maybe some errors are appearing.

Or take a look inside your L2Character maybe it's there, dunno how aCis work but I guess...

  • 0
Posted

Yep, there is an error:

Client: [Character: Test - Account: zuper - IP: 178.16.42.147] - Failed reading: [C] RequestMagicSkillUse ; null
null

 

  • 0
Posted

I'm blind shooting but i guess it's inside L2Character, somewhere when it's trying to get the info of the Target... you must add a condition to handle that exception... like adding && !target.instanceof L2Npc or whatever...

  • 0
Posted

add nullchecks, focus on the costum codes you've added on RequestMagicSkillUse.java @ gameserver/network/clientpackets

  • 0
Posted

I'm blind shooting but i guess it's inside L2Character, somewhere when it's trying to get the info of the Target... you must add a condition to handle that exception... like adding && !target.instanceof L2Npc or whatever...

 

L2Npc is abstract class and I don't think that the developers left such hole on L2Character, it just comes from some badcoded costum code

  • 0
Posted (edited)

add nullchecks, focus on the costum codes you've added on RequestMagicSkillUse.java @ gameserver/network/clientpackets

who adds custom codes there  :y u no?:  xd

 

L2Npc is abstract class and I don't think that the developers left such hole on L2Character, it just comes from some badcoded costum code

Just guessing it can be inside L2Character coz always custom shiats modify things there, dunno if in aCis not but whatever, so long since i dont open eclipse Edited by ^Wyatt
  • 0
Posted
/*
 * 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 net.sf.l2j.gameserver.network.clientpackets;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.templates.skills.L2SkillType;

public final class RequestMagicSkillUse extends L2GameClientPacket
{
    private int _magicId;
    private boolean _ctrlPressed;
    private boolean _shiftPressed;
    
    @Override
    protected void readImpl()
    {
        _magicId = readD(); // Identifier of the used skill
        _ctrlPressed = readD() != 0; // True if it's a ForceAttack : Ctrl pressed
        _shiftPressed = readC() != 0; // True if Shift pressed
    }
    
    @Override
    protected void runImpl()
    {
        // Get the current L2PcInstance of the player
        final L2PcInstance activeChar = getClient().getActiveChar();
        if (activeChar == null)
            return;
        
        if (activeChar.isOutOfControl())
        {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
            return;
        }
        
        // Get the level of the used skill
        final int level = activeChar.getSkillLevel(_magicId);
        if (level <= 0)
        {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
            return;
        }
        
        // Get the L2Skill template corresponding to the skillID received from the client
        final L2Skill skill = SkillTable.getInstance().getInfo(_magicId, level);
        if (skill != null)
        {
            // If Alternate rule Karma punishment is set to true, forbid skill Return to player with Karma
            if (skill.getSkillType() == L2SkillType.RECALL && !Config.KARMA_PLAYER_CAN_TELEPORT && activeChar.getKarma() > 0)
                return;
            
            // players mounted on pets cannot use any toggle skills
            if (skill.isToggle() && activeChar.isMounted())
                return;
            
            activeChar.useMagic(skill, _ctrlPressed, _shiftPressed);
        }
        else
        {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
            _log.warning("No skill found with id " + _magicId + " and level " + level + ".");
        }
    }
}

Here is that code.

  • 0
Posted
/*
 * 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 net.sf.l2j.gameserver.network.clientpackets;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.templates.skills.L2SkillType;

public final class RequestMagicSkillUse extends L2GameClientPacket
{
    private int _magicId;
    private boolean _ctrlPressed;
    private boolean _shiftPressed;
    
    @Override
    protected void readImpl()
    {
        _magicId = readD(); // Identifier of the used skill
        _ctrlPressed = readD() != 0; // True if it's a ForceAttack : Ctrl pressed
        _shiftPressed = readC() != 0; // True if Shift pressed
    }
    
    @Override
    protected void runImpl()
    {
        // Get the current L2PcInstance of the player
        final L2PcInstance activeChar = getClient().getActiveChar();
        if (activeChar == null)
            return;
        
        if (activeChar.isOutOfControl())
        {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
            return;
        }
        
        // Get the level of the used skill
        final int level = activeChar.getSkillLevel(_magicId);
        if (level <= 0)
        {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
            return;
        }
        
        // Get the L2Skill template corresponding to the skillID received from the client
        final L2Skill skill = SkillTable.getInstance().getInfo(_magicId, level);
        if (skill != null)
        {
            // If Alternate rule Karma punishment is set to true, forbid skill Return to player with Karma
            if (skill.getSkillType() == L2SkillType.RECALL && !Config.KARMA_PLAYER_CAN_TELEPORT && activeChar.getKarma() > 0)
                return;
            
            // players mounted on pets cannot use any toggle skills
            if (skill.isToggle() && activeChar.isMounted())
                return;
            
            activeChar.useMagic(skill, _ctrlPressed, _shiftPressed);
        }
        else
        {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
            _log.warning("No skill found with id " + _magicId + " and level " + level + ".");
        }
    }
}

Here is that code.

 

 

this is okay, then the problem is at useMagic or some method from L2PcInstance trying to get something from null reference, such npes are hard to find so you have to recall what things you edited recentrly

 

 

who adds custom codes there  :y u no?:  xd

 

Just guessing it can be inside L2Character coz always custom shiats modify things there, dunno if in aCis not but whatever, so long since i dont open eclipse

 

 

I do, and alot

  • 0
Posted

I still place my bet to L2Character  :happyforever:

 

L2PcInstance's useMagic calls L2Character's beginCast so i stick to what I said before, its all related with some custom shit he added

  • 0
Posted (edited)

Simple suggestion, make NPC's to can't be attackable with skills also and problem will not exist anymore.

Edited by Stewie

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • THE CAMERA DISTORTS – AND THAT CAN EXPOSE YOU ▪ You look at the photo: “looks fine.” But the sensor has already altered it – and without that, the shot doesn’t exist. ▪ Rolling shutter. The frame is read line by line objects slightly “drift”, geometry isn’t perfect that’s not a bug – that’s the baseline. ▪ Sensor noise. Even in good lighting there’s still grain every sensor has its own signature too clean = unnatural. ▪ Aberrations. Color shifts appear near the edges lenses aren’t perfect, and it shows perfect edges with no shift are rare. ▪ Reality ≠ what the camera records. It always adds distortion. ▪ Want to know where your file is “too perfect”? Send it over – we’ll break it down for you. › TG: @mustang_service ( https:// t.me/ mustang_service ) › Channel: Mustang Service ( https:// t.me/ +JPpJCETg-xM1NjNl ) #editing #photoshop #distortion #verification #camera
    • We’re not trying to be “Reborn” or anyone else and you have copy the server concept,the reborn website,the reborn logo,the reborn community board html,lol trash
    • SOCNET is a universal service that combines a digital goods store, an SMM panel, a Telegram bot for purchasing Telegram Stars and a Telegram bot for renting virtual numbers. Here you will find accounts for TikTok, Instagram, Reddit, Twitter, Telegram, Facebook, LinkedIn, WhatsApp, SnapChat, YouTube, Google, Discord, email (Outlook, Hotmail, Gmail, Rambler, Firstmail and others), proxies, virtual servers, advertising accounts, access to ChatGPT 5, gift cards and premium subscriptions to numerous services — and all this at the best prices!   SOCNET STARS is a service that helps you quickly and profitably purchase Telegram Stars and subscribe to Telegram Premium. Using our Telegram bot you can buy Telegram Stars at the lowest prices on the market and use them to pay for gifts, reactions, donations and other features inside Telegram.   Our bot also features a NEW gaming feature — gift slots, where users can win valuable prizes: Telegram gifts, bonuses from our partners and the SOCNET company, stars and premium subscriptions. The game mechanics are completely transparent: no tricks, only real luck decides. You can try it at any time — bets start from just 1 ruble. We also provide the opportunity for a one-time free spin!   Available payment methods: LOLZTEAM, Crypto Bot, Cryptocurrency, Bank cards and SBP ⭐ Our online store ⭐ SOCNET.STORE ⭐ Telegram store ⭐ SOCNET.SHOP ⭐ Our SMM Panel for social media promotion ⭐ SOCNET.PRO ⭐ Our Telegram bot for purchasing Telegram Stars ⭐ SOCNET.CC ⭐ Our SMS Service ⭐ SOCNET.APP ✅ News resources: ➡ Telegram channel ➡ WhatsApp channel ➡ Discord server ✅ Contacts and support: ➡ Telegram support ➡ WhatsApp support ➡ Discord support: socnet_support ➡ Email support: help@socnet.pro We have been operating for a long time and have gathered a huge list of reviews about our work! Our huge list of positive and honest reviews is presented on our website! ⭐We invite you to COOPERATE and EARN with us ⭐ Want to sell your product or service in our stores and make money? Become our partner or suggest mutually beneficial cooperation? You can contact us via the CONTACTS listed in this topic. If you have any questions or problems, our fast customer support is ready to respond to your requests! Refunds for a service that does not fully meet the requirements or quality are issued only if a guarantee and warranty period were specified in the product description. In all other cases, refunds for the service will not be fully processed or issued! By purchasing such a service, you automatically agree to our refund policy for non-provided services! We currently accept Any type of cryptocurrency (Cryptomus, Binance Pay, CryptoBot), any bank cards (VISA, Mastercard, MIR Pay, SBP), LolzTeam Market, Wise, Revolut, Paypal Friends&Families. We value every customer and provide replacements for invalid accounts and services through our contact methods!
    • SOCNET is a universal service that combines a digital goods store, an SMM panel, a Telegram bot for purchasing Telegram Stars and a Telegram bot for renting virtual numbers. Here you will find accounts for TikTok, Instagram, Reddit, Twitter, Telegram, Facebook, LinkedIn, WhatsApp, SnapChat, YouTube, Google, Discord, email (Outlook, Hotmail, Gmail, Rambler, Firstmail and others), proxies, virtual servers, advertising accounts, access to ChatGPT 5, gift cards and premium subscriptions to numerous services — and all this at the best prices!   SOCNET STARS is a service that helps you quickly and profitably purchase Telegram Stars and subscribe to Telegram Premium. Using our Telegram bot you can buy Telegram Stars at the lowest prices on the market and use them to pay for gifts, reactions, donations and other features inside Telegram.   Our bot also features a NEW gaming feature — gift slots, where users can win valuable prizes: Telegram gifts, bonuses from our partners and the SOCNET company, stars and premium subscriptions. The game mechanics are completely transparent: no tricks, only real luck decides. You can try it at any time — bets start from just 1 ruble. We also provide the opportunity for a one-time free spin!   Available payment methods: LOLZTEAM, Crypto Bot, Cryptocurrency, Bank cards and SBP ⭐ Our online store ⭐ SOCNET.STORE ⭐ Telegram store ⭐ SOCNET.SHOP ⭐ Our SMM Panel for social media promotion ⭐ SOCNET.PRO ⭐ Our Telegram bot for purchasing Telegram Stars ⭐ SOCNET.CC ⭐ Our SMS Service ⭐ SOCNET.APP ✅ News resources: ➡ Telegram channel ➡ WhatsApp channel ➡ Discord server ✅ Contacts and support: ➡ Telegram support ➡ WhatsApp support ➡ Discord support: socnet_support ➡ Email support: help@socnet.pro We have been operating for a long time and have gathered a huge list of reviews about our work! Our huge list of positive and honest reviews is presented on our website! ⭐We invite you to COOPERATE and EARN with us ⭐ Want to sell your product or service in our stores and make money? Become our partner or suggest mutually beneficial cooperation? You can contact us via the CONTACTS listed in this topic. If you have any questions or problems, our fast customer support is ready to respond to your requests! Refunds for a service that does not fully meet the requirements or quality are issued only if a guarantee and warranty period were specified in the product description. In all other cases, refunds for the service will not be fully processed or issued! By purchasing such a service, you automatically agree to our refund policy for non-provided services! We currently accept Any type of cryptocurrency (Cryptomus, Binance Pay, CryptoBot), any bank cards (VISA, Mastercard, MIR Pay, SBP), LolzTeam Market, Wise, Revolut, Paypal Friends&Families. We value every customer and provide replacements for invalid accounts and services through our contact methods!
    • SOCNET is a universal service that combines a digital goods store, an SMM panel, a Telegram bot for purchasing Telegram Stars and a Telegram bot for renting virtual numbers. Here you will find accounts for TikTok, Instagram, Reddit, Twitter, Telegram, Facebook, LinkedIn, WhatsApp, SnapChat, YouTube, Google, Discord, email (Outlook, Hotmail, Gmail, Rambler, Firstmail and others), proxies, virtual servers, advertising accounts, access to ChatGPT 5, gift cards and premium subscriptions to numerous services — and all this at the best prices!   SOCNET STARS is a service that helps you quickly and profitably purchase Telegram Stars and subscribe to Telegram Premium. Using our Telegram bot you can buy Telegram Stars at the lowest prices on the market and use them to pay for gifts, reactions, donations and other features inside Telegram.   Our bot also features a NEW gaming feature — gift slots, where users can win valuable prizes: Telegram gifts, bonuses from our partners and the SOCNET company, stars and premium subscriptions. The game mechanics are completely transparent: no tricks, only real luck decides. You can try it at any time — bets start from just 1 ruble. We also provide the opportunity for a one-time free spin!   Available payment methods: LOLZTEAM, Crypto Bot, Cryptocurrency, Bank cards and SBP ⭐ Our online store ⭐ SOCNET.STORE ⭐ Telegram store ⭐ SOCNET.SHOP ⭐ Our SMM Panel for social media promotion ⭐ SOCNET.PRO ⭐ Our Telegram bot for purchasing Telegram Stars ⭐ SOCNET.CC ⭐ Our SMS Service ⭐ SOCNET.APP ✅ News resources: ➡ Telegram channel ➡ WhatsApp channel ➡ Discord server ✅ Contacts and support: ➡ Telegram support ➡ WhatsApp support ➡ Discord support: socnet_support ➡ Email support: help@socnet.pro We have been operating for a long time and have gathered a huge list of reviews about our work! Our huge list of positive and honest reviews is presented on our website! ⭐We invite you to COOPERATE and EARN with us ⭐ Want to sell your product or service in our stores and make money? Become our partner or suggest mutually beneficial cooperation? You can contact us via the CONTACTS listed in this topic. If you have any questions or problems, our fast customer support is ready to respond to your requests! Refunds for a service that does not fully meet the requirements or quality are issued only if a guarantee and warranty period were specified in the product description. In all other cases, refunds for the service will not be fully processed or issued! By purchasing such a service, you automatically agree to our refund policy for non-provided services! We currently accept Any type of cryptocurrency (Cryptomus, Binance Pay, CryptoBot), any bank cards (VISA, Mastercard, MIR Pay, SBP), LolzTeam Market, Wise, Revolut, Paypal Friends&Families. We value every customer and provide replacements for invalid accounts and services through our contact methods!
  • 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..