Added addon to send player connect and disconnect
This commit is contained in:
commit
a22c226c97
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
server/
|
13
install_server.sh
Executable file
13
install_server.sh
Executable file
@ -0,0 +1,13 @@
|
||||
mkdir -p server/steam
|
||||
|
||||
cd server/steam
|
||||
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
|
||||
tar xfvz steamcmd_linux.tar.gz
|
||||
rm steamcmd_linux.tar.gz
|
||||
|
||||
|
||||
cd ..
|
||||
./steam/steamcmd.sh +force_install_dir ../ +login anonymous +app_update 4020 validate +quit
|
||||
|
||||
cd ..
|
||||
echo "done"
|
85
src/sh_ontime_handler_gmod.lua
Normal file
85
src/sh_ontime_handler_gmod.lua
Normal file
@ -0,0 +1,85 @@
|
||||
local config = {}
|
||||
|
||||
function error(message, err)
|
||||
print("Sh_ONTIME_HANDLER", "ERROR", message, err)
|
||||
end
|
||||
|
||||
function info(message)
|
||||
print("Sh_ONTIME_HANDLER", "INFO", message)
|
||||
end
|
||||
|
||||
function readConfig()
|
||||
local JSONData = file.Read("config.json", "DATA")
|
||||
if JSONData == nil then
|
||||
error("Config not found!")
|
||||
end
|
||||
|
||||
config = util.JSONToTable(JSONData)
|
||||
if config == nil || config.apiURL == nil || config.apiKey == nil then
|
||||
error("Invalid config!")
|
||||
exit()
|
||||
end
|
||||
info("Config loaded")
|
||||
end
|
||||
|
||||
local function getUserJoinedMutation(id)
|
||||
return util.TableToJSON({
|
||||
query = "mutation { userJoinedGameServer { userJoined(input: { ident: \"" .. id .. "\" }) { id } } }"
|
||||
})
|
||||
end
|
||||
|
||||
local function getUserLeftMutation(id)
|
||||
return util.TableToJSON({
|
||||
['query'] = "mutation { userJoinedGameServer { userLeft(input: { ident: \"" .. id .. "\" }) { id } } }"
|
||||
})
|
||||
end
|
||||
|
||||
function sendJoinedPlayer(id)
|
||||
HTTP({
|
||||
url=config.apiURL,
|
||||
method="POST",
|
||||
headers={
|
||||
['Authorization']="API-Key " .. config.apiKey
|
||||
},
|
||||
type="application/json",
|
||||
success=function( code, body, headers )
|
||||
end,
|
||||
failed=function( err )
|
||||
error("Cannot send player joined", err)
|
||||
end,
|
||||
body=getUserJoinedMutation(id)
|
||||
})
|
||||
end
|
||||
|
||||
function sendLeftPlayer(id)
|
||||
HTTP({
|
||||
url=config.apiURL,
|
||||
method="POST",
|
||||
headers={
|
||||
['Authorization']="API-Key " .. config.apiKey
|
||||
},
|
||||
type="application/json",
|
||||
success=function( code, body, headers )
|
||||
end,
|
||||
failed=function( err )
|
||||
error("Cannot send player joined", err)
|
||||
end,
|
||||
body=getUserLeftMutation(id)
|
||||
})
|
||||
end
|
||||
|
||||
info("Loading")
|
||||
readConfig()
|
||||
|
||||
info("Listening")
|
||||
gameevent.Listen( "player_connect" )
|
||||
hook.Add("player_connect", "HandlePlayerConnect", function( data )
|
||||
info(string.format("Player %s connected", data.name))
|
||||
sendJoinedPlayer(data.networkid)
|
||||
end)
|
||||
|
||||
gameevent.Listen( "player_disconnect" )
|
||||
hook.Add("player_disconnect", "HandlePlayerDisconnect", function( data )
|
||||
info(string.format("Player %s disconnected", data.name))
|
||||
sendLeftPlayer(data.networkid)
|
||||
end)
|
9
start_server.sh
Executable file
9
start_server.sh
Executable file
@ -0,0 +1,9 @@
|
||||
mkdir -p server/garrysmod/lua/autorun/server/sh_ontime_handler_gmod
|
||||
|
||||
cp src/* server/garrysmod/lua/autorun/server/
|
||||
|
||||
|
||||
cd server
|
||||
./srcds_run -game garrysmod -game garrysmod +map gm_construct +ip 0.0.0.0 -allowlocalhttp
|
||||
|
||||
cd ..
|
Loading…
Reference in New Issue
Block a user