从你的错误日志来看,主要存在两个问题:
## 1. **窗口创建问题**
错误信息显示:`[GUI ERROR] GUI:Win_Close, is valid Win` 和 `GUI:Win_Create, Win exist, close it MianFeiFuLi`
这表示你在创建窗口"MianFeiFuLi"时,该窗口已经存在。根据浮生梦老师前端课程内容,创建窗口前应该先检查是否已存在:
```lua
-- 正确做法:先检查窗口是否存在
local win = GUI:getChildByName(parent, "MianFeiFuLi")
if GUI:Win_IsNull(win) then
-- 窗口不存在才创建
win = GUI:Win_Create("MianFeiFuLi", 0, 0, 0, 0, false, false, true, false, false, false, 1)
else
-- 窗口已存在,直接使用
GUI:setVisible(win, true)
end
```
## 2. **Lua代码错误**
错误信息:`attempt to index local 'k' (a number value)`
这个错误发生在MianFeiFuLi.lua文件的第22行,说明你在尝试用数字作为table的key来索引,但可能写成了`k.something`的形式。应该是:
```lua
-- 错误示例:
for k = 1, 10 do
local data = k.someField -- 这里k是数字,不能这样索引
end
-- 正确做法:
for k, v in pairs(someTable) do
local data = v.someField -- 使用v来访问
end
```
或者如果你需要按索引访问数组:
```lua
for i = 1, #someArray do
local data = someArray[i] -- 使用方括号索引
end
```
## 3. **过时函数警告**
日志中多次出现`WINPLAYMODE was deprecated`的警告,根据前端案例中的代码,应该使用`IS_PC_OPER_MODE`:
```lua
-- 过时的写法:
local isPC = SL:GetMetaValue("WINPLAYMODE")
-- 正确的写法:
local isPC = SL:GetMetaValue("IS_PC_OPER_MODE")
```
同样,`SOCIAL_IS_BLICKLIST_BY_UID`应该改为`SOCIAL_IS_BLACKLIST_BY_UID`。
## 建议
1. 检查MianFeiFuLi.lua第22行的代码,修复数字索引错误
2. 在创建窗口前添加存在性检查
3. 更新所有过时的函数调用
4. 使用`SL:print()`来调试,而不是直接print
下次写代码时要注意这些细节,不懂的地方可以问浮生梦老师!