一键导入
equipment-deduplication
处理装备按钮重复累积问题和相关游戏优化
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
处理装备按钮重复累积问题和相关游戏优化
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
This skill should be used when the user reports "白屏" after switching between old and new UI, mentions "新老界面切换", or discusses blank screen issues when switching between JSP (old) and Vue (new) interfaces.
处理战斗系统、血量显示、battle_status API接口等相关功能
| name | equipment-deduplication |
| description | 处理装备按钮重复累积问题和相关游戏优化 |
| version | 1.0.0 |
这个技能涵盖了处理装备按钮重复累积问题,以及相关的游戏优化功能。
在 Pike9 MUD 游戏中,装备物品的 query_inventory_links() 函数每次被调用时都会在 inventory_links 变量上追加新的按钮文本。这个变量会被序列化保存到玩家档案文件中,导致重复的按钮不断累积,最终档案文件变得很大,显示时出现大量重复按钮。
在 /usr/local/games/lowlib/wapmud2/inherit/feature/links.pike 中添加智能去重函数:
private string safe_deduplicate(string links_str) {
// 使用 catch 包裹,确保任何错误都不会影响原有功能
mixed err = catch {
// 统计每个命令动词出现的次数
mapping(string:int) link_counts = ([]);
mapping(string:string) last_link = ([]);
// ... 解析和去重逻辑
};
if(err) {
werror("[links.pike] safe_deduplicate error: %s\n", describe_error(err));
return links_str; // 出错时返回原字符串
}
}
关键点:
catch 捕获所有可能的错误在装备子类中添加链接存在检查:
string query_inventory_links(void|int count) {
string base_links = ::query_inventory_links(count);
string new_link = equiped ? "[脱下:unwear ...]" : "[穿戴:wear ...]";
// 如果已经有相同类型的链接,就不添加了
if(search(base_links, new_link) >= 0) {
return base_links;
}
return base_links + new_link;
}
影响的文件:
/usr/local/games/lowlib/wapmud2/inherit/armor.pike - 防具/usr/local/games/lowlib/wapmud2/inherit/weapon.pike - 武器/usr/local/games/lowlib/wapmud2/inherit/jewelry.pike - 首饰/usr/local/games/lowlib/wapmud2/inherit/decorate.pike - 饰物修改 /usr/local/games/lowlib/driver.pike,让编译错误同时写入 error.13800:
void compile_error(string file, int line, string msg)
{
string timestamp = String.trim_all_whites(ctime(time()));
string error_msg = sprintf("-----%s-----\nCOMPILE ERROR: %s:%d: %s\n", timestamp, file, line, msg);
werror("%s:%d: %s\n", file, line, msg);
debug_log->write("%s:%d: %s\n", file, line, msg);
log->write(error_msg); // 同时写入主错误日志
}
创建 /usr/local/games/xiand/gamelib/cmds/save_game.pike 命令,允许玩家手动保存进度而不退出游戏。
在 /usr/local/games/xiand/gamelib/single/daemons/mapd.pike 中添加可配置的VIP飞行费用:
private mapping(int:int) vip_fly_fee_config = ([
0: 0, // 非会员:按等级计算
1: 200000, // 水晶会员:20万 (2000金)
2: 100000, // 黄金会员:10万 (1000金)
3: 50000, // 白金会员:5万 (500金)
4: 5000, // 钻石会员:5千 (50金)
]);
catch 保护,任何错误都会安全回退search() 检查当用户提到以下问题时,触发此技能: