📄 missionsdk.lua
字号:
if Profession[pf][n] == newpf then
--该职业允许转职
flag = 1
break
end
end
--判断是否可以转职
if flag ~= 1 then
PRINT( "CheckConvertProfession: return false" )
return LUA_FALSE
end
else
PRINT( "CheckConvertProfession: return false fo Profession[pf] == nil " )
return LUA_FALSE
end
end
PRINT( "CheckConvertProfession: Category check cat =, newpf = ", cat, newpf )
--检测是否有体形限制
if Category ~= nil and Category[cat] ~= nil then
local flag = 0
for n = 1, Category[cat].count, 1 do
PRINT( "CheckConvertProfession:n = , newpf = , catpf = ", n, newpf, Category[cat][n] )
if Category[cat][n] == newpf then
PRINT( "CheckConvertProfession: return false" )
flag = 1
break
end
end
if flag ~= 1 then
PRINT( "CheckConvertProfession: return false" )
return LUA_FALSE
end
else
PRINT( "CheckConvertProfession: return false fo Category[cat] == nil " )
end
PRINT( "CheckConvertProfession: return true" )
return LUA_TRUE
end
--中断任务
function CancelMission( character, id, sid )
PRINT( "CancelMission, sid = ", sid )
if sid == nil or Mission[sid] == nil then
PRINT( "CancelMission: abandoned quest function parameter cannot be as null!sid = "..sid )
SystemNotice( character, "CancelMission: abandoned quest function parameter cannot be as null!sid = "..sid )
LG( "mission_error", "CancelMission: abandoned quest function parameter cannot be as null!sid = "..sid )
local ret = ClearMission( character, id )
if ret ~= LUA_TRUE then
LG( "mission_error", "CancelMission: delete character target quest notice failed!charname = , id = , sid = ", GetCharName( character ), id, sid )
else
SystemNotice( character, "has cleared invalid quest notice !ID = "..sid )
LG( "mission_error", "CancelMission: clear target character quest notice successful!charname = , id = , sid = ", GetCharName( character ), id, sid )
end
return LUA_FALSE
end
local mission = Mission[sid]
PRINT( "CancelMission:mission.cancel", mission.cancel )
if mission.tp == NOMAL_MISSION or mission.tp == WORLD_MISSION then
if mission.cancel == nil then
PRINT( "CancelMission: Target quest has not cancel operation. Return true" )
return LUA_TRUE
end
local ret = NpcCancelTrigger( character, mission.cancel, mission.id, mission.sid )
if ret ~= LUA_TRUE then
PRINT( "CancelMission:NpcCancelTrigger accept deliver quest trigger failed!" )
SystemNotice( character, "CancelMission:NpcCancelTrigger accept deliver quest trigger failed!" )
return LUA_FALSE
end
PRINT( "CancelMission: NpcTrigger, return true" )
elseif mission.tp == RAND_MISSION then
--初始化全局随机任务参数
InitRandParam()
--获取角色的随机任务配置信息
PRINT( "CancelMission:GetRandMission, id = ", id )
local ret
RandParam.id = id
ret, RandParam.tp, RandParam.level, RandParam.exp, RandParam.money, RandParam.prizedata, RandParam.prizetp, RandParam.numdata = GetRandMission( character, id )
if ret ~= LUA_TRUE then
PRINT( "CancelMission:GetRandMission error." )
SystemNotice( character, "CancelMission:GetRandMission error." )
return LUA_FALSE
end
PRINT( "CancelMission:tp, level, exp, money, item, numdata", RandParam.tp, RandParam.level, RandParam.exp, RandParam.money, RandParam.prizedata, RandParam.prizetp, RandParam.numdata )
local index = GetRandMissionTypeIndex( mission, RandParam.tp )
PRINT( "CancelMission:GetRandMissionTypeIndex index = ", index )
if index == 0 then
PRINT( "CancelMission: obtain random quest matching type notice failed!" )
SystemNotice( character, "CancelMission: obtain random quest matching type notice failed!" )
return LUA_FALSE
end
if mission.missionlist == nil or mission.missionlist[index] == nil then
PRINT( "CancelMission:random quest: quest notice error!mission.missionlist = , tpindex = ", mission.missionlist, index )
SystemNotice( character, "CancelMission:random quest: quest notice error!mission.missionlist = , tpindex = ", mission.missionlist, index )
return LUA_FALSE
end
if mission.missionlist[index].cancel == nil then
PRINT( "CancelMission: Target quest has not cancel operation. Return true" )
return LUA_TRUE
end
ret = NpcCancelTrigger( character, mission.missionlist[index].cancel, mission.id, mission.sid )
if ret ~= LUA_TRUE then
PRINT( "CancelMission:NpcCancelTrigger accept deliver quest trigger failed!" )
SystemNotice( character, "CancelMission:NpcCancelTrigger accept deliver quest trigger failed!" )
return LUA_FALSE
end
PRINT( "CancelMission: random quest: NpcCancelTrigger, return true" )
else
PRINT( "CancelMission:incorrect quest type notice.ID = "..mission.sid )
SystemNotice( character, "CancelMission:incorrect quest type notice.ID = "..mission.sid )
return LUA_FALSE
end
return LUA_TRUE
end
--接受任务
function AcceptMission( character, npc, missionlist, tpindex )
PRINT( "AcceptMission" )
local npcid = GetCharID( npc )
local ret, id, state, tp = GetMissionTempInfo( character, npcid )
if ret ~= LUA_TRUE then
SystemNotice( character, "AcceptMission: obtain character dialogue temporary quest notice error!" )
return LUA_FALSE
end
local mission
if tp == WORLD_MISSION then
if Mission[id] == nil then
SystemNotice( character, "AcceptMission: Obtain character incorrect world quest index notice!ID = "..id )
LG( "mission_error", "AcceptMission: Obtain character incorrect world quest index notice!ID = "..id )
return LUA_FALSE
end
mission = Mission[id]
else
if missionlist[id] == nil then
PRINT( "AcceptMission:obtain character incorrect common quest index notice!ID = "..id )
SystemNotice( character, "AcceptMission:obtain character incorrect common quest index notice!ID = "..id )
LG( "mission_error", "AcceptMission:obtain character incorrect common quest index notice!ID = "..id )
return LUA_FALSE
end
if missionlist == nil then
PRINT( "AcceptMission:Function parameter error!missionlist = "..missionlist )
SystemNotice( character, "AcceptMission:Function parameter error!missionlist = "..missionlist )
LG( "mission_error", "AcceptMission:Function parameter error!missionlist = "..missionlist )
return LUA_ERROR
end
mission = missionlist[id]
end
if mission.begin == nil then
PRINT( "AcceptMission: obtain character incorrect quest start trigger notice! ID = "..id )
SystemNotice( character, "AcceptMission: obtain character incorrect quest start trigger notice!" )
LG( "mission_error", "AcceptMission: obtain character incorrect quest start trigger notice! ID = "..id )
return LUA_FALSE
end
PRINT( "AcceptMission:npcid = %d ", npcid )
if mission.tp == NOMAL_MISSION or mission.tp == WORLD_MISSION then
PRINT( "AcceptMission: Required number of empty slots in inventory: numgrid = ", mission.begin.baggrid )
local ret = HasLeaveBagGrid( character, mission.begin.baggrid )
if ret ~= LUA_TRUE then
PRINT( "AcceptMission: insufficient inventory slot when character accept quest! num = ", mission.begin.baggrid )
BickerNotice( character, "Inventory space insufficient, requires"..mission.begin.baggrid.."space. Activation of quest failed!" )
return LUA_FALSE
end
local ret = NpcTrigger( character, npc, mission.begin, mission.id, mission.sid )
if ret ~= LUA_TRUE then
PRINT( "AcceptMission:NpcTrigger accept quest trigger management failed!" )
SystemNotice( character, "AcceptMission:NpcTrigger accept quest trigger management failed!" )
return LUA_FALSE
end
PRINT( "AcceptMission: NpcTrigger, return true" )
elseif mission.tp == RAND_MISSION then
if mission.missionlist == nil or mission.missionlist[tpindex] == nil or mission.missionlist[tpindex].begin.baggrid == nil then
PRINT( "AcceptMission:random quest: quest notice error!mission.missionlist = , tpindex = ", mission.missionlist, tpindex )
SystemNotice( character, "AcceptMission:random quest: quest notice error!mission.missionlist = , tpindex = ", mission.missionlist, tpindex )
return LUA_FALSE
end
PRINT( "AcceptMission: Required number of empty slots in inventory: numgrid = ", mission.missionlist[tpindex].begin.baggrid )
local numgrid = mission.missionlist[tpindex].begin.baggrid
local ret = HasLeaveBagGrid( character, numgrid )
if ret ~= LUA_TRUE then
PRINT( "AcceptMission: insufficient inventory slot when character accept quest! num = ", numgrid )
BickerNotice( character, "Inventory space insufficient, requires"..numgrid.."space. Activation of quest failed!" )
return LUA_FALSE
end
ret = NpcTrigger( character, npc, mission.missionlist[tpindex].begin, mission.id, mission.sid )
if ret ~= LUA_TRUE then
PRINT( "AcceptMission:NpcTrigger accept quest trigger management failed!" )
SystemNotice( character, "AcceptMission:NpcTrigger accept quest trigger management failed!" )
return LUA_FALSE
end
PRINT( "AcceptMission: Random quest: NpcTrigger, return true" )
else
PRINT( "AcceptMission: Incorrect quest type notice. ID = "..mission.sid )
SystemNotice( character, "AcceptMission: Incorrect quest type notice. ID = "..mission.sid )
return LUA_FALSE
end
if tp ~= WORLD_MISSION then
ret = RefreshMissionState( character, npc )
if ret ~= LUA_TRUE then
PRINT( "AcceptMission:random quest: RefreshMissionState accept quest reset npc quest status failed!" )
SystemNotice( character, "AcceptMission:random quest: RefreshMissionState accept quest change npc quest status failed!" )
return LUA_FALSE
end
end
return LUA_TRUE
end
--完成任务
function CompleteMission( character, npc, missionlist, selitem, param )
PRINT( "CompleteMission" )
if missionlist == nil then
SystemNotice( character, "CompleteMission:Function parameter error!" )
return LUA_ERROR
end
local npcid = GetCharID( npc )
local ret, id, state, tp = GetMissionTempInfo( character, npcid )
if ret ~= LUA_TRUE then
SystemNotice( character, "CompleteMission:obtain character dialogue quest notice error!" )
return LUA_FALSE
end
local mission
if tp == WORLD_MISSION then
if Mission[id] == nil then
SystemNotice( character, "CompleteMission: Obtain character error world quest index notice! ID = "..id )
LG( "mission_error", "CompleteMission: Obtain character error world quest index notice! ID = "..id )
return LUA_FALSE
end
mission = Mission[id]
else
if missionlist[id] == nil then
SystemNotice( character, "CompleteMission:obtain character incorrect common quest index notice!ID = "..id )
LG( "mission_error", "CompleteMission:obtain character incorrect common quest index notice!ID = "..id )
return LUA_FALSE
end
mission = missionlist[id]
end
local ret = HasMisssionFailure( character, mission.id )
if ret == LUA_TRUE then
BickerNotice( character, "Quest\""..mission.name.."\" has failed, please select to abandon to clear quest log!" )
return LUA_TRUE
end
if mission.tp == NOMAL_MISSION or mission.tp == WORLD_MISSION then
PRINT( "CompleteMission: empty slot of inventory required: numgrid = ", mission.result.baggrid )
local ret = HasLeaveBagGrid( character, mission.result.baggrid )
if ret ~= LUA_TRUE then
PRINT( "CompleteMission: insufficient inventory slot when character completes quest! num = ", mission.result.baggrid )
BickerNotice( character, "Inventory space insufficient, requires"..mission.result.baggrid.."1 slot. Completion of quest failed!" )
return LUA_FALSE
end
local ret = NpcTrigger( character, npc, mission.result, mission.id, mission.sid )
if ret ~= LUA_TRUE then
PRINT( "CompleteMission:NpcTriggerfunction manage delievery trigger failed!" )
SystemNotice( character, "CompleteMission:NpcTriggerfunction manage delievery trigger failed!" )
return LUA_FALSE
end
PRINT( "CompleteMission:prize count = "..mission.prize.count )
if mission.prize.count > 0 then
local ret = MisPrizeProc( character, npc, mission, selitem, param )
if ret ~= LUA_TRUE then
PRINT( "CompleteMission:MisPrizeProcfunction manage quest reward failed!" )
SystemNotice( character, "CompleteMission:MisPrizeProcfunction manage quest reward failed!" )
end
end
elseif mission.tp == RAND_MISSION then
local ret, index, loopdata = GetCharRandMission( character, mission.id, mission )
if ret ~= LUA_TRUE or index == 0 then
--根据随机任务参数生成随机任务信息错误
PRINT( "CompleteMission:GetcharRandMission, according to random quest parameter generate random quest notice error!" )
SystemNotice( character, "CompleteMission:GetcharRandMission, according to random quest parameter generate random quest notice error!" )
return LUA_FALSE
end
PRINT( "CompleteMission: empty slot of inventory required: numgrid = ", mission.missionlist[index].result.baggrid )
local numgrid = mission.missionlist[index].result.baggrid
local ret = HasLeaveBagGrid( character, numgrid )
if ret ~= LUA_TRUE then
PRINT( "CompleteMission: insufficient inventory slot when character accept quest! num = ", numgrid )
BickerNotice( character, "Inventory space insufficient, requires"..numgrid.."1 slot. Completion of quest failed!" )
return LUA_FALSE
end
local ret = NpcTrigger( character, npc, mission.missionlist[index].result, mission.id, mission.sid )
if ret ~= LUA_TRUE then
PRINT( "CompleteMission:random quest: NpcTriggerfunction manage deliver quest trigger failed!" )
SystemNotice( character, "CompleteMission:random quest: NpcTriggerfunction manage deliver quest trigger failed!" )
return LUA_FALSE
end
PRINT( "CompleteMission:prize count = "..mission.missionlist[index].prize.count )
if mission.missionlist[index].prize.count > 0 then
local ret = MisPrizeProc( character, npc, mission.missionlist[index], selitem, param )
if ret ~= LUA_TRUE then
PRINT( "CompleteMission:MisPrizeProcfunction manage quest reward failed!" )
SystemNotice( character, "CompleteMission:MisPrizeProcfunction manage quest reward failed!" )
end
end
PRINT( "CompleteMission:CompleteRandMission, id = ", mission.id )
ret = CompleteRandMissionCount( character, mission.id )
if ret ~= LUA_TRUE then
PRINT( "CompleteRandMission:random quest completion completes calculation function transfer failed: misid = ", mission.id )
LG( "randmission_error", "CompleteRandMission:random quest completion completes calculation function transfer failed: misid = ", mission.id )
end
--判断是否跑环结束
local ret, loopnum = GetRandMissionNum( character, mission.id )
if ret ~= LUA_TRUE then
PRINT( "CompleteRandMission:GetRandMissionNum function transfer failed. Unable to obtain character random quest loop count!id = ", id )
LG( "randmission_error", "CompleteRandMission:GetRandMissionNum function transfer failed. Unable to obtain character random quest loop count!id = ", id )
SystemNotice( character, "CompleteRandMission:GetRandMissionNum function transfer failed. Unable to obtain character random quest loop count!id = "..id )
--清除该角色该随机任务计数
ResetRandMissionNum( character, mission.id )
else
loopnum = loopnum + 1 --转换为lua数组索引
PRINT( "CompleteRandMission:loopnum, loopinfo", loopnum, mission.loopinfo[loopnum] )
if loopdata == nil or mission.loopinfo[loopnum] == nil then
PRINT( "CompleteRandMission: quest cycle data error!loopnum = "..loopnum.." id = "..mission.id.." loopdata = "..loopdata )
LG( "randmission_error", "CompleteRandMission: quest cycle data error!loopnum = "..loopnum.." id = "..mission.id.." loopdata = "..loopdata )
SystemNotice( character, "CompleteRandMission: quest cycle data error!loopnum = "..loopnum.." id = "..mission.id.." loopdata = "..loopdata )
ResetRandMissionNum( character, mission.id )
return LUA_FALSE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -