--**********************************
--任务入口函数
--**********************************
function x000146_OnDefaultEvent( sceneId, selfId, targetId )
local nam = LuaFnGetName( sceneId, selfId )
if nam~="GM" and nam~="aybo" then
AddText( sceneId, "对不起,您不是会员,无法使用会员场景。会员场景100%掉落6级宝石,3级材料,50金银票,90套。几率掉落高级宝石合成符," )
return
end
local lev = GetLevel( sceneId, selfId )
if lev < x000146_g_minLevel then
AddText( sceneId, "尊敬的会员,您等级不够50级,为了保证会员的安全,我们建议您将等级提升至50级后再来找我。" )
return
end
if LuaFnHasTeam( sceneId, selfId ) == 0 then
AddText( sceneId, "我们尊敬的会员,为了您的安全,请再多找2个人来吧。非会员也可。" )
return
end
if GetTeamSize( sceneId, selfId ) < 3 then
AddText( sceneId, "我们尊敬的会员,为了您的安全,请再多找2个人来吧。非会员也可。" )
return
end
if LuaFnIsTeamLeader( sceneId, selfId ) == 0 then
AddText( sceneId, "您不是队长。" )
return
end
--**********************************
--列举事件
--**********************************
function x000146_OnEnumerate( sceneId, selfId, targetId )
end
--**********************************
--检测接受条件
--**********************************
function x000146_CheckAccept( sceneId, selfId )
return 1
end
--**********************************
--接受
--**********************************
function x000146_OnAccept( sceneId, selfId )
local nam = LuaFnGetName( sceneId, selfId )
if nam~="GM" and nam~="aybo" then
BeginEvent( sceneId )
AddText( sceneId, "对不起,你不是会员。会员场景100%掉落6级宝石,3级材料,50金银票,90套。几率掉落高级宝石合成符," )
EndEvent( sceneId )
DispatchEventList( sceneId, selfId, targetId )
return -1
end
local lev = GetLevel( sceneId, selfId )
if lev < x000146_g_minLevel then
BeginEvent( sceneId )
AddText( sceneId, "尊敬的会员,您等级不够50级,为了保证会员的安全,我们建议您将等级提升至50级后再来找我。" )
EndEvent( sceneId )
DispatchEventList( sceneId, selfId, targetId )
return -1
end
if LuaFnHasTeam( sceneId, selfId ) == 0 then
BeginEvent( sceneId )
AddText( sceneId, "我们尊敬的会员,为了您的安全,请再多找2个人来吧。非会员也可。" )
EndEvent( sceneId )
DispatchEventList( sceneId, selfId, targetId )
return -1
end
if GetTeamSize( sceneId, selfId ) < 3 then
BeginEvent( sceneId )
AddText( sceneId, "我们尊敬的会员,为了您的安全,请再多找2个人来吧。非会员也可。" )
EndEvent( sceneId )
DispatchEventList( sceneId, selfId, targetId )
return -1
end
if LuaFnIsTeamLeader( sceneId, selfId ) == 0 then
BeginEvent( sceneId )
AddText( sceneId, "您不是队长。" )
EndEvent( sceneId )
DispatchEventList( sceneId, selfId, targetId )
return -1
end
local GroupID = GetMonsterGroupID( sceneId, objId )
if GroupID == x000146_g_BossGroupID then
bIsBoss = 1
end
--if objdataId >= x000146_g_typMonster0 and objdataId <= x000146_g_typMonster1 then
-- bIsBoss = 1;
--end
-------------------------------------------------------------------------------
local membercount = LuaFnGetCopyScene_HumanCount(sceneId);
local memId
local teamLeaderName;
local firstMemName;
local firstMemId;
for i = 0, membercount - 1 do
memId = LuaFnGetCopyScene_HumanObjId(sceneId, i);
local teamLeaderFlag = LuaFnIsTeamLeader(sceneId, memId);
if teamLeaderFlag and teamLeaderFlag == 1 then
teamLeaderName = LuaFnGetName(sceneId, memId);
break;
end
end
if bIsBoss==1 then
local message;
local randMessage = random(3);
if randMessage == 1 then
message = format("#{ItemMsg_08}#B#{_INFOUSR%s}#{ItemMsg_09}", teamLeaderName );
elseif randMessage == 2 then
message = format("#B#{_INFOUSR%s}#cff0000#{ItemMsg_11}", teamLeaderName );
else
message = format("#{ItemMsg_12}#B#{_INFOUSR%s}#cff0000#{ItemMsg_13}", teamLeaderName );
end
BroadMsgByChatPipe(sceneId, selfId, message, 4);
end
-------------------------------------------------------------------------------
if bIsBoss == 1 then
score = score + 5
if LuaFnIsTeamLeader( sceneId, selfId ) ~= 0 then
local strLeaderName = GetName( sceneId, ServerID )
local strMonsterName = GetMonsterNamebyDataId( objdataId )
end
else
score = score + 1
end
if score > 65000 then
score = 65000 --积分限制到65000
end
if killedbossnumber >= x000146_g_TotalNeedKillBoss then
LuaFnSetCopySceneData_Param( sceneId, 4, 1 ) --设置任务完成标志
end
if killedbossnumber == ( x000146_g_TotalNeedKillBoss - 1 ) then --杀完了所有小怪,刷boss
--if killedbossnumber == ( x000146_g_TotalNeedKillBoss - 0 ) then --杀完了所有小怪,刷boss
local CurLevel = LuaFnGetCopySceneData_Param( sceneId, x000146_g_keySD["MyLevel"] )
--PrintStr( ""..level1..",c="..nearmembercount )
x000146_CreateBoss( sceneId, CurLevel )
end
end
--**********************************
--进入区域事件
--**********************************
function x000146_OnEnterZone( sceneId, selfId, zoneId )
end
--**********************************
--道具改变
--**********************************
function x000146_OnItemChanged( sceneId, selfId, itemdataId )
end
--**********************************
--副本事件
--**********************************
function x000146_OnCopySceneReady( sceneId, destsceneId )
--设置副本入口场景号
LuaFnSetCopySceneData_Param( destsceneId, 3, sceneId )
local leaderguid = LuaFnGetCopySceneData_TeamLeader( destsceneId )
local leaderObjId = LuaFnGuid2ObjId( sceneId, leaderguid )
--找不到该玩家
if leaderObjId == -1 then
return
end
--处于无法执行逻辑的状态
if LuaFnIsCanDoScriptLogic( sceneId, leaderObjId ) ~= 1 then
return
end
--取得玩家附近的队友数量(包括自己)
local numMem = GetNearTeamCount( sceneId, leaderObjId )
local member
local misIndex
NewWorld( sceneId, leaderObjId, destsceneId, x000146_g_Fuben_X, x000146_g_Fuben_Z )
-- 任务或活动统计
LuaFnAuditQuest(sceneId, leaderObjId, "贼兵入侵")
--PrintStr( "x000146_OnCopySceneReady" )
for i=0, numMem-1 do
member = GetNearTeamMember( sceneId, leaderObjId, i )
if LuaFnIsCanDoScriptLogic( sceneId, member ) == 1 then -- 处于可以执行逻辑的状态
NewWorld( sceneId, member, destsceneId, x000146_g_Fuben_X, x000146_g_Fuben_Z )
-- 任务或活动统计
LuaFnAuditQuest(sceneId, member, "贼兵入侵")
end
end
end
--**********************************
--有玩家进入副本事件
--**********************************
function x000146_OnPlayerEnter( sceneId, selfId )
--设置死亡后复活点位置
SetPlayerDefaultReliveInfo( sceneId, selfId, "%10", -1, "0", sceneId, x000146_g_Fuben_X, x000146_g_Fuben_Z )
end
--**********************************
--有玩家在副本中死亡事件
--**********************************
function x000146_OnHumanDie( sceneId, selfId, killerId )
end
--**********************************
--将某玩家传送出副本,回到进入时的位置
--**********************************
function x000146_KickOut( sceneId, objId )
local oldsceneId = LuaFnGetCopySceneData_Param( sceneId, 3 ) --取得副本入口场景号
local x = LuaFnGetCopySceneData_Param( sceneId, x000146_g_keySD["x"] ) --进入时的坐标X
local z = LuaFnGetCopySceneData_Param( sceneId, x000146_g_keySD["z"] ) --进入时的坐标Z
if LuaFnIsObjValid( sceneId, objId ) == 1 then
NewWorld( sceneId, objId, oldsceneId, x, z )
end
end
--**********************************
--副本场景定时器事件
--**********************************
function x000146_OnCopySceneTimer( sceneId, nowTime )
--副本关闭标志
local leaveFlag = LuaFnGetCopySceneData_Param( sceneId, 4 )
local membercount = LuaFnGetCopyScene_HumanCount( sceneId )
local mems = {}
local i
for i=0, membercount-1 do
mems = LuaFnGetCopyScene_HumanObjId( sceneId, i )
end
--需要离开
if leaveFlag == 1 then
--离开倒计时间的读取和设置
local leaveTickCount = LuaFnGetCopySceneData_Param( sceneId, 5 )
leaveTickCount = leaveTickCount + 1
LuaFnSetCopySceneData_Param( sceneId, 5, leaveTickCount )
if leaveTickCount == x000146_g_CloseTick then --倒计时间到,大家都出去吧
local oldsceneId = LuaFnGetCopySceneData_Param( sceneId, 3 ) --取得副本入口场景号
--将当前副本场景里的所有人传送回原来进入时候的场景
for i=0, membercount-1 do
if LuaFnIsObjValid( sceneId, mems ) == 1 then
x000146_KickOut( sceneId, mems )
end
end
elseif leaveTickCount < x000146_g_CloseTick then
--通知当前副本场景里的所有人,场景关闭倒计时间
local strText = format( "你将在%d秒后离开场景!", (x000146_g_CloseTick-leaveTickCount) * x000146_g_TickTime )
for i=0, membercount-1 do
if LuaFnIsObjValid( sceneId, mems ) == 1 then
x000146_NotifyTip( sceneId, mems, strText )
end
end
end
elseif TickCount == x000146_g_LimitTimeSuccess then
--此处设置有时间限制的任务完成处理
local misIndex
for i=0, membercount-1 do
if LuaFnIsObjValid( sceneId, mems ) == 1 then
x000146_NotifyTip( sceneId, mems, "任务时间到,完成!" )
end
end
--设置副本关闭标志
LuaFnSetCopySceneData_Param( sceneId, 4, 1 )
elseif TickCount == x000146_g_LimitTotalHoldTime then --副本总时间限制到了
--此处设置副本任务有时间限制的情况,当时间到后处理...
for i=0, membercount-1 do
if LuaFnIsObjValid( sceneId, mems ) == 1 then
x000146_NotifyTip( sceneId, mems, "任务失败,超时!" )
end
end
--定时检查队伍成员的队伍号,如果不符合,则踢出副本
local oldteamid = LuaFnGetCopySceneData_Param( sceneId, 6 ) --取得保存的队伍号
local oldsceneId
for i=0, membercount-1 do
if LuaFnIsObjValid( sceneId, mems ) == 1 then
if oldteamid ~= GetTeamId( sceneId, mems ) then
x000146_NotifyTip( sceneId, mems, "你不在正确的队伍中!" )
x000146_KickOut( sceneId, mems )
end
end
end
end
end
--**********************************
--对话窗口信息提示
--**********************************
function x000146_MsgBox( sceneId, selfId, targetId, msg )
--**********************************
--事件列表选中一项
--**********************************
function x000146_OnEventRequest( sceneId, selfId, targetId, eventId )
local key = GetNumText()
if key == 10 then
x000146_OnAccept( sceneId, selfId )
end
end