diff --git a/moon/cfc_chat_transit/server/init.moon b/moon/cfc_chat_transit/server/init.moon index c0a0867..cec3bf8 100644 --- a/moon/cfc_chat_transit/server/init.moon +++ b/moon/cfc_chat_transit/server/init.moon @@ -6,7 +6,7 @@ include "cfc_chat_transit/server/avatar_service.lua" import Read from file import GetColor from team -import TableToJSON from util +import JSONToTable, TableToJSON from util logger = ChatTransit.Logger relayPort = CreateConVar "cfc_relay_port", "", FCVAR_NONE @@ -67,6 +67,17 @@ ChatTransit.guard = (f) -> (...) -> return nil +ChatTransit.getPlayerCount = (cb) -> + fail = -> cb player\GetCount! + + success = (body) -> + count = JSONToTable body + return fail! unless count + + cb count.player_count + + http.Fetch "https://nanny.cfcservers.org/cfc3-status", success, fail + logger\info "Loading modules..." for f in *file.Find "cfc_chat_transit/server/modules/*.lua", "LUA" logger\info "Loading modules/#{f}" diff --git a/moon/cfc_chat_transit/server/modules/connect.moon b/moon/cfc_chat_transit/server/modules/connect.moon index 8ef7161..26cf555 100644 --- a/moon/cfc_chat_transit/server/modules/connect.moon +++ b/moon/cfc_chat_transit/server/modules/connect.moon @@ -1,4 +1,4 @@ -import guard from ChatTransit +import getPlayerCount, guard from ChatTransit import SteamIDTo64 from util -- TODO: Send a preliminary avatarservice link that will be backfilled when they fully connect @@ -8,13 +8,14 @@ ChatTransit.PlayerConnect = (data) => bot = tobool bot steamId = nil if bot - @Send - Type: "connect" - Data: - SteamName: name - SteamId: steamId and SteamIDTo64 steamId - PlayerCountCurrent: player\GetCount! + 1 - PlayerCountMax: game\MaxPlayers! + getPlayerCount (count) -> + @Send + Type: "connect" + Data: + SteamName: name + SteamId: steamId and SteamIDTo64 steamId + PlayerCountCurrent: count + PlayerCountMax: game\MaxPlayers! ChatTransit.PlayerInitialSpawn = (ply) => @Send diff --git a/moon/cfc_chat_transit/server/modules/disconnect.moon b/moon/cfc_chat_transit/server/modules/disconnect.moon index 9947808..d012f52 100644 --- a/moon/cfc_chat_transit/server/modules/disconnect.moon +++ b/moon/cfc_chat_transit/server/modules/disconnect.moon @@ -1,4 +1,4 @@ -import guard from ChatTransit +import getPlayerCount, guard from ChatTransit import GetBySteamID from player import SteamIDTo64 from util @@ -7,14 +7,15 @@ ChatTransit.PlayerDisconnected = (data) => ply = GetBySteamID steamId - @Send - Type: "disconnect" - Data: - SteamName: ply and ply\Nick! or name - SteamId: ply and ply\SteamID64! or SteamIDTo64 steamId - PlayerCountCurrent: player\GetCount! - 1 - PlayerCountMax: game\MaxPlayers! - Content: reason + getPlayerCount (count) -> + @Send + Type: "disconnect" + Data: + SteamName: ply and ply\Nick! or name + SteamId: ply and ply\SteamID64! or SteamIDTo64 steamId + PlayerCountCurrent: count + PlayerCountMax: game\MaxPlayers! + Content: reason gameevent.Listen "player_disconnect" hook.Add "player_disconnect", "CFC_ChatTransit_DisconnectListener", guard ChatTransit\PlayerDisconnected