[OPEN] NeoIsSad | Advanced Scripter

About Me

Hello, I’m Neo! I am a 17 year old advanced scripter and have been scripting on Roblox for 3 years now. I have experience with object oriented programming; writing secure and legible code; and following the Lua style guide.

Showcase

Code Samples

Scalable Abbreviations Module

local ABBREVIATIONS = {
    {Digits = 7, Suffix = "M"},
    {Digits = 4, Suffix = "K"},
    {Digits = 3, Suffix = " hundred"},
}

local function formatNumber(number, maxDigits)
    local numberLength = #tostring(math.floor(number))
    
    for _, value in ipairs(ABBREVIATIONS) do
        if value.Digits <= numberLength then
            local truncNumber = number / (10 ^ (value.Digits - 1))
            return tostring(truncNumber):sub(1, maxDigits - 1)..value.Suffix
        end
    end
end

-- example
local num = 5812375821758971298
local abb = formatNumber(num, 3) -- keep in mind you might want to use scientific notation if the number goes bigger than your defined abbreviations
print(abb)

Proxy Table module (.Changed and .Indexed for tables)

local ProxyTable = {}

function ProxyTable.new(items)
    local self = {}
    self.Index = {}
    self.NewIndex = {}
    self.Table = items
    

    return setmetatable(self, {
        __index = function(self, index)
            if ProxyTable[index] then
               return ProxyTable[index] 
            end
            
            for _, callback in ipairs(self.Index) do
                callback(index)
            end
            return self.Table[index]
        end,
        __newindex = function(self, index, value)
            for _, callback in ipairs(self.NewIndex) do
                callback(index, value)
            end
            self.Table[index] = value
        end,
    })
end


function ProxyTable:Connect(connection, callback)
    local connections = assert(self[connection], "No connection found with the name "..connection..".")
    local key = #connections + 1

    connections[key] = callback

    return function() -- disconnect
        connections[key] = nil
    end
end

return ProxyTable

-- example
local tab = ProxyTable.new({'hello', "world"})
local disconnect = tab:Connect("Index", function()
    print("we have been indexed")
end)
print(tab[1])
disconnect()
print(tab[1])

--[[
output:
we have been indexed
hello
hello
]]

Debounce (okay this one really isn’t that useful)

return function(callback, cooldown) -- create debounce
    local lastCall = 0
    return function(...) -- call debounce
        if lastCall and tick() - lastCall >= cooldown then
            lastCall = cooldown and tick() or nil
            callback(...)
        end
    end
end

My recreation of RBX script signals and connections without using the roblox api

-- signal
local Connection = require() -- didn't figure out this part without using the roblox exclusive script global

local Signal = {}
Signal.__index = Signal

function Signal.new()
    local self = setmetatable({}, Signal)
    self._connections = {}
    self._fired = false

    return self
end

function Signal:Fire(...)
    self._fired = true
    for _, connection in ipairs(self._connections) do
        connection.Callback(...)
    end
    self._fired = false
end

function Signal:Connect(callback)
    local connection = Connection.new(callback)
    self._connections:insert(connection)
    return connection
end

function Signal:Wait()
    self._waits:insert(false)
    repeat until self._fired
end

-- connection
--@ Tuple | signal:Wait()
--@ connection | signal:Connect(function func)
    -- @ bool | connection.Connected
    -- @ void | connection:Disconnect()

local Connection = {}
Connection.__index = Connection

function Connection.new(callback)
    local self = setmetatable({}, Connection)
    self.Callback = callback
    self.Connected = true

    return self
end

function Connection:Disconnect()
    self.Connected = false
    self.Callback = nil
end

return Connection

hello person that reads code!

Videos

For now, this section is just a placeholder, I’ll film the videos later.

shops > guns > tools > ragdoll
breathing simulator

Availability

On weekdays I’m not able to work much but I’m available for two to four hours of work on weekends and holidays. My DMs are always open.

Payment

For commissions, I suggest I make the script in a separate game, show it to you, you pay me, then I give you the place file (I have no reason not to give you the script if I have already made it.)

  • I will not work as a long term developer
  • I will not use team create without at least half of the pay upfront.

Prices negotiable!
(I take both robux and paypal)

Contact

You can contact me here on the Developer Forum or via Discord at NEO#8513

5 Likes