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

    • Version 0.3.0 - NPC rendering and npcpos.txt editing https://res.cloudinary.com/h4p9pew6/video/upload/v1792026335/npc-spawns-editor.mp4   A new NPC Spawns tab. Choose an L2OFF script folder and Cruma shows the server's spawns right in the game world: - Every spawn zone is a colored outline on the geodata. From high up you also see the zones far below. - NPCs stand where the server puts them. Random spawns use the same logic as the server. - Editing: move a whole zone or its corners, add and remove corners; move and turn NPCs; change the NPC, count, respawn time, AI and its parameters; add and delete zones, makers and NPCs; rename zones and makers and every reference to a zone is updated; new zones are named after the nearest zone (for example, benon_1725_07 next to benon_1725_06). - Actions: click an NPC or a zone to open its maker; double-click to start editing; search for NPCs; the focus button flies the camera to an NPC; the View menu can hide zone outlines and keep only the NPCs. - Each client remembers its own script folder, the same way it remembers its geodata folder. - Saving: only the edited lines of npcpos.txt change; before writing, you see a diff of the changes (maximum_npc 4 -> 3); every version is kept as a dated backup.   Improvements - UI changes: small fixes and a wider tool tab.   Download Link: 0.3.0
    • Why not, if you're interested I will post an update
    • UPD: New features and improvements
    • Hi everyone! I'm the admin of Lineage 2 ByPass. Some of you might remember it from 2009, when it first launched. This year I brought it back. The old server ran on a server pack from 2008, so I didn't copy anything. Every item, shop, NPC, teleport, drop and spawn was taken from the original files and rewritten for a modern engine. The sets, farm zones, buffer and TvT are the same ones you remember, but a lot of things that had been quietly broken for years are finally fixed, and the client got a big upgrade. THE SERVER IS NOT LIVE YET. We're finishing the last pieces and plan to open the Open Beta very soon. Join our Discord to hear the date first, and to tell me what you'd change while it's still easy to change things.   ──────────────────── RATES & ENCHANT - EXP / SP x1000 - Safe enchant +6, max +25 - Scrolls: Simple 75%, Blessed 80%, Crystal 95% (from events) - Augment skill chance 6% (chance augments removed, only active/passive left); augment buffs stack and last 2 hours UPGRADED INTERFACE - Auto Farm (2 hours per day) that sweeps what you spoil, with a separate skill setup per subclass - Auto Enchant, built-in Teleport and Skill Enchant windows - Next Target (Player): a target key made for PvP - Auto Soulshots / Spiritshots and Auto Potions at a % you set - Arrows and shots never run out - Optimized game client CUSTOM GEAR — 3 TIERS OVER S GRADE - Tier 1 (+5%): Demonic weapons, Dynasty armor - Tier 2 (+10%): Epic weapons, Epic Dark Knight armor - Tier 3 (+15%): Monster weapons, Vesper Gold armor - Every tier has its own weapon ability and a set bonus by armor type - Wings, Tattoos, Custom Shields, RB Jewels GAMEPLAY - 5 subclasses; no class, subclass or Noblesse quests - No grade penalty, no weight limit - Auto Buff: a full set in one click — buffs last 2 hours, 64 buff slots - GM Shop, Custom Item Shop, Global GK EVENTS & BOSSES - Team vs Team every 2 hours — 10-minute fights, every kill counts as PvP - Olympiad every weekend, Fri–Sun 18:00–24:00 Eastern European Time, new heroes every Monday - Castle Siege (Innadril) - 3 Mini Raid Bosses (respawn every 15 minutes) and Scarlet van Halisha (every 30 minutes) And this is only the start: big features never seen in Interlude are on the way. Server location: Warsaw, Poland Website: https://l2bypass.com Discord: https://l2bypass.com/discord See you in game!
  • 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..