0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-29 09:35:48 +00:00
KingRainbow44 b8cde25332
Revert "The Great De-Local'ifying of Lua Scripts (pt. 3)"
This reverts commit aa45c07369da944f31842aaadf87884dc319c8b1.
2023-08-29 21:28:58 -04:00

347 lines
13 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--2.4昼夜group
--miscs
----昼夜group下控制的所有昼夜gadget
--local EnvControlGadgets =
--{
-- 10001,
-- 10002,
-- 10003
--
--}
--
----仅在白天出现的gadget夜晚会默认销毁
--local DayAppearGadgets =
--{
-- 20001,
-- 20002
--}
--
----仅在夜晚出现的gadget白天会默认销毁
--local NightAppearGadgets =
--{
-- 30001,
-- 30002
--}
--local TriggerInsertWhitelist = {2,3}
----------------------------------
local Tri = {
[1] = { name = "group_load_daynight", config_id = 8000001, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load_daynight", trigger_count = 0},
[2] = { name = "level_tag_change_daynight", config_id = 8000002, event = EventType.EVENT_LEVEL_TAG_CHANGE, source = "", condition = "", action = "action_level_tag_change_daynight", trigger_count = 0},
}
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
end
local hasTriggerInsertWhitelist = not (TriggerInsertWhitelist==nil or #TriggerInsertWhitelist<=0)
if (hasTriggerInsertWhitelist) then
--存在白名单设置走白名单的trigger注入流程
if (init_config.io_type ~= 1) then
--常规group注入。trigger注入白名单定义的suite list
for i = 1, #TriggerInsertWhitelist do
for k,v in pairs(Tri) do
if (TriggerInsertWhitelist[i]<=#suites) then
table.insert(suites[TriggerInsertWhitelist[i]].triggers, v.name)
end
end
end
table.insert(variables,{ config_id=50000001,name = "is_daynight_finish", value = 0, no_refresh = true})
else
table.insert(variables,{ config_id=50000001,name = "is_daynight_finish", value = 0, no_refresh = true})
--flow group注入。trigger注入白名单定义的suite list
for i = 1, #TriggerInsertWhitelist do
for k,v in pairs(Tri) do
if (TriggerInsertWhitelist[i]<=#suite_disk) then
table.insert(suite_disk[TriggerInsertWhitelist[i]].triggers, v.name)
end
end
table.insert(suite_disk[TriggerInsertWhitelist[i]].variables,{ config_id=50000001,name = "is_daynight_finish", value = 0, no_refresh = true})
end
end
else
--不存在白名单设置走常规的trigger注入流程
if (init_config.io_type ~= 1) then
for i = 1, #suites do
for k,v in pairs(Tri) do
table.insert(suites[i].triggers, v.name)
end
end
table.insert(variables,{ config_id=50000001,name = "is_daynight_finish", value = 0, no_refresh = true})
else
table.insert(variables,{ config_id=50000001,name = "is_daynight_finish", value = 0, no_refresh = true})
for i = 1, #suite_disk do
for k,v in pairs(Tri) do
table.insert(suite_disk[i].triggers, v.name)
end
table.insert(suite_disk[i].variables,{ config_id=50000001,name = "is_daynight_finish", value = 0, no_refresh = true})
end
end
end
end
------------------------------------------------------------------
--group load时主动取一下LevelTag将物件设置为正确的昼夜表现
function action_group_load_daynight(context,evt)
ScriptLib.PrintContextLog(context,"EnvState: Group加载修正物件的昼夜状态")
local current_env_state = LF_Get_Current_Day_Night(context)
ScriptLib.PrintContextLog(context,"EnvState: 当前昼夜状态为: "..ScriptLib.GetLevelTagNameById(context,current_env_state))
LF_Change_Day_Night(context,current_env_state)
return 0
end
function action_level_tag_change_daynight(context,evt)
--改之后的昼夜状态
local target_env_state_id = evt.param2
local target_env_state = ScriptLib.GetLevelTagNameById(context, target_env_state_id)
ScriptLib.PrintContextLog(context,"EnvState: 昼夜切换开始切换昼夜物件状态到LevelTag "..target_env_state)
LF_Change_Day_Night(context,target_env_state_id)
return 0
end
------------------------------------------------------------------
function LF_Get_Current_Day_Night(context)
local current_env_state_id = ScriptLib.GetCurrentLevelTagVec(context, 1)[1]
return current_env_state_id
end
function LF_Change_Day_Night(context,target_env_state)
--LD漏填了昼夜切换的物件列表直接返回
if #EnvControlGadgets <= 0 and #DayAppearGadgets <= 0 and #NightAppearGadgets<=0 then
ScriptLib.PrintContextLog(context,"EnvState: 没有填写昼夜切换的gadget list")
return 0
end
--处理昼夜转换型物件的昼夜状态
for i = 1, #EnvControlGadgets do
LF_Change_State_Day_Night(context,EnvControlGadgets[i],target_env_state)
end
local is_daynight_finish = ScriptLib.GetGroupVariableValue(context, "is_daynight_finish")
if (is_daynight_finish ~= 1) then
--当没有进入完成态时,处理昼夜出现/消失型物件的出现和消失
if (ScriptLib.GetLevelTagNameById(context,target_env_state) == "2_4_Day") then
if ( DayAppearGadgets ~= nil) then
for i = 1, #DayAppearGadgets do
ScriptLib.PrintContextLog(context,"EnvState: 正在将DayOnly物件 "..DayAppearGadgets[i].." 加载")
ScriptLib.CreateGadget(context,{config_id = DayAppearGadgets[i]})
end
end
if ( NightAppearGadgets ~= nil) then
for i = 1, #NightAppearGadgets do
ScriptLib.PrintContextLog(context,"EnvState: 正在将NightOnly物件 "..NightAppearGadgets[i].." 移除")
ScriptLib.RemoveEntityByConfigId(context,0,EntityType.GADGET,NightAppearGadgets[i])
end
end
elseif (ScriptLib.GetLevelTagNameById(context,target_env_state) == "2_4_Night") then
if ( NightAppearGadgets ~= nil) then
for i = 1, #NightAppearGadgets do
ScriptLib.PrintContextLog(context,"EnvState: 正在将NightOnly物件 "..NightAppearGadgets[i].." 加载")
ScriptLib.CreateGadget(context,{config_id = NightAppearGadgets[i]})
end
end
if ( DayAppearGadgets ~= nil) then
for i = 1, #DayAppearGadgets do
ScriptLib.PrintContextLog(context,"EnvState: 正在将DayOnly物件 "..DayAppearGadgets[i].." 移除")
ScriptLib.RemoveEntityByConfigId(context,0,EntityType.GADGET,DayAppearGadgets[i])
end
end
end
end
end
--输入一个gadget将其转到对应的昼夜状态
function LF_Change_State_Day_Night(context, gadget, target_env_state_id)
local target_env_state = ScriptLib.GetLevelTagNameById(context,target_env_state_id)
ScriptLib.PrintContextLog(context,"EnvState: 正在将物件 "..gadget.." 的昼夜状态切换至 "..target_env_state)
local current_state = ScriptLib.GetGadgetStateByConfigId(context,0,gadget)
local current_phase = current_state % 10
local target_gadgetState = 0
ScriptLib.PrintContextLog(context,"EnvState: 物件 "..gadget.." 的当前阶段为 "..current_phase)
--夜转昼
if (target_env_state == "2_4_Day") then
target_gadgetState = 200+current_phase
end
--昼转夜
if (target_env_state == "2_4_Night") then
target_gadgetState = 300+current_phase
end
--如果目标状态和当前状态一致,说明没有要转的,提前返回
--if (target_gadgetState == current_state) then
-- return 0
--end
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, gadget, target_gadgetState)
ScriptLib.PrintContextLog(context,"EnvState: 物件 "..gadget.." 切换至 "..target_gadgetState.." 成功")
end
function LF_Is_Gadget_DayNight(context,gadget_id)
for i = 1 ,#EnvControlGadgets do
if gadget_id == EnvControlGadgets[i] then
return true
end
end
return false
end
------------------------------------------------------------------
--lua层调用将指定gadget转到一个合适的昼夜锁状态
function DayNight_Gadget_Lock(context,gadget_id)
ScriptLib.PrintContextLog(context,"EnvState: 将昼夜物件"..gadget_id.."锁定")
if (not LF_Is_Gadget_DayNight(context,gadget_id)) then
ScriptLib.PrintContextLog(context,"EnvState: 错误的传入了一个不在昼夜列表中的物件!!!")
return -1
end
local current_env_state_id = LF_Get_Current_Day_Night(context)
local current_env_state = ScriptLib.GetLevelTagNameById(context,current_env_state_id)
if (current_env_state == "2_4_Day") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,200)
end
if (current_env_state == "2_4_Night") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,300)
end
return 0
end
--lua层调用将指定gadget转到一个合适的昼夜激活状态
function DayNight_Gadget_Unlock(context,gadget_id)
ScriptLib.PrintContextLog(context,"EnvState: 将昼夜物件"..gadget_id.."解锁")
if (not LF_Is_Gadget_DayNight(context,gadget_id)) then
ScriptLib.PrintContextLog(context,"EnvState: 错误的传入了一个不在昼夜列表中的物件!!!")
return -1
end
local current_env_state_id = LF_Get_Current_Day_Night(context)
local current_env_state = ScriptLib.GetLevelTagNameById(context,current_env_state_id)
ScriptLib.PrintContextLog(context,"EnvState: 当前昼夜为"..current_env_state)
if (current_env_state == "2_4_Day") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,202)
ScriptLib.PrintContextLog(context,"EnvState: 将物件状态设置为"..202)
end
if (current_env_state == "2_4_Night") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,302)
ScriptLib.PrintContextLog(context,"EnvState: 将物件状态设置为"..302)
end
return 0
end
--lua层调用将指定gadget重置到当前的昼夜基态
function DayNight_Gadget_Reset(context,gadget_id)
ScriptLib.PrintContextLog(context,"EnvState: 将昼夜物件"..gadget_id.."重置")
if (not LF_Is_Gadget_DayNight(context,gadget_id)) then
ScriptLib.PrintContextLog(context,"EnvState: 错误的传入了一个不在昼夜列表中的物件!!!")
return -1
end
local current_env_state_id = LF_Get_Current_Day_Night(context)
local current_env_state = ScriptLib.GetLevelTagNameById(context,current_env_state_id)
local current_state = ScriptLib.GetGadgetStateByConfigId(context,0,gadget_id)
local current_phase = current_state % 10
if (current_env_state == "2_4_Day") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,200+current_phase)
end
if (current_env_state == "2_4_Night") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,300+current_phase)
end
return 0
end
--lua层调用将指定gadget转到一个合适的昼夜关闭状态
function DayNight_Gadget_Finish(context,gadget_id)
ScriptLib.PrintContextLog(context,"EnvState: 将昼夜物件"..gadget_id.."设置到完成")
if (not LF_Is_Gadget_DayNight(context,gadget_id)) then
ScriptLib.PrintContextLog(context,"EnvState: 错误的传入了一个不在昼夜列表中的物件!!!")
return -1
end
local current_env_state_id = LF_Get_Current_Day_Night(context)
local current_env_state = ScriptLib.GetLevelTagNameById(context,current_env_state_id)
if (current_env_state == "2_4_Day") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,201)
end
if (current_env_state == "2_4_Night") then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0,gadget_id,301)
end
return 0
end
------------------------------------------------------------------
--s1329127 运营埋点,与封能台座交互
function SLC_Mark_Energy_Source_Interaction(context)
ScriptLib.PrintContextLog(context,"EnvState: source entity id为"..context.source_entity_id)
local current_env_state = LF_Get_Current_Day_Night(context)
local entity_id = context.source_entity_id
local gadget_id = ScriptLib.GetGadgetIdByEntityId(context, entity_id)
local configId = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
ScriptLib.PrintContextLog(context,"EnvState: config id为"..configId)
ScriptLib.PrintContextLog(context,"EnvState: 运营打点:封能台座-参数:".."daynight_state = "..current_env_state.."config_id = "..configId.."gadget_id = "..gadget_id)
ScriptLib.MarkGroupLuaAction(context, "EnergySource_1","",{["daynight_state"]=current_env_state,["config_id"]=configId,["gadget_id"]=gadget_id})
return 0
end
------------------------------------------------------------------
Initialize()