Jump to content

Question

Posted

Hello,

 

How can i add here:

    public boolean isAllowedToEnchantSkills()
    {
        if (isLocked())
            return false;
        if (isTransformed())
            return false;
        if (AttackStanceTaskManager.getInstance().getAttackStanceTask(this))
            return false;
        if (isCastingNow() || isCastingSimultaneouslyNow() || isInCombat())
            return false;
        if (isInBoat() || isInAirShip())
            return false;
        return true;
    }

If the skill has cooldown to return false?
 

    // Check if this skill is enabled (ex : reuse time)
        if (isSkillDisabled(skill))
        {
            SystemMessage sm = null;
            
            if (_reuseTimeStamps.containsKey(Integer.valueOf(skill.getReuseHashCode())))
            {
                int remainingTime = (int)(_reuseTimeStamps.get(Integer.valueOf(skill.getReuseHashCode())).getRemaining()/1000);
                int hours = remainingTime / 3600;
                int minutes = (remainingTime % 3600) / 60;
                int seconds = (remainingTime % 60);
                if (hours > 0)
                {
                    sm = new SystemMessage(SystemMessageId.S2_HOURS_S3_MINUTES_S4_SECONDS_REMAINING_FOR_REUSE_S1);
                    sm.addSkillName(skill);
                    sm.addNumber(hours);
                    sm.addNumber(minutes);
                }
                else if (minutes > 0)
                {
                    sm = new SystemMessage(SystemMessageId.S2_MINUTES_S3_SECONDS_REMAINING_FOR_REUSE_S1);
                    sm.addSkillName(skill);
                    sm.addNumber(minutes);
                }
                else
                {
                    sm = new SystemMessage(SystemMessageId.S2_SECONDS_REMAINING_FOR_REUSE_S1);
                    sm.addSkillName(skill);
                }
                
                sm.addNumber(seconds);
            }
            else
            {
                sm = new SystemMessage(SystemMessageId.S1_PREPARED_FOR_REUSE);
                sm.addSkillName(skill);
            }
            
            sendPacket(sm);
            return false;
        }

 

Recommended Posts

  • 0
Posted

I don't think it really matters , l2j epilogue its the same

On client packets there is a packet like EnchantSkill.java. Can u upload it to Pastebin? I will look at it and try to see how u can do it. Also the codes you posted, are they from L2PcInstance?

  • 0
Posted (edited)

After this try to do the following (i dont remember how they should be exactly but you will get the point)

                  if (Config.ES_SP_BOOK_NEEDED && usesBook)
                    {
                        // Haven't spellbook
                        if (spb == null)
                        {
                            player.sendPacket(SystemMessageId.YOU_DONT_HAVE_ALL_OF_THE_ITEMS_NEEDED_TO_ENCHANT_THAT_SKILL);
                            return;
                        }
                    }

                    if (!player.canUseSkill(skill.getId(),skill.getLevel()-1)

                  {

                       player.sendMessage("skill is on CD");

                        return;

                     }

 

As i can remember the skill.getLevel will return the next skill level, so the current level on player's skill is -1...

Edited by Solomun
  • 0
Posted

I dont have canuseskill on l2pcinstance i just want to block enchanting skill when it is on cooldown

                    if (player.isSkillDisabled(skill))

                            {

                                 player.sendMessage("skill is on CD");

                                  return;

                               }

tried this but it doesn't work , i think that it can be fixed somehow with the isDisabledsSkill

  • 0
Posted

I dont have canuseskill on l2pcinstance i just want to block enchanting skill when it is on cooldown

                    if (player.isSkillDisabled(skill))

                            {

                                 player.sendMessage("skill is on CD");

                                  return;

                               }

tried this but it doesn't work , i think that it can be fixed somehow with the isDisabledsSkill

I'm from phone right now. I have this code ready. If you cant find the solution till tommorow I will post it here.

  • 0
Posted (edited)

Try this

for (L2Skill skill : player.getSkills().values())
{
   if (player.isSkillDisabled(skill))
   {
      player.sendMessage("Crap, you can not do it right now.");
      return false;
   }
}
Edited by SweeTs
  • 0
Posted

 

Try this

for (L2Skill skill : player.getSkills().values())
{
   if (player.isSkillDisabled(skill))
   {
      player.sendMessage("Crap, you can not do it right now.");
      return false;
   }
}

it is working but how can we do it for Skill id check? because now if one skill is on reuse and trying to enchant on another you get the return false

  • 0
Posted

it is working but how can we do it for Skill id check? because now if one skill is on reuse and trying to enchant on another you get the return false

 

Client packet EnchantSkill has variable L2Skill skill.

 

Try this:

 

if (player.isSkillDisabled(skill)) return;

 

p.s: i didnt remember that there is a method isSkillDisabled :P

  • 0
Posted

 

Try this

for (L2Skill skill : player.getSkills().values())
{
   if (player.isSkillDisabled(skill))
   {
      player.sendMessage("Crap, you can not do it right now.");
      return false;
   }
}

Why to check all skills since he want to check the skill that selected for enchant?

 

as solomoun suggested,

if (player.isSkillDisabled(skill))
      return false;
  • 0
Posted

only sweets work so far, but it doesn't check for the specific skill

As i promised you, i searched for the solution. Here you go, i ve tested this in freya and it worked like a charm....

 

 

Index: java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java

===================================================================

--- java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java (revision 13244)

+++ java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java (working copy)

@@ -26,6 +26,7 @@

import com.l2jserver.gameserver.model.L2ItemInstance;

import com.l2jserver.gameserver.model.L2ShortCut;

import com.l2jserver.gameserver.model.L2Skill;

+import com.l2jserver.gameserver.model.actor.L2Character;

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

import com.l2jserver.gameserver.network.SystemMessageId;

import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;

@@ -85,7 +86,11 @@

    player.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILL_ENCHANT_ON_THIS_LEVEL);

    return;

   }

+  if (!player.isInsideZone(L2Character.ZONE_PEACE) && !player.isGM()) //Another prevent

+  {

+   player.sendMessage("You can enchant your skills only in peace zone.");

+   return;

+  }

   if (!player.isAllowedToEnchantSkills())

   {

    player.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILL_ENCHANT_ATTACKING_TRANSFORMED_BOAT);

@@ -93,11 +98,16 @@

   }

  

   final L2Skill skill = SkillTable.getInstance().getInfo(_skillId, _skillLvl);

+  final L2Skill prev_skill = SkillTable.getInstance().getInfo(_skillId, _skillLvl - 1);

   if (skill == null)

   {

    return;

   }

+  if (!player.checkCanUse(prev_skill))

+  {

+   player.sendMessage("You cant enchant this skill at this momment.");

+   return;

+  }

   final int costMultiplier = EnchantGroupsTable.NORMAL_ENCHANT_COST_MULTIPLIER;

   final int reqItemId = EnchantGroupsTable.NORMAL_ENCHANT_BOOK;

 

 

I told you that you want the level -1 ;)

 

Add this protection to other skill enchants too (GCM and green giant codex)

  • 0
Posted

seems good  but i dont have the checkCanUse in L2PCinstance, do you have it?

Oops, i totally forgot to check that. It seems checkCanUse is one of my methods.

 

Here it is:

+	public boolean checkCanUse(L2Skill skill)
+	{
+		return checkUseMagicConditions(skill, false, false);
+	}

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

    • Purchase Telegram Stars at a favorable price with minimal markup. New auctions from Telegram are expected, and our bot will help you prepare in advance. Active links: Telegram bot for purchasing Telegram Stars: Go to – fast and profitable purchase of Stars in Telegram. Other services: Digital goods store (Website): Go to Store Telegram bot: Go to – convenient access to the store via the Telegram messenger. Virtual numbers service: Go to SMM Panel: Go to – promotion of your social media accounts. We want to present to you the current list of promotions and special offers for purchasing products and services of our service: 1. You can use a promo code for your first purchase: SOCNET (15% discount) 2. Get $1 on 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 this in our forum thread! 3. Get $1 for the first trial launch of the SMM Panel: just open a ticket with the subject “Get Trial Bonus” on our website (Support). 4. Weekly Telegram Stars giveaways in our Telegram channel and in our bot for purchasing stars! 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 and support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Purchase Telegram Stars at a favorable price with minimal markup. New auctions from Telegram are expected, and our bot will help you prepare in advance. Active links: Telegram bot for purchasing Telegram Stars: Go to – fast and profitable purchase of Stars in Telegram. Other services: Digital goods store (Website): Go to Store Telegram bot: Go to – convenient access to the store via the Telegram messenger. Virtual numbers service: Go to SMM Panel: Go to – promotion of your social media accounts. We want to present to you the current list of promotions and special offers for purchasing products and services of our service: 1. You can use a promo code for your first purchase: SOCNET (15% discount) 2. Get $1 on 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 this in our forum thread! 3. Get $1 for the first trial launch of the SMM Panel: just open a ticket with the subject “Get Trial Bonus” on our website (Support). 4. Weekly Telegram Stars giveaways in our Telegram channel and in our bot for purchasing stars! 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 and support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Purchase Telegram Stars at a favorable price with minimal markup. New auctions from Telegram are expected, and our bot will help you prepare in advance. Active links: Telegram bot for purchasing Telegram Stars: Go to – fast and profitable purchase of Stars in Telegram. Other services: Digital goods store (Website): Go to Store Telegram bot: Go to – convenient access to the store via the Telegram messenger. Virtual numbers service: Go to SMM Panel: Go to – promotion of your social media accounts. We want to present to you the current list of promotions and special offers for purchasing products and services of our service: 1. You can use a promo code for your first purchase: SOCNET (15% discount) 2. Get $1 on 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 this in our forum thread! 3. Get $1 for the first trial launch of the SMM Panel: just open a ticket with the subject “Get Trial Bonus” on our website (Support). 4. Weekly Telegram Stars giveaways in our Telegram channel and in our bot for purchasing stars! 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 and support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • 亲爱的合作伙伴! 目前我们非常需要以下项目: ➡ WhatsApp 老账户 ➡ Twitter 带粉丝和帖子账户(老账户) 请通过以下联系方式与我们联系。我们很高兴与您合作! 我们项目的有效链接: 数字商品商店(网站): 前往 商店 Telegram 机器人: 前往 – 通过 Telegram 信使方便访问商店。 虚拟号码服务: 前往 用于购买 Telegram Stars 的 Telegram 机器人: 前往 – 在 Telegram 中快速且优惠地购买 Stars。 SMM 面板: 前往 – 推广您的社交媒体账户。 联系方式和支持: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Dear partners! At the moment we are in great need of the following positions: ➡ WhatsApp OLD Accounts ➡ Twitter accounts with followers and posts (old accounts) Contact us via the details below. We will be glad to cooperate! Active links to our projects: Digital goods store (Website): Go to Store Telegram bot: Go to – convenient access to the store via the Telegram messenger. Virtual numbers service: Go to Telegram bot for purchasing Telegram Stars: Go to – fast and profitable purchase of Stars in Telegram. SMM Panel: Go to – promotion of your social media accounts. Contacts and 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