–ClientScript
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local class = nil
local classmod = nil
local UIS = game:GetService('UserInputService')
UIS.InputBegan:Connect(function(key)
if not classmod or not class then return end
if key.KeyCode == Enum.KeyCode.One then
classmod.attack1()
end
end)
game.ReplicatedStorage.EventMain.OnClientEvent:Connect(function(work,data)if work == 'sendtolobby' then
repeat task.wait() until player.PlayerGui:FindFirstChild('MainUi')
repeat task.wait() until player.PlayerGui.MainUi:FindFirstChild('Lobby')
player.PlayerGui.MainUi.Lobby.Visible = true
task.wait(.4)
local connection
connection = player.PlayerGui.MainUi.Lobby.MainChoice.MouseButton1Click:Connect(function()
game.ReplicatedStorage.EventMain:FireServer('sendtogame',{player.PlayerGui.MainUi.Lobby.MainChoice.Class.Value})
class = player.PlayerGui.MainUi.Lobby.MainChoice.Class.Value
player.PlayerGui.MainUi.Lobby.Visible = false
classmod = require(script.Parent[player.PlayerGui.MainUi.Lobby.MainChoice.Class.Value.. 'Mod'])
connection:Disconnect()
end)
end
end)
print('1')
game.ReplicatedStorage.FunctionMain.OnClientInvoke = function(work,data)
print('1')
if work == 'getmouse' then
print('2')
return mouse.Hit.Position
end
end
–Module
local module = {}
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local RS = game:GetService('RunService')
local spring = require(game.ReplicatedStorage.Assets.Spring)
function module.attack1(char)
local setting = {
damage = 1,
speed = 4,
amount = 14,
elapse = .74,
range = Vector3.new(75,40,2)
}
local target = mouse.Hit
game.ReplicatedStorage.EventMain:FireServer('sansattack1',{setting})
end
function module.attack1locked()
end
return module
–Server
local players = {}
local RS = game:GetService('RunService')
plr = {}
plr.__index = plr
function plr.new()
local newplayer = {}
setmetatable(newplayer,plr)
plr.Class = nil
return newplayer
end
function plr:SendToGame(player,class)
self.Class = class
player.Character:PivotTo(CFrame.new(Vector3.new(0,5,0)))
player.Character.HumanoidRootPart.Anchored = false
end
function plr:SendToLobby(player)
game.ReplicatedStorage.EventMain:FireClient(player,'sendtolobby',{})
repeat task.wait() until player.Character and player.Character:FindFirstChild('Humanoid')
player.Character:PivotTo(CFrame.new(Vector3.new(0,-20,0)))
end
game.Players.PlayerAdded:Connect(function(player)
players[player.UserId] = plr.new()
players[player.UserId]:SendToLobby(player)
player.Character:WaitForChild('HumanoidRootPart').Anchored = true
end)
game.ReplicatedStorage.EventMain.OnServerEvent:Connect(function(player,work,data)
if work == 'sendtogame' then
local class = data[1]
players[player.UserId]:SendToGame(player,class)
end
if work == 'fireallclients' then
local work = data[1]
table.remove(data,1)
game.ReplicatedStorage.EventMain:FireAllClients(player,work,data)
end
end)
repeat task.wait() until game.ReplicatedStorage:FindFirstChild('Assets') and game.ReplicatedStorage.Assets:FindFirstChild('Spring')
local spring = require(game.ReplicatedStorage.Assets.Spring)
--ATTACKS
game.ReplicatedStorage.EventMain.OnServerEvent:Connect(function(player,work,data)
if work == 'sansattack1' then
local setting = data[1]
local bones = {}
for i = 1,setting.amount do
local bone = game.ReplicatedStorage.Assets.Sans.Bone:Clone()
bone.Parent = game.Workspace.Temp
bone.CFrame = player.Character.HumanoidRootPart.CFrame * CFrame.new(math.random(0,setting.range.X) / 10,math.random(10,setting.range.Y) / 10,setting.range.Z)
bone.CFrame = CFrame.lookAt(bone.Position,(player.Character.HumanoidRootPart.CFrame * CFrame.new(0,0,100)).Position) * CFrame.Angles(0,math.rad(-65),0)
table.insert(bones,bone)
local bounce = spring.create(1,5,50,4,10)
bounce:shove(Vector3.new(0,-.7,0))
local connection
connection = RS.Heartbeat:Connect(function(step)
local bounce = bounce:update(step)
bone.CFrame *= CFrame.Angles(bounce.X,bounce.Y,bounce.Z)
end)
spawn(function()
task.wait(1)
bounce = nil
connection:Disconnect()
end)
task.wait((setting.elapse / 4) / setting.amount)
end
task.wait(.1)
for v,bone in pairs(bones) do
print('sending')
local target = game.ReplicatedStorage.FunctionMain:InvokeClient(player,'getmouse',{})
print(target)
--bone.CFrame = CFrame.lookAt(bone.Position,target.Position) * CFrame.Angles(0,math.rad(-65),0)
local connection
connection = RS.Heartbeat:Connect(function(step)
bone.CFrame *= CFrame.new(setting.speed,0,0 * step)
end)
--[[
local target = game.ReplicatedStorage.FunctionMain:InvokeClient('getmouse')
bone.CFrame = CFrame.lookAt(bone.Position,target.Position) * CFrame.Angles(0,math.rad(90),0)
game.ReplicatedStorage.EventMain:FireAllClients('shootprojectile',{bone,target,setting.cfspeed})
--]]
end
end
end)