Lua - Reddit – Telegram
Lua - Reddit
30 subscribers
278 photos
31 videos
4.23K links
News and discussion for the Lua programming language.

Subreddit: https://www.reddit.com/r/lua

Powered by : @r_channels & @reddit2telegram
Download Telegram
Does anyone else use lua as their main language for system automation and shell noscripting?

it's no secret that Lua is heavily underrated. ironically, i used to be against lua until i understood how nifty it is as a language. i formerly thought that one had to use index or metatable to create objects, only to find out that i could do this



```

function NameOfObject(instanceVariable1, instanceVariable2)

return{

method1 = function(self)

end,



method2 = function(self)

end,



method3 = function(self)

end,

}

end

```

and just like that it overtook the appreciation i had for how objects can be created in other languages.

in a less subjective sense, however, given how ridiculuously fast lua is compared to the bulk of languages that are interpreted, i committed to it for all my noscripting needs.

lua has now become my premier choice for automating anything related to my environment: my file system, my window manager, and even my system settings. it also greatly helps that i can automate repetitive and tedious text editing in neovim with lua as well.

i formerly used python for my noscripting needs, and in retrospect, it's rather comical to me how poor python is as a noscripting language compared to lua; it's a night and day difference. i can always trust lua for a startup time that is as good as instantaneous, whereas such a thing would be a fool's game in python.

granted, python does have all the abstractions one can hope for, but for system tasks, it's just outright overkill. one does not need a gazillian abstractions for system admin or shell noscripting needs

anyways, i've rambled long enough. is there anyone else that uses lua for shell noscripting needs and system automation, as opposed to roblox, C programming, game dev, and other low level tasks?



https://redd.it/1olcmrc
@r_lua
What game engine should i choose?

what game engine that is not a library, framework or Roblox Studio should i use

https://redd.it/1olhgl9
@r_lua
Question about string.match() and string.gsub()

I'm playing around with strings a bit and I got a weird result that I'd like an explanation for if possible.

Below, when I just run string.match on the test string, I get a string with the letter e at the end. But when I run it through gsub to strip the spaces, the e becomes a 0. Why is that?

> test_string = 'words_here.test.test'
> string.match(test_string, "(.+)%..+(e)")
words_here.test e
> string.match(test_string, "(.+)%..+(e)"):gsub("%s+", "")
words_here.test 0
> string.gsub(string.match(test_string, "(.+)%..+(e)"), "%s+", "")
words_here.test 0


EDIT: It also doesn't strip the spaces...

https://redd.it/1olycge
@r_lua
This media is not supported in your browser
VIEW IN TELEGRAM
Hey so this game uses lua and some custom code to this character,i need help making so whenever i say an specific word it does something,so far i got this noscript working but only for the "hi" part (someone shared an noscript with me)

https://redd.it/1oma091
@r_lua
car flipping upside down only ingame and only on pc, in roblox studio everything is good

i used a Jeep free model from the toolbox, you must know what is this model, the code is:

--Scripted by DermonDarble



local car = noscript.Parent

local stats = car.Configurations

local Raycast = require(noscript.RaycastModule)



local mass = 0



for i, v in pairs(car:GetChildren()) do

if v:IsA("BasePart") then

mass = mass + (v:GetMass() * 196.2)

end

end



local bodyPosition = car.Chassis.BodyPosition

local bodyGyro = car.Chassis.BodyGyro



--local bodyPosition = Instance.new("BodyPosition", car.Chassis)

--bodyPosition.MaxForce = Vector3.new()

--local bodyGyro = Instance.new("BodyGyro", car.Chassis)

--bodyGyro.MaxTorque = Vector3.new()



local function UpdateThruster(thruster)

-- Raycasting

local hit, position = Raycast.new(thruster.Position, thruster.CFrame:vectorToWorldSpace(Vector3.new(0, -1, 0)) * stats.Height.Value) --game.Workspace:FindPartOnRay(ray, car)

local thrusterHeight = (position - thruster.Position).magnitude



-- Wheel

local wheelWeld = thruster:FindFirstChild("WheelWeld")

wheelWeld.C0 = CFrame.new(0, -math.min(thrusterHeight, stats.Height.Value * 0.8) + (wheelWeld.Part1.Size.Y / 2), 0)

-- Wheel turning

local offset = car.Chassis.CFrame:inverse() * thruster.CFrame

local speed = car.Chassis.CFrame:vectorToObjectSpace(car.Chassis.Velocity)

if offset.Z < 0 then

local direction = 1

if speed.Z > 0 then

direction = -1

end

wheelWeld.C0 = wheelWeld.C0 * CFrame.Angles(0, (car.Chassis.RotVelocity.Y / 2) * direction, 0)

end



-- Particles

if hit and thruster.Velocity.magnitude >= 5 then

wheelWeld.Part1.ParticleEmitter.Enabled = true

else

wheelWeld.Part1.ParticleEmitter.Enabled = false

end

end



car.DriveSeat.Changed:connect(function(property)

if property == "Occupant" then

if car.DriveSeat.Occupant then

car.EngineBlock.Running.Pitch = 1

car.EngineBlock.Running:Play()

local player = game.Players:GetPlayerFromCharacter(car.DriveSeat.Occupant.Parent)

if player then

car.DriveSeat:SetNetworkOwner(player)

local localCarScript = noscript.LocalCarScript:Clone()

localCarScript.Parent = player.PlayerGui

localCarScript.Car.Value = car

localCarScript.Disabled = false

end

else

car.EngineBlock.Running:Stop()

end

end

end)



--spawn(function()

while true do

game:GetService("RunService").Stepped:wait()

for i, part in pairs(car:GetChildren()) do

if `part.Name` == "Thruster" then

UpdateThruster(part)

end

end

if car.DriveSeat.Occupant then

local ratio = car.DriveSeat.Velocity.magnitude / stats.Speed.Value

car.EngineBlock.Running.Pitch = 1 + ratio / 4

bodyPosition.MaxForce = Vector3.new()

bodyGyro.MaxTorque = Vector3.new()

else

local hit, position, normal = Raycast.new(car.Chassis.Position, car.Chassis.CFrame:vectorToWorldSpace(Vector3.new(0, -1, 0)) * stats.Height.Value)

if hit and hit.CanCollide then

bodyPosition.MaxForce = Vector3.new(mass / 5, math.huge, mass / 5)

bodyPosition.Position = (CFrame.new(position, position + normal) * CFrame.new(0, 0, -stats.Height.Value + 0.5)).Position

bodyGyro.MaxTorque = Vector3.new(math.huge, 0, math.huge)

bodyGyro.CFrame = CFrame.new(position, position + normal) * CFrame.Angles(-math.pi/2, 0, 0)

else

bodyPosition.MaxForce = Vector3.new()

bodyGyro.MaxTorque = Vector3.new()

end

end

end

--end)


ask in the comments for more info

i alredy lowered down the speed of the car and turn speed too, to avoid them falling upside down, but its still going crazy on slopes

https://redd.it/1on2tkz
@r_lua
I wrote a framework to build VST Plugins using Lua!

This is a Stereo Imager VST plugin that can be used to increase or decrease the stereo field.

This is a Physically modeled amplifier VST plugin

I found it difficult to iterate and coordinate changes efficiently with C++ compile times, even when they were minimized.

So I decided to build a framework, using C++ on the back-end, and writing a Lua-library for hot-reloaded application setup, resource management, UI, interactivity and even optimized DSP!

https://redd.it/1ongpry
@r_lua
I think I'm misunderstanding the return function
https://redd.it/1onmn3h
@r_lua
Node.js bindings for Lua — lua-state

I’ve recently published an open-source package called lua-state.

It provides native Lua bindings for Node.js — you can create Lua virtual machines from JavaScript, run Lua code, exchange values between JS and Lua, and even use prebuilt binaries (no manual compilation required for Lua 5.4.8).

Supports Lua 5.1–5.4 and LuaJIT.

Source code: github.com/quaternion/node-lua-state

If you’re interested in embedding Lua into JS applications or experimenting with Lua noscripting from Node, I’d really appreciate any feedback or thoughts.

https://redd.it/1oo3cib
@r_lua
How bad is it to use local self = {} instead of the vastly popular local M = {}

I've just start learning lua mostly for using it in neovim. As I expand my knowledge to writing bigger modules, I noticed that most Lua tutorials use the following convention:

local M = {}

<..code..>

return M


However, to my naive self, self seems a lot better. Consider:

local M = {}
M.bar = 2
function M:foo()
return self.bar + 1
end
return M


vs

local self = {}
self.bar = 2
function self.foo()
return self.bar + 1
end
return self


1. Notice how foo continues using self so that it "feels" like the former (perhaps more OOP-ish) way of doing things.
2. It helps everywhere you want to pass foo as a callback in other modules:

p = require('a.b.mymodule')

some_function({callback = function() p:foo() end})
---vs (IMO much better)
some_function({callback = p.foo})


So I only see advantages to doing it the local self = {} way. Why is this not popular or not recommended? I'm assuming it'll break something but not sure what.

https://redd.it/1op9cnw
@r_lua
I'm developing Sandman, an HTTP focussed, Lua based Notebook-style app, (more than a Postman alternative)
https://redd.it/1opca0h
@r_lua
Need help with images

I am incredibly new to Lua. Like so very very new. like i know nothing. I am learning to code, my programs are love2d to load the game and visual studio to write it

I have the image i want in the file (as seen below, ignore the name for it i was tired.), but im not sure how to load it onto the actual screen of the game. Ive tried loadfile(yummy.jpg, bt, any) after the function with an ending but nothing happens. help is very much appreciated :)

https://preview.redd.it/8wfgr3sxs30g1.png?width=175&format=png&auto=webp&s=935f048738bf34fe2d4be93e90d078964770d91c



https://redd.it/1os1ime
@r_lua
Syntax conventions, string.foo(bar) vs bar:foo()

I'm primarily a Python programmer but I've been learning Lua for various reasons and I am coming to appreciate its sleek nature the more I use it.

That said, I'm grappling with the different syntax options that Lua provides. In the Pythonic mantra, the line There should be one-- and preferably only one --obvious way to do it. comes to mind; while it is nice to have options I feel like I should choose one way or another and stick to it. Is this how Lua programmers typically operate?

If I were to stick with one, which to do? Again referencing the Pythonic way, we have Explicit is better than implicit. and Sparse is better than dense. and Readability counts., which to me would point to using string.foo(bar) instead of the : syntactic sugar, but it also isn't quite as compact.

What are your thoughts? Am I just overthinking things and applying Pythonic logic where I shouldn't? How do Lua programmers typically write their code?

https://redd.it/1osu6zj
@r_lua
What’s a Lua feature you wish other noscripting languages had?

Lua’s simple but powerful what part do you miss elsewhere?

https://redd.it/1otfgqi
@r_lua
I coded the Collatz conjecture in Lua, please give feedback

I am a lua developer and to test my abilities I decided to code the Collatz conjecture, it's available on GitHub
It's a simple code but I am just testing my skills, if you find any way I could make the code better tell me.
Thanks
Here's the GitHub: https://github.com/Gs-pt/Collatz-conjecture?tab=readme-ov-file

https://redd.it/1othc9l
@r_lua