Files
DP-S_Script/示例项目/觉醒券/觉醒券.nut
2026-04-16 16:27:53 +08:00

58 lines
2.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// =================== 加载觉醒配置 ===================
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");
}
}