Exemplo n.º 1
0
  public static byte[] applyMonsterPoisonStatus(MapleMonster mons, List<MonsterStatusEffect> mse) {
    if (ServerProperties.ShowPacket()) {
      System.out.println("调用: " + new java.lang.Throwable().getStackTrace()[0]);
    }
    if ((mse.size() <= 0) || (mse.get(0) == null)) {
      return MaplePacketCreator.enableActions();
    }
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

    mplew.write(SendPacketOpcode.APPLY_MONSTER_STATUS.getValue());
    mplew.writeInt(mons.getObjectId());
    MonsterStatusEffect ms = (MonsterStatusEffect) mse.get(0);
    if (ms.getStati() == MonsterStatus.中毒) {
      PacketHelper.writeMonsterStatusMask(mplew, MonsterStatus.持续掉血);
      mplew.write(mse.size());
      for (MonsterStatusEffect m : mse) {
        mplew.writeInt(m.getFromID());
        if (m.isMonsterSkill()) {
          mplew.writeShort(m.getMobSkill().getSkillId());
          mplew.writeShort(m.getMobSkill().getSkillLevel());
        } else if (m.getSkill() > 0) {
          mplew.writeInt(m.getSkill());
        }
        mplew.writeInt(m.getX());
        mplew.writeInt(1000);
        mplew.writeInt(0);
        mplew.writeInt(10000);
        mplew.writeInt((int) (m.getDotTime() / 1000L));
        mplew.writeInt(0);
      }
      mplew.writeShort(1000);
      mplew.write(1);
    } else {
      PacketHelper.writeSingleMask(mplew, ms.getStati());
      mplew.writeInt(ms.getX());
      if (ms.isMonsterSkill()) {
        mplew.writeShort(ms.getMobSkill().getSkillId());
        mplew.writeShort(ms.getMobSkill().getSkillLevel());
      } else if (ms.getSkill() > 0) {
        mplew.writeInt(ms.getSkill());
      }
      mplew.writeShort(0);
      mplew.writeShort(0);
      mplew.write(1);
      mplew.write(1);
    }
    return mplew.getPacket();
  }
Exemplo n.º 2
0
  @Override
  public void parseEvent(NetGameEvent event) throws DataCorruptedException {
    checkNotNull(event);
    checkArgument(event.getName().equals(NAME));

    final NetGameEventValue<?>[] arguments = event.getArguments();

    PacketHelper.checkArgsCount(ARGS_COUNT, arguments);
    checkArgumentTypes(arguments);

    assignArgumentsToFields(arguments);
  }
Exemplo n.º 3
0
  public static byte[] cancelMonsterStatus(int oid, MonsterStatus stat) {
    if (ServerProperties.ShowPacket()) {
      System.out.println("调用: " + new java.lang.Throwable().getStackTrace()[0]);
    }
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

    mplew.write(SendPacketOpcode.CANCEL_MONSTER_STATUS.getValue());
    mplew.writeInt(oid);
    PacketHelper.writeMonsterStatusMask(mplew, stat);
    mplew.write(1);
    mplew.write(2);

    return mplew.getPacket();
  }
Exemplo n.º 4
0
  public static byte[] applyMonsterStatus(MapleMonster mons, MonsterStatusEffect ms) {
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

    mplew.write(SendPacketOpcode.APPLY_MONSTER_STATUS.getValue());
    mplew.writeInt(mons.getObjectId());
    PacketHelper.writeMonsterStatusMask(mplew, ms.getStati());
    mplew.writeShort(ms.getX());
    if (ms.isMonsterSkill()) {
      mplew.writeShort(ms.getMobSkill().getSkillId());
      mplew.writeShort(ms.getMobSkill().getSkillLevel());
    } else if (ms.getSkill() > 0) {
      mplew.writeInt(ms.getSkill());
    }
    mplew.writeShort(100);
    mplew.writeShort(1); // delay in ms
    return mplew.getPacket();
  }
Exemplo n.º 5
0
  public static byte[] applyMonsterStatus(int oid, MonsterStatus mse, int x, MobSkill skil) {
    if (ServerProperties.ShowPacket()) {
      System.out.println("调用: " + new java.lang.Throwable().getStackTrace()[0]);
    }
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

    mplew.write(SendPacketOpcode.APPLY_MONSTER_STATUS.getValue());
    mplew.writeInt(oid);
    PacketHelper.writeMonsterStatusMask(mplew, mse);
    mplew.writeInt(x);
    mplew.writeShort(skil.getSkillId());
    mplew.writeShort(skil.getSkillLevel());
    mplew.writeShort(0);
    mplew.writeShort(0);

    mplew.write(1);
    mplew.write(1);
    return mplew.getPacket();
  }
Exemplo n.º 6
0
  public static byte[] applyMonsterStatus(
      int oid, Map<MonsterStatus, Integer> stati, List<Integer> reflection, MobSkill skil) {
    if (ServerProperties.ShowPacket()) {
      System.out.println("调用: " + new java.lang.Throwable().getStackTrace()[0]);
    }
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

    mplew.write(SendPacketOpcode.APPLY_MONSTER_STATUS.getValue());
    mplew.writeInt(oid);
    PacketHelper.writeMonsterStatusMask(mplew, stati.keySet());

    for (Map.Entry mse : stati.entrySet()) {
      mplew.writeShort(((Integer) mse.getValue()));
      mplew.writeInt(skil.getSkillId());
      mplew.writeShort(
          100); // buffTime, this needs to be coded properly -- as a workaround, we'll use 100.
    }
    mplew.write(1); // delay in ms
    return mplew.getPacket();
  }
Exemplo n.º 7
0
 private void checkArgumentTypes(NetGameEventValue<?>[] arguments) throws DataCorruptedException {
   PacketHelper.checkArgumentType(Integer.class, arguments[0]);
 }