ShowMessage("͵Ϯɽű $Rev: 213 $")

--[[
[author]
class=2
chk0str=ֻʰȡBoss
]]--


local g_szNpcName = "С"

local g_ShiMenSceneID = {
	--
	[0] = 9,
	--
	[1] = 11,
	--ؤ
	[2] = 10,
	--䵱
	[3] = 12,
	--
	[4] = 15,
	--
	[5] = 16,
	--
	[6] = 13,
	--ɽ
	[7] = 17,
	--ң
	[8] = 14,
	--Ī
	[10] = 284,
	--
	[11] = 615 ,
	--
	[12] = 678
}

local g_FubenSceneID = {
	--
	[0] = 173,
	--
	[1] = 175,
	--ؤ
	[2] = 174,
	--䵱
	[3] = 176,
	--
	[4] = 179,
	--
	[5] = 180,
	--
	[6] = 177,
	--ɽ
	[7] = 181,
	--ң
	[8] = 178,
	--Ī
	[10] = 288,
	--
	[11] = 618 ,
	--
	[12] = 681
}

local g_ScenePos = 
{
	[9] = {{x=95,y=84},{x=70,y=60},{x=67,y=109},{x=95,y=139},{x=128,y=76},{x=133,y=143},{x=154,y=144},{x=149,y=61},{x=48,y=40},{x=46,y=141},{x=66,y=136}},
	[11] = {{x=98,y=108},{x=72,y=139},{x=83,y=154},{x=61,y=117},{x=48,y=97},{x=39,y=37},{x=61,y=36},{x=59,y=79},{x=86,y=56},{x=83,y=39},{x=112,y=38},{x=110,y=58},{x=133,y=51},{x=153,y=37},{x=154,y=59},{x=116,y=139},{x=138,y=158},{x=154,y=78}},
	[10] = {{x=92,y=135},{x=72,y=118},{x=70,y=92},{x=92,y=79},{x=76,y=60},{x=92,y=46},{x=125,y=63},{x=106,y=80},{x=112,y=117},{x=130,y=155},{x=152,y=149},{x=155,y=92},{x=134,y=83},{x=155,y=64},{x=152,y=37},{x=61,y=39},{x=45,y=36},{x=43,y=147}},
	[12] = {{x=78,y=113},{x=96,y=112},{x=105,y=127},{x=78,y=86},{x=47,y=55},{x=81,y=49},{x=97,y=62},{x=80,y=135},{x=90,y=180},{x=50,y=177},{x=46,y=139}},
	[15] = {{x=65,y=107},{x=39,y=152},{x=37,y=108},{x=40,y=46},{x=98,y=39},{x=145,y=106},{x=146,y=153},{x=144,y=43}},
	[16] = {{x=96,y=108},{x=96,y=84},{x=124,y=73},{x=144,y=54},{x=136,y=36},{x=71,y=43},{x=71,y=80},{x=48,y=65},{x=61,y=145},{x=91,y=129},{x=144,y=140},{x=147,y=87},{x=96,y=125}},
	[13] = {{x=96,y=109},{x=66,y=122},{x=64,y=146},{x=42,y=135},{x=24,y=126},{x=40,y=80},{x=53,y=39},{x=153,y=36},{x=96,y=79},{x=154,y=90},{x=154,y=124},{x=118,y=124},{x=96,y=129}},
	[17] = {{x=95,y=80},{x=67,y=100},{x=40,y=147},{x=33,y=95},{x=38,y=44},{x=66,y=80},{x=95,y=100},{x=128,y=98},{x=146,y=140},{x=155,y=45},{x=124,y=69},{x=117,y=51},{x=61,y=42},{x=61,y=65}},
	[14] = {{x=69,y=151},{x=48,y=147},{x=49,y=55},{x=115,y=88},{x=57,y=111},{x=89,y=124},{x=144,y=154},{x=148,y=123},{x=159,y=54},{x=126,y=43}},
	[284] = {{x=69,y=135},{x=52,y=162},{x=29,y=163},{x=29,y=109},{x=54,y=62},{x=31,y=59},{x=87,y=67},{x=30,y=28},{x=131,y=36},{x=167,y=51},{x=161,y=97},{x=157,y=165},{x=134,y=117},{x=83,y=162}},
	[615] = {{x=102,y=72},{x=95,y=102},{x=43,y=147},{x=121,y=119},{x=163,y=156},{x=164,y=35},{x=78,y=41},{x=23,y=23}},		
	[678] = {{x=86,y=131},{x=83,y=104},{x=95,y=65},{x=106,y=103},{x=108,y=153},{x=157,y=152},{x=155,y=42},{x=39,y=71},{x=34,y=119},{x=81,y=143}}
}

local g_FubenPos = 
{
	--
	[173] = {{x=95,y=130},{x=105,y=106},{x=109,y=97},{x=114,y=91},{x=86,y=105},{x=78,y=93},{x=70,y=86},{x=69,y=70},{x=86,y=82},{x=95,y=84},{x=109,y=81},{x=103,y=73},{x=95,y=72},{x=88,y=72}},
	--
	[175] = {{x=98,y=149},{x=98,y=111},{x=88,y=98},{x=93,y=88},{x=106,y=98},{x=102,y=87},{x=113,y=71},{x=104,y=66},{x=83,y=76},{x=84,y=66},{x=89,y=58},{x=105,y=54},{x=97,y=46}},
	--ؤ
	[174] = {{x=48,y=115},{x=43,y=103},{x=39,y=88},{x=59,y=90},{x=48,y=78},{x=42,y=74},{x=40,y=60},{x=57,y=62},{x=60,y=50},{x=75,y=52},{x=71,y=66},{x=80,y=64},{x=83,y=80},{x=76,y=89},{x=68,y=91},{x=74,y=105},{x=87,y=109}},
	--䵱
	[176] = {{x=85,y=169},{x=92,y=172},{x=104,y=166},{x=110,y=167},{x=88,y=137},{x=79,y=137},{x=77,y=118},{x=76,y=112},{x=77,y=105},{x=65,y=109},{x=49,y=94},{x=45,y=60},{x=40,y=55},{x=50,y=56},{x=84,y=57},{x=88,y=52},{x=94,y=50},{x=92,y=62},{x=79,y=46},{x=70,y=99},{x=84,y=99},{x=91,y=112},{x=88,y=96},{x=69,y=83},{x=79,y=83},{x=88,y=83}},
	--
	[179] = {{x=92,y=110},{x=84,y=89},{x=77,y=94},{x=65,y=107},{x=45,y=110},{x=37,y=104},{x=60,y=98},{x=52,y=89},{x=52,y=73},{x=52,y=58},{x=60,y=57},{x=55,y=49},{x=35,y=58},{x=75,y=77},{x=76,y=69},{x=84,y=65}},
	--
	[180] = {{x=96,y=52},{x=73,y=56},{x=67,y=66},{x=72,y=73},{x=85,y=72},{x=96,y=77},{x=106,y=73},{x=96,y=84},{x=91,y=97},{x=101,y=98},{x=95,y=102},{x=96,y=107},{x=96,y=118},{x=90,y=127},{x=91,y=138},{x=101,y=135},{x=96,y=147}},
	--
	[177] = {{x=95,y=115},{x=113,y=110},{x=77,y=108},{x=85,y=93},{x=89,y=87},{x=107,y=93},{x=103,y=87},{x=120,y=71},{x=137,y=58},{x=153,y=38},{x=115,y=35},{x=102,y=35},{x=95,y=41},{x=89,y=36},{x=78,y=35},{x=42,y=56},{x=65,y=69},{x=78,y=55}},
	--ɽ
	[181] = {{x=75,y=122},{x=112,y=122},{x=94,y=116},{x=99,y=97},{x=119,y=96},{x=87,y=97},{x=76,y=98},{x=66,y=97},{x=95,y=83},{x=88,y=71},{x=101,y=70},{x=96,y=58},{x=107,y=49},{x=126,y=49},{x=125,y=35},{x=105,y=42},{x=86,y=54},{x=81,y=47},{x=61,y=35},{x=59,y=58},{x=72,y=65},{x=70,y=48}},
	--ң
	[178] = {{x=64,y=136},{x=72,y=135},{x=79,y=151},{x=45,y=148},{x=49,y=155},{x=107,y=147},{x=126,y=133},{x=143,y=123},{x=126,y=93},{x=122,y=73},{x=104,y=89},{x=152,y=59},{x=70,y=56},{x=58,y=64},{x=54,y=77}},
	--Ľ
	[288] = {{x=142,y=167},{x=141,y=158},{x=141,y=146},{x=140,y=133},{x=145,y=119},{x=154,y=81},{x=153,y=66},{x=165,y=57},{x=167,y=49},{x=158,y=49},{x=139,y=39},{x=131,y=29},{x=125,y=40},{x=114,y=45},{x=69,y=28},{x=60,y=28},{x=48,y=28},{x=56,y=62},{x=46,y=60},{x=55,y=111},{x=69,y=108},{x=70,y=116},{x=87,y=114},{x=86,y=135},{x=69,y=135},{x=58,y=135}},
	--
	[618] = {{x=167,y=158},{x=167,y=138},{x=167,y=121},{x=159,y=100},{x=131,y=72},{x=126,y=66},{x=125,y=62},{x=115,y=65},{x=103,y=77},{x=99,y=63},{x=92,y=65},{x=36,y=74},{x=34,y=75},{x=30,y=69},{x=34,y=84},{x=72,y=53},{x=77,y=45},{x=77,y=34},{x=68,y=40},{x=71,y=35},{x=67,y=32}} ,
	--
	[681] = {{x=95,y=143},{x=78,y=141},{x=59,y=142},{x=50,y=137},{x=32,y=132},{x=39,y=106},{x=40,y=68},{x=63,y=72},{x=94,y=61},{x=145,y=69},{x=160,y=47},{x=154,y=91},{x=150,y=107},{x=147,y=126},{x=148,y=143},{x=114,y=151},{x=108,y=119},{x=95,y=107},{x=83,y=120},{x=76,y=88},{x=114,y=86}} 
}
--,{x=19,y=60},{x=39,y=43},{x=54,y=21}

local g_FubenBoss = 
{
	--
	[173] = {x=95,y=72},
	--
	[175] = {x=97,y=46},
	--ؤ
	[174] = {x=59,y=65},
	--䵱
	[176] = {x=87,y=55},
	--
	[179] = {x=95,y=38},
	--
	[180] = {x=96,y=46},
	--
	[177] = {x=95,y=38},
	--ɽ
	[181] = {x=94,y=42},
	--ң
	[178] = {x=123,y=89},
	--Ľ
	[288] = {x=34,y=164},
	--
	[618] = {x=73,y=41} ,
	--
	[681] = {x=94,y=61} 
}

function IsMenpaiFuben()
	local nCurSceneID = GetActiveDataSceneID()

	for i, v in pairs(g_FubenSceneID) do
		if nCurSceneID == v then return true end
	end
	return false
end

function IsMenpai()
	local nCurSceneID = GetActiveDataSceneID()

	for i, v in pairs(g_ShiMenSceneID) do
		if nCurSceneID == v then return true end
	end
	return false
end

function IsDisciple()
	local nMenPei = Player:GetData("MENPAI")
	if g_ShiMenSceneID[nMenPei] == GetActiveDataSceneID() then
		return true
	end
	return false
end

function FindObject(fX, fY, nScene)
	
	local sid = INVALID_ID
	local name = ""
	local nX = 0
	local nY = 0
	
	sid , name , nX , nY  = LockNearestTarget(g_szNpcName, CHA_TYPE_NPC|CHA_RELATION_FRIEND|CHA_RELATION_ENEMY|CHA_OCCUPANT_FREE|CHA_OCCUPANT_MYSELF|CHA_OCCUPANT_TEAM|CHA_STATE_ALIVE )
		
	if sid == INVALID_ID then
		return INVALID_ID
	end

	return sid,nX,nY
end

local PreRide = false 

function _callback(fX, fY, nScene)

	if GetMount() ~= INVALID_ID then
		if PreRide == false then
			 Player:EnableTeamFollow(true)
			UpdateMsg("CheckTeamFollow")
		else
			if IsMsgCold("CheckTeamFollow" , 10000) == true then
				Player:EnableTeamFollow(true)
				UpdateMsg("CheckTeamFollow")
			end
		end

		PreRide = true 
	else
		if PreRide == true then 
			Player:EnableTeamFollow(false)
			UpdateMsg("CheckTeamFollow_False")
		else
			if IsMsgCold("CheckTeamFollow_False" , 10000) == true then
				Player:EnableTeamFollow(false)
				UpdateMsg("CheckTeamFollow_False")
			end
		end
		PreRide = false
	end


	if FindObject(fX, fY, nScene) == INVALID_ID then
		return true 
	end
 
	return false
end


local g_nIndex, g_idMission, g_idScript 
local g_nParam = {}

function UpdateQuestInfo()
	g_nIndex, g_idMission, g_idScript = DataPool:GetPlayerMission("͵Ϯ")
	if g_nIndex ~= -1 then

		DbgPrintf("%s Index:%d MissionID:%d ScriptID:%d", tostring(script_name), tonumber(g_nIndex), tonumber(g_idMission), tonumber(g_idScript))

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

function SearchFubenScene()

	local nCurSceneID = GetActiveDataSceneID()
	Player:EnableTeamFollow(false)

	UpdateQuestInfo()

	if g_nParam[1] < 30 then
		--DbgPrintf("@1")
		AI:SetAI("ɱ")
		AI:SetParameter("ʼ")
		AI:SetParameter("Ŀ", "", "ආ")
		AI:SetParameter("ͼ", -1)
			
		for i, v in pairs(g_FubenPos[nCurSceneID]) do
			AI:SetParameter("", "", v.x, v.y)
		end

		AI:Start(false)
		
		while IsMenpaiFuben() == true do
			
			UpdateQuestInfo()

			if g_nParam[1] == 30 then
				break
			end

			System:Sleep(200)
		end
			
		AI:Stop()
	end
					
	if g_nParam[1] == 30 and g_nParam[2] == 0 then
		AI:SetAI("ɱ")
		AI:SetParameter("ʼ")
		AI:SetParameter("Ŀ", "", "")
		AI:SetParameter("ͼ", -1)
		AI:SetParameter("", "", g_FubenBoss[nCurSceneID].x, g_FubenBoss[nCurSceneID].y)
			
		AI:Start(false)
		
		while IsMenpaiFuben() == true do

			UpdateQuestInfo()

			if g_nParam[2] == 1 then
				if IsMsgCold("Quest_TXMP_Complete" , 5000) == true then
					break 
				end
			else
				UpdateMsg("Quest_TXMP_Complete")
			end

			System:Sleep(200)
		end
			
		AI:Stop()
	end

end

function SearchMenPaiScene()

	local nCurSceneID = GetActiveDataSceneID()

	for i, v in pairs(g_ScenePos[nCurSceneID]) do
	
		while true do
		
			-- жڸо˳
			if IsMenpai() == false then return end
	
			local xNow, yNow = Player:GetPos()
			local XiaoxiaoID , tX , tY = FindObject( xNow , yNow , CurSceneID )

			if XiaoxiaoID ~= INVALID_ID then
				MoveTo(tX, tY, nCurSceneID, "", 2, true)
				Player:EnableTeamFollow(false)
				QuestFrameSpeak(XiaoxiaoID, "")
				QuestFrameOptionClicked("㲻", CMP_PART_MATCH)
				System:Sleep(1000)
			else
				DoMount(true)

				MoveTo(v.x, v.y, nCurSceneID, "", 2, true, _callback)

				xNow, yNow = Player:GetPos()
				if FindObject(xNow , yNow , nSceneId ) == INVALID_ID then
					break 
				end
			end
		end
	end
	
end

local g_bosspick = 0

function OnMemberKill()

	AI:SetAI("ɱ")

	AI:SetParameter("ʼ")
	AI:SetParameter("ʰȡ", PM_PICKUP)
	AI:SetParameter("շͨ" , true )
	AI:SetParameter("ʹô͵" , false )
	--AI:SetParameter("ʱԶѡ" , false )
	AI:Start(true)

	AI:SetParameter("в" ,"Ӹ", 1)
	AI:SetParameter("в" , "ֻʰȡBOSS" , g_bosspick)

	while true do 

		if IsMenpaiFuben() == true then
			AI:SetParameter("в" ,"ɱ", 1)
			AI:SetParameter("в" ,"", 1)
			AI:SetParameter("в" , "" , 0)
		else
			AI:SetParameter("в" ,"ɱ", 0)
			AI:SetParameter("в" ,"", 0)
			AI:SetParameter("в" , "" , 0 )

			if DataPool:GetTeamMemCount() <= 1 then 
				break
			end
		end

		if DataPool:IsTeamLeader() == true then 
			break
		end

		if AI:IsStop() == true then
			break 
		end

		System:Sleep(1000)
	end

	AI:Stop()
end


function _SMain(...)

	if _CommandChk0 ~= nil and tonumber(_CommandChk0) > 0 then
		g_bosspick = 1
	end

	if Player:GetData("LEVEL") < 20 then
		ShowMessage("͵ϮɣС20")
		return	
	end

	while true do

		if DataPool:IsTeamLeader() == false then 

			if DataPool:GetTeamMemCount() <= 1 then 
				ShowMessage(",űԶֹͣ")
				return
			end

			OnMemberKill()
		else

			if IsMenpaiFuben() == true then

				SearchFubenScene()

			elseif IsMenpai() == true then
			
				SearchMenPaiScene()

			else
				ShowMessage("͵Ϯɣӳɺнű")
				return
			end
		end

		System:Sleep(100)
	end
end

_SMain()