[Help] Putting two functions together v83
Hi there...First off, I'm not sure how often or if there is, a limit on how many help posts a person is allowed to make for a certain duration of time. I've noticed that I've been making quite a few for the past week T.T. If there is a limit, I'll try to keep it to a minimum.
I've been trying to add
Code:
killMonster(monster, chr, true);
List<MapleMapObject> items = chr.getMap().getMapObjectsInRange(chr.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
if (items.size() >= 500) {
for (MapleMapObject i : items) {
chr.getMap().removeMapObject(i);
chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, chr.getId()));
}
chr.dropMessage("[Map] - 500 drops on map reached. Drops cleared.");
}
Which can be found here because it seems like a nice efficient thing to have. But I'm not sure how to add it to
Code:
public boolean damageMonster(MapleCharacter chr, MapleMonster monster, int damage) { if (monster.getId() == 8800000) {
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() >= 8800003 && mons.getId() <= 8800010) {
return true;
}
}
}
}
if (monster.isAlive()) {
boolean killMonster = false;
synchronized (monster) {
if (!monster.isAlive()) {
return false;
}
if (damage > 0) {
int monsterhp = monster.getHp();
monster.damage(chr, damage, true);
if (!monster.isAlive()) { // monster just died
killMonster(monster, chr, true);
if (monster.getId() >= 8810002 && monster.getId() <= 8810009) {
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() == 8810018 || mons.getId() == 8810026) {
damageMonster(chr, mons, monsterhp);
}
}
}
}
} else if (monster.getId() >= 8810002 && monster.getId() <= 8810009) {//zakum
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() == 8810018 || mons.getId() == 8810026) {
damageMonster(chr, mons, damage);
}
}
}
}
}
}
if (killMonster) {
killMonster(monster, chr, true);
}
return true;
}
return false;
}
Without getting them to work together. I've tried:
Code:
public boolean damageMonster(MapleCharacter chr, MapleMonster monster, int damage) { if (monster.getId() == 8800000) {
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() >= 8800003 && mons.getId() <= 8800010) {
return true;
}
}
}
}
if (monster.isAlive()) {
boolean killMonster = false;
synchronized (monster) {
if (!monster.isAlive()) {
return false;
}
if (damage > 0) {
int monsterhp = monster.getHp();
monster.damage(chr, damage, true);
if (!monster.isAlive()) { // monster just died
killMonster(monster, chr, true);
if (monster.getId() >= 8810002 && monster.getId() <= 8810009) {
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() == 8810018 || mons.getId() == 8810026) {
damageMonster(chr, mons, monsterhp);
}
}
}
}
} else if (monster.getId() >= 8810002 && monster.getId() <= 8810009) {//zakum
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() == 8810018 || mons.getId() == 8810026) {
damageMonster(chr, mons, damage);
}
}
}
}
} if (damage > 0) {
int monsterhp = monster.getHp();
monster.damage(chr, damage, true);
if (!monster.isAlive()) { // monster just died
killMonster(monster, chr, true);
List<MapleMapObject> items = chr.getMap().getMapObjectsInRange(chr.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
if (items.size() >= 1500) {
for (MapleMapObject i : items) {
chr.getMap().removeMapObject(i);
chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, chr.getId()));
}
chr.dropMessage("The maximum amount of drops has been reached. 1500 items have been cleared.");
}
}
}
}
if (killMonster) {
killMonster(monster, chr, true);
}
return true;
}
return false;
}
It doesn't give any errors (Thank goodness), but the clearing drops part doesn't work. Only the original first part of it works. If there's a way to make these two function together, how can I do it?
Thanks in advance!
Re: [Help] Putting two functions together v83
Replace this line (which is under if (killMonster) {
Code:
killMonster(monster, chr, true);
With that new piece of code.
Re: [Help] Putting two functions together v83
Thank you for replying kevintjuh93!
As a clarification, would
Code:
public boolean damageMonster(MapleCharacter chr, MapleMonster monster, int damage) { if (monster.getId() == 8800000) {
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() >= 8800003 && mons.getId() <= 8800010) {
return true;
}
}
}
}
if (monster.isAlive()) {
boolean killMonster = false;
synchronized (monster) {
if (!monster.isAlive()) {
return false;
}
if (damage > 0) {
int monsterhp = monster.getHp();
monster.damage(chr, damage, true);
if (!monster.isAlive()) { // monster just died
killMonster(monster, chr, true);
if (monster.getId() >= 8810002 && monster.getId() <= 8810009) {
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() == 8810018 || mons.getId() == 8810026) {
damageMonster(chr, mons, monsterhp);
}
}
}
}
} else if (monster.getId() >= 8810002 && monster.getId() <= 8810009) {//zakum
for (MapleMapObject object : chr.getMap().getMapObjects()) {
MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId());
if (mons != null) {
if (mons.getId() == 8810018 || mons.getId() == 8810026) {
damageMonster(chr, mons, damage);
}
}
}
}
}
}
if (killMonster) {
killMonster(monster, chr, true);
List<MapleMapObject> items = chr.getMap().getMapObjectsInRange(chr.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
if (items.size() >= 1500) {
for (MapleMapObject i : items) {
chr.getMap().removeMapObject(i);
chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, chr.getId()));
}
chr.dropMessage("The maximum amount of drops has been reached. 1500 items have been cleared.");
}
}
if (killMonster) {
killMonster(monster, chr, true);
}
return true;
}
return false;
}
be correct?
Edit: If it is correct, when I try it out, similar to the first situation, only the original first part of it works o.o (Didn't get any errors)