NumL0ck Posted August 3, 2012 Posted August 3, 2012 Please adapt this to frozen, because i have some errors... ### 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;
0 NumL0ck Posted August 4, 2012 Author Posted August 4, 2012 frozen disablers.java have much more and i fear delete something... so i need good dev who can adapt this code to frozen:) this is l2jfrozen disablers.java if(Rnd.get(100) < landrate) { L2Effect[] effects = target.getAllEffects(); int maxfive = 5; for(L2Effect e : effects) { switch(e.getEffectType()) { case SIGNET_GROUND: case SIGNET_EFFECT: continue; } if(e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && e.getSkill().getId() != 5182 && 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(true); 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(true); maxfive--; if(maxfive == 0) break; } } } } effects = null; } else { if(activeChar instanceof L2PcInstance) { SystemMessage sm = new SystemMessage(SystemMessageId.S1_WAS_UNAFFECTED_BY_S2); sm.addString(target.getName()); sm.addSkillName(skill.getDisplayId()); activeChar.sendPacket(sm); sm = null; } } break; } int landrate = (int) skill.getPower(); landrate = (int) target.calcStat(Stats.CANCEL_VULN, landrate, target, null); if(Rnd.get(100) < landrate) { L2Effect[] effects = target.getAllEffects(); int maxdisp = (int) skill.getNegatePower(); if(maxdisp == 0) maxdisp = Config.BUFFS_MAX_AMOUNT + Config.DEBUFFS_MAX_AMOUNT + 6; for(L2Effect e : effects) { switch(e.getEffectType()) { case SIGNET_GROUND: case SIGNET_EFFECT: continue; } if(e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && e.getSkill().getId() != 5182 && e.getSkill().getId() != 4515 && e.getSkill().getId() != 110 && e.getSkill().getId() != 111 && e.getSkill().getId() != 1323 && e.getSkill().getId() != 1325) { if(e.getSkill().getSkillType() == SkillType.BUFF) { 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(true); maxdisp--; if(maxdisp == 0) break; } } } } //effects = null; } else { if(activeChar instanceof L2PcInstance) { SystemMessage sm = new SystemMessage(SystemMessageId.S1_WAS_UNAFFECTED_BY_S2); sm.addString(target.getName()); sm.addSkillName(skill.getDisplayId()); activeChar.sendPacket(sm); sm = null; } } break;
0 Joκκєrino Posted August 4, 2012 Posted August 4, 2012 Join skype and accept my invite . I'll help you .
0 Tryskell Posted August 4, 2012 Posted August 4, 2012 Join skype and accept my invite . I'll help you . 5€ or no balls.
Question
NumL0ck
Please adapt this to frozen, because i have some errors...
6 answers to this question
Recommended Posts