0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-29 09:35:48 +00:00
GC-Resources/Resources/Scripts/Common/V2_4/EnvStateWorktop.lua
KingRainbow44 b77f8d326e
Revert "The Great De-Local'ifying of Lua Scripts"
This reverts commit 54223c3d4857544a2cc9b94a9e10377596e367e4.
2023-08-29 21:33:58 -04:00

180 lines
7.5 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昼夜机关(白盒)
--defs
--local Worktops = {
-- 500000,
-- 500001,
--}
----------------------------------
local option = 502
local Tri = {
[1] = { name = "select_option_worktop", config_id = 9000001, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option_worktop", trigger_count = 0},
[2] = { name = "group_load_worktop", config_id = 9000002, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load_worktop", trigger_count = 0},
[3] = { name = "gadget_state_change_worktop", config_id = 9000003, event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_gadget_state_change_worktop", trigger_count = 0},
}
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
end
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
else
for i = 1, #suite_disk do
for k,v in pairs(Tri) do
table.insert(suite_disk[i].triggers, v.name)
end
end
end
end
------------------------------------------------------------------
--group load后加载操作台选项
function action_group_load_worktop(context,evt)
ScriptLib.PrintContextLog(context,"EnvStateWorktop: Group加载修正昼夜操作台选项")
local is_daynight_finish = ScriptLib.GetGroupVariableValue(context, "is_daynight_finish")
if (is_daynight_finish == 1) then
ScriptLib.PrintContextLog(context,"EnvState: 该group处于完成状态不再受到昼夜管理")
return 0
end
for i = 1, #Worktops do
LF_Set_DayNight_Worktop_Option(context,Worktops[i])
end
return 0
end
--按下昼夜切换机关时,处理这个昼夜机关的状态切换和删除选项
function action_select_option_worktop(context,evt)
if (evt.param2 == option) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 玩家按下选项删除当前选项并切换操作台gadgetState")
local worktop = evt.param1
local entity_id = ScriptLib.GetEntityIdByConfigId(context,worktop)
local gadget_id = ScriptLib.GetGadgetIdByEntityId(context, entity_id)
--如果是白天操作台按下按键后转到212
if (gadget_id == 70360311) then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, evt.param1, 212)
ScriptLib.DelWorktopOptionByGroupId(context,0,evt.param1,option)
--如果是夜晚操作台按下按键后转到312
elseif (gadget_id == 70360312) then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, evt.param1, 312)
ScriptLib.DelWorktopOptionByGroupId(context,0,evt.param1,option)
end
end
return 0
end
--当昼夜切换机关状态切换时,判断当前状态上下选项
function action_gadget_state_change_worktop(context,evt)
local worktop = evt.param2
local is_daynight_worktop = false
for i = 1,#Worktops do
if worktop == Worktops[i] then
is_daynight_worktop = true
end
end
if (is_daynight_worktop) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台 "..worktop.."状态变化,判断选项上下")
LF_Set_DayNight_Worktop_Option(context,worktop)
end
return 0
end
-----------------------------------------------------------------
--输入一个操作台的config_id根据当前昼夜以及操作台当前状态判断此时上或下选项
function LF_Set_DayNight_Worktop_Option(context,worktop)
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台 "..worktop.."状态变化,开始设置选项")
--判断操作台gadget id如果不对提前返回
local entity_id = ScriptLib.GetEntityIdByConfigId(context,worktop)
local gadget_id = ScriptLib.GetGadgetIdByEntityId(context, entity_id)
if (gadget_id ~= 70360311 and gadget_id ~= 70360312) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 目标gadget id = "..gadget_id.."不是昼夜操作台,提前返回")
return 0
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.PrintContextLog(context,"EnvStateWorktop: 当前是白天")
--如果是白天操作台且状态为202则上选项否则下选项
if (gadget_id == 70360311) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(白天)处理选项")
local gadget_state = ScriptLib.GetGadgetStateByConfigId(context,0,worktop)
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(白天)当前状态为"..gadget_state)
if (gadget_state == 202) then
ScriptLib.SetWorktopOptionsByGroupId(context, 0, worktop, {option})
else
ScriptLib.DelWorktopOptionByGroupId(context,0,worktop,option)
end
end
--如果是夜晚操作台且状态为302则上选项否则下选项
if (gadget_id == 70360312) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(夜晚)处理选项")
local gadget_state = ScriptLib.GetGadgetStateByConfigId(context,0,worktop)
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(夜晚)当前状态为"..gadget_state)
if (gadget_state == 302) then
ScriptLib.SetWorktopOptionsByGroupId(context, 0, worktop, {option})
else
ScriptLib.DelWorktopOptionByGroupId(context,0,worktop,option)
end
end
elseif (current_env_state == "2_4_Night") then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 当前是夜晚")
--如果是夜晚操作台且状态为302则上选项否则下选项
if (gadget_id == 70360312) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(夜晚)处理选项")
local gadget_state = ScriptLib.GetGadgetStateByConfigId(context,0,worktop)
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(夜晚)当前状态为"..gadget_state)
if (gadget_state == 302) then
ScriptLib.SetWorktopOptionsByGroupId(context, 0, worktop, {option})
else
ScriptLib.DelWorktopOptionByGroupId(context,0,worktop,option)
end
end
--如果是白天操作台且状态为202则上选项否则下选项
if (gadget_id == 70360311) then
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(夜晚)处理选项")
local gadget_state = ScriptLib.GetGadgetStateByConfigId(context,0,worktop)
ScriptLib.PrintContextLog(context,"EnvStateWorktop: 昼夜操作台(夜晚)当前状态为"..gadget_state)
if (gadget_state == 202) then
ScriptLib.SetWorktopOptionsByGroupId(context, 0, worktop, {option})
else
ScriptLib.DelWorktopOptionByGroupId(context,0,worktop,option)
end
end
end
end
function LF_Get_Current_Day_Night(context)
local current_env_state_id = ScriptLib.GetCurrentLevelTagVec(context, 1)[1]
return current_env_state_id
end
------------------------------------------------------------------
Initialize()