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

    • Fixed a lot of null crashes, damn vanganth 🤣 Added engine that you can create your custom quests Extender dungeon systen so u can create as many dungeons as you like       Possibility to create a server from scratch its possible just is the work + the license/month , many ask for the creation.. i can do everything u like, i can even implement UFOs to fly over gym so.. whatever your dream is i can be as close as possible!
    • Hello, it is someone here to help me to make multiskill on helios pack? ( Not stacksub ) i want. On Hi5 i have this config .   # When enabled, the following will be true: # All classes can learn all skills. # Skills of another class costs x2 SP to learn. # Skills of another race costs x2 SP to learn. # Skills of fighters/mages costs x3 SP to learn. # Default: False AltGameSkillLearn = True
    • Thank you Mobius, and thank you to everybody that has helped this project making it the easiest platform to work on even if new. GGZ
    • IPHONE 17 PRO – THE QUIET SABOTEUR The new flagship should be better, right? In reality, it has become the main culprit behind rejections. Smartphone signatures are now known inside out. And the iPhone 17 Pro leads in verification failures. ▪ What exactly kills it: - aggressive AI noise reduction wipes out all natural grain - too clean HDR and perfectly even colors - characteristic digital artifacts in the shadows that weren’t there on 13–14 series - Pixel 9 is trying too, but it’s still less predictable Older models still produce a more natural picture that systems accept more willingly.  The most dangerous phone is the one that tries too hard to be perfect. Want to know exactly which smartphone to shoot your case on to pass on the first try without stress? Write to DMs — we’ll select the model and settings for your situation so the phone works for you, not against you. › TG: @mustang_service_ms ( https:// t.me/ mustang_service_ms ) › Channel: Mustang Service ( https:// t.me/ +JPpJCETg-xM1NjNl ) #documents #smartphone #photoshop #drawing #iphone
  • 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..