Compare commits
2 Commits
91f44437f0
...
493cb5ea34
| Author | SHA1 | Date |
|---|---|---|
|
|
493cb5ea34 | |
|
|
18a1f4b24e |
|
|
@ -3904,7 +3904,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gain > 0) {
|
if (gain > 0) {
|
||||||
List<Integer> integers = Start.ConfigItemJson.get("jb");
|
List<Integer> integers = Start.ConfigItemJson.get("-1");
|
||||||
if (integers == null) return;
|
if (integers == null) return;
|
||||||
if (this.meso > integers.get(0)) {
|
if (this.meso > integers.get(0)) {
|
||||||
int i = this.meso / integers.get(0);
|
int i = this.meso / integers.get(0);
|
||||||
|
|
|
||||||
|
|
@ -1181,22 +1181,6 @@ public class Start {
|
||||||
公告数量 = 0;
|
公告数量 = 0;
|
||||||
|
|
||||||
|
|
||||||
String property = System.getProperty("user.dir");
|
特殊控制台.initTWinfo();
|
||||||
FileReader fileReader = new FileReader(property + "\\配置文件\\伤害.txt");
|
|
||||||
String result = fileReader.readString();
|
|
||||||
//转json
|
|
||||||
ConfigValuesJson = JSONObject.parseObject(result);
|
|
||||||
|
|
||||||
FileReader fileReader2 = new FileReader(property + "\\配置文件\\物品.txt");
|
|
||||||
String result2 = fileReader2.readString();
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject(result2);
|
|
||||||
for (String key : jsonObject.keySet()) { // 步骤2 :ml-citation{ref="1,3" data="citationList"}
|
|
||||||
JSONArray jsonArray = jsonObject.getJSONArray(key);
|
|
||||||
List<Integer> intList = new ArrayList<>();
|
|
||||||
for (int i = 0; i < jsonArray.size(); i++) { // 步骤3 :ml-citation{ref="2,3" data="citationList"}
|
|
||||||
intList.add(jsonArray.getInteger(i));
|
|
||||||
}
|
|
||||||
Start.ConfigItemJson.put(key, intList);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -996,6 +996,10 @@ public class 特殊控制台 extends JFrame {
|
||||||
特殊控制台.自定义血量加成比例.setText(String.valueOf(Start.ConfigValuesMap.get("自定义血量加成比例")));
|
特殊控制台.自定义血量加成比例.setText(String.valueOf(Start.ConfigValuesMap.get("自定义血量加成比例")));
|
||||||
特殊控制台.自定义魔量加成比例.setText(String.valueOf(Start.ConfigValuesMap.get("自定义魔量加成比例")));
|
特殊控制台.自定义魔量加成比例.setText(String.valueOf(Start.ConfigValuesMap.get("自定义魔量加成比例")));
|
||||||
|
|
||||||
|
initTWinfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initTWinfo(){
|
||||||
String property = System.getProperty("user.dir");
|
String property = System.getProperty("user.dir");
|
||||||
FileReader fileReader = new FileReader(property + "\\配置文件\\伤害.txt");
|
FileReader fileReader = new FileReader(property + "\\配置文件\\伤害.txt");
|
||||||
String result = fileReader.readString();
|
String result = fileReader.readString();
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,7 @@ public class MapleServerHandler extends ChannelInboundHandlerAdapter {
|
||||||
} catch (RejectedExecutionException ex) {
|
} catch (RejectedExecutionException ex) {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (c.getPlayer() != null && c.getPlayer().isShowErr()) {
|
if (c.getPlayer() != null && c.getPlayer().isShowErr()) {
|
||||||
|
e.printStackTrace();
|
||||||
//c.getPlayer().showInfo("数据包异常", true, "包头:" + recv.name() + "(0x" + Integer.toHexString((int)header_num).toUpperCase() + ")");
|
//c.getPlayer().showInfo("数据包异常", true, "包头:" + recv.name() + "(0x" + Integer.toHexString((int)header_num).toUpperCase() + ")");
|
||||||
}
|
}
|
||||||
// FileoutputUtil.outputFileError("logs\\Except\\Log_Code_Except.txt", (Throwable)e, false);
|
// FileoutputUtil.outputFileError("logs\\Except\\Log_Code_Except.txt", (Throwable)e, false);
|
||||||
|
|
|
||||||
|
|
@ -437,7 +437,15 @@ public class DamageParse {
|
||||||
|
|
||||||
monster.damage(player, newtotDamageToOneMonster, true, attack.skill);
|
monster.damage(player, newtotDamageToOneMonster, true, attack.skill);
|
||||||
if (monster.getHp() > 0) {
|
if (monster.getHp() > 0) {
|
||||||
player.dropMessage(-1, "当前怪物血量为: " + monster.getHp());
|
long hp = monster.getHp();
|
||||||
|
long mobMaxHp = monster.getMobMaxHp();
|
||||||
|
|
||||||
|
double percentage = ((double) hp / mobMaxHp) * 100; // 显式转换为浮点数并计算百分比:ml-citation{ref="1,3" data="citationList"}
|
||||||
|
String result = String.format("%.2f%%", percentage);
|
||||||
|
|
||||||
|
|
||||||
|
double l = (double) hp / mobMaxHp;
|
||||||
|
player.dropMessage(-1, "当前怪物血量为:" +hp +" "+result);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
monster.damage(player, monster.getStats().isBoss() ? 500000L : (monster.getHp() - 1L), true, attack.skill);
|
monster.damage(player, monster.getStats().isBoss() ? 500000L : (monster.getHp() - 1L), true, attack.skill);
|
||||||
|
|
@ -664,36 +672,55 @@ public class DamageParse {
|
||||||
}
|
}
|
||||||
if (额外段数[0] > 0.0) {
|
if (额外段数[0] > 0.0) {
|
||||||
b = "额外段伤 #b" + (int) 额外段数[0] + "段#k";
|
b = "额外段伤 #b" + (int) 额外段数[0] + "段#k";
|
||||||
c = "段伤伤害 #b" + v + "#k";
|
String s = convertNumber(v);
|
||||||
|
c = "段伤伤害 #b" + s + "#k";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (额外真伤 > 0) {
|
if (额外真伤 > 0) {
|
||||||
d = "切割伤害 #b" + 额外真伤 + "#k";
|
String s = convertNumber(额外真伤);
|
||||||
|
d = "切割伤害 #b" + s + "#k";
|
||||||
}
|
}
|
||||||
|
|
||||||
newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster);
|
newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster);
|
||||||
//将计算完减伤之后的伤害加上真实伤害
|
//将计算完减伤之后的伤害加上真实伤害
|
||||||
newtotDamageToOneMonster += 额外真伤;
|
newtotDamageToOneMonster += 额外真伤;
|
||||||
|
|
||||||
e = "伤害统计 #r" + newtotDamageToOneMonster + "#k";
|
String s2 = convertNumber(newtotDamageToOneMonster);
|
||||||
|
e = "伤害统计 #r" + s2 + "#k";
|
||||||
|
|
||||||
int length = e.length();
|
int length = e.length();
|
||||||
if (!a.isEmpty()) {
|
if (!a.isEmpty()) {
|
||||||
a = String.format("%-" + length + "s", a) + "\r\n";
|
a = String.format("%-" + length + "s", a) ;
|
||||||
}
|
}
|
||||||
if (!b.isEmpty()) {
|
if (!b.isEmpty()) {
|
||||||
b = String.format("%-" + (length - 1) + "s", b) + "\r\n";
|
b = String.format("%-" + (length) + "s", b) ;
|
||||||
}
|
}
|
||||||
if (!c.isEmpty()) {
|
if (!c.isEmpty()) {
|
||||||
c = String.format("%-" + length + "s", c) + "\r\n";
|
c = String.format("%-" + length + "s", c) ;
|
||||||
}
|
}
|
||||||
if (!d.isEmpty()) {
|
if (!d.isEmpty()) {
|
||||||
d = String.format("%-" + length + "s", d) + "\r\n";
|
d = String.format("%-" + length + "s", d) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int targetWidth = e.length()+6; // 目标显示宽度(半角字符数)
|
||||||
|
|
||||||
|
String f = "";
|
||||||
|
String[] strs = {a, b, c, d, e};
|
||||||
|
for (String s : strs) {
|
||||||
|
if (s.isEmpty())continue;
|
||||||
|
int currentWidth = getDisplayWidth(s);
|
||||||
|
int spacesNeeded = (currentWidth >= targetWidth) ? 0 : (targetWidth - currentWidth);
|
||||||
|
|
||||||
|
// 填充空格并截断:ml-citation{ref="2,3" data="citationList"}
|
||||||
|
s= String.format("%s%" + spacesNeeded + "s", s, "").substring(0, Math.min(s.length() + spacesNeeded, s.length() + targetWidth)) ;
|
||||||
|
s+="\r\n";
|
||||||
|
f +=s;
|
||||||
|
// System.out.println("|" + aligned + "|");
|
||||||
}
|
}
|
||||||
|
|
||||||
e = a + b + c + d + e;
|
e = a + b + c + d + e;
|
||||||
|
|
||||||
player.showInstruction(e, 130, 10);
|
player.showInstruction(f, 130, 10);
|
||||||
return newtotDamageToOneMonster;
|
return newtotDamageToOneMonster;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1844,4 +1871,33 @@ public class DamageParse {
|
||||||
static {
|
static {
|
||||||
readMobRedDam();
|
readMobRedDam();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 计算字符串显示宽度(全角字符算2,半角算1)
|
||||||
|
private static int getDisplayWidth(String s) {
|
||||||
|
return s.codePoints().map(c -> (c <= 255) ? 1 : 2).sum();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String convertNumber(long number) {
|
||||||
|
if (number < 10000) {
|
||||||
|
// 数字小于 10000,直接返回原数字
|
||||||
|
return String.valueOf(number);
|
||||||
|
} else if (number < 100000000) {
|
||||||
|
// 数字大于等于 10000 且小于 1 亿,转换为以“万”为单位
|
||||||
|
double result = (double) number / 10000;
|
||||||
|
return String.format("%.0f万", result);
|
||||||
|
} else if (number < 10000000000000000L) {
|
||||||
|
// 数字大于等于 1 亿 且小于 1 京,转换为以“亿”为单位
|
||||||
|
double result = (double) number / 100000000;
|
||||||
|
return String.format("%.0f亿", result);
|
||||||
|
} else {
|
||||||
|
// 数字大于等于 1 京,转换为以“京”为单位
|
||||||
|
double result = (double) number / 10000000000000000L;
|
||||||
|
return String.format("%.0f京", result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue