local baixiaosheng = {}
-- 定义称号列表
local titleList = {
"暗金魔气",
"血木魔气",
"黑水魔气",
"啖火魔气",
"戾土魔气"
}
-- 终极称号
local wuxingTitle = "五行の暗魔体"
-- 检查是否集齐五个称号
function baixiaosheng.checkAllTitles(actor)
for _, title in ipairs(titleList
你的前端代码检测称号的方式有问题。根据浮生梦老师前端课程内容,获取玩家称号数据应该使用正确的方法。
主要问题在 `baixiaosheng.hasTitle()` 函数中:
```lua
-- 错误方式:
local titlesData = SL:GetMetaValue("TITLES", "")
```
应该使用:
```lua
-- 正确方式:获取玩家所有称号数据
function baixiaosheng.hasTitle(titleName)
local titleID = titleIDMap[titleName]
if not titleID then
SL:print("未找到称号ID:" .. titleName)
return false
end
-- 正确获取称号数据
local titlesData = SL:GetMetaValue("TITLES", baixiaosheng.param2 or "")
if not titlesData then
return false
end
-- 检查称号ID是否在玩家称号数据中
local hasTitle = false
if type(titlesData) == "table" then
for _, titleData in pairs(titlesData) do
if titleData and tonumber(titleData.id) == tonumber(titleID) then
hasTitle = true
break
end
end
end
return hasTitle
end
```
**关键修改点:**
1. `SL:GetMetaValue("TITLES", baixiaosheng.param2 or "")` - 需要传入玩家ID参数
2. `tonumber(titleData.id) == tonumber(titleID)` - 确保ID类型一致
3. `baixiaosheng.param2` 是玩家ID,应该在 `baixiaosheng.main()` 函数中保存
**建议的调试方法:**
```lua
function baixiaosheng.hasTitle(titleName)
local titleID = titleIDMap[titleName]
SL:print("检查称号:" .. titleName .. ",ID:" .. tostring(titleID))
SL:print("玩家ID:" .. tostring(baixiaosheng.param2))
local titlesData = SL:GetMetaValue("TITLES", baixiaosheng.param2 or "")
SL:print("称号数据:" .. tostring(titlesData))
if titlesData and type(titlesData) == "table" then
SL:print("称号数量:" .. tostring(#titlesData))
for k, v in pairs(titlesData) do
SL:print("称号" .. k .. ":ID=" .. tostring(v.id))
end
end
-- 其他代码...
end
```
另外,确保你的 `titleIDMap` 中的ID与服务器配置的称号ID一致。如果还是检测不到,可能是称号ID配置错误或者服务器返回的数据格式问题。