BlockLua | The blazingly fast visual scripting plugin for Roblox. Code with blocks, like in Scratch!

Hello!

BL Online is not released yet. It will be released later on.

1 Like

Plugin price changes from January 3, 2024 (BlockLua, EventBlocks)

Hello developers!

I’m sorry to inform you, due to taxation law changes (on January 1, 2024) between the USA and Hungary, the price of BlockLua and EventBlocks will be raised by 46% and 40% on January 3, 2024

The new prices will be the following:

  • BlockLua: 150 Robux (current price) → 219 Robux (46% price change)
  • EventBlocks: 100 Robux (current price) → 140 Robux (40% price change)

Sorry for any inconvenience! I will try my best to deliver new, quality updates more frequently to match these new price tags.

Have a great day!

6 Likes

New price has been set

As planned, the price of BlockLua is now 219 Robux. New updates will be released later on!

Please tell me if you experience any problems with the plugin, have a great day!

2 Likes

Such a nice concept and really helpful for developers that are just starting to make their games on Roblox! :clap:

1 Like

Thank you so much! People like you keep me motivated to keep developing these plugins! I hope they reach many many people and help them get started on their journey!

2 Likes

Hey, what is the difference between this version (“BlockLua”) and the cheaper one (“EventBlocks”)?

It is written in the post, faster and more optimized

1 Like

Thanks for the answer. By the way great idea, especially for new people who want to make their first game in a simpler way. I wish you good luck in the development of the plugin.

1 Like

Custom blocks bug fix!

When creating custom blocks, if you chose the “Value” block type there was a bug that the Lua code automatically got a line break at the end which caused issues when embedding these blocks into each other. Now there is no line break getting added automatically. However, you have to correct the affected blocks and also make sure you save them.

6 Likes

This is a really good plugin for non-scripters, and having the ability to make custom blocks makes it all the more better! Thank you for making this Xsticcy!

2 Likes

as someone whos trash at scripting im debating on getting this, anyone able to vouch for how useful it is?

2 Likes

Really helpful. It’s easy to understand and you’ll be able to make great things using it :slight_smile:

Worth buying!

1 Like

I got a question. Does it feel like it’s missing something?

Here are a few custom blocks I’ve made on BlockLUA:
Get Mouse Position(Raycasting method)
{"BlockOrder":0,"BlockType":"block","Code":"local userInputService = game:GetService('UserInputService')\nlocal camera = workspace.CurrentCamera\nlocal mousePosition = Vector3.new(0, 0, 0)\nlocal filterlist = !{ValueInput2}\n\nlocal RANGE = !{ValueInput1} -- In Studs\n\nlocal raycastParams = RaycastParams.new()\nraycastParams.FilterDescendantsInstances = filterlist\nraycastParams.FilterType = Enum.RaycastFilterType.Exclude\n\nlocal mouse2DPosition: Vector2 = userInputService:GetMouseLocation()\nlocal mouse3DRay: Ray = camera:ViewportPointToRay(mouse2DPosition.X, mouse2DPosition.Y, 1)\nlocal raycastResult: RaycastResult = workspace:Raycast(mouse3DRay.Origin, mouse3DRay.Direction*RANGE, raycastParams)\nlocal !{BlockVariable3}\n\nif raycastResult then\n !{BlockVariable3} = raycastResult.Position\nelse\n !{BlockVariable3} = (mouse3DRay.Origin + mouse3DRay.Direction*RANGE)\nend","IsEvent":false,"Name":"GetMouseWorldPos","RunAfter":true,"Category":"client","ID":"id3186961236-1704466613-024866","HasInside":false,"Content":[["Label","Get mouse world position | Range:"],["ValueInput","number",1],["Label","Blacklist:"],["ValueInput","list",2],["BlockVariable","MousePosition",3]],"Docs":"Gets the mouse position through raycasting. For the filterlist, insert a variable containing a list of parts that you want the raycast to ignore. The range is just a number for the maximum raycast length."}

Shoot ray from instance:
{"BlockOrder":0,"BlockType":"block","Code":"local !{BlockVariable3} = nil\nlocal !{BlockVariable4} = nil\nlocal !{BlockVariable5} = nil\nlocal filterlist = !{ValueInput2}\n\nlocal New_caster = !{ValueInput1}\nlocal New_rayOrigin = New_caster:GetPivot().Position\nlocal New_rayDestination = (New_caster:GetPivot() * CFrame.new(0,0,-1000)).Position\nlocal New_rayDirection = New_rayDestination - New_rayOrigin\n\nlocal New_raycastParams = RaycastParams.new()\nNew_raycastParams.FilterDescendantsInstances = filterlist\nNew_raycastParams.FilterType = Enum.RaycastFilterType.Exclude\nlocal New_raycastResult = workspace:Raycast(New_rayOrigin, New_rayDirection, New_raycastParams)\n\nif New_raycastResult then\n\t!{BlockVariable3} = New_raycastResult.Instance\n\t!{BlockVariable4} = New_raycastResult.Position\n\t!{BlockVariable5} = New_raycastResult.Material\nend","RunAfter":true,"Category":"world","ID":"id3186961236-1701614970-6736038","Name":"Raycast","Content":[["Label","Shoot Ray From"],["ValueInput","Instance",1],["ValueInput","blacklist",2],["BlockVariable","_HitPart",3],["BlockVariable","_HitPosition",4],["BlockVariable","_HitMaterial",5]],"Docs":"Shoots a ray from the selected instance in the direction it is facing in. Insert a list variable into the blacklist for parts you want the raycast to ignore."}

Rotate part by vector3
{"BlockOrder":0,"BlockType":"block","Code":"local part = !{ValueInput1}\nlocal x = !{ValueInput2}.x\nlocal y = !{ValueInput2}.y\nlocal z = !{ValueInput2}.z\n\npart.CFrame = part.CFrame * CFrame.Angles(math.rad(x), math.rad(y), math.rad(z))","IsEvent":false,"Name":"rotatepart","RunAfter":true,"Category":"world","ID":"id3186961236-1704469216-3404477","HasInside":false,"Content":[["Label","Rotate"],["ValueInput","instance",1],["Label","by"],["ValueInput","vec3",2]],"Docs":"Rotates a part by the given Vector3 value."}

Advanced Tween Info Value Block:
{"BlockOrder":0,"BlockType":"value","Code":"TweenInfo.new(\n\t!{ValueInput1}, -- Time\n\tEnum.EasingStyle.!{TextInput2}, -- EasingStyle\n\tEnum.EasingDirection.!{TextInput3}, -- EasingDirection\n\t!{ValueInput4}, -- RepeatCount (when less than zero the tween will loop indefinitely)\n\t!{ValueInput5}, -- Reverses (tween will reverse once reaching it's goal)\n\t!{ValueInput6} -- DelayTime\n)","Name":"AdvancedTweenInfo","Category":"tweening","ID":"id3186961236-1701962481-2348216","RunAfter":false,"Content":[["Label","time"],["ValueInput","number",1],["Label","easing style"],["TextInput","Sine",2],["Label","easing direction"],["TextInput","InOut",3],["Label","repeat"],["ValueInput","number",4],["Label","reverse"],["ValueInput","true/false",5],["Label","delay"],["ValueInput","number",6]],"Docs":"A more advanced version of the 'tween info' value block. \nTime - The duration of the tween in seconds, number value.\nEasing Style - The easing style used, such as Sine, Linear, Quad, Circular and more.\nEasing Direction - The direction of the easing(Can be In, Out or InOut)\nRepeatCount - How many times the tween will repeat. Set this to 0 if you don't want the tween to loop, and set it to anything less than 0, such as -1, to make the tween loop forever.\nReverses - A True/False value. If true, the tween will reverse when completed.\nDelay - A number value, the delay for the tween in seconds.\nThe code also has a similar explanation."}

Tween Part Forward
{"Docs":"Tweens a part in the direction it is facing. It will travel (distance) studs. Insert any tween info value block at the end.","BlockType":"block","Code":"local part = !{ValueInput1}\nlocal distance = !{ValueInput2}\nlocal tween = game:GetService('TweenService'):Create(part, !{ValueInput3}, {CFrame = part.CFrame + (part.CFrame.LookVector * distance)})\ntween:Play()","IsEvent":false,"Name":"TweenForward","HasInside":false,"Category":"tweening","ID":"id3186961236-1702888739-319652","RunAfter":true,"Content":[["Label","Tween"],["ValueInput","Instance",1],["Label","Forward"],["ValueInput","Distance",2],["ValueInput","tween info",3]],"BlockOrder":0}

3 Likes

Wow! This is awesome! Thank you so much for the contribution and also for adding documentation for the blocks. Once I finish the Help page, the documentation of every block will be available there!

2 Likes

Wow, this looks awesome! I’m gonna give this a shot, thanks for making something for us new devs!

3 Likes

for the next update i would recommend making it actually look like scratch, Not google blockly

Some QoL blocks added

I’ve added some ‘Quality of Life’ blocks to make coding more simple!

New text blocks:
image

Also some maths blocks:
image

You can update the plugin and try them out!

Have a great day!

Sorry for not updating lately, I am a bit burnt out and also busy nowadays.

3 Likes

I bought this plugin for my friend because he’s not very good at normal scripting but he cannot seems to be able to drag in the blocks. Could you help with this?

Please read the tutorial in the OP. Everything is written down step by step.

2 Likes