TouchAndDie Posted May 27, 2012 Posted May 27, 2012 how can i add this : ### Eclipse Workspace Patch 1.0 #P Chr.6GMS Index: java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java =================================================================== --- java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (revision 5263) +++ java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (working copy) @@ -22,9 +22,13 @@ import java.util.logging.Level; import java.util.logging.Logger; +import javolution.util.FastList; + +import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.ai.CtrlEvent; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.ai.L2AttackableAI; +import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.handler.ISkillHandler; import net.sf.l2j.gameserver.handler.SkillHandler; import net.sf.l2j.gameserver.model.L2Attackable; @@ -66,6 +70,28 @@ private float _negatePower=0.f; private int _negateId=0; + public class Canc implements Runnable{ + L2PcInstance j; + FastList<L2Effect> l; + + public Canc(L2PcInstance p,FastList<L2Effect> f){ + j = p; + l = f; + } + + public void run(){ + if(l.isEmpty()) + return; + for(L2Effect b : l) + { + L2Skill k = SkillTable.getInstance().getInfo(b.getSkill().getId(), b.getLevel()); + if(k != null) + k.getEffects(j, j); + } + l.clear(); + } + } + @Override public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) { @@ -454,31 +480,30 @@ if(Rnd.get(100) < landrate) { - L2Effect[] effects = target.getAllEffects(); - int maxfive = 5; - for (L2Effect e : effects) - { - if (e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && - e.getSkill().getId() != 4515 && e.getSkill().getId() != 110 && e.getSkill().getId() != 111 && - e.getSkill().getId() != 1323 && e.getSkill().getId() != 1325) // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 - { - if(e.getSkill().getSkillType() != SkillType.BUFF) //sleep, slow, surrenders etc - e.exit(); - else - { - int rate = 100; - int level = e.getLevel(); - if (level > 0) rate = Integer.valueOf(150/(1 + level)); - if (rate > 95) rate = 95; - else if (rate < 5) rate = 5; - if(Rnd.get(100) < rate) { - e.exit(); - maxfive--; - if(maxfive == 0) break; - } - } + L2PcInstance p = null; + if(target instanceof L2PcInstance) + p = (L2PcInstance) target; + + if(p != null){ + L2Effect[] l = p.getAllEffects(); + int r = Rnd.get(6); + if(l.length < r){} + int i = 0; + for(L2Effect h : l){ + int id = h.getSkill().getId(); + if(id == 4082 || id == 4515 || id == 110 || id == 111 || id == 1323 || id == 1325) + continue; + if(i == r) + break; + + i++; + p.addRemovedBuff(h); + h.exit(); } + ThreadPoolManager.getInstance().scheduleGeneral(new Canc(p,p.getRemovedBuffs()), 6000); } + // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 + } else { if (activeChar instanceof L2PcInstance) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 5263) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -408,6 +408,8 @@ /** True if the L2PcInstance is using the relax skill */ private boolean _relax; + + private FastList<L2Effect> removedBuffs = new FastList<L2Effect>(); /** Location before entering Observer Mode */ private int _obsX; @@ -8215,6 +8217,19 @@ return true; } + + public FastList<L2Effect> getRemovedBuffs(){ + return removedBuffs; + } + + public void addRemovedBuff(L2Effect j){ + removedBuffs.add(j); + } + public boolean isNoble() { return _noble; to http://pastebin.com/T8zGJteb ( high 5 client ) i tried but it don't work.. its very different :-? ( in l2pcinstance.java i have add the codes.. but i cannot do it in disablers.java )
0 TouchAndDie Posted May 27, 2012 Author Posted May 27, 2012 i have deleted the old disablers file :(
0 TouchAndDie Posted May 28, 2012 Author Posted May 28, 2012 update your l2j xD huh ? i have h5 , i think the code is for interlude
0 MELERIX Posted May 28, 2012 Posted May 28, 2012 that why don't work xD cancell is totally different now, now it works like retail in L2J.
0 TouchAndDie Posted May 28, 2012 Author Posted May 28, 2012 that why don't work xD cancell is totally different now, now it works like retail in L2J. i know why it dosen't work, i need someone who can adapt the code :)
0 PoRnosJH Posted May 29, 2012 Posted May 29, 2012 I need the same code adapted .. i ve tried alone .. but i couldnt make it ... its so nice feature ... maybe you melerix can help us how to adapt ..
0 ^Wyatt Posted May 31, 2012 Posted May 31, 2012 Try it dude. Index: dist/game/data/scripts/handlers/skillhandlers/Disablers.java =================================================================== --- dist/game/data/scripts/handlers/skillhandlers/Disablers.java (revision 176) +++ dist/game/data/scripts/handlers/skillhandlers/Disablers.java (working copy) @@ -15,11 +15,13 @@ package handlers.skillhandlers; import java.util.logging.Logger; +import javolution.util.FastList; +import com.l2jhidden.game.ThreadPoolManager; import com.l2jserver.gameserver.ai.CtrlEvent; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.ai.L2AttackableAI; import com.l2jserver.gameserver.datatables.ExperienceTable; +import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.handler.ISkillHandler; import com.l2jserver.gameserver.handler.SkillHandler; import com.l2jserver.gameserver.model.L2Effect; @@ -70,7 +72,49 @@ protected static final Logger _log = Logger.getLogger(L2Skill.class.getName()); + private int minutes = 2; + class ReturnEffects implements Runnable//wyatt + { + private int _time; + FastList<L2Effect> _list; + L2Character _player; + + public ReturnEffects (int time, L2Character player, FastList<L2Effect>list) + { + _time = time; + _list = list; + _player = player; + } + + @Override + public void run() + { + if (_time > 0) + { + ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + _time-=1000; + } + + if (_time==0) + { + ((L2PcInstance)_player).stopAllEffectsExceptThoseThatLastThroughDeath(); + + for (L2Effect e : _list) + { + L2Skill skill = SkillTable.getInstance().getInfo(e.getSkill().getId(), e.getLevel()); + + if(skill != null) + { + skill.getEffects(_player, _player); + } + } + ((L2PcInstance)_player).clearcancelbuffs(); + } + } + } + + /** * * @see com.l2jserver.gameserver.handler.ISkillHandler#useSkill(com.l2jserver.gameserver.model.actor.L2Character, com.l2jserver.gameserver.model.L2Skill, com.l2jserver.gameserver.model.L2Object[]) @@ -566,7 +610,17 @@ landrate = (int) activeChar.calcStat(Stats.CANCEL_VULN, landrate, target, null); if (Rnd.get(100) < landrate) + { removedBuffs += negateEffect(target, L2SkillType.BUFF, -1, skill.getMaxNegatedEffects()); + if (target instanceof L2PcInstance) + { + for (L2Effect effect : target.getAllEffects()) + { + ((L2PcInstance)target).addcancelbuffs(effect); + } ThreadPoolManager.getInstance().executeTask(new ReturnEffects(minutes * 60000, target, ((L2PcInstance)target).getcancelbuffs())); + + } + } break; case HEAL: ISkillHandler Healhandler = SkillHandler.getInstance().getHandler(L2SkillType.HEAL); Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 167) +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -372,7 +372,24 @@ private static final String RESTORE_TP_BOOKMARK = "SELECT Id,x,y,z,icon,tag,name FROM character_tpbookmark WHERE charId=?"; private static final String DELETE_TP_BOOKMARK = "DELETE FROM character_tpbookmark WHERE charId=? AND Id=?"; + //Cancel return back buffs + private FastList<L2Effect> cancelbuffs = new FastList<L2Effect>(); + public FastList<L2Effect> getcancelbuffs() + { + return cancelbuffs; + } + + public void addcancelbuffs(L2Effect effect) + { + cancelbuffs.add(effect); + } + + public void clearcancelbuffs() + { + cancelbuffs.clear(); + } + // Character Subclass SQL String Definitions: private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE charId=? ORDER BY class_index ASC"; private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (charId,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
0 ^Wyatt Posted May 31, 2012 Posted May 31, 2012 any error on console? PD: "}" must be closed before threadpoolmanager... blabla, I edited it, check it and test :p
0 TouchAndDie Posted May 31, 2012 Author Posted May 31, 2012 no error in console ( only first time but i changed com.l2jhidden.blablabla ) and still don't work :-?
0 ^Wyatt Posted May 31, 2012 Posted May 31, 2012 Yep, my fault. Try it, should work. Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 167) +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -372,7 +372,25 @@ private static final String RESTORE_TP_BOOKMARK = "SELECT Id,x,y,z,icon,tag,name FROM character_tpbookmark WHERE charId=?"; private static final String DELETE_TP_BOOKMARK = "DELETE FROM character_tpbookmark WHERE charId=? AND Id=?"; + //Cancel return back buffs + private FastList<L2Effect> cancelbuffs = new FastList<L2Effect>(); //wyatt + public boolean isoncanceltask = false; + public FastList<L2Effect> getcancelbuffs() + { + return cancelbuffs; + } + + public void addcancelbuffs(L2Effect effect) + { + cancelbuffs.add(effect); + } + + public void clearcancelbuffs() + { + cancelbuffs.clear(); + } + // Character Subclass SQL String Definitions: private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE charId=? ORDER BY class_index ASC"; private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (charId,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)"; Index: dist/game/data/scripts/handlers/skillhandlers/Cancel.java =================================================================== --- dist/game/data/scripts/handlers/skillhandlers/Cancel.java (revision 176) +++ dist/game/data/scripts/handlers/skillhandlers/Cancel.java (working copy) @@ -14,7 +14,11 @@ */ package handlers.skillhandlers; +import javolution.util.FastList; + +import com.l2jhidden.game.ThreadPoolManager; import com.l2jhidden.main.Config; +import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.handler.ISkillHandler; import com.l2jserver.gameserver.model.L2Effect; import com.l2jserver.gameserver.model.L2Object; @@ -22,6 +26,7 @@ import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Summon; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.item.instance.L2ItemInstance; import com.l2jserver.gameserver.skills.Formulas; import com.l2jserver.gameserver.skills.Stats; @@ -43,6 +48,49 @@ * * @see com.l2jserver.gameserver.handler.ISkillHandler#useSkill(com.l2jserver.gameserver.model.actor.L2Character, com.l2jserver.gameserver.model.L2Skill, com.l2jserver.gameserver.model.L2Object[]) */ + +private int minutes = 2; + + class ReturnEffects implements Runnable //wyatt + { + private int _time; + FastList<L2Effect> _list; + L2Character _player; + + public ReturnEffects (int time, L2Character player, FastList<L2Effect>list) + { + _time = time; + _list = list; + _player = player; + } + + @Override + public void run() + { + if (_time > 0) + { + ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + _time-=1000; + } + + if (_time==0) + { + ((L2PcInstance)_player).stopAllEffectsExceptThoseThatLastThroughDeath(); + + for (L2Effect e : _list) + { + L2Skill skill = SkillTable.getInstance().getInfo(e.getSkill().getId(), e.getLevel()); + + if(skill != null) + { + skill.getEffects(_player, _player); + } + } + ((L2PcInstance)_player).isoncanceltask=false; + } + } + } + @Override public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) { @@ -133,6 +184,22 @@ final L2Effect[] effects = target.getAllEffects(); + if (target instanceof L2PcInstance) //wyatt + { + ((L2PcInstance)target).clearcancelbuffs(); + + for (L2Effect effect2 : target.getAllEffects()) + { + ((L2PcInstance)target).addcancelbuffs(effect2); + } + + if (((L2PcInstance)target).getcancelbuffs()!=null && !((L2PcInstance)target).isoncanceltask) + { + ((L2PcInstance)target).isoncanceltask=true; + ThreadPoolManager.getInstance().executeTask(new ReturnEffects(minutes * 60000, target, ((L2PcInstance)target).getcancelbuffs())); + } + } + if (skill.getNegateAbnormals() != null) // Cancel for abnormals { for (L2Effect eff : effects)
Question
TouchAndDie
how can i add this :
### Eclipse Workspace Patch 1.0 #P Chr.6GMS Index: java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java =================================================================== --- java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (revision 5263) +++ java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (working copy) @@ -22,9 +22,13 @@ import java.util.logging.Level; import java.util.logging.Logger; +import javolution.util.FastList; + +import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.ai.CtrlEvent; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.ai.L2AttackableAI; +import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.handler.ISkillHandler; import net.sf.l2j.gameserver.handler.SkillHandler; import net.sf.l2j.gameserver.model.L2Attackable; @@ -66,6 +70,28 @@ private float _negatePower=0.f; private int _negateId=0; + public class Canc implements Runnable{ + L2PcInstance j; + FastList<L2Effect> l; + + public Canc(L2PcInstance p,FastList<L2Effect> f){ + j = p; + l = f; + } + + public void run(){ + if(l.isEmpty()) + return; + for(L2Effect b : l) + { + L2Skill k = SkillTable.getInstance().getInfo(b.getSkill().getId(), b.getLevel()); + if(k != null) + k.getEffects(j, j); + } + l.clear(); + } + } + @Override public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) { @@ -454,31 +480,30 @@ if(Rnd.get(100) < landrate) { - L2Effect[] effects = target.getAllEffects(); - int maxfive = 5; - for (L2Effect e : effects) - { - if (e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && - e.getSkill().getId() != 4515 && e.getSkill().getId() != 110 && e.getSkill().getId() != 111 && - e.getSkill().getId() != 1323 && e.getSkill().getId() != 1325) // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 - { - if(e.getSkill().getSkillType() != SkillType.BUFF) //sleep, slow, surrenders etc - e.exit(); - else - { - int rate = 100; - int level = e.getLevel(); - if (level > 0) rate = Integer.valueOf(150/(1 + level)); - if (rate > 95) rate = 95; - else if (rate < 5) rate = 5; - if(Rnd.get(100) < rate) { - e.exit(); - maxfive--; - if(maxfive == 0) break; - } - } + L2PcInstance p = null; + if(target instanceof L2PcInstance) + p = (L2PcInstance) target; + + if(p != null){ + L2Effect[] l = p.getAllEffects(); + int r = Rnd.get(6); + if(l.length < r){} + int i = 0; + for(L2Effect h : l){ + int id = h.getSkill().getId(); + if(id == 4082 || id == 4515 || id == 110 || id == 111 || id == 1323 || id == 1325) + continue; + if(i == r) + break; + + i++; + p.addRemovedBuff(h); + h.exit(); } + ThreadPoolManager.getInstance().scheduleGeneral(new Canc(p,p.getRemovedBuffs()), 6000); } + // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 + } else { if (activeChar instanceof L2PcInstance) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 5263) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -408,6 +408,8 @@ /** True if the L2PcInstance is using the relax skill */ private boolean _relax; + + private FastList<L2Effect> removedBuffs = new FastList<L2Effect>(); /** Location before entering Observer Mode */ private int _obsX; @@ -8215,6 +8217,19 @@ return true; } + + public FastList<L2Effect> getRemovedBuffs(){ + return removedBuffs; + } + + public void addRemovedBuff(L2Effect j){ + removedBuffs.add(j); + } + public boolean isNoble() { return _noble;to http://pastebin.com/T8zGJteb
( high 5 client ) i tried but it don't work.. its very different :-?
( in l2pcinstance.java i have add the codes.. but i cannot do it in disablers.java )
30 answers to this question
Recommended Posts