2024-08-11 00:19:30 -04:00
-- game_opts.lua
-- Jan 2018
-- Display current game options, maybe have some admin controls here
-- Main Configuration File
require ( " config " )
require ( " lib/oarc_utils " )
require ( " lib/separate_spawns " )
function GameOptionsGuiClick ( event )
if not ( event and event.element and event.element . valid ) then return end
local player = game.players [ event.player_index ]
local name = event.element . name
if ( name == " ban_player " ) then
local pIndex = event.element . parent.ban_players_dropdown . selected_index
if ( pIndex ~= 0 ) then
local banPlayer = event.element . parent.ban_players_dropdown . get_item ( pIndex )
if ( game.players [ banPlayer ] ) then
game.ban_player ( banPlayer , " Banned from admin panel. " )
log ( " Banning " .. banPlayer )
end
end
end
if ( name == " restart_player " ) then
local pIndex = event.element . parent.ban_players_dropdown . selected_index
if ( pIndex ~= 0 ) then
local resetPlayer = event.element . parent.ban_players_dropdown . get_item ( pIndex )
if ( game.players [ resetPlayer ] ) then
RemoveOrResetPlayer ( player , false , true , true , true )
2024-08-11 22:16:48 -04:00
SeparateSpawnsInitPlayer ( resetPlayer , true )
2024-08-11 00:19:30 -04:00
log ( " Resetting " .. resetPlayer )
end
end
end
end
-- Used by AddOarcGuiTab
function CreateGameOptionsTab ( tab_container , player )
if global.oarc_announcements ~= nil then
AddLabel ( tab_container , " announcement_info_label " , " Server announcements: " , my_label_header_style )
AddLabel ( tab_container , " announcement_info_txt " , " global.oarc_announcements " , my_longer_label_style )
AddSpacerLine ( tab_container )
end
-- General Server Info:
AddLabel ( tab_container , " info_1 " , " global.ocfg.welcome_msg " , my_longer_label_style )
AddLabel ( tab_container , " info_2 " , " global.ocfg.server_rules " , my_longer_label_style )
AddLabel ( tab_container , " info_3 " , " global.ocfg.server_contact " , my_longer_label_style )
tab_container.add { type = " textfield " ,
tooltip = " Come join the discord (copy this invite)! " ,
text = " DISCORD_INV " }
AddSpacerLine ( tab_container )
-- Enemy Settings:
local enemy_expansion_txt = " disabled "
if game.map_settings . enemy_expansion.enabled then enemy_expansion_txt = " enabled " end
local enemy_text = " Server Run Time: " .. FormatTimeHoursSecs ( game.tick ) .. " \n " ..
" Current Evolution: " .. string.format ( " %.4f " , game.forces [ " enemy " ] . evolution_factor ) .. " \n " ..
" Enemy evolution time/pollution/destroy factors: " .. game.map_settings . enemy_evolution.time_factor .. " / " ..
game.map_settings . enemy_evolution.pollution_factor .. " / " ..
game.map_settings . enemy_evolution.destroy_factor .. " \n " ..
" Enemy expansion is " .. enemy_expansion_txt
AddLabel ( tab_container , " enemy_info " , enemy_text , my_longer_label_style )
AddSpacerLine ( tab_container )
-- Soft Mods:
local soft_mods_string = " Oarc Core "
if ( global.ocfg . mod_overlap.enable_regrowth ) then
soft_mods_string = soft_mods_string .. " , Regrowth "
end
if ( global.ocfg . mod_overlap.enable_offline_protect ) then
soft_mods_string = soft_mods_string .. " , Offline Attack Inhibitor "
end
local game_info_str = " Soft Mods: " .. soft_mods_string
-- Spawn options:
if ( global.ocfg . mod_overlap.enable_separate_teams ) then
game_info_str = game_info_str .. " \n " .. " You are allowed to spawn on your own team (have your own research tree). All teams are friendly! "
end
-- if (global.ocfg.enable_vanilla_spawns) then
-- game_info_str = game_info_str.."\n".."You are spawned in a default style starting area."
-- else
game_info_str = game_info_str .. " \n " .. " You are spawned with a fix set of starting resources. "
if ( global.ocfg . mod_overlap.enable_buddy_spawn ) then
game_info_str = game_info_str .. " \n " .. " You can chose to spawn alongside a buddy if you spawn together at the same time. "
end
-- end
if ( global.ocfg . mod_overlap.enable_shared_spawns ) then
game_info_str = game_info_str .. " \n " .. " Spawn hosts may choose to share their spawn and allow other players to join them. "
end
if ( global.ocfg . mod_overlap.enable_separate_teams and global.ocfg . mod_overlap.enable_shared_team_vision ) then
game_info_str = game_info_str .. " \n " .. " Everyone (all teams) have shared vision. "
end
if ( global.ocfg . mod_overlap.enable_regrowth ) then
game_info_str = game_info_str .. " \n " .. " Old parts of the map will slowly be deleted over time (chunks without any player buildings). "
end
-- if (global.ocfg.enable_power_armor_start or global.ocfg.enable_modular_armor_start) then
-- game_info_str = game_info_str.."\n".."Quicker start enabled."
-- end
-- if (global.ocfg.lock_goodies_rocket_launch) then
-- game_info_str = game_info_str.."\n".."Some technologies and recipes are locked until you launch a rocket!"
-- end
AddLabel ( tab_container , " game_info_label " , game_info_str , my_longer_label_style )
if ( global.ocfg . mod_overlap.enable_abandoned_base_removal ) then
AddLabel ( tab_container , " leave_warning_msg " , " If you leave within " .. global.ocfg . gameplay.minimum_online_time .. " minutes of joining, your base and character will be deleted. " , my_longer_label_style )
tab_container.leave_warning_msg . style.font_color = my_color_red
end
-- Ending Spacer
AddSpacerLine ( tab_container )
-- ADMIN CONTROLS
if ( player.admin ) then
player_list = { }
for _ , player in pairs ( game.connected_players ) do
table.insert ( player_list , player.name )
end
tab_container.add { name = " ban_players_dropdown " ,
type = " drop-down " ,
items = player_list }
tab_container.add { name = " ban_player " , type = " button " , caption = " Ban Player " }
tab_container.add { name = " restart_player " , type = " button " , caption = " Restart Player " }
end
end