local config = {
[1] = {11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27},
[2] = {28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44}
}
function main(actor,num)
if num == nil or num == '' then
num = 1
end
config[1][num] = config[2]
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-01 18:09:25 |
👁️ 阅读: 1
我是lua后端老师!
小仙,你这代码的问题在于 `main` 函数里只修改了 `config[1][num]` 的值,但每次调用 `main` 时,`config` 都是重新定义的,修改后的值并没有保存下来。所以每次点击按钮,`config[1][num]` 又会变回初始值,图片自然就不会换了。
要解决这个问题,你可以把 `config` 定义为全局变量,或者用 `getplayvar`/`setplayvar` 来保存每个玩家的配置。这里我建议用全局变量(注意:如果多个玩家共享同一个 `config`,可能会互相影响,所以最好用玩家变量)。
下面是修改后的示例,用 `getplayvar` 和 `setplayvar` 来保存每个玩家的 `config`:
```lua
function main(actor, num)
if num == nil or num == '' then
num = 1
end
-- 读取玩家当前的 config
local configStr = getplayvar(actor, "xunzhang_config")
local config = {}
if configStr ~= "" then
config = json2tbl(configStr) -- 假设用 json 格式存储
else
-- 初始配置
config = {
[1] = {11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27},
[2] = {28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44}
}
end
-- 更新配置
config[1][num] = config[2][num]
-- 保存配置
setplayvar(actor, "xunzhang_config", tbl2json(config))
local str = [[
<Img|esc=1|loadDelay=1|reset=1|img=xixi/yidalu/xunzhangshenjiang/00.png|bg=1|move=0|show=04>
<Layout|x=796.0|y=-8.0|width=80|height=80|link=@exit>
<Button|x=811.0|y=14.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
<ListView|x=65.0|children={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18}|y=53.0||bounce=0|width=137|height=447>
]]
for i = 1, 17 do
str = str .. [[
<Button|id=a]] .. i .. [[|x=65.0|y=67.0|nimg=xixi/yidalu/xunzhangshenjiang/]] .. config[1][i] .. [[.png|size=18|link=@dianjixunzhang,]] .. i .. [[>
]]
end
say(actor, str)
end
function dianjixunzhang(actor, num)
main(actor, num)
end
```
这样,每次点击按钮,配置都会被保存,下次打开界面时就能显示更新后的图片了。
如果还有问题,记得检查图片路径和编号是否正确哦!不懂的可以问浮生梦尊师!
我是lua后端老师!
小仙,你这代码的问题在于 `main` 函数里只修改了 `config[1][num]` 的值,但每次调用 `main` 时,`config` 都是重新定义的,修改后的值并没有保存下来。所以每次点击按钮,`config[1][num]` 又会变回初始值,图片自然就不会换了。
要解决这个问题,你可以把 `config` 定义为全局变量,或者用 `getplayvar`/`setplayvar` 来保存每个玩家的配置。这里我建议用全局变量(注意:如果多个玩家共享同一个 `config`,可能会互相影响,所以最好用玩家变量)。
下面是修改后的示例,用 `getplayvar` 和 `setplayvar` 来保存每个玩家的 `config`:
```lua
function main(actor, num)
if num == nil or num == '' then
num = 1
end
-- 读取玩家当前的 config
local configStr = getplayvar(actor, "xunzhang_config")
local config = {}
if configStr ~= "" then
config = json2tbl(configStr) -- 假设用 json 格式存储
else
-- 初始配置
config = {
[1] = {11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27},
[2] = {28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44}
}
end
-- 更新配置
config[1][num] = config[2][num]
-- 保存配置
setplayvar(actor, "xunzhang_config", tbl2json(config))
local str = [[
<Img|esc=1|loadDelay=1|reset=1|img=xixi/yidalu/xunzhangshenjiang/00.png|bg=1|move=0|show=04>
<Layout|x=796.0|y=-8.0|width=80|height=80|link=@exit>
<Button|x=811.0|y=14.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
<ListView|x=65.0|children={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18}|y=53.0||bounce=0|width=137|height=447>
]]
for i = 1, 17 do
str = str .. [[
<Button|id=a]] .. i .. [[|x=65.0|y=67.0|nimg=xixi/yidalu/xunzhangshenjiang/]] .. config[1][i] .. [[.png|size=18|link=@dianjixunzhang,]] .. i .. [[>
]]
end
say(actor, str)
end
function dianjixunzhang(actor, num)
main(actor, num)
end
```
这样,每次点击按钮,配置都会被保存,下次打开界面时就能显示更新后的图片了。
如果还有问题,记得检查图片路径和编号是否正确哦!不懂的可以问浮生梦尊师!
← 返回问答库