Lua - Reddit – Telegram
Lua - Reddit
31 subscribers
281 photos
31 videos
4.28K links
News and discussion for the Lua programming language.

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

Powered by : @r_channels & @reddit2telegram
Download Telegram
Notes/Listing system in Lua (outside Roblox Studio) with Guides

-- See Code below for guide

local function clear()
for i = 1, 100 do
print()
end
end

local list = {}

local function reloadList()
if #list > 0 then
for _, listed in ipairs(list) do
if listed[2] == "bool" then
if listed[3] == "true" then
print(" "..listed[1].." 🟩")

elseif listed[3] == "false" then
print(" "..listed[1].." 🟥")
end

elseif listed[2] == "num" then
print(" "..listed[1].." 🧱"..listed[3].." / "..listed[4].."🧱")
end
end
end

for i = 1, 11 - math.min(#list, 11) do
print()
end
end

local ListPatternBool = "/List%s(.+)%s(%a+)%s(%a+)"
local ListPatternNum = "/List%s(.+)%s(%a+)%s(%d+)%s(%d+)"

local SetPatternBool = "/Set%s(.+)%s(%a+)"
local SetPatternNum = "/Set%s(.+)%s(%d+)%s(%d+)"

local RemovePattern = "/Remove%s(.+)"

local function write()
local input = io.read()

clear()

if input then
local name, listType, bool = input:match(ListPatternBool)
local name2, listType2, num, max = input:match(ListPatternNum)
local name3, value = input:match(SetPatternBool)
local name4, value2, maxValue = input:match(SetPatternNum)
local name5 = input:match(RemovePattern)

if #list < 11 and name and listType and listType:lower() == "bool" and bool and (bool:lower() == "true" or bool:lower() == "false") then
local existing = false

if #list ~= 0 then
for _, listed in ipairs(list) do
if not existing and listed[1] and listed[1] == name then
existing = true
end
end
end

if not existing then
table.insert(list, {name, "bool", bool})
end

elseif #list < 11 and name2 and listType2 and listType2:lower() == "num" and num and max then
local existing = false

if #list ~= 0 then
for _, listed in ipairs(list) do
if not existing and listed[1] and listed[1] == name2 then
existing = true
end
end
end

if not existing then
table.insert(list, {name2, "num", math.min(num, max), max})
end

elseif name3 and (value:lower() == "true" or value:lower() == "false") then
local changed = false

if #list ~= 0 then
for _, listed in ipairs(list) do
if not changed and listed[1] == name3 and listed[2] == "bool" then
changed = true

listed[3] = value
end
end
end

elseif name4 and value2 and maxValue then
local changed = false

if #list ~= 0 then
for _, listed in ipairs(list) do
if not changed and listed[1] == name4 and listed[2] == "num" then
changed = true

listed[4] = maxValue
listed[3] = math.min(value2, listed[4])
end
end
end

elseif name5 then
if #list ~= 0 then
for i, listed in ipairs(list) do
if listed[1] == name5 then
table.remove(list, i)
end
end
end
end
end

if input then
reloadList()
write()
end
end

write()

-- List --
-- Boolean (true/false): /List name bool value
-- Number (num/max): /List name num value maxValue
--|--

-- Changes --
-- Boolean (true/false): /Set name value
-- Number (num/max): /Set name value maxValue
-- Remove: /Remove name
--|--

https://redd.it/1dv7dbi
@r_lua
How to learn lua

I want to start learning code because I want to start making games on Roblox and are there any websites or tutorials that I can watch to help me learn coding?

https://redd.it/1dvchce
@r_lua
How do i learn lua, (what are good places to learn)

i tried learning c# first but quit, python is decent but i want this one, what are good websites or videos to learn it. im tryna help my friends on making a game (not roblox)

https://redd.it/1dve2nw
@r_lua
👍1
Optional function annotation?

I can't seem to figure out how to mark a function as optional, here is a short example:

---@meta
---@class FrameContainer
---@field Frame table the container frame.
---@field Type number the type of frames this container holds.
---@field LayoutType number the layout type to use when arranging frames.
---@field FramesOffset fun(self: table): Offset? any offset to apply for frames within the container.
---@field GroupFramesOffset fun(self: table): Offset? any offset to apply for frames within a group.


I wish to make the FramesOffset and GroupFramesOffset functions nullable/optional but unsure how. I've tried adding a "?" in various locations but it results in a syntax error.

https://redd.it/1dvlquc
@r_lua
Resetting system state in between luaunit tests

I have a bunch of automated tests that end up modifying system state. I'm manually unwinding state changes inside my `teardown()` function however it's very bothersome to do this and I have a feeling not all changes are being reset.

My question is: is there a nicer way to reset state during tests? I suppose I could run a separate lua process for every single test but hoping there is a cleaner solution?

Here is the source code: https://github.com/Verubato/framesort/blob/main/tests/Test.lua

https://redd.it/1dvq92x
@r_lua
please help with my orientation issue on a roblox lua game
https://redd.it/1dx6uda
@r_lua
Phase angle Vs Torque for IPM Motor in FEMM

I have a IPM motor modeled in FEMM and I am trying to get a graph of phase angle Vs torque.

I have been unable to find any sample code for this, does anyone have any suggestions on where to start?

https://redd.it/1dyeonx
@r_lua
how to find libssl.so in lua?

i try http lib in a luarocks project,

but occurred a problem with libssl.so not found

❯ bfs -type f -name *libssl* /usr/
bfs: warning: Failed to set locale: No such file or directory

/usr/lib/x86_64-linux-gnu/libssl.so.1.1
/usr/lib/x86_64-linux-gnu/libssl3.so
/usr/lib/x86_64-linux-gnu/libssl.so.3
/usr/lib/x86_64-linux-gnu/libssl.a
/usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc

❯ lua -l src/setup src/main.lua
lua: error loading module '_cqueues' from file 'lua_modules/lib/lua/5.4/_cqueues.so':
libssl.so.3: cannot open shared object file: No such file or directory
stack traceback:
[C]: in ?
[C]: in function 'require'
lua_modules/share/lua/5.4/cqueues/auxlib.lua:2: in function <lua_modules/share/lua/5.4/cqueues/auxlib.lua:1>
(...tail calls...)
[C]: in function 'require'
lua_modules/share/lua/5.4/http/client.lua:1: in main chunk
[C]: in function 'require'
lua_modules/share/lua/5.4/http/request.lua:5: in main chunk
[C]: in function 'require'
src/main.lua:1: in main chunk
[C]: in ?


https://redd.it/1dytgdv
@r_lua
can somepone help me fix this noscript local tool = noscript.Parent
local debounce = false -- To prevent rapid clicking

tool.Activated:Connect(function()
if not debounce then
debounce = true

-- Create a clone of the tool
local clone = tool:Clone()
clone.Pare



https://redd.it/1dyx5xd
@r_lua
Problem generating consistent heightmaps using simplex noise

Example images:

https://preview.redd.it/0rq64777ogbd1.png?width=777&format=png&auto=webp&s=21c7696b6e65289f55ac7227c699880a18133f6d

https://preview.redd.it/1swmq0jcogbd1.png?width=777&format=png&auto=webp&s=d89921594d376ebd5a44ff244321081e4b956e8e

https://preview.redd.it/y5fbmybdogbd1.png?width=777&format=png&auto=webp&s=a3e84ed077815bceada1c78a2897ff295b6c6fc8

I'm trying to generate a 2d terrain from a heightmap created by simplex noise.

The use case is a map that is endlessly traversable in all directions,

so I have copied the source code from this tutorial project [https://www.youtube.com/watch?v=Z6m7tFztEvw&t=48s](https://www.youtube.com/watch?v=Z6m7tFztEvw&t=48s)

and altered it to run in the Solar2d SDK ( don't think my problem is API related )

Currently my project is set up to create 4 chunks, my problem is they have incosistencies. When generating the heightmaps with 1 octave they are consistent, so the problem is caused by having multiple octaves, but I can't figure out why or how to work around it.

I know this is quite an extensive ask, but I'm hoping someone here has experience working with noise and could offer some suggestions. Any pointers are greatly appreciated.



simplex.lua:

[https://github.com/weswigham/simplex/blob/master/lua/src/simplex.lua](https://github.com/weswigham/simplex/blob/master/lua/src/simplex.lua)



tilemap.lua:

local M = {}

local inspect = require("libs.inspect")
local simplex = require("simplex")
local util = require("util")

-- grid
local chunkSize = 50
local width = chunkSize
local height = chunkSize
local seed
local grid

-- vars
local height_max = 20
local height_min = 1
local amplitude_max = height_max / 2
local frequency_max = 0.030
local octaves = 3
local lacunarity = 2.0
local persistence = 0.5
local ini_offset_x
local ini_offset_y

-- aesthetic
local rectSize = 10
local blackDensity = 17
local greyDensity = 10

-- draw chunk from grid
local function draw(iniX, iniY)
for i = 1, height do
for j = 1, width do
local rect = display.newRect(iniX+rectSize*(j-1), iniY+rectSize*(i-1), rectSize, rectSize)
if grid[i][j] > blackDensity then
rect:setFillColor(0)
elseif grid[i][j] > greyDensity and grid[i][j] <= blackDensity then
rect:setFillColor(0.5)
end
end
end
end

-- fill grid with height values
local function fractal_noise(pos_x, pos_y)

math.randomseed(seed)

local offset_x = ini_offset_x+pos_x
local offset_y = ini_offset_x+pos_y

for i = 1, height do
for j = 1, width do
local noise = height_max / 2
local frequency = frequency_max
local amplitude = amplitude_max
for k = 1, octaves do
local sample_x = j * frequency + offset_x
local sample_y = i * frequency + offset_y

noise = noise + simplex.Noise2D(sample_x, sample_y) * amplitude
frequency = frequency * lacunarity
amplitude = amplitude * persistence
end
noise = util.clamp(height_min, height_max, util.round(noise))
grid[i][j] = noise
end
end
end

local function iniSeed()
seed = 10000
ini_offset_x = math.random(-999999, 999999)
ini_offset_y = math.random(-999999, 999999)
end

local function init()
iniSeed()
grid = util.get_table(height, width, 0)

-- dist= frequency_max * 50
local dist = frequency_max * chunkSize

-- generate 4 chunks
fractal_noise(0, 0)
draw(0, 0)
fractal_noise(dist, 0)
draw(rectSize*chunkSize, 0)
fractal_noise(0, dist)
draw(0,
rectSize*chunkSize)
fractal_noise(dist, dist)
draw(rectSize*chunkSize, rectSize*chunkSize)

end

init()


return M


util.lua:

local util = {}

function util.get_table(rows, columns, value)
local result = {}
for i = 1, rows do
table.insert(result, {})
for j = 1, columns do
table.insert(result[i], value)
end
end
return result
end

function util.round(value)
local ceil = math.ceil(value)
local floor = math.floor(value)
if math.abs(ceil - value) > math.abs(value - floor) then
return floor
end
return ceil
end

function util.clamp(min, max, value)
if value < min then
return min
end
if value > max then
return max
end
return value
end

function util.is_within_bounds(width, height, x, y)
return 0 < x and x <= width and 0 < y and y <= height
end

util.deque = {}

function util.deque.new()
return { front = 0, back = -1 }
end

function util.deque.is_empty(deque)
return deque.front > deque.back
end

function util.deque.front(deque)
return deque[deque.front]
end

function util.deque.back(deque)
return deque[deque.back]
end

function util.deque.push_front(deque, value)
deque.front = deque.front - 1
deque[deque.front] = value
end

function util.deque.pop_front(deque)
if deque.front <= deque.back then
local result = deque[deque.front]
deque[deque.front] = nil
deque.front = deque.front + 1
return result
end
end

function util.deque.push_back(deque, value)
deque.back = deque.back + 1
deque[deque.back] = value
end

function util.deque.pop_back(deque)
if deque.front <= deque.back then
local result = deque[deque.back]
deque[deque.back] = nil
deque.back = deque.back - 1
return result
end
end

return util

https://redd.it/1dyy3xd
@r_lua
Is is possible to test if value is boolean while using only what is thought in chapter 1 of "Programming in Lua, 4th edition"

Exercise 1.6 of the book "Programming in Lua, 4th edition" asks how to check if value is a Boolean without using type. I came out with (value == true or value == false) and it works, but it uses == which has not been introduced so far.

When I learn (or relearn/revise) something in a book and do the exercises, I am very careful to only use what has been covered so far but I don't think that's possible in this case, am I missing something?



https://redd.it/1dz389o
@r_lua
Intercept and count JMS package size

Hi there, how would u guys count the packet size of a JMS TextMessage object.

I am intercepting a JMS message over TCP and I’d like to count the bytes of the message stream. Such that once it hits 10 bytes, I want to fire an if clause to break the loop and only forward the 10 bytes up to JMS.

Any ideas how I could count the bytes?

https://redd.it/1dzwo0f
@r_lua
Table size

How do I find the size of lua table in versioin 5.4.x? table.getn, setn and maxn seem to be gone. Is there a way to find the end without counting until nil is found?

Tnx

https://redd.it/1e04ll3
@r_lua
What is the proper way to run lua in VScode?

I'm just starting, and have already downloaded and installed lua. Currently, I type in the terminal lua54 and then the name of the file I want to run. Is there a way to run code dirctly from the text in the editor without first saving it to a file and running the file?

Any help would be appriciated

https://redd.it/1e05mqg
@r_lua
Can someone help me to decrypt the lua file?

Hello I need to decrypt the lua file. It is made for tibia noscript but its coded and i dont know what is inside. Please help me Download lua file here

https://redd.it/1e0c9h1
@r_lua
I need help with a bit of code, I'm using G Hub to get a noscript down and I just cannot seem for the life of me, to get this to work.

EnablePrimaryMouseButtonEvents(true);

function OnEvent(event, arg)

if (event == "PROFILE_ACTIVATED") then

profile = 1

numberOfProfiles = 8

up = 5

down = 4

end

if (IsKeyLockOn("capslock") == true) then

if (IsMouseButtonPressed(down) and profile > 1) then

profile = profile - 1;

end

if (IsMouseButtonPressed(up) and profile < numberOfProfiles) then

profile = profile + 1;

end

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

I'm not sure how much of it you'll need to see to get a grasp on it here, but I'm trying to get the buttons changed off of my mouse onto 'rshift' and 'rctrl'. I've tried to change it over to IsModifierPressed but I just cant figure it out. Please get back to me if you can help, I've been up trying to solve this on my own for 4 hours and no research is paying off. Thanks.

( P.S. If you need the whole code let me know and ill send the rest. )

https://redd.it/1e1bexu
@r_lua
Help

I really want to learn lua for coding in Gmod but I don't really know where to start. Any help?

https://redd.it/1e25eao
@r_lua
I want to learn how to code in lua.

I play a lot of Yu-Gi-Oh especially on EDOpro. That program allows you to make custom cards. The code for the cards is done in lua. I have no background in coding at all. I want to try to learn it so I can make my own cards. What is the best way for me to learn about coding in lua. Is lua a good start or should I learn a different programming language first?

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