Advertisement
Guest User

Network

a guest
Aug 19th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. local util = require(script.Parent)
  2.  
  3. local Event = util.get "Event"
  4. local ReplicatedStorage = util.services.ReplicatedStorage
  5. local RunService = util.services.RunService
  6. local Players = util.services.Players
  7.  
  8. local networkEvent
  9. local networkFunction
  10.  
  11. if not ReplicatedStorage:FindFirstChild("networkEvent") and RunService:IsServer() then -- Need to do the first condition for play solo testing
  12. networkEvent = Instance.new("RemoteEvent")
  13. networkEvent.Name = "networkEvent"
  14.  
  15. networkFunction = Instance.new("RemoteFunction")
  16. networkFunction.Name = "networkFunction"
  17.  
  18. networkEvent.Parent = ReplicatedStorage
  19. networkFunction.Parent = ReplicatedStorage
  20. elseif RunService:IsClient() then
  21. networkEvent = ReplicatedStorage:WaitForChild("networkEvent")
  22. networkFunction = ReplicatedStorage:WaitForChild("networkFunction")
  23. end
  24.  
  25. --
  26.  
  27. local networkUtil = {}
  28.  
  29. networkUtil.events = {} -- [name] = {func, ...}
  30. networkUtil.callbacks = {}
  31.  
  32. --
  33.  
  34. if RunService:IsServer() then
  35. networkEvent.OnServerEvent:Connect(function(playerObject, name, ...)
  36. if networkUtil.events[name] then
  37. networkUtil.events[name]:fire(playerObject, ...)
  38. end
  39. end)
  40.  
  41. networkFunction.OnServerInvoke = function(playerObject, name, ...)
  42. if networkUtil.callbacks[name] then
  43. return networkUtil.callbacks[name](playerObject, ...)
  44. end
  45. end
  46. end
  47.  
  48. if RunService:IsClient() then
  49. networkEvent.OnClientEvent:Connect(function(name, ...)
  50. if networkUtil.events[name] then
  51. networkUtil.events[name]:fire(...)
  52. end
  53. end)
  54.  
  55. networkFunction.OnClientInvoke = function(name, ...)
  56. if networkUtil.callbacks[name] then
  57. return networkUtil.callbacks[name](...)
  58. end
  59. end
  60. end
  61. --
  62.  
  63. function networkUtil:fireClient(playerObject, name, ...)
  64. networkEvent:FireClient(playerObject, name, ...)
  65. end
  66.  
  67. function networkUtil:fireAllClients(name, ...)
  68. networkEvent:FireAllClients(name, ...)
  69. end
  70.  
  71. function networkUtil:fireOtherClients(playerObject, name, ...)
  72. for _, otherPlayerObject in next, Players:GetPlayers() do
  73. if otherPlayerObject ~= playerObject then
  74. networkEvent:FireClient(otherPlayerObject, name, ...)
  75. end
  76. end
  77. end
  78.  
  79. function networkUtil:fireServer(name, ...)
  80. networkEvent:FireServer(name, ...)
  81. end
  82.  
  83. function networkUtil:invokeClient(playerObject, name, ...)
  84. return networkFunction:InvokeClient(playerObject, name, ...)
  85. end
  86.  
  87. function networkUtil:invokeServer(name, ...)
  88. return networkFunction:InvokeServer(name, ...)
  89. end
  90.  
  91. function networkUtil:createEventListener(name, func)
  92. if not self.events[name] then
  93. self.events[name] = Event.new()
  94. end
  95. return self.events[name]:connect(func)
  96. end
  97.  
  98. function networkUtil:setCallback(name, callback)
  99. self.callbacks[name] = callback
  100. end
  101.  
  102. return networkUtil
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement