Files
hk4e/gdconf/game_data_config/lua/common/FleurFair_BalloonShoot.lua
2022-11-30 00:00:20 +08:00

231 lines
9.3 KiB
Go
Raw Permalink 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.
--[[
local defs = {
gallery_id = 1,
gadget_entry = 1,
balloon_clear_state = 202,
suite_clear_index = 10,
random_time_axis = {10,20,30},
random_clear_time_axis = {7,17,27,37},
static_start_suite = 2,
static_suite_list = {3,4,5},
static_time_axis = {10,20,30},
static_clear_time_axis = {7,17,27,37},
}
local balloon_config = {
{ gadget_id = xxx, min = xxx, max = xxx},
{ gadget_id = xxx, min = xxx, max = xxx}
}
local point_array_defs = {
[1] = {point_array_id = 1, point_id_list = {}, route_type = 2},
[2] = {point_array_id = 2, point_id_list = {}, route_type = 1}
}
--]]
-----------------------
local Tri = {
{name = "time_axis_pass", config_id = 800001, event = EventType.EVENT_TIME_AXIS_PASS, source = "", condition = "", action = "action_time_axis_pass", trigger_count = 0},
{name = "gallery_start", config_id = 800002, event = EventType.EVENT_GALLERY_START, source = "", condition = "", action = "action_gallery_start", trigger_count = 0},
{name = "gallery_stop", config_id = 800003, event = EventType.EVENT_GALLERY_STOP, source = "", condition = "", action = "action_gallery_stop", trigger_count = 0},
{name = "group_will_unload", config_id = 800004, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0},
{name = "enter_region", config_id = 800005,event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0, forbid_guest = false }
}
local Var = {
--{name = "is_in_gallery", value = 0, no_refresh = false}
}
function Initialize()
for i,v in ipairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
local suite_sum = #suites
suites[suite_sum+1] = {monsters={},gadgets={},regions={},triggers={},rand_weight=0}
for i=1,balloon_config[1].max do
local temp_gadget = {config_id = 1000000+i, gadget_id=balloon_config[1].gadget_id, level=1, pos = gadgets[defs.gadget_entry].pos, rot = gadgets[defs.gadget_entry].rot, area_id = gadgets[defs.gadget_entry].area_id}
gadgets[temp_gadget.config_id] = temp_gadget
table.insert(suites[suite_sum+1].gadgets, temp_gadget.config_id)
end
suites[suite_sum+2] = {monsters={},gadgets={},regions={},triggers={},rand_weight=0}
for i=1,balloon_config[2].max do
local temp_gadget = {config_id = 1000000+balloon_config[1].max+i, gadget_id=balloon_config[2].gadget_id, level=1, pos = gadgets[defs.gadget_entry].pos, rot = gadgets[defs.gadget_entry].rot, area_id = gadgets[defs.gadget_entry].area_id}
gadgets[temp_gadget.config_id] = temp_gadget
table.insert(suites[suite_sum+2].gadgets, temp_gadget.config_id)
end
local garbages = {gadgets={}}
for i=1,10 do
garbages.gadgets[i] = {config_id=100000+i}
end
end
function action_time_axis_pass(context, evt)
if evt.source_name == "static" then
LF_CREATE_NEXT_STATIC_BALLOON(context, evt.param1)
elseif evt.source_name == "random" then
LF_CREATE_NEXT_RANDOM_BALLOON(context, evt.param1)
elseif evt.source_name == "random_clear" then
LF_CLEAR_CUR_RANDOM_BALLOON(context, evt.param1)
elseif evt.source_name == "static_clear" then
LF_CLEAR_CUR_STATIC_BALLOON(context, evt.param1)
end
return 0
end
function action_gallery_start(context, evt)
ScriptLib.PrintContextLog(context, "------------- version 8 --------------")
--ScriptLib.GetGroupVariableValue(context, "timer_ptr")
if evt.param1 ~= defs.gallery_id then
return -1
end
ScriptLib.SetGroupTempValue(context, "is_in_gallery", 1, {})
local act_time = ScriptLib.GetActivityOpenAndCloseTimeByScheduleId(context, 2003001)
local cur_time = ScriptLib.GetServerTime(context)
if cur_time >= act_time[1] and cur_time < act_time[2] - 86400*7 then
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.operator_group_id, defs.gadget_operator, 901)
end
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetPlayerGroupVisionType(context, uid_list, {0})
LF_CREATE_NEXT_RANDOM_BALLOON(context, 0)
LF_CREATE_NEXT_STATIC_BALLOON(context, 0)
ScriptLib.InitTimeAxis(context, "random", defs.random_time_axis, false)
ScriptLib.InitTimeAxis(context, "random_clear", defs.random_clear_time_axis, false)
ScriptLib.InitTimeAxis(context, "static", defs.static_time_axis, false)
ScriptLib.InitTimeAxis(context, "static_clear", defs.static_clear_time_axis, false)
return 0
end
function action_gallery_stop(context, evt)
if evt.param1 ~= defs.gallery_id then
return -1
end
ScriptLib.SetGroupTempValue(context, "is_in_gallery", 0, {})
local act_time = ScriptLib.GetActivityOpenAndCloseTimeByScheduleId(context, 2003001)
local cur_time = ScriptLib.GetServerTime(context)
if cur_time >= act_time[1] and cur_time < act_time[2] - 86400*7 then
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.operator_group_id, defs.gadget_operator, 0)
end
ScriptLib.EndTimeAxis(context, "random")
ScriptLib.EndTimeAxis(context, "random_clear")
ScriptLib.EndTimeAxis(context, "static")
ScriptLib.EndTimeAxis(context, "random_clear")
ScriptLib.RemoveExtraGroupSuite(context, 0, defs.suite_clear_index)
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetPlayerGroupVisionType(context, uid_list, {1})
return 0
end
function action_group_will_unload(context, evt)
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetPlayerGroupVisionType(context, uid_list, {1})
return 0
end
function action_enter_region(context, evt)
if 1 == ScriptLib.GetGroupTempValue(context, "is_in_gallery", {}) then
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetPlayerGroupVisionType(context, uid_list, {0})
end
return 0
end
-----------------------------------
function LF_CREATE_NEXT_STATIC_BALLOON(context, wave)
ScriptLib.PrintContextLog(context, "## balloon_log : wave="..wave)
local balloons = {}
if wave == 0 then
balloons = suites[defs.static_start_suite].gadgets
ScriptLib.AddExtraGroupSuite(context, 0, defs.static_start_suite)
else
balloons = suites[defs.static_suite_list[wave]].gadgets
--防止策划配错强制移除
ScriptLib.RemoveExtraGroupSuite(context, 0, defs.static_suite_list[wave])
ScriptLib.AddExtraGroupSuite(context, 0, defs.static_suite_list[wave])
end
ScriptLib.PrintContextLog(context, "## balloon_log : #balloons="..#balloons)
--调整蛋道
for i,v in ipairs(balloons) do
if point_array_defs[v] ~= nil then
local ret = ScriptLib.SetPlatformPointArray(context, v, point_array_defs[v].point_array_id, point_array_defs[v].point_id_list, {route_type = point_array_defs[v].route_type})
ScriptLib.PrintContextLog(context, "## balloon_log : i->"..i.." | ret->"..ret)
end
end
end
function LF_CREATE_NEXT_RANDOM_BALLOON(context, wave)
local balloons = {}
math.randomseed(ScriptLib.GetServerTime(context)+wave)
local g1_r = math.random(balloon_config[1].min, balloon_config[1].max)
local g2_r = math.random(balloon_config[2].min, balloon_config[2].max)
ScriptLib.PrintContextLog(context, "## balloon_log : g1_r="..g1_r.." | g2_r="..g2_r)
for i=1,g1_r do
table.insert(balloons, suites[#suites-1].gadgets[i])
end
for i=1,g2_r do
table.insert(balloons, suites[#suites].gadgets[i])
end
ScriptLib.PrintContextLog(context, "## balloon_log : #balloons="..#balloons)
--随机选一组points作为气球创建点
local random_points = {}
for k,v in pairs(points) do
if v.isRandom == 1 then
table.insert(random_points, k)
end
end
ScriptLib.PrintContextLog(context, "## balloon_log : #random_points="..#random_points)
local uid_list = ScriptLib.GetSceneUidList(context)
local host_uid = uid_list[1]
local seed = ScriptLib.GetServerTime(context)%host_uid
ScriptLib.PrintContextLog(context, "## balloon_log : seed="..seed)
for k,v in pairs(balloons) do
local temp = seed%#random_points + 1
ScriptLib.PrintContextLog(context, "## balloon_log : temp="..temp)
ScriptLib.PrintContextLog(context, "## balloon_log : v="..v.." | random_points="..random_points[temp])
ScriptLib.CreateGadgetByConfigIdByPos(context, v, points[random_points[temp]].pos, points[random_points[temp]].rot)
table.remove(random_points, temp)
end
end
function LF_CLEAR_CUR_STATIC_BALLOON(context, wave)
if wave == 1 then
for i,v in ipairs(suites[defs.static_start_suite].gadgets) do
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, v, defs.balloon_clear_state)
end
else
for i,v in ipairs(suites[defs.static_suite_list[wave - 1]].gadgets) do
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, v, defs.balloon_clear_state)
end
end
end
function LF_CLEAR_CUR_RANDOM_BALLOON(context, wave)
for i,v in ipairs(suites[#suites-1].gadgets) do
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, v, defs.balloon_clear_state)
end
for i,v in ipairs(suites[#suites].gadgets) do
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, v, defs.balloon_clear_state)
end
end
---------------------------------
function ShootBalloonHighScore(context)
ScriptLib.UpdatePlayerGalleryScore(context, defs.gallery_id, {["trigger_gadget_id"]=70350174})
return 0
end
function ShootBalloonLowScore(context)
ScriptLib.UpdatePlayerGalleryScore(context, defs.gallery_id, {["trigger_gadget_id"]=70350173})
return 0
end
function ShootBalloonSubScore(context)
ScriptLib.UpdatePlayerGalleryScore(context, defs.gallery_id, {["trigger_gadget_id"]=70350175})
return 0
end
function ShootBalloonBombScore(context)
ScriptLib.UpdatePlayerGalleryScore(context, defs.gallery_id, {["trigger_gadget_id"]=70350172})
return 0
end
---------------------------------
Initialize()