您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 421|回复: 1

武器用毒液标飞刀飞!黑骑士灵魂助力掉线问题!求大神解答

[复制链接]

15

回帖

1

主题

13

积分

新手上路

威望
0 点
冒险币
73 个
贡献值
0 点
好评度
0 点
发表于 2019-2-19 01:10:39 | 显示全部楼层 |阅读模式
武器用毒液标飞刀飞!黑骑士灵魂助力掉线问题!求大神解答
这两个技能!用了之后会掉线,有时候自己掉线,有时候队友掉线~~~想问下怎么去修复这技能

帮忙看看是不是这段代码有问题!萌新学习研究冒险岛,日后完善,必将源码分享给大家


  1.         if (poison && getHp() > 1) {//设置中毒的持续时间
  2.             final int poisonDamage = (int) Math.min(Short.MAX_VALUE, (long) (getMobMaxHp() / (70.0 - from.getSkillLevel(status.getSkill())) + 0.999));
  3.             status.setValue(MonsterStatus.POISON, Integer.valueOf(poisonDamage));
  4.             status.setPoisonSchedule(timerManager.register(new PoisonTask(poisonDamage, from, status, cancelTask, false), 1000, 1000));
  5.         } else if (venom) {
  6.             int poisonLevel = 0;
  7.             int matk = 0;

  8.             switch (from.getJob()) {
  9.                 case 412:
  10.                     poisonLevel = from.getSkillLevel(SkillFactory.getSkill(4120005));//4120005 - 武器用毒液 - 在飞镖上涂抹毒药攻击敌人使它一定几率中毒受持续伤害.最多可重复3次,敌人的HP不会掉落1以下.
  11.                     if (poisonLevel <= 0) {
  12.                         return;
  13.                     }
  14.                     matk = SkillFactory.getSkill(4120005).getEffect(poisonLevel).getMatk();
  15.                     break;
  16.                 case 422:
  17.                     poisonLevel = from.getSkillLevel(SkillFactory.getSkill(4220005));
  18.                     if (poisonLevel <= 0) {
  19.                         return;
  20.                     }
  21.                     matk = SkillFactory.getSkill(4220005).getEffect(poisonLevel).getMatk();
  22.                     break;
  23.                 case 1411:
  24.                 case 1412:
  25.                     poisonLevel = from.getSkillLevel(SkillFactory.getSkill(14110004));
  26.                     if (poisonLevel <= 0) {
  27.                         return;
  28.                     }
  29.                     matk = SkillFactory.getSkill(14110004).getEffect(poisonLevel).getMatk();
  30.                     break;
  31.                 case 434:
  32.                     poisonLevel = from.getSkillLevel(SkillFactory.getSkill(4340001));
  33.                     if (poisonLevel <= 0) {
  34.                         return;
  35.                     }
  36.                     matk = SkillFactory.getSkill(4340001).getEffect(poisonLevel).getMatk();
  37.                     break;
  38.                 default:
  39.                     return; // Hack, using venom without the job required
  40.             }
  41.             final int luk = from.getStat().getLuk();
  42.             final int maxDmg = (int) Math.ceil(Math.min(Short.MAX_VALUE, 0.2 * luk * matk));
  43.             final int minDmg = (int) Math.ceil(Math.min(Short.MAX_VALUE, 0.1 * luk * matk));
  44.             int gap = maxDmg - minDmg;
  45.             if (gap == 0) {
  46.                 gap = 1;
  47.             }
  48.             int poisonDamage = 0;
  49.             for (int i = 0; i < getVenomMulti(); i++) {
  50.                 poisonDamage = poisonDamage + (Randomizer.nextInt(gap) + minDmg);
  51.             }
  52.             poisonDamage = Math.min(Short.MAX_VALUE, poisonDamage);
  53.             status.setValue(MonsterStatus.POISON, Integer.valueOf(poisonDamage));
  54.             status.setPoisonSchedule(timerManager.register(new PoisonTask(poisonDamage, from, status, cancelTask, false), 1000, 1000));
  55.            // 4111003 夜行者- 影网术 - [最高等级:20]\n以自身的影子做成蜘蛛网,缠住6个以下的多个怪物。被缠住的怪物无法动弹。
  56.         } else if (statusSkill == 4111003 || statusSkill == 14111001) { //14111001 夜行者- 影网术 - [最高等级:20]\n以自身的影子做成蜘蛛网,缠住6个以下的多个怪物。被缠住的怪物无法动弹。
  57.             status.setPoisonSchedule(timerManager.schedule(new PoisonTask((int) (getMobMaxHp() / 50.0 + 0.999), from, status, cancelTask, true), 3500));
  58.             //4121004 - 忍者伏击 - [最高等级 : 30]\n给一定范围内的敌人持续的伤害.一次不能攻击6只以上,HP不掉到1以下.\n必要技能 : #c假动作等级5以上#
  59.         } else if (statusSkill == 4121004 || statusSkill == 4221004) {// - 忍者伏击 - 躲藏的同伴突然出现在一定时间内持续攻击敌人.\n一次无法攻击6只以上,HP不会掉到1以下.\n必要技能 : #c假动作 5级 以上#
  60.             final int damage = (from.getStat().getStr() + from.getStat().getLuk()) * 2 * (60 / 100);
  61.             status.setPoisonSchedule(timerManager.register(new PoisonTask(damage, from, status, cancelTask, false), 1000, 1000));
  62.         }

  63.         stati.put(stat, status);
  64.         map.broadcastMessage(MobPacket.applyMonsterStatus(getObjectId(), status), getPosition());
  65.         if (getController() != null && !getController().isMapObjectVisible(this)) {
  66.             getController().getClient().getSession().write(MobPacket.applyMonsterStatus(getObjectId(), status));
  67.         }
  68.         int aniTime = 0;
  69.         if (skilz != null) {
  70.             aniTime = skilz.getAnimationTime();
  71.         }
  72.         ScheduledFuture<?> schedule = timerManager.schedule(cancelTask, duration + aniTime);
  73.         status.setCancelTask(schedule);
  74.     }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    申请友链|Archiver|手机版|

GMT+8, 2024-11-21 21:09 , Processed in 0.288796 second(s), 22 queries .

© 2001-2011 Powered by Discuz! X3.5. Theme By Yeei!

返回顶部