Skip to content

Commit

Permalink
Add all server code except for stat saving
Browse files Browse the repository at this point in the history
  • Loading branch information
Jbleezy committed Feb 27, 2024
1 parent 6e0510c commit 6d80c70
Showing 1 changed file with 207 additions and 0 deletions.
207 changes: 207 additions & 0 deletions scripts/zm/server/_zm_reimagined_server.gsc
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,22 @@
init()
{
precache_shaders();
set_dvars();

level thread on_player_connect();
level thread server_message_watcher();
level thread intermission_message();

level thread random_map_rotation();
level thread map_vote();

level thread server_restart();

if (is_gametype_active("zgrief"))
{
level thread connect_timeout_changes();
level thread afk_kick_watcher();
}
}

precache_shaders()
Expand All @@ -28,6 +41,111 @@ precache_shaders()
precacheshader("menu_zm_map_transit_blit_power");
}

set_dvars()
{
if (getDvar("changelog_link") == "")
{
setDvar("changelog_link", "github.com/Jbleezy/BO2-Reimagined");
}

if (getDvar("discord_link") == "")
{
setDvar("discord_link", "dsc.gg/Jbleezy");
}

if (getDvar("donate_link") == "")
{
setDvar("donate_link", "ko-fi.com/Jbleezy");
}

setDvar("sv_sayName", "");
}

on_player_connect()
{
while (1)
{
level waittill("connected", player);

player thread wait_and_show_connect_message();
}
}

wait_and_show_connect_message()
{
self endon("disconnect");

flag_wait("initial_players_connected");

server_message("changelog", self, 1);
}

server_message_watcher()
{
while (1)
{
level waittill("say", message, player, hidden);

if (!hidden)
{
continue;
}

server_message(toLower(message), player);
}
}

server_message(message_str, player, tell = 0)
{
message_array = strTok(message_str, " ");
message = message_array[0];

text = "";

if (message == "changelog")
{
text = "Changelog: " + getDvar("changelog_link");
}
else if (message == "discord")
{
text = "Discord: " + getDvar("discord_link");
}
else if (message == "donate")
{
text = "Donate: " + getDvar("donate_link");
}
else if (message == "stat")
{
if (isdefined(level.server_stat_message_func))
{
[[level.server_stat_message_func]](message_str, player);
}

return;
}
else
{
return;
}

if (isDefined(player) && tell)
{
player tell(text);
}
else
{
say(text);
}
}

intermission_message()
{
level waittill("intermission");

server_message("discord");
server_message("donate");
}

random_map_rotation()
{
initial_map = 0;
Expand Down Expand Up @@ -911,4 +1029,93 @@ get_map_from_rotation(rotation)
map = tokens[3];

return map;
}

connect_timeout_changes()
{
setDvar("sv_connectTimeout", 30);

flag_wait("initial_players_connected");

setDvar("sv_connectTimeout", 60);
}

afk_kick_watcher()
{
level endon("end_game");

flag_wait("initial_blackscreen_passed");

time_to_kick = 120000;

while (1)
{
players = get_players();

foreach (player in players)
{
if (player any_button_pressed() || player is_bot())
{
player.afk_time = undefined;
continue;
}

if (player.sessionstate == "spectator")
{
if (isDefined(player.afk_time))
{
player.afk_time += 50;
continue;
}
}

if (!isDefined(player.afk_time))
{
player.afk_time = getTime();
}

if ((getTime() - player.afk_time) >= time_to_kick)
{
kick(player getEntityNumber());
}
}

wait 0.05;
}
}

any_button_pressed()
{
if (self actionslotonebuttonpressed() || self actionslottwobuttonpressed() || self actionslotthreebuttonpressed() || self actionslotfourbuttonpressed() || self attackbuttonpressed() || self fragbuttonpressed() || self inventorybuttonpressed() || self jumpbuttonpressed() || self meleebuttonpressed() || self secondaryoffhandbuttonpressed() || self sprintbuttonpressed() || self stancebuttonpressed() || self throwbuttonpressed() || self usebuttonpressed() || self changeseatbuttonpressed())
{
return 1;
}

return 0;
}

server_restart()
{
no_players_time = 0;

while (1)
{
players = get_players();

if (players.size < 1)
{
no_players_time++;
}
else
{
no_players_time = 0;
}

if (no_players_time >= 3600)
{
cmdexec("quit");
}

wait 1;
}
}

0 comments on commit 6d80c70

Please sign in to comment.