--[[
[author]
class=1
descript="Զȡ񣨴ɱǡľׯ翷塢룩ԶӦűɸֱӦűϽá翷Ӧǡ⸱Ʈ(С) á"
]]--


local l_XukongMission = 
{
	[0] = {name = "սɱ" , vin = "սɱ" , nFubenMap = 546 , subScript = "⸱ɱ.txt" , subParam = "⸱ɱ" } ,
	[1] = {name = "սľׯ" , vin = "սľׯ"  , nFubenMap = 291 , subScript = "⸱ľׯ.txt" , subParam = "⸱ľׯ"} ,
	[2] = {name = "ս翷" , vin = "ս翷" , nFubenMap = 261 , subScript = "⸱Ʈ(С).txt" , subParam = "⸱Ʈ(С)"} ,
	[3] = {name = "ս" , vin = "ս" , nFubenMap = 111 , subScript = "⸱.txt" , subParam = "⸱"}
}

local l_XukongPos =
{
	[0] = {name = "" , mapid = 0 , x = 219 , y = 245 } ,
	[1] = {name = "" , mapid = 2 , x = 206 , y = 56 } ,
	[2] = {name = "»" , mapid = 1 , x = 200 , y = 334} ,
	[3] = {name = "" , mapid = 246 , x = 163 , y = 153}
}

local function IsXukongFuben()

	local nowMap =  GetActiveDataSceneID()
	for i = 0 , 3 do
		if nowMap == l_XukongMission[i].nFubenMap then
			return i
		end
	end
	return INVALID_ID

end

local function GetXukongComplete()
	
	for i = 0 , 3 do
		local nIndex, idMission, idScript = DataPool:GetPlayerMission( l_XukongMission[i].name )

		if nIndex == -1 then
			continue 
		end

		DbgPrintf("%s Index:%d MissionID:%d ScriptID:%d", l_XukongMission[i].name , nIndex, idMission, idScript)

		local nParam = {}
		-- ȡ
		for i=0,7 do
			nParam[i] = DataPool:GetPlayerMission_Variable( nIndex , i)
		end
		
		return i , tonumber(nParam[0]) , idScript
	end

	return INVALID_ID , 0 , 0 
end

g_XukongRet = 0
local function ExeScript( vIndex )
	g_XukongRet = 0
	System:LoadScript( l_XukongMission[vIndex].subScript , l_XukongMission[vIndex].subParam , "" )

	return g_XukongRet
end

local function _breaxukong_kmove( fX , fY , nScene )
	if IsXukongFuben() == INVALID_ID then
		return true 
	end
	return false
end

local function MoveToXukongNPC()
	local nowMap =  GetActiveDataSceneID()

	local vPos = 0 
	for i = 0 , 3 do 
		if nowMap == l_XukongPos [i].mapid then
			vPos = i
			break
		end
	end

	MoveToNPC( l_XukongPos [vPos].x , l_XukongPos [vPos].y , l_XukongPos [vPos].mapid , l_XukongPos [vPos].name , true , true , _breaxukong_kmove )			
end

local l_today_mission = ""

local function AcceptXukongMission( vIndex )

	MoveToXukongNPC()

	local sOpt1 = tostring(GetQuestFrameOption(1))
	if string.find( sOpt1 , "ս") then
	else
		sOpt1 = ""
	end

	local vSel = ""

	if vIndex ~= INVALID_ID then
	
		local sOpt2 = tostring(GetQuestFrameOption(2))
		if string.find( sOpt2 , "ս") then
		else
			sOpt2 = ""
		end

		if sOpt1 == l_XukongMission[vIndex].vin then
			if sOpt2 ~= "" then
				vSel = sOpt2
			else
				vSel = sOpt1
			end
		elseif sOpt2 == l_XukongMission[vIndex].vin then
			if sOpt1 ~= "" then
				vSel = sOpt1
			else
				vSel = sOpt2
			end
		end
	else
		vSel = sOpt1
	end

	if vSel ~= "" then
		l_today_mission = vSel
		QuestFrameOptionClicked( vSel , CMP_FULL_MATCH)
		QuestFrameAcceptClicked()		
	end

end

local function _XuKong()

	local vGet = INVALID_ID
	--ǷҪǰ
	local vFangqi = false

	vGet = GetQuestTimesInfo("")
	if vGet == 1 then
		vFangqi = true
	end
	
	while true do

		System:Sleep(1000)

		local vFuben = IsXukongFuben()

		if vFuben ~= INVALID_ID then
			if ExeScript( vFuben ) ~= 0 then
				break
			end
		else
			local vXukongPos , vDone , vIdScript = GetXukongComplete()

			if vXukongPos ~= INVALID_ID then

				if vDone == 1 then

					MoveToXukongNPC()
					QuestFrameOptionClicked( l_XukongMission[vXukongPos].name , CMP_FULL_MATCH)
					QuestFrameMissionComplete()	-- 	

					local strType,_,_,_,szText = DataPool:GetNPCEventList_Item(0)

					if strType == "text" then
						if string.find(szText , "λ") then
							ShowMessage("ո,ͣű") 
							break
						end
					end

				elseif vDone == 0 then
					if vFangqi == false then
						--ǰ
						if ExeScript( vXukongPos ) ~= 0 then
							break
						end
					else
						--Ѿ
						ShowMessage(" %s Ѿ,Զ" , tostring(l_XukongMission[vXukongPos].name))
						QuestFrameMissionAbnegate(vIdScript)
					end
				else
					QuestFrameMissionAbnegate(vIdScript)
				end
			else	
				if vGet == 0 then
					ShowMessage("Ѿ")
					break
				elseif vGet ~= INVALID_ID then

					vFangqi = false

					AcceptXukongMission(INVALID_ID)

					local strType,_,_,_,szText = DataPool:GetNPCEventList_Item(0)

					if strType == "text" then
						if string.find(szText, "") then
							ShowMessage("Ѿ")
							break	-- ˳ѭű
						end
					end
				end			
			end
		end
	end
			
end

_XuKong()