<SocialRainbow v1 | Rainbow button & frames & text addon

At least provide the .lua file for Pegasus or convert to .rbxmx. The only source code is on DevForum, and not GitHub which is quite most odd.

And there is no documentation or example on how to use the module. (Yeah I know they the methods are simple but documentation is a must or basically every module.)

Just my feedback.

umm, i can’t buy an domain… but i can put a documentation here, also i can put the source code on github
EDIT: i put the source code on github now

You can just put the documentation in the GitHub README like I did for my module.

As it currently stands, your README is pretty useless and uninformative.

ok, i gonna make that if i can, i will do my best

1 Like

ok I will help you with the documentation :wink: I know some markdown and I will do the documentation at markdown

the docs are now here!

this is the markdown preview

# Summary

### Constructors
new(`item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject), `it:` [`string`](https://create.roblox.com/docs/scripting/luau/strings), `cooldown:` [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?)|[]()
-|-
Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Rainbow`'s metatable

### Properties

Property | Details
-|-
`itemType` | This property is the `it` parameter
`item` | This property is the `item` parameter
`cooldown` | This property is either the `cooldown` parameter or `0`
`name` | This property shows the name, Defaults to `RainbowEffect(itemName)`
isPlaying | This property checks if the rainbow is playing
isPaused | This property checks if the rainbow is paused
finished | This property checks if the rainbow finished

### Methods

`Play(): void` | []()
-|-
The `Play()` function starts the rainbow at the `item` Parameter

`Pause(seconds:` [`number`](https://create.roblox.com/docs/scripting/luau/numbers) `): void` | []()
-|-
The `Pause()` function pauses the rainbow at the `item` Parameter until the `seconds` parameter has passed

`Stop(): void` | []()
-|-
The `Stop()` function Stops the rainbow at the `item` Parameter

### Events

`Played(item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject)`):` [`RBXScriptSignal`](https://create.roblox.com/docs/reference/engine/datatypes/RBXScriptSignal) | []()
-|-
This event will fire when the rainbow starts to play

`Paused(item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject)`):` [`RBXScriptSignal`](https://create.roblox.com/docs/reference/engine/datatypes/RBXScriptSignal) | []()
-|-
This event will fire when the rainbow pauses

`Stopped(item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject)`):` [`RBXScriptSignal`](https://create.roblox.com/docs/reference/engine/datatypes/RBXScriptSignal) | []()
-|-
This event will fire when the rainbow stops

# Constructors

### `rainbow.new()`

Creates a new `Rainbow` from the provided parameters

Parameter | Information
-|-
`item`: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) | The [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) that will be used for the rainbow
`it:` [`string`](https://create.roblox.com/docs/scripting/luau/strings) | The Item Type it will be rainbowed, Currently accepts `"border", "background", "text"`
`cooldown:` [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | The cooldown after each color change, Defaults to `0`

---

# Properties

### `itemType`

This property will return either `"Border"`, `"Background"`, or `"Text"`, depending on the `it` parameter

**Code Samples**

The Below example would say: `"Background is correct"`

```lua
local rainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

local r = rainbow.new(script.Parent, "Background", 0.1)

print(r.itemType.. "is correct")
```

### `item`
The property will return the `item` argument

**Code Samples**

The example below would print `"Frame is a good choice"`

```lua
local rainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

local r = rainbow.new(script.Parent, "Background", 0.1)

print(r.item.ClassName.. "is correct")
```

### `cooldown`
This property will return the `cooldown` argument if there is, otherwise it's `0`

**Code Sample**

This example will run the rainbow 5 times, then stops it

```lua
local SocialRainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

local r = SocialRainbow.new(script.Parent, "Background")

local coro = coroutine.create(function()
	for _ = 1, 5 do
		r:Play()
		task.wait(r.cooldown)
		r:Pause(r.cooldown)
	end
	r:Stop()
end)

coroutine.resume(coro)
```

### `name`
This property is the name of the `RenderStep` binding

**Code Sample**

This example would print `"RainbowEffectFrame is currently set"`

```lua
local SocialRainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

local r = SocialRainbow.new(script.Parent, "Background")

print(r.name, "is currently set")
```

### `isPlaying`

This property checks if the rainbow is playing, However, If `RunService:UnbindFromRenderStep(r.name)`, the `isPlaying` will still be true, the workaround is done using `r:Stop()` or `r:Pause(5)` so `isPlaying` will be false and unbinds from `RenderStep`

### `isPaused`

This property checks if the rainbow is paused, However, If `RunService:UnbindFromRenderStep(r.name)`, the `isPaused` will still be true, the workaround is done using `r:Pause(5)` so `isPaused` will be false and unbinds from `RenderStep`

### isFinished

This property checks if the rainbow is finished, However, If `RunService:UnbindFromRenderStep(r.name)` , the `isFinished` will still be true, the workaround is done using `r:Stop()` so `isFinished` will be false and unbinds from `RenderStep`

# Methods

### `Play()`

Starts the `Rainbow` set by the UI Selected

**Returns**

> `void`

**Code Samples**

This sample gives a simple demonstration of what each of the Rainbow functions (Rainbow.Play, Rainbow.Stop and Rainbow.Pause).

```lua
-- Require the SocialRainbow module
local SocialRainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

-- Create a new Rainbow and play it
local rainbow = Rainbow.new(script.Parent, "Background", 1)
rainbow:Play()

-- Pause the Rainbow when the mouse enters the GuiObject
script.Parent.MouseEnter:Connect(function()
	rainbow:Pause()
end)

-- Stop the Rainbow when the mouse leaves the GuiObject
script.Parent.MouseButton1Click:Connect(function()
	rainbow:Stop()
end)
```

### `Pause()`

Pauses the `Rainbow` until a certain amount of seconds have passed

**Parameters**

[]()|[]()
-|-
`seconds:` [`number`](https://create.roblox.com/docs/scripting/luau/numbers) | the seconds to pass after the `Rainbow` is paused, The minimum is `0.1`, and the maximum is `100,000`, and automatically clamps the value

**Returns**

> `void`

**Code Samples**

This sample gives a simple demonstration of what each of the Rainbow functions (Rainbow.Play, Rainbow.Stop and Rainbow.Pause).

```lua
-- Require the SocialRainbow module
local SocialRainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

-- Create a new Rainbow and play it
local rainbow = Rainbow.new(script.Parent, "Background", 1)
rainbow:Play()

-- Pause the Rainbow when the mouse enters the GuiObject
script.Parent.MouseEnter:Connect(function()
	rainbow:Pause()
end)

-- Stop the Rainbow when the mouse leaves the GuiObject
script.Parent.MouseButton1Click:Connect(function()
	rainbow:Stop()
end)
```

### `Stop()`

Stops the `Rainbow` and is permanent unlike `Rainbow:Pause(seconds)`

**Returns**

> void

**Code Samples**

This sample gives a simple demonstration of what each of the Rainbow functions (Rainbow.Play, Rainbow.Stop and Rainbow.Pause).

```lua
-- Require the SocialRainbow module
local SocialRainbow = require(game:GetService("ReplicatedStorage"):WaitForChild("SocialRainbow"))

-- Create a new Rainbow and play it
local rainbow = Rainbow.new(script.Parent, "Background", 1)
rainbow:Play()

-- Pause the Rainbow when the mouse enters the GuiObject
script.Parent.MouseEnter:Connect(function()
	rainbow:Pause()
end)

-- Stop the Rainbow when the mouse leaves the GuiObject
script.Parent.MouseButton1Click:Connect(function()
	rainbow:Stop()
end)
```

# Events

### `Played`

This event will fire when the `Rainbow` starts to play

**Parameters**
[]()|[]()
-|-
`item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) | The [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) being used in the `Rainbow`

**Code Sample**

This Code Example would print out `"Frame has started"`

```lua
local SocialRainbow = require(game.ReplicatedStorage.SocialRainbow)

local rainbow = SocialRainbow.new(script.Parent, "Background", 0.5)

rainbow.Played:Connect(function(item)
	print(item, "has started")
end)
```

### `Paused`

This Event would fire when the `Rainbow` was paused for a certain amount of time

**Parameters**

[]()|[]()
-|-
`item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) | The [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) being used in the `Rainbow`
`seconds:` [`number`](https://create.roblox.com/docs/scripting/luau/numbers) | The amount of seconds being used in the pause

**Code Sample**

This sample would print `"Frame has paused for 5 seconds"`

```lua
local SocialRainbow = require(game.ReplicatedStorage.SocialRainbow)

local rainbow = SocialRainbow.new(script.Parent, "Background", 0.5)

rainbow.Paused:Connect(function(item, seconds)
	print(item, "has paused for", seconds, "seconds")
end)
```

### `Finished`

This event will fire when the `Rainbow` finishes

**Parameters**
[]()|[]()
-|-
`item:` [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) | The [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) being used in the `Rainbow`

**Code Sample**

This Code Example would print out `"Frame has finished!"`

```lua
local SocialRainbow = require(game.ReplicatedStorage.SocialRainbow)

local rainbow = SocialRainbow.new(script.Parent, "Background", 0.5)

rainbow.Finished:Connect(function(item)
	print(item, "has finished")
end)
```

> IMPORTANT: All of this is documented by @VSCPlays for @max96git's <SocialRainbow as he created the module for the resource

also this is the updated module

--[[
	<SocialRainbow by VSCPlays (originally from @kernelvox (max96git))
	This rainbow module is based on @WinnersTakeAll (RyanLua)'s Shime
	I made this for @kernelvox as @bluebxrrybot and @commitblue said it's not enough for a community resource,
	I want to help @kernelvox succed

	please credit me @VSCPlays for the module and @kernelvox for the idea
]]

--// Services \\--
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

--// Sanity Checks \\--
if not RunService:IsClient() then
	error(`Please use require({script:GetFullName()}) in the client`)
end

if not script:IsDescendantOf(ReplicatedStorage) then
	error(`Please put this in {ReplicatedStorage:GetFullName()}, where both the client and the server can access it`)
end

--// Bindables \\--
local event1 = Instance.new("BindableEvent")
local event2 = Instance.new("BindableEvent")
local event3 = Instance.new("BindableEvent")

--// rainbow \\--
local rainbow = {}
rainbow.__index = rainbow

function rainbow.new(item:GuiObject, it:"Border" | "Text" | "Background", cooldown:number?)
	local self = setmetatable({}, rainbow)

	self.itemType = it
	self.item = item
	self.isPlaying = false
	self.isPaused = false
	self.isFinished = false
	self.cooldown = cooldown or 0
	self.name = `RainbowEffect{self.item.Name}`
	self.Played = event1.Event
	self.Paused = event2.Event
	self.Finished = event3.Event

	return self
end

function rainbow:Play()
	event1:Fire(self.item)
	self.isPlaying = true
	self.isPaused = false
	self.isFinished = false
	RunService:BindToRenderStep(self.name, 1, function()
		local color = Color3.fromHSV((tick() * 4) % 1, 1, 1)
		if self.itemType == "Border" then
			self.item.BorderColor3 = color
		elseif self.itemType == "Text" then
			if self.item.ClassName == "TextBox" or "TextButton" or "TextLabel" then
				self.item.TextColor3 = color
			end
		elseif self.itemType == "Background" then
			self.item.BackgroundColor3 = color
		end
		task.wait(self.cooldown)
	end)
end

function rainbow:Pause(seconds:number)
	if self.isFinished or not self.isPlaying or self.isPaused then
		return
	end

	if seconds == self.cooldown then
		seconds += self.cooldown
	end

	event2:Fire(self.item, seconds)

	seconds = math.clamp(seconds, 0.1, 10e4)

	self.isPlaying = false
	self.isPaused = true
	self.isFinished = false
	RunService:UnbindFromRenderStep(self.name)
	task.wait(seconds)
	self.isPlaying = true
	self.isPaused = false
	self.isFinished = false
	RunService:BindToRenderStep(self.name, 1, function()
		local color = Color3.fromHSV((tick() * 4) % 1, 1, 1)
		if self.itemType == "Border" then
			self.item.BorderColor3 = color
		elseif self.itemType == "Text" then
			if self.item.ClassName == "TextBox" or "TextButton" or "TextLabel" then
				self.item.TextColor3 = color
			end
		elseif self.itemType == "Background" then
			self.item.BackgroundColor3 = color
		end
		task.wait(self.cooldown)
	end)
end

function rainbow:Stop()
	if self.isFinished or not self.isPlaying or self.isPaused then
		return
	end
	
	event3:Fire(self.item)
	self.isPlaying = false
	self.isPaused = false
	self.isFinished = true
	RunService:UnbindFromRenderStep(self.name)
end

return rainbow

Update 2: Codename: Zinc

Thanks to @VSCPlays for documentation, and updated module (idk how to script modules tho :confused: )

  • Module gradient is improved
  • Documentation is here
  • Codename Pegasus is only in the creator marketplace now.

To me it sounds like a Spyware company’s product… I’d suggest you to change it as it can lead people to thinking about spyware rather then your product

i made a new one called Zinc, and pegasus doesn’t look like a spyware product

No I am saying Pegasus refers to a spyware product.
image

oh, i will change it, i will think about a new name

He is learning how to script, which is good. I’m just saying, I wouldn’t use the module because it’s hard to use this in code. For something as simple (to me) as making text rainbow, the long module doesn’t look appealing.

Who’s resource is it now, really?

Why? The script errors if used on the server anyway?

1 Like

cuz it uses RunService:BindToRenderStep() which is client only

both I and @kernelvox

there is the documentation I made for him, please check the README.md if you need help :wink:

I said it errors if the server requires it, but it also errors if the server can’t access it, which doesn’t make sense. It should be able to be placed anywhere.

sure, but I can’t use BindToRenderStep in the server, How would I make it work in server as-well, I did a test, In Server, it only showed this

  15:45:17.241  Baseplate auto-recovery file was created  -  Studio
  15:45:19.007  test  -  Server - Script:3
  15:45:19.008  after  -  Server - Script:7
  15:45:47.387  Disconnect from ::ffff:127.0.0.1|53548  -  Studio

and This is what it showed in the client

  15:49:42.809  Baseplate auto-recovery file was created  -  Studio
  15:49:46.332  test  -  Client - LocalScript:3
  15:49:46.332  after  -  Client - LocalScript:7
  15:49:48.041  Workspace  -  Client - LocalScript:5
  15:49:48.185  Workspace  -  Client - LocalScript:5
  15:49:48.220  Workspace  -  Client - LocalScript:5
  15:49:48.251  Workspace  -  Client - LocalScript:5
  15:49:48.331  Workspace  -  Client - LocalScript:5
  15:49:48.390  Workspace  -  Client - LocalScript:5
  15:49:48.493  Workspace  -  Client - LocalScript:5
  15:49:48.519  Workspace  -  Client - LocalScript:5
  15:49:48.538  Workspace  -  Client - LocalScript:5
  15:49:48.557  Workspace  -  Client - LocalScript:5
  15:49:48.572  Workspace  -  Client - LocalScript:5
  15:49:48.600  Workspace  -  Client - LocalScript:5
  15:49:48.643  Workspace  -  Client - LocalScript:5
  15:49:48.653  Workspace  -  Client - LocalScript:5
  15:49:48.661  Workspace  -  Client - LocalScript:5
  15:49:48.676  Workspace  -  Client - LocalScript:5
  15:49:48.691  Workspace  -  Client - LocalScript:5
  15:49:48.704  Workspace  -  Client - LocalScript:5
  15:49:48.720  Workspace  -  Client - LocalScript:5
  15:49:48.754  Workspace  -  Client - LocalScript:5
  15:49:48.770  Workspace  -  Client - LocalScript:5
  15:49:48.788  Workspace  -  Client - LocalScript:5
  15:49:48.804  Workspace  -  Client - LocalScript:5
  15:49:48.821  Workspace  -  Client - LocalScript:5
  15:49:48.837  Workspace  -  Client - LocalScript:5
  15:49:48.854  Workspace  -  Client - LocalScript:5
  15:49:48.870  Workspace  -  Client - LocalScript:5
  15:49:48.886  Workspace  -  Client - LocalScript:5
  15:49:48.904  Workspace  -  Client - LocalScript:5
  15:49:48.921  Workspace  -  Client - LocalScript:5
  15:49:48.937  Workspace  -  Client - LocalScript:5
  15:49:48.954  Workspace  -  Client - LocalScript:5
  15:49:48.970  Workspace  -  Client - LocalScript:5
  15:49:48.987  Workspace  -  Client - LocalScript:5
  15:49:49.005  Workspace  -  Client - LocalScript:5
  15:49:49.021  Workspace  -  Client - LocalScript:5
  15:49:49.038  Workspace  -  Client - LocalScript:5
  15:49:49.053  Workspace  -  Client - LocalScript:5
  15:49:49.070  Workspace  -  Client - LocalScript:5
  15:49:49.086  Workspace  -  Client - LocalScript:5
  15:49:49.103  Workspace  -  Client - LocalScript:5
  15:49:49.120  Workspace  -  Client - LocalScript:5
  15:49:49.136  Workspace  -  Client - LocalScript:5
  15:49:49.154  Workspace  -  Client - LocalScript:5
  15:49:49.170  Workspace  -  Client - LocalScript:5
  15:49:49.186  Workspace  -  Client - LocalScript:5
  15:49:49.220  Workspace  -  Client - LocalScript:5
  15:49:49.285  Workspace  -  Client - LocalScript:5
  15:49:49.291  Workspace  -  Client - LocalScript:5
  15:49:49.304  Workspace  -  Client - LocalScript:5
  15:49:49.320  Workspace  -  Client - LocalScript:5
  15:49:49.336  Workspace  -  Client - LocalScript:5
  15:49:49.353  Workspace  -  Client - LocalScript:5
  15:49:49.370  Workspace  -  Client - LocalScript:5
  15:49:49.387  Workspace  -  Client - LocalScript:5
  15:49:49.403  Workspace  -  Client - LocalScript:5
  15:49:49.420  Workspace  -  Client - LocalScript:5
  15:49:49.437  Workspace  -  Client - LocalScript:5
  15:49:49.454  Workspace  -  Client - LocalScript:5
  15:49:49.470  Workspace  -  Client - LocalScript:5
  15:49:49.487  Workspace  -  Client - LocalScript:5
  15:49:49.505  Workspace  -  Client - LocalScript:5
  15:49:49.520  Workspace  -  Client - LocalScript:5
  15:49:49.537  Workspace  -  Client - LocalScript:5
  15:49:49.553  Workspace  -  Client - LocalScript:5
  15:49:49.570  Workspace  -  Client - LocalScript:5
  15:49:49.587  Workspace  -  Client - LocalScript:5
  15:49:49.603  Workspace  -  Client - LocalScript:5
  15:49:49.620  Workspace  -  Client - LocalScript:5
  15:49:49.637  Workspace  -  Client - LocalScript:5
  15:49:49.654  Workspace  -  Client - LocalScript:5
  15:49:49.671  Workspace  -  Client - LocalScript:5
  15:49:49.688  Workspace  -  Client - LocalScript:5
  15:49:49.706  Workspace  -  Client - LocalScript:5
  15:49:49.723  Workspace  -  Client - LocalScript:5
  15:49:49.737  Workspace  -  Client - LocalScript:5
  15:49:49.754  Workspace  -  Client - LocalScript:5
  15:49:49.772  Workspace  -  Client - LocalScript:5
  15:49:49.789  Workspace  -  Client - LocalScript:5
  15:49:49.804  Workspace  -  Client - LocalScript:5
  15:49:49.820  Workspace  -  Client - LocalScript:5
  15:49:49.859  Workspace  -  Client - LocalScript:5
  15:49:49.875  Workspace  -  Client - LocalScript:5
  15:49:49.895  Workspace  -  Client - LocalScript:5
  15:49:49.906  Workspace  -  Client - LocalScript:5
  15:49:49.920  Workspace  -  Client - LocalScript:5
  15:49:49.937  Workspace  -  Client - LocalScript:5
  15:49:49.956  Workspace  -  Client - LocalScript:5
  15:49:49.971  Workspace  -  Client - LocalScript:5
  15:49:49.989  Workspace  -  Client - LocalScript:5
  15:49:50.006  Workspace  -  Client - LocalScript:5
  15:49:50.025  Workspace  -  Client - LocalScript:5
  15:49:50.045  Workspace  -  Client - LocalScript:5
  15:49:50.055  Workspace  -  Client - LocalScript:5
  15:49:50.075  Workspace  -  Client - LocalScript:5
  15:49:50.101  Workspace  -  Client - LocalScript:5
  15:49:50.111  Workspace  -  Client - LocalScript:5
  15:49:50.129  Workspace  -  Client - LocalScript:5
  15:49:50.143  Workspace  -  Client - LocalScript:5
  15:49:50.163  Workspace  -  Client - LocalScript:5
  15:49:50.177  Workspace  -  Client - LocalScript:5
  15:49:50.193  Workspace  -  Client - LocalScript:5
  15:49:50.210  Workspace  -  Client - LocalScript:5
  15:49:50.221  Workspace  -  Client - LocalScript:5
  15:49:50.238  Workspace  -  Client - LocalScript:5
  15:49:50.254  Workspace  -  Client - LocalScript:5
  15:49:50.270  Workspace  -  Client - LocalScript:5
  15:49:50.287  Workspace  -  Client - LocalScript:5
  15:49:50.304  Workspace  -  Client - LocalScript:5
  15:49:50.338  Workspace  -  Client - LocalScript:5
  15:49:50.354  Workspace  -  Client - LocalScript:5
  15:49:50.370  Workspace  -  Client - LocalScript:5
  15:49:50.387  Workspace  -  Client - LocalScript:5
  15:49:50.403  Workspace  -  Client - LocalScript:5
  15:49:50.420  Workspace  -  Client - LocalScript:5
  15:49:50.445  Workspace  -  Client - LocalScript:5
  15:49:50.455  Workspace  -  Client - LocalScript:5
  15:49:50.470  Workspace  -  Client - LocalScript:5
  15:49:50.486  Workspace  -  Client - LocalScript:5
  15:49:50.520  Workspace  -  Client - LocalScript:5
  15:49:50.537  Workspace  -  Client - LocalScript:5
  15:49:50.554  Workspace  -  Client - LocalScript:5
  15:49:50.571  Workspace  -  Client - LocalScript:5
  15:49:50.589  Workspace  -  Client - LocalScript:5
  15:49:50.604  Workspace  -  Client - LocalScript:5
  15:49:50.623  Workspace  -  Client - LocalScript:5
  15:49:50.637  Workspace  -  Client - LocalScript:5
  15:49:50.653  Workspace  -  Client - LocalScript:5
  15:49:50.687  Workspace  -  Client - LocalScript:5
  15:49:50.704  Workspace  -  Client - LocalScript:5
  15:49:50.720  Workspace  -  Client - LocalScript:5
  15:49:50.738  Workspace  -  Client - LocalScript:5
  15:49:50.753  Workspace  -  Client - LocalScript:5
  15:49:50.770  Workspace  -  Client - LocalScript:5
  15:49:50.787  Workspace  -  Client - LocalScript:5
  15:49:50.804  Workspace  -  Client - LocalScript:5
  15:49:50.820  Workspace  -  Client - LocalScript:5
  15:49:50.837  Workspace  -  Client - LocalScript:5
  15:49:50.853  Workspace  -  Client - LocalScript:5
  15:49:50.870  Workspace  -  Client - LocalScript:5
  15:49:50.887  Workspace  -  Client - LocalScript:5
  15:49:50.903  Workspace  -  Client - LocalScript:5
  15:49:50.920  Workspace  -  Client - LocalScript:5
  15:49:50.948  Workspace  -  Client - LocalScript:5
  15:49:50.953  Workspace  -  Client - LocalScript:5
  15:49:50.973  Workspace  -  Client - LocalScript:5
  15:49:50.988  Workspace  -  Client - LocalScript:5
  15:49:51.007  Workspace  -  Client - LocalScript:5

this is the code

local RunService = game:GetService("RunService")

print("test")
RunService:BindToRenderStep("ot", 1, function()
	print(workspace)
end)
print("after")

task.wait(10e3)
RunService:UnbindFromRenderStep("ot")

so I found out that RunService:BindToRenderStep() is only client sided

Hi @kernelvox,

I’ve just made some new issues and pull requests in the GitHub repository. Your doing great and everyone needs a starting point. You will find my feedback and corrections in the said issues and pull requests.

Don’t be afraid to use my own module on GitHub as reference as it’s open source after all.

thank you, i already use your module, i gonna look into these issues and pull requests.

2 Likes
  1. in the Enum.PlaybackState thing, It doesn’t use Tweens, You used Enum.PlaybackState in your module because you were using Tweens

  2. In your module, You used Apache License 2.0, which he used in two of his repositories, so It would make sense

  1. Codebase clean up is a good idea, like most repositories

  2. Examples is a good idea as-well, I would put it out as a .GIF file, and the Demo would be in my group “VSC Team”


This isn’t kernelvox replying, I’m the module creator, not him

Ok, I may not be updating this module anymore as I’m now focusing more on unity than roblox, but I may try to recreate social rainbow there (if I have good knowledge in C# (c sharp))

Ok, but i know you quitted roblox because you get negative stuff, ALbaraa told me