roblox-opencode 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -122
- package/commands/setup-game.md +108 -108
- package/commands/sync-check.md +53 -53
- package/core/roblox-core.md +93 -93
- package/dist/server.js +189 -167
- package/package.json +35 -35
- package/skills/roblox-analytics/SKILL.md +277 -277
- package/skills/roblox-analytics/references/event-batcher.luau +75 -75
- package/skills/roblox-animation-vfx/SKILL.md +1325 -1325
- package/skills/roblox-architecture/SKILL.md +877 -863
- package/skills/roblox-architecture/references/combat-systems.md +1381 -1381
- package/skills/roblox-code-review/SKILL.md +686 -686
- package/skills/roblox-data/SKILL.md +889 -889
- package/skills/roblox-data/references/inventory-systems.md +1729 -1729
- package/skills/roblox-debug/SKILL.md +98 -98
- package/skills/roblox-gui/SKILL.md +1103 -1103
- package/skills/roblox-gui-fusion/SKILL.md +150 -150
- package/skills/roblox-gui-fusion/references/inventory.luau +427 -427
- package/skills/roblox-gui-fusion/references/settings-menu.luau +579 -579
- package/skills/roblox-gui-fusion/references/shop.luau +411 -411
- package/skills/roblox-luau-mastery/SKILL.md +1618 -1519
- package/skills/roblox-monetization/SKILL.md +1084 -1084
- package/skills/roblox-monetization/references/process-receipt.luau +131 -131
- package/skills/roblox-networking/SKILL.md +669 -669
- package/skills/roblox-networking/references/remote-validator.luau +193 -193
- package/skills/roblox-publish-checklist/SKILL.md +127 -127
- package/skills/roblox-runtime/SKILL.md +753 -753
- package/skills/roblox-sharp-edges/SKILL.md +294 -294
- package/skills/roblox-sync/SKILL.md +126 -126
- package/skills/roblox-testing/SKILL.md +943 -943
- package/skills/roblox-tooling/SKILL.md +149 -149
- package/vendor/LICENSES/ProfileStore-LICENSE +201 -201
- package/vendor/LICENSES/RbxUtil-LICENSE +7 -7
- package/vendor/LICENSES/promise-LICENSE +20 -20
- package/vendor/LICENSES/t-LICENSE +21 -21
- package/vendor/LICENSES/testez-LICENSE +200 -200
- package/vendor/README.md +83 -83
- package/vendor/fusion/Animation/ExternalTime.luau +83 -83
- package/vendor/fusion/Animation/Spring.luau +321 -321
- package/vendor/fusion/Animation/Stopwatch.luau +127 -127
- package/vendor/fusion/Animation/Tween.luau +187 -187
- package/vendor/fusion/Animation/getTweenDuration.luau +27 -27
- package/vendor/fusion/Animation/getTweenRatio.luau +47 -47
- package/vendor/fusion/Animation/lerpType.luau +163 -163
- package/vendor/fusion/Animation/packType.luau +99 -99
- package/vendor/fusion/Animation/springCoefficients.luau +80 -80
- package/vendor/fusion/Animation/unpackType.luau +102 -102
- package/vendor/fusion/Colour/Oklab.luau +70 -70
- package/vendor/fusion/Colour/sRGB.luau +54 -54
- package/vendor/fusion/External.luau +167 -167
- package/vendor/fusion/ExternalDebug.luau +69 -69
- package/vendor/fusion/Graph/Observer.luau +113 -113
- package/vendor/fusion/Graph/castToGraph.luau +28 -28
- package/vendor/fusion/Graph/change.luau +80 -80
- package/vendor/fusion/Graph/depend.luau +32 -32
- package/vendor/fusion/Graph/evaluate.luau +55 -55
- package/vendor/fusion/Instances/Attribute.luau +57 -57
- package/vendor/fusion/Instances/AttributeChange.luau +46 -46
- package/vendor/fusion/Instances/AttributeOut.luau +63 -63
- package/vendor/fusion/Instances/Child.luau +21 -21
- package/vendor/fusion/Instances/Children.luau +147 -147
- package/vendor/fusion/Instances/Hydrate.luau +32 -32
- package/vendor/fusion/Instances/New.luau +52 -52
- package/vendor/fusion/Instances/OnChange.luau +49 -49
- package/vendor/fusion/Instances/OnEvent.luau +53 -53
- package/vendor/fusion/Instances/Out.luau +69 -69
- package/vendor/fusion/Instances/applyInstanceProps.luau +148 -148
- package/vendor/fusion/Instances/defaultProps.luau +194 -194
- package/vendor/fusion/LICENSE +21 -21
- package/vendor/fusion/Logging/formatError.luau +48 -48
- package/vendor/fusion/Logging/messages.luau +51 -51
- package/vendor/fusion/Logging/parseError.luau +24 -24
- package/vendor/fusion/Memory/checkLifetime.luau +133 -133
- package/vendor/fusion/Memory/deriveScope.luau +23 -23
- package/vendor/fusion/Memory/deriveScopeImpl.luau +44 -44
- package/vendor/fusion/Memory/doCleanup.luau +78 -78
- package/vendor/fusion/Memory/innerScope.luau +33 -33
- package/vendor/fusion/Memory/legacyCleanup.luau +17 -17
- package/vendor/fusion/Memory/needsDestruction.luau +16 -16
- package/vendor/fusion/Memory/poisonScope.luau +33 -33
- package/vendor/fusion/Memory/scopePool.luau +54 -54
- package/vendor/fusion/Memory/scoped.luau +26 -26
- package/vendor/fusion/Memory/whichLivesLonger.luau +74 -74
- package/vendor/fusion/RobloxExternal.luau +97 -97
- package/vendor/fusion/State/Computed.luau +138 -138
- package/vendor/fusion/State/For/Disassembly.luau +210 -210
- package/vendor/fusion/State/For/ForTypes.luau +30 -30
- package/vendor/fusion/State/For/init.luau +109 -109
- package/vendor/fusion/State/ForKeys.luau +93 -93
- package/vendor/fusion/State/ForPairs.luau +96 -96
- package/vendor/fusion/State/ForValues.luau +93 -93
- package/vendor/fusion/State/Value.luau +87 -87
- package/vendor/fusion/State/castToState.luau +25 -25
- package/vendor/fusion/State/peek.luau +30 -30
- package/vendor/fusion/Types.luau +314 -314
- package/vendor/fusion/Utility/Contextual.luau +90 -90
- package/vendor/fusion/Utility/Safe.luau +22 -22
- package/vendor/fusion/Utility/isSimilar.luau +29 -29
- package/vendor/fusion/Utility/merge.luau +35 -35
- package/vendor/fusion/Utility/nameOf.luau +34 -34
- package/vendor/fusion/Utility/never.luau +13 -13
- package/vendor/fusion/Utility/nicknames.luau +10 -10
- package/vendor/fusion/Utility/xtypeof.luau +26 -26
- package/vendor/fusion/init.luau +82 -82
- package/vendor/profilestore/init.luau +2242 -2242
- package/vendor/promise/init.luau +1982 -1982
- package/vendor/rbxutil/buffer-util/Buffer.test.luau +25 -25
- package/vendor/rbxutil/buffer-util/BufferReader.luau +228 -228
- package/vendor/rbxutil/buffer-util/BufferWriter.luau +269 -269
- package/vendor/rbxutil/buffer-util/DataTypeBuffer.luau +223 -223
- package/vendor/rbxutil/buffer-util/Types.luau +60 -60
- package/vendor/rbxutil/buffer-util/index.d.ts +153 -153
- package/vendor/rbxutil/buffer-util/init.luau +41 -41
- package/vendor/rbxutil/buffer-util/package.json +16 -16
- package/vendor/rbxutil/buffer-util/wally.toml +9 -9
- package/vendor/rbxutil/comm/Client/ClientComm.luau +232 -232
- package/vendor/rbxutil/comm/Client/ClientRemoteProperty.luau +156 -156
- package/vendor/rbxutil/comm/Client/ClientRemoteSignal.luau +109 -109
- package/vendor/rbxutil/comm/Client/init.luau +135 -135
- package/vendor/rbxutil/comm/Server/RemoteProperty.luau +295 -295
- package/vendor/rbxutil/comm/Server/RemoteSignal.luau +211 -211
- package/vendor/rbxutil/comm/Server/ServerComm.luau +211 -211
- package/vendor/rbxutil/comm/Server/init.luau +140 -140
- package/vendor/rbxutil/comm/Types.luau +18 -18
- package/vendor/rbxutil/comm/Util.luau +27 -27
- package/vendor/rbxutil/comm/init.luau +35 -35
- package/vendor/rbxutil/comm/wally.toml +13 -13
- package/vendor/rbxutil/component/init.luau +759 -759
- package/vendor/rbxutil/component/init.test.luau +311 -311
- package/vendor/rbxutil/component/wally.toml +14 -14
- package/vendor/rbxutil/concur/init.luau +542 -542
- package/vendor/rbxutil/concur/init.test.luau +364 -364
- package/vendor/rbxutil/concur/wally.toml +8 -8
- package/vendor/rbxutil/enum-list/init.luau +101 -101
- package/vendor/rbxutil/enum-list/init.test.luau +91 -91
- package/vendor/rbxutil/enum-list/wally.toml +8 -8
- package/vendor/rbxutil/find/index.d.ts +20 -20
- package/vendor/rbxutil/find/init.luau +44 -44
- package/vendor/rbxutil/find/package.json +17 -17
- package/vendor/rbxutil/find/wally.toml +8 -8
- package/vendor/rbxutil/input/Gamepad.luau +559 -559
- package/vendor/rbxutil/input/Keyboard.luau +124 -124
- package/vendor/rbxutil/input/Mouse.luau +278 -278
- package/vendor/rbxutil/input/PreferredInput.luau +91 -91
- package/vendor/rbxutil/input/Touch.luau +120 -120
- package/vendor/rbxutil/input/init.luau +33 -33
- package/vendor/rbxutil/input/wally.toml +12 -12
- package/vendor/rbxutil/loader/index.d.ts +15 -15
- package/vendor/rbxutil/loader/init.luau +137 -137
- package/vendor/rbxutil/loader/wally.toml +8 -8
- package/vendor/rbxutil/log/index.d.ts +38 -38
- package/vendor/rbxutil/log/init.luau +746 -746
- package/vendor/rbxutil/log/wally.toml +8 -8
- package/vendor/rbxutil/net/init.luau +190 -190
- package/vendor/rbxutil/net/wally.toml +8 -8
- package/vendor/rbxutil/option/index.d.ts +44 -44
- package/vendor/rbxutil/option/init.luau +489 -489
- package/vendor/rbxutil/option/init.test.luau +342 -342
- package/vendor/rbxutil/option/wally.toml +8 -8
- package/vendor/rbxutil/pid/index.d.ts +53 -53
- package/vendor/rbxutil/pid/init.luau +195 -195
- package/vendor/rbxutil/pid/package.json +16 -16
- package/vendor/rbxutil/pid/wally.toml +9 -9
- package/vendor/rbxutil/quaternion/index.d.ts +117 -117
- package/vendor/rbxutil/quaternion/init.luau +570 -570
- package/vendor/rbxutil/quaternion/package.json +16 -16
- package/vendor/rbxutil/quaternion/wally.toml +9 -9
- package/vendor/rbxutil/query/index.d.ts +43 -43
- package/vendor/rbxutil/query/init.luau +117 -117
- package/vendor/rbxutil/query/package.json +18 -18
- package/vendor/rbxutil/query/wally.toml +9 -9
- package/vendor/rbxutil/sequent/index.d.ts +28 -28
- package/vendor/rbxutil/sequent/init.luau +340 -340
- package/vendor/rbxutil/sequent/package.json +16 -16
- package/vendor/rbxutil/sequent/wally.toml +9 -9
- package/vendor/rbxutil/ser/init.luau +175 -175
- package/vendor/rbxutil/ser/init.test.luau +50 -50
- package/vendor/rbxutil/ser/wally.toml +11 -11
- package/vendor/rbxutil/shake/index.d.ts +36 -36
- package/vendor/rbxutil/shake/init.luau +532 -532
- package/vendor/rbxutil/shake/init.test.luau +267 -267
- package/vendor/rbxutil/shake/package.json +16 -16
- package/vendor/rbxutil/shake/wally.toml +9 -9
- package/vendor/rbxutil/signal/index.d.ts +100 -100
- package/vendor/rbxutil/signal/init.luau +432 -432
- package/vendor/rbxutil/signal/init.test.luau +190 -190
- package/vendor/rbxutil/signal/package.json +17 -17
- package/vendor/rbxutil/signal/wally.toml +9 -9
- package/vendor/rbxutil/silo/TableWatcher.luau +65 -65
- package/vendor/rbxutil/silo/Util.luau +55 -55
- package/vendor/rbxutil/silo/init.luau +338 -338
- package/vendor/rbxutil/silo/init.test.luau +215 -215
- package/vendor/rbxutil/silo/wally.toml +8 -8
- package/vendor/rbxutil/spring/index.d.ts +40 -40
- package/vendor/rbxutil/spring/init.luau +97 -97
- package/vendor/rbxutil/spring/package.json +17 -17
- package/vendor/rbxutil/spring/wally.toml +8 -8
- package/vendor/rbxutil/stream/index.d.ts +88 -88
- package/vendor/rbxutil/stream/init.luau +597 -597
- package/vendor/rbxutil/stream/package.json +18 -18
- package/vendor/rbxutil/stream/wally.toml +9 -9
- package/vendor/rbxutil/streamable/Streamable.luau +202 -202
- package/vendor/rbxutil/streamable/StreamableUtil.luau +80 -80
- package/vendor/rbxutil/streamable/init.luau +8 -8
- package/vendor/rbxutil/streamable/wally.toml +12 -12
- package/vendor/rbxutil/symbol/init.luau +56 -56
- package/vendor/rbxutil/symbol/init.test.luau +37 -37
- package/vendor/rbxutil/symbol/wally.toml +8 -8
- package/vendor/rbxutil/table-util/init.luau +938 -938
- package/vendor/rbxutil/table-util/init.test.luau +439 -439
- package/vendor/rbxutil/task-queue/index.d.ts +27 -27
- package/vendor/rbxutil/task-queue/init.luau +97 -97
- package/vendor/rbxutil/task-queue/wally.toml +8 -8
- package/vendor/rbxutil/timer/index.d.ts +81 -81
- package/vendor/rbxutil/timer/init.luau +249 -249
- package/vendor/rbxutil/timer/init.test.luau +73 -73
- package/vendor/rbxutil/timer/wally.toml +11 -11
- package/vendor/rbxutil/tree/index.d.ts +15 -15
- package/vendor/rbxutil/tree/init.luau +137 -137
- package/vendor/rbxutil/tree/wally.toml +8 -8
- package/vendor/rbxutil/trove/index.d.ts +46 -46
- package/vendor/rbxutil/trove/init.luau +787 -787
- package/vendor/rbxutil/trove/init.test.luau +203 -203
- package/vendor/rbxutil/trove/wally.toml +8 -8
- package/vendor/rbxutil/typed-remote/init.luau +196 -196
- package/vendor/rbxutil/typed-remote/wally.toml +8 -8
- package/vendor/rbxutil/wait-for/index.d.ts +17 -17
- package/vendor/rbxutil/wait-for/init.luau +257 -257
- package/vendor/rbxutil/wait-for/init.test.luau +182 -182
- package/vendor/rbxutil/wait-for/wally.toml +11 -11
- package/vendor/t/t.lua +1350 -1350
- package/vendor/testez/Context.lua +26 -26
- package/vendor/testez/Expectation.lua +311 -311
- package/vendor/testez/ExpectationContext.lua +38 -38
- package/vendor/testez/LifecycleHooks.lua +89 -89
- package/vendor/testez/Reporters/TeamCityReporter.lua +101 -101
- package/vendor/testez/Reporters/TextReporter.lua +105 -105
- package/vendor/testez/Reporters/TextReporterQuiet.lua +96 -96
- package/vendor/testez/TestBootstrap.lua +146 -146
- package/vendor/testez/TestEnum.lua +27 -27
- package/vendor/testez/TestPlan.lua +304 -304
- package/vendor/testez/TestPlanner.lua +39 -39
- package/vendor/testez/TestResults.lua +111 -111
- package/vendor/testez/TestRunner.lua +188 -188
- package/vendor/testez/TestSession.lua +243 -243
- package/vendor/testez/init.lua +39 -39
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
[package]
|
|
2
|
-
name = "sleitnick/log"
|
|
3
|
-
description = "Log class for logging to PlayFab"
|
|
4
|
-
version = "0.1.2"
|
|
5
|
-
license = "MIT"
|
|
6
|
-
authors = ["Stephen Leitnick"]
|
|
7
|
-
registry = "https://github.com/UpliftGames/wally-index"
|
|
8
|
-
realm = "shared"
|
|
1
|
+
[package]
|
|
2
|
+
name = "sleitnick/log"
|
|
3
|
+
description = "Log class for logging to PlayFab"
|
|
4
|
+
version = "0.1.2"
|
|
5
|
+
license = "MIT"
|
|
6
|
+
authors = ["Stephen Leitnick"]
|
|
7
|
+
registry = "https://github.com/UpliftGames/wally-index"
|
|
8
|
+
realm = "shared"
|
|
@@ -1,190 +1,190 @@
|
|
|
1
|
-
local RunService = game:GetService("RunService")
|
|
2
|
-
|
|
3
|
-
--[=[
|
|
4
|
-
@class Net
|
|
5
|
-
Basic networking module for creating and handling static
|
|
6
|
-
RemoteEvents and RemoteFunctions.
|
|
7
|
-
]=]
|
|
8
|
-
local Net = {}
|
|
9
|
-
|
|
10
|
-
--[=[
|
|
11
|
-
Gets a RemoteEvent with the given name.
|
|
12
|
-
|
|
13
|
-
On the server, if the RemoteEvent does not exist, then
|
|
14
|
-
it will be created with the given name.
|
|
15
|
-
|
|
16
|
-
On the client, if the RemoteEvent does not exist, then
|
|
17
|
-
it will wait until it exists for at least 10 seconds.
|
|
18
|
-
If the RemoteEvent does not exist after 10 seconds, an
|
|
19
|
-
error will be thrown.
|
|
20
|
-
|
|
21
|
-
```lua
|
|
22
|
-
local remoteEvent = Net:RemoteEvent("PointsChanged")
|
|
23
|
-
```
|
|
24
|
-
]=]
|
|
25
|
-
function Net:RemoteEvent(name: string): RemoteEvent
|
|
26
|
-
name = "RE/" .. name
|
|
27
|
-
if RunService:IsServer() then
|
|
28
|
-
local r = script:FindFirstChild(name)
|
|
29
|
-
if not r then
|
|
30
|
-
r = Instance.new("RemoteEvent")
|
|
31
|
-
r.Name = name
|
|
32
|
-
r.Parent = script
|
|
33
|
-
end
|
|
34
|
-
return r
|
|
35
|
-
else
|
|
36
|
-
local r = script:WaitForChild(name, 10)
|
|
37
|
-
if not r then
|
|
38
|
-
error("Failed to find RemoteEvent: " .. name, 2)
|
|
39
|
-
end
|
|
40
|
-
return r
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
--[=[
|
|
45
|
-
Gets an UnreliableRemoteEvent with the given name.
|
|
46
|
-
|
|
47
|
-
On the server, if the UnreliableRemoteEvent does not
|
|
48
|
-
exist, then it will be created with the given name.
|
|
49
|
-
|
|
50
|
-
On the client, if the UnreliableRemoteEvent does not
|
|
51
|
-
exist, then it will wait until it exists for at least
|
|
52
|
-
10 seconds. If the UnreliableRemoteEvent does not exist
|
|
53
|
-
after 10 seconds, an error will be thrown.
|
|
54
|
-
|
|
55
|
-
```lua
|
|
56
|
-
local unreliableRemoteEvent = Net:UnreliableRemoteEvent("PositionChanged")
|
|
57
|
-
```
|
|
58
|
-
]=]
|
|
59
|
-
function Net:UnreliableRemoteEvent(name: string): UnreliableRemoteEvent
|
|
60
|
-
name = "URE/" .. name
|
|
61
|
-
if RunService:IsServer() then
|
|
62
|
-
local r = script:FindFirstChild(name)
|
|
63
|
-
if not r then
|
|
64
|
-
r = Instance.new("UnreliableRemoteEvent")
|
|
65
|
-
r.Name = name
|
|
66
|
-
r.Parent = script
|
|
67
|
-
end
|
|
68
|
-
return r
|
|
69
|
-
else
|
|
70
|
-
local r = script:WaitForChild(name, 10)
|
|
71
|
-
if not r then
|
|
72
|
-
error("Failed to find UnreliableRemoteEvent: " .. name, 2)
|
|
73
|
-
end
|
|
74
|
-
return r
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
--[=[
|
|
79
|
-
Connects a handler function to the given RemoteEvent.
|
|
80
|
-
|
|
81
|
-
```lua
|
|
82
|
-
-- Client
|
|
83
|
-
Net:Connect("PointsChanged", function(points)
|
|
84
|
-
print("Points", points)
|
|
85
|
-
end)
|
|
86
|
-
|
|
87
|
-
-- Server
|
|
88
|
-
Net:Connect("SomeEvent", function(player, ...) end)
|
|
89
|
-
```
|
|
90
|
-
]=]
|
|
91
|
-
function Net:Connect(name: string, handler: (...any) -> ()): RBXScriptConnection
|
|
92
|
-
if RunService:IsServer() then
|
|
93
|
-
return self:RemoteEvent(name).OnServerEvent:Connect(handler)
|
|
94
|
-
else
|
|
95
|
-
return self:RemoteEvent(name).OnClientEvent:Connect(handler)
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
--[=[
|
|
100
|
-
Connects a handler function to the given UnreliableRemoteEvent.
|
|
101
|
-
|
|
102
|
-
```lua
|
|
103
|
-
-- Client
|
|
104
|
-
Net:ConnectUnreliable("PositionChanged", function(position)
|
|
105
|
-
print("Position", position)
|
|
106
|
-
end)
|
|
107
|
-
|
|
108
|
-
-- Server
|
|
109
|
-
Net:ConnectUnreliable("SomeEvent", function(player, ...) end)
|
|
110
|
-
```
|
|
111
|
-
]=]
|
|
112
|
-
function Net:ConnectUnreliable(name: string, handler: (...any) -> ()): RBXScriptConnection
|
|
113
|
-
if RunService:IsServer() then
|
|
114
|
-
return self:UnreliableRemoteEvent(name).OnServerEvent:Connect(handler)
|
|
115
|
-
else
|
|
116
|
-
return self:UnreliableRemoteEvent(name).OnClientEvent:Connect(handler)
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
--[=[
|
|
121
|
-
Gets a RemoteFunction with the given name.
|
|
122
|
-
|
|
123
|
-
On the server, if the RemoteFunction does not exist, then
|
|
124
|
-
it will be created with the given name.
|
|
125
|
-
|
|
126
|
-
On the client, if the RemoteFunction does not exist, then
|
|
127
|
-
it will wait until it exists for at least 10 seconds.
|
|
128
|
-
If the RemoteFunction does not exist after 10 seconds, an
|
|
129
|
-
error will be thrown.
|
|
130
|
-
|
|
131
|
-
```lua
|
|
132
|
-
local remoteFunction = Net:RemoteFunction("GetPoints")
|
|
133
|
-
```
|
|
134
|
-
]=]
|
|
135
|
-
function Net:RemoteFunction(name: string): RemoteFunction
|
|
136
|
-
name = "RF/" .. name
|
|
137
|
-
if RunService:IsServer() then
|
|
138
|
-
local r = script:FindFirstChild(name)
|
|
139
|
-
if not r then
|
|
140
|
-
r = Instance.new("RemoteFunction")
|
|
141
|
-
r.Name = name
|
|
142
|
-
r.Parent = script
|
|
143
|
-
end
|
|
144
|
-
return r
|
|
145
|
-
else
|
|
146
|
-
local r = script:WaitForChild(name, 10)
|
|
147
|
-
if not r then
|
|
148
|
-
error("Failed to find RemoteFunction: " .. name, 2)
|
|
149
|
-
end
|
|
150
|
-
return r
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
--[=[
|
|
155
|
-
@server
|
|
156
|
-
Sets the invocation function for the given RemoteFunction.
|
|
157
|
-
|
|
158
|
-
```lua
|
|
159
|
-
Net:Handle("GetPoints", function(player)
|
|
160
|
-
return 10
|
|
161
|
-
end)
|
|
162
|
-
```
|
|
163
|
-
]=]
|
|
164
|
-
function Net:Handle(name: string, handler: (player: Player, ...any) -> ...any)
|
|
165
|
-
self:RemoteFunction(name).OnServerInvoke = handler
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
--[=[
|
|
169
|
-
@client
|
|
170
|
-
Invokes the RemoteFunction with the given arguments.
|
|
171
|
-
|
|
172
|
-
```lua
|
|
173
|
-
local points = Net:Invoke("GetPoints")
|
|
174
|
-
```
|
|
175
|
-
]=]
|
|
176
|
-
function Net:Invoke(name: string, ...: any): ...any
|
|
177
|
-
return self:RemoteFunction(name):InvokeServer(...)
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
--[=[
|
|
181
|
-
@server
|
|
182
|
-
Destroys all RemoteEvents and RemoteFunctions. This
|
|
183
|
-
should really only be used in testing environments
|
|
184
|
-
and not during runtime.
|
|
185
|
-
]=]
|
|
186
|
-
function Net:Clean()
|
|
187
|
-
script:ClearAllChildren()
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
return Net
|
|
1
|
+
local RunService = game:GetService("RunService")
|
|
2
|
+
|
|
3
|
+
--[=[
|
|
4
|
+
@class Net
|
|
5
|
+
Basic networking module for creating and handling static
|
|
6
|
+
RemoteEvents and RemoteFunctions.
|
|
7
|
+
]=]
|
|
8
|
+
local Net = {}
|
|
9
|
+
|
|
10
|
+
--[=[
|
|
11
|
+
Gets a RemoteEvent with the given name.
|
|
12
|
+
|
|
13
|
+
On the server, if the RemoteEvent does not exist, then
|
|
14
|
+
it will be created with the given name.
|
|
15
|
+
|
|
16
|
+
On the client, if the RemoteEvent does not exist, then
|
|
17
|
+
it will wait until it exists for at least 10 seconds.
|
|
18
|
+
If the RemoteEvent does not exist after 10 seconds, an
|
|
19
|
+
error will be thrown.
|
|
20
|
+
|
|
21
|
+
```lua
|
|
22
|
+
local remoteEvent = Net:RemoteEvent("PointsChanged")
|
|
23
|
+
```
|
|
24
|
+
]=]
|
|
25
|
+
function Net:RemoteEvent(name: string): RemoteEvent
|
|
26
|
+
name = "RE/" .. name
|
|
27
|
+
if RunService:IsServer() then
|
|
28
|
+
local r = script:FindFirstChild(name)
|
|
29
|
+
if not r then
|
|
30
|
+
r = Instance.new("RemoteEvent")
|
|
31
|
+
r.Name = name
|
|
32
|
+
r.Parent = script
|
|
33
|
+
end
|
|
34
|
+
return r
|
|
35
|
+
else
|
|
36
|
+
local r = script:WaitForChild(name, 10)
|
|
37
|
+
if not r then
|
|
38
|
+
error("Failed to find RemoteEvent: " .. name, 2)
|
|
39
|
+
end
|
|
40
|
+
return r
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
--[=[
|
|
45
|
+
Gets an UnreliableRemoteEvent with the given name.
|
|
46
|
+
|
|
47
|
+
On the server, if the UnreliableRemoteEvent does not
|
|
48
|
+
exist, then it will be created with the given name.
|
|
49
|
+
|
|
50
|
+
On the client, if the UnreliableRemoteEvent does not
|
|
51
|
+
exist, then it will wait until it exists for at least
|
|
52
|
+
10 seconds. If the UnreliableRemoteEvent does not exist
|
|
53
|
+
after 10 seconds, an error will be thrown.
|
|
54
|
+
|
|
55
|
+
```lua
|
|
56
|
+
local unreliableRemoteEvent = Net:UnreliableRemoteEvent("PositionChanged")
|
|
57
|
+
```
|
|
58
|
+
]=]
|
|
59
|
+
function Net:UnreliableRemoteEvent(name: string): UnreliableRemoteEvent
|
|
60
|
+
name = "URE/" .. name
|
|
61
|
+
if RunService:IsServer() then
|
|
62
|
+
local r = script:FindFirstChild(name)
|
|
63
|
+
if not r then
|
|
64
|
+
r = Instance.new("UnreliableRemoteEvent")
|
|
65
|
+
r.Name = name
|
|
66
|
+
r.Parent = script
|
|
67
|
+
end
|
|
68
|
+
return r
|
|
69
|
+
else
|
|
70
|
+
local r = script:WaitForChild(name, 10)
|
|
71
|
+
if not r then
|
|
72
|
+
error("Failed to find UnreliableRemoteEvent: " .. name, 2)
|
|
73
|
+
end
|
|
74
|
+
return r
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
--[=[
|
|
79
|
+
Connects a handler function to the given RemoteEvent.
|
|
80
|
+
|
|
81
|
+
```lua
|
|
82
|
+
-- Client
|
|
83
|
+
Net:Connect("PointsChanged", function(points)
|
|
84
|
+
print("Points", points)
|
|
85
|
+
end)
|
|
86
|
+
|
|
87
|
+
-- Server
|
|
88
|
+
Net:Connect("SomeEvent", function(player, ...) end)
|
|
89
|
+
```
|
|
90
|
+
]=]
|
|
91
|
+
function Net:Connect(name: string, handler: (...any) -> ()): RBXScriptConnection
|
|
92
|
+
if RunService:IsServer() then
|
|
93
|
+
return self:RemoteEvent(name).OnServerEvent:Connect(handler)
|
|
94
|
+
else
|
|
95
|
+
return self:RemoteEvent(name).OnClientEvent:Connect(handler)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
--[=[
|
|
100
|
+
Connects a handler function to the given UnreliableRemoteEvent.
|
|
101
|
+
|
|
102
|
+
```lua
|
|
103
|
+
-- Client
|
|
104
|
+
Net:ConnectUnreliable("PositionChanged", function(position)
|
|
105
|
+
print("Position", position)
|
|
106
|
+
end)
|
|
107
|
+
|
|
108
|
+
-- Server
|
|
109
|
+
Net:ConnectUnreliable("SomeEvent", function(player, ...) end)
|
|
110
|
+
```
|
|
111
|
+
]=]
|
|
112
|
+
function Net:ConnectUnreliable(name: string, handler: (...any) -> ()): RBXScriptConnection
|
|
113
|
+
if RunService:IsServer() then
|
|
114
|
+
return self:UnreliableRemoteEvent(name).OnServerEvent:Connect(handler)
|
|
115
|
+
else
|
|
116
|
+
return self:UnreliableRemoteEvent(name).OnClientEvent:Connect(handler)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
--[=[
|
|
121
|
+
Gets a RemoteFunction with the given name.
|
|
122
|
+
|
|
123
|
+
On the server, if the RemoteFunction does not exist, then
|
|
124
|
+
it will be created with the given name.
|
|
125
|
+
|
|
126
|
+
On the client, if the RemoteFunction does not exist, then
|
|
127
|
+
it will wait until it exists for at least 10 seconds.
|
|
128
|
+
If the RemoteFunction does not exist after 10 seconds, an
|
|
129
|
+
error will be thrown.
|
|
130
|
+
|
|
131
|
+
```lua
|
|
132
|
+
local remoteFunction = Net:RemoteFunction("GetPoints")
|
|
133
|
+
```
|
|
134
|
+
]=]
|
|
135
|
+
function Net:RemoteFunction(name: string): RemoteFunction
|
|
136
|
+
name = "RF/" .. name
|
|
137
|
+
if RunService:IsServer() then
|
|
138
|
+
local r = script:FindFirstChild(name)
|
|
139
|
+
if not r then
|
|
140
|
+
r = Instance.new("RemoteFunction")
|
|
141
|
+
r.Name = name
|
|
142
|
+
r.Parent = script
|
|
143
|
+
end
|
|
144
|
+
return r
|
|
145
|
+
else
|
|
146
|
+
local r = script:WaitForChild(name, 10)
|
|
147
|
+
if not r then
|
|
148
|
+
error("Failed to find RemoteFunction: " .. name, 2)
|
|
149
|
+
end
|
|
150
|
+
return r
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
--[=[
|
|
155
|
+
@server
|
|
156
|
+
Sets the invocation function for the given RemoteFunction.
|
|
157
|
+
|
|
158
|
+
```lua
|
|
159
|
+
Net:Handle("GetPoints", function(player)
|
|
160
|
+
return 10
|
|
161
|
+
end)
|
|
162
|
+
```
|
|
163
|
+
]=]
|
|
164
|
+
function Net:Handle(name: string, handler: (player: Player, ...any) -> ...any)
|
|
165
|
+
self:RemoteFunction(name).OnServerInvoke = handler
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
--[=[
|
|
169
|
+
@client
|
|
170
|
+
Invokes the RemoteFunction with the given arguments.
|
|
171
|
+
|
|
172
|
+
```lua
|
|
173
|
+
local points = Net:Invoke("GetPoints")
|
|
174
|
+
```
|
|
175
|
+
]=]
|
|
176
|
+
function Net:Invoke(name: string, ...: any): ...any
|
|
177
|
+
return self:RemoteFunction(name):InvokeServer(...)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
--[=[
|
|
181
|
+
@server
|
|
182
|
+
Destroys all RemoteEvents and RemoteFunctions. This
|
|
183
|
+
should really only be used in testing environments
|
|
184
|
+
and not during runtime.
|
|
185
|
+
]=]
|
|
186
|
+
function Net:Clean()
|
|
187
|
+
script:ClearAllChildren()
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
return Net
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
[package]
|
|
2
|
-
name = "sleitnick/net"
|
|
3
|
-
description = "Static networking module"
|
|
4
|
-
version = "0.2.0"
|
|
5
|
-
license = "MIT"
|
|
6
|
-
authors = ["Stephen Leitnick"]
|
|
7
|
-
registry = "https://github.com/UpliftGames/wally-index"
|
|
8
|
-
realm = "shared"
|
|
1
|
+
[package]
|
|
2
|
+
name = "sleitnick/net"
|
|
3
|
+
description = "Static networking module"
|
|
4
|
+
version = "0.2.0"
|
|
5
|
+
license = "MIT"
|
|
6
|
+
authors = ["Stephen Leitnick"]
|
|
7
|
+
registry = "https://github.com/UpliftGames/wally-index"
|
|
8
|
+
realm = "shared"
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
declare namespace Option {
|
|
2
|
-
interface Constructor {
|
|
3
|
-
readonly None: Option<never>;
|
|
4
|
-
|
|
5
|
-
Some: <T>(value: NonNullable<T>) => Option<T>;
|
|
6
|
-
Wrap: <T>(value: T) => Option<T>;
|
|
7
|
-
Is: (value: unknown) => boolean;
|
|
8
|
-
Assert: (value: unknown) => void;
|
|
9
|
-
Deserialize: <T>(data: SerializedOption<T>) => Option<T>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
interface SerializedOption<T> {
|
|
13
|
-
ClassName: "Option";
|
|
14
|
-
Value?: T;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface Match<T, V> {
|
|
18
|
-
Some: (value: T) => V;
|
|
19
|
-
None: () => V;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
interface Option<T> {
|
|
24
|
-
Serialize(): Option.SerializedOption<T>;
|
|
25
|
-
Match<V>(match: Option.Match<T, V>): V;
|
|
26
|
-
IsSome(): boolean;
|
|
27
|
-
IsNone(): boolean;
|
|
28
|
-
Expect(msg: string): T;
|
|
29
|
-
ExpectNone(msg: string): void;
|
|
30
|
-
Unwrap(): T;
|
|
31
|
-
UnwrapOr(defaultValue: T): T;
|
|
32
|
-
UnwrapOrElse(defaultFn: () => T): T;
|
|
33
|
-
And<O>(optionB: Option<O>): Option<O>;
|
|
34
|
-
AndThen<V>(andThenFn: (value: T) => V): Option<V>;
|
|
35
|
-
Or<O>(optionB: Option<O>): Option<T> | Option<O>;
|
|
36
|
-
OrElse<V>(orElseFn: (value: T) => V): Option<V>;
|
|
37
|
-
XOr<O>(optionB: Option<O>): Option<T> | Option<O>;
|
|
38
|
-
Filter(predicate: (value: T) => boolean): Option<T>;
|
|
39
|
-
Contains(value: T): boolean;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
declare const Option: Option.Constructor;
|
|
43
|
-
|
|
44
|
-
export = Option;
|
|
1
|
+
declare namespace Option {
|
|
2
|
+
interface Constructor {
|
|
3
|
+
readonly None: Option<never>;
|
|
4
|
+
|
|
5
|
+
Some: <T>(value: NonNullable<T>) => Option<T>;
|
|
6
|
+
Wrap: <T>(value: T) => Option<T>;
|
|
7
|
+
Is: (value: unknown) => boolean;
|
|
8
|
+
Assert: (value: unknown) => void;
|
|
9
|
+
Deserialize: <T>(data: SerializedOption<T>) => Option<T>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface SerializedOption<T> {
|
|
13
|
+
ClassName: "Option";
|
|
14
|
+
Value?: T;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface Match<T, V> {
|
|
18
|
+
Some: (value: T) => V;
|
|
19
|
+
None: () => V;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface Option<T> {
|
|
24
|
+
Serialize(): Option.SerializedOption<T>;
|
|
25
|
+
Match<V>(match: Option.Match<T, V>): V;
|
|
26
|
+
IsSome(): boolean;
|
|
27
|
+
IsNone(): boolean;
|
|
28
|
+
Expect(msg: string): T;
|
|
29
|
+
ExpectNone(msg: string): void;
|
|
30
|
+
Unwrap(): T;
|
|
31
|
+
UnwrapOr(defaultValue: T): T;
|
|
32
|
+
UnwrapOrElse(defaultFn: () => T): T;
|
|
33
|
+
And<O>(optionB: Option<O>): Option<O>;
|
|
34
|
+
AndThen<V>(andThenFn: (value: T) => V): Option<V>;
|
|
35
|
+
Or<O>(optionB: Option<O>): Option<T> | Option<O>;
|
|
36
|
+
OrElse<V>(orElseFn: (value: T) => V): Option<V>;
|
|
37
|
+
XOr<O>(optionB: Option<O>): Option<T> | Option<O>;
|
|
38
|
+
Filter(predicate: (value: T) => boolean): Option<T>;
|
|
39
|
+
Contains(value: T): boolean;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare const Option: Option.Constructor;
|
|
43
|
+
|
|
44
|
+
export = Option;
|