Jump to content

Recommended Posts

Posted (edited)

  

 

  

As i was going through some old files i found this code that i made a while ago
its pretty simple and can be improved for sure but i got no interest on it anymore .

 

The code checks what type of life stone it is Mid High Top etc. and augments the weapon based on the augment rate of your server if its a skill it will disarm weapon and show you the name and type of skill .

 

for example

 player.sendPacket(new CreatureSay(0, SayType.HERO_VOICE, "[" + type + "]", "You got " + name));
        sendMessage(player, type + " : You got " + name);

 

you also have to register it on your net.sf.l2j.gameserver.handler.ItemHandler.java

 

registerHandler(new FastAugmentation());

 

and on your items xml file

e.g gameserver/data/xml/items/8700-8799.xml

 

add this

add this 
<set name="handler" val="FastAugmentation" />

It should be like this 

<item id="8762" type="EtcItem" name="Top-Grade Life Stone: level 76">
		<set name="material" val="LIQUID" />
		<set name="weight" val="2" />
		<set name="price" val="4800000" />
		<set name="handler" val="FastAugmentation" />
		<set name="is_stackable" val="true" />
		<cond msgId="113">
			<player level="76" />
		</cond>
	</item>

 

it can be easily adapted for any l2j pack the code above is for aCis 398? if not mistaken

 

BACKUPCODE

package net.sf.l2j.mods.itemhandlers;

import net.sf.l2j.gameserver.data.xml.AugmentationData;
import net.sf.l2j.gameserver.enums.Paperdoll;
import net.sf.l2j.gameserver.enums.SayType;
import net.sf.l2j.gameserver.handler.IItemHandler;
import net.sf.l2j.gameserver.model.Augmentation;
import net.sf.l2j.gameserver.model.actor.Playable;
import net.sf.l2j.gameserver.model.actor.Player;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
import net.sf.l2j.gameserver.network.serverpackets.SocialAction;

/**
 * @author RKolibri
 */
public class FastAugmentation implements IItemHandler {
    @Override
    public void useItem(Playable playable, ItemInstance item, boolean forceUse) {
        Player player = (Player) playable;
        ItemInstance weapon = player.getInventory().getItemFrom(Paperdoll.RHAND);
        Augmentation topLs = AugmentationData.getInstance().generateRandomAugmentation(76, 3);
        Augmentation highLs = AugmentationData.getInstance().generateRandomAugmentation(76, 2);
        Augmentation midLs = AugmentationData.getInstance().generateRandomAugmentation(76, 1);
        Augmentation noGradeLs = AugmentationData.getInstance().generateRandomAugmentation(76, 0);
        InventoryUpdate iu = new InventoryUpdate();
        int ls = item.getItemId();
        if (weapon == null) {
            player.sendMessage("You have to equip a weapon first.");
            return;
        }
        if (weapon.getItem().getCrystalType().getId() <= 3) {
            player.sendMessage("Fast Augmentation available only for A and S grade  Weapons!");
            return;
        }
        if (weapon.isHeroItem()) {
            player.sendMessage("Hero weapons can't be augmented!");
            return;
        }
        if (weapon.isAugmented()) {
            removeAug(playable);
        } else {
            player.destroyItem("Consume", item.getObjectId(), 1, null, false);
            Augmentation augmentation;
            if (ls == 8762) {
                augmentation = topLs;
            } else if (ls == 8752) {
                augmentation = highLs;
            } else if (ls == 8742) {
                augmentation = midLs;
            } else if (ls == 8732) {
                augmentation = noGradeLs;
            } else {
                return;
            }
            weapon.setAugmentation(augmentation);
            iu.addModifiedItem(weapon);
            player.sendPacket(iu);
            player.broadcastUserInfo();
            if (weapon.getAugmentation().getSkill() == null) {
                player.sendMessage("No luck try again!");
            } else {
                checkAugmentResult(playable);
            }
        }
    }

    public static boolean removeAug(Playable playable) {
        Player player = (Player) playable;
        ItemInstance weapon = player.getInventory().getItemFrom(Paperdoll.RHAND);
        InventoryUpdate iu = new InventoryUpdate();
        weapon.getAugmentation().removeBonus(player);
        weapon.removeAugmentation(true);
        iu.addModifiedItem(weapon);
        player.sendPacket(iu);
        player.broadcastUserInfo();
        return true;
    }

    private static void checkAugmentResult(Playable playable) {
        Player player = (Player) playable;
        ItemInstance weapon = player.getInventory().getItemFrom(Paperdoll.RHAND);
        String name = weapon.getAugmentation().getSkill().getName();
        boolean isChance = weapon.getAugmentation().getSkill().isChance();
        boolean isActive = weapon.getAugmentation().getSkill().isActive();
        boolean isPassive = weapon.getAugmentation().getSkill().isPassive() && !isChance;
        InventoryUpdate iu = new InventoryUpdate();

        String type;
        if (isChance) {
            type = "CHANCE";
        } else if (isActive) {
            type = "ACTIVE";
        } else if (isPassive) {
            type = "PASSIVE";
        } else {
            return;
        }

        player.sendPacket(new CreatureSay(0, SayType.HERO_VOICE, "[" + type + "]", "You got " + name));
        sendMessage(player, type + " : You got " + name);
        player.broadcastPacket(new SocialAction(player, 3));
        player.disarmWeapon(true);
        iu.addModifiedItem(weapon);
        player.sendPacket(iu);
        player.broadcastUserInfo();
    }

    public static void sendMessage(final Player player, final String message) {
        player.sendPacket(new ExShowScreenMessage(message, 3000, ExShowScreenMessage.SMPOS.TOP_CENTER, true));
        player.sendMessage(message);
    }

}

 

Pastebin

 

Have fun and enjoy

Author : RKolibri

Credits : RKolibri

 

Edited by Kolibri
added code in case of pastebin's link goes off
  • Upvote 1
  • 2 weeks later...
Posted
1 minute ago, Red-Hair-Shanks said:

this feature have a bug, you can stuck the stats of ls many times.

As i said its pretty simple and can be improved for sure but i got no interest on it anymore . Anyone who wants can improve and i can update the post with improved versions. 

 

 

Posted
19 hours ago, Kolibri said:

As i said its pretty simple and can be improved for sure but i got no interest on it anymore . Anyone who wants can improve and i can update the post with improved versions. 

 

 

yes ok, i just mention one of the bigest problem of that code.

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

    • Contact me, Discord: xbaus
    • Hi,   I’m reporting @nuturazvan for attempting to scam me out of 70€.   Last week, he contacted me on Discord saying he was looking for a control panel. I initially offered NimeraCP, but after I told him the price, he said he couldn’t afford it. I then told him I could develop a custom control panel within his budget. After discussing the details, we agreed on the following:   Control / Donate Panel includes: Donate page Account registration page Login page Password reset page Stripe integration Agreed price: 70€ Deal date: December 3, 2025   I finished developing the panel on December 6, 2025, but I have not delivered it yet. The code is complete and currently sitting in a private GitHub repository, waiting for payment. As of December 14, 2025, I still haven’t received any payment. I’ve asked him multiple times when I can expect it, and he keeps making excuses, saying a friend owes him money and that he’s waiting to get paid first.   If you don’t have the money, you shouldn’t be ordering work. I take responsibility for starting the work without upfront payment, but that doesn’t excuse repeatedly delaying payment.   Posting this as a warning to others.  
    • WTB GRACIA FINAL INTERFACE
    • Dear partners! At the moment we are in great need of the following positions: — Snapchat old and new accounts | With snapscores | Geo: Europe/USA | Full access via email/phone number — Reddit old (brute or hacked origin, self-registered) accounts with post and comment karma from 100 to 100,000+ | Full email access included — LinkedIn old accounts with real connections | Geo: Europe/USA | Full email access + active 2FA password — Instagram old accounts (2010–2023) | Full email access (possibly with active 2FA password) — Facebook old accounts (2010–2023) | Full email access (possibly with active 2FA password) | With friends or without friends | Geo: Europe/USA/Asia — Threads accounts | Full email access (possibly with active 2FA password) — TikTok/Facebook/Google ADS Agency advertising accounts — Email accounts: mail.ru, yahoo.com, gazeta.pl, gmx.ch / gmx.de / gmx.net (BUT NOT gmx.com) — Google ADS Manual Farm accounts (verified via email and phone number) | GEO: USA/Europe, mostly USA. — WhatsApp OLD Accounts — Twitter accounts with followers and posts (old accounts) Contact us via the details below. We will be glad to cooperate! We are also ready to consider other partnership and collaboration options. 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