Rich presence when using some modules
https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer/ https://github.com/fluffy-servers/gmod-discord-rpc/
This commit is contained in:
parent
780ec39711
commit
60c7a15272
|
@ -0,0 +1,177 @@
|
|||
|
||||
if SERVER then return end
|
||||
|
||||
if util.IsBinaryModuleInstalled("gdiscord") then
|
||||
require("gdiscord")
|
||||
local RPC_AppID = "1287531216630976603"
|
||||
function DiscordUpdate()
|
||||
local rpc_data = {}
|
||||
|
||||
rpc_data["buttonPrimaryLabel"] = "Join Server"
|
||||
rpc_data["buttonPrimaryUrl"] = "steam://open/friends"-- .. "108.5.3.134:27015"
|
||||
rpc_data["buttonSecondaryLabel"] = "Join Server"
|
||||
rpc_data["buttonSecondaryUrl"] = "steam://open/friends"-- .. "108.5.3.134:27015"
|
||||
rpc_data["partySize"] = player.GetCount()
|
||||
rpc_data["partyMax"] = game.MaxPlayers()
|
||||
rpc_data["largeImageKey"] = "benny_1"--"map_b-mp_6t"
|
||||
rpc_data["largeImageText"] = "The Six Team Map"
|
||||
--rpc_data["smallImageKey"] = "doof2"
|
||||
--rpc_data["smallImageText"] = "Domination"
|
||||
|
||||
local NewTime = os.time() - math.floor(CurTime())
|
||||
|
||||
local modedata = BennyGame:GetModeData()
|
||||
local modename = modedata and l8( modedata.name ) or "(unknown)"
|
||||
|
||||
local details = modename .. " on " .. BennyGame:GetMapName()
|
||||
local title = ""
|
||||
if BennyGame:GetState() == BG_STATE_ACTIVE then
|
||||
rpc_data["startTimestamp"] = NewTime + BennyGame:GetRoundStartedAt()
|
||||
rpc_data["endTimestamp"] = NewTime + BennyGame:GetRoundStartedAt() + BennyGame:GetTimeLimit()
|
||||
|
||||
local myteam = LocalPlayer():Team()
|
||||
local myteamscore = BennyGame:GetScoreForTeam( myteam )
|
||||
|
||||
if BennyGame.RTeamID[ myteam ] then
|
||||
-- In play
|
||||
local BiggestScore = 0
|
||||
|
||||
for TeamID, RealTeamID in ipairs( BennyGame.TeamsInPlay ) do
|
||||
if RealTeamID == myteam then continue end
|
||||
BiggestScore = math.max( BiggestScore, BennyGame:GetScoreForTeam( RealTeamID ) )
|
||||
end
|
||||
|
||||
if myteamscore > BiggestScore then
|
||||
details = details .. " ▪ Winning"
|
||||
elseif myteamscore == BiggestScore then
|
||||
details = details .. " ▪ Tied"
|
||||
else
|
||||
details = details .. " ▪ Losing"
|
||||
end
|
||||
else
|
||||
details = details .. " ▪ Spectating"
|
||||
end
|
||||
|
||||
local first = true
|
||||
if BennyGame.RTeamID[ myteam ] then
|
||||
details = details .. " ▪ " .. myteamscore
|
||||
first = false
|
||||
else
|
||||
details = details .. " ▪ "
|
||||
end
|
||||
|
||||
for TeamID, RealTeamID in ipairs( BennyGame.TeamsInPlay ) do
|
||||
if RealTeamID == myteam then continue end
|
||||
details = details .. (first and "" or "-") .. BennyGame:GetScoreForTeam( RealTeamID ) -- placeholder, i need a thing
|
||||
first = false
|
||||
end
|
||||
|
||||
elseif BennyGame:GetState() == BG_STATE_PRE then
|
||||
rpc_data["startTimestamp"] = NewTime + BennyGame:GetPregameStartedAt()
|
||||
rpc_data["endTimestamp"] = NewTime + BennyGame:GetPregameStartedAt() + BennyGame:GetPregameTime()
|
||||
|
||||
title = "Pregame"
|
||||
elseif BennyGame:GetState() == BG_STATE_POST then
|
||||
rpc_data["startTimestamp"] = NewTime + BennyGame:GetRoundFinishedAt()
|
||||
rpc_data["endTimestamp"] = NewTime + BennyGame:GetRoundFinishedAt() + BennyGame:GetPostgameTime()
|
||||
|
||||
title = "Postgame"
|
||||
elseif BennyGame:GetState() == BG_STATE_WAITINGFORPLAYERS then
|
||||
rpc_data["startTimestamp"] = nil--NewTime + BennyGame:GetRoundFinishedAt() + BennyGame:GetPostgameTime()
|
||||
rpc_data["endTimestamp"] = nil
|
||||
|
||||
title = "Waiting for Players"
|
||||
end
|
||||
|
||||
rpc_data["details"] = details
|
||||
rpc_data["state"] = title
|
||||
|
||||
DiscordUpdateRPC(rpc_data)
|
||||
end
|
||||
hook.Add("Think", "RPresence_Think_Discord", function()
|
||||
if !RPC_Initialized then
|
||||
DiscordRPCInitialize(RPC_AppID)
|
||||
DiscordUpdate()
|
||||
RPC_Initialized = true
|
||||
RPC_NextUpdate = RealTime() + 1
|
||||
end
|
||||
if RPC_NextUpdate <= RealTime() then
|
||||
DiscordUpdate()
|
||||
RPC_NextUpdate = RealTime() + 1
|
||||
end
|
||||
end)
|
||||
else
|
||||
print("A module is missing: gdiscord")
|
||||
end
|
||||
|
||||
if util.IsBinaryModuleInstalled("steamrichpresencer") then
|
||||
require("steamrichpresencer")
|
||||
function SteamUpdate()
|
||||
local title = "Your Name Is Benny"
|
||||
--title = " ▪ Domination on SixT"
|
||||
--title = " ▪ Winning"
|
||||
--title = " ▪ 999-10"
|
||||
|
||||
local modedata = BennyGame:GetModeData()
|
||||
local modename = modedata and l8( modedata.name ) or "(unknown)"
|
||||
|
||||
title = title .. " ▪ " .. modename .. " on " .. BennyGame:GetMapName()
|
||||
if BennyGame:GetState() == BG_STATE_ACTIVE then
|
||||
local myteam = LocalPlayer():Team()
|
||||
local myteamscore = BennyGame:GetScoreForTeam( myteam )
|
||||
|
||||
if BennyGame.RTeamID[ myteam ] then
|
||||
-- In play
|
||||
local BiggestScore = 0
|
||||
|
||||
for TeamID, RealTeamID in ipairs( BennyGame.TeamsInPlay ) do
|
||||
if RealTeamID == myteam then continue end
|
||||
BiggestScore = math.max( BiggestScore, BennyGame:GetScoreForTeam( RealTeamID ) )
|
||||
end
|
||||
|
||||
if myteamscore > BiggestScore then
|
||||
title = title .. " ▪ Winning"
|
||||
elseif myteamscore == BiggestScore then
|
||||
title = title .. " ▪ Tied"
|
||||
else
|
||||
title = title .. " ▪ Losing"
|
||||
end
|
||||
else
|
||||
title = title .. " ▪ Spectating"
|
||||
end
|
||||
|
||||
local first = true
|
||||
if BennyGame.RTeamID[ myteam ] then
|
||||
title = title .. " ▪ " .. myteamscore
|
||||
first = false
|
||||
else
|
||||
title = title .. " ▪ "
|
||||
end
|
||||
|
||||
for TeamID, RealTeamID in ipairs( BennyGame.TeamsInPlay ) do
|
||||
if RealTeamID == myteam then continue end
|
||||
title = title .. (first and "" or "-") .. BennyGame:GetScoreForTeam( RealTeamID ) -- placeholder, i need a thing
|
||||
first = false
|
||||
end
|
||||
|
||||
elseif BennyGame:GetState() == BG_STATE_PRE then
|
||||
title = title .. " ▪ Pregame"
|
||||
elseif BennyGame:GetState() == BG_STATE_POST then
|
||||
title = title .. " ▪ Postgame"
|
||||
elseif BennyGame:GetState() == BG_STATE_WAITINGFORPLAYERS then
|
||||
title = title .. " ▪ Waiting for Players"
|
||||
end
|
||||
|
||||
steamworks.SetRichPresence("generic", title)
|
||||
steamworks.SetRichPresence("steam_player_group", tostring(BennyGame:GetUUID()) )
|
||||
steamworks.SetRichPresence("steam_player_group_size", tostring(#player.GetHumans()) )
|
||||
end
|
||||
hook.Add("Think", "RPresence_Think_Steam", function()
|
||||
if (Steam_NextUpdate or 0) <= RealTime() then
|
||||
SteamUpdate()
|
||||
Steam_NextUpdate = RealTime() + 1
|
||||
end
|
||||
end)
|
||||
else
|
||||
print("A module is missing: steamrichpresencer")
|
||||
end
|
|
@ -66,6 +66,11 @@ IN("teams.lua")
|
|||
AC("pausemenu.lua")
|
||||
IN("pausemenu.lua")
|
||||
|
||||
AC("richpresence_test.lua")
|
||||
if CLIENT then
|
||||
IN("richpresence_test.lua")
|
||||
end
|
||||
|
||||
AC("debugmenu.lua")
|
||||
IN("debugmenu.lua")
|
||||
|
||||
|
|
Loading…
Reference in New Issue