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) { | ||||
|             List<Integer> integers = Start.ConfigItemJson.get("jb"); | ||||
|             List<Integer> integers = Start.ConfigItemJson.get("-1"); | ||||
|             if (integers == null) return; | ||||
|             if (this.meso > integers.get(0)) { | ||||
|                 int i = this.meso / integers.get(0); | ||||
|  |  | |||
|  | @ -1181,22 +1181,6 @@ public class Start { | |||
|         公告数量 = 0; | ||||
| 
 | ||||
| 
 | ||||
|         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); | ||||
|         } | ||||
|         特殊控制台.initTWinfo(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -996,6 +996,10 @@ 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(); | ||||
|  |  | |||
|  | @ -204,6 +204,7 @@ 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); | ||||
|  |  | |||
|  | @ -437,7 +437,15 @@ public class DamageParse { | |||
| 
 | ||||
|                     monster.damage(player, newtotDamageToOneMonster, true, attack.skill); | ||||
|                     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 { | ||||
|                     monster.damage(player, monster.getStats().isBoss() ? 500000L : (monster.getHp() - 1L), true, attack.skill); | ||||
|  | @ -664,36 +672,55 @@ public class DamageParse { | |||
|         } | ||||
|         if (额外段数[0] > 0.0) { | ||||
|             b = "额外段伤 #b" + (int) 额外段数[0] + "段#k"; | ||||
|             c = "段伤伤害 #b" + v + "#k"; | ||||
|             String s = convertNumber(v); | ||||
|             c = "段伤伤害 #b" + s + "#k"; | ||||
|         } | ||||
| 
 | ||||
|         if (额外真伤 > 0) { | ||||
|             d = "切割伤害 #b" + 额外真伤 + "#k"; | ||||
|             String s = convertNumber(额外真伤); | ||||
|             d = "切割伤害 #b" + s + "#k"; | ||||
|         } | ||||
| 
 | ||||
|         newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster); | ||||
|         //将计算完减伤之后的伤害加上真实伤害 | ||||
|         newtotDamageToOneMonster += 额外真伤; | ||||
| 
 | ||||
|         e = "伤害统计 #r" + newtotDamageToOneMonster + "#k"; | ||||
|         String s2 = convertNumber(newtotDamageToOneMonster); | ||||
|         e = "伤害统计 #r" + s2 + "#k"; | ||||
| 
 | ||||
|         int length = e.length(); | ||||
|         if (!a.isEmpty()) { | ||||
|             a = String.format("%-" + length + "s", a) + "\r\n"; | ||||
|             a = String.format("%-" + length + "s", a) ; | ||||
|         } | ||||
|         if (!b.isEmpty()) { | ||||
|             b = String.format("%-" + (length - 1) + "s", b) + "\r\n"; | ||||
|             b = String.format("%-" + (length) + "s", b) ; | ||||
|         } | ||||
|         if (!c.isEmpty()) { | ||||
|             c = String.format("%-" + length + "s", c) + "\r\n"; | ||||
|             c = String.format("%-" + length + "s", c) ; | ||||
|         } | ||||
|         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; | ||||
| 
 | ||||
|         player.showInstruction(e, 130, 10); | ||||
|         player.showInstruction(f, 130, 10); | ||||
|         return newtotDamageToOneMonster; | ||||
|     } | ||||
| 
 | ||||
|  | @ -1844,4 +1871,33 @@ 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); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue