1. 怪物血量 百分比显示错误,怪物都是脚本生成的,他的当前生命值和最大生命值可能是 1000000/1000 ,拍卖有个伤害测试打木桩,可以用这个调试,还有目前小怪不能1下打死的情况下都显示血量。。蜗牛也能显示。。 要么干脆搞成判定只显示BOSS,且不是一击必杀的情况下显示
2. 自动扣除道具金币给物品
道具或者金币 数量 兑换道具或者金币 数量
比如
-1 2100000001 4002000 21
21亿零1的金币 兑换成 21个 4002000
3. 给自己发装备,跳跃jump的属性自动变成段伤属性
4. 多倍 段伤 切割 全部只读背包1个数量 数量没有叠加算
修复
This commit is contained in:
parent
540c249396
commit
1a457f3bfa
|
|
@ -5679,6 +5679,21 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se
|
||||||
return possesed;
|
return possesed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public final int getItemNum(final int itemid) {
|
||||||
|
final MapleInventoryType type = GameConstants.getInventoryType(itemid);
|
||||||
|
if (type == MapleInventoryType.EQUIP) {
|
||||||
|
return this.inventory[MapleInventoryType.EQUIPPED.ordinal()].countById(itemid);
|
||||||
|
}
|
||||||
|
final IItem findById = this.inventory[type.ordinal()].findById(itemid);
|
||||||
|
short quantity = findById.getQuantity();
|
||||||
|
|
||||||
|
return quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void dropNPC(final String message) {
|
public void dropNPC(final String message) {
|
||||||
this.client.sendPacket(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, message, "00 00", (byte) 0));
|
this.client.sendPacket(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, message, "00 00", (byte) 0));
|
||||||
}
|
}
|
||||||
|
|
@ -11812,7 +11827,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se
|
||||||
for (String string : strings) {
|
for (String string : strings) {
|
||||||
boolean b = this.haveItem(Integer.parseInt(string));
|
boolean b = this.haveItem(Integer.parseInt(string));
|
||||||
if (b) {
|
if (b) {
|
||||||
Magnification += dd.getInteger(string);
|
int itemNum = getItemNum(Integer.parseInt(string));
|
||||||
|
Magnification += (dd.getInteger(string))*itemNum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11835,27 +11851,28 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se
|
||||||
|
|
||||||
public int getDB() {
|
public int getDB() {
|
||||||
int re = 0;
|
int re = 0;
|
||||||
JSONObject dd = Start.ConfigValuesJson.getJSONObject("dbbb");
|
JSONObject dbbb = Start.ConfigValuesJson.getJSONObject("dbbb");
|
||||||
JSONObject ddzb = Start.ConfigValuesJson.getJSONObject("dbzb");
|
JSONObject dbzb = Start.ConfigValuesJson.getJSONObject("dbzb");
|
||||||
|
|
||||||
if ((dd == null && ddzb == null) || Start.ConfigValuesJson.getInteger("isdb") == 0) return 0;
|
if ((dbbb == null && dbzb == null) || Start.ConfigValuesJson.getInteger("isdb") == 0) return 0;
|
||||||
|
|
||||||
|
|
||||||
if (dd != null) {
|
if (dbbb != null) {
|
||||||
Set<String> strings = dd.keySet();
|
Set<String> strings = dbbb.keySet();
|
||||||
for (String string : strings) {
|
for (String string : strings) {
|
||||||
boolean b = this.haveItem(Integer.parseInt(string));
|
boolean b = this.haveItem(Integer.parseInt(string));
|
||||||
if (b) {
|
if (b) {
|
||||||
re += dd.getInteger(string);
|
int itemNum = getItemNum(Integer.parseInt(string));
|
||||||
|
re += (dbbb.getInteger(string))*itemNum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ddzb != null) {
|
if (dbzb != null) {
|
||||||
Set<String> strings = ddzb.keySet();
|
Set<String> strings = dbzb.keySet();
|
||||||
for (String string : strings) {
|
for (String string : strings) {
|
||||||
boolean b = this.hasEquipped(Integer.parseInt(string));
|
boolean b = this.hasEquipped(Integer.parseInt(string));
|
||||||
if (b) {
|
if (b) {
|
||||||
re += ddzb.getInteger(string);
|
re += dbzb.getInteger(string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11880,7 +11897,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se
|
||||||
for (String string : strings) {
|
for (String string : strings) {
|
||||||
boolean b = this.haveItem(Integer.parseInt(string));
|
boolean b = this.haveItem(Integer.parseInt(string));
|
||||||
if (b) {
|
if (b) {
|
||||||
re += qgbb.getInteger(string);
|
int itemNum = getItemNum(Integer.parseInt(string));
|
||||||
|
re += (qgbb.getInteger(string))*itemNum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -439,10 +439,9 @@ public class DamageParse {
|
||||||
if (monster.getHp() > 0) {
|
if (monster.getHp() > 0) {
|
||||||
long hp = monster.getHp();
|
long hp = monster.getHp();
|
||||||
|
|
||||||
long mobMaxHp = monster.getMobMaxHp();
|
long mobMaxHp = monster.getMaxHP();
|
||||||
if (mobMaxHp >Integer.MAX_VALUE){
|
if (mobMaxHp == 0){
|
||||||
hp = hp/100;
|
monster.getMobMaxHp();
|
||||||
mobMaxHp = mobMaxHp/100;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double percentage = ((double) hp / mobMaxHp) * 100; // 显式转换为浮点数并计算百分比:ml-citation{ref="1,3" data="citationList"}
|
double percentage = ((double) hp / mobMaxHp) * 100; // 显式转换为浮点数并计算百分比:ml-citation{ref="1,3" data="citationList"}
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,7 @@ public class MapleInventoryManipulator {
|
||||||
if (integers != null) {
|
if (integers != null) {
|
||||||
if (eItem.getQuantity() >= integers.get(0)) {
|
if (eItem.getQuantity() >= integers.get(0)) {
|
||||||
int i2 = eItem.getQuantity() / integers.get(0);
|
int i2 = eItem.getQuantity() / integers.get(0);
|
||||||
c.getPlayer().gainItem(integers.get(1), i2);
|
c.getPlayer().gainItem(integers.get(1), i2*integers.get(2));
|
||||||
short quantity1 = eItem.getQuantity();
|
short quantity1 = eItem.getQuantity();
|
||||||
eItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
eItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
||||||
if (eItem.getQuantity() <= 0) {
|
if (eItem.getQuantity() <= 0) {
|
||||||
|
|
@ -230,7 +230,7 @@ public class MapleInventoryManipulator {
|
||||||
if (integers != null) {
|
if (integers != null) {
|
||||||
if (nItem.getQuantity() >= integers.get(0)) {
|
if (nItem.getQuantity() >= integers.get(0)) {
|
||||||
int i2 = nItem.getQuantity() / integers.get(0);
|
int i2 = nItem.getQuantity() / integers.get(0);
|
||||||
c.getPlayer().gainItem(integers.get(1), i2);
|
c.getPlayer().gainItem(integers.get(1), i2*integers.get(2));
|
||||||
short quantity1 = nItem.getQuantity();
|
short quantity1 = nItem.getQuantity();
|
||||||
nItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
nItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
||||||
if (nItem.getQuantity() <= 0) {
|
if (nItem.getQuantity() <= 0) {
|
||||||
|
|
@ -669,7 +669,7 @@ public class MapleInventoryManipulator {
|
||||||
if (integers != null) {
|
if (integers != null) {
|
||||||
if (eItem.getQuantity() >= integers.get(0)) {
|
if (eItem.getQuantity() >= integers.get(0)) {
|
||||||
int i2 = eItem.getQuantity() / integers.get(0);
|
int i2 = eItem.getQuantity() / integers.get(0);
|
||||||
c.getPlayer().gainItem(integers.get(1), i2);
|
c.getPlayer().gainItem(integers.get(1), i2*integers.get(2));
|
||||||
short quantity1 = eItem.getQuantity();
|
short quantity1 = eItem.getQuantity();
|
||||||
eItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
eItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
||||||
if (eItem.getQuantity() <= 0) {
|
if (eItem.getQuantity() <= 0) {
|
||||||
|
|
@ -703,7 +703,7 @@ public class MapleInventoryManipulator {
|
||||||
if (integers != null) {
|
if (integers != null) {
|
||||||
if (nItem.getQuantity() >= integers.get(0)) {
|
if (nItem.getQuantity() >= integers.get(0)) {
|
||||||
int i2 = nItem.getQuantity() / integers.get(0);
|
int i2 = nItem.getQuantity() / integers.get(0);
|
||||||
c.getPlayer().gainItem(integers.get(1), i2);
|
c.getPlayer().gainItem(integers.get(1), i2*integers.get(2));
|
||||||
short quantity1 = nItem.getQuantity();
|
short quantity1 = nItem.getQuantity();
|
||||||
nItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
nItem.setQuantity((short) (quantity1 - integers.get(0) * i2));
|
||||||
if (nItem.getQuantity() <= 0) {
|
if (nItem.getQuantity() <= 0) {
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,8 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||||
private MapleMonsterStats stats;
|
private MapleMonsterStats stats;
|
||||||
private OverrideMonsterStats ostats;
|
private OverrideMonsterStats ostats;
|
||||||
private long hp;
|
private long hp;
|
||||||
|
|
||||||
|
private long hpmax ;
|
||||||
private long nextKill;
|
private long nextKill;
|
||||||
private int mp;
|
private int mp;
|
||||||
private byte venom_counter;
|
private byte venom_counter;
|
||||||
|
|
@ -189,6 +191,13 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||||
public final void setHp(final long hp) {
|
public final void setHp(final long hp) {
|
||||||
this.hp = hp;
|
this.hp = hp;
|
||||||
}
|
}
|
||||||
|
public final void setmaxHp(final long maxhp) {
|
||||||
|
this.hpmax = maxhp;
|
||||||
|
}
|
||||||
|
public final long getMaxHP() {
|
||||||
|
return this.hpmax;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public final long getHp() {
|
public final long getHp() {
|
||||||
return this.hp;
|
return this.hp;
|
||||||
|
|
|
||||||
|
|
@ -1900,6 +1900,7 @@ public final class MapleMap {
|
||||||
final Point spos = this.calcPointBelow(new Point(pos.x, pos.y - 1));
|
final Point spos = this.calcPointBelow(new Point(pos.x, pos.y - 1));
|
||||||
mob.setPosition(spos);
|
mob.setPosition(spos);
|
||||||
mob.setHp(hp);
|
mob.setHp(hp);
|
||||||
|
mob.setmaxHp(hp);
|
||||||
this.spawnMonster(mob, spawnType);
|
this.spawnMonster(mob, spawnType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue