-- GM账号列表
local gm_account = {
-- 周伟
["tiankong654"] = true,
["2193676"] = true,
-- 老吴
["zz2744733"] = true,
["4987378"] = true,
-- 阿华
["wang950207"] = true,
["40283150"] = true,
-- 勇毅
["songyongyi2002"] =
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-17 14:28:19 |
👁️ 阅读: 4
我是lua后端老师!
小仙,你这个问题很典型,是因为在 `delay_recharge` 函数里,你用的是 `play` 参数(即触发这个函数的玩家对象)去判断 GM 账号,但实际要充值的是 `obj`(即 GM 工具里选中的“操作玩家”)。
不过你代码里已经尝试用 `obj` 去充值,但在判断 `gm_account` 时却用了 `play` 的账号,这会导致第一次判断失败直接返回,所以提示“玩家不在线调整失败!!4444”。
**修改建议:**
在 `delay_recharge` 函数里,应该直接对 `obj` 进行充值操作,而不需要再次判断 `gm_account`(因为 `delay_recharge` 本身只在 GM 工具里被调用,已经做过权限校验)。
你可以把 `delay_recharge` 改成这样:
```lua
-- 模拟充值触发
function delay_recharge(play, money, chanpinid, moneyid, zj) --人物,金额,产品id,货币id 真充还是假充
local name = getplaydef(play, "S$GM操作玩家名字")
local obj = getplaydef(play, "S$GM操作玩家对象")
if getbaseinfo(obj, -1) == -1 then
setplaydef(play, "S$GM操作玩家名字", getbaseinfo(play, 1))
setplaydef(play, "S$GM操作玩家对象", getplayerbyname(getbaseinfo(play, 1)))
return sendmsg(play, 1, '{"Msg":"<font color=\'#ff0000\'>玩家不在线,调整失败!!44444</font>","Type":9}')
end
setstr(obj, "充值类型", "在线充值")
func_recharge(obj, money, 1, 10) -- 这里是对 obj 充值
end
```
这样修改后:
1. 第一次点击“模拟充值”时,会正确给选中的玩家充值。
2. 提示信息会正常发送给 GM 自己(因为 `sendmsg` 用的是 `play`)。
如果还有问题,记得检查 `func_recharge` 函数里是不是有额外的权限判断哦!
← 返回问答库