Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. -- EXAMPLE OF CLIENT-SERVER COMM WITH LUANOID. CLIENT DOESNT REQUEST CHARS.
  2.  
  3. local ReplicatedFirst = game:GetService("ReplicatedFirst")
  4. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  5.  
  6.  
  7. local apiObjects = Instance.new("Folder")
  8. apiObjects.Name = "CharacterControllerApi"
  9. apiObjects.Parent = ReplicatedStorage
  10.  
  11. local Api = {}
  12.  
  13. Api.Spec = require(ReplicatedFirst.CharacterControllerCore.ApiSpec)
  14.  
  15. function Api.implement(implementation)
  16. for methodName, remoteData in pairs(Api.Spec.Methods) do
  17. local object = apiObjects:FindFirstChild(remoteData.Type) or Instance.new(remoteData.Type)
  18. object.Name = methodName
  19.  
  20. local serverMethod = implementation[methodName]
  21.  
  22. if not serverMethod then
  23. error(string.format("Server is missing implementation for client method %q", methodName))
  24. end
  25.  
  26. if remoteData.Type == "RemoteFunction" then
  27. if remoteData.ClientServer then -- can use for client-server comm
  28. object.OnServerInvoke = function(...)
  29. return serverMethod(...)
  30. end;
  31. end
  32. if remoteData.ServerClient then -- can use for server-client comm
  33. Api[methodName] = function(...)
  34. return object:InvokeClient(...)
  35. end
  36. end
  37.  
  38. elseif remoteData.Type == "RemoteEvent" then
  39. if remoteData.ClientServer then -- can use for client-server comm
  40. object.OnServerEvent:Connect(serverMethod)
  41. end
  42. if remoteData.ServerClient then -- can use for server-client comm
  43. Api[methodName] = function(players, ...)
  44. if type(players) == 'table' then
  45. for p=1,#players do
  46. local player = players[p]
  47. object:FireClient(player, ...)
  48. end
  49. else
  50. local player = players
  51. object:FireClient(player, ...)
  52. end
  53. end
  54. end
  55. end
  56.  
  57. object.Parent = apiObjects
  58. end
  59.  
  60.  
  61. end
  62.  
  63. return Api
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement