I have created an emit plugin that functions well by being able to Emit Beams, meshes and particles.
Features
This plugin allows you to emit particles as you would the existing particle emit plugin, with the addition of a rest button to reset your values quicker.
The beam emit allows you to emit beams with two new added options, width1 which is the end, and duration, which is how long it would last. EmitDelay works on beams as well. Beams and particles can be emitted simultaneously, although its recommended to customise them individually.
The mesh emit allows you to emit meshes with 6 new added options. CFrame which allows you to change the cframe of the mesh, either by moving it forwards or backwards. Upwards downwards, etc, then we have SIze which adds size to the mesh’s existing size, we have transparency which alters the mesh’s transparency, and also orientation which lets you rotate the rotation, then we have time, which is how long it will take to change the mesh and duration which will be waited before returning the part to its original state. We also have EmitDelay which also works on meshes.
It doesn’t show up in the plugin bar whatsoever! It automatically shows up on your screen when you select a particle instance, a beam instance or a mesh part!
Cool plugin, only thing id like to see changed is for a setting that will automatically remove attributes when deselecting the mesh/particle emitter/beam, as they linger after publish.
Wety, great point. I was thinking of doing something but I realised that the attributes are quite useful when scripting, I might move the attributes from meshes but would not move the EmitCount or EmitDelay attributes as they are both frequently used when scripting. Anyways tune in for update 1 coming soon!
I noticed there wasn’t a script mentioned anywhere that actually uses the plugin, so I made a simple one for beams and particle emitters:
local ts = game:GetService("TweenService")
local function emit(part) -- part is the parent of all your vfx
for i, v in part:GetDescendants() do
if v:IsA("ParticleEmitter") then
v.Enabled = false
task.spawn(function()
if v:GetAttribute("EmitDelay") then
task.wait(v:GetAttribute("EmitDelay"))
end
if v:GetAttribute("EmitCount") then
v:Emit(v:GetAttribute("EmitCount"))
end
end)
elseif v:IsA("Beam") then
v.Enabled = true
if v:GetAttribute("Width0") and v:GetAttribute("Width1") and v:GetAttribute("Duration") then
task.spawn(function()
if v:GetAttribute("EmitDelay") then
task.wait(v:GetAttribute("EmitDelay"))
end
v.Width0 = 0
v.Width1 = 0
ts:Create(v, TweenInfo.new(v:GetAttribute("Duration"), Enum.EasingStyle.Quad, Enum.EasingDirection.Out,0, true), {Width0 = v:GetAttribute("Width0"), Width1 = v:GetAttribute("Width1")}):Play()
end)
end
end
end
end
although this is a bit old, if you’re still planning on working on this plugin i recommend you to use tables or values in serverstorage rather than attributes to save the values for the parts, the attributes get a bit annoying at times