// =================== 加载觉醒配置 =================== local awakenConfig = GlobalConfig.Get("觉醒券.json"); local AWAKEN_ITEMS = {}; // 转换字符串键到整型键 foreach(keyStr, config in awakenConfig.awaken_items) { try { AWAKEN_ITEMS[keyStr.tointeger()] <- config; } catch(e) { ::print("[觉醒配置错误] 无效的ID格式: " + keyStr + "\n"); } } // =================== 觉醒处理函数 =================== function HandleAwakening(SUser, ItemId) { // 安全校验 if (!(ItemId in AWAKEN_ITEMS)) { return SendClassChangeError(SUser, "无效的觉醒道具", ItemId); } local config = AWAKEN_ITEMS[ItemId]; local curJob = SUser.GetCharacJob(); local curGrow = SUser.GetCharacGrowType(); local curAwaken = SUser.GetCharacSecondGrowType(); // 获取转职配置 local config = AWAKEN_ITEMS[ItemId]; // 条件检查 if (SUser.GetCharacLevel() < 50) return SendClassChangeError(SUser, "角色等级不足50级!", ItemId); if (curJob != config.job) return SendClassChangeError(SUser, "职业不符无法觉醒!", ItemId); if (curGrow == 0) return SendClassChangeError(SUser, "请先完成转职!", ItemId); if (curGrow == config.grow + 16) return SendClassChangeError(SUser, "已经处于该觉醒状态!", ItemId); // 执行觉醒 SUser.ChangeGrowType(config.grow, 1); // 假设第二个参数为觉醒标志 SUser.InitSkillW(1, 1); SUser.SendNotiPacket(0, 2, 0); SUser.SendNotiPacketMessage("觉醒成功!", 0); } // =================== 初始化注册 =================== function _Dps_AWAKENING_Main_() { if ("awaken_items" in awakenConfig) { foreach(itemId, _ in AWAKEN_ITEMS) { Cb_Use_Item_Sp_Func[itemId] <- HandleAwakening; } ::print("[觉醒系统] 载入觉醒券数量: " + AWAKEN_ITEMS.len() + "\n"); } else { ::print("[觉醒系统错误] 配置缺失 awaken_items 节点\n"); } }