From e71d581e8bd2d9b6d15486ccba7a68b2df1d5f4c Mon Sep 17 00:00:00 2001 From: flswld Date: Mon, 27 Mar 2023 23:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gs/game/lua_func.go | 146 +++++++++++++++++++---------------- gs/game/player_fight_sync.go | 12 +-- gs/game/player_scene.go | 34 +++----- 3 files changed, 94 insertions(+), 98 deletions(-) diff --git a/gs/game/lua_func.go b/gs/game/lua_func.go index c9518997..fc80b054 100644 --- a/gs/game/lua_func.go +++ b/gs/game/lua_func.go @@ -3,6 +3,7 @@ package game import ( "hk4e/common/constant" "hk4e/gdconf" + "hk4e/gs/model" "hk4e/pkg/logger" "hk4e/pkg/object" "hk4e/protocol/cmd" @@ -79,6 +80,8 @@ func RegLuaLibFunc() { gdconf.RegScriptLibFunc("BeginCameraSceneLook", BeginCameraSceneLook) gdconf.RegScriptLibFunc("GetGroupMonsterCount", GetGroupMonsterCount) gdconf.RegScriptLibFunc("ChangeGroupGadget", ChangeGroupGadget) + gdconf.RegScriptLibFunc("SetGadgetStateByConfigId", SetGadgetStateByConfigId) + gdconf.RegScriptLibFunc("MarkPlayerAction", MarkPlayerAction) } func GetEntityType(luaState *lua.LState) int { @@ -93,12 +96,7 @@ func GetQuestState(luaState *lua.LState) int { luaState.Push(lua.LNumber(constant.QUEST_STATE_NONE)) return 1 } - uid, ok := luaState.GetField(ctx, "uid").(lua.LNumber) - if !ok { - luaState.Push(lua.LNumber(constant.QUEST_STATE_NONE)) - return 1 - } - player := USER_MANAGER.GetOnlineUser(uint32(uid)) + player := GetContextPlayer(ctx, luaState) if player == nil { luaState.Push(lua.LNumber(constant.QUEST_STATE_NONE)) return 1 @@ -142,12 +140,7 @@ func BeginCameraSceneLook(luaState *lua.LState) int { luaState.Push(lua.LNumber(-1)) return 1 } - uid, ok := luaState.GetField(ctx, "uid").(lua.LNumber) - if !ok { - luaState.Push(lua.LNumber(-1)) - return 1 - } - player := USER_MANAGER.GetOnlineUser(uint32(uid)) + player := GetContextPlayer(ctx, luaState) if player == nil { luaState.Push(lua.LNumber(-1)) return 1 @@ -170,35 +163,13 @@ func GetGroupMonsterCount(luaState *lua.LState) int { luaState.Push(lua.LNumber(-1)) return 1 } - uid, ok := luaState.GetField(ctx, "uid").(lua.LNumber) - if !ok { - luaState.Push(lua.LNumber(-1)) - return 1 - } - player := USER_MANAGER.GetOnlineUser(uint32(uid)) + player := GetContextPlayer(ctx, luaState) if player == nil { luaState.Push(lua.LNumber(-1)) return 1 } - world := WORLD_MANAGER.GetWorldByID(player.WorldId) - if world == nil { - luaState.Push(lua.LNumber(-1)) - return 1 - } - scene := world.GetSceneById(player.SceneId) - groupId, ok := luaState.GetField(ctx, "groupId").(lua.LNumber) - if !ok { - luaState.Push(lua.LNumber(-1)) - return 1 - } - if groupId == 133003095 { - logger.Debug("==========a==========") - } - group := scene.GetGroupById(uint32(groupId)) + group := GetContextGroup(player, ctx, luaState) if group == nil { - if groupId == 133003095 { - logger.Debug("==========b==========") - } luaState.Push(lua.LNumber(-1)) return 1 } @@ -218,53 +189,94 @@ func ChangeGroupGadget(luaState *lua.LState) int { luaState.Push(lua.LNumber(-1)) return 1 } - uid, ok := luaState.GetField(ctx, "uid").(lua.LNumber) - if !ok { - luaState.Push(lua.LNumber(-1)) - return 1 - } - player := USER_MANAGER.GetOnlineUser(uint32(uid)) + player := GetContextPlayer(ctx, luaState) if player == nil { luaState.Push(lua.LNumber(-1)) return 1 } - world := WORLD_MANAGER.GetWorldByID(player.WorldId) - if world == nil { - luaState.Push(lua.LNumber(-1)) - return 1 - } - scene := world.GetSceneById(player.SceneId) - groupId, ok := luaState.GetField(ctx, "groupId").(lua.LNumber) - if !ok { - luaState.Push(lua.LNumber(-1)) - return 1 - } - if groupId == 133003095 { - logger.Debug("==========c==========") - } - group := scene.GetGroupById(uint32(groupId)) + group := GetContextGroup(player, ctx, luaState) if group == nil { - if groupId == 133003095 { - logger.Debug("==========d==========") - } luaState.Push(lua.LNumber(-1)) return 1 } gadgetInfo, ok := luaState.Get(2).(*lua.LTable) if !ok { - if groupId == 133003095 { - logger.Debug("==========e==========") - } luaState.Push(lua.LNumber(-1)) return 1 } gadgetStateInfo := new(gdconf.Gadget) gdconf.ParseLuaTableToObject(gadgetInfo, gadgetStateInfo) entity := group.GetEntityByConfigId(uint32(gadgetStateInfo.ConfigId)) - GAME_MANAGER.ChangeGadgetState(player, scene, entity.GetId(), uint32(gadgetStateInfo.State)) + GAME_MANAGER.ChangeGadgetState(player, entity.GetId(), uint32(gadgetStateInfo.State)) luaState.Push(lua.LNumber(0)) - if groupId == 133003095 { - logger.Debug("==========f==========") - } return 1 } + +func SetGadgetStateByConfigId(luaState *lua.LState) int { + ctx, ok := luaState.Get(1).(*lua.LTable) + if !ok { + luaState.Push(lua.LNumber(-1)) + return 1 + } + player := GetContextPlayer(ctx, luaState) + if player == nil { + luaState.Push(lua.LNumber(-1)) + return 1 + } + group := GetContextGroup(player, ctx, luaState) + if group == nil { + luaState.Push(lua.LNumber(-1)) + return 1 + } + configId := luaState.ToInt(2) + state := luaState.ToInt(3) + entity := group.GetEntityByConfigId(uint32(configId)) + GAME_MANAGER.ChangeGadgetState(player, entity.GetId(), uint32(state)) + luaState.Push(lua.LNumber(0)) + return 1 +} + +func MarkPlayerAction(luaState *lua.LState) int { + ctx, ok := luaState.Get(1).(*lua.LTable) + if !ok { + luaState.Push(lua.LNumber(-1)) + return 1 + } + player := GetContextPlayer(ctx, luaState) + if player == nil { + luaState.Push(lua.LNumber(-1)) + return 1 + } + param1 := luaState.ToInt(2) + param2 := luaState.ToInt(3) + param3 := luaState.ToInt(4) + logger.Debug("[MarkPlayerAction] [%v %v %v] uid: %v", param1, param2, param3, player.PlayerID) + luaState.Push(lua.LNumber(0)) + return 1 +} + +func GetContextPlayer(ctx *lua.LTable, luaState *lua.LState) *model.Player { + uid, ok := luaState.GetField(ctx, "uid").(lua.LNumber) + if !ok { + return nil + } + player := USER_MANAGER.GetOnlineUser(uint32(uid)) + return player +} + +func GetContextGroup(player *model.Player, ctx *lua.LTable, luaState *lua.LState) *Group { + world := WORLD_MANAGER.GetWorldByID(player.WorldId) + if world == nil { + return nil + } + groupId, ok := luaState.GetField(ctx, "groupId").(lua.LNumber) + if !ok { + return nil + } + scene := world.GetSceneById(player.SceneId) + group := scene.GetGroupById(uint32(groupId)) + if group == nil { + return nil + } + return group +} diff --git a/gs/game/player_fight_sync.go b/gs/game/player_fight_sync.go index ea97d78f..a5216b47 100644 --- a/gs/game/player_fight_sync.go +++ b/gs/game/player_fight_sync.go @@ -365,14 +365,14 @@ func (g *GameManager) TriggerCheck(player *model.Player, oldPos *model.Vector, n continue } } - logger.Debug("scene group trigger fire, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Debug("scene group trigger fire, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) if triggerConfig.Action != "" { - logger.Debug("scene group trigger do action, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Debug("scene group trigger do action, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) ok := CallLuaFunc(groupConfig.GetLuaState(), triggerConfig.Action, &LuaCtx{uid: player.PlayerID}, &LuaEvt{}) if !ok { - logger.Error("trigger action fail, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Error("trigger action fail, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) } } g.TriggerFire(player, triggerConfig) @@ -392,14 +392,14 @@ func (g *GameManager) TriggerCheck(player *model.Player, oldPos *model.Vector, n continue } } - logger.Debug("scene group trigger fire, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Debug("scene group trigger fire, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) if triggerConfig.Action != "" { - logger.Debug("scene group trigger do action, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Debug("scene group trigger do action, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) ok := CallLuaFunc(groupConfig.GetLuaState(), triggerConfig.Action, &LuaCtx{uid: player.PlayerID}, &LuaEvt{}) if !ok { - logger.Error("trigger action fail, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Error("trigger action fail, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) } } } diff --git a/gs/game/player_scene.go b/gs/game/player_scene.go index b867eef2..53493f21 100644 --- a/gs/game/player_scene.go +++ b/gs/game/player_scene.go @@ -565,28 +565,16 @@ func (g *GameManager) KillEntity(player *model.Player, scene *Scene, entityId ui scene.DestroyEntity(entity.GetId()) // 怪物死亡触发器 if entity.GetEntityType() == constant.ENTITY_TYPE_MONSTER { - if entity.groupId == 133003095 { - logger.Debug("==========1==========") - } groupConfig := gdconf.GetSceneGroup(int32(entity.groupId)) if groupConfig == nil { logger.Error("get group config is nil, groupId: %v, uid: %v", entity.groupId, player.PlayerID) return } for suiteId := range group.GetAllSuite() { - if entity.groupId == 133003095 { - logger.Debug("==========2==========") - } suiteConfig := groupConfig.SuiteList[suiteId-1] for _, triggerName := range suiteConfig.TriggerNameList { - if entity.groupId == 133003095 { - logger.Debug("==========3==========") - } triggerConfig := groupConfig.TriggerMap[triggerName] if triggerConfig.Event != constant.LUA_EVENT_ANY_MONSTER_DIE { - if entity.groupId == 133003095 { - logger.Debug("==========4==========") - } continue } if triggerConfig.Condition != "" { @@ -594,26 +582,17 @@ func (g *GameManager) KillEntity(player *model.Player, scene *Scene, entityId ui &LuaCtx{uid: player.PlayerID, groupId: entity.groupId}, &LuaEvt{}) if !cond { - if entity.groupId == 133003095 { - logger.Debug("==========5==========") - } continue } } - logger.Debug("scene group trigger fire, trigger: %v, uid: %v", triggerConfig, player.PlayerID) - if entity.groupId == 133003095 { - logger.Debug("==========6==========") - } + logger.Debug("scene group trigger fire, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) if triggerConfig.Action != "" { - logger.Debug("scene group trigger do action, trigger: %v, uid: %v", triggerConfig, player.PlayerID) + logger.Debug("scene group trigger do action, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) ok := CallLuaFunc(groupConfig.GetLuaState(), triggerConfig.Action, &LuaCtx{uid: player.PlayerID, groupId: entity.groupId}, &LuaEvt{}) if !ok { - logger.Error("trigger action fail, trigger: %v, uid: %v", triggerConfig, player.PlayerID) - } - if entity.groupId == 133003095 { - logger.Debug("==========7==========") + logger.Error("trigger action fail, trigger: %+v, uid: %v", triggerConfig, player.PlayerID) } } } @@ -621,7 +600,12 @@ func (g *GameManager) KillEntity(player *model.Player, scene *Scene, entityId ui } } -func (g *GameManager) ChangeGadgetState(player *model.Player, scene *Scene, entityId uint32, state uint32) { +func (g *GameManager) ChangeGadgetState(player *model.Player, entityId uint32, state uint32) { + world := WORLD_MANAGER.GetWorldByID(player.WorldId) + if world == nil { + return + } + scene := world.GetSceneById(player.SceneId) entity := scene.GetEntity(entityId) if entity == nil { return