Jump to content

Question

Posted

Hello! So i adapted devlins code for l2jfrozen 



                if (itemId == 728 || itemId == 1539 || itemId == 5592)
                    {
                        switch (itemId)
                        {
                            case 728: // mana potion
                            {
                                if (activeChar.isAutoPot(728))
                                {
                                    activeChar.sendPacket(new ExAutoSoulShot(728, 0));
                                    activeChar.sendMessage("Deactivated auto mana potions.");
                                    activeChar.setAutoPot(728, null, false);
                                }
                                else
                                {
                                    if (activeChar.getInventory().getItemByItemId(728) != null)
                                    {
                                        if (activeChar.getInventory().getItemByItemId(728).getCount() > 1)
                                        {
                                            activeChar.sendPacket(new ExAutoSoulShot(728, 1));
                                            activeChar.sendMessage("Activated auto mana potions.");
                                            activeChar.setAutoPot(728, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(728, activeChar), 1000, MANA_POT_CD*1000), true);
                                        }
                                        else
                                        {
                                            MagicSkillUser msu = new MagicSkillUser(activeChar, activeChar, 2279, 2, 0, 100);
                                            activeChar.broadcastPacket(msu);
                                            
                                            Potions is = new Potions();
                                            is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728));
                                        }
                                    }
                                }
                                
                                break;
                            }
                            case 1539: // greater healing potion
                            {
                                if (activeChar.isAutoPot(1539))
                                {
                                    activeChar.sendPacket(new ExAutoSoulShot(1539, 0));
                                    activeChar.sendMessage("Deactivated auto healing potions.");
                                    activeChar.setAutoPot(1539, null, false);
                                }
                                else
                                {
                                    if (activeChar.getInventory().getItemByItemId(1539) != null)
                                    {
                                        if (activeChar.getInventory().getItemByItemId(1539).getCount() > 1)
                                        {
                                            activeChar.sendPacket(new ExAutoSoulShot(1539, 1));
                                            activeChar.sendMessage("Activated auto healing potions.");
                                            activeChar.setAutoPot(1539, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(1539, activeChar), 1000, HEALING_POT_CD*1000), true);
                                        }
                                        else
                                        {
                                            MagicSkillUser msu = new MagicSkillUser(activeChar, activeChar, 2037, 1, 0, 100);
                                            activeChar.broadcastPacket(msu);
            
                                            Potions is = new Potions();
                                            is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539));
                                        }
                                    }
                                }
                                
                                break;
                            }
                            case 5592: // greater cp potion
                            {
                                if (activeChar.isAutoPot(5592))
                                {
                                    activeChar.sendPacket(new ExAutoSoulShot(5592, 0));
                                    activeChar.sendMessage("Deactivated auto cp potions.");
                                    activeChar.setAutoPot(5592, null, false);
                                }
                                else
                                {
                                    if (activeChar.getInventory().getItemByItemId(5592) != null)
                                    {
                                        if (activeChar.getInventory().getItemByItemId(5592).getCount() > 1)
                                        {
                                            activeChar.sendPacket(new ExAutoSoulShot(5592, 1));
                                            activeChar.sendMessage("Activated auto cp potions.");
                                            activeChar.setAutoPot(5592, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(5592, activeChar), 1000, CP_POT_CD*1000), true);
                                        }
                                        else
                                        {
                                            MagicSkillUser msu = new MagicSkillUser(activeChar, activeChar, 2166, 2, 0, 100);
                                            activeChar.broadcastPacket(msu);
                                            
                                            Potions is = new Potions();
                                            is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592));
                                        }
                                    }
                                }
                                
                                break;
                            }
                        }
                        
                        return;
                    }

part 2 of soulshots.java


    private class AutoPot implements Runnable
        {
            private int id;
            private L2PcInstance activeChar;
            
            public AutoPot(int id, L2PcInstance activeChar)
            {
                this.id = id;
                this.activeChar = activeChar;
            }
            
            @Override
            public void run()
            {
                if (activeChar.getInventory().getItemByItemId(id) == null)
                {
                    activeChar.sendPacket(new ExAutoSoulShot(id, 0));
                    activeChar.setAutoPot(id, null, false);
                    return;
                }
                
                switch (id)
                {
                    case 728:
                    {
                        if (activeChar.getCurrentMp() < 0.70*activeChar.getMaxMp())
                        {
                            MagicSkillUser msu = new MagicSkillUser(activeChar, activeChar, 2279, 2, 0, 100);
                            activeChar.broadcastPacket(msu);
                            
                            Potions is = new Potions();
                            is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728));
                        }
                        
                        break;
                    }
                    case 1539:
                    {
                        if (activeChar.getCurrentHp() < 0.95*activeChar.getMaxHp())
                        {
                            MagicSkillUser msu = new MagicSkillUser(activeChar, activeChar, 2037, 1, 0, 100);
                            activeChar.broadcastPacket(msu);
                            
                            Potions is = new Potions();
                            is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539));
                        }
                        
                        break;
                    }
                    case 5592:
                    {
                        if (activeChar.getCurrentCp() < 0.95*activeChar.getMaxCp())
                        {
                            MagicSkillUser msu = new MagicSkillUser(activeChar, activeChar, 2166, 2, 0, 100);
                            activeChar.broadcastPacket(msu);
                            
                            Potions is = new Potions();
                            is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592));
                        }
                        
                        break;
            }
                }
                
                if (activeChar.getInventory().getItemByItemId(id) == null)
                {
                    activeChar.sendPacket(new ExAutoSoulShot(id, 0));
                    activeChar.setAutoPot(id, null, false);
                }
            }
        }

Now L2PcInstance

 

private HashMap<Integer, Future<?>> _autoPotTasks = new HashMap<>();
        
        public boolean isAutoPot(int id)
        {
            return _autoPotTasks.keySet().contains(id);
        }
        
        public void setAutoPot(int id, Future<?> task, boolean add)
        {
            if (add)
                _autoPotTasks.put(id, task);
            else
            {
                _autoPotTasks.get(id).cancel(true);
                _autoPotTasks.remove(id);
            }
        }

and part 2 


    // Add karma to attacker and increase its PK counter
        setPvpKills(getPvpKills() + 1);
                
                if (isAutoPot(728))
                    {
                        sendPacket(new ExAutoSoulShot(728, 0));
                        setAutoPot(728, null, false);
                    }
                    if (isAutoPot(1539))
                    {
                        sendPacket(new ExAutoSoulShot(1539, 0));
                        setAutoPot(1539, null, false);
                    }
                    if (isAutoPot(5592))
                    {
                        sendPacket(new ExAutoSoulShot(5592, 0));
                        setAutoPot(5592, null, false);
                    }

 

i am stuck why it doesnt work?

mana is type shot on skill i removed the isPotion=true.. what i am doing wrong???

it is seems that the threadpooltask never run because i do not even get the message ingame

2 answers to this question

Recommended Posts

  • 0
Posted (edited)

there is a piece in united-extreme forum that says about this

i hope it gives you a clue  cause im not really good at core java design

plus i could find a dirty way to make it work as example of mortal blow playsound i did b4

Inside L2PcInstace.java, you need to specify what the "isAutoPot" value is and of course its default state.

 

private boolean isAutoPot = False;

 

 

yours is 

 public boolean isAutoPot(int id)


i dont get it know this i started to hate java when learning about private and public shits  lol

******


on the other hand

why you cannot just make item mana potion operation type toggle 
and edit the item skill for consume on % mana drop  

 

Edited by etherian
  • 0
Posted

i changed to private and error :) so the problem is it doesnt really do something ingame not even the sendmessages so i assume its something with map/future task / threadpool

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • Opening December 6th at 19:00 (GMT +3)! Open Beta Test from November 30th!   https://l2soe.com/   🌟 Introducing L2 Saga of Eternia: A Revolution in Lineage 2 High Five! 🌟   Dear Lineage 2 enthusiasts, Prepare to witness the future of private servers! L2 Saga of Eternia is not just another High Five project—it’s a game-changing experience designed to compete with the giants of the Lineage 2 private server scene. Built for the community, by the community, we’re here to raise the bar in quality, innovation, and longevity. What Sets Us Apart? 💎 No Wipes, Ever Say goodbye to the fear of losing your progress. Our server is built to last and will never close. Stability and consistency are our promises to you. ⚔️ Weekly New Content Our dedicated development team ensures fresh challenges, events, and updates every week. From custom quests to exclusive features, there will always be something exciting to explore. 💰 No Pay-to-Win Skill and strategy matter most here. Enjoy a balanced gameplay environment where your achievements come from effort, not your wallet. 🌍 A Massive Community With 2000+ players expected, join a vibrant and active community of like-minded adventurers ready to conquer the world of Aden. 🏆 Fair and Competitive Gameplay Our systems are designed to promote healthy competition while avoiding abusive mechanics and exploits. 🔧 Professional Development From advanced bug fixes to carefully curated content, we pride ourselves on smooth performance, no lag, and unparalleled server quality. Key Features Chronicle: High Five with unique interface Rate: Dynamic x10 rates Class Balance: Carefully fine-tuned for a fair experience PvP Focused: PvP Ranking & aura display effect for 3 Top PvPers every week Custom Events: Seasonal and permanent events to keep you engaged Additional Features:   Custom Endgame Content: Introduce unique dungeons, raids, or zones unavailable in other servers. Player-Driven Economy: Implement a strong market system and avoid overinflated drops or rewards. Epic Siege Battles: Announce special large-scale sieges and PvP events. Incentives for Streamers and Clans: Attract influencers and big clans to boost server publicity. Roadmap Transparency: Share a public roadmap of planned updates to build trust and excitemen   Here you can read all the features: https://l2soe.com/features   Video preview: Join the Revolution! This is your chance to be part of something legendary. L2 Saga of Eternia is not just a server; it’s a movement to redefine what Lineage 2 can be. Whether you’re a seasoned veteran or a newcomer to the world of Aden, we invite you to experience Lineage 2 at its finest.   Official Launch Date: December 6th 2024 Website: https://l2soe.com/ Facebook: https://www.facebook.com/l2soe Discord: https://discord.com/invite/l2eternia   Let’s build the ultimate Lineage 2 experience together. See you in-game! 🎮
    • That's like a tutorial on how to run l2 on MacOS Xd but good job for the investigation. 
    • small update: dc robe set sold   wts adena 1kk = 1.5$ 
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt
    • Why adena in this sever so expensive 🙂
  • Topics

×
×
  • Create New...