SyntaxGameServer/RCCService2021/ExtraContent/scripts/CoreScripts/Modules/FriendingUtility.lua

60 lines
1.8 KiB
Lua

local HttpService = game:GetService("HttpService")
local HttpRbxApiService = game:GetService("HttpRbxApiService")
local StarterGui = game:GetService("StarterGui")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
while not LocalPlayer do
Players:GetPropertyChangedSignal("LocalPlayer"):Wait()
LocalPlayer = Players.LocalPlayer
end
local FriendingUtility = {}
FriendingUtility.__index = FriendingUtility
local MAX_FRIEND_COUNT = 200
local BaseUrl = game:GetService("ContentProvider").BaseUrl:lower()
BaseUrl = string.gsub(BaseUrl, "http:", "https:")
local FriendCountUrl = string.gsub(BaseUrl, "www", "friends") .. "v1/users/{userId}/friends/count"
function FriendingUtility:GetFriendCountAsync(userId)
local friendCount = nil
local wasSuccess, result = pcall(function()
local url = string.gsub(FriendCountUrl,"{userId}",tostring(userId))
return HttpRbxApiService:GetAsyncFullUrl(url)
end)
if not wasSuccess then
print(FriendCountUrl,"failed because", result)
return nil
end
result = HttpService:JSONDecode(result)
if result["count"] then
friendCount = result["count"]
end
return friendCount
end
function FriendingUtility:MaxFriendCount()
return MAX_FRIEND_COUNT
end
local PlayerFriendedEvent = Instance.new("BindableEvent")
local PlayerUnFriendedEvent = Instance.new("BindableEvent")
LocalPlayer.FriendStatusChanged:connect(function(player, friendStatus)
if friendStatus == Enum.FriendStatus.Friend then
PlayerFriendedEvent:Fire(player)
elseif friendStatus == Enum.FriendStatus.NotFriend then
PlayerUnFriendedEvent:Fire(player)
end
end)
StarterGui:RegisterGetCore("PlayerFriendedEvent", function() return PlayerFriendedEvent end)
StarterGui:RegisterGetCore("PlayerUnfriendedEvent", function() return PlayerUnFriendedEvent end)
return FriendingUtility