2024年7月19日 $itmpara 字段 tooltip 功能实现总结

## 功能概述

实现了 $itmpara 字段在 tooltip 中的显示功能，使玩家能够看到物品的特殊属性，如伤害增加、防御增加等。

## 实现细节

1. 创建了 `itmpara_tooltip.func.php` 文件，包含以下函数：
   - `parse_itmpara_tooltip($itmpara, $item_type = '')` - 解析 itmpara 字段并生成 tooltip 内容
   - `add_itmpara_tooltip_to_item($item_name, $itmpara, $item_type = '', $existing_tooltip = '')` - 为物品名称添加 tooltip
   - `get_itmpara($para)` - 将 itmpara 字符串转换为数组

2. 创建了 `itmpara_tooltip.php` 配置文件，包含各种 itmpara 键的显示配置：
   - 每个键对应一个配置数组，包含标题、格式、后缀、颜色和条件
   - 支持的键包括 AddDamageRaw、AddDamagePercentage、lore 等

3. 修改了 `global.func.php` 文件，在 `parse_nameinfo_desc` 函数中添加了对 itmpara tooltip 的支持

4. 添加了调试功能：
   - 详细的调试信息，显示 itmpara 的解析过程和结果
   - 调试信息仅在玩家的 $clbpara['SetItmparaDebug'] 为 true 时显示
   - 添加了 "itmpara调试开关" 物品，用于切换调试模式

## 遇到的问题和解决方案

1. JSON 解析问题：
   - 问题：itmpara 字段中的 JSON 字符串可能被截断或格式不正确
   - 解决方案：添加了更健壮的 JSON 解析逻辑，包括手动解析和错误处理

2. 键名大小写问题：
   - 问题：配置文件中的键名和 JSON 数据中的键名大小写不一致
   - 解决方案：添加了多种键名匹配方式，包括直接匹配、首字母大写、全大写、全小写和驼峰式

3. HTML 转义问题：
   - 问题：tooltip 内容中的特殊字符（如引号、尖括号）导致 HTML 解析错误
   - 解决方案：使用 htmlspecialchars 函数对 tooltip 内容进行 HTML 转义

4. 配置文件加载问题：
   - 问题：$itmpara_tooltip 数组没有被正确加载
   - 解决方案：直接在函数中定义默认的 $itmpara_tooltip 数组，确保它始终有值

## 使用方法

1. 为物品添加 itmpara 字段：
   ```php
   $itmpara = '{"AddDamageRaw":100,"AddDamagePercentage":10,"lore":"这是一件测试用的物品"}';
   ```

2. 在物品名称中显示 tooltip：
   ```php
   $item_name = add_itmpara_tooltip_to_item($item_name, $itmpara, $item_type);
   ```

3. 开启/关闭调试模式：
   - 使用 "itmpara调试开关" 物品切换调试模式
   - 调试模式下，tooltip 中会显示详细的调试信息

## 后续改进

1. 添加更多的 itmpara 键支持，如防御增加、属性抗性等
2. 优化 tooltip 显示效果，如添加图标、颜色等
3. 添加更多的调试功能，如显示物品的所有属性
4. 考虑将 itmpara 字段的处理逻辑移到专门的文件中，以便更好地组织代码
