166 lines
9.2 KiB
Lua
166 lines
9.2 KiB
Lua
local handler = require("event_handler")
|
||
handler.add_lib(require("freeplay"))
|
||
|
||
if script.active_mods["space-age"] then
|
||
handler.add_lib(require("space-finish-script"))
|
||
else
|
||
handler.add_lib(require("silo-script"))
|
||
end
|
||
|
||
-- Define the server Message of the Day (MOTD)
|
||
local MOTD = [[
|
||
Welcome to Clarth's Test Server!
|
||
Enjoy your stay.
|
||
If you need admin powers, talk to Clarth.
|
||
Teleport command and teleporters are your friend, spread out.
|
||
]]
|
||
|
||
-- Function to send the MOTD to a player
|
||
local function send_motd(player)
|
||
player.print(MOTD, {r = 0.5, g = 0.75, b = 1}) -- Customize text color if desired
|
||
end
|
||
|
||
-- Event handler: Show MOTD when a player joins the game
|
||
script.on_event(defines.events.on_player_joined_game, function(event)
|
||
local player = game.get_player(event.player_index)
|
||
if player then
|
||
send_motd(player)
|
||
end
|
||
end)
|
||
|
||
script.on_event(defines.events.on_tick, function(event)
|
||
-- Define the autosave interval (in ticks)
|
||
local autosave_interval_ticks = 10 * 60 * 60 -- 10 minutes = 36000 ticks
|
||
local warning_time_ticks = 30 * 60 -- 30 seconds = 1800 ticks
|
||
|
||
-- Check if the current tick is close to an autosave
|
||
local current_tick = game.tick
|
||
local ticks_until_next_save = autosave_interval_ticks - (current_tick % autosave_interval_ticks)
|
||
|
||
if ticks_until_next_save == warning_time_ticks then
|
||
-- Notify players 30 seconds before the autosave
|
||
game.print("[Server]: Autosave will occur in 30 seconds. Please prepare!")
|
||
elseif ticks_until_next_save == 0 then
|
||
-- Notify players when the autosave happens
|
||
game.print("[Server]: Autosave in progress. Hang tight!")
|
||
end
|
||
end)
|
||
|
||
|
||
local fun_facts = {
|
||
"Did you know? The first version of Factorio was released in 2012 as a crowdfunding project!",
|
||
"Fun fact: Biters have a family too. But they might not appreciate your pollution...",
|
||
"Remember: The quickest way to fix a problem is to add more belts.",
|
||
"Nuclear power is great, but don't forget to wear your lead pants!",
|
||
"In Factorio, spaghetti is not just a meal. It's a way of life.",
|
||
"Building trains is fun... until they hit you. Look both ways before crossing!",
|
||
"Factorio was inspired by games like SimCity, Civilization, and Transport Tycoon.",
|
||
"Why automate? Because doing things manually is for *non-engineers*!",
|
||
"Pollution may anger the biters, but it sure makes the factory look cool.",
|
||
"There are over 60 achievements in Factorio. How many do you have?",
|
||
"If you're stuck: Always remember, there’s no problem that can't be solved with more assemblers.",
|
||
"The factory must grow, but so do the biters!",
|
||
"When in doubt, over-engineer everything. It's the Factorio way.",
|
||
"Factorio has been played by over 3 million people worldwide!",
|
||
"Never forget: Biters are just nature’s way of saying 'please stop polluting.'",
|
||
"The devs behind Factorio (Wube Software) are based in Prague, Czech Republic.",
|
||
"Building circuits is great! ...until you try debugging them at 2 AM.",
|
||
"Factorio teaches a life lesson: Logistics are the key to success!",
|
||
"Why did the engineer cross the belt? To get to the other inserter.",
|
||
"When you feel overwhelmed, just remember: You started with one burner miner drill.",
|
||
"Splitters are your best friend. Cherish them.",
|
||
"Factorio is like chess, but with explosions and trains.",
|
||
"The game's engine was built from scratch to handle massive factories.",
|
||
"Ever notice? Your factory makes pollution, but your bots don’t care.",
|
||
"You’re not overthinking your factory. You’re just *optimizing* it.",
|
||
"Real engineers build their first rocket... and immediately start building the second.",
|
||
"Factorio speedrunners can launch a rocket in under 2 hours!",
|
||
"It's not a bug if it works (sometimes).",
|
||
"Who needs brakes on trains? Just build another train stop!",
|
||
"The only thing scarier than a horde of biters? Your power going out mid-battle.",
|
||
"Factorio has been in development longer than most AAA games.",
|
||
"Spaghetti factories may be inefficient, but they’re beautiful.",
|
||
"Factorio’s auto-save exists for a reason. Don’t forget it.",
|
||
"If at first you don’t succeed, build faster belts.",
|
||
"Trees are friends... until they block your factory.",
|
||
"Factorio’s map generator can create maps the size of Earth (but who has time?).",
|
||
"When in doubt, blame the biters.",
|
||
"No problem is too big if you have enough construction bots.",
|
||
"Your factory doesn’t have bugs; it has *features*.",
|
||
"Take breaks. Your factory won’t build itself, but your brain needs a rest!",
|
||
"The longest recorded Factorio play session was over 3 days straight!",
|
||
"There are more than 50 different types of trains in Factorio, and none of them have seatbelts!",
|
||
"Even the best engineers sometimes forget to turn on their power grid.",
|
||
"Try placing a few trees in a circle. You might see something interesting...",
|
||
"There’s a hidden achievement for ‘completing the game without using any belts.’ Good luck with that!",
|
||
"When the going gets tough, remember: Your factory can always be bigger!",
|
||
"You can rename any train in Factorio. What will you name yours?",
|
||
"The Factorio wiki contains more information than some university textbooks!",
|
||
"If you’re ever feeling lost, try using the map preview to get your bearings.",
|
||
"Eating pizza is great, but eating pizza while building your factory is even better!",
|
||
"You can achieve *maximum* productivity with a single well-placed power pole. It's magic.",
|
||
"Try turning off your lights at night and see how it changes the game. Hint: It's a bit dark.",
|
||
"Some players have completely automated their entire game, from train schedules to rocket launches!",
|
||
"Build with efficiency, but never underestimate the power of a well-placed flamethrower!",
|
||
"Factorio is not just about building factories, it’s about building friendships... and lots of conveyor belts.",
|
||
"If you find a secret chest in the game, it might contain a hilarious surprise!",
|
||
"Factorio has been in continuous development since its alpha release, with hundreds of updates improving gameplay.",
|
||
"Always keep a backup of your game save. You never know when a biter will wreck your day!",
|
||
"Don’t forget to hydrate while playing! Your factory might need more water than you think.",
|
||
"The devs have released mods that allow you to play Factorio in VR. Talk about immersive!",
|
||
"Try placing an enormous amount of electric poles... and wait for the electricity to flow!",
|
||
"If a rocket launch takes too long, maybe you need to work on your factory logistics a little more.",
|
||
"A single train can carry more resources than a hundred chests. But where’s the fun in that?",
|
||
"If you're ever stuck, you can always check the forums for advice or a quick fix to your problem.",
|
||
"Your factory might be beautiful, but is it *efficient*? Check out some optimization guides!",
|
||
"If you place an entire factory inside a giant circle of walls, you'll get a cool view of your progress.",
|
||
"You can automate the creation of solar panels and wind turbines to create an environmentally friendly factory.",
|
||
"A factory is like a living organism. It needs food (resources) and power to survive!",
|
||
"Factorio was named after the Latin word for ‘factory’ because it’s all about building systems.",
|
||
"Take a step back and admire your factory every once in a while. It's a work of art!",
|
||
"Trains are faster than belts. But they can be tricky. Use them wisely!",
|
||
"Some players have created entire computer systems within Factorio? Talk about an engineering challenge!",
|
||
"The Factorio wiki has thousands of pages filled with in-depth guides to help you optimize your factory.",
|
||
"Try taking a break by building a giant statue out of stone bricks. It’s a good stress reliever.",
|
||
"Taking breaks isn’t just for your health, it’s for your factory’s success. Don’t burn out!"
|
||
}
|
||
|
||
local announcement_interval_ticks = 30 * 60 * 60 -- 30 minutes = 108,000 ticks
|
||
local next_announcement_tick = nil
|
||
|
||
-- Initialize next_announcement_tick to a valid value
|
||
script.on_init(function()
|
||
next_announcement_tick = game.tick + announcement_interval_ticks
|
||
end)
|
||
|
||
-- Event handler for on_tick
|
||
script.on_event(defines.events.on_tick, function(event)
|
||
-- Ensure next_announcement_tick is a valid number before using it
|
||
if next_announcement_tick and game.tick >= next_announcement_tick then
|
||
-- Pick a random announcement from fun facts
|
||
local message = fun_facts[math.random(#fun_facts)]
|
||
-- Send it to all players
|
||
game.print("[Fun Fact]: " .. message)
|
||
-- Set the next announcement time
|
||
next_announcement_tick = game.tick + announcement_interval_ticks
|
||
end
|
||
end)
|
||
|
||
|
||
-- Register the /funfact command
|
||
commands.add_command("funfact", "Get a random fun fact", function(event)
|
||
local player = game.get_player(event.player_index)
|
||
if player then
|
||
local random_fact = fun_facts[math.random(#fun_facts)]
|
||
player.print("[Server]: " .. random_fact)
|
||
end
|
||
end)
|
||
|
||
-- Register the /discord command
|
||
commands.add_command("discord", "Get the Discord link", function(event)
|
||
local player = game.get_player(event.player_index)
|
||
if player then
|
||
player.print("Join our Discord at: http://Discord.Claytonia.net")
|
||
end
|
||
end)
|