This commit is contained in:
Akbar Yahya
2022-11-21 16:30:31 +08:00
commit e0d4d8040c
3326 changed files with 683000 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
---Actor全局通用参数
-- @module ActorCommon
common = common or require('Base/Common')
require('Config/DefineCommon')
sceneData = sceneData or require('Base/SceneData')
currSceneData = nil
actorData = actorData or require('Actor/ActorData')
actorMgr = actorMgr or require('Actor/ActorManager')
actorUtils = CS.MoleMole.ActorUtils
luaTaskUtils = CS.MoleMole.LuaTaskUtils
curtainUtils = CS.MoleMole.CurtainUtils
campHelper = CS.MoleMole.CampHelper
gadgetFactory = gadgetFactory or require('Actor/Gadget/GadgetFactory')
globalActor = nil
globalCfg = globalCfg or require('Actor/GlobalActorConfig')
npcMode = npcMode or require('Actor/Npc/NpcMode/NpcModeType')

View File

@@ -0,0 +1,68 @@
----------------------
-- 这是Lua端ActorData包含了创建和管理Actor所使用的数据的接口
-- @module ActorData
local ActorData = {}
function ActorData:GetByNpcRewindData(data)
local sceneID = data.scene_id
if sceneID == nil then
sceneID = sceneData.DefaultSceneID
end
local roomID = data.room_id or 0
local dummyPoint = sceneData:GetDummyPoint(sceneID, data.pos)
if dummyPoint == nil then
print("Dummy Point " .. data.pos .. " is nil")
return
end
local actorData = {
alias = data.alias,
metaPath = data.script,
configID = data.id,
dataIndex = data.data_index,
bornPos = dummyPoint.pos,
bornEuler = dummyPoint.rot,
isNetwork = true,
isAutoStart = true,
sceneID = sceneID,
roomID = roomID,
noPerform = false,
}
return actorData
end
function ActorData:GetByGadgetRewindData(data)
local sceneID = data.scene_id
if sceneID == nil then
sceneID = sceneData.DefaultSceneID
end
local roomID = data.room_id or 0
local dummyPoint = sceneData:GetDummyPoint(sceneID, data.pos)
if dummyPoint == nil then
print("Dummy Point " .. data.pos .. " is nil")
return
end
local actorData = {
alias = data.alias,
metaPath = data.script,
configID = data.id,
dataIndex = data.data_index,
bornPos = dummyPoint.pos,
bornEuler = dummyPoint.rot,
isNetwork = false,
isAutoStart = false,
sceneID = sceneID,
roomID = roomID,
noPerform = false,
}
return actorData
end
return ActorData

View File

@@ -0,0 +1,497 @@
----------------------
-- 这是Lua端ActorManager包含了创建和管理Actor的方法可通关全局唯一的引用actorMgr访问
-- @module ActorManager
local ActorManager = {}
ActorManager.ActorDic = {}
ActorManager.Alias2EntityIDDic = {}
ActorManager.dummyActor = require('Actor/DummyActorProxy')
ActorManager.tempDefaultAlias = "Temp"
ActorManager.OnTest1 = function()
print("Test1")
actorMgr:CreateActor(actorMgr, "test", "Actor/Npc/Npc001Test")
end
ActorManager.OnTest2 = function()
print("Test2")
local actor = actorMgr:GetActor("test")
if actor ~= nil then
actor:Test()
end
end
ActorManager.OnTest3 = function()
print("Test3")
end
ActorManager.InitGlobal = function()
print("Actor Manager Init")
globalActor = actorMgr:CreateActor("global", "Actor/GlobalActorProxy")
end
ActorManager.InitSubGlobal = function()
for i = 1, #globalCfg.initSubActors do
local subGActorCfg = globalCfg.initSubActors[i]
if subGActorCfg ~= nil and subGActorCfg.alias ~= nil and subGActorCfg.metaPath ~= nil then
actorMgr:CreateActor(subGActorCfg.alias, subGActorCfg.metaPath)
end
end
for i = 1, #globalCfg.initAddSubActors do
local subGActorCfg = globalCfg.initAddSubActors[i]
if subGActorCfg ~= nil and subGActorCfg.alias ~= nil and subGActorCfg.metaPath ~= nil then
actorMgr:CreateActor(subGActorCfg.alias, subGActorCfg.metaPath)
end
end
end
ActorManager.RegisteSubGlobal = function(self, inputAlias, inputPath)
for i = 1, #globalCfg.initAddSubActors do
local subGActorCfg = globalCfg.initAddSubActors[i]
if subGActorCfg ~= nil and subGActorCfg.alias == inputAlias then
return
end
end
local subGActorCfg = {
alias = inputAlias,
metaPath = inputPath,
}
globalCfg.initAddSubActors[#globalCfg.initAddSubActors + 1] = subGActorCfg
if subGActorCfg ~= nil and subGActorCfg.alias ~= nil and subGActorCfg.metaPath ~= nil then
actorMgr:CreateActor(subGActorCfg.alias, subGActorCfg.metaPath)
end
end
ActorManager.UnregisteSubGlobal = function(self, alias)
for i = 1, #globalCfg.initAddSubActors do
local subGActorCfg = globalCfg.initAddSubActors[i]
if subGActorCfg ~= nil and subGActorCfg.alias == alias then
globalCfg.initAddSubActors[i] = nil
end
end
end
--- actorMgr 创建一个Actor一般actor已有在c#端的核心实例
-- @param self ActorManager实例本身
-- @tparam string alias 指定的别名
-- @tparam string metaPath 脚本路径
-- @tparam bool isAutoStart 是否自动开始
ActorManager.CreateActor = function(self, alias, metaPath, isAutoStart)
print("create actor called " .. tostring(alias))
print(tostring(metaPath))
local actor = ActorManager.GetActorInternal(self, alias)
if actor == nil then
local metaActor = require(metaPath)
actor = metaActor:new()
actor.metaPath = metaPath
actor:OnPreInit()
if alias == nil or alias == '' then
alias = actor.defaultAlias
end
ActorManager.ActorDic[alias] = actor
actor:OnInit(alias)
actor:OnPostInit()
end
if isAutoStart == nil then
isAutoStart = true
end
if isAutoStart then
actor:Start()
end
return actor
end
--- actorMgr 创建一个Actor包含出身点一般用于创建EntityActor
-- @param self ActorManager实例本身
-- @tparam string alias 指定的别名
-- @tparam string metaPath 脚本路径
-- @tparam uint configID 配置ID
-- @tparam uint dataIndex 数据索引
-- @tparam Vector3 bornPos 出生点
-- @tparam Vector3 bornDir 出生朝向euler
-- @tparam bool isNetwork 是否服务器参与一般用于需要移动很远、任务交互等的NPC
-- @tparam bool isAutoStart 是否自动开始
-- @tparam uint sceneID 场景ID默认大世界3
ActorManager.CreateActorWithPos = function(self, alias, metaPath, configID, dataIndex, bornPos, bornDir,
isNetwork, isAutoStart, sceneID, noPerform, roomID)
if sceneID == nil then
sceneID = sceneData.DefaultSceneID
end
if roomID == nil then
if sceneID == 3 then
roomID = 0
else roomID = 1
end
end
if sceneID ~= sceneData.currSceneID and sceneData.currSceneID ~= 1001 then
if isNetwork and sceneData.currSceneID ~= -1 then
actorUtils.NotifyActorPreCreate(alias)
local metaActor = require(metaPath)
actorUtils.NotifyActorCreate(metaActor.actorType, alias, metaPath, configID, bornPos, bornDir,
sceneID, roomID)
end
self.dummyActor.alias = alias
return self.dummyActor
end
if noPerform == nil then
noPerform = true
end
print("create actor called " .. tostring(alias))
print(tostring(metaPath))
local actor = ActorManager.GetActorInternal(self, alias)
if actor ~= nil and actor:IsValid() ~= true then
ActorManager.ClearActor(self, alias)
actor = nil
end
if actor ~= nil then
if actor.defaultAlias == ActorManager.tempDefaultAlias then
local metaActor = require(metaPath)
if metaActor.defaultAlias ~= actor.defaultAlias then
ActorManager.ClearActor(self, alias)
actor = nil
end
end
end
if actor == nil then
actorUtils.NotifyActorPreCreate(alias)
local metaActor = require(metaPath)
actor = metaActor:new()
actor.configID = configID
actor.dataIndex = dataIndex
actor.bornSceneID = sceneID
actor.bornRoomID = roomID
actor.bornPos = bornPos
actor.bornDir = bornDir
actor.isNetwork = isNetwork
actor.isAutoStart = true
actor.dontDestroyOnClear = false
if isAutoStart ~= nil then
actor.isAutoStart = isAutoStart
end
local preAlias = actor:PreGetAlias()
actor:OnPreInit()
if alias == nil or alias == '' then
if preAlias ~= nil then
alias = preAlias
else
alias = actor.defaultAlias
end
end
actor.alias = alias
actor.metaPath = metaPath
ActorManager.ActorDic[alias] = actor
actor:OnInit(alias)
if actor.uActor == nil then
ActorManager.ActorDic[alias] = nil
self.dummyActor.alias = alias
return self.dummyActor
else
actor:OnPostInit()
if actor.CheckShow ~= nil then
actor:CheckShow()
end
end
else
actorUtils.NotifyActorPreCreate(alias)
local metaActor = require(metaPath)
actor:ClearAllTask()
actor.bornSceneID = sceneID
actor.bornRoomID = roomID
if actor.SetPosAndTurnTo ~= nil then
actor:SetPosAndTurnTo(bornPos, M.Euler2DirXZ(bornDir), noPerform)
else
if actor.SetPos ~= nil then
actor:SetPos(bornPos, noPerform)
end
if actor.TurnTo ~= nil then
actor:TurnTo(M.Euler2DirXZ(bornDir))
end
end
if actor.CheckShow ~= nil then
actor:CheckShow()
end
actor:ClearActor()
if actor.SyncPos ~= nil then
actor:SyncPos(0)
actorUtils.NotifyActorCreateSoft(metaActor.actorType, alias, metaPath, configID, bornPos, bornDir,
sceneID, roomID)
end
if isAutoStart then
actor:Start()
end
end
return actor
end
--- actorMgr 通过ActorInfoData创建一个Actor
-- @param self ActorManager实例本身
-- @tparam ActorInfoData data 创建Actor需要的数据
ActorManager.CreateActorWithData = function(self, data)
local sceneID = data.sceneID
if sceneID == -1 and sceneID == nil then
sceneID = sceneData.DefaultSceneID
end
local roomID = data.roomID
if roomID == nil then
roomID = 0
end
local alias = data.alias
local metaPath = data.metaPath
local configID = data.configID
local dataIndex = data.dataIndex
local bornPos = data.bornPos
local bornDir = data.bornEuler
local isNetwork = data.isNetwork
local isAutoStart = data.isAutoStart
local isCheckHide = data.checkHide
local dontDestroyOnClear = data.dontDestroyOnClear
if sceneID ~= sceneData.currSceneID and sceneData.currSceneID ~= 1001 then
if isNetwork and sceneData.currSceneID ~= -1 then
actorUtils.NotifyActorPreCreate(alias)
local metaActor = require(metaPath)
actorUtils.NotifyActorCreate(metaActor.actorType, alias, metaPath, configID, bornPos, bornDir,
sceneID, roomID)
end
self.dummyActor.alias = alias
return self.dummyActor
end
local noPerform = data.noPerform
if noPerform == nil then
noPerform = true
end
local actor = ActorManager.GetActorInternal(self, alias)
if actor ~= nil and actor:IsValid() ~= true then
ActorManager.ClearActor(self, alias)
actor = nil
end
if actor ~= nil then
if actor.defaultAlias == ActorManager.tempDefaultAlias then
local metaActor = require(metaPath)
if metaActor.defaultAlias ~= actor.defaultAlias then
ActorManager.ClearActor(self, alias)
actor = nil
end
end
end
if actor == nil then
actorUtils.NotifyActorPreCreate(alias)
local metaActor = require(metaPath)
actor = metaActor:new()
actor.configID = configID
actor.dataIndex = dataIndex
actor.bornSceneID = sceneID
actor.bornRoomID = roomID
actor.bornPos = bornPos
actor.bornDir = bornDir
actor.isNetwork = isNetwork
actor.isAutoStart = true
actor.actorData = data
actor.dontDestroyOnClear = dontDestroyOnClear
if isAutoStart ~= nil then
actor.isAutoStart = isAutoStart
end
local preAlias = actor:PreGetAlias()
actor:OnPreInit()
if alias == nil or alias == '' then
if preAlias ~= nil then
alias = preAlias
else
alias = actor.defaultAlias
end
end
actor.alias = alias
actor.metaPath = metaPath
ActorManager.ActorDic[alias] = actor
actor:OnInit(alias)
if actor.uActor == nil then
ActorManager.ActorDic[alias] = nil
self.dummyActor.alias = alias
return self.dummyActor
else
actor:OnPostInit()
if not isCheckHide then
if actor.CheckShow ~= nil then
actor:CheckShow()
end
end
end
else
actorUtils.NotifyActorPreCreate(alias)
actor:ClearAllTask()
actor.bornSceneID = sceneID
actor.bornRoomID = roomID
if actor.SetPosAndTurnTo ~= nil then
actor:SetPosAndTurnTo(bornPos, M.Euler2DirXZ(bornDir), noPerform)
else
if actor.SetPos ~= nil then
actor:SetPos(bornPos, noPerform)
end
if actor.TurnTo ~= nil then
actor:TurnTo(M.Euler2DirXZ(bornDir))
end
end
if not isCheckHide then
if actor.CheckShow ~= nil then
actor:CheckShow()
end
end
actor:ClearActor()
if actor.SyncPos ~= nil then
actor:SyncPos(0)
end
if isAutoStart then
actor:Start()
end
end
return actor
end
--- actorMgr 创建一个QuestActor 一般不需要主动调用
-- @param self ActorManager实例本身
-- @tparam string alias 指定的别名
-- @tparam string metaPath 脚本路径
-- @tparam uint mainID 主任务ID
ActorManager.CreateQuestActor = function(self, alias, metaPath, mainID)
print("create quest actor called " .. tostring(alias) .. " . " .. tostring(mainID))
print(tostring(metaPath))
local metaActor = require(metaPath)
local actor = metaActor:new()
actor.mainQuestID = mainID
actor.metaPath = metaPath
print(actor.mainQuestID)
actor:OnPreInit()
if alias == nil or alias == '' then
alias = tostring(mainID)
end
ActorManager.ActorDic[alias] = actor
actor:OnDataLoad()
actor:OnHandlerBuild()
actor:OnInit(alias)
actor:OnPostInit()
return actor
end
--- actorMgr 获取一个Actor
-- @tparam string alias Actor别名
ActorManager.GetActor = function(self, alias)
local actor = ActorManager.ActorDic[alias]
if actor == nil then
ActorManager.dummyActor.alias = alias
return ActorManager.dummyActor
end
return actor
end
--- actorMgr 销毁一个EntityActor
-- @param self ActorManager实例本身
-- @tparam string alias Actor别名
-- @tparam bool isActorOnly 只销毁Actor
ActorManager.DestroyEntityActor = function(self, alias, isActorOnly)
if isActorOnly == nil then
isActorOnly = false
end
local actor = self:GetActorInternal(alias)
if isActorOnly and actor == nil then
return
end
if actor ~= nil then
actor:Destroy(isActorOnly)
else
actorUtils.NotifyActorDestroy(alias)
end
end
ActorManager.GetActorInternal = function(self, alias)
local actor = ActorManager.ActorDic[alias]
return actor
end
ActorManager.ClearActor = function(self, alias)
ActorManager.ActorDic[alias] = nil
end
ActorManager.DestroyActor = function(self, alias, isActorOnly)
local actor = ActorManager.GetActorInternal(self, alias)
if actor ~= nil then
actor:Destroy(isActorOnly)
end
ActorManager.ActorDic[alias] = nil
end
ActorManager.DestroyActorMeta = function(self, alias)
local actor = ActorManager.GetActorInternal(self, alias)
if actor ~= nil then
local metaPath = actor.metaPath
actor:Destroy(false)
if metaPath ~= nil then
util.unrequire(metaPath)
end
end
ActorManager.ActorDic[alias] = nil
end
ActorManager.Destroy = function(self)
for alias, actor in pairs(ActorManager.ActorDic) do
local metaPath = nil
if actor ~= nil then
metaPath = actor.metaPath
end
ActorManager.DestroyActor(ActorManager, alias, false)
if metaPath ~= nil then
util.unrequire(metaPath)
end
end
end
ActorManager.DestroySoft = function(self)
for alias, actor in pairs(ActorManager.ActorDic) do
if actor ~= nil and not actor.dontDestroyOnClear then
local metaPath = nil
if actor ~= nil then
metaPath = actor.metaPath
end
ActorManager.DestroyActor(ActorManager, alias, false)
if metaPath ~= nil then
util.unrequire(metaPath)
end
end
end
end
ActorManager.StartActor = function(self, alias)
local actor = ActorManager.GetActorInternal(self, alias)
if actor ~= nil then
actor:Start()
end
end
ActorManager.SetEntityHandler = function(self, alias, runtimeID)
ActorManager.Alias2EntityIDDic[alias] = runtimeID
end
ActorManager.GetEntityHandler = function(self, alias)
return ActorManager.Alias2EntityIDDic[alias]
end
ActorManager.DestroyEntityHandler = function(self, alias)
ActorManager.Alias2EntityIDDic[alias] = nil
end
return ActorManager

View File

@@ -0,0 +1,23 @@
----------------------
-- 这是Lua端ActorMode的基类包含了一些Actor在特殊情况下的模式定义.
-- @classmod BaseActorMode
require('Base/Class')
local BaseActorMode = class("BaseActorMode", nil)
--- 切换Mode
function BaseActorMode:SwitchMode(alias)
local actor = actorMgr:GetActorInternal(alias)
if actor == nil then
return
end
local modeFunc = self[alias]
if modeFunc == nil then
return
end
modeFunc(actor)
end
return BaseActorMode

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,45 @@
require('Actor/ActorCommon')
local ConfigCommon = {}
ConfigCommon.InterConfig = {}
ConfigCommon.InterConfig.default_start =
{
{
type = InteractionType.STEER_TO,
steerType = DialogSteerType.TO_LOCAL_AVATAR,
duration = 1.0
},
{
type = InteractionType.CAMERA_MOVE,
cameraPosType = StoryCameraPosType.RELATIVE_TO_INTER,
camPosOffset = {x = 0, y = 0.5, z = 0},
nearLength = 2,
camTargetType = StoryCameraTargetType.TO_INTEE,
camForwardTargetOffset = {x = 0, y = 0.5, z = 0},
duration = 1.0,
lerpRatio = 5.0,
lerpPattern = 0
}
}
ConfigCommon.InterConfig.default_finish =
{
{
type = InteractionType.STEER_TO,
steerType = DialogSteerType.RETURN,
duration = 1.0
},
{
type = InteractionType.CAMERA_MOVE,
cameraPosType = StoryCameraPosType.EXIT,
camPosOffset = {x = 0, y = 0, z = 0},
nearLength = 0,
camTargetType = StoryCameraTargetType.TO_INTEE,
camForwardTargetOffset = {x = 0, y = 0, z = 0},
duration = 1.0,
lerpRatio = 5.0,
lerpPattern = 1
}
}
return ConfigCommon

View File

@@ -0,0 +1,29 @@
----------------------
-- 这是Lua端CutsceneActorProxy的基类包含一些全局控制函数。继承自SubGlobalActorProxy
-- @classmod CutsceneActorProxy
require('Actor/ActorCommon')
local subGlobalActorProxy = require('Actor/SubGlobal/SubGlobalActorProxy')
local CutsceneActorProxy = class("CutsceneActorProxy", subGlobalActorProxy)
CutsceneActorProxy.actorType = ActorType.CUTSCENE_ACTOR
--- SubGlobalActorProxy alias
CutsceneActorProxy.defaultAlias = "Cutscene"
local super = nil
function CutsceneActorProxy:OnPreInit()
super = self.__super
super:OnPreInit()
end
function CutsceneActorProxy:CreateUActor(alias)
local uActor = actorUtils.CreateActor(self, ActorType.CUTSCENE_ACTOR, alias, self.metaPath)
return uActor
end
function CutsceneActorProxy:Start()
end
return CutsceneActorProxy

View File

@@ -0,0 +1,20 @@
require('Actor/ActorCommon')
local cutsceneActorProxy = require('Actor/Cutscene/CutsceneActorProxy')
local CutsceneActor_Goddess1201 = class("CutsceneActor_Goddess1201", cutsceneActorProxy)
function CutsceneActor_Goddess1201:Start()
print("spawn local monster for goddess 1201")
self:SpawnLocalMonster("show101", 21010201, 1, M.Pos(2404, 206, -5385), 0, 0, 1.0)
self:SpawnLocalMonster("show102", 21010201, 1, M.Pos(2406, 206, -5386), 0, 0, 1.0)
self:SpawnLocalMonster("show103", 21010301, 1, M.Pos(2406, 206, -5388), 0, 0, 1.0)
end
function CutsceneActor_Goddess1201:OnDestroy()
print("unspawn local mosnter for goddess 1201")
self:UnSpawn("show101")
self:UnSpawn("show102")
self:UnSpawn("show103")
end
return CutsceneActor_Goddess1201

View File

@@ -0,0 +1,34 @@
require('Actor/ActorCommon')
local cutsceneActorProxy = require('Actor/Cutscene/CutsceneActorProxy')
local CutsceneActor_GoddessLvup = class("CutsceneActor_GoddessLvup", cutsceneActorProxy)
local alias = "mywind"
local airFlowActor
local function PlayEffect()
local effctPos = airFlowActor:GetPos()
airFlowActor:PlayEffect("FlyRace_Marker_Active_AS", effctPos)
end
function CutsceneActor_GoddessLvup:Start()
print("****************CutsceneActor_GoddessLvup:Start*******************")
airFlowActor = actorMgr:GetActor(alias)
if airFlowActor == nil or airFlowActor == actorMgr.dummyActor then
airFlowActor = nil
print("can not find " .. alias)
else
airFlowActor:SetActive(false)
self:CallDelay(1, PlayEffect)
end
end
function CutsceneActor_GoddessLvup:OnDestroy()
print("#################CutsceneActor_GoddessLvup:OnDestroy()##################")
if airFlowActor ~= nil then
airFlowActor:SetActive(true)
airFlowActor = nil
end
end
return CutsceneActor_GoddessLvup

View File

@@ -0,0 +1,66 @@
require('Actor/ActorCommon')
local cutsceneActorProxy = require('Actor/Cutscene/CutsceneActorProxy')
local CutsceneActor_GoddessLvup = class("CutsceneActor_GoddessLvup", cutsceneActorProxy)
local airFlowActor
local alias = {"WindField_Vertical_01", "WindField_Horizontal_01", "WindField_Horizontal_02", "WindField_Horizontal_03"}
function CutsceneActor_GoddessLvup:CreateWindLocal()
if airFlowActor ~= nil then
local pos = airFlowActor:GetPos()
actorMgr:CreateActorWithPos("localWind", "Actor/Gadget/AirflowFieldActor", 70610101, 0, pos, {x=0,y=0,z=0}, true, false)
end
end
function CutsceneActor_GoddessLvup:DestroyWindLocal()
local localWind = actorMgr:GetActor("localWind")
if localWind == nil or localWind == actorMgr.dummyActor then
print("can not find localWind")
else
localWind:DestroySelf()
end
end
function CutsceneActor_GoddessLvup:ShowEffect()
if airFlowActor ~= nil then
local effctPos = airFlowActor:GetPos()
self:PlayEffect("WindSource01_PowerUp", effctPos)
--self:CallDelay(2, self.CreateWindLocal)
end
end
function CutsceneActor_GoddessLvup:Start()
print("****************CutsceneActor_GoddessLvup:Start*******************")
for i,v in ipairs(alias) do
local actor = actorMgr:GetActor(v)
if actor == nil or actor == actorMgr.dummyActor then
print("can not find " .. v)
else
--print(i)
if i == 1 then
airFlowActor = actor
end
actor:SetActive(false)
end
end
if airFlowActor ~= nil then
self:CallDelay(9, self.ShowEffect)
end
end
function CutsceneActor_GoddessLvup:OnDestroy()
print("#################CutsceneActor_GoddessLvup:OnDestroy()##################")
self:DestroyWindLocal()
for _,v in ipairs(alias) do
local actor = actorMgr:GetActor(v)
if actor ~= nil and actor ~= actorMgr.dummyActor then
actor:SetActive(true)
end
end
airFlowActor = nil
end
return CutsceneActor_GoddessLvup

View File

@@ -0,0 +1,16 @@
require('Actor/ActorCommon')
local cutsceneActorProxy = require('Actor/Cutscene/CutsceneActorProxy')
local TestCutsceneActor = class("TestCutsceneActor", cutsceneActorProxy)
function TestCutsceneActor:Start()
print("***********************************")
self:SpawnLocalMonster("show102", 21010301, 1, M.Pos(371.25, 205.46, -258.35), 0, 0, 1.0)
end
function TestCutsceneActor:OnDestroy()
print("###################################")
self:UnSpawn("show102")
end
return TestCutsceneActor

View File

@@ -0,0 +1,73 @@
local DailyNpcManager={}
local NpcEventTypeLua = require('Actor/Npc/NPCEventType')
local NpcModeType = require('Actor/Npc/NpcMode/NpcModeType')
local CfgMengdeDayPatrol = require('Actor/Npc/Config/CfgMengdeDayPatrol')
local CfgMengdeInsomniaPatrol = require('Actor/Npc/Config/CfgMengdeInsomniaPatrol')
local CfgMengdeDayStand = require('Actor/Npc/Config/CfgMengdeDayStand')
local CfgMengdeNightStand = require('Actor/Npc/Config/CfgMengdeNightStand')
local CfgMengdeNightSit = require('Actor/Npc/Config/CfgMengdeNightSit')
local CfgMengdeInsomniaStand = require('Actor/Npc/Config/CfgMengdeInsomniaStand')
local CfgMengdeDaySit = require('Actor/Npc/Config/CfgMengdeDaySit')
DailyNpcManager.NpcEventType = NpcEventTypeLua.DailyNpcEventType
--得到蒙德城所有NPC信息返回值为一个table
DailyNpcManager.GetMengdeNpcList= function()
local list={}
for i=1, #CfgMengdeDayPatrol.DummyPointData.NpcID do
table.insert(list,"MengdeDayPatrol" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeInsomniaPatrol.DummyPointData.NpcID do
table.insert(list,"MengdeInsomniaPatrol" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeDayStand.DummyPointData.NpcID do
table.insert(list,"MengdeDayStand" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeNightStand.DummyPointData.NpcID do
table.insert(list,"MengdeNightStand" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeNightSit.DummyPointData.NpcID do
table.insert(list,"MengdeNightSit" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeInsomniaStand.DummyPointData.NpcID do
table.insert(list,"MengdeInsomniaStand" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeDaySit.DummyPointData.NpcID do
table.insert(list,"MengdeDaySit" .. '_' .. tostring(i))
end
return list
end
--得到蒙德城所有NPC信息除去个别返回值为一个table
DailyNpcManager.GetMengdeNpcListSpecial= function()
local list={}
for i=1, #CfgMengdeDayPatrol.DummyPointData.NpcID do
table.insert(list,"MengdeDayPatrol" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeInsomniaPatrol.DummyPointData.NpcID do
table.insert(list,"MengdeInsomniaPatrol" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeDayStand.DummyPointData.NpcID do
table.insert(list,"MengdeDayStand" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeNightStand.DummyPointData.NpcID do
table.insert(list,"MengdeNightStand" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeNightSit.DummyPointData.NpcID do
table.insert(list,"MengdeNightSit" .. '_' .. tostring(i))
end
for i=1, #CfgMengdeInsomniaStand.DummyPointData.NpcID do
if i~=15 and i~=18 then
table.insert(list,"MengdeInsomniaStand" .. '_' .. tostring(i))
end
end
for i=1, #CfgMengdeDaySit.DummyPointData.NpcID do
table.insert(list,"MengdeDaySit" .. '_' .. tostring(i))
end
return list
end
return DailyNpcManager

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,836 @@
----------------------
-- 这是Lua端EntityActor的基类包含了控制Entity行为的方法。继承自BaseActorProxy
-- @classmod EntityActorProxy
require('Actor/ActorCommon')
local baseActorProxy = require('Actor/BaseActorProxy')
local EntityActorProxy = class("EntityActorProxy", baseActorProxy)
local super = nil
function EntityActorProxy:OnPreInit()
super = self.__super
end
function EntityActorProxy:PreGetAlias()
return nil
end
--- EntityActor操作的Entity的configID
EntityActorProxy.configID = nil
--- Entity的出生位置
EntityActorProxy.bornPos = nil
--- Entity的出生朝向
EntityActorProxy.bornDir = nil
--- Entity是否为网络单位
EntityActorProxy.isNetwork = false
EntityActorProxy.actorType = ActorType.BASE_ENTITY
function EntityActorProxy:OnInit(alias)
super:OnInit(alias)
local uActor = self:CreateUActor(alias)
self.uActor = uActor
self:Register()
end
--- Actor C#端Actor对象创建如果需要走不同的创建流程则需要重写这个方法
function EntityActorProxy:CreateUActor(alias)
local uActor = actorUtils.CreateActor(self, ActorType.BASE_ENTITY, alias, self.metaPath)
return uActor
end
function EntityActorProxy:Register()
--print("here register your callback")
end
function EntityActorProxy:Start()
--print("here start")
end
--- EntityActor 属性相关的方法
-- @section prop
--- EntityActor通过propTyoe来获取当前属性
-- @tparam PropType propType属性的类型
-- @treturn float 属性数值
function EntityActorProxy:GetPropValue(propType)
return self.uActor:GetPropValue(propType)
end
--- EntityActor 移动相关的方法
-- @section move
--- EntityActor行走到一个坐标
-- @tparam Vector3 pos 坐标绝对值
function EntityActorProxy:WalkTo(pos)
self.uActor:WalkTo(pos)
end
--- EntityActor沿着路点行走到一个坐标
-- @tparam List<Vector3> posList 路点链表
function EntityActorProxy:WalkToRoute(posList)
self.uActor:WalkToRoute(posList)
end
--- EntityActor沿着路点行走到一个坐标
-- @tparam ConfigRoute routeConfig 路点Config
function EntityActorProxy:WalkToRouteByData(routeConfig)
self.uActor:WalkToRouteByData(routeConfig)
end
--- EntityActor跑动到一个坐标
-- @tparam Vector3 pos 坐标绝对值
function EntityActorProxy:RunTo(pos)
self.uActor:RunTo(pos)
end
--- EntityActor沿着路点跑动到一个坐标
-- @tparam List<Vector3> posList 路点链表
function EntityActorProxy:RunToRoute(posList)
self.uActor:RunToRoute(posList)
end
--- EntityActor沿着路点跑动到一个坐标
-- @tparam ConfigRoute routeConfig 路点Config
function EntityActorProxy:RunToRouteByData(routeConfig)
self.uActor:RunToRouteByData(routeConfig)
end
--- EntityActor原地暂停
function EntityActorProxy:Standby()
self.uActor:Standby(false)
end
--- EntityActor原地待机(不会恢复寻路)
function EntityActorProxy:StandbyNoResume()
self.uActor:Standby(true)
end
--- EntityActor恢复移动
function EntityActorProxy:ResumeMove()
self.uActor:ResumeMove()
end
--- EntityActor主动同步当前位置
-- @tparam int state 状态0:standby, 1:walk, 2:run
function EntityActorProxy:SyncPos(state)
self.uActor:SyncPos(state)
end
--- EntityActor是否再执行freeStyle
function EntityActorProxy:DoingFreeStyle()
return self.uActor:DoingFreeStyle()
end
--- EntityActor执行自定义的动作需要预先在状态机里配置
-- @tparam int freeStyleType 状态机里切换到某个状态的对应参数
-- @tparam bool freeStyleForceInterrupt 强制打断当前行为
function EntityActorProxy:DoFreeStyle(freeStyleType, freeStyleForceInterrupt)
if freeStyleForceInterrupt == nil then
freeStyleForceInterrupt = true
end
self.uActor:DoFreeStyle(freeStyleType, freeStyleForceInterrupt)
end
--- EntityActor执行自定义的动作继续需要于现在状态机里配置FreeStateTrigger
function EntityActorProxy:DoFreeStateTrigger()
self.uActor:DoFreeStateTrigger()
end
--- EntityActor做完一个FreeStyle的回调
function EntityActorProxy:InvokeOnResetFreeStyle(freeStyleType)
end
--- EntityActor转向一个方向
-- @tparam Vector3 dir 这是一个forward如果是euler旋转角要通过M.Euler2DirXZ转换一下
function EntityActorProxy:TurnTo(dir)
self.uActor:TurnTo(dir)
end
--- EntityActor获取当前坐标
-- @treturn Vector3 所在坐标绝对值
function EntityActorProxy:GetPos()
return self.uActor:GetPos()
end
--- EntityActor获取当前GetEuler
-- @treturn Vector3 所在坐标绝对值
function EntityActorProxy:GetEuler()
return self.uActor:GetEuler()
end
--- EntityActor获取当前朝向
-- @treturn Vector3 所在坐标绝对值
function EntityActorProxy:GetForward()
return self.uActor:GetForward()
end
--- EntityActor获取当前是否Standby
-- @treturn bool 是否站立
function EntityActorProxy:IsInIdle()
return self.uActor:IsInIdle()
end
--- EntityActor瞬移到一个点并转向
-- @tparam Vector3 pos 坐标绝对值
-- @tparam Vector3 dir 方向向量
-- @tparam bool 不需要演出
function EntityActorProxy:SetPosAndTurnTo(pos, dir, noPerform)
if noPerform == nil then
noPerform = true
end
self.uActor:SetPosAndTurnTo(pos, dir, noPerform)
end
--- EntityActor瞬移到一个点
-- @tparam Vector3 pos 坐标绝对值
-- @tparam bool 不需要演出
function EntityActorProxy:SetPos(pos, noPerform)
if noPerform == nil then
noPerform = true
end
self.uActor:SetPos(pos, noPerform)
end
--- EntityActor获取当前欧拉角
-- @treturn Vector3 当前相对于世界的欧拉角
function EntityActorProxy:GetEuler()
return self.uActor:GetEuler()
end
--- EntityActor隐藏
-- @tparam bool value 是否隐藏
function EntityActorProxy:Hide(value)
self.uActor:Hide(value)
end
--- EntityActor标准隐藏
function EntityActorProxy:HideSelf()
self:Stop()
self:Standby()
self:Hide(true)
end
--- EntityActor标准出现
function EntityActorProxy:ShowSelf()
self:Hide(false)
end
--- EntityActor非Daily的检查出现
function EntityActorProxy:CheckShow()
self.uActor:CheckShow()
end
--- EntityActor找椅子坐下
function EntityActorProxy:SitOnChair()
self.uActor:SitOnChair()
end
--- EntityActor从椅子上站起
function EntityActorProxy:StandFromChair()
self.uActor:StandFromChair()
end
--- EntityActor开启整个AI
-- @tparam bool value 是否开启AI
function EntityActorProxy:EnableAI(value)
self.uActor:EnableAI(value)
end
--- EntityActor开启交互
-- @tparam bool value 是否开启交互
function EntityActorProxy:EnableInteraction(value)
self.uActor:EnableInteraction(value)
end
EntityActorProxy.targetPos = nil
EntityActorProxy.routePoints = nil
EntityActorProxy.routeConfig = nil
function EntityActorProxy:StartWalkTo(task)
self:WalkTo(self.targetPos)
end
function EntityActorProxy:StartWalkToRoute(task)
self:WalkToRoute(self.routePoints)
end
function EntityActorProxy:StartWalkToRouteByData(task)
self:WalkToRouteByData(self.routeConfig)
end
function EntityActorProxy:StartRunTo(task)
self:RunTo(self.targetPos)
end
function EntityActorProxy:StartRunToRoute(task)
self:RunToRoute(self.routePoints)
end
function EntityActorProxy:StartRunToRouteByData(task)
self:RunToRouteByData(self.routeConfig)
end
function EntityActorProxy:StartFollowRunTo(task)
if self.BeFollowState == BeFollowState.ING then
self:RunTo(self.targetPos)
end
end
function EntityActorProxy:StartFollowRunToRoute(task)
if self.BeFollowState == BeFollowState.ING then
self:RunToRoute(self.routePoints)
end
end
function EntityActorProxy:StartFollowRunToRouteByData(task)
if self.BeFollowState == BeFollowState.ING then
self:RunToRouteByData(self.routeConfig)
end
end
function EntityActorProxy:CheckArrived(task, deltaTime)
if self.targetPos == nil then
task:FinishTask()
end
end
EntityActorProxy.BeFollowLen = 10
EntityActorProxy.BeFollowFailedLen = 20
EntityActorProxy.BeFollowState = BeFollowState.ING
EntityActorProxy.BeFollowFailed = nil
EntityActorProxy.OnTransFinishCallback = nil
EntityActorProxy.OnTransPreCallback = nil
EntityActorProxy.TransOffset = 1
EntityActorProxy.IsBeLocked = false
EntityActorProxy.BeLockTransLen = 30
EntityActorProxy.OnFinishCB = nil
EntityActorProxy.OnMovePauseCB = nil
EntityActorProxy.OnMoveResumeCB = nil
EntityActorProxy.OnMoveFailedCB = nil
function EntityActorProxy:FinishFollow(task)
print("FinishFollow", self.OnFinishCB, self.BeFollowLen, self.BeFollowState)
self.BeFollowState = BeFollowState.SUCCESS
if self.OnFinishCB ~= nil then
self:OnFinishCB(task)
end
end
function EntityActorProxy:CheckBeFollow(task, deltaTime)
if self.targetPos == nil then
task:FinishTask()
end
local selfPos = self:GetPos()
local avatarPos = actorUtils.GetAvatarPos()
local currLen = M.Dist(selfPos, avatarPos)
--print("CheckBeFollow", self.targetPos, currLen, self.BeFollowLen, self.BeFollowState)
if self.BeFollowFailedLen >= 0 and currLen > self.BeFollowFailedLen then
print("Failed")
self.BeFollowState = BeFollowState.FAILED
task:FinishTask()
elseif currLen > self.BeFollowLen then
if self.BeFollowState ~= BeFollowState.WAITING then
self.BeFollowState = BeFollowState.WAITING
self:Standby()
end
else
if self.BeFollowState == BeFollowState.WAITING then
self.BeFollowState = BeFollowState.ING
self:RunTo(self.targetPos)
end
end
end
function EntityActorProxy:DisappearFollow(task)
self.BeFollowState = BeFollowState.FAILED
task:FinishTask()
end
function EntityActorProxy:CheckBeFollowRoute(task, deltaTime)
if self.targetPos == nil then
task:FinishTask()
end
local selfPos = self:GetPos()
local avatarPos = actorUtils.GetAvatarPos()
local currLen = M.Dist(selfPos, avatarPos)
--print("CheckBeFollow", self.targetPos, currLen, self.BeFollowLen, self.BeFollowState)
if self.BeFollowFailedLen >= 0 and currLen > self.BeFollowFailedLen then
print("Failed")
self.BeFollowState = BeFollowState.FAILED
if self.OnFinishCB ~= nil then
self:OnFinishCB(task)
end
if self.OnMoveFailedCB ~= nil then
self:OnMoveFailedCB()
end
elseif currLen > self.BeFollowLen then
if self.BeFollowState ~= BeFollowState.WAITING then
self.BeFollowState = BeFollowState.WAITING
if self.OnMovePauseCB == nil then
self:Standby()
else
self:OnMovePauseCB()
end
end
else
if self.BeFollowState == BeFollowState.WAITING then
self.BeFollowState = BeFollowState.ING
if self.OnMoveResumeCB == nil then
self:ResumeMove()
else
self:OnMoveResumeCB()
end
end
end
end
function EntityActorProxy:DisappearFollowRoute(task)
self.BeFollowState = BeFollowState.FAILED
if self.OnFinishCB ~= nil then
self:OnFinishCB(task)
end
if self.OnMoveFailedCB ~= nil then
self:OnMoveFailedCB()
end
end
function EntityActorProxy:CheckBeLock(task, deltaTime)
local selfPos = self:GetPos()
local avatarPos = actorUtils.GetAvatarPos()
local currLen = M.Dist(selfPos, avatarPos)
if self.BeLockTransLen >= 0 and currLen > self.BeLockTransLen then
if self.IsBeLocked == false then
self.IsBeLocked = true
self:Standby()
local avatarEular = M.Dir2Euler(selfPos - avatarPos)
local newPos = nil
if type(self.TransOffset) == "number" then
newPos = selfPos - self.TransOffset * self:GetForward()
else
newPos = self.TransOffset
end
self:SyncPos(0)
if self:TransmitPlayer(0, newPos, avatarEular, function(actor)
self:OnTransFinishCallback()
end,
function(actor)
self:OnTransPreCallback()
end) == false then
self.IsBeLocked = false
end
end
elseif currLen <= self.BeLockTransLen then
if self.IsBeLocked == true then
self.IsBeLocked = false
end
end
end
--- EntityActor走到一个点的Task
-- @tparam Vector3 pos 坐标绝对值
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:WalkToTask(pos, OnFinish, OnPause, OnResume)
--print("Walk to task")
self:ClearFollowTask()
self.targetPos = pos
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartWalkTo)
task:TickEvent('+', self.CheckArrived)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor沿着指定路点走到一个点的Task
-- @tparam List<Vector3> points 路点序列
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:WalkToRouteTask(points, OnFinish, OnPause, OnResume)
print("Walk to route task")
self:ClearFollowTask()
self.targetPos = points[#points]
self.routePoints = points
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartWalkToRoute)
task:TickEvent('+', self.CheckArrived)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor沿着路点配置中的路点走到最后的Task
-- @tparam ConfigRoute routeConfig 路点序列配置
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:WalkToRouteByDataTask(routeConfig, OnFinish, OnPause, OnResume)
print("Walk to route by data task")
self:ClearFollowTask()
self.targetPos = routeConfig.points[#routeConfig.points]
self.routeConfig = routeConfig
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartWalkToRouteByData)
task:TickEvent('+', self.CheckArrived)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor跑到一个点的Task
-- @tparam Vector3 pos 坐标绝对值
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:RunToTask(pos, OnFinish, OnPause, OnResume)
--print("Run to task")
self:ClearFollowTask()
self.targetPos = pos
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartRunTo)
task:TickEvent('+', self.CheckArrived)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor沿着指定路点跑到一个点的Task
-- @tparam List<Vector3> points 路点序列
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:RunToRouteTask(points, OnFinish, OnPause, OnResume)
print("Run to route task")
self:ClearFollowTask()
self.targetPos = points[#points]
self.routePoints = points
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartRunToRoute)
task:TickEvent('+', self.CheckArrived)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor沿着路点配置中的路点跑到最后的Task
-- @tparam ConfigRoute routeConfig 路点序列配置
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:RunToRouteByDataTask(routeConfig, OnFinish, OnPause, OnResume)
print("Run to route by data task")
self:ClearFollowTask()
self.targetPos = routeConfig.points[#routeConfig.points]
self.routeConfig = routeConfig
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartRunToRouteByData)
task:TickEvent('+', self.CheckArrived)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor走向一个点并让玩家跟随如果距离小远则等待大远则失败
-- @tparam Vector3 pos 坐标绝对值
-- @tparam float beFollowLen 小于这个值则继续走向预设点,否则等待
-- @tparam float beFollowFailed 小于这个值则等待, 否则失败,如果是负数则一直等待不会失败
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:BeFollowTask(pos, beFollowLen, beFollowFailed,
OnFinish, OnPause, OnResume)
print("Be follow task")
self:ClearFollowTask()
self.targetPos = pos
self.BeFollowLen = beFollowLen
self.BeFollowFailedLen = beFollowFailed
self.BeFollowState = BeFollowState.ING
self.OnFinishCB = OnFinish
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartFollowRunTo)
task:TickEvent('+', self.CheckBeFollow)
task:FinishEvent('+', self.FinishFollow)
task:DisappearEvent('+', self.DisappearFollow)
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor走向一个点并让玩家跟随如果距离小远则等待大远则失败
-- @tparam table data 包含必要参数
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
function EntityActorProxy:BeFollowTaskByData(data,
OnFinish, OnPause, OnResume)
self:BeFollowTask(data.pos, data.beFollowLen, data.beFollowFailed, OnFinish, OnPause, OnResume)
end
--- EntityActor走过一组路径点并让玩家跟随如果距离小远则等待大远则失败
-- @tparam List<Vector3> points 路点序列
-- @tparam float beFollowLen 小于这个值则继续走向预设点,否则等待
-- @tparam float beFollowFailed 小于这个值则等待, 否则失败,如果是负数则一直等待不会失败
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
-- @tparam function OnMovePause 跟随中暂停时执行的回调如果为nil则调用Standby()
-- @tparam function OnMoveResume 跟随中继续时执行的回调如果为nil则调用Resume()
-- @tparam function OnMoveFailed 跟随中失败的回调
function EntityActorProxy:BeFollowTaskByRoutePoints(points, beFollowLen, beFollowFailed,
OnFinish, OnPause, OnResume, OnMovePause, OnMoveResume, OnMoveFailed)
print("Be follow task")
self:ClearFollowTask()
self.targetPos = points[#points]
self.routePoints = points
self.BeFollowLen = beFollowLen
self.BeFollowFailedLen = beFollowFailed
self.BeFollowState = BeFollowState.ING
self.OnFinishCB = OnFinish
self.OnMovePauseCB = OnMovePause
self.OnMoveResumeCB = OnMoveResume
self.OnMoveFailedCB = OnMoveFailed
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartFollowRunToRoute)
task:TickEvent('+', self.CheckBeFollowRoute)
task:FinishEvent('+', self.FinishFollow)
task:DisappearEvent('+', self.DisappearFollowRoute)
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
--- EntityActor走过一组配置的路径点并让玩家跟随如果距离小远则等待大远则失败
-- @tparam ConfigRoute routeConfig 路点序列配置
-- @tparam float beFollowLen 小于这个值则继续走向预设点,否则等待
-- @tparam float beFollowFailed 小于这个值则等待, 否则失败,如果是负数则一直等待不会失败
-- @tparam function OnFinish task结束后执行的回调
-- @tparam function OnPause task暂停时执行的回调
-- @tparam function OnResume task继续时执行的回调如果为nil则执行Start即走到原定的点
-- @tparam function OnMovePause 跟随中暂停时执行的回调如果为nil则调用Standby()
-- @tparam function OnMoveResume 跟随中继续时执行的回调如果为nil则调用Resume()
-- @tparam function OnMoveFailed 跟随中失败的回调
function EntityActorProxy:BeFollowTaskByRouteConfig(routeConfig, beFollowLen, beFollowFailed,
OnFinish, OnPause, OnResume, OnMovePause, OnMoveResume, OnMoveFailed)
print("Be follow task")
self:ClearFollowTask()
self.targetPos = routeConfig.points[#routeConfig.points]
self.routeConfig = points
self.BeFollowLen = beFollowLen
self.BeFollowFailedLen = beFollowFailed
self.BeFollowState = BeFollowState.ING
self.OnFinishCB = OnFinish
self.OnMovePauseCB = OnMovePause
self.OnMoveResumeCB = OnMoveResume
self.OnMoveFailedCB = OnMoveFailed
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.MOVE, "Move")
task:StartEvent('+', self.StartFollowRunToRouteByData)
task:TickEvent('+', self.CheckBeFollowRoute)
task:FinishEvent('+', self.FinishFollow)
task:DisappearEvent('+', self.DisappearFollowRoute)
if OnPause ~= nil then
task:PauseEvent('+', OnPause)
end
if OnResume ~= nil then
task:ResumeEvent('+', OnResume)
end
end
function EntityActorProxy:ClearBeLockTask()
self:ClearTask(TaskID.LOCK_TASK_ID)
end
--- EntityActor让玩家跟随大远则拉回
-- @tparam float beFollowLen 大宇于这个值则传送
-- @tparam float transOffset 传送位置偏移
-- @tparam function onTransFinishCB 传送完以后干的事情
-- @tparam function onTransPreCB 传送黑屏时候干的事情
function EntityActorProxy:BeLockTask(beLockTransLen, transOffset, onTransFinishCB, onTransPreCB)
print("Be lock task ")
self:ClearBeLockTask()
self.IsBeLocked = false
self.BeLockTransLen = beLockTransLen
self.TransOffset = transOffset
self.OnTransFinishCallback = onTransFinishCB
self.OnTransPreCallback = onTransPreCB
local task = self:CreateTask(TaskID.LOCK_TASK_ID, LuaTaskType.NORMAL, "Lock")
task:TickEvent('+', self.CheckBeLock)
end
--- EntityActor走向一个点并让玩家跟随如果距离小远则等待 中距离则提示,大远则拉回
-- @tparam table data 包含必要参数
-- @tparam function onTransFinishCB 传送完以后干的事情
function EntityActorProxy:BeLockTaskByData(data, onTransFinishCB)
self:BeLockTask(data.beLockTransLen, data.transOffset, onTransFinishCB)
end
EntityActorProxy.freeStyleType = -1
EntityActorProxy.freeStyleForceInterrupt = false
function EntityActorProxy:StartFreeStyle(task)
self:DoFreeStyle(self.freeStyleType, self.freeStyleForceInterrupt)
end
function EntityActorProxy:ResumeFreeStyle(task)
task:FinishTask()
end
--- EntityActor做一个动作并且有结束回调
-- @tparam int freeStyleType 对应状态机中的type条件
-- @tparam bool freeStyleForceInterrupt 强制打断当前行为
-- @tparam function OnFinish task结束后执行的回调
function EntityActorProxy:DoFreeStyleTask(freeStyleType, freeStyleForceInterrupt, OnFinish)
if not freeStyleForceInterrupt then
if self:DoingFreeStyle() then
return
end
end
self:ClearFollowTask()
self.freeStyleType = freeStyleType
self.freeStyleForceInterrupt = true
local task = self:CreateTask(TaskID.MOVE_TASK_ID, LuaTaskType.FREE_STYLE, "Idle")
task:SetFreeStyleType(freeStyleType)
task:StartEvent('+', self.StartFreeStyle)
task:ResumeEvent('+', self.ResumeFreeStyle)
if OnFinish ~= nil then
task:FinishEvent('+', OnFinish)
end
end
--- EntityActor切换到飞行
-- @tparam bool value 是否飞行
function EntityActorProxy:SwitchAirMode(value)
self.uActor:SwitchAirMode(value)
end
function EntityActorProxy:ClearActor()
self.uActor:ClearActor()
self.targetPos = nil
self.routePoints = nil
self.routeConfig = nil
self.BeFollowLen = 10
self.BeFollowFailedLen = 20
self.BeFollowState = BeFollowState.ING
self.BeFollowFailed = nil
self.IsBeLocked = false
end
--Move End
--Render相关方法
-- @section Render
--- Entity渐隐渐现
-- @tparam bool enable true时候显现false隐掉
-- @tparam float duration 变化时长
-- @tparam function finishCallback 变化结束时候回调
function EntityActorProxy:PerformDither(enable, duration, finishCallback)
self.uActor:PerformDither(enable, duration, finishCallback)
end
--- Entity可见或不可见
-- @tparam bool value true可见false不可见
function EntityActorProxy:SetVisible(value)
self.uActor:SetVisible(value)
end
--- Entity渐隐销毁
-- @tparam bool isActorOnly只销毁Actor不销毁Entity
-- @tparam float duration 渐隐时长
function EntityActorProxy:DestroyWithDither(isActorOnly, duration)
self:OnDestroy()
self.uActor:DestroyWithDither(isActorOnly, duration)
end
--- Entity消失
-- @tparam function finishCallback 消失后的回掉
function EntityActorProxy:Disappear(finishCallback)
self.uActor:Disappear(finishCallback)
end
--- Entity消失销毁
-- @tparam bool isActorOnly只销毁Actor不销毁Entity
-- @tparam function finishCallback 消失后的回掉
function EntityActorProxy:DestroyWithDisappear(isActorOnly, finishCallback)
self.uActor:DestroyWithDisappear(isActorOnly, finishCallback)
end
--- Entity直接消失/显示
function EntityActorProxy:SetActive(active)
self.uActor:SetActive(active)
end
--Render End
--AI相关方法
-- @section AI
function EntityActorProxy:ClearThreatTask()
self:ClearTask(TaskID.THREAD_TASK_ID)
end
--- 创建一个监测仇恨值的Task
-- @tparam function OnThreatInfo Alert(100%)时候的回调
-- @tparam function OnThreatAware Aware时候的回调
-- @tparam function OnThreatUnaware Unaware时候的回调
-- @tparam function OnThreatInfo info更新时候的回调会包含一个整合了一帧内所有信息的数据 function XXX:OnThreatInfo(task, info) info.hasSound info.soundPos info.volume
function EntityActorProxy:ThreatTask(OnThreatAlert, OnThreatAware, OnThreatUnaware, OnThreatInfo)
self:ClearThreatTask()
local task = self:CreateTask(TaskID.THREAD_TASK_ID, LuaTaskType.THREAT)
if OnThreatAlert ~= nil then
task:ThreatAlert('+', OnThreatAlert)
end
if OnThreatAware ~= nil then
task:ThreatAware('+', OnThreatAware)
end
if OnThreatUnaware ~= nil then
task:ThreatUnaware('+', OnThreatUnaware)
end
if OnThreatInfo ~= nil then
task:ThreatInfo('+', OnThreatInfo)
end
end
--- 创建一个监测仇恨值的Task
-- @tparam function dir 方向
-- @tparam function time 转向时间
-- @tparam function isAnime 是否启用动画
-- @tparam function isbreak 是否打断
function EntityActorProxy:SteerToTask(dir,time,isAnime,isbreak)
local task=self:CreateTask(TaskID.MOVE_TASK_ID,LuaTaskType.STEER)
task:StartSteer(dir,time,isAnime,isbreak)
task:FinishEvent('+',self.DoFreeStateTrigger)
end
--Method End
return EntityActorProxy

View File

@@ -0,0 +1,12 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local AirflowFieldActor = class("AirflowFieldActor", gadgetActorProxy)
function AirflowFieldActor:OnPostDataPrepare()
end
function AirflowFieldActor:OnPostComponentPrepare()
end
return AirflowFieldActor

View File

@@ -0,0 +1,35 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local CoinTest = class("CoinTest", gadgetActorProxy)
CoinTest.defaultAlias = "CoinTest"
local inCnt = 0
local outCnt = 0
local q406Cfg = require('Actor/Quest/Q406/Q406Config')
function CoinTest:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function CoinTest:OnPostComponentPrepare()
self:AddComponentTrigger(3, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function CoinTest:TriggerIn()
q406Cfg.CoinNum = q406Cfg.CoinNum + 1
self:CountNumUIUpdate(q406Cfg.CoinNum)
local effctPos = self:GetPos()
self:PlayEffect("FlyRace_Marker_Active_AS", effctPos)
self:DestroySelf()
end
function CoinTest:TriggerOut()
outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return CoinTest

View File

@@ -0,0 +1,30 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local DragonTrigger = class("DragonTrigger", gadgetActorProxy)
DragonTrigger.defaultAlias = "DragonTrigger"
local q361Cfg = require('Quest/Client/Q361ClientConfig')
function DragonTrigger:OnPostDataPrepare()
end
function DragonTrigger:OnPostComponentPrepare()
self:AddComponentTrigger(57, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function DragonTrigger:TriggerIn()
end
function DragonTrigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out DragonTrigger")
local quest = actorMgr:GetActor(q361Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
end
return DragonTrigger

View File

@@ -0,0 +1,139 @@
----------------------
-- 这是Lua端GadgetActor的基类用于自定义实现本地行为的Gadget。继承自EntityActorProxy
-- @classmod GadgetActorProxy
require('Actor/ActorCommon')
local entityActorProxy = require('Actor/EntityActorProxy')
local GadgetActorProxy = class("GadgetActorProxy", entityActorProxy)
GadgetActorProxy.actorType = ActorType.GADGET_ACTOR
local super = nil
function GadgetActorProxy:OnPreInit()
super = self.__super
super:OnPreInit()
end
function GadgetActorProxy:PreGetAlias()
return nil
end
function GadgetActorProxy:CreateGadgetUActor(alias)
local uActor = actorUtils.CreateActor(self, ActorType.GADGET_ACTOR, alias, self.metaPath)
if self.bornPos == nil then
self.bornPos = M.Pos(0, 0, 0)
end
if self.bornDir == nil then
self.bornDir = M.Pos(0, 0, 0)
end
uActor = actorUtils.CreateGadgeActor(self.configID, self.bornPos, self.bornDir, uActor, self.actorData)
return uActor
end
function GadgetActorProxy:CreateUActor(alias)
return self:CreateGadgetUActor(alias)
end
function GadgetActorProxy:OnPostInit()
if self.uActor ~= nil then
self.uActor:TryStartActor()
end
self:OnPostDataPrepare()
self:OnPostComponentPrepare()
self:OnUActorPostInit()
end
function GadgetActorProxy:OnPostComponentPrepare()
end
function GadgetActorProxy:OnUActorPostInit()
if self.uActor ~= nil then
actorUtils.PostInitGadgetActor(self.uActor)
end
end
--- GadgetActor添加组件的方法
-- @section component
GadgetActorProxy.isTriggerIn = false
GadgetActorProxy.checkTimeGap = 0.1
GadgetActorProxy.timeCnt = 0
GadgetActorProxy.targetTime = 0
GadgetActorProxy.triggerInHandler = nil
GadgetActorProxy.triggerOutHandler = nil
GadgetActorProxy.triggerTickHandler = nil
function GadgetActorProxy:DefaultTriggerIn()
self.isTriggerIn = true
if self.triggerInHandler ~= nil then
self:triggerInHandler()
end
end
function GadgetActorProxy:DefaultTriggerOut()
self.isTriggerIn = false
if self.triggerOutHandler ~= nil then
self:triggerOutHandler()
end
end
GadgetActorProxy.triggerDelayOutHandler = nil
function GadgetActorProxy:DefaultTriggerDelayOut()
if self.triggerDelayOutHandler ~= nil then
self:triggerDelayOutHandler()
end
self:DestroySelf()
end
function GadgetActorProxy:CheckDelayTimeOut()
if self.isTriggerIn then
self.timeCnt = 0
else
self.timeCnt = self.timeCnt + self.checkTimeGap
if self.timeCnt >= self.targetTime then
self:DefaultTriggerDelayOut()
self.timeCnt = 0
end
end
end
--- 添加一个简单的Trigger组件
-- @tparam float dist 距离多少内算触发
-- @tparam DistType distType 距离类型,参考DistType
-- @tparam Vector3 offset 角色脚底偏移多少作为核心去计算
-- @tparam function triggerIn 进入时候触发的函数
-- @tparam function triggerOut 出来时候触发的函数
-- @tparam function triggerTick 帧Tick时候的触发的函数
function GadgetActorProxy:AddComponentTrigger(dist, distType, offset, triggerIn, triggerOut, triggerTick)
self.uActor:AddSimpleTrigger(dist, distType, offset, triggerIn, triggerOut, triggerTick)
end
--- 添加一个超区域会有计时逻辑的Trigger组件
-- @tparam float dist 距离多少内算触发
-- @tparam DistType distType 距离类型,参考DistType
-- @tparam Vector3 offset 角色脚底偏移多少作为核心去计算
-- @tparam float delayTime 延迟的秒数
-- @tparam function triggerIn 进入时候触发的函数
-- @tparam function triggerOut 出来时候触发的函数
function GadgetActorProxy:AddTimeDelayOutTrigger(dist, distType, delayTime, offset, triggerIn, triggerOut, triggerDelayOut)
self.timeCnt = 0
self.targetTime = delayTime
self.triggerInHandler = triggerIn
self.triggerOutHandler = triggerOut
self.triggerDelayOutHandler = triggerDelayOut
self.uActor:AddSimpleTrigger(dist, distType, offset, self.DefaultTriggerIn, self.DefaultTriggerOut, self.CheckDelayTimeOut)
end
--- 添加一个功能齐全的Trigger组件
-- @tparam ShapeData shapeData
-- @tparam function triggerIn 进入时候触发的函数
-- @tparam function triggerOut 出来时候触发的函数
-- @tparam function triggerTick 每次更新周期触发的函数
function GadgetActorProxy:AddCommonTrigger(shapeData, triggerIn, triggerOut, triggerTick)
self.uActor:AddCommonTrigger(shapeData, triggerIn, triggerOut, triggerTick)
end
--- 销毁Gadget
function GadgetActorProxy:DestroySelf()
self:ClearInfo()
self:Destroy(false)
actorMgr:ClearActor(self.alias)
end
return GadgetActorProxy

View File

@@ -0,0 +1,52 @@
----------------------
-- 这是Lua端GadgetFactory包含了创建特殊GadgetActor的方法
-- @module GadgetFactory
actorMgr = actorMgr or require('Actor/ActorManager')
local GadgetFactory = {}
GadgetFactory.PATH_QUEST_AREA = "Actor/Gadget/QuestArea"
GadgetFactory.PostProcessCreateActor = function(alias, actor)
local preAlias = actor:PreGetAlias()
actor:OnPreInit()
if alias == nil or alias == '' then
if preAlias ~= nil then
alias = preAlias
else
alias = actor.defaultAlias
end
end
actor.alias = alias
actorMgr.ActorDic[alias] = actor
actor:OnInit(alias)
actor:OnPostInit()
end
--- 创建任务区域
GadgetFactory.CreateQuestArea = function(alias, configID, bornPos, areaRadius, delayTime, OnAreaIn, OnAreaOut, OnAreaDelayOut)
local actor = actorMgr:GetActor(alias)
if actor == nil then
local metaActor = require(GadgetFactory.PATH_QUEST_AREA)
actor = metaActor:new()
actor.configID = configID
actor.bornPos = bornPos
actor.areaRadius = areaRadius
actor.targetTime = delayTime
actor.questAreaInHandler = OnAreaIn
actor.questAreaOutHandler = OnAreaOut
actor.questAreaDelayOutHandler = OnAreaDelayOut
actor.isAutoStart = true
GadgetFactory.PostProcessCreateActor(alias, actor)
else
if actor.SetPos ~= nil then
actor:SetPos(bornPos)
end
end
return actor
end
return GadgetFactory

View File

@@ -0,0 +1,44 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local GoalMarker404 = class("GoalMarker404", gadgetActorProxy)
GoalMarker404.defaultAlias = "GoalMarker404"
local inCnt = 0
local outCnt = 0
local q404Cfg = require('Actor/Quest/Q404/Q404Config')
function GoalMarker404:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function GoalMarker404:OnPostComponentPrepare()
self:AddComponentTrigger(4, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function GoalMarker404:TriggerIn()
print("Enter Goal")
local goalMarkerAS = actorMgr:CreateActorWithPos("GoalMarkerAs404", "Actor/Gadget/GoalMarkerAS", 70300005, 0, q404Cfg.KeyPos, q404Cfg.KeyDir, false, false)
goalMarkerAS:CallDelay(5, goalMarkerAS.DestroySelf)
local goalMarkerAS2 = actorMgr:CreateActorWithPos("GoalMarkerAs4042", "Actor/Gadget/GoalMarkerAS", 70300005, 0, q404Cfg.KeyPos2, q404Cfg.KeyDir2, false, false)
goalMarkerAS2:CallDelay(5, goalMarkerAS2.DestroySelf)
local effctPos = self:GetPos()
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
q404Cfg.gotKey = true
local quest = actorMgr:GetActor(q404Cfg.ActorAlias)
if quest ~= nil then
print("Finished Fly")
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function GoalMarker404:TriggerOut()
outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return GoalMarker404

View File

@@ -0,0 +1,42 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local GoalMarker405 = class("GoalMarker405", gadgetActorProxy)
GoalMarker405.defaultAlias = "GoalMarker405"
local inCnt = 0
local outCnt = 0
local q405Cfg = require('Actor/Quest/Q405/Q405Config')
function GoalMarker405:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function GoalMarker405:OnPostComponentPrepare()
self:AddComponentTrigger(4, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function GoalMarker405:TriggerIn()
print("Enter Goal")
local goalMarkerAS = actorMgr:CreateActorWithPos("GoalMarkerAs405", "Actor/Gadget/GoalMarkerAS", 70300005, 0, q405Cfg.KeyPos, q405Cfg.KeyDir, true, false)
goalMarkerAS:CallDelay(5, goalMarkerAS.DestroySelf)
local effctPos = self:GetPos()
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
q405Cfg.gotKey = true
local quest = actorMgr:GetActor(q405Cfg.ActorAlias)
if quest ~= nil then
print("Finished Fly")
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function GoalMarker405:TriggerOut()
outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return GoalMarker405

View File

@@ -0,0 +1,40 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local GoalMarker408 = class("GoalMarker408", gadgetActorProxy)
GoalMarker408.defaultAlias = "GoalMarker408"
local inCnt = 0
local outCnt = 0
local q408Cfg = require('Actor/Quest/Q408/Q408Config')
function GoalMarker408:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function GoalMarker408:OnPostComponentPrepare()
self:AddComponentTrigger(4, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function GoalMarker408:TriggerIn()
print("Enter Goal")
local goalMarkerAS = actorMgr:CreateActorWithPos("GoalMarkerAs408", "Actor/Gadget/GoalMarkerAS", 70300005, 0, q408Cfg.KeyPos, q408Cfg.KeyDir, true, false)
goalMarkerAS:CallDelay(5, goalMarkerAS.DestroySelf)
local effctPos = self:GetPos()
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
q408Cfg.gotKey = true
local quest = actorMgr:GetActor(q408Cfg.ActorAlias)
if quest ~= nil then
print("Finished RiverRun")
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function GoalMarker408:TriggerOut()
outCnt = outCnt + 1
end
return GoalMarker408

View File

@@ -0,0 +1,53 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local GoalMarker409 = class("GoalMarker409", gadgetActorProxy)
GoalMarker409.defaultAlias = "GoalMarker409"
GoalMarker409.shapeData =
{
shapeName = "CircleR2",
shapePosOffset = {x = 0, y = 0, z = 0},
shapeEulerOffset = {x = 0, y = 0, z = 0},
shapeHeight = 0.0,
campID = campHelper.CAMP_PLAYER,
targetType = TargetType.AllExceptSelf,
liftType = TimerLimitType.Infinite,
liftTime = 0.0,
triggerType = TimerLimitType.Infinite,
checkCD = 0.15,
}
local inCnt = 0
local outCnt = 0
local q409Cfg = require('Actor/Quest/Q409/Q409Config')
function GoalMarker409:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function GoalMarker409:OnPostComponentPrepare()
self:AddCommonTrigger(self.shapeData, self.TriggerIn, self.TriggerOut, self.TriggerTick)
end
function GoalMarker409:TriggerIn(configID, alias)
print("**************GoalMarker409:TriggerIn")
if configID == q409Cfg.BallMonsterID then
q409Cfg.Score = q409Cfg.Score + 1
self:CountNumUIUpdate(q409Cfg.Score)
local effctPos = self:GetPos()
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
end
end
function GoalMarker409:TriggerOut(configID, alias)
print("TriggerOut")
end
function GoalMarker409:TriggerTick(configID, alias)
print("TriggerTick")
end
return GoalMarker409

View File

@@ -0,0 +1,34 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local GoalMarkerAS = class("GoalMarkerAS", gadgetActorProxy)
GoalMarkerAS.defaultAlias = "GoalMarkerAS"
local inCnt = 0
local outCnt = 0
function GoalMarkerAS:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function GoalMarkerAS:OnPostComponentPrepare()
self:AddComponentTrigger(2, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function GoalMarkerAS:TriggerIn()
--inCnt = inCnt + 1
-- q406Cfg.CoinNum = q406Cfg.CoinNum + 1
-- self:CountNumUIUpdate(q406Cfg.CoinNum)
-- self:DestroySelf()
--print("Enter " .. tostring(inCnt))
end
function GoalMarkerAS:TriggerOut()
outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return GoalMarkerAS

View File

@@ -0,0 +1,30 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q351Trigger1 = class("Q351Trigger1", gadgetActorProxy)
Q351Trigger1.defaultAlias = "Q351Trigger1"
local q351Cfg = require('Quest/Client/Q351ClientConfig')
function Q351Trigger1:OnPostDataPrepare()
end
function Q351Trigger1:OnPostComponentPrepare()
self:AddComponentTrigger(2, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q351Trigger1:TriggerIn()
end
function Q351Trigger1:TriggerOut()
print("Exit " .. tostring(outCnt))
print("Out Q351Trigger1")
local quest = actorMgr:GetActor(q351Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 35100)
end
self:DestroySelf()
end
return Q351Trigger1

View File

@@ -0,0 +1,33 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q353Trigger1 = class("Q353Trigger1", gadgetActorProxy)
Q353Trigger1.defaultAlias = "Q353Trigger1"
local q353Cfg = require('Quest/Client/Q353ClientConfig')
function Q353Trigger1:OnPostDataPrepare()
end
function Q353Trigger1:OnPostComponentPrepare()
self:AddComponentTrigger(30, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q353Trigger1:TriggerIn()
end
function Q353Trigger1:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out Q353Trigger1")
-- actorUtils.ShowMessage("已离开任务区域,任务失败")
self:TransmitPlayer(3, sceneData:GetDummyPoint(3, "Q353SetAvatar").pos, sceneData:GetDummyPoint(3, "Q353SetAvatar").rot)
-- local quest = actorMgr:GetActor(q353Cfg.ActorAlias)
-- if quest ~= nil then
-- quest:FinishQuestID(true, 35312)
-- end
--self:DestroySelf()
end
return Q353Trigger1

View File

@@ -0,0 +1,28 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q353Trigger2 = class("Q353Trigger2", gadgetActorProxy)
Q353Trigger2.defaultAlias = "Q353Trigger2"
local q353Cfg = require('Quest/Client/Q353ClientConfig')
function Q353Trigger2:OnPostDataPrepare()
end
function Q353Trigger2:OnPostComponentPrepare()
self:AddComponentTrigger(25, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q353Trigger2:TriggerIn()
end
function Q353Trigger2:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out Q353Trigger2")
--actorUtils.ShowMessage("正在离开任务区域,请尽快返回")
--self:DestroySelf()
end
return Q353Trigger2

View File

@@ -0,0 +1,30 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q354Trigger1 = class("Q354Trigger1", gadgetActorProxy)
Q354Trigger1.defaultAlias = "Q354Trigger1"
local q354Cfg = require('Quest/Client/Q354ClientConfig')
function Q354Trigger1:OnPostDataPrepare()
end
function Q354Trigger1:OnPostComponentPrepare()
self:AddComponentTrigger(2, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q354Trigger1:TriggerIn()
end
function Q354Trigger1:TriggerOut()
print("Exit " .. tostring(outCnt))
print("Out Q354Trigger1")
local quest = actorMgr:GetActor(q354Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 35405)
end
self:DestroySelf()
end
return Q354Trigger1

View File

@@ -0,0 +1,30 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q371Trigger = class("Q371Trigger", gadgetActorProxy)
Q371Trigger.defaultAlias = "Q371Trigger"
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function Q371Trigger:OnPostDataPrepare()
end
function Q371Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(8, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q371Trigger:TriggerIn()
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q371Trigger:TriggerOut()
end
return Q371Trigger

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q377Trigger = class("Q377Trigger", gadgetActorProxy)
Q377Trigger.defaultAlias = "Q377Trigger"
local q377Cfg = require('Quest/Client/Q377ClientConfig')
-- local questActorProxy = require('Actor/Quest/QuestActorProxy')
-- local Questnew = class("Questnew", questActorProxy)
-- Questnew.defaultAlias = "Questnew"
-- local Quest377 = require('Quest/MQ377')
function Q377Trigger:OnPostDataPrepare()
end
function Q377Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(5, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q377Trigger:TriggerIn()
print("Out Q377Trigger")
local quest = actorMgr:GetActor(q377Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q377Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q377Trigger

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q378Trigger = class("Q378Trigger", gadgetActorProxy)
Q378Trigger.defaultAlias = "Q378Trigger"
local q378Cfg = require('Quest/Client/Q378ClientConfig')
-- local questActorProxy = require('Actor/Quest/QuestActorProxy')
-- local Questnew = class("Questnew", questActorProxy)
-- Questnew.defaultAlias = "Questnew"
-- local Quest378 = require('Quest/MQ378')
function Q378Trigger:OnPostDataPrepare()
end
function Q378Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(8, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q378Trigger:TriggerIn()
print("Out Q378Trigger")
local quest = actorMgr:GetActor(q378Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q378Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q378Trigger

View File

@@ -0,0 +1,31 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q380Trigger = class("Q380Trigger", gadgetActorProxy)
Q380Trigger.defaultAlias = "Q380Trigger"
local q380Cfg = require('Quest/Client/Q380ClientConfig')
function Q380Trigger:OnPostDataPrepare()
end
function Q380Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(70, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q380Trigger:TriggerIn()
print("Out Q380Trigger")
local quest = actorMgr:GetActor(q380Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q380Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q380Trigger

View File

@@ -0,0 +1,31 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q381Trigger = class("Q381Trigger", gadgetActorProxy)
Q381Trigger.defaultAlias = "Q381Trigger"
local q381Cfg = require('Quest/Client/Q381ClientConfig')
function Q381Trigger:OnPostDataPrepare()
end
function Q381Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(5, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q381Trigger:TriggerIn()
print("Out Q381Trigger")
local quest = actorMgr:GetActor(q381Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q381Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q381Trigger

View File

@@ -0,0 +1,31 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q382Trigger = class("Q382Trigger", gadgetActorProxy)
Q382Trigger.defaultAlias = "Q382Trigger"
local q382Cfg = require('Quest/Client/Q382ClientConfig')
function Q382Trigger:OnPostDataPrepare()
end
function Q382Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(5, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q382Trigger:TriggerIn()
print("Out Q382Trigger")
local quest = actorMgr:GetActor(q382Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q382Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q382Trigger

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q384Trigger = class("Q384Trigger", gadgetActorProxy)
Q384Trigger.defaultAlias = "Q384Trigger"
local q384Cfg = require('Quest/Client/Q384ClientConfig')
-- local questActorProxy = require('Actor/Quest/QuestActorProxy')
-- local Questnew = class("Questnew", questActorProxy)
-- Questnew.defaultAlias = "Questnew"
-- local Quest384 = require('Quest/MQ384')
function Q384Trigger:OnPostDataPrepare()
end
function Q384Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(30, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q384Trigger:TriggerIn()
print("Out Q384Trigger")
local quest = actorMgr:GetActor(q384Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q384Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q384Trigger

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q384TriggerSP = class("Q384TriggerSP", gadgetActorProxy)
Q384TriggerSP.defaultAlias = "Q384TriggerSP"
local q384Cfg = require('Quest/Client/Q384ClientConfig')
-- local questActorProxy = require('Actor/Quest/QuestActorProxy')
-- local Questnew = class("Questnew", questActorProxy)
-- Questnew.defaultAlias = "Questnew"
-- local Quest384 = require('Quest/MQ384')
function Q384TriggerSP:OnPostDataPrepare()
end
function Q384TriggerSP:OnPostComponentPrepare()
self:AddComponentTrigger(6, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q384TriggerSP:TriggerIn()
print("Out Q384TriggerSP")
local quest = actorMgr:GetActor(q384Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q384TriggerSP:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q384TriggerSP

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q395Trigger = class("Q395Trigger", gadgetActorProxy)
Q395Trigger.defaultAlias = "Q395Trigger"
local q395Cfg = require('Quest/Client/Q395ClientConfig')
-- local questActorProxy = require('Actor/Quest/QuestActorProxy')
-- local Questnew = class("Questnew", questActorProxy)
-- Questnew.defaultAlias = "Questnew"
-- local Quest395 = require('Quest/MQ395')
function Q395Trigger:OnPostDataPrepare()
end
function Q395Trigger:OnPostComponentPrepare()
self:AddComponentTrigger(8, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q395Trigger:TriggerIn()
print("Out Q395Trigger")
local quest = actorMgr:GetActor(q395Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function Q395Trigger:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return Q395Trigger

View File

@@ -0,0 +1,75 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q427FlyCoins = class("Q427FlyCoins", gadgetActorProxy)
Q427FlyCoins.defaultAlias = "Q427FlyCoins"
-- local q427Cfg = require('Quest/Client/Q427ClientConfig')
-- local function EndGame()
-- end
local function CreateNext()
if q427Cfg.NowBatchNum <= q427Cfg.BatchNum then
for i=1, #q427Cfg.FlyCoins[q427Cfg.NowBatchNum] do
actorMgr:CreateActorWithPos("Q427FlyCoins" .. tostring(i), "Actor/Gadget/Q427FlyCoins", 70300064, 0, q427Cfg.FlyCoins[q427Cfg.NowBatchNum][i].pos, q427Cfg.FlyCoins[q427Cfg.NowBatchNum][i].rot, true, false)
end
-- else
-- for i=1, #q427Cfg.Flyline2-1 do
-- local AccDir = { x = q427Cfg.Flyline2[i+1].x-q427Cfg.Flyline2[i].x, y = q427Cfg.Flyline2[i+1].y-q427Cfg.Flyline2[i].y, z = q427Cfg.Flyline2[i+1].z-q427Cfg.Flyline2[i].z }
-- actorMgr:SpawnGadget(70690001, q427Cfg.Flyline2[i], M.Dir2Euler(AccDir), "Acc6" .. tostring(i))
-- end
end
end
function Q427FlyCoins:OnPostDataPrepare()
end
function Q427FlyCoins:OnPostComponentPrepare()
self:AddComponentTrigger(3, DistType.EULER, M.Pos(0, 0, 0), self.TriggerIn, self.TriggerOut)
end
function Q427FlyCoins:TriggerIn()
print("TotalGetNum is", q427Cfg.TotalGetNum)
print("CoinNum is", q427Cfg.CoinNum)
print("NowBatchNum is", q427Cfg.NowBatchNum)
q427Cfg.TotalGetNum = q427Cfg.TotalGetNum +1
if q427Cfg.TotalGetNum == 1 then
self:CountNumUIStart()
end
self:CountNumUIUpdate(q427Cfg.TotalGetNum)
local effctPos = self:GetPos()
if q427Cfg.TotalGetNum < q427Cfg.CoinNum then
self:PlayEffect("FlyRace_Marker_Active_AS", effctPos)
else
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
self:CountNumUITerminate()
local quest = actorMgr:GetActor(q427Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 42702)
end
self:DestroySelf()
end
self:DestroySelf()
q427Cfg.EachGetNum = q427Cfg.EachGetNum +1
if q427Cfg.EachGetNum == #q427Cfg.FlyCoins[q427Cfg.NowBatchNum] then
q427Cfg.EachGetNum = 0
q427Cfg.NowBatchNum = q427Cfg.NowBatchNum +1
CreateNext()
else
-- dosth
end
end
function Q427FlyCoins:TriggerOut()
end
return Q427FlyCoins

View File

@@ -0,0 +1,75 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q427FlyCoins2 = class("Q427FlyCoins2", gadgetActorProxy)
Q427FlyCoins2.defaultAlias = "Q427FlyCoins2"
-- local q427Cfg = require('Quest/Client/Q427ClientConfig')
-- local function EndGame()
-- end
local function CreateNext()
if q427Cfg.NowBatchNum2 <= q427Cfg.BatchNum2 then
for i=1, #q427Cfg.FlyCoins2[q427Cfg.NowBatchNum2] do
actorMgr:CreateActorWithPos("Q427FlyCoins2" .. tostring(i), "Actor/Gadget/Q427FlyCoins2", 70300064, 0, q427Cfg.FlyCoins2[q427Cfg.NowBatchNum2][i].pos, q427Cfg.FlyCoins2[q427Cfg.NowBatchNum2][i].rot, true, false)
end
-- else
-- for i=1, #q427Cfg.Flyline2-1 do
-- local AccDir = { x = q427Cfg.Flyline2[i+1].x-q427Cfg.Flyline2[i].x, y = q427Cfg.Flyline2[i+1].y-q427Cfg.Flyline2[i].y, z = q427Cfg.Flyline2[i+1].z-q427Cfg.Flyline2[i].z }
-- actorMgr:SpawnGadget(70690001, q427Cfg.Flyline2[i], M.Dir2Euler(AccDir), "Acc6" .. tostring(i))
-- end
end
end
function Q427FlyCoins2:OnPostDataPrepare()
end
function Q427FlyCoins2:OnPostComponentPrepare()
self:AddComponentTrigger(3, DistType.EULER, M.Pos(0, 0, 0), self.TriggerIn, self.TriggerOut)
end
function Q427FlyCoins2:TriggerIn()
print("TotalGetNum2 is", q427Cfg.TotalGetNum2)
print("CoinNum2 is", q427Cfg.CoinNum2)
print("NowBatchNum2 is", q427Cfg.NowBatchNum2)
q427Cfg.TotalGetNum2 = q427Cfg.TotalGetNum2 +1
if q427Cfg.TotalGetNum2 == 1 then
self:CountNumUIStart()
end
self:CountNumUIUpdate(q427Cfg.TotalGetNum2)
local effctPos = self:GetPos()
if q427Cfg.TotalGetNum2 < q427Cfg.CoinNum2 then
self:PlayEffect("FlyRace_Marker_Active_AS", effctPos)
else
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
self:CountNumUITerminate()
local quest = actorMgr:GetActor(q427Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 42705)
end
self:DestroySelf()
end
self:DestroySelf()
q427Cfg.EachGetNum2 = q427Cfg.EachGetNum2 +1
if q427Cfg.EachGetNum2 == #q427Cfg.FlyCoins2[q427Cfg.NowBatchNum2] then
q427Cfg.EachGetNum2 = 0
q427Cfg.NowBatchNum2 = q427Cfg.NowBatchNum2 +1
CreateNext()
else
-- dosth
end
end
function Q427FlyCoins2:TriggerOut()
end
return Q427FlyCoins2

View File

@@ -0,0 +1,30 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q466Trigger1 = class("Q466Trigger1", gadgetActorProxy)
Q466Trigger1.defaultAlias = "Q466Trigger1"
local q466Cfg = require('Quest/Client/Q466ClientConfig')
function Q466Trigger1:OnPostDataPrepare()
end
function Q466Trigger1:OnPostComponentPrepare()
self:AddComponentTrigger(60, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q466Trigger1:TriggerIn()
end
function Q466Trigger1:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out Q466Trigger1")
local quest = actorMgr:GetActor(q466Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(true, nil)
end
end
return Q466Trigger1

View File

@@ -0,0 +1,30 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q466Trigger2 = class("Q466Trigger2", gadgetActorProxy)
Q466Trigger2.defaultAlias = "Q466Trigger2"
local q466Cfg = require('Quest/Client/Q466ClientConfig')
function Q466Trigger2:OnPostDataPrepare()
end
function Q466Trigger2:OnPostComponentPrepare()
self:AddComponentTrigger(65, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q466Trigger2:TriggerIn()
end
function Q466Trigger2:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out Q466Trigger2")
local quest = actorMgr:GetActor(q466Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(true, nil)
end
end
return Q466Trigger2

View File

@@ -0,0 +1,31 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q466trigger3 = class("Q466trigger3", gadgetActorProxy)
Q466trigger3.defaultAlias = "Q466trigger3"
local q466Cfg = require('Quest/Client/Q466ClientConfig')
function Q466trigger3:OnPostDataPrepare()
end
function Q466trigger3:OnPostComponentPrepare()
self:AddComponentTrigger(50, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q466trigger3:TriggerIn()
end
function Q466trigger3:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out Q466trigger3")
self:NarratorOnlyTask(q466Cfg.NarratorData.Story6)
--[[ local quest = actorMgr:GetActor(q466Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(true, nil)
end ]]
end
return Q466trigger3

View File

@@ -0,0 +1,31 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local Q466trigger4 = class("Q466trigger4", gadgetActorProxy)
Q466trigger4.defaultAlias = "Q466trigger4"
local q466Cfg = require('Quest/Client/Q466ClientConfig')
function Q466trigger4:OnPostDataPrepare()
end
function Q466trigger4:OnPostComponentPrepare()
self:AddComponentTrigger(60, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function Q466trigger4:TriggerIn()
end
function Q466trigger4:TriggerOut()
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
print("Out Q466trigger4")
self:NarratorOnlyTask(q466Cfg.NarratorData.Story6)
--[[ local quest = actorMgr:GetActor(q466Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(true, nil)
end ]]
end
return Q466trigger4

View File

@@ -0,0 +1,40 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local QuestArea = class("QuestArea", gadgetActorProxy)
QuestArea.defaultAlias = "QuestArea"
QuestArea.areaRadius = 100
QuestArea.areaDistType = DistType.EULER_XZ
QuestArea.avatarOffset = M.Pos(0, 0, 0)
QuestArea.questAreaInHandler = nil
QuestArea.questAreaOutHandler = nil
QuestArea.questAreaDelayOutHandler = nil
function QuestArea:OnPostComponentPrepare()
self:AddTimeDelayOutTrigger(self.areaRadius, self.areaDistType, self.targetTime, self.avatarOffset,
self.questTriggerInHandler, self.questTriggerOutHandler, self.questTriggerDelayOutHandler)
end
function QuestArea:questTriggerInHandler()
print("show quest area in ui")
if self.questAreaInHandler ~= nil then
self:questAreaInHandler()
end
end
function QuestArea:questTriggerOutHandler()
print("show quest area out ui")
if self.questAreaOutHandler ~= nil then
self:questAreaOutHandler()
end
end
function QuestArea:questTriggerDelayOutHandler()
print("show delay quest area out ui")
if self.questAreaDelayOutHandler ~= nil then
self:questAreaDelayOutHandler()
end
end
return QuestArea

View File

@@ -0,0 +1,85 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local RunCoinStart = class("RunCoinStart", gadgetActorProxy)
RunCoinStart.defaultAlias = "RunCoinStart"
local q416Cfg = require('Quest/Client/Q416ClientConfig')
local function EndGame()
globalActor:CountNumUITerminate()
local currentCoin = actorMgr:GetActor("RunCoinStart")
if currentCoin ~= nil then
currentCoin:DestroySelf()
end
local quest = actorMgr:GetActor(q416Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
q416Cfg.NextNum = 1
end
local function CreateNext()
if q416Cfg.NextNum < q416Cfg.CoinNum +1 then
actorMgr:CreateActorWithPos("RunCoinStart", "Actor/Gadget/RunCoinStart", 70300004, 0, q416Cfg.CoinPos[q416Cfg.NextNum].pos, q416Cfg.CoinPos[q416Cfg.NextNum].rot, true, false)
local currentCoin = actorMgr:GetActor("RunCoinStart")
if currentCoin ~= nil then
currentCoin:CallDelay(3, EndGame)
end
else
-- local quest = actorMgr:GetActor(q416Cfg.ActorAlias)
-- if quest ~= nil then
-- quest:FinishQuest(false, nil)
-- end
for i=1, q416Cfg.CoinNum do
globalActor:SpawnItem(104011, q416Cfg.CoinPos[i].pos, nil, "BigApple" .. tostring(i))
end
end
end
function RunCoinStart:OnPostDataPrepare()
end
function RunCoinStart:OnPostComponentPrepare()
self:AddComponentTrigger(1, DistType.EULER, M.Pos(0, 0, 0), self.TriggerIn, self.TriggerOut)
end
function RunCoinStart:TriggerIn()
-- local quest = actorMgr:GetActor(q416Cfg.ActorAlias)
-- if quest ~= nil then
-- quest:FinishQuest(false, nil)
-- end
if q416Cfg.NextNum == 1 then
local quest = actorMgr:GetActor(q416Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:CountNumUIStart()
else
self:UnCallFunc(EndGame)
end
local effctPos = self:GetPos()
if q416Cfg.NextNum < q416Cfg.CoinNum then
self:PlayEffect("FlyRace_Marker_Active_AS", effctPos)
else
self:PlayEffect("FlyRace_Goal_Marker_AS", effctPos)
self:CountNumUITerminate()
end
self:CountNumUIUpdate(q416Cfg.NextNum)
q416Cfg.NextNum = q416Cfg.NextNum + 1
self:DestroySelf()
CreateNext()
end
function RunCoinStart:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return RunCoinStart

View File

@@ -0,0 +1,40 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local SneakTreasure = class("SneakTreasure", gadgetActorProxy)
SneakTreasure.defaultAlias = "SneakTreasure"
local inCnt = 0
local outCnt = 0
local q424Cfg = require('Quest/Client/Q424ClientConfig')
function SneakTreasure:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function SneakTreasure:OnPostComponentPrepare()
self:AddComponentTrigger(1.5, DistType.EULER, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function SneakTreasure:TriggerIn()
-- q424Cfg.Score = q424Cfg.Score + 10
-- self:CountNumUIUpdate(q424Cfg.Score)
local quest = actorMgr:GetActor(q424Cfg.ActorAlias)
if quest ~= nil then
print("Got A Treasure")
quest:GetTreasure()
end
local effctPos = self:GetPos()
self:PlayEffect("FlyRace_Marker_Active_AS", effctPos)
self:DestroySelf()
end
function SneakTreasure:TriggerOut()
outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return SneakTreasure

View File

@@ -0,0 +1,42 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local TriggerTest = class("TriggerTest", gadgetActorProxy)
TriggerTest.defaultAlias = "TriggerTest"
TriggerTest.shapeData =
{
shapeName = "CircleR5",
shapePosOffset = {x = 0, y = 0, z = 0},
shapeEulerOffset = {x = 0, y = 0, z = 0},
shapeHeight = 0.0,
campID = campHelper.CAMP_PLAYER,
targetType = TargetType.AllExceptSelf,
liftType = TimerLimitType.Infinite,
liftTime = 0.0,
triggerType = TimerLimitType.Infinite,
checkCD = 0.15,
}
function TriggerTest:OnPostDataPrepare()
end
function TriggerTest:OnPostComponentPrepare()
self:AddCommonTrigger(self.shapeData, self.TriggerIn, self.TriggerOut, self.TriggerTick)
end
function TriggerTest:TriggerIn(configID, alias)
print("TriggerIn")
end
function TriggerTest:TriggerOut(configID, alias)
print("TriggerOut")
end
function TriggerTest:TriggerTick(configID, alias)
print("TriggerTick")
end
return TriggerTest

View File

@@ -0,0 +1,42 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WalkArea = class("WalkArea", gadgetActorProxy)
WalkArea.defaultAlias = "WalkArea"
WalkArea.shapeData =
{
shapeName = "CircleR5",
shapePosOffset = {x = 0, y = 0, z = 0},
shapeEulerOffset = {x = 0, y = 0, z = 0},
shapeHeight = 0.0,
campID = campHelper.CAMP_PLAYER,
targetType = TargetType.AllExceptSelf,
liftType = TimerLimitType.Infinite,
liftTime = 0.0,
triggerType = TimerLimitType.Infinite,
checkCD = 0.15,
}
function WalkArea:OnPostDataPrepare()
end
function WalkArea:OnPostComponentPrepare()
self:AddCommonTrigger(self.shapeData, self.TriggerIn, self.TriggerOut, self.TriggerTick)
end
function WalkArea:TriggerIn(configID, alias)
self:TryShowMoveToggle(true)
end
function WalkArea:TriggerOut(configID, alias)
self:TryShowMoveToggle(false)
end
function WalkArea:TriggerTick(configID, alias)
end
return WalkArea

View File

@@ -0,0 +1,35 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WendyTrackTrigger = class("WendyTrackTrigger", gadgetActorProxy)
WendyTrackTrigger.defaultAlias = "WendyTrackTrigger"
local inCnt = 0
local outCnt = 0
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function WendyTrackTrigger:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function WendyTrackTrigger:OnPostComponentPrepare()
self:AddComponentTrigger(12, DistType.EULER_XZ, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function WendyTrackTrigger:TriggerIn()
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
self:DestroySelf()
end
function WendyTrackTrigger:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return WendyTrackTrigger

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WendyTrackTriggersp = class("WendyTrackTriggersp", gadgetActorProxy)
WendyTrackTriggersp.defaultAlias = "WendyTrackTriggersp"
local inCnt = 0
local outCnt = 0
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function WendyTrackTriggersp:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function WendyTrackTriggersp:OnPostComponentPrepare()
self:AddComponentTrigger(12, DistType.EULER_XZ, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function WendyTrackTriggersp:TriggerIn()
print("Exit 37109")
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 37109)
end
self:DestroySelf()
end
function WendyTrackTriggersp:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return WendyTrackTriggersp

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WendyTrackTriggersp1 = class("WendyTrackTriggersp1", gadgetActorProxy)
WendyTrackTriggersp1.defaultAlias = "WendyTrackTriggersp1"
local inCnt = 0
local outCnt = 0
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function WendyTrackTriggersp1:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function WendyTrackTriggersp1:OnPostComponentPrepare()
self:AddComponentTrigger(12, DistType.EULER_XZ, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function WendyTrackTriggersp1:TriggerIn()
print("Exit 37110")
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 37110)
end
self:DestroySelf()
end
function WendyTrackTriggersp1:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return WendyTrackTriggersp1

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WendyTrackTriggersp2 = class("WendyTrackTriggersp2", gadgetActorProxy)
WendyTrackTriggersp2.defaultAlias = "WendyTrackTriggersp2"
local inCnt = 0
local outCnt = 0
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function WendyTrackTriggersp2:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function WendyTrackTriggersp2:OnPostComponentPrepare()
self:AddComponentTrigger(12, DistType.EULER_XZ, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function WendyTrackTriggersp2:TriggerIn()
print("Exit 37111")
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 37111)
end
self:DestroySelf()
end
function WendyTrackTriggersp2:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return WendyTrackTriggersp2

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WendyTrackTriggersp3 = class("WendyTrackTriggersp3", gadgetActorProxy)
WendyTrackTriggersp3.defaultAlias = "WendyTrackTriggersp3"
local inCnt = 0
local outCnt = 0
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function WendyTrackTriggersp3:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function WendyTrackTriggersp3:OnPostComponentPrepare()
self:AddComponentTrigger(12, DistType.EULER_XZ, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function WendyTrackTriggersp3:TriggerIn()
print("Exit 37112")
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 37112)
end
self:DestroySelf()
end
function WendyTrackTriggersp3:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return WendyTrackTriggersp3

View File

@@ -0,0 +1,36 @@
require('Actor/ActorCommon')
local gadgetActorProxy = require('Actor/Gadget/GadgetActorProxy')
local WendyTrackTriggersp4 = class("WendyTrackTriggersp4", gadgetActorProxy)
WendyTrackTriggersp4.defaultAlias = "WendyTrackTriggersp4"
local inCnt = 0
local outCnt = 0
local q371Cfg = require('Quest/Client/Q371ClientConfig')
function WendyTrackTriggersp4:OnPostDataPrepare()
inCnt = 0
outCnt = 0
end
function WendyTrackTriggersp4:OnPostComponentPrepare()
self:AddComponentTrigger(12, DistType.EULER_XZ, M.Pos(0, 0.8, 0), self.TriggerIn, self.TriggerOut)
end
function WendyTrackTriggersp4:TriggerIn()
print("Exit 37113")
local quest = actorMgr:GetActor(q371Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 37113)
end
self:DestroySelf()
end
function WendyTrackTriggersp4:TriggerOut()
-- outCnt = outCnt + 1
--print("Exit " .. tostring(outCnt))
--self:DestroySelf()
end
return WendyTrackTriggersp4

View File

@@ -0,0 +1,22 @@
---GlobalActor全局配置
-- @module GlobalActorConfig
local GlobalActorConfig = {}
GlobalActorConfig.initSubActors =
{
{
alias = "WindTestGlobal11",
metaPath = "Actor/SubGlobal/WindTestGlobalActor",
},
{
alias = "LimitRegionGlobal",
metaPath = "Actor/SubGlobal/LimitRegionGlobalActor",
}
}
GlobalActorConfig.initAddSubActors =
{
}
return GlobalActorConfig

View File

@@ -0,0 +1,265 @@
----------------------
-- 这是Lua端GlobalActor作为全局的代理负责一些全局的调用。继承自BaseActorProxy
-- @classmod GlobalActorProxy
require('Actor/ActorCommon')
local baseActorProxy = require('Actor/BaseActorProxy')
local GlobalActorProxy = class("GlobalActorProxy", baseActorProxy)
GlobalActorProxy.actorType = ActorType.GLOBAL_ACTOR
local this = nil
local super = nil
local uActor = nil
function GlobalActorProxy:OnPreInit()
this = self
super = self.__super
end
function GlobalActorProxy:OnPostInit()
uActor = self.uActor
end
function GlobalActorProxy:OnInit(alias)
super:OnInit(alias)
uActor = self:CreateUActor(alias)
self.uActor = uActor
self:Register()
end
--- 是否是白天
GlobalActorProxy.isDay = false
--- 是否是黑夜
GlobalActorProxy.isNight = false
--- 当前的天气类型 WeatherType
GlobalActorProxy.currWeather = 0
local function EnterDay()
print("enter day")
this.isDay = true
this.isNight = false
end
local function EnterNight()
print("enter night")
this.isDay = false
this.isNight = true
end
local function WeatherChange(weatherType)
print("enter weather " .. weatherType)
this.currWeather = weatherType
end
function GlobalActorProxy:CreateUActor(alias)
local uActor = actorUtils.CreateActor(self, ActorType.GLOBAL_ACTOR, alias, self.metaPath)
uActor = actorUtils.CreateGlobalActor(uActor)
return uActor
end
function GlobalActorProxy:Register()
this:RegisterDayCallback(EnterDay)
this:RegisterNightCallback(EnterNight)
this:RegisterWeatherCallback(WeatherChange)
end
function GlobalActorProxy:Destroy(isActorOnly)
this:UnregisterDayCallback(EnterDay)
this:UnregisterNightCallback(EnterNight)
this:UnregisterWeatherCallback(WeatherChange)
uActor:Destroy(isActorOnly)
end
--- GlobalActor昼夜相关方法
-- @section daynight
--- GlobalActor注册到白天了的回调
-- @tparam function dayCallback 到白天了的调用方法
function GlobalActorProxy:RegisterDayCallback(dayCallback)
uActor:RegisterDayCallback(dayCallback)
end
--- GlobalActor取消注册到白天了的回调
-- @tparam function dayCallback 到白天了的调用方法
function GlobalActorProxy:UnregisterDayCallback(dayCallback)
uActor:UnregisterDayCallback(dayCallback)
end
--- GlobalActor注册到晚上了的回调
-- @tparam function nightCallback 到晚上了的调用方法
function GlobalActorProxy:RegisterNightCallback(nightCallback)
uActor:RegisterNightCallback(nightCallback)
end
--- GlobalActor取消注册到晚上了的回调
-- @tparam function nightCallback 到晚上了的调用方法
function GlobalActorProxy:UnregisterNightCallback(nightCallback)
uActor:UnregisterNightCallback(nightCallback)
end
--- GlobalActor注册小时的回调
-- @tparam function hourCallback 小时回调
function GlobalActorProxy:RegisterHourCallback(hourCallback)
uActor:RegisterHourCallback(hourCallback)
end
--- GlobalActor取消注册小时的回调
-- @tparam function nightCallback 小时回调
function GlobalActorProxy:UnregisterHourCallback(hourCallback)
uActor:UnregisterHourCallback(hourCallback)
end
--- GlobalActor天气相关方法
-- @section weather
--- GlobalActor注册天气变化的回调
-- @tparam function weatherCallback 天气变化的回调回调需接受一个WeathType类型的参数
function GlobalActorProxy:RegisterWeatherCallback(weatherCallback)
uActor:RegisterWeatherCallback(weatherCallback)
end
--- GlobalActor取消注册天气变化的回调
-- @tparam function weatherCallback 天气变化的回调回调需接受一个WeathType类型的参数
function GlobalActorProxy:UnregisterWeatherCallback(weatherCallback)
uActor:UnregisterWeatherCallback(weatherCallback)
end
--- GlobalActor改变默认天气
-- @tparam string weatherName 天气配置的名字
function GlobalActorProxy:ChangeDefaultWeather(weatherName)
uActor:ChangeDefaultWeahter(weatherName)
end
--- GlobalActor改变天气
-- @tparam string weatherName 天气配置的名字
function GlobalActorProxy:ChangeWeather(weatherName)
uActor:ChangeWeather(weatherName)
end
--- GlobalActor恢复天气到服务器当前
function GlobalActorProxy:LeaveWeather()
uActor:LeaveWeather()
end
--- GlobalActor获取当前是黑天还是白天
function GlobalActorProxy:GetIsNight()
local isNight = uActor:GetIsNight()
this.isDay = (not isNight)
this.isNight = isNight
end
--- GlobalActor修改时间的函数
-- @tparam float daytime24 小时数
function GlobalActorProxy:ChangeDay24Time(daytime24, force)
uActor:ChangeDay24Time(daytime24, force)
end
--- 开始某个引导
-- @tparam string name 引导的名称
function GlobalActorProxy:StartGuide(name)
uActor:StartGuide(name)
end
--- 结束某个引导
-- @tparam string name 引导的名称
function GlobalActorProxy:EndGuide(name)
uActor:EndGuide(name)
end
--- GlobalActor控制角色
-- @section avatar ctrl
--- 停止当前控制角色移动
function GlobalActorProxy:StopLocalAvatar()
uActor:StopLocalAvatar()
end
--- 开始某个引导
-- @tparam string name 引导的名称
function GlobalActorProxy:LoadSectorByPos(pos, callbak)
uActor:LoadSectorByPos(pos, callbak)
end
--- 设置当前角色坐标
-- @tparam Vector3 pos
function GlobalActorProxy:SetAvatarPos(pos)
actorUtils.SetAvatarPos(pos)
end
--- 设置当前角色欧拉角
-- @tparam Vector3 euler
function GlobalActorProxy:SetAvatarEuler(euler)
actorUtils.SetAvatarEuler(euler)
end
--- 切换回主角
function GlobalActorProxy:ChangeToHero()
uActor:ChangeToHero()
end
--- 判断是否是男的主角
function GlobalActorProxy:IsHeroMale()
return uActor:IsHeroMale()
end
--- 控制全局task
-- @section task
--- 停止所有旁白
function GlobalActorProxy:FinishAllNarrator()
uActor:FinishAllNarratorTask()
end
GlobalActorProxy.BtnTransmitData =
{
btnTransId = 0,
btnTransSceneId = 0,
btnTransDummyPos = nil,
btnTransDummyEuler = nil,
btnTransRange = 0.0,
btnTransPriority = 0
}
--- 弹出传送到任务的按钮
-- @tparam int id 用于区分不同的sub task
-- @tparam uint sceneId 点了以后传送到sceneId
-- @tparam string dummyPoint dummyPoint的名字
-- @tparam float range 触发按钮的范围
-- @tparam int priority 优先级
function GlobalActorProxy:PlayerBackButtonOn(id, sceneId, dummyPoint, range, priority)
if priority == nil then
priority = 0
end
local dummyPoint = sceneData:GetDummyPoint(sceneId, dummyPoint)
if dummyPoint == nil then
print("dummy point " .. dummyPoint .. " invalid")
return
end
local dummyPos = dummyPoint.pos
local dummyEuler = dummyPoint.rot
local btnTransmitData = self.BtnTransmitData
btnTransmitData.btnTransId = id
btnTransmitData.btnTransSceneId = sceneId
btnTransmitData.btnTransDummyPos = dummyPos
btnTransmitData.btnTransDummyEuler = dummyEuler
btnTransmitData.btnTransRange = range
btnTransmitData.btnTransPriority = priority
self.uActor:PlayerBackButtonOn(btnTransmitData)
end
--- 隐藏传送到任务的按钮
-- @tparam int id 用于区分不同的sub task
function GlobalActorProxy:PlayerBackButtonOff(id)
local btnTransmitData = self.BtnTransmitData
btnTransmitData.btnTransId = id
self.uActor:PlayerBackButtonOff(btnTransmitData)
end
--- 进入一个副本
-- @tparam uint pointId 入口点id
-- @tparam uint dungeonId 副本id
function GlobalActorProxy:PlayerEnterDungeon(pointId, dungeonId)
self.uActor:PlayerEnterDungeon(pointId, dungeonId)
end
function GlobalActorProxy:Start()
this:GetIsNight()
end
return GlobalActorProxy

View File

@@ -0,0 +1,56 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
local q304Cfg = require('Actor/Quest/Q304/Q304Config')
local featherData = q304Cfg.FeatherData
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
local Qin = actorMgr:GetActor("1006")
local Wendy = actorMgr:GetActor("1001")
local Paimon = actorMgr:GetActor("1005")
if interCnt == 2 then
globalActor:SpawnGadget(featherData.FeatherGadgetID, featherData.feather1Pos, featherData.feather1Dir, "Feather1")
end
end
return TestInteractionActor

View File

@@ -0,0 +1,80 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
local Qin = actorMgr:GetActor("1006")
local Wendy = actorMgr:GetActor("1001")
local Paimon = actorMgr:GetActor("1005")
if interCnt == 1 then
print_r(actorMgr.ActorDic)
Qin:SetPos(sceneData:GetDummyPoint(3,"Q305KnightDoor").pos)
Qin:TurnTo(M.Euler2DirXZ(sceneData:GetDummyPoint(3,"Q305KnightDoor").rot))
-- Qin:DoFreeStyle(1)
elseif interCnt == 2 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Qin:Standby()
Qin:WalkTo(sceneData:GetDummyPoint(3,"Q411QinBorn").pos)
elseif interCnt == 5 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Wendy:DoFreeStyle(0)
Wendy:CallDelay(2,Wendy.Standby)
Qin:SetPos(sceneData:GetDummyPoint(3,"Q411QinBorn").pos)
-- elseif interCnt == 8 then
-- -- CS.UnityEngine.Debug.Log('hello world111')
-- print_r(actorMgr.ActorDic)
-- Wendy:RunTo(sceneData:GetDummyPoint(3,"Q306KnightVanish").pos)
-- -- Wendy:Destroy(false)
-- Paimon:RunTo(sceneData:GetDummyPoint(3,"Q306KnightVanish").pos)
elseif interCnt == 25 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Wendy:SetPos(sceneData:GetDummyPoint(3,"Q301Hidden").pos)
-- Wendy:Destroy(false)
Paimon:SetPos(sceneData:GetDummyPoint(3,"Q301Hidden").pos)
end
end
return TestInteractionActor

View File

@@ -0,0 +1,80 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
local this = nil
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
local Qin = actorMgr:GetActor("Qin")
local Wendy = actorMgr:GetActor("Wendy")
local Paimon = actorMgr:GetActor("Paimon")
this = self
--[[ if interCnt == 1 then
print_r(actorMgr.ActorDic)
Qin:SetPos(sceneData:GetDummyPoint(3,"Q305KnightDoor").pos)
Qin:TurnTo(M.Euler2DirXZ(sceneData:GetDummyPoint(3,"Q305KnightDoor").rot))
-- Qin:DoFreeStyle(1)
elseif interCnt == 2 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Qin:Standby()
Qin:WalkTo(sceneData:GetDummyPoint(3,"Q411QinBorn").pos)
elseif interCnt == 5 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Wendy:DoFreeStyle(0)
Wendy:CallDelay(2,Wendy.Standby)
Qin:SetPos(sceneData:GetDummyPoint(3,"Q411QinBorn").pos)
-- elseif interCnt == 8 then
-- -- CS.UnityEngine.Debug.Log('hello world111')
-- print_r(actorMgr.ActorDic)
-- Wendy:RunTo(sceneData:GetDummyPoint(3,"Q306KnightVanish").pos)
-- -- Wendy:Destroy(false)
-- Paimon:RunTo(sceneData:GetDummyPoint(3,"Q306KnightVanish").pos) ]]
--[[ if interCnt == 9 then
print("Spawn Slime")
globalActor:SpawnMonster(20010302, 1, sceneData:GetDummyPoint(3,"Q353Monster1").pos)
end ]]
end
return TestInteractionActor

View File

@@ -0,0 +1,59 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
local this = nil
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
local Qin = actorMgr:GetActor("1006")
local Wendy = actorMgr:GetActor("1001")
local Paimon = actorMgr:GetActor("1005")
this = self
-- if interCnt == 41 then
-- print("Spawn Tears")
-- globalActor:SpawnGadget(70300038, sceneData:GetDummyPoint(1004,"Q370Tears").pos, sceneData:GetDummyPoint(1004,"Q370Tears").rot, "Tears", 1004)
-- end
end
return TestInteractionActor

View File

@@ -0,0 +1,58 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
local this = nil
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
local Wendy = actorMgr:GetActor("1001")
local Paimon = actorMgr:GetActor("1005")
this = self
if interCnt == 8 then
print("NPC Destroy")
-- Wendy:HideSelf()
-- Paimon:HideSelf()
end
end
return TestInteractionActor

View File

@@ -0,0 +1,84 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
local Wendy = actorMgr:GetActor("1001")
local Paimon = actorMgr:GetActor("1005")
local q414Cfg = require('Actor/Quest/Q414/Q414Config')
local PaimonData = q414Cfg.PaimonData
if interCnt == 2 then
print_r(actorMgr.ActorDic)
--Paimon:CreateActorWithPos(paimonData.Paimon, paimonData.PaimonScript, paimonData.PaimonID, 0, paimonData.bornPos, paimonData.bornDir, true, false)
--Paimon:SetPos(sceneData:GetDummyPoint(3,"Q414Paimon1").pos)
--Paimon:TurnTo(M.Euler2DirXZ(sceneData:GetDummyPoint(3,"Q414Paimon1").rot))
Paimon:DoFreeStyle(10)
elseif interCnt == 4 then
-- CS.UnityEngine.Debug.Log('hello world111')
Paimon:DoFreeStyle(1)
elseif interCnt == 23 then
-- CS.UnityEngine.Debug.Log('hello world111')
Paimon:DoFreeStyle(3)
--[[ elseif interCnt == 5 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Wendy:DoFreeStyle(0)
Wendy:CallDelay(2,Wendy.Standby)
Qin:SetPos(sceneData:GetDummyPoint(3,"Q411QinBorn").pos)
-- elseif interCnt == 8 then
-- -- CS.UnityEngine.Debug.Log('hello world111')
-- print_r(actorMgr.ActorDic)
-- Wendy:RunTo(sceneData:GetDummyPoint(3,"Q306KnightVanish").pos)
-- -- Wendy:Destroy(false)
-- Paimon:RunTo(sceneData:GetDummyPoint(3,"Q306KnightVanish").pos)
elseif interCnt == 25 then
-- CS.UnityEngine.Debug.Log('hello world111')
print_r(actorMgr.ActorDic)
Wendy:SetPos(sceneData:GetDummyPoint(3,"Q301Hidden").pos)
-- Wendy:Destroy(false)
Paimon:SetPos(sceneData:GetDummyPoint(3,"Q301Hidden").pos) ]]
end
end
return TestInteractionActor

View File

@@ -0,0 +1,56 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
CS.UnityEngine.Debug.Log(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
CS.UnityEngine.Debug.Log(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
CS.UnityEngine.Debug.Log(indent.."["..pos..'] => "'..val..'"')
else
CS.UnityEngine.Debug.Log(indent.."["..pos.."] => "..tostring(val))
end
end
else
CS.UnityEngine.Debug.Log(indent..tostring(t))
end
end
end
if (type(t)=="table") then
CS.UnityEngine.Debug.Log(tostring(t).." {")
sub_print_r(t," ")
CS.UnityEngine.Debug.Log("}")
else
sub_print_r(t," ")
end
end
function TestInteractionActor:OnInterStart(interCnt)
if interCnt == 1 then
print_r(actorMgr.ActorDic)
local Gaia = actorMgr:GetActor("1005")
Gaia:SetPos(M.Pos(1, 2, 3))
elseif interCnt == 2 then
CS.UnityEngine.Debug.Log('hello world111')
end
end
return TestInteractionActor

View File

@@ -0,0 +1,49 @@
----------------------
-- 这是Lua端InteractionActorProxy的基类包含一些全局控制函数。继承自SubGlobalActorProxy
-- @classmod InteractionActorProxy
local subGlobalActorProxy = require('Actor/SubGlobal/SubGlobalActorProxy')
local InteractionActorProxy = class("InteractionActorProxy", subGlobalActorProxy)
InteractionActorProxy.actorType = ActorType.INTERACTION_ACTOR
InteractionActorProxy.defaultAlias = "Interaction"
local super = nil
function InteractionActorProxy:OnPreInit()
super = self.__super
super:OnPreInit()
end
function InteractionActorProxy:CreateUActor(alias)
local uActor = actorUtils.CreateActor(self, ActorType.INTERACTION_ACTOR, alias, self.metaPath)
return uActor
end
--- InterActor当交互组开始时的回调
-- @tparam int interCnt 执行的InterGroup顺次从1开始
function InteractionActorProxy:OnInterStart(interCnt)
print("inter start cnt" .. tostring(interCnt))
end
--- InterActor当交互组结束时的回调
-- @tparam int interCnt 执行的InterGroup顺次从1开始
function InteractionActorProxy:OnInterFinish(interCnt)
print("inter finish cnt" .. tostring(interCnt))
end
function InteractionActorProxy:Register()
self.uActor:RegisterStartInterCallback(self.OnInterStart)
self.uActor:RegisterFinishInterCallback(self.OnInterFinish)
end
function InteractionActorProxy:Unregister()
self.uActor:UnregisterStartInterCallback(self.OnInterStart)
self.uActor:UnregisterStartInterCallback(self.OnInterFinish)
end
function InteractionActorProxy:Start()
end
return InteractionActorProxy

View File

@@ -0,0 +1,9 @@
require('Actor/ActorCommon')
local interactionActorProxy = require('Actor/Interaction/InteractionActorProxy')
local TestInteractionActor = class("TestInteractionActor", interactionActorProxy)
function InteractionActorProxy:OnInterStart(interCnt)
end
return TestInteractionActor

View File

@@ -0,0 +1,121 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local BaseDailyNpc = class("BaseDailyNpc", NpcActorProxy)
--@region Handlers
--- 碰撞反馈回调
BaseDailyNpc.OnCollisionEnter = nil
--- 事件回调
BaseDailyNpc.OnEvent = nil
--- 白天回调
BaseDailyNpc.StartDay = nil
function BaseDailyNpc:CallStartDay()
if self.StartDay ~= nil then
self:StartDay()
end
end
--- 黑夜回调
BaseDailyNpc.StartNight = nil
function BaseDailyNpc:CallStartNight()
if self.StartNight ~= nil then
self:StartNight()
end
end
--- 小时回调
BaseDailyNpc.HourBehave = nil
function BaseDailyNpc:RegisterDailyHandler()
if self.OnCollisionEnter ~= nil then
self:CallOnCollisionEnter(self.OnCollisionEnter)
end
if self.OnEvent ~= nil then
self:RegisterActorEvent(self.OnEvent)
end
if self.StartDay ~= nil then
self:RegisterSelfDayTime(self.StartDay)
end
if self.StartNight ~= nil then
self:RegisterSelfNightTime(self.StartNight)
end
if self.HourBehave ~= nil then
self:RegisterSelfHour(self.HourBehave)
end
end
function BaseDailyNpc:UnregisterDailyHandler()
if self.OnCollisionEnter ~= nil then
self:ClearOnCollisionEnter(self.OnCollisionEnter)
end
-- don't clear event that can be still notified in any mode
-- if self.OnEvent ~= nil then
-- self:UnregisterActorEvent(self.OnEvent)
-- end
if self.StartDay ~= nil then
self:UnregisterSelfDayTime(self.StartDay)
end
if self.StartNight ~= nil then
self:UnregisterSelfNightTime(self.StartNight)
end
if self.HourBehave ~= nil then
self:UnregisterSelfHour(self.HourBehave)
end
end
--@endregion
--@region Default Method
function BaseDailyNpc:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function BaseDailyNpc:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
--@endregion
--@region Mode
BaseDailyNpc.modeDic = {}
function BaseDailyNpc:RegisterMode(modeType)
local mode = npcMode:GetMode(modeType)
if mode ~= nil then
self.modeDic[modeType] = mode
end
end
--@endregion
--@region Default Start
function BaseDailyNpc:Start()
self:StartDaily()
end
function BaseDailyNpc:StartDaily()
self:RegisterDailyHandler()
if globalActor.isDay then
self:CallStartDay()
else
self:CallStartNight()
end
end
function BaseDailyNpc:ResetDaily()
self:Stop()
self:UnregisterDailyHandler()
end
function BaseDailyNpc:SwitchMode(modeType)
local mode = self.modeDic[modeType]
local modeFunc = nil
if mode ~= nil then
modeFunc = mode[self.alias]
if modeFunc == nil then
modeFunc = mode.DefaultAction
end
end
if modeFunc ~= nil then
self:ResetDaily()
modeFunc(self)
end
end
--@endregion
return BaseDailyNpc

View File

@@ -0,0 +1,248 @@
require('Actor/ActorCommon')
local CfgMengdeDayPatrol = {}
CfgMengdeDayPatrol.DummyPointData =
{
Npc = "MengdeDayPatrol",
PosData={
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos06").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos07").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos08").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos09").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos10").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos11").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos12").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos13").pos,
},
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos06").pos,
},
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos06").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos07").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos08").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos09").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos10").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos11").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos12").pos,
},
{
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos07").pos,
},
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos06").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos07").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos08").pos,
},
},
DirData={
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos01").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos02").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos03").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos04").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos05").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos06").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos07").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos08").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos09").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos10").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos11").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos12").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos13").rot,
},
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos01").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos02").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos03").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos04").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos05").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos06").rot,
},
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos01").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos02").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos03").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos04").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos05").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos06").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos07").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos08").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos09").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos10").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos11").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos12").rot,
},
{
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos01").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos02").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos03").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos04").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos05").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos06").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos07").rot,
},
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos01").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos02").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos03").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos04").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos05").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos06").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos07").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos08").rot,
},
},
TimeData={
{
25,
0,
0,
0,
0,
0,
0,
25,
0,
0,
0,
0,
0,
},
{
10,
10,
0,
0,
20,
20,
},
{
0,
0,
0,
0,
15,
0,
15,
0,
15,
0,
15,
0,
},
{
15,
0,
20,
0,
0,
0,
0,
},
{
15,
0,
0,
15,
0,
0,
0,
0,
},
},
Pos01Pos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos01").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos01").pos,
},
Pos02Pos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos02").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos02").pos,
},
Pos03Pos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos03").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos03").pos,
},
Pos04Pos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos04").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos04").pos,
},
Pos05Pos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos05").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos05").pos,
},
Pos06Pos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol05Pos06").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol10Pos06").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol13Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayPatrol18Pos06").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayPatrol14Pos06").pos,
},
NpcID =
{
1421,
1431,
1455,
1461,
1463,
},
DialogID =
{
4015142199,
4015143199,
4015145599,
4015146199,
4015146399,
},
}
return CfgMengdeDayPatrol

View File

@@ -0,0 +1,20 @@
require('Actor/ActorCommon')
local CfgMengdeDaySit = {}
CfgMengdeDaySit.DummyPointData =
{
Npc = "MengdeDaySit",
NpcID =
{
1475,
1477,
},
DialogID =
{
4015147599,
4015147799,
},
}
return CfgMengdeDaySit

View File

@@ -0,0 +1,63 @@
require('Actor/ActorCommon')
local CfgMengdeDayStand = {}
CfgMengdeDayStand.DummyPointData =
{
Npc = "MengdeDayStand",
BornDir =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayStand01Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayStand01Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand02Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayStand03Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayStand04Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayStand05Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand08Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand09Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleDayStand15Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand12Born").rot,
},
BornPos =
{
sceneData:GetDummyPoint(3, "NpcFemaleDayStand01Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayStand01Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand02Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayStand03Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayStand04Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayStand05Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand08Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand09Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleDayStand15Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleDayStand12Born").pos,
},
NpcID =
{
1401,
1403,
1405,
1409,
1411,
1413,
1427,
1429,
1451,
1453,
1453,
},
DialogID =
{
4015140199,
4015140399,
4015140599,
4015140999,
4015141199,
4015141399,
4015142799,
4015142999,
4015145199,
4015145399,
},
}
return CfgMengdeDayStand

View File

@@ -0,0 +1,189 @@
require('Actor/ActorCommon')
local CfgMengdeInsomniaPatrol = {}
CfgMengdeInsomniaPatrol.DummyPointData =
{
Npc = "MengdeInsomniaPatrol",
PosData={
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos07").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos08").pos,
},
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos07").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos08").pos,
},
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos06").pos,
},
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos07").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos08").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos09").pos,
},
},
DirData={
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos01").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos02").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos03").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos04").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos05").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos06").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos07").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos08").rot,
},
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos01").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos02").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos03").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos04").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos05").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos06").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos07").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos08").rot,
},
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos01").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos02").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos03").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos04").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos05").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos06").rot,
},
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos01").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos02").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos03").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos04").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos05").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos06").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos07").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos08").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos09").rot,
},
},
TimeData={
{
0,
0,
0,
0,
0,
0,
0,
0,
},
{
0,
0,
0,
0,
0,
0,
0,
0,
},
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
},
{
0,
0,
0,
0,
0,
0,
},
},
Pos01Pos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos01").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos01").pos,
},
Pos02Pos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos02").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos02").pos,
},
Pos03Pos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos03").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos03").pos,
},
Pos04Pos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos04").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos04").pos,
},
Pos05Pos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos05").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos05").pos,
},
Pos06Pos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol07Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol12Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol13Pos06").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaPatrol14Pos06").pos,
},
NpcID =
{
1433,
1445,
1447,
1449,
},
DialogID =
{
4015143399,
4015144599,
4015144799,
4015144999,
},
}
return CfgMengdeInsomniaPatrol

View File

@@ -0,0 +1,115 @@
require('Actor/ActorCommon')
local CfgMengdeInsomniaStand = {}
CfgMengdeInsomniaStand.DummyPointData =
{
Npc = "MengdeInsomniaStand",
BornDir =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand06Born").rot, --弃用
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand06Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand04Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand06Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand07Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand11Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand08Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand09Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand10Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand11Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand16Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand17Born").rot,
sceneData:GetDummyPoint(1009, "NpcMaleInsomniaStand19Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand20Born").rot,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand15Born").rot,
sceneData:GetDummyPoint(1008, "NpcFemaleInsomniaStand16Born").rot,
sceneData:GetDummyPoint(1008, "NpcFemaleInsomniaStand17Born").rot,
sceneData:GetDummyPoint(3, "Q467Lynn1").rot,
},
BornPos =
{
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand06Born").pos, --弃用
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand06Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand04Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand06Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand07Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand11Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand08Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand09Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand10Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand11Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand16Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand17Born").pos,
sceneData:GetDummyPoint(1009, "NpcMaleInsomniaStand19Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleInsomniaStand20Born").pos,
sceneData:GetDummyPoint(3, "NpcFemaleInsomniaStand15Born").pos,
sceneData:GetDummyPoint(1008, "NpcFemaleInsomniaStand16Born").pos,
sceneData:GetDummyPoint(1008, "NpcFemaleInsomniaStand17Born").pos,
sceneData:GetDummyPoint(3, "Q467Lynn1").pos,
},
NpcID =
{
1415,
1417,
1419,
1423,
1425,
1435,
1437,
1439,
1441,
1443,
1457,
1459,
1465,
1467,
1469,
1471,
1473,
1479,
},
DialogID =
{
4015141599,
4015141799,
4015141999,
4015142399,
4015142599,
4015143599,
4015143799,
4015143999,
4015144199,
4015144399,
4015145799,
4015145999,
4015146599,
4015146799,
4015146999,
4015147199,
4015147399,
4015148001,
},
BubbleCtrl =
{
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
},
}
return CfgMengdeInsomniaStand

View File

@@ -0,0 +1,28 @@
require('Actor/ActorCommon')
local CfgMengdeNightConfuse = {}
CfgMengdeNightConfuse.DummyPointData =
{
Npc = "MengdeNightConfuse",
Pos01Pos =
{
},
Pos02Pos =
{
},
Pos03Pos =
{
},
Pos04Pos =
{
},
NpcID =
{
},
DialogID =
{
},
}
return CfgMengdeNightConfuse

View File

@@ -0,0 +1,22 @@
require('Actor/ActorCommon')
local CfgMengdeNightSit = {}
CfgMengdeNightSit.DummyPointData =
{
Npc = "MengdeNightSit",
NpcID =
{
1404,
1410,
1414,
},
DialogID =
{
4015140499,
4015141099,
4015141499,
},
}
return CfgMengdeNightSit

View File

@@ -0,0 +1,34 @@
require('Actor/ActorCommon')
local CfgMengdeNightStand = {}
CfgMengdeNightStand.DummyPointData =
{
Npc = "MengdeNightStand",
BornDir =
{
sceneData:GetDummyPoint(3, "NpcMaleNightStand02Born").rot,
sceneData:GetDummyPoint(3, "NpcMaleNightStand04Born").rot,
sceneData:GetDummyPoint(1008, "NpcFemaleNightStand09Born").rot,
},
BornPos =
{
sceneData:GetDummyPoint(3, "NpcMaleNightStand02Born").pos,
sceneData:GetDummyPoint(3, "NpcMaleNightStand04Born").pos,
sceneData:GetDummyPoint(1008, "NpcFemaleNightStand09Born").pos,
},
NpcID =
{
1408,
1412,
1430,
},
DialogID =
{
4015140899,
4015141299,
4015143099,
},
}
return CfgMengdeNightStand

View File

@@ -0,0 +1,168 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe01 = class("JohnDoe01", NpcActorProxy)
JohnDoe01.defaultAlias = "JohnDoe01"
JohnDoe01.pointID = 1
JohnDoe01.currWeather = WeatherType.ClearSky
local JohnDoe01Data =
{
BornPos = sceneData:GetDummyPoint(3, "JohnDoe01Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe01Born").rot,
HomePos = sceneData:GetDummyPoint(3, "JohnDoe01Home").pos,
HomeDir = sceneData:GetDummyPoint(3, "JohnDoe01Home").rot,
Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe01Pos01").pos,
Pos01Dir = sceneData:GetDummyPoint(3, "JohnDoe01Pos01").rot,
Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe01Pos02").pos,
Pos02Dir = sceneData:GetDummyPoint(3, "JohnDoe01Pos02").rot,
Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe01Pos03").pos,
Pos03Dir = sceneData:GetDummyPoint(3, "JohnDoe01Pos03").rot,
Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe01Pos04").pos,
Pos04Dir = sceneData:GetDummyPoint(3, "JohnDoe01Pos04").rot,
ScaredPos = sceneData:GetDummyPoint(3, "NPCScaredPoint01").pos,
}
function JohnDoe01:Start()
--print("start!JohnDoe01")
self:StartDaily()
end
function JohnDoe01:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe01:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe01:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe01:StartDaily()
--print("JohnDoe01 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfHour(self.HourBehave)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe01:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe01:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe01Data.BornDir))
self:PerformDither(true, 2, self.GoChat)
end
function JohnDoe01:GoChat()
if self.pointID == 1 then
self:WalkToTask(JohnDoe01Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe01Data.Pos02Pos, self.Chat, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(JohnDoe01Data.Pos03Pos, self.Chat, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(JohnDoe01Data.Pos04Pos, self.Chat, self.Standby)
end
end
function JohnDoe01:SelfPointUpdate()
if globalActor.isDay then
self.pointID = self.pointID + 1
self:GoChat()
else
self.pointID = self.pointID - 1
self:GoHome()
end
end
function JohnDoe01:Chat()
if self.pointID < 2 then
self:GoChat()
elseif self.pointID == 2 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe01Data.Pos02Dir))
elseif self.pointID == 3 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe01Data.Pos03Dir))
elseif self.pointID == 4 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe01Data.Pos04Dir))
end
end
function JohnDoe01:HourBehave(Hour)
if Hour == 9 or Hour == 12 or Hour == 15 then
self.pointID = 3
self:GoChat()
elseif Hour == 10 or Hour == 13 or Hour == 16 then
self.pointID = 4
self:GoChat()
elseif Hour == 11 or Hour == 14 or Hour == 17 then
self.pointID = 2
self:GoChat()
end
end
function JohnDoe01:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
self:GoHome()
end
function JohnDoe01:GoHome()
if self.pointID == 1 then
self:TurnTo(M.Euler2DirXZ(JohnDoe01Data.HomeDir))
self:DoDisappear()
else
self:GoHomeRoute()
end
end
function JohnDoe01:GoHomeRoute()
if self.pointID > 2 then
self.pointID = 3
self:WalkToTask(JohnDoe01Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe01Data.HomePos, self.SelfPointUpdate, self.Standby)
end
end
function JohnDoe01:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:DoAppear()
self:SetPos(JohnDoe01Data.ScaredPos)
self:DoFreeStyle(362)
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe01

View File

@@ -0,0 +1,171 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe02 = class("JohnDoe02", NpcActorProxy)
JohnDoe02.defaultAlias = "JohnDoe02"
JohnDoe02.pointID = 1
JohnDoe02.currWeather = WeatherType.ClearSky
local JohnDoe02Data =
{
BornPos = sceneData:GetDummyPoint(3, "JohnDoe02Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe02Born").rot,
HomePos = sceneData:GetDummyPoint(3, "JohnDoe02Home").pos,
HomeDir = sceneData:GetDummyPoint(3, "JohnDoe02Home").rot,
Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe02Pos01").pos,
Pos01Dir = sceneData:GetDummyPoint(3, "JohnDoe02Pos01").rot,
Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe02Pos02").pos,
Pos02Dir = sceneData:GetDummyPoint(3, "JohnDoe02Pos02").rot,
Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe02Pos03").pos,
Pos03Dir = sceneData:GetDummyPoint(3, "JohnDoe02Pos03").rot,
Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe02Pos04").pos,
Pos04Dir = sceneData:GetDummyPoint(3, "JohnDoe02Pos04").rot,
ScaredPos = sceneData:GetDummyPoint(3, "NPCScaredPoint02").pos,
}
function JohnDoe02:Start()
--print("start!JohnDoe02")
self:StartDaily()
end
function JohnDoe02:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe02:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe02:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe02:StartDaily()
--print("JohnDoe02 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfHour(self.HourBehave)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe02:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe02:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe02Data.BornDir))
self:PerformDither(true, 2, self.GoChat)
end
function JohnDoe02:GoChat()
if self.pointID == 1 then
self:WalkToTask(JohnDoe02Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe02Data.Pos02Pos, self.Chat, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(JohnDoe02Data.Pos03Pos, self.Chat, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(JohnDoe02Data.Pos04Pos, self.Chat, self.Standby)
end
end
function JohnDoe02:SelfPointUpdate()
if globalActor.isDay then
self.pointID = self.pointID + 1
self:GoChat()
else
self.pointID = self.pointID - 1
self:GoHome()
end
end
function JohnDoe02:Chat()
if self.pointID < 2 then
self:GoChat()
elseif self.pointID == 2 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe02Data.Pos02Dir))
elseif self.pointID == 3 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe02Data.Pos03Dir))
elseif self.pointID == 4 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe02Data.Pos04Dir))
end
end
function JohnDoe02:HourBehave(Hour)
if Hour == 9 or Hour == 12 or Hour == 15 then
self:DoFreeStateTrigger()
self.pointID = 3
self:GoChat()
elseif Hour == 10 or Hour == 13 or Hour == 16 then
self:DoFreeStateTrigger()
self.pointID = 4
self:GoChat()
elseif Hour == 11 or Hour == 14 or Hour == 17 then
self:DoFreeStateTrigger()
self.pointID = 2
self:GoChat()
end
end
function JohnDoe02:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
self:GoHome()
end
function JohnDoe02:GoHome()
if self.pointID == 1 then
self:TurnTo(M.Euler2DirXZ(JohnDoe02Data.HomeDir))
self:DoDisappear()
else
self:GoHomeRoute()
end
end
function JohnDoe02:GoHomeRoute()
if self.pointID > 2 then
self.pointID = 3
self:WalkToTask(JohnDoe02Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe02Data.HomePos, self.SelfPointUpdate, self.Standby)
end
end
function JohnDoe02:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:DoAppear()
self:SetPos(JohnDoe02Data.ScaredPos)
self:DoFreeStyle(362)
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe02

View File

@@ -0,0 +1,171 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe03 = class("JohnDoe03", NpcActorProxy)
JohnDoe03.defaultAlias = "JohnDoe03"
JohnDoe03.pointID = 1
JohnDoe03.currWeather = WeatherType.ClearSky
local JohnDoe03Data =
{
BornPos = sceneData:GetDummyPoint(3, "JohnDoe03Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe03Born").rot,
HomePos = sceneData:GetDummyPoint(3, "JohnDoe03Home").pos,
HomeDir = sceneData:GetDummyPoint(3, "JohnDoe03Home").rot,
Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe03Pos01").pos,
Pos01Dir = sceneData:GetDummyPoint(3, "JohnDoe03Pos01").rot,
Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe03Pos02").pos,
Pos02Dir = sceneData:GetDummyPoint(3, "JohnDoe03Pos02").rot,
Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe03Pos03").pos,
Pos03Dir = sceneData:GetDummyPoint(3, "JohnDoe03Pos03").rot,
Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe03Pos04").pos,
Pos04Dir = sceneData:GetDummyPoint(3, "JohnDoe03Pos04").rot,
ScaredPos = sceneData:GetDummyPoint(3, "NPCScaredPoint03").pos,
}
function JohnDoe03:Start()
--print("start!JohnDoe03")
self:StartDaily()
end
function JohnDoe03:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe03:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe03:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe03:StartDaily()
--print("JohnDoe03 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfHour(self.HourBehave)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe03:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe03:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe03Data.BornDir))
self:PerformDither(true, 2, self.GoChat)
end
function JohnDoe03:GoChat()
if self.pointID == 1 then
self:WalkToTask(JohnDoe03Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe03Data.Pos02Pos, self.Chat, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(JohnDoe03Data.Pos03Pos, self.Chat, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(JohnDoe03Data.Pos04Pos, self.Chat, self.Standby)
end
end
function JohnDoe03:SelfPointUpdate()
if globalActor.isDay then
self.pointID = self.pointID + 1
self:GoChat()
else
self.pointID = self.pointID - 1
self:GoHome()
end
end
function JohnDoe03:Chat()
if self.pointID < 2 then
self:GoChat()
elseif self.pointID == 2 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe03Data.Pos02Dir))
elseif self.pointID == 3 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe03Data.Pos03Dir))
elseif self.pointID == 4 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe03Data.Pos04Dir))
end
end
function JohnDoe03:HourBehave(Hour)
if Hour == 9 or Hour == 12 or Hour == 15 then
self:DoFreeStateTrigger()
self.pointID = 3
self:GoChat()
elseif Hour == 10 or Hour == 13 or Hour == 16 then
self:DoFreeStateTrigger()
self.pointID = 4
self:GoChat()
elseif Hour == 11 or Hour == 14 or Hour == 17 then
self:DoFreeStateTrigger()
self.pointID = 2
self:GoChat()
end
end
function JohnDoe03:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
self:GoHome()
end
function JohnDoe03:GoHome()
if self.pointID == 1 then
self:TurnTo(M.Euler2DirXZ(JohnDoe03Data.HomeDir))
self:PerformDither(false, 2, self.HideSelf)
else
self:GoHomeRoute()
end
end
function JohnDoe03:GoHomeRoute()
if self.pointID > 2 then
self.pointID = 3
self:WalkToTask(JohnDoe03Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe03Data.HomePos, self.SelfPointUpdate, self.Standby)
end
end
function JohnDoe03:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:DoAppear()
self:SetPos(JohnDoe03Data.ScaredPos)
self:DoFreeStyle(362)
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe03

View File

@@ -0,0 +1,171 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe04 = class("JohnDoe04", NpcActorProxy)
JohnDoe04.defaultAlias = "JohnDoe04"
JohnDoe04.pointID = 1
JohnDoe04.currWeather = WeatherType.ClearSky
local JohnDoe04Data =
{
BornPos = sceneData:GetDummyPoint(3, "JohnDoe04Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe04Born").rot,
HomePos = sceneData:GetDummyPoint(3, "JohnDoe04Home").pos,
HomeDir = sceneData:GetDummyPoint(3, "JohnDoe04Home").rot,
Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe04Pos01").pos,
Pos01Dir = sceneData:GetDummyPoint(3, "JohnDoe04Pos01").rot,
Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe04Pos02").pos,
Pos02Dir = sceneData:GetDummyPoint(3, "JohnDoe04Pos02").rot,
Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe04Pos03").pos,
Pos03Dir = sceneData:GetDummyPoint(3, "JohnDoe04Pos03").rot,
Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe04Pos04").pos,
Pos04Dir = sceneData:GetDummyPoint(3, "JohnDoe04Pos04").rot,
ScaredPos = sceneData:GetDummyPoint(3, "NPCScaredPoint04").pos,
}
function JohnDoe04:Start()
--print("start!JohnDoe04")
self:StartDaily()
end
function JohnDoe04:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe04:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe04:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe04:StartDaily()
--print("JohnDoe04 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfHour(self.HourBehave)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe04:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe04:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe04Data.BornDir))
self:PerformDither(true, 2, self.GoChat)
end
function JohnDoe04:GoChat()
if self.pointID == 1 then
self:WalkToTask(JohnDoe04Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe04Data.Pos02Pos, self.Chat, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(JohnDoe04Data.Pos03Pos, self.Chat, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(JohnDoe04Data.Pos04Pos, self.Chat, self.Standby)
end
end
function JohnDoe04:SelfPointUpdate()
if globalActor.isDay then
self.pointID = self.pointID + 1
self:GoChat()
else
self.pointID = self.pointID - 1
self:GoHome()
end
end
function JohnDoe04:Chat()
if self.pointID < 2 then
self:GoChat()
elseif self.pointID == 2 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe04Data.Pos02Dir))
elseif self.pointID == 3 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe04Data.Pos03Dir))
elseif self.pointID == 4 then
self:DoFreeStyle(51)
self:TurnTo(M.Euler2DirXZ(JohnDoe04Data.Pos04Dir))
end
end
function JohnDoe04:HourBehave(Hour)
if Hour == 9 or Hour == 12 or Hour == 15 then
self:DoFreeStateTrigger()
self.pointID = 3
self:GoChat()
elseif Hour == 10 or Hour == 13 or Hour == 16 then
self:DoFreeStateTrigger()
self.pointID = 4
self:GoChat()
elseif Hour == 11 or Hour == 14 or Hour == 17 then
self:DoFreeStateTrigger()
self.pointID = 2
self:GoChat()
end
end
function JohnDoe04:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
self:GoHome()
end
function JohnDoe04:GoHome()
if self.pointID == 1 then
self:TurnTo(M.Euler2DirXZ(JohnDoe04Data.HomeDir))
self:PerformDither(false, 2, self.HideSelf)
else
self:GoHomeRoute()
end
end
function JohnDoe04:GoHomeRoute()
if self.pointID > 2 then
self.pointID = 3
self:WalkToTask(JohnDoe04Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe04Data.HomePos, self.SelfPointUpdate, self.Standby)
end
end
function JohnDoe04:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:DoAppear()
self:SetPos(JohnDoe04Data.ScaredPos)
self:DoFreeStyle(362)
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe04

View File

@@ -0,0 +1,150 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe05 = class("JohnDoe05", NpcActorProxy)
JohnDoe05.defaultAlias = "JohnDoe05"
-- JohnDoe05.pointID = 1
-- JohnDoe05.targetPos = sceneData:GetDummyPoint(3, "JohnDoe05Born").pos
JohnDoe05.currWeather = WeatherType.ClearSky
local JohnDoe05Data =
{
-- BornPos = sceneData:GetDummyPoint(3, "JohnDoe05Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe05Born").rot,
-- HomePos = sceneData:GetDummyPoint(3, "JohnDoe05Home").pos,
-- HomeDir = sceneData:GetDummyPoint(3, "JohnDoe05Home").rot,
-- Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe05Pos01").pos,
-- Pos01Dir = sceneData:GetDummyPoint(3, "JohnDoe05Pos01").rot,
-- Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe05Pos02").pos,
-- Pos02Dir = sceneData:GetDummyPoint(3, "JohnDoe05Pos02").rot,
-- Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe05Pos03").pos,
-- Pos03Dir = sceneData:GetDummyPoint(3, "JohnDoe05Pos03").rot,
-- Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe05Pos04").pos,
-- Pos04Dir = sceneData:GetDummyPoint(3, "JohnDoe05Pos04").rot,
-- Pos05Pos = sceneData:GetDummyPoint(3, "JohnDoe05Pos05").pos,
-- Pos05Dir = sceneData:GetDummyPoint(3, "JohnDoe05Pos05").rot,
-- Pos06Pos = sceneData:GetDummyPoint(3, "JohnDoe05Pos06").pos,
-- Pos06Dir = sceneData:GetDummyPoint(3, "JohnDoe05Pos06").rot,
}
function JohnDoe05:Start()
-- print("start!JohnDoe05")
self:StartDaily()
end
function JohnDoe05:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe05:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe05:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe05:StartDaily()
-- print("JohnDoe05 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe05:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe05:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe05Data.BornDir))
self:PerformDither(true, 2, self.Chat)
end
-- function JohnDoe05:RandomStand()
-- self:TargetDect()
-- print("self.pointID = "..self.pointID)
-- self:WalkToTask(JohnDoe05.targetPos, self.NextMove, self.Standby)
-- end
-- function JohnDoe05:TargetDect()
-- self.pointID = math.random(1,6)
-- if self.pointID == 1 then
-- JohnDoe05.targetPos = JohnDoe05Data.Pos01Pos
-- elseif self.pointID == 2 then
-- JohnDoe05.targetPos = JohnDoe05Data.Pos02Pos
-- elseif self.pointID == 3 then
-- JohnDoe05.targetPos = JohnDoe05Data.Pos03Pos
-- elseif self.pointID == 4 then
-- JohnDoe05.targetPos = JohnDoe05Data.Pos04Pos
-- elseif self.pointID == 5 then
-- JohnDoe05.targetPos = JohnDoe05Data.Pos05Pos
-- elseif self.pointID == 6 then
-- JohnDoe05.targetPos = JohnDoe05Data.Pos06Pos
-- end
-- end
-- function JohnDoe05:NextMove()
-- self:CallDelay(math.random(3,7), self.RandomStand)
-- end
-- function JohnDoe05:StartDay()
-- self:ClearFollowTask()
-- self:ShowSelf()
-- self:TurnTo(M.Euler2DirXZ(JohnDoe05Data.BornDir))
-- self:PerformDither(true, 2, self.DelayChat)
-- self:RandomTest()
-- end
-- function JohnDoe05:DelayChat()
-- self:CallDelay(7, self.Chat)
-- end
function JohnDoe05:Chat()
self:DoFreeStyle(52)
end
function JohnDoe05:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
-- self:GoHome()
self:PerformDither(false, 2, self.HideSelf)
end
-- function JohnDoe05:GoHome()
-- self:TurnTo(M.Euler2DirXZ(JohnDoe05Data.HomeDir))
-- self:PerformDither(false, 2, self.HideSelf)
-- end
function JohnDoe05:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe05

View File

@@ -0,0 +1,150 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe06 = class("JohnDoe06", NpcActorProxy)
JohnDoe06.defaultAlias = "JohnDoe06"
-- JohnDoe06.pointID = 1
-- JohnDoe06.targetPos = sceneData:GetDummyPoint(3, "JohnDoe06Born").pos
JohnDoe06.currWeather = WeatherType.ClearSky
local JohnDoe06Data =
{
-- BornPos = sceneData:GetDummyPoint(3, "JohnDoe06Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe05Home").rot,
-- HomePos = sceneData:GetDummyPoint(3, "JohnDoe06Home").pos,
-- HomeDir = sceneData:GetDummyPoint(3, "JohnDoe06Home").rot,
-- Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe06Pos01").pos,
-- Pos01Dir = sceneData:GetDummyPoint(3, "JohnDoe06Pos01").rot,
-- Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe06Pos02").pos,
-- Pos02Dir = sceneData:GetDummyPoint(3, "JohnDoe06Pos02").rot,
-- Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe06Pos03").pos,
-- Pos03Dir = sceneData:GetDummyPoint(3, "JohnDoe06Pos03").rot,
-- Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe06Pos04").pos,
-- Pos04Dir = sceneData:GetDummyPoint(3, "JohnDoe06Pos04").rot,
-- Pos05Pos = sceneData:GetDummyPoint(3, "JohnDoe06Pos05").pos,
-- Pos05Dir = sceneData:GetDummyPoint(3, "JohnDoe06Pos05").rot,
-- Pos06Pos = sceneData:GetDummyPoint(3, "JohnDoe06Pos06").pos,
-- Pos06Dir = sceneData:GetDummyPoint(3, "JohnDoe06Pos06").rot,
}
function JohnDoe06:Start()
-- print("start!JohnDoe06")
self:StartDaily()
end
function JohnDoe06:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe06:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe06:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe06:StartDaily()
-- print("JohnDoe06 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe06:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe06:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe06Data.BornDir))
self:PerformDither(true, 2, self.Chat)
end
-- function JohnDoe06:RandomStand()
-- self:TargetDect()
-- print("self.pointID = "..self.pointID)
-- self:WalkToTask(JohnDoe06.targetPos, self.NextMove, self.Standby)
-- end
-- function JohnDoe06:TargetDect()
-- self.pointID = math.random(1,6)
-- if self.pointID == 1 then
-- JohnDoe06.targetPos = JohnDoe06Data.Pos01Pos
-- elseif self.pointID == 2 then
-- JohnDoe06.targetPos = JohnDoe06Data.Pos02Pos
-- elseif self.pointID == 3 then
-- JohnDoe06.targetPos = JohnDoe06Data.Pos03Pos
-- elseif self.pointID == 4 then
-- JohnDoe06.targetPos = JohnDoe06Data.Pos04Pos
-- elseif self.pointID == 5 then
-- JohnDoe06.targetPos = JohnDoe06Data.Pos05Pos
-- elseif self.pointID == 6 then
-- JohnDoe06.targetPos = JohnDoe06Data.Pos06Pos
-- end
-- end
-- function JohnDoe06:NextMove()
-- self:CallDelay(math.random(3,7), self.RandomStand)
-- end
-- function JohnDoe06:StartDay()
-- self:ClearFollowTask()
-- self:ShowSelf()
-- self:TurnTo(M.Euler2DirXZ(JohnDoe06Data.BornDir))
-- self:PerformDither(true, 2, self.DelayChat)
-- self:RandomTest()
-- end
-- function JohnDoe06:DelayChat()
-- self:CallDelay(7, self.Chat)
-- end
function JohnDoe06:Chat()
self:DoFreeStyle(52)
end
function JohnDoe06:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
-- self:GoHome()
self:PerformDither(false, 2, self.HideSelf)
end
-- function JohnDoe06:GoHome()
-- self:TurnTo(M.Euler2DirXZ(JohnDoe06Data.HomeDir))
-- self:PerformDither(false, 2, self.HideSelf)
-- end
function JohnDoe06:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe06

View File

@@ -0,0 +1,147 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe07 = class("JohnDoe07", NpcActorProxy)
JohnDoe07.defaultAlias = "JohnDoe07"
JohnDoe07.pointID = 1
JohnDoe07.currWeather = WeatherType.ClearSky
local JohnDoe07Data =
{
BornPos = sceneData:GetDummyPoint(3, "JohnDoe07Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe07Born").rot,
HomePos = sceneData:GetDummyPoint(3, "JohnDoe07Home").pos,
HomeDir = sceneData:GetDummyPoint(3, "JohnDoe07Home").rot,
Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos01").pos,
Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos02").pos,
Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos03").pos,
Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos04").pos,
Pos05Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos05").pos,
Pos06Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos06").pos,
Pos07Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos07").pos,
Pos08Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos08").pos,
Pos09Pos = sceneData:GetDummyPoint(3, "JohnDoe07Pos09").pos,
}
function JohnDoe07:Start()
--print("start!JohnDoe07")
self:StartDaily()
end
function JohnDoe07:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe07:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe07:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe07:StartDaily()
--print("JohnDoe07 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe07:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe07:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe07Data.BornDir))
self:PerformDither(true, 2, self.GoPatrol)
end
function JohnDoe07:GoPatrol()
if self.pointID == 10 then
self.pointID = 1
end
self:GoPatrolRoute()
end
function JohnDoe07:GoPatrolRoute()
if self.pointID == 1 then
self:WalkToTask(JohnDoe07Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe07Data.Pos02Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(JohnDoe07Data.Pos03Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(JohnDoe07Data.Pos04Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 5 then
self:WalkToTask(JohnDoe07Data.Pos05Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 6 then
self:WalkToTask(JohnDoe07Data.Pos06Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 7 then
self:WalkToTask(JohnDoe07Data.Pos07Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 8 then
self:WalkToTask(JohnDoe07Data.Pos08Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 9 then
self:WalkToTask(JohnDoe07Data.Pos09Pos, self.SelfPointUpdate, self.Standby)
end
end
function JohnDoe07:SelfPointUpdate()
self.pointID = self.pointID + 1
self:GoPatrol()
end
function JohnDoe07:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
self:GoHome()
end
function JohnDoe07:GoHome()
if self.pointID == 1 then
self:TurnTo(M.Euler2DirXZ(JohnDoe07Data.HomeDir))
self:PerformDither(false, 2, self.HideSelf)
else
self:GoHomeRoute()
end
end
function JohnDoe07:GoHomeRoute()
if self.pointID > 1 then
self.pointID = 1
self:WalkToTask(JohnDoe07Data.HomePos, self.GoHome, self.Standby)
end
end
function JohnDoe07:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe07

View File

@@ -0,0 +1,147 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local JohnDoe08 = class("JohnDoe08", NpcActorProxy)
JohnDoe08.defaultAlias = "JohnDoe08"
JohnDoe08.pointID = 1
JohnDoe08.currWeather = WeatherType.ClearSky
local JohnDoe08Data =
{
BornPos = sceneData:GetDummyPoint(3, "JohnDoe08Born").pos,
BornDir = sceneData:GetDummyPoint(3, "JohnDoe08Born").rot,
HomePos = sceneData:GetDummyPoint(3, "JohnDoe08Home").pos,
HomeDir = sceneData:GetDummyPoint(3, "JohnDoe08Home").rot,
Pos01Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos01").pos,
Pos02Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos02").pos,
Pos03Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos03").pos,
Pos04Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos04").pos,
Pos05Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos05").pos,
Pos06Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos06").pos,
Pos07Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos07").pos,
Pos08Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos08").pos,
Pos09Pos = sceneData:GetDummyPoint(3, "JohnDoe08Pos09").pos,
}
function JohnDoe08:Start()
--print("start!JohnDoe08")
self:StartDaily()
end
function JohnDoe08:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function JohnDoe08:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function JohnDoe08:InvokeOnResetFreeStyle(freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 or freeStyleType == 142 then
self:StartDaily()
end
end
function JohnDoe08:StartDaily()
--print("JohnDoe08 StartDaily")
self:CallOnCollisionEnter(self.OnCollisionEnter)
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function JohnDoe08:OnCollisionEnter(targetInfo)
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
self:DoFreeStyleTask(42, true, self.StartDaily)
else
self:DoFreeStyleTask(71, true, self.StartDaily)
end
end
end
function JohnDoe08:StartDay()
self:ClearFollowTask()
self:ShowSelf()
self:TurnTo(M.Euler2DirXZ(JohnDoe08Data.BornDir))
self:PerformDither(true, 2, self.GoPatrol)
end
function JohnDoe08:GoPatrol()
if self.pointID == 10 then
self.pointID = 1
end
self:GoPatrolRoute()
end
function JohnDoe08:GoPatrolRoute()
if self.pointID == 1 then
self:WalkToTask(JohnDoe08Data.Pos01Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(JohnDoe08Data.Pos02Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(JohnDoe08Data.Pos03Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(JohnDoe08Data.Pos04Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 5 then
self:WalkToTask(JohnDoe08Data.Pos05Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 6 then
self:WalkToTask(JohnDoe08Data.Pos06Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 7 then
self:WalkToTask(JohnDoe08Data.Pos07Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 8 then
self:WalkToTask(JohnDoe08Data.Pos08Pos, self.SelfPointUpdate, self.Standby)
elseif self.pointID == 9 then
self:WalkToTask(JohnDoe08Data.Pos09Pos, self.SelfPointUpdate, self.Standby)
end
end
function JohnDoe08:SelfPointUpdate()
self.pointID = self.pointID + 1
self:GoPatrol()
end
function JohnDoe08:StartNight()
self:ClearFollowTask()
self:DoFreeStateTrigger()
self:GoHome()
end
function JohnDoe08:GoHome()
if self.pointID == 1 then
self:TurnTo(M.Euler2DirXZ(JohnDoe08Data.HomeDir))
self:PerformDither(false, 2, self.HideSelf)
else
self:GoHomeRoute()
end
end
function JohnDoe08:GoHomeRoute()
if self.pointID > 1 then
self.pointID = 1
self:WalkToTask(JohnDoe08Data.HomePos, self.GoHome, self.Standby)
end
end
function JohnDoe08:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:ClearOnCollisionEnter(self.OnCollisionEnter)
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return JohnDoe08

View File

@@ -0,0 +1,81 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local MengdeSample01 = class("MengdeSample01", NpcActorProxy)
MengdeSample01.defaultAlias = "MengdeSample01"
MengdeSample01.currWeather = WeatherType.ClearSky
function MengdeSample01:Start()
self:StartDaily()
end
function MengdeSample01:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function MengdeSample01:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeSample01:StartDaily()
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
self:ShowBubble()
end
function MengdeSample01:StartNight()
self:ShowSelf()
self:PerformDither(true, 2, self.Play)
end
function MengdeSample01:ShowBubble()
self:TriggerNpcSpeechBubble(915, 4016412)
self:BubbleTime()
end
function MengdeSample01:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeSample01:CloseBubble()
self:ClearNpcSpeechBubble(915)
self:BubbleGap()
end
function MengdeSample01:BubbleGap()
self:CallDelay(5, self.ShowBubble)
end
function MengdeSample01:StartDay()
self:PerformDither(false, 2, self.Home)
end
function MengdeSample01:Play()
self:ShowSelf()
end
function MengdeSample01:Home()
self:HideSelf()
end
function MengdeSample01:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return MengdeSample01

View File

@@ -0,0 +1,78 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local MengdeSample02 = class("MengdeSample02", NpcActorProxy)
MengdeSample02.defaultAlias = "MengdeSample02"
MengdeSample02.currWeather = WeatherType.ClearSky
function MengdeSample02:Start()
self:StartDaily()
end
function MengdeSample02:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function MengdeSample02:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeSample02:StartDaily()
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function MengdeSample02:StartDay()
self:ShowSelf()
self:PerformDither(true, 2, self.Play)
end
function MengdeSample02:ShowBubble()
self:TriggerNpcSpeechBubble(916, 4016510)
self:BubbleTime()
end
function MengdeSample02:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeSample02:CloseBubble()
self:ClearNpcSpeechBubble(916)
self:NotifyTo("MengdeSample04", 4016509)
end
function MengdeSample02:StartNight()
self:PerformDither(false, 2, self.Home)
end
function MengdeSample02:Play()
self:ShowSelf()
end
function MengdeSample02:Home()
self:HideSelf()
end
function MengdeSample02:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
elseif evt.evtType == 4016510 then
self:ShowBubble()
end
end
return MengdeSample02

View File

@@ -0,0 +1,62 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local MengdeSample03 = class("MengdeSample03", NpcActorProxy)
MengdeSample03.defaultAlias = "MengdeSample03"
MengdeSample03.currWeather = WeatherType.ClearSky
function MengdeSample03:Start()
self:StartDaily()
end
function MengdeSample03:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function MengdeSample03:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeSample03:StartDaily()
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function MengdeSample03:StartDay()
self:ShowSelf()
self:PerformDither(true, 2, self.Play)
end
function MengdeSample03:StartNight()
self:PerformDither(false, 2, self.Home)
end
function MengdeSample03:Play()
self:ShowSelf()
end
function MengdeSample03:Home()
self:HideSelf()
end
function MengdeSample03:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return MengdeSample03

View File

@@ -0,0 +1,80 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local MengdeSample04 = class("MengdeSample04", NpcActorProxy)
MengdeSample04.defaultAlias = "MengdeSample04"
MengdeSample04.currWeather = WeatherType.ClearSky
function MengdeSample04:Start()
self:StartDaily()
self:RegisterActorEvent(self.OnEvent)
end
function MengdeSample04:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function MengdeSample04:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeSample04:StartDaily()
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
self:ShowBubble()
end
function MengdeSample04:StartDay()
self:ShowSelf()
self:PerformDither(true, 2, self.Play)
end
function MengdeSample04:ShowBubble()
self:TriggerNpcSpeechBubble(918, 4016509)
self:BubbleTime()
end
function MengdeSample04:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeSample04:CloseBubble()
self:ClearNpcSpeechBubble(918)
self:NotifyTo("MengdeSample02", 4016510)
end
function MengdeSample04:StartNight()
self:PerformDither(false, 2, self.Home)
end
function MengdeSample04:Play()
self:ShowSelf()
end
function MengdeSample04:Home()
self:HideSelf()
end
function MengdeSample04:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
elseif evt.evtType == 4016509 then
self:ShowBubble()
end
end
return MengdeSample04

View File

@@ -0,0 +1,64 @@
require('Actor/ActorCommon')
local NpcActorProxy = require('Actor/Npc/NpcActorProxy')
local MengdeSample05 = class("MengdeSample05", NpcActorProxy)
MengdeSample05.defaultAlias = "MengdeSample05"
MengdeSample05.currWeather = WeatherType.ClearSky
function MengdeSample05:Start()
self:HideSelf()
self:SitOnChair()
self:CallDelay(3, self.StartDaily)
end
function MengdeSample05:DoAppear()
self:ShowSelf()
self:PerformDither(true, 2)
end
function MengdeSample05:DoDisappear()
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeSample05:StartDaily()
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterActorEvent(self.OnEvent)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function MengdeSample05:StartNight()
self:ShowSelf()
self:PerformDither(true, 2, self.Play)
end
function MengdeSample05:StartDay()
self:PerformDither(false, 2, self.Home)
end
function MengdeSample05:Play()
end
function MengdeSample05:Home()
self:HideSelf()
end
function MengdeSample05:OnEvent(evt)
if evt.evtType == 35701 then
self:ClearAllTask()
self:UnregisterSelfDayTime(self.StartDay)
self:UnregisterSelfHour(self.HourBehave)
self:UnregisterSelfNightTime(self.StartNight)
self:UnregisterActorEvent(self.OnEvent)
self:HideSelf()
elseif evt.evtType == 35702 then
self:StartDaily()
end
end
return MengdeSample05

View File

@@ -0,0 +1,17 @@
local EventType = {}
EventType.DailyNpcEventType =
{
--@region EventType List
--恢复日常巡逻模式
STARTDAILY = 0,
--隐藏自身
HIDESELF = 1,
--屏蔽日常行为
BANDAILY = 2,
--@endregion
}
return EventType

View File

@@ -0,0 +1,105 @@
----------------------
-- 这是Lua端NpcActor的基类包含了控制Npc行为的方法。继承自EntityActorProxy
-- @classmod NpcActorProxy
require('Actor/ActorCommon')
local entityActorProxy = require('Actor/EntityActorProxy')
local NpcActorProxy = class("NpcActorProxy", entityActorProxy)
NpcActorProxy.actorType = ActorType.NPC_ACTOR
local super = nil
function NpcActorProxy:OnPreInit()
super = self.__super
super:OnPreInit()
end
-- local param begin
-- local param end
function NpcActorProxy:CreateNpcUActor(alias)
local uActor = actorUtils.CreateActor(self, ActorType.NPC_ACTOR, alias, self.metaPath)
if self.bornPos == nil then
self.bornPos = M.Pos(0,0,0)
end
if self.bornDir == nil then
self.bornDir = M.Pos(0,0,0)
end
uActor = actorUtils.CreateNpcActor(self.configID, self.bornPos, self.bornDir, uActor, self.bornSceneID, self.bornRoomID)
return uActor
end
function NpcActorProxy:CreateUActor(alias)
return self:CreateNpcUActor(alias)
end
--- NpcActor内部交互行为方法
-- @section interaction
--- NpcActor添加交互行为会截断内置的行为
-- @tparam InterTimingType timingType 交互时机
-- @tparam table interCfg 交互配置表
function NpcActorProxy:AddPriorityInter(timingType, interCfg)
self.uActor:AddPriorityInter(timingType, interCfg)
end
--- NpcActor清除交互行为根据时机
-- @tparam InterTimingType timingType 交互时机
function NpcActorProxy:ClearPriorityInter(timingType)
self.uActor:ClearPriorityInter(timingType)
end
--- NpcActor检查是否有对话项
function NpcActorProxy:CheckNpcTalk()
self.uActor:CheckNpcTalk()
end
--- NpcActor注册碰撞回调
function NpcActorProxy:CallOnCollisionEnter(onCollision)
self.uActor:CallOnCollisionEnter(onCollision)
end
function NpcActorProxy:ClearOnCollisionEnter(onCollision)
self.uActor:ClearOnCollisionEnter(onCollision)
end
--- NpcActor临时关闭打开控头
-- @tparam bool value flase是关true是开
function NpcActorProxy:EnableHeadCtrl(value)
self.uActor:EnableHeadCtrl(value)
end
function NpcActorProxy:OnDestroy()
end
function NpcActorProxy:Destroy(isActorOnly)
self:OnDestroy()
self:ClearCoroutine()
if self.uActor ~= nil then
self.uActor:Destroy(isActorOnly)
end
actorMgr:ClearActor(self.alias)
self.uActor = nil
self.actorData = nil
end
function NpcActorProxy:ClearActor()
self.uActor:ClearActor()
self.targetPos = nil
self.routePoints = nil
self.BeFollowLen = 10
self.BeFollowFailedLen = 20
self.BeFollowState = BeFollowState.ING
self.BeFollowFailed = nil
self.CurrDialogList = nil
self.CurrDialogIndex = 1
self.CurrDuration = 0
self.CurrDurationCnt = 0
self.NarratorPauseLen = 10
self.NarratorResumeLen = 5
self.NarratorState = NarratorState.ING
end
return NpcActorProxy

View File

@@ -0,0 +1,64 @@
local DailyNpcCommon={}
local NpcEventType = require('Actor/Npc/NPCEventType')
local NpcModeType = require('Actor/Npc/NpcMode/NpcModeType')
local NpcEventType = NpcEventType.DailyNpcEventType
DailyNpcCommon.Register= function(actor)
actor:RegisterMode(NpcModeType.MODE_HIDE)
actor:RegisterMode(NpcModeType.MODE_BANDAILY)
end
DailyNpcCommon.InvokeOnResetFreeStyle= function(actor,freeStyleType)
if freeStyleType == 361 or freeStyleType == 141 then
actor:RecoverFromFreeStyle()
end
end
DailyNpcCommon.OnEvent= function(evt,actor)
if evt.evtType == NpcEventType.STARTDAILY then
actor:StartDaily()
elseif evt.evtType == NpcEventType.HIDESELF then
actor:SwitchMode(NpcModeType.MODE_HIDE)
elseif evt.evtType == NpcEventType.BANDAILY then
actor:SwitchMode(NpcModeType.MODE_BANDAILY)
end
end
DailyNpcCommon.OnCollisionEnter= function(targetInfo,actor)
if actor.OnAction==1 then
return
end
if targetInfo.isSprint or targetInfo.isRun then
if targetInfo.isFromBack then
--actor:AddPriorityInter(InterTimingType.BTN, NoReplyInter)
actor.OnAction=1
local avatarPos = actorUtils.GetAvatarPos()
local selfPos = actor:GetPos()
local TurnDir = { x = selfPos.x-avatarPos.x, y = selfPos.y,-avatarPos.y, z = selfPos.z-avatarPos.z}
actor:Standby()
actor:TurnTo(TurnDir)
actor:DoFreeStyleTask(9010, true, actor.RecoverFromCollisionEnter)
--[[actor:CallDelay(0,
function(actor)
actor:DoFreeStyleTask(9010, true, actor.RecoverFromCollisionEnter)
end)]]--
else
actor.OnAction=1
local avatarPos = actorUtils.GetAvatarPos()
local selfPos = actor:GetPos()
local TurnDir = { x = avatarPos.x-selfPos.x, y = avatarPos.y-selfPos.y, z = avatarPos.z-selfPos.z}
actor:Standby()
actor:TurnTo(TurnDir)
--[[actor:CallDelay(0,
afunction(actor)
actor:DoFreeStyleTask(9020, true, actor.RecoverFromCollisionEnter)
end)]]--
actor:DoFreeStyleTask(9020, true,actor.RecoverFromCollisionEnter)
end
end
end
return DailyNpcCommon

View File

@@ -0,0 +1,169 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeDayPatrol = class("MengdeDayPatrol", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeDayPatrol.defaultAlias = "MengdeDayPatrol"
MengdeDayPatrol.pointID = 1
local Config = require('Actor/Npc/Config/CfgMengdeDayPatrol')
local DummyPointData = Config.DummyPointData
function MengdeDayPatrol:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeDayPatrol:Register()
DailyNpcCommon.Register(self)
end
function MengdeDayPatrol:RecoverFromFreeStyle()
print("RecoverFromFreeStyle")
self:Recover()
end
function MengdeDayPatrol:RecoverFromCollisionEnter()
print("RecoverFromCollisionEnter")
self:Recover()
end
function MengdeDayPatrol:Recover()
self.OnAction=0
self:GoPatrol1()
end
function MengdeDayPatrol:InvokeOnResetFreeStyle(freeStyleType)
DailyNpcCommon.InvokeOnResetFreeStyle(self,freeStyleType)
end
function MengdeDayPatrol:OnCollisionEnter(targetInfo)
DailyNpcCommon.OnCollisionEnter(targetInfo,self)
end
function MengdeDayPatrol:DataInit()
self.Data=DummyPointData.PosData[self.dataIndex]
self.Count=#DummyPointData.PosData[self.dataIndex]
self.Time=DummyPointData.TimeData[self.dataIndex]
self.Dir=DummyPointData.DirData[self.dataIndex]
self.pointID=math.random(1,self.Count)
end
function MengdeDayPatrol:StartDay()
--print("start day"..tostring(self.dataIndex))
self:ShowSelf()
self:PerformDither(true, 2)
--self:GoPatrol()
--self:CallDelay(2,self.GoPatrol1)
self:GoPatrol1()
self:StartBubble()
end
function MengdeDayPatrol:Start()
--print("start!!!!!!!!!!!!!!!!!!!!!"..tostring(self.dataIndex))
self:DataInit()
self:SetPos(self.Data[self.pointID],true)
--self:CallDelay(5,self.StartDaily)
self:StartDaily()
end
function MengdeDayPatrol:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeDayPatrol:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeDayPatrol:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeDayPatrol:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeDayPatrol:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeDayPatrol:GoPatrol1()
if self.pointID == self.Count+1 then
self.pointID = 1
end
--self:CallDelay(math.random(10,20), self.GoPatrolRoute1)
self:GoPatrolRoute1()
end
function MengdeDayPatrol:GoPatrolRoute1()
--print("npc"..tostring(self.dataIndex).."walkto"..tostring(self.pointID))
self:WalkToTask(self.Data[self.pointID], self.SelfPointUpdate1, self.Standby)
end
function MengdeDayPatrol:SelfPointUpdate1()
local time=self.Time[self.pointID]
local dir=self.Dir[self.pointID]
self.pointID = self.pointID + 1
if time==0 then
self:GoPatrol1()
else
self:Standby()
--self:TurnTo(M.Euler2DirXZ(dir))
self:SteerToTask(M.Euler2DirXZ(dir),1,true,true)
self:CallDelay(time, self.GoPatrol1)
end
end
function MengdeDayPatrol:GoPatrol()
if self.pointID == 7 then
self.pointID = 1
end
self:GoPatrolRoute()
end
function MengdeDayPatrol:GoPatrolRoute()
if self.pointID == 1 then
self:WalkToTask(DummyPointData.Pos01Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(DummyPointData.Pos02Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(DummyPointData.Pos03Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(DummyPointData.Pos04Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 5 then
self:WalkToTask(DummyPointData.Pos05Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 6 then
self:WalkToTask(DummyPointData.Pos06Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
end
end
function MengdeDayPatrol:SelfPointUpdate()
self.pointID = self.pointID + 1
self:GoPatrol()
end
function MengdeDayPatrol:StartNight()
self:Standby()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeDayPatrol:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeDayPatrol

View File

@@ -0,0 +1,68 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeDaySit = class("MengdeDaySit", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeDaySit.defaultAlias = "MengdeDaySit"
local Config = require('Actor/Npc/Config/CfgMengdeDaySit')
local DummyPointData = Config.DummyPointData
function MengdeDaySit:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeDaySit:Register()
DailyNpcCommon.Register(self)
end
function MengdeDaySit:StartDay()
self:SitOnChair()
self:CallDelay(4, self.AfterSit)
end
function MengdeDaySit:AfterSit()
self:DoFreeStateTrigger()
self:ShowSelf()
self:PerformDither(true, 2)
self:StartBubble()
end
function MengdeDaySit:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeDaySit:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeDaySit:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeDaySit:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeDaySit:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeDaySit:StartNight()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeDaySit:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeDaySit

View File

@@ -0,0 +1,112 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeDayStand = class("MengdeDayStand", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeDayStand.defaultAlias = "MengdeDayStand"
local Config = require('Actor/Npc/Config/CfgMengdeDayStand')
local DummyPointData = Config.DummyPointData
function MengdeDayStand:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeDayStand:Register()
DailyNpcCommon.Register(self)
end
function MengdeDayStand:InvokeOnResetFreeStyle(freeStyleType)
DailyNpcCommon.InvokeOnResetFreeStyle(self,freeStyleType)
end
function MengdeDayStand:OnCollisionEnter(targetInfo)
DailyNpcCommon.OnCollisionEnter(targetInfo,self)
end
function MengdeDayStand:WalkBack()
print("walkback")
self:WalkToTask(DummyPointData.BornPos[self.dataIndex],self.Recover)
--self:StartDay()
end
function MengdeDayStand:RecoverFromFreeStyle()
print("RecoverFromFreeStyle")
self:Recover()
end
function MengdeDayStand:RecoverFromCollisionEnter()
print("RecoverFromCollisionEnter")
--self:ClearAllTask()
self:Recover()
--self:CallDelay(0.5,self.WalkBack)
end
function MengdeDayStand:Recover()
self.OnAction=0
self:Standby()
--self:TurnTo(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]))
self:SteerToTask(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]),1,true,true)
self:DoFreeStateTrigger()
end
function MengdeDayStand:StartDay()
self:Standby()
self:TurnTo(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]))
self:DoFreeStateTrigger()
self:ShowSelf()
self:PerformDither(true, 2)
self:StartBubble()
end
function MengdeDayStand:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeDayStand:StartBubble()
--print("startbubble")
--if self.bubble~=1 then
--print("startbubble1")
self:ShowBubble()
--self.bubble=1
--end
end
function MengdeDayStand:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeDayStand:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeDayStand:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeDayStand:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeDayStand:StartNight()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeDayStand:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeDayStand

View File

@@ -0,0 +1,163 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeInsomniaPatrol = class("MengdeInsomniaPatrol", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeInsomniaPatrol.defaultAlias = "MengdeInsomniaPatrol"
MengdeInsomniaPatrol.pointID = 1
local Config = require('Actor/Npc/Config/CfgMengdeInsomniaPatrol')
local DummyPointData = Config.DummyPointData
function MengdeInsomniaPatrol:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeInsomniaPatrol:Register()
DailyNpcCommon.Register(self)
end
function MengdeInsomniaPatrol:RecoverFromFreeStyle()
print("RecoverFromFreeStyle")
self:Recover()
end
function MengdeInsomniaPatrol:RecoverFromCollisionEnter()
print("RecoverFromCollisionEnter")
self:Recover()
end
function MengdeInsomniaPatrol:Recover()
self.OnAction=0
self:GoPatrol1()
end
function MengdeInsomniaPatrol:InvokeOnResetFreeStyle(freeStyleType)
DailyNpcCommon.InvokeOnResetFreeStyle(self,freeStyleType)
end
function MengdeInsomniaPatrol:OnCollisionEnter(targetInfo)
DailyNpcCommon.OnCollisionEnter(targetInfo,self)
end
function MengdeInsomniaPatrol:DataInit()
self.Data=DummyPointData.PosData[self.dataIndex]
self.Count=#DummyPointData.PosData[self.dataIndex]
self.Time=DummyPointData.TimeData[self.dataIndex]
self.Dir=DummyPointData.DirData[self.dataIndex]
self.pointID=math.random(1,self.Count)
end
function MengdeInsomniaPatrol:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeInsomniaPatrol:StartDay()
print("start day"..tostring(self.dataIndex))
self:ShowSelf()
self:PerformDither(true, 2)
--self:GoPatrol()
--self:CallDelay(2,self.GoPatrol1)
self:GoPatrol1()
self:StartBubble()
end
function MengdeInsomniaPatrol:Start()
print("start!!!!!!!!!!!!!!!!!!!!!"..tostring(self.dataIndex))
self:DataInit()
self:SetPos(self.Data[self.pointID],true)
--self:CallDelay(5,self.StartDaily)
self:StartDaily()
end
function MengdeInsomniaPatrol:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeInsomniaPatrol:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeInsomniaPatrol:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeInsomniaPatrol:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeInsomniaPatrol:GoPatrol1()
if self.pointID == self.Count+1 then
self.pointID = 1
end
--self:CallDelay(math.random(10,20), self.GoPatrolRoute1)
self:GoPatrolRoute1()
end
function MengdeInsomniaPatrol:GoPatrolRoute1()
print("npc"..tostring(self.dataIndex).."walkto"..tostring(self.pointID))
self:WalkToTask(self.Data[self.pointID], self.SelfPointUpdate1, self.Standby)
end
function MengdeInsomniaPatrol:SelfPointUpdate1()
local time=self.Time[self.pointID]
local dir=self.Dir[self.pointID]
self.pointID = self.pointID + 1
if time==0 then
self:GoPatrol1()
else
self:Standby()
--self:TurnTo(M.Euler2DirXZ(dir))
self:SteerToTask(M.Euler2DirXZ(dir),1,true,true)
self:CallDelay(time, self.GoPatrol1)
end
end
function MengdeInsomniaPatrol:GoPatrol()
if self.pointID == 7 then
self.pointID = 1
end
self:GoPatrolRoute()
end
function MengdeInsomniaPatrol:GoPatrolRoute()
if self.pointID == 1 then
self:WalkToTask(DummyPointData.Pos01Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 2 then
self:WalkToTask(DummyPointData.Pos02Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 3 then
self:WalkToTask(DummyPointData.Pos03Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 4 then
self:WalkToTask(DummyPointData.Pos04Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 5 then
self:WalkToTask(DummyPointData.Pos05Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
elseif self.pointID == 6 then
self:WalkToTask(DummyPointData.Pos06Pos[self.dataIndex], self.SelfPointUpdate, self.Standby)
end
end
function MengdeInsomniaPatrol:SelfPointUpdate()
self.pointID = self.pointID + 1
self:GoPatrol()
end
function MengdeInsomniaPatrol:StartNight()
self:StartDay()
end
function MengdeInsomniaPatrol:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeInsomniaPatrol

View File

@@ -0,0 +1,105 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeInsomniaStand = class("MengdeInsomniaStand", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeInsomniaStand.defaultAlias = "MengdeInsomniaStand"
local Config = require('Actor/Npc/Config/CfgMengdeInsomniaStand')
local DummyPointData = Config.DummyPointData
BubbleCtrl_NpcMengdeInsomniaStand = DummyPointData.BubbleCtrl
function MengdeInsomniaStand:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeInsomniaStand:Register()
DailyNpcCommon.Register(self)
end
function MengdeInsomniaStand:InvokeOnResetFreeStyle(freeStyleType)
DailyNpcCommon.InvokeOnResetFreeStyle(self,freeStyleType)
end
function MengdeInsomniaStand:OnCollisionEnter(targetInfo)
DailyNpcCommon.OnCollisionEnter(targetInfo,self)
end
function MengdeInsomniaStand:WalkBack()
print("walkback")
self:WalkToTask(DummyPointData.BornPos[self.dataIndex],self.Recover)
--self:StartDay()
end
function MengdeInsomniaStand:RecoverFromFreeStyle()
print("RecoverFromFreeStyle")
self:Recover()
end
function MengdeInsomniaStand:RecoverFromCollisionEnter()
print("RecoverFromCollisionEnter")
--self:ClearAllTask()
self:Recover()
--self:CallDelay(0.5,self.WalkBack)
end
function MengdeInsomniaStand:Recover()
self.OnAction=0
self:Standby()
self:SteerToTask(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]),1,true,true)
--self:TurnTo(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]))
self:DoFreeStateTrigger()
end
function MengdeInsomniaStand:StartDay()
self:Standby()
self:TurnTo(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]))
self:DoFreeStateTrigger()
self:ShowSelf()
self:PerformDither(true, 2)
self:StartBubble()
end
function MengdeInsomniaStand:StartBubble()
--print("start bubble")
if self.bubble~=1 then
--print("bubble!=1")
self:ShowBubble()
self.bubble=1
end
end
function MengdeInsomniaStand:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
if BubbleCtrl_NpcMengdeInsomniaStand[self.dataIndex] ~= -1 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
end
self:BubbleTime()
end
end
function MengdeInsomniaStand:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeInsomniaStand:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeInsomniaStand:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeInsomniaStand:StartNight()
self:StartDay()
end
function MengdeInsomniaStand:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeInsomniaStand

View File

@@ -0,0 +1,110 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeNightConfuse = class("MengdeNightConfuse", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeNightConfuse.defaultAlias = "MengdeNightConfuse"
MengdeNightConfuse.pointID = 1
MengdeNightConfuse.nightConfuseTargetPos = nil
local Config = require('Actor/Npc/Config/CfgMengdeNightConfuse')
local DummyPointData = Config.DummyPointData
function MengdeNightConfuse:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeNightConfuse:Register()
DailyNpcCommon.Register(self)
end
function MengdeNightConfuse:RecoverFromFreeStyle()
print("RecoverFromFreeStyle")
self:Recover()
end
function MengdeNightConfuse:RecoverFromCollisionEnter()
print("RecoverFromCollisionEnter")
self:Recover()
end
function MengdeNightConfuse:Recover()
self:RandomStand()
end
function MengdeNightConfuse:InvokeOnResetFreeStyle(freeStyleType)
DailyNpcCommon.InvokeOnResetFreeStyle(self,freeStyleType)
end
function MengdeNightConfuse:OnCollisionEnter(targetInfo)
DailyNpcCommon.OnCollisionEnter(targetInfo,self)
end
function MengdeNightConfuse:StartDay()
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeNightConfuse:StartNight()
self:ShowSelf()
self:PerformDither(true, 2)
self:RandomStand()
self:StartBubble()
end
function MengdeNightConfuse:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeNightConfuse:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeNightConfuse:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeNightConfuse:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeNightConfuse:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeNightConfuse:RandomStand()
self:ChooseRandomPos()
self:WalkToTask(self.nightConfuseTargetPos, self.NextMove, self.Standby)
end
function MengdeNightConfuse:ChooseRandomPos()
self.pointID = math.random(1,4)
if self.pointID == 1 then
self.nightConfuseTargetPos = DummyPointData.Pos01Pos[self.dataIndex]
elseif self.pointID == 2 then
self.nightConfuseTargetPos = DummyPointData.Pos02Pos[self.dataIndex]
elseif self.pointID == 3 then
self.nightConfuseTargetPos = DummyPointData.Pos03Pos[self.dataIndex]
elseif self.pointID == 4 then
self.nightConfuseTargetPos = DummyPointData.Pos04Pos[self.dataIndex]
end
end
function MengdeNightConfuse:NextMove()
self:CallDelay(math.random(3,10), self.RandomStand)
end
function MengdeNightConfuse:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeNightConfuse

View File

@@ -0,0 +1,68 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeNightSit = class("MengdeNightSit", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeNightSit.defaultAlias = "MengdeNightSit"
local Config = require('Actor/Npc/Config/CfgMengdeNightSit')
local DummyPointData = Config.DummyPointData
function MengdeNightSit:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeNightSit:Register()
DailyNpcCommon.Register(self)
end
function MengdeNightSit:StartNight()
self:SitOnChair()
self:CallDelay(4, self.AfterSit)
end
function MengdeNightSit:AfterSit()
self:DoFreeStateTrigger()
self:ShowSelf()
self:PerformDither(true, 2)
self:StartBubble()
end
function MengdeNightSit:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeNightSit:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeNightSit:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeNightSit:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeNightSit:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeNightSit:StartDay()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeNightSit:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeNightSit

View File

@@ -0,0 +1,100 @@
require('Actor/ActorCommon')
local BaseDailyNpc = require('Actor/Npc/BaseDailyNpc')
local MengdeNightStand = class("MengdeNightStand", BaseDailyNpc)
local DailyNpcCommon = require('Actor/Npc/NpcDailyCommon')
local NpcEventType = require('Actor/Npc/NPCEventType')
MengdeNightStand.defaultAlias = "MengdeNightStand"
local Config = require('Actor/Npc/Config/CfgMengdeNightStand')
local DummyPointData = Config.DummyPointData
function MengdeNightStand:PreGetAlias()
local NpcAlias = DummyPointData.Npc .. '_' .. tostring(self.dataIndex)
return NpcAlias
end
function MengdeNightStand:Register()
DailyNpcCommon.Register(self)
end
function MengdeNightStand:InvokeOnResetFreeStyle(freeStyleType)
DailyNpcCommon.InvokeOnResetFreeStyle(self,freeStyleType)
end
function MengdeNightStand:OnCollisionEnter(targetInfo)
DailyNpcCommon.OnCollisionEnter(targetInfo,self)
end
function MengdeNightStand:WalkBack()
print("walkback")
self:WalkToTask(DummyPointData.BornPos[self.dataIndex],self.Recover)
--self:StartDay()
end
function MengdeNightStand:RecoverFromFreeStyle()
print("RecoverFromFreeStyle")
self:Recover()
end
function MengdeNightStand:RecoverFromCollisionEnter()
print("RecoverFromCollisionEnter")
self:ClearAllTask()
self:Recover()
--self:CallDelay(0.5,self.WalkBack)
end
function MengdeNightStand:Recover()
self.OnAction=0
self:Standby()
--self:TurnTo(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]))
self:SteerToTask(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]),1,true,true)
self:DoFreeStateTrigger()
end
function MengdeNightStand:StartDay()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:PerformDither(false, 2, self.HideSelf)
end
function MengdeNightStand:StartNight()
self:Standby()
self:TurnTo(M.Euler2DirXZ(DummyPointData.BornDir[self.dataIndex]))
self:DoFreeStateTrigger()
self:ShowSelf()
self:PerformDither(true, 2)
self:StartBubble()
end
function MengdeNightStand:StartBubble()
if self.bubble~=1 then
self:ShowBubble()
self.bubble=1
end
end
function MengdeNightStand:ShowBubble()
if DummyPointData.DialogID[self.dataIndex] ~= 0 then
self:TriggerNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex], DummyPointData.DialogID[self.dataIndex])
self:BubbleTime()
end
end
function MengdeNightStand:BubbleTime()
self:CallDelay(5, self.CloseBubble)
end
function MengdeNightStand:CloseBubble()
self:ClearNpcSpeechBubble(DummyPointData.NpcID[self.dataIndex])
self:BubbleGap()
end
function MengdeNightStand:BubbleGap()
self:CallDelay(math.random(7,8), self.ShowBubble)
end
function MengdeNightStand:OnEvent(evt)
DailyNpcCommon.OnEvent(evt,self)
end
return MengdeNightStand

View File

@@ -0,0 +1,26 @@
local NpcModeType =
{
--@region ModeType List
--隐藏自身
MODE_HIDE = 1,
MODE_BANDAILY = 2,
--@endregion
}
NpcModeType.ModeScript =
{
'Actor/Npc/NpcMode/NpcMode_MengdeHide',
'Actor/Npc/NpcMode/NpcMode_BanDaily',
}
function NpcModeType:GetMode(modeType)
local modeScript = self.ModeScript[modeType]
if modeScript ~= nil then
local mode = require(modeScript)
return mode
end
return nil
end
return NpcModeType

View File

@@ -0,0 +1,27 @@
local BaseMode = require('Actor/BaseActorMode')
local NpcEventType = require('Actor/Npc/NPCEventType')
local NpcMode_Hide = class("NpcMode_MengdeHide", BaseMode)
--@region Default
NpcMode_Hide.DefaultAction = function(self)
self:RegisterActorEvent(self.OnEvent)
self:StartDay()
end
--@endregion
NpcMode_Hide.OnEvent=function(actor,evt)
if evt.evtType == NpcEventType.STARTDAILY then
print("NpcMode_Hide STARTDAILY")
actor:StartDaily()
end
end
--@region PatrolInsomnia
NpcMode_Hide["MengdeDayPatrol_1"] = function(self)
self:RegisterActorEvent(self.OnEvent)
end
return NpcMode_Hide

Some files were not shown because too many files have changed in this diff Show More