Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local RS = game:GetService("ReplicatedStorage");
- local Debris = game:GetService("Debris")
- local RunService = game:GetService("RunService")
- local Debounce = {};
- local Trash = {};
- local Trash2 = {}
- local TransData = {}
- local Duration = 4;
- local COOLDOWN = 1
- local function invis(Character: Model)
- for i,v in pairs(Character:GetDescendants()) do
- if TransData[v] then continue end
- if not v:IsA("BasePart") then continue end
- TransData[v] = v.Transparency
- v.Transparency = 1;
- end
- end
- local function vis(Character: Model)
- for i,v in pairs(Character:GetDescendants()) do
- if not TransData[v] then continue end
- v.Transparency = TransData[v]
- TransData[v] = nil
- end
- end
- local function changeJump(Humanoid: Humanoid, JumpPower: IntValue)
- Humanoid.JumpPower = JumpPower;
- Humanoid.UseJumpPower = true
- end
- RS.Event.SahdowSneak.OnServerEvent:Connect(function(Player, Input, hitPlayer)
- if Debounce[Player] then return end
- local Character = Player.Character
- local Humanoid = Character:WaitForChild("Humanoid")
- local Params = OverlapParams.new();
- local Saved = tick()
- Params.MaxParts = math.huge
- Params.FilterDescendantsInstances = {Character,game.Workspace.Baseplate}
- Params.FilterType = Enum.RaycastFilterType.Blacklist;
- if Input and not hitPlayer then
- changeJump(Humanoid,0)
- Trash[Player] = RS.Effect.ShadowPart.DarkStep:Clone()
- Trash[Player].Parent = Character.HumanoidRootPart;
- invis(Character)
- elseif not Input and hitPlayer then
- if Trash[Player] then
- Trash[Player]:Destroy();
- Trash[Player] = nil;
- end
- Trash2[Player]:Disconnect();
- vis(Character)
- changeJump(Humanoid, 50);
- for Index,Value in pairs(workspace:GetPartBoundsInRadius((Character.HumanoidRootPart.CFrame).Position,10,Params)) do
- if (Value.Parent:FindFirstChild("Humanoid")) then
- local finishEffect = RS.Effect.ShadowPart:Clone();
- finishEffect.DarkStep.Rate = 1000
- finishEffect.DarkStep.Speed = NumberRange.new(200, 200)
- finishEffect.Parent = Value.Parent:FindFirstChild("HumanoidRootPart")
- finishEffect.Position = Value.Parent:FindFirstChild("HumanoidRootPart").Position + Vector3.new(0,1,0)
- Value.Parent:FindFirstChild("Humanoid"):TakeDamage(5);
- Debris:AddItem(finishEffect, 2)
- end
- end
- Debounce[Player] = true
- task.delay(COOLDOWN, function()
- Debounce[Player] = nil
- end)
- else
- if Trash[Player] then
- Trash[Player]:Destroy();
- Trash[Player] = nil;
- end
- changeJump(Humanoid, 50)
- Trash2[Player]:Disconnect();
- vis(Character)
- Debounce[Player] = true
- task.delay(COOLDOWN, function()
- Debounce[Player] = nil
- end)
- end
- Trash2[Player] = RunService.Heartbeat:Connect(function()
- if not Input then return end;
- if not Trash[Player] then return end;
- if (tick() - Saved >= Duration) and Trash[Player] then
- vis(Character)
- RS.Event.SahdowSneak:FireClient(Player);
- Trash2[Player]:Disconnect();
- changeJump(Humanoid, 50)
- if Trash[Player] then
- Trash[Player]:Destroy();
- Trash[Player] = nil;
- end
- Saved = tick()
- end
- end)
- end)
- RS.Event.isShadowSneakCooldown.OnServerInvoke = function(Player: Player)
- return Debounce[Player];
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement