Jump to content
  • 0

Help fix ScrollDonate code for acis 388


Question

Posted

Here's the code.

package net.sf.l2j.gameserver.handler.itemhandlers;

import net.sf.l2j.gameserver.data.SkillTable;
import net.sf.l2j.gameserver.handler.IItemHandler;
import net.sf.l2j.gameserver.handler.ItemHandler;
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.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;

import java.util.HashMap;

public class DonateScrolls implements IItemHandler
{
    private final static HashMap<Integer, Integer[]> SCROLLS = new HashMap<Integer, Integer[]>();
    private static int[] ITEM_IDS = null;

    public DonateScrolls()
    {
        /**
		  * SCROLLS.put(item_id, new Integer[] { id_buffa, buffa level, id_skilla_animation, animation duration(ms)), take the item(1 yes, 0 no)) });
          */
        SCROLLS.put(11986, new Integer[] { 8001, 1, 7038, 1, 1 });
        SCROLLS.put(11987, new Integer[] { 8002, 1, 7038, 1, 1 });
        SCROLLS.put(11988, new Integer[] { 8003, 1, 7038, 1, 1 });
        SCROLLS.put(11989, new Integer[] { 8004, 1, 7038, 1, 1 });
        SCROLLS.put(11469, new Integer[] { 11510, 1, 7038, 1, 0 });
        SCROLLS.put(11470, new Integer[] { 11510, 2, 7038, 1, 0 });
        SCROLLS.put(11471, new Integer[] { 11510, 3, 7038, 1, 0 });
        SCROLLS.put(11472, new Integer[] { 11510, 4, 7038, 1, 0 });
        SCROLLS.put(11473, new Integer[] { 11510, 5, 7038, 1, 0 });
        SCROLLS.put(11474, new Integer[] { 11515, 1, 7038, 1, 0 });
        SCROLLS.put(11475, new Integer[] { 11515, 2, 7038, 1, 0 });
        SCROLLS.put(11476, new Integer[] { 11515, 3, 7038, 1, 0 });
        SCROLLS.put(11477, new Integer[] { 11515, 4, 7038, 1, 0 });
        SCROLLS.put(11478, new Integer[] { 11515, 5, 7038, 1, 0 });
        SCROLLS.put(11479, new Integer[] { 11520, 1, 7038, 1, 0 });
        SCROLLS.put(11480, new Integer[] { 11520, 2, 7038, 1, 0 });
        SCROLLS.put(11481, new Integer[] { 11520, 3, 7038, 1, 0 });
        SCROLLS.put(11482, new Integer[] { 11520, 4, 7038, 1, 0 });
        SCROLLS.put(11483, new Integer[] { 11520, 5, 7038, 1, 0 });
        SCROLLS.put(11484, new Integer[] { 11525, 1, 7038, 1, 0 });
        SCROLLS.put(11485, new Integer[] { 11525, 2, 7038, 1, 0 });
        SCROLLS.put(11486, new Integer[] { 11525, 3, 7038, 1, 0 });
        SCROLLS.put(11487, new Integer[] { 11525, 4, 7038, 1, 0 });
        SCROLLS.put(11488, new Integer[] { 11525, 5, 7038, 1, 0 });
        SCROLLS.put(11489, new Integer[] { 11530, 1, 7038, 1, 0 });
        SCROLLS.put(11490, new Integer[] { 11530, 2, 7038, 1, 0 });
        SCROLLS.put(11491, new Integer[] { 11530, 3, 7038, 1, 0 });
        SCROLLS.put(11492, new Integer[] { 11530, 4, 7038, 1, 0 });
        SCROLLS.put(11493, new Integer[] { 11530, 5, 7038, 1, 0 });
        SCROLLS.put(11494, new Integer[] { 11535, 1, 7038, 1, 0 });
        SCROLLS.put(11495, new Integer[] { 11535, 2, 7038, 1, 0 });
        SCROLLS.put(11496, new Integer[] { 11535, 3, 7038, 1, 0 });
        SCROLLS.put(11497, new Integer[] { 11535, 4, 7038, 1, 0 });
        SCROLLS.put(11498, new Integer[] { 11535, 5, 7038, 1, 0 });
        SCROLLS.put(11499, new Integer[] { 11540, 1, 7038, 1, 0 });
        SCROLLS.put(11500, new Integer[] { 11540, 2, 7038, 1, 0 });
        SCROLLS.put(11501, new Integer[] { 11540, 3, 7038, 1, 0 });
        SCROLLS.put(11502, new Integer[] { 11540, 4, 7038, 1, 0 });
        SCROLLS.put(11503, new Integer[] { 11540, 5, 7038, 1, 0 });

        //
        Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]);
        ITEM_IDS = toIntArray(tmp_ids);
        tmp_ids = null;
        ItemHandler.getInstance().getHandler(null);
    }

    public static void main (String... arguments )
    {
        new DonateScrolls();
    }

    public void useItem(Playable playable, ItemInstance item, boolean forceUse)
    {
        if (playable instanceof Player)
            return;

        Player player = (Player) playable;
        if (player.isAllSkillsDisabled())
        {
            player.sendMessage("");
            return;
        }

        if (player.isInOlympiadMode())
        {
            player.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
            player.sendMessage("");
            return;
        }

        Integer[] data = SCROLLS.get(item.getItemId());
        if(data != null)
        {
            player.stopSkillEffects(data[0]);
            SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player);
            player.broadcastPacket(new MagicSkillUse(player, player, data[2], 1, data[3], 0));
            if (data[4] == 1) {
                player.destroyItem("Consume", item.getObjectId(), 1, null, false);
            }
        }
    }

    private int[] toIntArray(Integer[] arr)
    {
        int[] ret = new int[arr.length];
        int i = 0;
        for (Integer e : arr)
            ret[i++] = e.intValue();
        return ret;
    }

    public int[] getItemIds()
    {
        return ITEM_IDS;
    }
}

Here are some xml items

should remain in inventory
	<item id="11469" type="EtcItem" name="MIGHT1">
		<set name="default_action" val="capsule" />
		<set name="material" val="PAPER" />
		<set name="weight" val="100" />
		<set name="is_stackable" val="true" />
		<set name="is_oly_restricted" val="true" />
		<set name="handler" val="DonateScrolls" />
		<set name="item_skill" val="11510-1" />
	</item>
this one should disappear.
	<item id="11987" type="EtcItem" name="Speed">
		<set name="default_action" val="capsule" />
		<set name="material" val="PAPER" />
		<set name="weight" val="100" />
		<set name="is_stackable" val="true" />
		<set name="is_oly_restricted" val="true" />
		<set name="handler" val="DonateScrolls" />
		<set name="item_skill" val="8002-1" />
	</item>

 

This code must make the object constant which lies in the inventory and, when using it, imposes a buffer if the value 0 is set in the code. If the value is set to 1, the item puts a buffer and disappears. How to make the code work. You need help.

4 answers to this question

Recommended Posts

  • 0
Posted

If i am not wrong,  you want player use that scrolls like others. So copy xml from might buff for exemple, and make a second xml skill for scroll with scroll image. Or simple edit with status existing scrolls.

  • 0
Posted (edited)

Copy xml from original scroll, if you make that xml for scroll. 
open L2-file edit and search in ItemName-e.dat "Scroll of Might" And copy or edit that xml. Just change Item_Skill with your skill id.

Also check this line if you have. i don;t work with aCis.

 


 <set name="default_action" val="SKILL_REDUCE" />

 

Edited by 0flee

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

    • Hey guys, I came up with this idea while needing to write down multiple locations. When you use the /loc command, a text file is created (only the first time) and stores all the locations you debug.   Output:   --- a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Loc.java +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Loc.java @@ -1,5 +1,10 @@ package net.sf.l2j.gameserver.handler.usercommandhandlers; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + import net.sf.l2j.gameserver.data.xml.MapRegionData; import net.sf.l2j.gameserver.handler.IUserCommandHandler; import net.sf.l2j.gameserver.model.actor.Player; @@ -13,6 +18,7 @@ 0 }; + @SuppressWarnings("resource") @Override public void useUserCommand(int id, Player player) { @@ -100,6 +106,26 @@ } player.sendPacket(SystemMessage.getSystemMessage(msg).addNumber(player.getX()).addNumber(player.getY()).addNumber(player.getZ())); + + if (player.isGM()) + { + try + { + String fileLoc = "./data/locations.txt"; + final File file = new File(fileLoc); + file.createNewFile(); + + FileWriter fw = new FileWriter(fileLoc, true); + BufferedWriter bw = new BufferedWriter(fw); + bw.write(player.getX() + ", " + player.getY() + ", " + player.getZ()); + bw.newLine(); + bw.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } } @Override  
    • Not any training model, i should fix that, just a very well done bot engine. As we use it on a local Internet Cafe spot and people join to test server, they don't seem to understand they are bots. Their behaviour is really well done. Many actions that other bots can't do are possible and the are complicated patterns that can be done due to structure of the engine such as Pick items of dead party pk member and later on trade them back to owner. So i'll fix later the title to Bot Engine rather than A.I. 
    • its old ver ))   this is new https://gamerip.ru/index.php?/topic/3308-lineage2-chronicle3-rise-of-darkness-new-version-172-030225/
  • Topics

×
×
  • Create New...