Page 1 of 1

Festive Sweeper Suppport (Interlude)

Posted: Fri Jun 10, 2011 11:39 am
by giorgos_ts
L2J Revision 1434:
L2JDP Revision 3760:

I have added the Festive Sweeper Skill at my l2jserver interlude from here:
viewtopic.php?f=76&t=15415#p109080

Compiled and the skill is working, but i am getting this error in the gameserver console when i go to sweep the monsters using Festive Sweeper:

Code: Select all

   Client: [Character: Administrator - Account: tehgeorge - IP: 127.0.0.1] - Failed writing: [S] 27 InventoryUpdatejava.lang.NullPointerException        at net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate.writeImpl(InventoryUpdate.java:98)        at net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket.write(L2GameServerPacket.java:42)        at org.mmocore.network.SelectorThread.putPacketIntoWriteBuffer(SelectorThread.java:576)        at org.mmocore.network.SelectorThread.prepareWriteBuffer(SelectorThread.java:548)        at org.mmocore.network.SelectorThread.writePacket(SelectorThread.java:467)        at org.mmocore.network.SelectorThread.run(SelectorThread.java:179)                Client: [Character: Administrator - Account: tehgeorge - IP: 127.0.0.1] - Failed writing: [S] 27 InventoryUpdatejava.lang.NullPointerException        at net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate.writeImpl(InventoryUpdate.java:98)        at net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket.write(L2GameServerPacket.java:42)        at org.mmocore.network.SelectorThread.putPacketIntoWriteBuffer(SelectorThread.java:576)        at org.mmocore.network.SelectorThread.prepareWriteBuffer(SelectorThread.java:548)        at org.mmocore.network.SelectorThread.writePacket(SelectorThread.java:467)        at org.mmocore.network.SelectorThread.run(SelectorThread.java:179)L2PcInstance: callSkill() failed.java.lang.NullPointerException        at net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate.addItem(InventoryUpdate.java:59)        at net.sf.l2j.gameserver.handler.skillhandlers.Sweep.useSkill(Sweep.java:85)        at net.sf.l2j.gameserver.model.actor.L2Character.callSkill(L2Character.java:5548)        at net.sf.l2j.gameserver.model.actor.L2Character.onMagicHitTimer(L2Character.java:5248)        at net.sf.l2j.gameserver.model.actor.L2Character$MagicUseTask.run(L2Character.java:2106)        at net.sf.l2j.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:84)        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)        at java.util.concurrent.FutureTask.run(Unknown Source)        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)        at java.lang.Thread.run(Unknown Source)   
i just didnt do one thing that janiii at his/her post said, at the file sweep.java to move

Code: Select all

+       if (send)+       {+           if (iu != null)+               player.sendPacket(iu);+           else+               player.sendPacket(new ItemList(player, false));+       }
that code at some lines little below, but because i am using interlude i dont have this lines. Ofcourse i could add these lines that are missing so i can place it but they are from freya and i dont think they will be used somewhere. The thing that i am asking you to help me is how to fix it so i dont have an error and make the skill working properly, if you can ofcourse.


Sorry for my bad english.

(Forgot to say that i didnt asked support at janni's topic because i need more 20 posts. I can make 20 posts but i will be banned for spamming...)

Re: Festive Sweeper Suppport (Interlude)

Posted: Fri Jun 10, 2011 1:09 pm
by sam.jr
Post full Sweep.java

Re: Festive Sweeper Suppport (Interlude)

Posted: Fri Jun 10, 2011 3:01 pm
by giorgos_ts
Here it is, thanks for responting. :)

Code: Select all

/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */package net.sf.l2j.gameserver.handler.skillhandlers; import net.sf.l2j.Config;import net.sf.l2j.gameserver.handler.ISkillHandler;import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.model.L2Object;import net.sf.l2j.gameserver.model.L2Skill;import net.sf.l2j.gameserver.model.actor.L2Attackable;import net.sf.l2j.gameserver.model.actor.L2Character;import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;import net.sf.l2j.gameserver.network.SystemMessageId;import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;import net.sf.l2j.gameserver.network.serverpackets.ItemList;import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;import net.sf.l2j.gameserver.templates.skills.L2SkillType; /** * @author _drunk_ */public class Sweep implements ISkillHandler{    //private static Logger _log = Logger.getLogger(Sweep.class.getName());        private static final L2SkillType[] SKILL_IDS =     {        L2SkillType.SWEEP    };     public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)    {        if (!(activeChar instanceof L2PcInstance))        {            return;        }         L2PcInstance player = (L2PcInstance) activeChar;        InventoryUpdate iu = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();        boolean send = false;         for (L2Object tgt: targets)        {            if (!(tgt instanceof L2Attackable))                continue;            L2Attackable target = (L2Attackable) tgt;            L2Attackable.RewardItem[] items = null;            boolean isSweeping = false;            synchronized (target)             {                if (target.isSweepActive())                {                    items = target.takeSweep();                    isSweeping = true;                }            }            if (isSweeping)            {                if (items == null || items.length == 0)                    continue;                for (L2Attackable.RewardItem ritem : items)                {                    if (player.isInParty())                        player.getParty().distributeItem(player, ritem, true, target);                    else                    {                        L2ItemInstance item = player.getInventory().addItem("Sweep", ritem.getItemId(), ritem.getCount(), player, target);                        if (iu != null)                            iu.addItem(item);                        send = true;                         SystemMessage smsg;                        if (ritem.getCount() > 1)                        {                            smsg = new SystemMessage(SystemMessageId.EARNED_S2_S1_S); // earned $s2$s1                            smsg.addItemName(ritem.getItemId());                            smsg.addNumber(ritem.getCount());                        }                        else                        {                            smsg = new SystemMessage(SystemMessageId.EARNED_ITEM_S1); // earned $s1                            smsg.addItemName(ritem.getItemId());                        }                        player.sendPacket(smsg);                    }                }            }            target.endDecayTask();             if (send)            {                if (iu != null)                    player.sendPacket(iu);                else                    player.sendPacket(new ItemList(player, false));            }        }    }     public L2SkillType[] getSkillIds()    {        return SKILL_IDS;    }}

Re: Festive Sweeper Suppport (Interlude)

Posted: Fri Jun 10, 2011 5:43 pm
by sam.jr
Try this.

Code: Select all

/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, *fork*., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */package net.sf.l2j.gameserver.handler.skillhandlers; import net.sf.l2j.Config;import net.sf.l2j.gameserver.handler.ISkillHandler;import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.model.L2Object;import net.sf.l2j.gameserver.model.L2Skill;import net.sf.l2j.gameserver.model.actor.L2Attackable;import net.sf.l2j.gameserver.model.actor.L2Character;import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;import net.sf.l2j.gameserver.network.SystemMessageId;import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;import net.sf.l2j.gameserver.network.serverpackets.ItemList;import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;import net.sf.l2j.gameserver.templates.skills.L2SkillType; /** * @author _drunk_ */public class Sweep implements ISkillHandler{    //private static Logger _log = Logger.getLogger(Sweep.class.getName());       private static final L2SkillType[] SKILL_IDS =    {        L2SkillType.SWEEP    };     public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)    {        if (!(activeChar instanceof L2PcInstance))        {            return;        }         L2PcInstance player = (L2PcInstance) activeChar;        InventoryUpdate iu = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();        boolean send = false;         for (L2Object tgt: targets)        {            if (!(tgt instanceof L2Attackable))                continue;            L2Attackable target = (L2Attackable) tgt;            L2Attackable.RewardItem[] items = null;            boolean isSweeping = false;            synchronized (target)            {                if (target.isSweepActive())                {                    items = target.takeSweep();                    isSweeping = true;                }            }            if (isSweeping)            {                if (items == null || items.length == 0)                    continue;                for (L2Attackable.RewardItem ritem : items)                {                    if (player.isInParty())                        player.getParty().distributeItem(player, ritem, true, target);                    else                    {                        L2ItemInstance item = player.getInventory().addItem("Sweep", ritem.getItemId(), ritem.getCount(), player, target);                        if (iu != null)                            iu.addItem(item);                        send = true;                         SystemMessage smsg;                        if (ritem.getCount() > 1)                        {                            smsg = new SystemMessage(SystemMessageId.EARNED_S2_S1_S); // earned $s2$s1                            smsg.addItemName(ritem.getItemId());                            smsg.addNumber(ritem.getCount());                        }                        else                        {                            smsg = new SystemMessage(SystemMessageId.EARNED_ITEM_S1); // earned $s1                            smsg.addItemName(ritem.getItemId());                        }                        player.sendPacket(smsg);                    }                }            }            target.endDecayTask();         }           if (send)          {              if (iu != null)                  player.sendPacket(iu);              else                  player.sendPacket(new ItemList(player, false));          }    }     public L2SkillType[] getSkillIds()    {        return SKILL_IDS;    }}