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

    • 🎁 Double the Impact, Half the Cost! from 25/10/2025 until 25/12/2025 Renew your Donation Panel now and save 50% because supporting others should reward you too. 💡 Use code BLACKFRIDAY at checkout! https://hopzone.eu/store/product/26-donate-panel-v5/   About Donate Panel v5 PAYMENT IN EASY 5 STEPS Login with your character name. Select the donation service (Paypal Stripe Payeer MercadoPago 🆕). Select the amount of payment. Pay. 😎 Automatically recieve the reward ingame (and yes) while he is online! 🤯 PAYMENT METHODS Paypal Stripe accepts credit cards, debit cards, ACH transfers, Apple Pay, Google Pay, Microsoft Pay, and various local payment methods from around the world. Payeer accepts BTC, LTC, ETH, DASH, BCH, USD, EUR, RUB wallets MercadoPago accepts ARS, BRL, CLP, MXN, COP, PEN, UYU. PROTECTION Full SSL website (can be forced by htaccess) XSS Protection just in case. Remove vulnerability headers in htaccess level Session Validation COOKIE, POST, GET global inputs are sanitized SQL Injection protection Query String protetion Prepared statements of PDO driver (no sql injection there) Google Invisible Captcha v3 (NEW) Last but not least security through obscurity SEO & PUBLIC MANAGEMENT SEO Friendly urls (in htaccess level) Google Analytics and GTAG Code ready. Terms of use ready to go Refund policy ready to go Contact All the TERMS text are showing config dynamic item images/text with server's name and more OPTIMIZATION AND SPEED Zip Content (faster load) Memory save (unloading global vars) Using CDN’s for bootstrap Scripts are loaded in footer Images are soft to max 10kb Small and smart organized code style FUNCTIONALITIES Multilanguage (4 languages so far) EN ES NL EL (Easy to add more) Payment methods Paypal, Stripe, Payeer and MercadoPago After payment or cancel the user is redirected back to “Thank you” page. TECHNOLOGIES Bootstrap 5x CSS PHP 5.6+ (for l2off) and PHP 7.4+ (for java) Extensions for php: MySQL (L2Java), pdo_dblib(L2OFF), pdo_sqlsrv(L2OFF), mssql_connect (L2OFF) and PDO Drivers that support MariaDB, MySQL, MsSQL. SYSTEMS Stripe and MercadoPago supports sandbox and live. Detailed and seperated Logs (ERROR, DEVELOPER, INFO, WARNING, PAYMENT) for website and Rest APIs. Detailed Log in database for Payments and services used. Google Analytics (You know when players are in the panel and if they pay) Google Captcha V3 Dynamic Icons to show according your Donate Item ID Multiple servers L2OFF or L2JAVA servers can be added together as server network     BE AWARE: Leaked versions of old v2 panels (year 2018 with bugs) are still out sold by scammers without support or knowledge of the files.
    • I work with Kenrix and he is a  next level coder. Hugely Recommended.
    • Follow our Telegram channel, because exciting events are coming very soon! Halloween, 11.11, and also a giveaway related to 3000 subscribers in our Telegram channel are ahead! What do you think we have prepared? Subscribe to our Telegram channel and stay updated on all the news: https://t.me/accsforyou_shop Active links to SOCNET stores: Digital goods store (Website): Go Telegram store bot: Go – convenient access to the store via Telegram messenger. Telegram Stars purchasing bot: Go – fast and profitable purchase of stars in Telegram. SMM Panel: Go – promotion of your social media accounts. We would like to introduce you to the current list of promotions and special offers for purchasing products and services of our platform: 1. Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, Bot) in October! You can also use a promo code for the first purchase: SOCNET (15% discount) 2. Get $1 to your store balance or a 10–20% discount — just send your username after registering on our website using the following template: "SEND ME BONUS, MY USERNAME IS..." — you need to write it in our forum thread! 3. Get $1 for the first trial launch of the SMM Panel — just open a ticket with the topic “Get Trial Bonus” on our website (Support). 4. Weekly Telegram Stars giveaways in our Telegram channel and in our Stars purchasing bot! News: ➡ Telegram channel: https://t.me/accsforyou_shop ➡ WhatsApp channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord server: https://discord.gg/y9AStFFsrh Contacts & Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Follow our Telegram channel, because exciting events are coming very soon! Halloween, 11.11, and also a giveaway related to 3000 subscribers in our Telegram channel are ahead! What do you think we have prepared? Subscribe to our Telegram channel and stay updated on all the news: https://t.me/accsforyou_shop Active links to SOCNET stores: Digital goods store (Website): Go Telegram store bot: Go – convenient access to the store via Telegram messenger. Telegram Stars purchasing bot: Go – fast and profitable purchase of stars in Telegram. SMM Panel: Go – promotion of your social media accounts. We would like to introduce you to the current list of promotions and special offers for purchasing products and services of our platform: 1. Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, Bot) in October! You can also use a promo code for the first purchase: SOCNET (15% discount) 2. Get $1 to your store balance or a 10–20% discount — just send your username after registering on our website using the following template: "SEND ME BONUS, MY USERNAME IS..." — you need to write it in our forum thread! 3. Get $1 for the first trial launch of the SMM Panel — just open a ticket with the topic “Get Trial Bonus” on our website (Support). 4. Weekly Telegram Stars giveaways in our Telegram channel and in our Stars purchasing bot! News: ➡ Telegram channel: https://t.me/accsforyou_shop ➡ WhatsApp channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord server: https://discord.gg/y9AStFFsrh Contacts & Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Follow our Telegram channel, because exciting events are coming very soon! Halloween, 11.11, and also a giveaway related to 3000 subscribers in our Telegram channel are ahead! What do you think we have prepared? Subscribe to our Telegram channel and stay updated on all the news: https://t.me/accsforyou_shop Active links to SOCNET stores: Digital goods store (Website): Go Telegram store bot: Go – convenient access to the store via Telegram messenger. Telegram Stars purchasing bot: Go – fast and profitable purchase of stars in Telegram. SMM Panel: Go – promotion of your social media accounts. We would like to introduce you to the current list of promotions and special offers for purchasing products and services of our platform: 1. Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, Bot) in October! You can also use a promo code for the first purchase: SOCNET (15% discount) 2. Get $1 to your store balance or a 10–20% discount — just send your username after registering on our website using the following template: "SEND ME BONUS, MY USERNAME IS..." — you need to write it in our forum thread! 3. Get $1 for the first trial launch of the SMM Panel — just open a ticket with the topic “Get Trial Bonus” on our website (Support). 4. Weekly Telegram Stars giveaways in our Telegram channel and in our Stars purchasing bot! News: ➡ Telegram channel: https://t.me/accsforyou_shop ➡ WhatsApp channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord server: https://discord.gg/y9AStFFsrh Contacts & Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
  • Topics

×
×
  • 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