Compare commits

..

No commits in common. "493cb5ea34a6f1a222bd33097099a5188501a5f6" and "91f44437f01f18f1b6ca729b13b050ebb81bc345" have entirely different histories.

5 changed files with 27 additions and 72 deletions

View File

@ -3904,7 +3904,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se
}
if (gain > 0) {
List<Integer> integers = Start.ConfigItemJson.get("-1");
List<Integer> integers = Start.ConfigItemJson.get("jb");
if (integers == null) return;
if (this.meso > integers.get(0)) {
int i = this.meso / integers.get(0);

View File

@ -1181,6 +1181,22 @@ public class Start {
公告数量 = 0;
特殊控制台.initTWinfo();
String property = System.getProperty("user.dir");
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);
}
}
}

View File

@ -996,10 +996,6 @@ public class 特殊控制台 extends JFrame {
特殊控制台.自定义血量加成比例.setText(String.valueOf(Start.ConfigValuesMap.get("自定义血量加成比例")));
特殊控制台.自定义魔量加成比例.setText(String.valueOf(Start.ConfigValuesMap.get("自定义魔量加成比例")));
initTWinfo();
}
public static void initTWinfo(){
String property = System.getProperty("user.dir");
FileReader fileReader = new FileReader(property + "\\配置文件\\伤害.txt");
String result = fileReader.readString();

View File

@ -204,7 +204,6 @@ public class MapleServerHandler extends ChannelInboundHandlerAdapter {
} catch (RejectedExecutionException ex) {
} catch (Exception e) {
if (c.getPlayer() != null && c.getPlayer().isShowErr()) {
e.printStackTrace();
//c.getPlayer().showInfo("数据包异常", true, "包头:" + recv.name() + "(0x" + Integer.toHexString((int)header_num).toUpperCase() + ")");
}
// FileoutputUtil.outputFileError("logs\\Except\\Log_Code_Except.txt", (Throwable)e, false);

View File

@ -437,15 +437,7 @@ public class DamageParse {
monster.damage(player, newtotDamageToOneMonster, true, attack.skill);
if (monster.getHp() > 0) {
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);
player.dropMessage(-1, "当前怪物血量为: " + monster.getHp());
}
} else {
monster.damage(player, monster.getStats().isBoss() ? 500000L : (monster.getHp() - 1L), true, attack.skill);
@ -672,55 +664,36 @@ public class DamageParse {
}
if (额外段数[0] > 0.0) {
b = "额外段伤 #b" + (int) 额外段数[0] + "段#k";
String s = convertNumber(v);
c = "段伤伤害 #b" + s + "#k";
c = "段伤伤害 #b" + v + "#k";
}
if (额外真伤 > 0) {
String s = convertNumber(额外真伤);
d = "切割伤害 #b" + s + "#k";
d = "切割伤害 #b" + 额外真伤 + "#k";
}
newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster);
//将计算完减伤之后的伤害加上真实伤害
newtotDamageToOneMonster += 额外真伤;
String s2 = convertNumber(newtotDamageToOneMonster);
e = "伤害统计 #r" + s2 + "#k";
e = "伤害统计 #r" + newtotDamageToOneMonster + "#k";
int length = e.length();
if (!a.isEmpty()) {
a = String.format("%-" + length + "s", a) ;
a = String.format("%-" + length + "s", a) + "\r\n";
}
if (!b.isEmpty()) {
b = String.format("%-" + (length) + "s", b) ;
b = String.format("%-" + (length - 1) + "s", b) + "\r\n";
}
if (!c.isEmpty()) {
c = String.format("%-" + length + "s", c) ;
c = String.format("%-" + length + "s", c) + "\r\n";
}
if (!d.isEmpty()) {
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 + "|");
d = String.format("%-" + length + "s", d) + "\r\n";
}
e = a + b + c + d + e;
player.showInstruction(f, 130, 10);
player.showInstruction(e, 130, 10);
return newtotDamageToOneMonster;
}
@ -1871,33 +1844,4 @@ public class DamageParse {
static {
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);
}
}
}