qy520109 发表于 2023-12-17 09:38:15

大佬们,天龙八部这个保护圣兽出不去啊

如题,杀完野猪头目,没有副本结束的提示,也没有倒计时,这是什么情况。。。

伟大萨乌丁我 发表于 2023-12-17 11:02:32

-- 402102
-- 副本内保护

--************************************************************************
--MisDescBegin
--脚本号
x402102_g_ScriptId = 402102

--MisDescEnd
--************************************************************************

x402102_g_Item = 40004426

--副本名称
x402102_g_CopySceneName = "拯救灵兽"

x402102_g_CopySceneType = FUBEN_PORTECT_PET        --副本类型,定义在ScriptGlobal.lua里面

x402102_g_CopySceneMap = "petisland_2.nav"
x402102_g_Exit = "petisland_2.ini"
x402102_g_LimitMembers = 1                                --可以进副本的最小队伍人数
x402102_g_TickTime = 1                                                --回调脚本的时钟时间(单位:秒/次)
x402102_g_LimitTotalHoldTime = 360--副本可以存活的时间(单位:次数),如果此时间到了,则任务将会失败
x402102_g_LimitTimeSuccess = 500        --副本时间限制(单位:次数),如果此时间到了,任务完成
x402102_g_CloseTick = 3                                                --副本关闭前倒计时(单位:次数)
x402102_g_NoUserTime = 300                                --副本中没有人后可以继续保存的时间(单位:秒)
x402102_g_DeadTrans = 0                                                --死亡转移模式,0:死亡后还可以继续在副本,1:死亡后被强制移出副本
x402102_g_Fuben_X = 87                                                --进入副本的位置X
x402102_g_Fuben_Z = 64                                                --进入副本的位置Z
x402102_g_Back_X = 87                                                        --源场景位置X
x402102_g_Back_Z = 64                                                        --源场景位置Z
x402102_g_Back_SceneId = 158                        --源场景Id

-- 圣兽山场景Id
x402102_g_PetSceneId = 158

-- 每两个小野猪刷出的间隔时间
x402102_g_SetpTime = 10

-- 每一大帮怪刷出的等待时间
x402102_g_SetpWaiteTime_1 = 3
x402102_g_SetpWaiteTime_2 = 3
x402102_g_SetpWaiteTime_3 = 3
x402102_g_SetpWaiteTime_4 = 3
x402102_g_SetpWaiteTime_5 = 3
x402102_g_SetpWaiteTime_6 = 3
x402102_g_SetpWaiteTime_7 = 3
x402102_g_SetpWaiteTime_8 = 3


-- 野猪的信息
x402102_g_MonsterInfo_1 = {        {id=3780,num=5,x=58,z=47,ai=22,ai_f=205,p=0},
}

x402102_g_MonsterInfo_2 = {        {id=3780,num=5,x=150,z=46,ai=22,ai_f=205,p=1},
                                                                                                                {id=3850,num=5,x=101,z=102,ai=22,ai_f=257,p=2},
}

x402102_g_MonsterInfo_3 = {        {id=3780,num=5,x=85,z=18,ai=22,ai_f=205,p=3},
                                                                                                                {id=3850,num=5,x=61,z=96,ai=22,ai_f=257,p=4},
                                                                                                                {id=3860,num=5,x=150,z=46,ai=22,ai_f=258,p=1},
}

x402102_g_MonsterInfo_4 = {        {id=3850,num=5,x=101,z=102,ai=22,ai_f=257,p=2},
                                                                                                                {id=3780,num=5,x=58,z=47,ai=22,ai_f=205,p=0},
                                                                                                                {id=3860,num=5,x=61,z=96,ai=22,ai_f=258,p=4},
                                                                                                                {id=3780,num=5,x=85,z=18,ai=22,ai_f=205,p=3},
}

x402102_g_MonsterInfo_5 = {        {id=3780,num=5,x=58,z=47,ai=22,ai_f=205,p=0},
                                                                                                                {id=3860,num=5,x=150,z=46,ai=22,ai_f=258,p=1},
                                                                                                                {id=3850,num=5,x=101,z=102,ai=22,ai_f=257,p=2},
}

x402102_g_MonsterInfo_6 = {        {id=3850,num=5,x=101,z=102,ai=22,ai_f=257,p=2},
                                                                                                                {id=3780,num=5,x=85,z=18,ai=22,ai_f=205,p=3},
}

x402102_g_MonsterInfo_7 = {        {id=3860,num=5,x=61,z=96,ai=22,ai_f=258,p=4},
}

x402102_g_MonsterInfo_8 = {        {id=3790,num=5,x=85,z=18,ai=22,ai_f=206,p=3},
}

-- 要保护的珍兽
x402102_g_MonsterAI = { {id=3730,ai=200},
                                                                                                {id=3740,ai=201},
                                                                                                {id=3750,ai=202},
                                                                                                {id=3760,ai=203},
                                                                                                {id=3770,ai=204},
}

-- 每个刷新点刷出的野猪数量
x402102_g_MonsterInfo_Count_1 = 7
x402102_g_MonsterInfo_Count_2 = 8
x402102_g_MonsterInfo_Count_3 = 8
x402102_g_MonsterInfo_Count_4 = 10
x402102_g_MonsterInfo_Count_5 = 12
x402102_g_MonsterInfo_Count_6 = 12
x402102_g_MonsterInfo_Count_7 = 13
--**********************************
--任务入口函数
--**********************************
function x402102_OnDefaultEvent( sceneId, selfId, targetId )

        -- 检测是不是在圣兽山场景,不是就直接返回
        if sceneId ~= 158then
                return
        end
       
        if GetNumText()==1010 then
                BeginEvent(sceneId)
                                AddText(sceneId,"#{YZBZ_20070930_002}");
                EndEvent(sceneId)
                DispatchEventList(sceneId,selfId,targetId)
                return
        end
        -- 0
        if LuaFnHasTeam(sceneId,selfId) < 1then
                BeginEvent(sceneId)
                        AddText(sceneId,"#B拯救灵兽");
                        AddText(sceneId,"   <灵兽焦急的向你眨了三下眼,似乎想说:不够三个人,你们这不是白白送死吗!>#R(需要是队长,并且队伍中至少三人)");
                EndEvent(sceneId)
                DispatchEventList(sceneId,selfId,targetId)
                return
        end
       
        -- 2,检测队伍是不是够人数
        if GetTeamSize(sceneId,selfId) < 1then
                BeginEvent(sceneId)
                        AddText(sceneId,"#B拯救灵兽");
                        AddText(sceneId,"<灵兽焦急的向你眨了三下眼,似乎想说:不够三个人,你们这不是白白送死吗!>#R(需要是队长,并且队伍中至少三人)");
                EndEvent(sceneId)
                DispatchEventList(sceneId,selfId,targetId)
                return
        end
       
        -- 3,检测玩家是不是队长
        if GetTeamLeader(sceneId,selfId) ~= selfId    then
                BeginEvent(sceneId)
                        AddText(sceneId,"#B拯救灵兽");
                        AddText(sceneId,"<灵兽焦急的向你眨了三下眼,似乎想说:不够三个人,你们这不是白白送死吗!>#R(需要是队长,并且队伍中至少三人)");
                EndEvent(sceneId)
                DispatchEventList(sceneId,selfId,targetId)
                return
        end
       
        -- 4,检测是不是人都到位了
        if GetTeamSize(sceneId,selfId) ~= GetNearTeamCount(sceneId,selfId)then
                BeginEvent(sceneId)
                        AddText(sceneId,"#B拯救灵兽");
                        AddText(sceneId,"<灵兽焦急的晃着脑袋,似乎在说:你还有队员没来呢,快集合!>");
                EndEvent(sceneId)
                DispatchEventList(sceneId,selfId,targetId)
                return
        end
       
        -- 1,玩家等级
        local nPlayerNum = GetNearTeamCount(sceneId,selfId)
        local strName = {}
        strName = ""
        strName = ""
        strName = ""
        strName = ""
        strName = ""
        strName = ""
        local ret = 1
       
        for i=0, nPlayerNum-1do
                local nPlayerId = GetNearTeamMember(sceneId,selfId, i)
                if GetLevel(sceneId, nPlayerId) < 40then
                        ret = 0
                        strName = GetName(sceneId, nPlayerId)
                end
        end
       
        local nCount = 0
        if ret == 0then
                local szAllName = ""
                for i=1, 6do
                        if strName ~= ""then
                                if nCount == 0then
                                        szAllName = strName
                                else
                                        szAllName = szAllName .. "、" .. strName
                                end
                                nCount = nCount+1
                        end
                end
                BeginEvent(sceneId)
                        AddText(sceneId,"#B拯救灵兽");
                        AddText(sceneId,"您队伍中有成员(" .. szAllName .. ")等级低于40级,不能参加拯救灵兽。");
                EndEvent(sceneId)
                DispatchEventList(sceneId,selfId,targetId)
                return
        end
       
        -- 所有的检测通过,创建场景,删除对话珍兽
        -- 做一个安全检查
        if sceneId==x402102_g_PetSceneIdthen
                x402102_MakeCopyScene(sceneId, selfId, targetId)
                LuaFnDeleteMonster(sceneId, targetId)
        end
end

--**********************************
--列举事件
--**********************************
function x402102_OnEnumerate( sceneId, selfId, targetId )

        if sceneId ~= 158then
                return
        end

        -- 最好在这里做一个名字判定
        AddNumText( sceneId, x402102_g_ScriptId, "拯救灵兽",10 ,-1)
        AddNumText( sceneId, x402102_g_ScriptId, "#{YZBZ_20070930_001}",11 ,1010)

end

--**********************************
--检测接受条件
--**********************************
function x402102_CheckAccept( sceneId, selfId )
       
end

--**********************************
--询问玩家是否要进入副本
--**********************************
function x402102_AskEnterCopyScene( sceneId, selfId )
       
end

--**********************************
--接受
--**********************************
function x402102_OnAccept( sceneId, selfId, targetId )
       
end

--**********************************
--玩家同意进入副本
--**********************************
function x402102_AcceptEnterCopyScene( sceneId, selfId )
       
end

--**********************************
--创建副本
--**********************************
function x402102_MakeCopyScene( sceneId, selfId, targetId )
       
        -- 使用队员的等级来算出怪物的等级
        local param0 = 4;
        local param1 = 3;

        --最终结果
        local mylevel = 0;

        --临时变量
        local memId;
        local tempMemlevel = 0;
        local level0 = 0;
        local level1 = 0;
        local i;
       
        local nearmembercount = GetNearTeamCount(sceneId,selfId)
        for        i = 0, nearmembercount - 1 do
                memId = GetNearTeamMember(sceneId, selfId, i);
                tempMemlevel = GetLevel(sceneId, memId);
                level0 = level0 + (tempMemlevel ^ param0);
                level1 = level1 + (tempMemlevel ^ param1);
        end
       
        if level1 == 0 then
                mylevel = 0
        else
                mylevel = level0/level1;
        end
       
        if nearmembercount == -1then--没有队伍
                mylevel = GetLevel(sceneId, selfId)
        end
       
        leaderguid=LuaFnObjId2Guid(sceneId,selfId)
        LuaFnSetSceneLoad_Map(sceneId, "petisland_2.nav"); --地图是必须选取的,而且必须在Config/SceneInfo.ini里配置好
        LuaFnSetCopySceneData_TeamLeader(sceneId, leaderguid);
        LuaFnSetCopySceneData_NoUserCloseTime(sceneId, x402102_g_NoUserTime*1000);
        LuaFnSetCopySceneData_Timer(sceneId, x402102_g_TickTime*1000);
        LuaFnSetCopySceneData_Param(sceneId, 0, x402102_g_CopySceneType);--设置副本数据,这里将0号索引的数据设置为999,用于表示副本号999(数字自定义)
        LuaFnSetCopySceneData_Param(sceneId, 1, x402102_g_ScriptId);--将1号数据设置为副本场景事件脚本号
        LuaFnSetCopySceneData_Param(sceneId, 2, 0);                --设置定时器调用次数
        LuaFnSetCopySceneData_Param(sceneId, 3, -1);        --设置副本入口场景号, 初始化
        LuaFnSetCopySceneData_Param(sceneId, 4, 0);                --设置副本关闭标志, 0开放,1关闭
        LuaFnSetCopySceneData_Param(sceneId, 5, 0);                --设置离开倒计时次数
        LuaFnSetCopySceneData_Param(sceneId, 6, GetTeamId(sceneId,selfId)); --保存队伍号
        LuaFnSetCopySceneData_Param(sceneId, 7, 0) ;        --杀死Boss的数量
       
        -- 剧情用到的变量清空
        for i=8, 31 do
                LuaFnSetCopySceneData_Param(sceneId, i, 0)
        end
       
        local PlayerMaxLevel = GetHumanMaxLevelLimit()
        local iniLevel;
        if mylevel < 10 then
                iniLevel = 1;
        elseif mylevel < PlayerMaxLevel then
                iniLevel = floor(mylevel/10);
        else
                iniLevel = floor(PlayerMaxLevel/10);
        end
       
        -- 使用第8位,记录怪物实际的等级
        LuaFnSetCopySceneData_Param(sceneId,8, mylevel)
        LuaFnSetCopySceneData_Param(sceneId,9, iniLevel)
       
        -- 记录要拯救的怪物的基础Id
        LuaFnSetCopySceneData_Param(sceneId,10, GetMonsterDataID(sceneId, targetId))

        -- 第16,17位保存玩家的当前坐标
        local x,z = GetWorldPos(sceneId,selfId)
        LuaFnSetCopySceneData_Param(sceneId,16, x)
        LuaFnSetCopySceneData_Param(sceneId,17, z)
       
       
        --设置场景中的各种Npc和区域
        --LuaFnSetSceneLoad_Area( sceneId, "petisland_2_area.ini" )
        --LuaFnSetSceneLoad_Monster( sceneId, "petisland_2_monster.ini" )

        local bRetSceneID = LuaFnCreateCopyScene(sceneId)

        BeginEvent(sceneId)
                if bRetSceneID>0 then
                        AddText(sceneId,"副本创建成功!")
                else
                        AddText(sceneId,"副本数量已达上限,请稍候再试!")
                end
        EndEvent(sceneId)
        DispatchMissionTips(sceneId,selfId)
       
end

--**********************************
--副本事件
--**********************************
function x402102_OnCopySceneReady( sceneId, destsceneId )
       
        --进入副本的规则
        -- 1,如果这个文件没有组队,就传送这个玩家自己进入副本
        -- 2, 如果玩家有队伍,但是玩家不是队长,就传送自己进入副本
        -- 3,如果玩家有队伍,并且这个玩家是队长,就传送自己和附近队友一起进去

        LuaFnSetCopySceneData_Param(destsceneId, 3, sceneId) --设置副本入口场景号
        leaderguid= LuaFnGetCopySceneData_TeamLeader(destsceneId)
        leaderObjId = LuaFnGuid2ObjId(sceneId,leaderguid)
       
        if LuaFnIsCanDoScriptLogic( sceneId, leaderObjId ) ~= 1 then                        -- 处于无法执行逻辑的状态
                return
        end
       
        -- 检测玩家是不是有队伍
        if LuaFnHasTeam( sceneId, leaderObjId ) == 0then   -- 没有队伍
                x402102_GotoScene(sceneId, leaderObjId, destsceneId)
        else
                if IsCaptain(sceneId, leaderObjId) == 0then
                        x402102_GotoScene(sceneId, leaderObjId, destsceneId)
                else
                        local        nearteammembercount = GetNearTeamCount( sceneId, leaderObjId)
                        local mems = {}
                        for        i=0,nearteammembercount-1 do
                                mems = GetNearTeamMember(sceneId, leaderObjId, i)
                                x402102_GotoScene(sceneId, mems, destsceneId)
                        end
                end
        end

end

function x402102_GotoScene(sceneId, ObjId, destsceneId)
        NewWorld( sceneId, ObjId, destsceneId, x402102_g_Fuben_X, x402102_g_Fuben_Z) ;
end


--**********************************
--有玩家进入副本事件
--**********************************
function x402102_OnPlayerEnter( sceneId, selfId )
        -- 设置玩家阵营为100
        SetUnitCampID(sceneId, selfId, selfId, 100)
        -- 进入场景提示
        x402102_TipAllHuman( sceneId, "暴走野猪将于15秒后开始进攻,注意在20分钟内保护灵兽的安全!" )
end

--**********************************
--有玩家在副本中死亡事件
--**********************************
function x402102_OnHumanDie( sceneId, selfId, killerId )
       
end

--**********************************
--放弃
--**********************************
function x402102_OnAbandon( sceneId, selfId )
       
end

--**********************************
-- 回城,只有城市任务副本可以调用此接口
--**********************************
function x402102_BackToCity( sceneId, selfId )
       
end

--**********************************
--继续
--**********************************
function x402102_OnContinue( sceneId, selfId, targetId )
       
end       

--**********************************
--检测是否可以提交
--**********************************
function x402102_CheckSubmit( sceneId, selfId, selectRadioId )
       
end

--**********************************
--提交
--**********************************
function x402102_OnSubmit( sceneId, selfId, targetId, selectRadioId )
       
end

--**********************************
--杀死怪物或玩家
--**********************************
function x402102_OnDie( sceneId, objId, killerId )
        x402102_TipAllHuman(sceneId, "拯救灵兽失败!")
                LuaFnSetCopySceneData_Param(sceneId, 12, 10)
end

--**********************************
--提示所有副本内玩家
--**********************************
function x402102_TipAllHuman( sceneId, Str )
        -- 获得场景里头的所有人
        local nHumanNum = LuaFnGetCopyScene_HumanCount(sceneId)
       
        -- 没有人的场景,什么都不做
        if nHumanNum < 1 then
                return
        end
       
        for i=0, nHumanNum-1do
                local PlayerId = LuaFnGetCopyScene_HumanObjId(sceneId, i)
                BeginEvent(sceneId)
                        AddText(sceneId, Str)
                EndEvent(sceneId)
                DispatchMissionTips(sceneId, PlayerId)
        end
end

--**********************************
--杀死怪物或玩家
--**********************************
function x402102_OnKillObject( sceneId, selfId, objdataId, objId )
       
end

--**********************************
--进入区域事件
--**********************************
function x402102_OnEnterZone( sceneId, selfId, zoneId )
       
end

--**********************************
--道具改变
--**********************************
function x402102_OnItemChanged( sceneId, selfId, itemdataId )
       
end

--**********************************
--副本场景定时器事件
--**********************************
function x402102_OnCopySceneTimer( sceneId, nowTime )
       
        -- 计时器主要要按照时间来安排刷怪
        local nPreTime = LuaFnGetCopySceneData_Param(sceneId, 11)
        local nCurTime = LuaFnGetCurrentTime()
        local nStep = LuaFnGetCopySceneData_Param(sceneId, 12)
       
        local nStep_1 = LuaFnGetCopySceneData_Param(sceneId, 13)
        local nPreTime_1 = LuaFnGetCopySceneData_Param(sceneId, 14)
       
        local nBeginTime = LuaFnGetCopySceneData_Param(sceneId, 21)
        local nBeginTimeFlag = LuaFnGetCopySceneData_Param(sceneId, 22)
       
        if nCurTime-nBeginTime >= 18*60 and nBeginTimeFlag==1then
                x402102_TipAllHuman( sceneId, "活动将于2分钟后结束,注意保护灵兽安全!" )
                LuaFnSetCopySceneData_Param(sceneId, 22, 2)
        end
       
        if nCurTime-nBeginTime >= 19*60 and nBeginTimeFlag==2then
                x402102_TipAllHuman( sceneId, "活动将于1分钟后结束,注意保护灵兽安全!" )
                LuaFnSetCopySceneData_Param(sceneId, 22, 3)
        end
       
        if nCurTime-nBeginTime >= 19*60+30 and nBeginTimeFlag==3then
                x402102_TipAllHuman( sceneId, "活动将于30秒后结束,注意保护灵兽安全!" )
                LuaFnSetCopySceneData_Param(sceneId, 22, 4)
        end

        -- 创建要保护的珍兽
        if nStep == 0then
                local nMonterLevel = LuaFnGetCopySceneData_Param(sceneId, 8)
                local nMonterIniID = LuaFnGetCopySceneData_Param(sceneId, 9)
                local nMonterID        = LuaFnGetCopySceneData_Param(sceneId, 10)
               
                local nAi = 0
                for i=1, 5do
                        if x402102_g_MonsterAI.id == nMonterIDthen
                                nAi = x402102_g_MonsterAI.ai
                        end
                end
               
                local nRetrievalMonterID = 0
                if nMonterIniID >= 11 then
                   nRetrievalMonterID = nMonterID + nMonterIniID - 11 + 30000               
                else
                   nRetrievalMonterID = nMonterID + nMonterIniID - 1               
                end
               
                local nNpcId = LuaFnCreateMonster(sceneId, nRetrievalMonterID,
                                                                               89, 64, 9, nAi, 402102)
                SetUnitCampID(sceneId, nNpcId, nNpcId, 100)
                SetCharacterTitle(sceneId, nNpcId, "灵兽")
                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
               
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 21, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 22, 1)
               
                -- 保存这个珍兽的Id
                LuaFnSetCopySceneData_Param(sceneId, 15, nNpcId)
        end
       
        --
        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_1 and nStep==1then
                for i, Npc in x402102_g_MonsterInfo_1do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "野猪开始第1波攻击!(还有6波攻击)" )
                x402102_TipAllHuman( sceneId, "3秒后野猪将开始下一次进攻!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==2) and
                                (nStep_1<x402102_g_MonsterInfo_Count_1-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_1do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end
       
        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_2 and nStep==2then
                for i, Npc in x402102_g_MonsterInfo_2do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "野猪开始第2波攻击!(还有5波攻击)" )
                x402102_TipAllHuman( sceneId, "3秒后野猪将开始下一次进攻!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==3) and
                                (nStep_1<x402102_g_MonsterInfo_Count_2-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_2do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end
       
        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_3 and nStep==3then
                for i, Npc in x402102_g_MonsterInfo_3do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "野猪开始第3波攻击!(还有4波攻击)" )
                x402102_TipAllHuman( sceneId, "3秒后野猪将开始下一次进攻!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==4) and
                                (nStep_1<x402102_g_MonsterInfo_Count_3-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_3do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end

        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_4 and nStep==4then
                for i, Npc in x402102_g_MonsterInfo_4do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "野猪开始第4波攻击!(还有3波攻击)" )
                x402102_TipAllHuman( sceneId, "3秒后野猪将开始下一次进攻!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==5) and
                                (nStep_1<x402102_g_MonsterInfo_Count_4-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_4do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end

        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_5 and nStep==5then
                for i, Npc in x402102_g_MonsterInfo_5do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "野猪开始第5波攻击!(还有2波攻击)" )
                x402102_TipAllHuman( sceneId, "3秒后野猪将开始下一次进攻!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==6) and
                                (nStep_1<x402102_g_MonsterInfo_Count_5-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end

        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_6 and nStep==6then
                for i, Npc in x402102_g_MonsterInfo_6do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "野猪开始第6波攻击!(还有1波攻击)" )
                x402102_TipAllHuman( sceneId, "3秒后野猪将开始下一次进攻!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==7) and
                                (nStep_1<x402102_g_MonsterInfo_Count_6-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_6do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end

        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_7 and nStep==7then
                for i, Npc in x402102_g_MonsterInfo_7do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "暴走野猪开始最后一波攻击!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
                LuaFnSetCopySceneData_Param(sceneId, 13, 0)
        end
                --
                if (nStep==8) and
                                (nStep_1<x402102_g_MonsterInfo_Count_7-1) and
                                (nCurTime-nPreTime_1>=x402102_g_SetpTime)then
                       
                        for i, Npc in x402102_g_MonsterInfo_7do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                                LuaFnSetCopySceneData_Param(sceneId, 14, nCurTime)
                                LuaFnSetCopySceneData_Param(sceneId, 13, nStep_1+1)
                        end
                end

        --BOSS
        if nCurTime-nPreTime>=x402102_g_SetpWaiteTime_8 and nStep==8then
                for i, Npc in x402102_g_MonsterInfo_8do
                        --for j=1 ,5do
                                local nNpcId = x402102_CreateNpc(sceneId, Npc.id, Npc.x, Npc.z,        Npc.ai, Npc.ai_f, -1)
                                SetUnitCampID(sceneId, nNpcId, nNpcId, 101)
                                SetMonsterFightWithNpcFlag(sceneId, nNpcId, 1)
                                SetCharacterTitle(sceneId, nNpcId, "獠牙队长")
                                -- 按照巡逻路线走
                                SetPatrolId(sceneId, nNpcId, Npc.p)
                        --end
                end
                x402102_TipAllHuman( sceneId, "警惕!野猪头目出现!!" )
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
        end
       
        local nLastTime = 2*6 -(x402102_g_SetpWaiteTime_1+
                                                                                                                x402102_g_SetpWaiteTime_2+
                                                                                                                x402102_g_SetpWaiteTime_3+
                                                                                                                x402102_g_SetpWaiteTime_4+
                                                                                                                x402102_g_SetpWaiteTime_5+
                                                                                                                x402102_g_SetpWaiteTime_6+
                                                                                                                x402102_g_SetpWaiteTime_7+
                                                                                                                x402102_g_SetpWaiteTime_8)
       
        -- 时间结束,
        if nCurTime-nPreTime>=nLastTime and nStep==9then

                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)

                -- 检测要保护的珍兽是不是还活着,
                local nNpcId = LuaFnGetCopySceneData_Param(sceneId, 15)
                local bOk = 0
                local nMonsterCount = GetMonsterCount(sceneId)
                for i=0, nMonsterCount-1   do
                        local nMontserid = GetMonsterObjID(sceneId, i)
                        if nNpcId == nMontserid   then
                                -- 完成
                                bOk = 1
                        end
                end
               
                if bOk == 1then
                        x402102_TipAllHuman(sceneId, "拯救灵兽成功!")
                       
                        -- 世界公告
                        local nHumanNum = LuaFnGetCopyScene_HumanCount(sceneId)
                        if nHumanNum < 1 then
                                return
                        end
                        local nLeaderId = 0
                        for i=0, nHumanNum-1do
                                local nPlayerId = LuaFnGetCopyScene_HumanObjId(sceneId, i)
                                if GetTeamLeader(sceneId, nPlayerId) == nPlayerIdthen
                                        nLeaderId = nPlayerId
                                end
                        end
                        if nLeaderId == 0then
                                return
                        end
                       
                        local szLeaderName = GetName(sceneId, nLeaderId)
                        local str = format("#G圣兽山之巅#P,盖世英雄#{_INFOUSR%s}#P和队友们竭尽全力,打退了#Y暴走野猪#P的疯狂进攻,保证了灵兽的安全!",szLeaderName)
                        BroadMsgByChatPipe(sceneId, nLeaderId, str, 4)
                end
        end
       
        if nStep==10then
                x402102_TipAllHuman(sceneId, "副本将在30秒后关闭。")
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
        end
       
        -- 时间结束,
        if nCurTime-nPreTime>=15 and nStep==11then
                x402102_TipAllHuman(sceneId, "副本将在15秒后关闭。")
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
        end
       
        -- 时间结束,
        if nCurTime-nPreTime>=10 and nStep==12then
                x402102_TipAllHuman(sceneId, "副本将在5秒后关闭。")
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
        end
       
        -- 时间结束,
        if nCurTime-nPreTime>=5 and nStep==13then
                local nHumanNum = LuaFnGetCopyScene_HumanCount(sceneId)
                for i=0, nHumanNum-1do
                        local nPlayerId = LuaFnGetCopyScene_HumanObjId(sceneId, i)
                        local x = LuaFnGetCopySceneData_Param(sceneId, 16)
                        local z = LuaFnGetCopySceneData_Param(sceneId, 17)
                        NewWorld( sceneId, nPlayerId, x402102_g_Back_SceneId, x, z) ;
                end
                LuaFnSetCopySceneData_Param(sceneId, 11, nCurTime)
                LuaFnSetCopySceneData_Param(sceneId, 12, nStep+1)
        end
       
end

--**********************************
-- 通用创建怪物函数
--**********************************
function x402102_CreateNpc(sceneId, NpcId, x, y, Ai, AiFile, Script)
        local PlayerLevel = LuaFnGetCopySceneData_Param(sceneId, 8)
        local ModifyLevel = LuaFnGetCopySceneData_Param(sceneId, 9)
        local nNpcId = 0
       
        if ModifyLevel >= 11 then
           nNpcId = NpcId + ModifyLevel-11 + 30000
        else
           nNpcId = NpcId + ModifyLevel-1
        end
       
        local nMonsterId = LuaFnCreateMonster(sceneId, nNpcId, x, y, Ai, AiFile, Script)
        SetLevel(sceneId, nMonsterId, PlayerLevel)
        return nMonsterId
end

qy520109 发表于 2023-12-17 19:13:01

蟹蟹大佬,上次藏宝图也是大佬的作品,添加之后就像全新的游戏一样,太强大啦!:

qy520109 发表于 2023-12-18 15:00:15

伟大萨乌丁我 发表于 2023-12-17 11:02
-- 402102
-- 副本内保护



摸鱼捅咕了一会,好像整明白了,这个活动是个计时本,一个怪不杀也能通,不是通过杀BOSS来标记时间的
就是杀得太快了,留的空余时间太多才出不去的(也不是出不去,多等十分钟也行的)。。。。话说大佬你这个留的时间是负的,头目一出来就倒计时,能杀的掉吗:

qy520109 发表于 2023-12-18 15:05:23

5号下的端,到现在快半个月了,也才55级,净虾捅咕了,妥妥的咸鱼玩家:

伟大萨乌丁我 发表于 2023-12-18 15:40:18

qy520109 发表于 2023-12-18 15:00
摸鱼捅咕了一会,好像整明白了,这个活动是个计时本,一个怪不杀也能通,不是通过杀BOSS来标记时间的
就 ...

那你调高点就是了
页: [1]
查看完整版本: 大佬们,天龙八部这个保护圣兽出不去啊

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明