EventConfig = EventConfig or {} --- Action Tick的频率 EventConfig.TickFrequency = 24. EventEnum = { --- DefaultEvent DSStartUp = 1001, -- 服务器启动 PlayerLogin = 1003, -- 玩家加入房间 PlayerKey PlayerExit = 1004, -- 玩家离开房间 PlayerKey --- GameState GameStateChange = 2001, -- 游戏模式改变 CustomEnum.EGameState WaitPlayerJoin = 2002, -- 等待玩家加入 GamePlay = 2003, -- 游戏开始 GameEnd = 2004, -- 游戏结束 RoundBegining = 2005, -- 回合开始 RoundEnd = 2006, -- 回合结束 RoundReadyFinish = 2007, -- 回合准备阶段结束 --- PlayerEvent PlayerDeathInfo = 3001, -- 死亡信息 VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue, Assister uint, uint, int, int, bool, float, float, uint PlayerInjuryInfo = 3002, -- 受伤信息 VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue uint, uint, int, int, bool, float, float PlayerPossessed = 3003, -- 玩家受控 PlayerKey PlayerBeginPlay = 3004, -- 玩家受控 PlayerPawn AchievementPlayerKill = 10005, -- 成就事件玩家击杀 KillerPlayerKey, DeadPlayerKey, WeaponID, AchievementSettlement = 10006, -- 成就事件游戏结算 TrophyOwnerExit = 10007, -- 奖杯拥有者掉线 Broadcast = 20001, -- 广播UI信息 BroadcastType, BroadcastTable, BroadcastPos UpdatePlayerScoreData = 20002, -- 玩家得分信息更新 通过UGCGameSystem.GameState.PlayerScoreDatas 获取玩家得分信息 SelectWeaponCallBack = 20004, -- 武器选择回调 SelectSucceed AddTip = 20005, -- 添加提提示 TipStr TipType ClickSelectWeapon = 20006, -- 点击选择武器信息 EWeaponSelect, InfoID UpdateTeamPlayerNum = 20007, -- 更新队伍玩家数量 BlueTeamNum, RedTeamNum SelectTeamCallBack = 20008, -- 选择队伍的回调 SelectSucceed Winner = 20009, -- 决出获胜者 WinnerPlayerKey GameWillBegin = 20010, -- 游戏即将开始 PlayerCause = 20011, -- 玩家造成伤害 Damage, IsKill, CauserKey, VictimKey PlayerOwnedBuffChange = 20012, -- 玩家拥有的Buff已改变 SaveSelectWeaponCallBack = 20013, -- 武器选择保存回调 SaveSucceed PlayerSaveWeaponChange = 20014, -- 武器选择保存已改变 ButtonSettingCallBack = 20015, -- 保存按键配置回调 ButtonsRender{{TargetWidgetName = string, Pos = {X, Y}, Scale = float}, ...} UpdatePlayerRank = 20101, -- 玩家排行榜信息更新 PlayerFirstTimePlaying = 30006, -- 玩家第一次进入游戏 --- Game DiagramsBattlefield Event PlayerBuyCallBack = 50001, -- 玩家购买回调 bSucceed PlayerGoldCoinChange = 50002, -- 玩家金币数改变 SelectInitBackPackCallBack = 50003, -- 选择初始背包配置回调 PlayerRewardScoreChange = 50004, -- 玩家悬赏分改变 PlayerAreaChange = 50005, -- 玩家所在区域改变 {[PlayerKey] = uint[1, 8]} LoadMap = 50006, -- 关卡加载 MapConifg.MapType SelectMapCallBack = 50007, -- 地图选择服务器的回调 bSucceed, MapType SelectDefaultWeaponCallBack = 50008, -- 默认武器选择回调 bSucceed, WeaponID RandomSelectVoteMap = 50009, -- 随机选择玩家投票出的Map {MapType, ..}, Index --- Game MechanismBattlefield PlayerGradientGradeChange = 60001, -- 玩家梯度等级改变 --- Game SecretTreasureChasing HookNumChange = 70001, -- 使用Hook的数量改变 bIsTwo KeyOwnerChange = 70002, -- 钥匙拥有者改变 ResetKey = 70003, -- 重置钥匙位置 KeyOwnerDead = 70004, -- 钥匙拥有者死亡 TeamHoldsTheKeyTimeUpdate = 70005, -- 队伍维持钥匙的时间改变 PlayerHoldsTheKeyTimeUpdate = 70006, -- 玩家维持钥匙时间改变 PlayerBuyCallBack = 70007, -- 玩家购买回调 bSucceed PlayerGoldCoinChange = 70008, -- 玩家金币数改变 TeamPlayerAliveChange = 70009, -- 玩家存活信息改变 SwapBornPoint = 70010, -- 切换两队伍的出生点 -- MiniGame MiniGameLoad = 80000, -- 小玩法加载 MiniGameStart = 80001, -- 小玩法开始 MiniGameType MiniGameEnd = 80002, -- 小玩法结束 PlayerAddScore : {PlayerKey = AddScore, } NewMiniGame = 80003, -- 新的玩法开始 SelectMiniGameCallBack = 80004, -- 玩家选择玩法的服务器回调 IsSucceed, InMiniGameType, InPlayerKey UpdateBlockFloorCollision = 80005, -- 更新阻挡地板状态 IsBlock UpdatePlayerSelectMiniMapType = 80006, -- 玩家选择的地图类型 PlayerKey:MapType ShootingTargetAddScore = 81001, -- 玩家击靶得分 PlayerKey, AddScore UpdateShootingTargetScore = 81002, -- 所有玩家当前击靶得分 {[PlayerKey] = Score} UpdatePlayerIsReady = 81003, -- 小玩法玩家准备 {[PlayerKey] = IsReady} PlayerDropMiniGameKillBox = 81004, -- 玩家掉落到陷阱 PlayerKey UpdateMiniGameAllPlayerScore= 81005, -- 玩家小玩法内部得分,用于通用的客户端得分界面 {PlayerKey = Score, } UpdatePlayerSpawnPoint = 81006, -- 更新玩家出生点 StickOverlapPlayer = 81007, -- 玩家被棍棒击中 PlayerKey PlayerPickStar = 81008, -- 玩家拾取星星 UpdatePlayerColorIndex = 81009, -- 更新玩家颜色索引 PlayerKey = ColorIndex UpdateColorScore = 81010, -- 更新颜色数量 ColorIndex = Num PierceBalloon = 81011, -- 刺破波波车后面的气球 StabPlayer, PuncturedPlayer OverlapCheckPoint = 81012, -- 玩家通过检查点 PlayerKey, PointIndex, IsDestination BreakingIceCubes = 81013, -- 玩家击靶得分 PlayerKey, TargetID ResponseGamePlayerSelect = 81014, -- 玩家选择索引 PlayerKey, ID ResponseGameReadyState = 81015, -- 玩家选择索引 InShowServerTime, InIsPic, TargetIndex, TargetColorIndex, InSelectParams ResponseGameDifficultyUpgrade = 81016, -- 难度升级 ResponseGameSelectCallBack = 81017, -- 玩家选择后的回调 IsRight, PlayerKey PlayerPickNote = 81018, -- 玩家拾取音符 PlayerPickUpOrPutDownJigsaw = 81019, -- 玩家放下或拾取拼图 PlayerUpdateCountingNum = 81020, -- 更新计数玩法中的玩家计数 PlayerKey, Level, CountingNum UpdateShapeInfo = 81021, -- 计数玩法中更新回合玩法数据 Level, InStartAddCountTime, InStopAddCountTime, ShapeInfos AddShapeMoveInfo = 81022, -- 计数玩法中增加形状的移动操作 MoveInfos table:{{ID:int, TargetPos:Vector2D}, ...} ClientSyncCountingNum = 81023, -- 所有玩家的计数{PlayerKey = CountingNum, ... } PlayerStepThroughFloor = 81024, -- 玩家踩破地板 PlayerKey AddMiniGameScore = 85000, -- 通用增加小玩法得分函数 PlayerKey, AddScore AddMiniGameScoreList = 85001, -- 通用增加小玩法得分函数 AddScoreList: {PlayerKey = Score, ..} MiniGameEndNotify = 85002, -- 小玩法结束通知 SetSceneCameraControl = 90001, -- 设置为场景摄像机控制 bool } --- 模式编辑器的默认事件映射 EventConfig.GameModeEditEventMap = { ["DSStartUp"] = EventEnum.DSStartUp, ["PlayerLogin"] = EventEnum.PlayerLogin, ["PlayerExit"] = EventEnum.PlayerExit, } --- 事件包含的的参数名 EventConfig.EventParam = { --[[ Template [EventEnum.] = {"PlayerKey",}, ]] [EventEnum.DSStartUp] = {}, [EventEnum.PlayerLogin] = {"PlayerPawn", "PlayerKey"}, [EventEnum.PlayerExit] = {"PlayerPawn", "PlayerKey"}, [EventEnum.GameStateChange] = {"GameState"}, [EventEnum.WaitPlayerJoin] = {}, [EventEnum.GamePlay] = {}, [EventEnum.GameEnd] = {}, [EventEnum.RoundBegining] = {}, [EventEnum.RoundEnd] = {}, [EventEnum.PlayerDeathInfo] = {"VictimKey", "CauserKey", "WeaponID", "DamageType", "IsHeadShotDamage", "Distance", "DamageValue", "Assister"}, [EventEnum.PlayerInjuryInfo] = {"VictimKey", "CauserKey", "WeaponID", "DamageType", "IsHeadShotDamage", "Distance", "DamageValue"}, [EventEnum.PlayerPossessed] = {"PlayerKey",}, [EventEnum.MiniGameLoad] = {}, [EventEnum.MiniGameStart] = {"MiniGameType"}, [EventEnum.MiniGameEnd] = {"PlayerAddScore",}, } EventConfig.ActionType = { ---Player PlayerLogin = 1001, PlayerExit = 1002, PlayerDeadUpdateInfo = 1003, PlayerRespawn = 1004, PlayerAddEnergy = 1005, PlayerPossessed = 1006, EnableInfBullets = 1007, ---GameState WaitPlayerJoin = 2001, GamePlay = 2002, GameEnd = 2003, RoundBegining = 2004, RoundEnd = 2005, MiniGameLoad = 3000, MiniGameStart = 3001, MiniGameEnd = 3002, } --- Action 配置游戏模式的默认参数,该参数会被传入参数可被覆盖(传入参数有效才会覆盖),不填则使用Action中的默认参数或被传入参数覆盖 EventConfig.ActionInfo = { -- Player [EventConfig.ActionType.PlayerLogin] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_PlayerLogin", ActionDefaultParam = { PlayerKey = -1, }, }, [EventConfig.ActionType.PlayerExit] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_PlayerExit", ActionDefaultParam = { PlayerKey = -1, -- 玩家不足以支持游戏时触发的游戏结束事件 EndEvent = EventEnum.GameEnd, }, }, [EventConfig.ActionType.PlayerRespawn] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_PlayerRespawn", ActionDefaultParam = { PlayerKey = -1, -- 复活等待的时间 DelayTime = 3., }, }, [EventConfig.ActionType.PlayerDeadUpdateInfo] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_PlayerDeadUpdateInfo", ActionDefaultParam = { DeadPlayerKey = -1, KillerPlayerKey = -1, AssisterPlayerKey = -1; WeaponID = -1, }, }, [EventConfig.ActionType.PlayerPossessed] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_PlayerPossessed", ActionDefaultParam = { }, }, [EventConfig.ActionType.EnableInfBullets] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_EnableInfBullets", ActionDefaultParam = { }, }, -- GameState [EventConfig.ActionType.WaitPlayerJoin] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_WaitingPlayer", ActionDefaultParam = { -- 等待玩家加入的时长 WaitTime = GlobalConfigs.GameModeSetting.MaxWaitPlayerJoinTime, -- 提前开始游戏的最少队伍人数 WaitTeamPlayerNum = GlobalConfigs.GameModeSetting.MaxPlayerNum, -- 等待结束触发的事件 --WaitFinishEvent = EventEnum.RoundBegining, WaitFinishEvent = EventEnum.MiniGameLoad, -- 等待结束玩家不足时触发的事件 WaitFailureEvent = EventEnum.GameEnd, ---- 至少等待时长 --AtLeastWaitingTime = 2, -- 游戏即将开始提示的时间 GameWillBeginWaitTime = 3, }, }, [EventConfig.ActionType.GamePlay] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_Play", ActionDefaultParam = { -- 游戏游玩时长 GameTime = GlobalConfigs.GameSetting.GameTime, -- 游戏结束事件 GameEndEvent = EventEnum.GameEnd, }, }, [EventConfig.ActionType.GameEnd] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_GameEnd", ActionDefaultParam = { -- 延迟关闭DS时间 DelayOffDS = 30.; }, }, [EventConfig.ActionType.PlayerAddEnergy] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_PlayerAddEnergy", ActionDefaultParam = { }, }, [EventConfig.ActionType.RoundBegining] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_RoundBegining", ActionDefaultParam = { GameTime = GlobalConfigs.GameModeSetting.RoundTime; PreparationTime = GlobalConfigs.GameModeSetting.RoundReadyTime; GameEndEvent = EventEnum.RoundEnd; }, }, [EventConfig.ActionType.RoundEnd] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_RoundEnd", ActionDefaultParam = { GameTime = 8; GameEndEvent = EventEnum.GameEnd; NewRoundEvent = EventEnum.RoundBegining; }, }, [EventConfig.ActionType.MiniGameLoad] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_MiniGameLoad", ActionDefaultParam = { WaitFinishEvent = EventEnum.MiniGameStart; }, }, [EventConfig.ActionType.MiniGameStart] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_MiniGameStart", ActionDefaultParam = { PreparationTime = GlobalConfigs.GameModeSetting.RoundReadyTime; GameEndEvent = EventEnum.MiniGameEnd; }, }, [EventConfig.ActionType.MiniGameEnd] = { ActionPath = "Script.Global.EventManager.EventAction.EventAction_MiniGameEnd", ActionDefaultParam = { GameTime = 12; GameEndEvent = EventEnum.GameEnd; NewRoundEvent = EventEnum.MiniGameLoad; }, }, } --- 事件绑定Action 调用Key的事件会触发Value里的所有Action 传入的参数映射 [EventParamName] = "ActionParamName" EventConfig.EventAttach = { [EventEnum.DSStartUp] = { [EventConfig.ActionType.WaitPlayerJoin] = {}, -- [EventConfig.ActionType.PlayerAddEnergy] = {}, [EventConfig.ActionType.EnableInfBullets] = {}, }, [EventEnum.GamePlay] = { [EventConfig.ActionType.GamePlay] = {}, }, [EventEnum.GameEnd] = { [EventConfig.ActionType.GameEnd] = {}, }, [EventEnum.PlayerLogin] = { [EventConfig.ActionType.PlayerLogin] = { ["PlayerKey"] = "PlayerKey" } }, [EventEnum.PlayerExit] = { [EventConfig.ActionType.PlayerExit] = { ["PlayerKey"] = "PlayerKey" } }, [EventEnum.PlayerDeathInfo] = { --[EventConfig.ActionType.PlayerRespawn] = { -- ["VictimKey"] = "PlayerKey" --}, --[EventConfig.ActionType.PlayerDeadUpdateInfo] = { -- ["VictimKey"] = "DeadPlayerKey", -- ["CauserKey"] = "KillerPlayerKey", -- ["Assister"] = "AssisterPlayerKey", -- ["WeaponID"] = "WeaponID", --} }, [EventEnum.PlayerPossessed] = { [EventConfig.ActionType.PlayerPossessed] = { ["PlayerKey"] = "PlayerKey" } }, [EventEnum.RoundBegining] = { [EventConfig.ActionType.RoundBegining] = {}; }, [EventEnum.RoundEnd] = { [EventConfig.ActionType.RoundEnd] = {}; }, [EventEnum.MiniGameLoad] = { [EventConfig.ActionType.MiniGameLoad] = {}; }, [EventEnum.MiniGameStart] = { [EventConfig.ActionType.MiniGameStart] = {}; }, [EventEnum.MiniGameEnd] = { [EventConfig.ActionType.MiniGameEnd] = {}; }, } function EventConfig.CheckEventAttach(EventType) return ( EventConfig.EventParam[EventType] ~= nil and table.getCount(EventConfig.EventAttach[EventType]) > 0 ) end