Skill / Ability Previewer Plugin

UPDATED VERSION OF THE PLUGIN HERE

This plugin is a framework that is used inorder to create skills for roblox games and allow you to use these skills without running the place.

CREATING SKILLS
image
This image above should be what you see inside your replicated storage when you first run the module.
You will only really need to use Server and Client to create skills


This is the server script for skill “Example 1” and as we can see here an exampe of the replication is provided aswell as the self:Destroy() showing how skills are cleaned up.
The data within self is as shown below: to be able to create a function for when a skill gets cancelled you simple must do

self.Cancelled = function()

end)

HOW TO PLAY ANIMATIONS
I have provided an animation module inside the framework as they are run differently compared to your normal loading aniamtion to the aniamtor and playing it and this can be referenced by using the following

self.Animation:PlayAnimation(Character, TrackInstance)
self.Animation:StopAnimation(Character, TrackInstance)

these are the predefault seld variables.

self.Character : CharacterModel
self._maid : Maid Class

ADD YOUR OWN SKILL
This is as simple as copy and pasting the “Example 1” folder and renaming it (MAKE SURE THAT THE SKILL FOLDERS DO NOT HAVE THE SAME NAME AS EACH OTHER)

HOW TO REPLICATE EFFECTS
image

the way this replication works is using the same skill folder it will create a replication class for the skill at hand or if you call it multiple times it will reuse the same class allowing for passing of variables between functions via self inorder to make sure that a replication class can no longer be used after a skill is complete you must also run self:Destroy() on the client to clean up the class and any connections or instances within the _maid.

HOW TO ADD CUSTOM MODULES
image

To add custom modules its as simple as putting the module under the Attack classes Services module instance inside of the replicated storage. I have provided you with an animation service and the replication service. to reference these modules within your attack its as simple as self.[Module Name] and you can then index the methods you would like to use within it. this applies the same within the replication class which is for the client side of things,.

HOW TO PLAY SKILLS ON RIG / DUMMY


As shown above to load a skill onto a dummy you must press on the dummy and select the skill you want to load. loading the skill does not play it it assigns the dummy to play whatever skill is loaded into it, if i was to load example 1 onto this dummy and example 1 onto the next dummy and click “Play All” it would play the skill for both dummies at the same time, this will also be the case if i swapped the skill on one of them.

To play skills individually you must simply have the dummy selected and click “Play”…
Stop will cancel the skill and revert the dummy.

EXAMPLE SKILLS
Server Script

return {
	['Began'] = function(self)
		local CharacterModel: Model = self.Character;
		local HumanoidRootPart: BasePart, Humanoid: Humanoid = CharacterModel:WaitForChild('HumanoidRootPart'), CharacterModel:WaitForChild('Humanoid');

		local StartPoint: CFrame = HumanoidRootPart.CFrame;

		self.Replication:Replicate({
			Attack = self,
			Action = 'Test_FireBall',
			Data = {StartPoint = StartPoint, Distance = 50, Speed = 75}
		})
		self:Destroy()
	end;
}

Client Script

return {
	['Test_FireBall'] = function(self, Data)
		local CharacterModel: Model = self.Character;
		local HumanoidRootPart: BasePart, Humanoid: Humanoid = CharacterModel:WaitForChild('HumanoidRootPart'), CharacterModel:WaitForChild('Humanoid');

		local Assets: Folder = script:WaitForChild('Assets');
		local Effects: Folder = workspace:WaitForChild('Effects');

		local StartPoint: CFrame = Data.StartPoint;
		local ContactPoint: CFrame = StartPoint * CFrame.new(0, 0, -Data.Distance)

		local Projectile: BasePart = Assets.Projectile:Clone();
		Projectile.Anchored, Projectile.CanCollide, Projectile.Transparency, Projectile.Parent = true, false, 1, Effects;

		self.Utilities.Toggle(true, Projectile);

		local Tween: Tween = game:GetService('TweenService'):Create(Projectile, TweenInfo.new(Data.Distance/Data.Speed, Enum.EasingStyle.Linear), {CFrame = ContactPoint});
		Tween:Play();
		Tween.Completed:Connect(function()
			self.Utilities.Toggle(false, Projectile, {Classes = {Beam=true}});

			for i: number, Beam: Beam in pairs(Projectile:GetDescendants()) do
				if Beam and Beam:IsA('Beam') then
					local FadedSequence: NumberSequence = NumberSequence.new({
						NumberSequenceKeypoint.new(0,1),
						NumberSequenceKeypoint.new(.5,1),
						NumberSequenceKeypoint.new(1,1);
					});

					task.spawn(self.Utilities.TweenNumberSequence, Beam.Transparency, FadedSequence, 50, .25, Beam, 'Transparency', Enum.EasingStyle.Sine, Enum.EasingDirection.Out);

					game:GetService('TweenService'):Create(Beam, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Width0 = 0, Width1 = 0}):Play();
				end;
			end;

			self.Debris:AddItem(Projectile, 1);

			--//Explosion Effect
			local ExplosionEffect: BasePart = Assets.Impact:Clone();
			ExplosionEffect:PivotTo(ContactPoint);
			ExplosionEffect.Parent = Effects;
			self.Debris:AddItem(ExplosionEffect, 2.031);

			--//Distortion
			local Sphere: MeshPart = ExplosionEffect.Sphere;
			Sphere.Transparency = 15; --//Max Distortion

			local Highlight: Highlight = Instance.new('Highlight', Sphere);
			Highlight.FillColor, Highlight.OutlineColor, Highlight.FillTransparency, Highlight.OutlineTransparency = Color3.fromRGB(255, 255, 255), Color3.fromRGB(255, 255, 255), 1, 1;
			Highlight.Enabled = false;

			local DistortionTween: Tween = game:GetService('TweenService'):Create(Sphere, TweenInfo.new(0.25, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Size = Vector3.zero});
			DistortionTween:Play();

			self.Utilities.Emit(ExplosionEffect);
		end)
	end;
}

Result

MORE EXAMPLES

to ask questions dm me on discord @ ._apexsage

4 Likes

Rather than doing this make the plugin paid. People can just whitelist themself. If someone owns a plugin then they can and will see the source of it.

this version is paid, the second version with a lot more features is going to be paid though

You mean that this version is free and the second one will be paid?

yes this version will be free, the next version with added features will be paid for, just usig this to see if people find it usefull or not

Whitelist privilege? What do you mean by this, why do we need to gain access to be whitelisted? This is just previewing particles, which many other plugins do.

this is not an emitter plugin as ive explained many times before, it is for creating and casting skills with as much efficiency as i can offer, whitelist is for the next big update of this plugin that contains a lot more features than this one is currently offering.

1 Like