local task={}
function picktask(actor)
local taskID = gettaskid() -- 获取触发的任务ID,这是一个示例,实际引擎可能提供此函数或通过参数传递
local currentTaskID = lib:getvalueb(actor, "U60") or 0
if taskID == 1 then
release_print(string.format("玩家 %s 接取了击杀怪物
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-04 15:08:13 |
👁️ 阅读: 0
我是lua后端老师!
小仙,你的代码有几个地方需要调整:
1. **`picktask` 函数的参数问题**
引擎触发 `picktask` 时会自动传入任务ID作为第二个参数,不需要自己调用 `gettaskid()`(这个函数不存在)。应该直接使用传入的 `taskID` 参数。
2. **`lib:getvalueb` 和 `lib:msg` 不是引擎内置函数**
应该使用引擎提供的 `getplayvar` 和 `sendmsg` 来替代。
3. **`newchangetask` 参数错误**
`newchangetask` 的第一个替换参数必须是字符串类型,你传了数字 `1`,需要改为字符串 `"1"` 或 `""`(如果不需要替换)。
修正后的代码示例:
```lua
local task = {}
function picktask(actor, taskID) -- 引擎会自动传入任务ID
if taskID == 1 then
release_print(string.format("玩家 %s 接取了击杀怪物任务(ID:1)", actor))
setplayvar(actor, 'U60', 1) -- 初始化任务状态
sendmsg(actor, "你已接取[击杀怪物]任务,请开始狩猎吧!", 1) -- 发送提示
end
end
function task:main(actor)
-- 刷新任务状态,参数依次是:玩家对象、任务ID、10个替换参数(字符串类型)
newchangetask(actor, 1, "", "", "", "", "", "", "", "", "", "")
end
return task
```
**注意:**
- 如果任务需要显示杀怪进度,可以在 `killmon` 触发中更新 `U60` 变量,然后在 `task:main` 里用 `getplayvar(actor, 'U60')` 获取当前值,并作为替换参数传入 `newchangetask`。
- 替换参数必须按顺序填满10个,即使不需要也要传空字符串 `""`。
如果还有其他问题,随时问我哦!
我是lua后端老师!
小仙,你的代码有几个地方需要调整:
1. **`picktask` 函数的参数问题**
引擎触发 `picktask` 时会自动传入任务ID作为第二个参数,不需要自己调用 `gettaskid()`(这个函数不存在)。应该直接使用传入的 `taskID` 参数。
2. **`lib:getvalueb` 和 `lib:msg` 不是引擎内置函数**
应该使用引擎提供的 `getplayvar` 和 `sendmsg` 来替代。
3. **`newchangetask` 参数错误**
`newchangetask` 的第一个替换参数必须是字符串类型,你传了数字 `1`,需要改为字符串 `"1"` 或 `""`(如果不需要替换)。
修正后的代码示例:
```lua
local task = {}
function picktask(actor, taskID) -- 引擎会自动传入任务ID
if taskID == 1 then
release_print(string.format("玩家 %s 接取了击杀怪物任务(ID:1)", actor))
setplayvar(actor, 'U60', 1) -- 初始化任务状态
sendmsg(actor, "你已接取[击杀怪物]任务,请开始狩猎吧!", 1) -- 发送提示
end
end
function task:main(actor)
-- 刷新任务状态,参数依次是:玩家对象、任务ID、10个替换参数(字符串类型)
newchangetask(actor, 1, "", "", "", "", "", "", "", "", "", "")
end
return task
```
**注意:**
- 如果任务需要显示杀怪进度,可以在 `killmon` 触发中更新 `U60` 变量,然后在 `task:main` 里用 `getplayvar(actor, 'U60')` 获取当前值,并作为替换参数传入 `newchangetask`。
- 替换参数必须按顺序填满10个,即使不需要也要传空字符串 `""`。
如果还有其他问题,随时问我哦!
← 返回问答库