ShowMessage("ٻԵű汾 $Rev: 300 $")



--[[
[author]
perday_max=1
]]--
script_name="ٻԵ"

-- Ҫò
local MAX_ROUND_BAIHUAYUAN = 20 -- ִѭ

local g_szMission = "ٻԵ"
local g_nParam = {}
local g_nIndex = -1
local g_idMission = 0
local g_idScript = 0
local g_dwNextTime = 0
local g_NpcInfo = {
	[0] = {szNpcName="", fX=185, fY=65, nSceneID=2},
	[1] = {szNpcName="", fX=224, fY=296, nSceneID=0},
}





function OnMission_808200_0()
	ShowMessage("ű޷")
end

local g_BaiHuaYuan_Pos = {
	[182] = { {x=69,y=42},{x=42,y=66},{x=56,y=147},{x=65,y=118},{x=62,y=87},{x=129,y=57},{x=133,y=143} },	-- ¸
	[184] = { {x=97,y=33},{x=42,y=36},{x=38,y=150},{x=158,y=140},{x=145,y=35},{x=97,y=92} },	-- 
	[185] = { {x=70,y=82},{x=100,y=128},{x=78,y=46},{x=94,y=59},{x=79,y=127},{x=75,y=135} },	-- 䵱
	[186] = { {x=152,y=35},{x=42,y=43},{x=64,y=150},{x=149,y=154},{x=150,y=90} },	-- ¸
	[187] = { {x=52,y=148},{x=89,y=124},{x=50,y=60},{x=142,y=42},{x=148,y=150} },	-- ң
	[189] = { {x=67,y=143},{x=53,y=48},{x=95,y=50},{x=126,y=73},{x=140,y=93},{x=142,y=142},{x=95,y=127} },	-- 
	[190] = { {x=95,y=141},{x=60,y=35},{x=74,y=67},{x=39,y=37},{x=41,y=145},{x=95,y=99},{x=146,y=140},{x=151,y=67} },	-- ɽ
}

local g_BaiHuaYuan_Transfer = {
	[182] = {x=96,y=157},	-- ¸
	[184] = {x=98,y=163},	-- 
	[185] = {x=95,y=192},	-- 䵱
	[186] = {x=95,y=140},	-- ¸
	[187] = {x=39,y=130},	-- ң
	[189] = {x=95,y=143},	-- 
	[190] = {x=95,y=150},	-- ɽ
}

local g_BaiHuaYuan_Opt = {
	[9] = "ľ˶",		-- 
	[11] = "ȥֵΧ",		-- 
	[12] = "ȥսħ",		-- 䵱
	[13] = "ȥս",		-- 
	[14] = "ȥʶ",	-- ң
	[16] = "֩",		-- 
	[17] = "ȥѩ",		-- ɽ
}

function OnMission_808200_1()

	local nCurScene = GetActiveDataSceneID()

	-- AIΪɼ
	AI:SetAI("ɼ")
	AI:SetParameter("ʼ")
	-- òɼ
	AI:SetParameter("Ŀ", "", "ϡеĻ")
	
	if g_BaiHuaYuan_Pos[nCurScene] ~= nil then

		if nCurScene == 189 then
			MoveTo(95, 133, -1, "", 1)
		end

		AI:SetParameter("ͼ", nCurScene)

		local CaiJi = g_BaiHuaYuan_Pos[nCurScene]

		for i, v in ipairs(CaiJi) do
			AI:SetParameter("", "", v.x, v.y)
		end

		AI:Start(false)
		while true  do
			if DataPool:IsMissionCanCommit(g_idMission) or GetActiveDataSceneID() ~= nCurScene then
				break
			end
			System:Sleep(200)
		end
		AI:Stop()

	else

		local szPosString = DataPool:GetPlayerMission_StrList(g_nIndex , g_nParam[6])

		if szPosString == nil then
			ShowMessage("ٻԵ޷Ҫȡ÷ʵNPCַ")
			return
		end

		local fX = 0
		local fY = 0
		local nSceneID = 0
		local szNpcName = ""

		-- ⴦ȡóӵĵַ
		if string.find(szPosString, "_INFOAIM") then	-- Ʒûгӣؿֵ
			
			szPosString = string.gsub(szPosString, "_INFOAIM", "")

			 _, _, fX, fY, nSceneID, szNpcName = string.find(szPosString, "{(%d+),(%d+),(%d+),(.+)}")

			if szNpcName == "-1" then
				szNpcName = ""
			end
		end

		if szNpcName == "" then
			ShowMessage("ٻԵ޷ҪʵNPC")
			return
		end

		MoveToNPC(tonumber(fX), tonumber(fY), tonumber(nSceneID), szNpcName)

		if g_BaiHuaYuan_Opt[nCurScene] == nil then
			ShowMessage("ٻԵûҵԻѡ[%d]", nCurScene)
		else
			QuestFrameOptionClicked(g_BaiHuaYuan_Opt[nCurScene], CMP_PART_MATCH)
		end

		-- ϵͳ׽MessageBoxֻ⴦һ
		if UI:IsWindowShow("MessageBox_Self") then
			DoLuaString("MessageBox_Self_Env", "MessageBox_Self_OK_Clicked()")
			System:Sleep(1000)
		end
	end
end

function OnMission_808200_2()

	local nSceneID = DataBase:GetSceneID("̫")

	if GetActiveDataSceneID() ~= nSceneID then
		MoveTo(215, 270, nSceneID)
	end
	
	-- AIΪɼ
	AI:SetAI("ɼ")
	AI:SetParameter("ʼ")
	-- òɼ
	AI:SetParameter("Ŀ", "", "ٺϻ")
	AI:SetParameter("ͼ", nSceneID)
	-- òɼѲ
	AI:SetParameter("", "", 215, 270)
	AI:SetParameter("", "", 138, 261)
	AI:SetParameter("", "", 40, 276)
	AI:SetParameter("", "", 113, 210)
	AI:SetParameter("", "", 144, 141)
	AI:SetParameter("", "", 114, 38)
	AI:SetParameter("", "", 198, 65)
	AI:SetParameter("", "", 185, 148)
	AI:SetParameter("", "", 245, 230)
	AI:SetParameter("", "", 275, 66)

	AI:Start(false)
	while true  do
		if DataPool:IsMissionCanCommit(g_idMission) or GetActiveDataSceneID() ~= nSceneID then break end
		System:Sleep(200)
	end
	AI:Stop()

end

function OnMission_808200_3()

	local szPosString = DataPool:GetPlayerMission_StrList(g_nIndex , g_nParam[6])

	if szPosString == nil then
		ShowMessage("ٻԵ޷Ҫȡ÷ʵNPCַ")
		return
	end

	DbgPrintf("%s", szPosString)

	local fX, fY, nSceneID, szNpcName

	-- ⴦ȡóӵĵַ
	if string.find(szPosString, "_INFOAIM") then	-- Ʒûгӣؿֵ
		
		szPosString = string.gsub(szPosString, "_INFOAIM", "")

		 _, _, fX, fY, nSceneID, szNpcName = string.find(szPosString, "{(%d+),(%d+),(%d+),(.+)}")

		if szNpcName == "-1" then
			szNpcName = ""
		end
	end

	if szNpcName == "" then
		ShowMessage("ٻԵ޷ҪʵNPCݡ")
		return
	end

	if ( tonumber(nSceneID) == 1 and tonumber(fX) == 166 and tonumber(fY) == 311 ) then
		-- ֹ
		ShowMessage("Ѱ 157 , 356 Էֹ")
		MoveTo( 157 , 356 , 1 , "" , 1 )
		ShowMessage("ת")
		local xNow, yNow = Player:GetPos()
		DbgPrintf("ǰ %d %d" , xNow , yNow)
		System:Sleep(2000)
	end
	MoveToNPC(tonumber(fX), tonumber(fY), tonumber(nSceneID), szNpcName)
	QuestFrameOptionClicked(g_szMission, CMP_PART_MATCH)	-- ѡѡ
	System:Sleep(1000)
end

function OnMission_808200_4()

	local nItemTableID = 30101039	-- Ǽ

	-- жǷԹƷ
	if Player:GetData("MONEY") < 1497 and Player:GetData("JIAOZI") < 1497 then
		ShowMessage(string.format("ٻԵ񣺽Ҳ㣬޷Ʒ"))
		MissionBlockProcess(g_idScript)
		return
	end

	if DataPool:UserBag_CountItemByIDTable(nItemTableID) < 1 then

		MoveToNPC(g_NpcInfo[1].fX, g_NpcInfo[1].fY, g_NpcInfo[1].nSceneID, g_NpcInfo[1].szNpcName)
		QuestFrameOptionClicked("", CMP_PART_MATCH)
		ShopBuy(nItemTableID, 1)
	end
end

function OnMission_808200_5()

	local nCurScene = GetActiveDataSceneID()

	AI:SetAI("ɱ")
	AI:SetParameter("ʼ")
	
	if g_BaiHuaYuan_Pos[nCurScene] ~= nil then

		AI:SetParameter("ͼ", nCurScene)

		local CaiJi = g_BaiHuaYuan_Pos[nCurScene]

		for i, v in ipairs(CaiJi) do
			AI:SetParameter("", "", v.x, v.y)
		end
		AI:SetParameter("ʰȡ" , "ָ" , "ʧС")

		AI:Start(false)
		while true  do
			if DataPool:IsMissionCanCommit(g_idMission) or GetActiveDataSceneID() ~= nCurScene then
				break
			end
			System:Sleep(200)
		end
		AI:Stop()

	else

		local szPosString = DataPool:GetPlayerMission_StrList(g_nIndex , g_nParam[6])

		if szPosString == nil then
			ShowMessage("ٻԵ޷Ҫȡ÷ʵNPCַ")
			return
		end

		local fX = 0
		local fY = 0
		local nSceneID = 0
		local szNpcName = ""

		-- ⴦ȡóӵĵַ
		if string.find(szPosString, "_INFOAIM") then	-- Ʒûгӣؿֵ
			
			szPosString = string.gsub(szPosString, "_INFOAIM", "")

			 _, _, fX, fY, nSceneID, szNpcName = string.find(szPosString, "{(%d+),(%d+),(%d+),(.+)}")

			if szNpcName == "-1" then
				szNpcName = ""
			end
		end

		if szNpcName == "" then
			ShowMessage("ٻԵ޷ҪʵNPC")
			return
		end

		MoveToNPC(tonumber(fX), tonumber(fY), tonumber(nSceneID), szNpcName)

		if g_BaiHuaYuan_Opt[nCurScene] == nil then
			ShowMessage("ٻԵûҵԻѡ[%d]", nCurScene)
		else
			QuestFrameOptionClicked(g_BaiHuaYuan_Opt[nCurScene], CMP_PART_MATCH)
		end

		-- ϵͳ׽MessageBoxֻ⴦һ
		if UI:IsWindowShow("MessageBox_Self") then
			DoLuaString("MessageBox_Self_Env", "MessageBox_Self_OK_Clicked()")
			System:Sleep(1000)
		end
	end
end

function _SMain(...)

	local IsGetFollowerSeed = false 
	if arg.n == 1 then
		MAX_ROUND_BAIHUAYUAN = arg[1]
	end

	if Player:GetData("LEVEL") < 30 then
		ShowMessage("ٻԵҪ30")
		return
	end

	while true do

		g_nIndex, g_idMission, g_idScript = DataPool:GetPlayerMission(g_szMission)

		if g_nIndex ~= -1 then

			DbgPrintf("%s Index:%d MissionID:%d ScriptID:%d", g_szMission, g_nIndex, g_idMission, g_idScript)

			-- ȡ
			for i=0,7 do
				g_nParam[i] = DataPool:GetPlayerMission_Variable(g_nIndex, i)
				DbgPrintf("[%d]%d", i, g_nParam[i])
			end

			if DataPool:IsMissionCanCommit(g_idMission) then

				-- 
				DbgPrintf("")
				
				local nSceneID = GetActiveDataSceneID()

				MoveToNPC(g_NpcInfo[0].fX, g_NpcInfo[0].fY, g_NpcInfo[0].nSceneID, g_NpcInfo[0].szNpcName)
				QuestFrameOptionClicked("ûʺͻ", CMP_PART_MATCH)	-- ѡѡ
				QuestFrameOptionClicked(g_szMission, CMP_PART_MATCH)	-- ѡѡ
				QuestFrameMissionComplete()
				QuestFrameMissionClose()
				System:Sleep(1000)
				if FindDebugMessage( "ռ䲻" ) == true then
					ShowMessage( "޷,Զֹͣű" )
					break
				end

			else
				-- жϵǰ
				local nRound = GetMissionRound(g_nIndex)
				if nRound > MAX_ROUND_BAIHUAYUAN then
					QuestFrameMissionAbnegate(g_idScript)
					ShowMessage(string.format("%sѾ%d", g_szMission, MAX_ROUND_BAIHUAYUAN))
					System:UpdateRecord( script_name )
					break
				end

				local nFunc = g_nParam[4]

				if nFunc == 0 then

					OnMission_808200_0()

				elseif nFunc == 1 then
					
					OnMission_808200_1()

				elseif nFunc == 2 then
					
					OnMission_808200_2()

				elseif nFunc == 3 then
					
					OnMission_808200_3()

				elseif nFunc == 4 then
					
					OnMission_808200_4()

				elseif nFunc == 5 then
					
					OnMission_808200_5()
				end
			end
		else
			if IsGetFollowerSeed == false then
				if IsMsgCold( "LingQuHuaZhong" , 15*60*1000 ) then
					UpdateMsg( "LingQuHuaZhong" )
					MoveToNPC(g_NpcInfo[0].fX, g_NpcInfo[0].fY, g_NpcInfo[0].nSceneID, g_NpcInfo[0].szNpcName)
					QuestFrameOptionClicked("ȡ", CMP_PART_MATCH)	-- ѡѡ
					System:Sleep(2000)
					if FindQuestFrameText("Ѿȡ" , CMP_PART_MATCH) == true then
						IsGetFollowerSeed = true
					end
				end
			end

			-- ȡ
			MoveToNPC(g_NpcInfo[0].fX, g_NpcInfo[0].fY, g_NpcInfo[0].nSceneID, g_NpcInfo[0].szNpcName)
			QuestFrameOptionClicked("ûʺͻ", CMP_PART_MATCH)	-- ѡѡ
			QuestFrameOptionClicked(g_szMission, CMP_PART_MATCH)	-- ѡѡ
			--QuestFrameMissionContinue()	-- 
			QuestFrameMissionClose()
		end

		System:Sleep(200)
	end
end

_SMain(20)