Hello! My name is CodeKimbap, and I have been programming since 2019. I have always had a passion for computers and computer science, which led me to learn Python, Dart, C, C++, C#, Javascript, and, most importantly, Lua. I quite enjoy the Roblox game engine due to its simplicity and gentle learning curve. I cannot wait to help you out on your next project!
Commisions
- Sprint script
Video
Basic Punch system
AttackMovesClass
local UIS = game:GetService("UserInputService")
local event = game:GetService("ReplicatedStorage"):WaitForChild("OnKeyPressed")
local AttackMove = {}
local MT = {}
MT.__index = MT
function AttackMove.new(name, animationID, keyCode)
local self = {}
setmetatable(self, MT)
self.Name = name
self.AnimationId = "rbxassetid://".. tostring(animationID)
self.Keycode = keyCode
self.__type = "AttackMove"
return self
end
function MT:GetName()
return self.Name
end
function MT:PlayAnimationOnKey()
local coolDown = false
UIS.InputBegan:Connect(function(input, IS)
if IS == true then return end
if coolDown then return end
if input.KeyCode == self.Keycode then
coolDown = true
print(coolDown)
event:FireServer(self.AnimationId)
print("Key pressed")
wait(3)
coolDown = false
end
end)
end
return AttackMove
HitBox Class
local HitBox = {}
local MT = {}
MT.__index = MT
function HitBox.new(size, offset, damageAmount,deleteTime, sfxId)
local self = {}
setmetatable(self, MT)
self.SoundId = "rbxassetid://"..tostring(sfxId)
self.HitBox = nil
self.Player = nil
self.Hits = {}
self.DamageAmount = damageAmount
self.Size = size
self.DeleteTime = deleteTime
self.Offset = offset
return self
end
function MT:Create(plr)
self.Player = plr
self.HitBox = Instance.new("Part")
self.HitBox.Anchored = true
self.HitBox.CanCollide = false
self.HitBox.Transparency = 1
self.HitBox.Size = self.Size
self.HitBox.CFrame = plr.Character:FindFirstChild("HumanoidRootPart").CFrame * self.Offset
self.HitBox.Parent = workspace
game.Debris:AddItem(self.HitBox, self.DeleteTime)
end
function MT:Ragdoll(character)
for i, joint in pairs(character:GetDescendants()) do
if joint:IsA("Motor6D") then
local socket = Instance.new("BallSocketConstraint", joint.Parent)
local att0 = Instance.new("Attachment", joint.Part0)
local att1 = Instance.new("Attachment", joint.Part1)
att0.CFrame = joint.C0
att1.CFrame = joint.C1
socket.Attachment0 = att0
socket.Attachment1 = att1
socket.TwistLimitsEnabled = true
socket.LimitsEnabled = true
character.Humanoid:ChangeState(Enum.HumanoidStateType.Physics)
joint.Enabled = false
end
end
end
function MT:UnRagdoll(character)
for i,joint in pairs(character:GetDescendants()) do
if joint:IsA("Motor6D") then
joint.Enabled = true
elseif joint:IsA("BallSocketConstraint") then
joint.Enabled = false
end
end
character.Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
end
function MT:OnHitboxHit(knockBackPower)
self.HitBox.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") and hit.Parent.Name ~= self.Player.Name then
if self.Hits[hit.Parent.Name] == true then
return
end
self.Hits[hit.Parent.Name] = true
local sound = Instance.new("Sound")
sound.SoundId = self.SoundId
sound.Parent = hit.Parent:FindFirstChild("Humanoid")
sound:Play()
game.Debris:AddItem(sound, 2)
hit:ApplyImpulse((hit.Position - self.Player.Character:FindFirstChild("HumanoidRootPart").Position).Unit * knockBackPower)
self:Ragdoll(hit.Parent)
hit.Parent:FindFirstChild("Humanoid"):TakeDamage(self.DamageAmount)
wait(2)
self:UnRagdoll(hit.Parent)
self.Hits[hit.Parent.Name] = false
end
end)
end
return HitBox
SeverScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local event = ReplicatedStorage:WaitForChild("OnKeyPressed")
local hitBox = require(ReplicatedStorage:WaitForChild("HitBox"))
local hitBoxObject = hitBox.new(Vector3.new(5, 5, 5), CFrame.new(0, 0, -5),10, 2, 8595980577)
event.OnServerEvent:Connect(function(plr, animationId)
local animator = plr.Character:WaitForChild("Humanoid"):FindFirstChildOfClass("Animator")
local animation = Instance.new("Animation")
animation.AnimationId = animationId
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
hitBoxObject:Create(plr)
wait(0.2)
hitBoxObject:OnHitboxHit(2000)
end)
local script
local AttackMove = require(game:GetService("ReplicatedStorage").AttackMoves)
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local AttackMoveObject = AttackMove.new("Punch", 87571177995955, Enum.KeyCode.E)
AttackMoveObject:PlayAnimationOnKey()
Queue system
game logic script:
local gameStart = script.Parent.Parent:WaitForChild("Events"):WaitForChild("GameStart")
local gameStartRemote = script.Parent.Parent:WaitForChild("Events"):WaitForChild("GameStartRemote")
local seat = game:GetService("ReplicatedStorage").DefualtChair
local P1locaiton = script.Parent.Parent:WaitForChild("table"):WaitForChild("P1Location")
local P2locaiton = script.Parent.Parent:WaitForChild("table"):WaitForChild("P2Location")
local P3locaiton = script.Parent.Parent:WaitForChild("table"):WaitForChild("P3Location")
local billboard = script.Parent.Parent:WaitForChild("table"):WaitForChild("body"):WaitForChild("BillboardGui"):WaitForChild("TextLabel")
local deck = script.Parent.Parent:WaitForChild("table"):WaitForChild("Cards")
gameStart.Event:Connect(function(plrArray, objName)
gameStartRemote:FireClient(plrArray[1], objName)
gameStartRemote:FireClient(plrArray[2], objName)
gameStartRemote:FireClient(plrArray[3], objName)
local seat1 = seat:Clone()
local seat2 = seat:Clone()
local seat3 = seat:Clone()
seat1.Parent = workspace:FindFirstChild(objName):WaitForChild("table")
seat2.Parent = workspace:FindFirstChild(objName):WaitForChild("table")
seat3.Parent = workspace:FindFirstChild(objName):WaitForChild("table")
seat1:PivotTo(P1locaiton:GetPivot() * CFrame.Angles(0, math.rad(270), math.rad(90)) + Vector3.new(0, 1, 0))
seat2:PivotTo(P2locaiton:GetPivot() * CFrame.Angles(0, math.rad(270), math.rad(90)) + Vector3.new(0, 1, 0))
seat3:PivotTo(P3locaiton:GetPivot() * CFrame.Angles(0, math.rad(270), math.rad(90)) + Vector3.new(0, 1, 0))
billboard.Text = ""
seat1.Seat:Sit(plrArray[1].Character:WaitForChild("Humanoid"))
seat2.Seat:Sit(plrArray[2].Character:WaitForChild("Humanoid"))
seat3.Seat:Sit(plrArray[3].Character:WaitForChild("Humanoid"))
deck.Transparency = 0
deck:WaitForChild("Decal").Transparency = 0
deck:WaitForChild("Decal2").Transparency = 0
deck:WaitForChild("Decal3").Transparency = 0
deck:WaitForChild("Decal4").Transparency = 0
deck:WaitForChild("Decal5").Transparency = 0
deck:WaitForChild("Decal6").Transparency = 0
end)
ProximityPromptLogic script
local PartLocation = script.Parent.Parent:WaitForChild("table"):WaitForChild("TpPart").CFrame
local PP1 = script.Parent.Parent:WaitForChild("table"):WaitForChild("PP1").ProximityPrompt
local PP2 = script.Parent.Parent:WaitForChild("table"):WaitForChild("PP2").ProximityPrompt
local PP3 = script.Parent.Parent:WaitForChild("table"):WaitForChild("PP3").ProximityPrompt
local PPLeave = script.Parent.Parent:WaitForChild("table"):WaitForChild("TpPart").ProximityPrompt
local objName = script.Parent.Parent.Name
local GameStart = script.Parent.Parent:WaitForChild("Events"):WaitForChild("GameStart")
local onQueueEvent = script.Parent.Parent:WaitForChild("Events"):WaitForChild("OnQueue")
local onQueueLeaveEvent = script.Parent.Parent:WaitForChild("Events"):WaitForChild("OnQueueLeave")
local queueText = workspace:WaitForChild("Game"):WaitForChild("table"):WaitForChild("body"):WaitForChild("BillboardGui"):WaitForChild("TextLabel")
local nInQueue = 0
local playerArray = {}
local waitTime = 13
function getTableLength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function onTriggered(player)
if nInQueue == 3 then
return
end
nInQueue += 1
player.Character.HumanoidRootPart.CFrame = PartLocation + Vector3.new(0, 5, 0)
print(objName)
onQueueEvent:FireClient(player, objName)
table.insert(playerArray, player)
print("Sent event")
if nInQueue == 3 then
for i = waitTime, 0, -1 do
if nInQueue ~= 3 then
break
end
if i == 0 then
GameStart:Fire(playerArray, objName)
break
end
queueText.Text = "game starting in: " .. i
wait(1)
end
else
queueText.Text = "player number " .. nInQueue .. "/3"
end
end
function onLeave(player)
nInQueue -= 1
player.Character.HumanoidRootPart.CFrame = script.Parent.Parent.table.TpOut.CFrame + Vector3.new(0, 5, 0)
for i = 0, getTableLength(playerArray), 1 do
if playerArray[i] == player then
table.remove(playerArray, i)
break
end
end
onQueueLeaveEvent:FireClient(player, objName)
queueText.Text = "player number " .. nInQueue .. "/3"
end
PP1.Triggered:Connect(onTriggered)
PP2.Triggered:Connect(onTriggered)
PP3.Triggered:Connect(onTriggered)
PPLeave.Triggered:Connect(onLeave)
ProximityPrompt Local script
local onQueueEvent = workspace:WaitForChild("Game"):WaitForChild("Events"):WaitForChild("OnQueue")
local onQueueLeaveEvent = workspace:WaitForChild("Game"):WaitForChild("Events"):WaitForChild("OnQueueLeave")
local GameStartEvent = workspace:WaitForChild("Game"):WaitForChild("Events"):WaitForChild("GameStartRemote")
local PP1 = nil
local PP2 = nil
local PP3 = nil
local PPLeave = nil
onQueueEvent.OnClientEvent:Connect(function(gameObj)
print(gameObj)
print("Recived event")
PP1 = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("PP1").ProximityPrompt
PP2 = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("PP2").ProximityPrompt
PP3 = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("PP3").ProximityPrompt
PPLeave = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("TpPart").ProximityPrompt
PP1.Enabled = false
PP2.Enabled = false
PP3.Enabled = false
PPLeave.Enabled = true
end)
onQueueLeaveEvent.OnClientEvent:Connect(function(gameObj)
PP1 = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("PP1").ProximityPrompt
PP2 = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("PP2").ProximityPrompt
PP3 = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("PP3").ProximityPrompt
PPLeave = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("TpPart").ProximityPrompt
PP1.Enabled = true
PP2.Enabled = true
PP3.Enabled = true
PPLeave.Enabled = false
end)
GameStartEvent.OnClientEvent:Connect(function(gameObj)
PPLeave = workspace:FindFirstChild(gameObj):WaitForChild("table"):WaitForChild("TpPart").ProximityPrompt
PPLeave.Enabled = false
end)
Mining system with hit detection
Hit registration with raytracing
main script
local tool = script.Parent
local GunEnd = tool:WaitForChild("GunEnd")
local remote = tool:WaitForChild("pewPew")
local Workspace = game:GetService("Workspace")
local ServerStorage = game:GetService("ServerStorage")
remote.OnServerEvent:Connect(function(player,position)
local origin = GunEnd.Position
local direction = (position - origin).Unit
local result = Workspace:Raycast(GunEnd.Position, direction*200)
local bulcol = result and result.Position or origin + direction*200
local distance = (origin - bulcol).Magnitude
local cloneBullet = ServerStorage.IneedMoreBullets:Clone()
cloneBullet.Size = Vector3.new(0.1,0.1,distance)
cloneBullet.CFrame = CFrame.new(origin, bulcol)*CFrame.new(0,0, - distance/2)
cloneBullet.Parent = Workspace
if result then
local part = result.Instance
local humanoid = part.Parent:FindFirstChild("Humanoid") or part.Parent.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid:TakeDamage(15)
end
end
wait(0.1)
cloneBullet:Destroy()
end)
local script
local tool = script.Parent
local remote = tool:WaitForChild("pewPew")
local Players = game:GetService("Players")
local Client = Players.LocalPlayer
local cursor = Client:GetMouse()
tool.Activated:Connect(function()
remote:FireServer(cursor.Hit.Position)
end)
Quest system (Data store)
Showcase video
Quest Logic Script
local RS = game:GetService("ReplicatedStorage")
local Remote = RS:WaitForChild("NPCQuestEvent")
local ProximityPrompt = workspace.QuestGiver.ProximityPrompt
ProximityPrompt.Triggered:Connect(function(player)
Remote:FireClient(player)
print("Sent a thing")
end)
Player xp script
local DSS = game:GetService("DataStoreService")
local LevelService = DSS:GetDataStore("PlayerLevel")
local RS = game:GetService("ReplicatedStorage")
local RemoteFunction = RS:WaitForChild("XPIncreaseFuncEvent")
local DataStoreService = game:GetService("DataStoreService")
local XPStore = DataStoreService:GetDataStore("PlayerXP")
local LevelStore = DataStoreService:GetDataStore("PlayerLevel")
local function XPIncrease(player,playerID)
local PlayerData = XPStore:GetAsync(playerID)
local playerXP = nil
if PlayerData then
print("Player Has played before")
print("Player XP")
playerXP = XPStore:GetAsync(playerID)
playerXP += 100
XPStore:SetAsync(playerID, playerXP)
elseif not PlayerData then
print("Player has not played before")
playerXP = 0
XPStore:SetAsync(playerID, playerXP)
print(XPStore:GetAsync(playerID))
end
print(playerXP)
end
local function LevelIncrease(playerID, playerXP)
local playerLVL = nil
local RequirementToLvl = nil
local NumInbe
if playerLVL < 100 then
RequirementToLvl = 100
else
RequirementToLvl = 1000
end
end
RemoteFunction.OnServerInvoke = XPIncrease
localquest gui logic local script
local RemoteEvent = game.ReplicatedStorage:WaitForChild("NPCQuestEvent")
RemoteEvent.OnClientEvent:Connect(function()
print("Did a thing")
script.Parent.Frame.Visible = true
end)
I reside in the UK, so my time zone is either BST or GMT, depending on when you are reading this. Due to school, I arrive home quite late (7:30 p.m.), but I stay on until around 12 p.m. During the weekends, I am available all day. The same applies to summer holidays and half-term.
I prefer Robux or USD/GBP. However, other payment methods may be discussed. I do prefer payment to be upfront.
You can reach me on Discord with the username: j0e_bid3n