First noxapi implementation. No functionality yet.
This is a test to see if the cache feature is working and the API calls are within reasonable amounts.
This commit is contained in:
parent
8cbfdaf59f
commit
11c4a73414
3 changed files with 59 additions and 16 deletions
|
@ -1 +1 @@
|
|||
|
||||
-- nothing
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
-- TODO: Make requests buffer for 3 seconds or so using ?steamids=a,b,c,d
|
||||
-- TODO: _SUPPORTER_ needs to be networked
|
||||
|
||||
local SUPPORTER_MESSAGE = "JetBoom says \"thank you for supporting my gamemodes!\" to you."
|
||||
local SUPPORTER_MESSAGE = "JetBoom says: thank you for supporting my gamemodes!"
|
||||
|
||||
local CACHE = {
|
||||
MaxSize = 128,
|
||||
BufferTime = 6,
|
||||
Cache = {}
|
||||
}
|
||||
|
||||
local Buffer = {}
|
||||
|
||||
function CACHE:Set(steamid, memberlevel, nolookup)
|
||||
if nolookup then
|
||||
table.insert(self.Cache, {steamid, memberlevel})
|
||||
|
@ -67,27 +67,69 @@ function CACHE:Load()
|
|||
end
|
||||
end
|
||||
|
||||
--[[hook.Add("PlayerInitialSpawn", "noxapi", function(pl)
|
||||
if NDB then return end
|
||||
function CACHE:BufferRequest()
|
||||
local IDS = {}
|
||||
for i=1, math.min(10, #Buffer) do
|
||||
IDS[#IDS + 1] = {Buffer[1][1], Buffer[1][2]}
|
||||
table.remove(Buffer, 1)
|
||||
end
|
||||
local SIDS = {}
|
||||
for k, v in pairs(IDS) do
|
||||
SIDS[k] = v[1]
|
||||
end
|
||||
|
||||
http.Fetch("http://www.noxiousnet.com/api/player/memberlevel?steamids="..table.concat(SIDS, ","), function(body, len, headers, code)
|
||||
local levels = string.Explode(",", body)
|
||||
if #levels == #SIDS then
|
||||
for k, v in pairs(levels) do
|
||||
local steamid = IDS[k][1]
|
||||
|
||||
local pl = IDS[k][2]
|
||||
if pl and pl:IsValid() then
|
||||
pl:SetDTBool(15, true)
|
||||
pl:PrintMessage(HUD_PRINTTALK, SUPPORTER_MESSAGE)
|
||||
end
|
||||
|
||||
CACHE:Set(steamid, level)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
if #Buffer > 0 then
|
||||
CACHE:WaitForBuffer()
|
||||
end
|
||||
end
|
||||
|
||||
function CACHE:WaitForBuffer()
|
||||
if not timer.Exists("noxapibuffer") then
|
||||
timer.Create("noxapibuffer", CACHE.BufferTime, 1, CACHE.BufferRequest)
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("PlayerInitialSpawn", "noxapi", function(pl)
|
||||
if NDB or pl:IsBot() then return end
|
||||
|
||||
local steamid = pl:SteamID()
|
||||
local memberlevel = CACHE:Get(steamid)
|
||||
if memberlevel then
|
||||
if level == 1 or level == 2 then
|
||||
pl._SUPPORTER_ = true
|
||||
pl:PrintMessage(HUD_PRINTCONSOLE, SUPPORTER_MESSAGE)
|
||||
pl:SetDTBool(15, true)
|
||||
pl:PrintMessage(HUD_PRINTTALK, SUPPORTER_MESSAGE)
|
||||
end
|
||||
else
|
||||
http.Fetch("http://www.noxiousnet.com/api/player/memberlevel?steamid="..steamid, function(body, len, headers, code)
|
||||
local level = tonumber(body) or 0
|
||||
|
||||
if level == 1 or level == 2 then
|
||||
pl._SUPPORTER_ = true
|
||||
pl:PrintMessage(HUD_PRINTCONSOLE, SUPPORTER_MESSAGE)
|
||||
pl:SetDTBool(15, true)
|
||||
pl:PrintMessage(HUD_PRINTTALK, SUPPORTER_MESSAGE)
|
||||
end
|
||||
|
||||
CACHE:Set(steamid, level)
|
||||
end)
|
||||
|
||||
table.insert(Buffer, {steamid, pl})
|
||||
CACHE:WaitForBuffer()
|
||||
end
|
||||
end)
|
||||
|
||||
|
@ -106,7 +148,8 @@ hook.Add("ShutDown", "noxapi", function()
|
|||
end)
|
||||
|
||||
concommand.Add("noxapi_forcerefresh", function(sender, command, arguments)
|
||||
if NDB or sender._ForcedNoxAPILookup or sender._SUPPORTER_ then return end
|
||||
if sender._ForcedNoxAPILookup or sender:IsNoxSupporter() then return end
|
||||
|
||||
sender._ForcedNoxAPILookup = true
|
||||
|
||||
local steamid = sender:SteamID()
|
||||
|
@ -117,10 +160,10 @@ concommand.Add("noxapi_forcerefresh", function(sender, command, arguments)
|
|||
local level = tonumber(body) or 0
|
||||
|
||||
if level == 1 or level == 2 then
|
||||
pl._SUPPORTER_ = true
|
||||
pl:PrintMessage(HUD_PRINTCONSOLE, SUPPORTER_MESSAGE)
|
||||
pl:SetDTBool(15, true)
|
||||
pl:PrintMessage(HUD_PRINTTALK, SUPPORTER_MESSAGE)
|
||||
end
|
||||
|
||||
CACHE:Set(steamid, level)
|
||||
end)
|
||||
end)]]
|
||||
end)
|
||||
|
|
|
@ -7,5 +7,5 @@ function meta:IsNoxSupporter()
|
|||
return memberlevel == MEMBER_GOLD or memberlevel == MEMBER_DIAMOND
|
||||
end
|
||||
|
||||
return self._SUPPORTER_
|
||||
return self:GetDTBool(15)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue