任务“勇气”白狼宝箱修复教程
问题现象:
玩家点击“白狼大王的宝箱”后,出现:
已得到 白狼大王的耳环 0/1
已经拿到了耳环,快去交任务吧
或者之前出现:
已经拿到了耳环,快去交任务吧
没找到该任务
没找到该任务
核心原因:
gp_renwu_bailangdawangbaoxiang.lua 原来用了:
self:HaveItem(selfId, 40002066)
但当前服务端的 script_base:HaveItem() 是旧接口残留,固定返回 true,不能用于判断背包是否真的有任务道具。
修复点:
文件:
\ubuntu\tlbb\services\scripts\obj\growpoint\gp_renwu_bailangdawangbaoxiang.lua
核心代码:
local class = require "class"
local ScriptGlobal = require "scripts.ScriptGlobal"
local define = require "define"
local script_base = require "script_base"
local gp_renwu_bailangdawangbaoxiang = class("gp_renwu_bailangdawangbaoxiang", script_base)
gp_renwu_bailangdawangbaoxiang.script_id = 715000
gp_renwu_bailangdawangbaoxiang.g_MissionId = ScriptGlobal.MISSION_546
gp_renwu_bailangdawangbaoxiang.g_IsMissionOkFail = 0
gp_renwu_bailangdawangbaoxiang.g_MainItemId = 40002066
gp_renwu_bailangdawangbaoxiang.g_AlreadyGotText = "已经拿到了耳环,快去交任务吧"
function gp_renwu_bailangdawangbaoxiang:RefreshMissionStateIfHasItem(selfId)
if not self:IsHaveMission(selfId, self.g_MissionId) or not self:HaveItemInBag(selfId, self.g_MainItemId) then
return false
end
local misIndex = self:GetMissionIndexByID(selfId, self.g_MissionId)
if misIndex == define.INVAILD_ID then
return false
end
self:SetMissionByIndex(selfId, misIndex, self.g_IsMissionOkFail, 1)
return true
end
OnOpen 改成:
function gp_renwu_bailangdawangbaoxiang:OnOpen(selfId, targetId)
if self:HaveItemInBag(selfId, self.g_MainItemId) then
if not self:RefreshMissionStateIfHasItem(selfId) then
return define.OPERATE_RESULT.OR_MISSION_NOT_FIND
end
self:BeginEvent(self.script_id)
self:AddText(self.g_AlreadyGotText)
self:EndEvent()
self:DispatchMissionTips(selfId)
return define.OPERATE_RESULT.OR_ERROR
end
if self:IsHaveMission(selfId, self.g_MissionId) then
return define.OPERATE_RESULT.OR_OK
end
return define.OPERATE_RESULT.OR_MISSION_NOT_FIND
end
不要这样写:
self:HaveItem(selfId, self.g_MainItemId)
self:CallScriptFunction(1030082, "PickupItem", selfId, self.g_MainItemId)
原因:
HaveItem() 会误判;PickupItem() 会走通用 LootItem 提示,容易刷出“0/1”这种错误进度提示。
宝箱刷新时间:
tlbb/configs/scene/caoyuan_growpointsetup.txt
49 1 1 60000 0
白狼宝箱 GrowPoint 类型是 49,当前补充间隔是 60000ms,也就是约 60 秒 刷新一次。
脚本 715000 已在 scripts.lua 注册,热重载脚本即可复测,不需要重启服务器。