Compare commits
	
		
			No commits in common. "493cb5ea34a6f1a222bd33097099a5188501a5f6" and "91f44437f01f18f1b6ca729b13b050ebb81bc345" have entirely different histories.
		
	
	
		
			493cb5ea34
			...
			91f44437f0
		
	
		|  | @ -3904,7 +3904,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (gain > 0) { |         if (gain > 0) { | ||||||
|             List<Integer> integers = Start.ConfigItemJson.get("-1"); |             List<Integer> integers = Start.ConfigItemJson.get("jb"); | ||||||
|             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,6 +1181,22 @@ public class Start { | ||||||
|         公告数量 = 0; |         公告数量 = 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); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -996,10 +996,6 @@ 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,7 +204,6 @@ 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,15 +437,7 @@ 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) { | ||||||
|                         long hp = monster.getHp(); |                         player.dropMessage(-1, "当前怪物血量为: " + 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); | ||||||
|  | @ -672,55 +664,36 @@ public class DamageParse { | ||||||
|         } |         } | ||||||
|         if (额外段数[0] > 0.0) { |         if (额外段数[0] > 0.0) { | ||||||
|             b = "额外段伤 #b" + (int) 额外段数[0] + "段#k"; |             b = "额外段伤 #b" + (int) 额外段数[0] + "段#k"; | ||||||
|             String s = convertNumber(v); |             c = "段伤伤害 #b" + v + "#k"; | ||||||
|             c = "段伤伤害 #b" + s + "#k"; |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (额外真伤 > 0) { |         if (额外真伤 > 0) { | ||||||
|             String s = convertNumber(额外真伤); |             d = "切割伤害 #b" + 额外真伤 + "#k"; | ||||||
|             d = "切割伤害 #b" + s + "#k"; |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster); |         newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster); | ||||||
|         //将计算完减伤之后的伤害加上真实伤害 |         //将计算完减伤之后的伤害加上真实伤害 | ||||||
|         newtotDamageToOneMonster += 额外真伤; |         newtotDamageToOneMonster += 额外真伤; | ||||||
| 
 | 
 | ||||||
|         String s2 = convertNumber(newtotDamageToOneMonster); |         e = "伤害统计 #r" + newtotDamageToOneMonster + "#k"; | ||||||
|         e = "伤害统计 #r" + s2 + "#k"; |  | ||||||
| 
 | 
 | ||||||
|         int length = e.length(); |         int length = e.length(); | ||||||
|         if (!a.isEmpty()) { |         if (!a.isEmpty()) { | ||||||
|             a = String.format("%-" + length + "s", a) ; |             a = String.format("%-" + length + "s", a) + "\r\n"; | ||||||
|         } |         } | ||||||
|         if (!b.isEmpty()) { |         if (!b.isEmpty()) { | ||||||
|             b = String.format("%-" + (length) + "s", b) ; |             b = String.format("%-" + (length - 1) + "s", b) + "\r\n"; | ||||||
|         } |         } | ||||||
|         if (!c.isEmpty()) { |         if (!c.isEmpty()) { | ||||||
|             c = String.format("%-" + length + "s", c) ; |             c = String.format("%-" + length + "s", c) + "\r\n"; | ||||||
|         } |         } | ||||||
|         if (!d.isEmpty()) { |         if (!d.isEmpty()) { | ||||||
|             d = String.format("%-" + length + "s", d) ; |             d = String.format("%-" + length + "s", d) + "\r\n"; | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         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(f, 130, 10); |         player.showInstruction(e, 130, 10); | ||||||
|         return newtotDamageToOneMonster; |         return newtotDamageToOneMonster; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -1871,33 +1844,4 @@ 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