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

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

Powered by : @r_channels & @reddit2telegram
Download Telegram
PLEASE HELP MEEEEEEEEEEEEEE

function love.load()
math.randomseed(os.time())
love.window.setFullscreen(true)

bullets = {}

player = {}
player.width = 25
player.height = 25
player.x = love.graphics.getWidth() / 2 - player.width / 2
player.y = love.graphics.getHeight() / 2 - player.height / 2
player.speed = 350

gun = {}
gun.width = 15
gun.height = 10
gun.x = player.x + player.width
gun.y = player.y + player.height / 2 - gun.height / 2
gun.speed = player.speed

count = 0
fireRateCount = 0
fireRateTimer = 1
bullet_direction = "right"
gun_direction = "right"

wave = 0
enemies = {}
kills = 0
gameOver = false
pierce_shot = false
upgrades = {"piercing","bulletspeed","playerspeed","bulletdamage"}
upgrade = 0
bullet_speed = 500
bullet_damage = 1
wave_update()
end



function love.update(dt)
if #enemies == 0 and wave > 0 then
    upgradeSelect()
    wave_update()
end

count = count + dt
fireRateCount = fireRateCount + dt



if fireRateCount >= fireRateTimer then
    createBullet()
    fireRateCount = 0
end

--enemy movement
for i, v in ipairs(enemies) do
    if v.x >= player.x - 10 and v.x <= player.x + 10 then
        v.x = v.x + v.close_hor_speed * dt
    elseif v.x < player.x then
        v.x = v.x + v.hor_speed * dt
    elseif v.x > player.x then
        v.x = v.x - v.hor_speed * dt
    end
    if v.y >= player.y - 10 and v.y <= player.y + 10 then
        v.y = v.y + v.close_vert_speed * dt
    elseif v.y < player.y then
        v.y = v.y + v.vert_speed * dt
    elseif v.y > player.y then
        v.y = v.y - v.vert_speed * dt
    end
end
for i in ipairs(enemies) do
    if checkCollision(player,enemies[i]) == true then
        gameOver = true
    end
end

for e = #enemies, 1, -1 do
    for i = #bullets, 1, -1 do
        if checkCollision(bullets[i],enemies[e]) == true  and enemies[e].hit == false then
                enemies[e].health = enemies[e].health - bullets[i].damage
                enemies[e].hit = true
        elseif not checkCollision(bullets[i],enemies[e]) then
            enemies[e].hit = false
        end

        if enemies[e].health <= 0 then
            table.remove(enemies,e)
            kills = kills + 1
        end

        if pierce_shot == false then
            table.remove(bullets,i)
        elseif checkCollision(bullets[i],enemies[e]) == false then
            enemies[e].is_touching = false
            bullets[i].is_touching = false
        end
        break
    end
end

for i = #bullets, 1, -1 do
    if bullets[i].y <= 0 then
        table.remove(bullets,i)
    elseif bullets[i].x <= 0 then
        table.remove(bullets,i)
    elseif bullets[i].y >= love.graphics.getHeight() - bullets[i].height then
        table.remove(bullets,i)
    elseif bullets[i].x >= love.graphics.getWidth() - bullets[i].width then
        table.remove(bullets,i)
    end
end
--player movement
if love.keyboard.isDown("w") then
    player.y = player.y - player.speed * dt
    gun.y = gun.y - gun.speed * dt
end
if love.keyboard.isDown("s") then
    player.y = player.y + player.speed * dt
    gun.y = gun.y + gun.speed * dt
end
if love.keyboard.isDown("a") then
    player.x = player.x - player.speed * dt
    gun.x = gun.x - gun.speed * dt
end
if love.keyboard.isDown("d") then
    player.x = player.x + player.speed * dt
    gun.x = gun.x + gun.speed * dt
end

love.keypressed(key)

for i, v in ipairs(bullets) do
    if v.direction == "up" then
        v.y = v.y - v.speed * dt
    elseif v.direction == "right" then
        v.x = v.x + v.speed * dt
    elseif v.direction == "down" then
        v.y = v.y + v.speed * dt
    elseif v.direction == "left" then
        v.x = v.x - v.speed * dt
    end

end

if player.x < 0 then
    player.x = 0
    if gun_direction == "left" then
        gun.x = 0 - gun.width
    elseif gun_direction == "right" then
        gun.x = 0 + player.width
    elseif gun_direction == "down" then
        gun.x = player.x + player.width / 2 - gun.width / 2
    elseif gun_direction == "up" then
        gun.x = player.x + player.width / 2 - gun.width / 2
    end
elseif player.x + player.width > love.graphics.getWidth() then
    player.x = love.graphics.getWidth() - player.width
    if gun_direction == "right" then
        gun.x = love.graphics.getWidth()
    elseif gun_direction == "left" then
        gun.x = love.graphics.getWidth() - player.width - gun.width
    elseif gun_direction == "down" then
        gun.x = player.x + player.width / 2 - gun.width / 2
    elseif gun_direction == "up" then
        gun.x = player.x + player.width / 2 - gun.width / 2
    end
end

if player.y < 0 then
    player.y = 0
    if gun_direction == "up" then
        gun.y = 0 - gun.height
    elseif gun_direction == "down" then
        gun.y = 0 + player.height
    elseif gun_direction == "right" then
        gun.y = player.y + player.height / 2 - gun.height / 2
    elseif gun_direction == "left" then
        gun.y = player.y + player.height / 2 - gun.height / 2
    end
elseif player.y + player.height > love.graphics.getHeight() then
    player.y = love.graphics.getHeight() - player.height
    if gun_direction == "down" then
        gun.y = love.graphics.getHeight()
    elseif gun_direction == "up" then
        gun.y = love.graphics.getHeight() - player.height - gun.height
    elseif gun_direction == "right" then
        gun.y = player.y + player.height / 2 - gun.height / 2
    elseif gun_direction == "left" then
        gun.y = player.y + player.height / 2 - gun.height / 2
    end
end



end

function love.draw()
love.graphics.setColor(1,1,1)
love.graphics.print("Kills: "..kills,love.graphics.getWidth() / 2, 100)
love.graphics.print("Bullet speed:"..bullet_speed, 0, 20)
love.graphics.print("Player speed:"..player.speed, 0, 40)
love.graphics.print("Bullet damage:"..bullet_damage, 0, 60)
if pierce_shot == true then
    love.graphics.print("Piercing shot: active", 0, 80)
elseif pierce_shot == false then
    love.graphics.print("Piercing shot: inactive", 0, 80)
end
if gameOver == false then
    love.graphics.rectangle("fill", player.x, player.y, player.width, player.height)
    love.graphics.rectangle("fill", gun.x, gun.y, gun.width, gun.height)
    for i, v in ipairs(bullets) do
        love.graphics.rectangle("fill", v.x - v.x_origin, v.y - v.y_origin, v.width, v.height)
    end
    for i, v in ipairs(enemies) do
        love.graphics.setColor(1,0,0)
        love.graphics.rectangle("fill",v.x,v.y,v.width,v.height)
        love.graphics.setColor(0,0,0)
        love.graphics.print(v.health,v.x,v.y)
    end
elseif gameOver == true then
    love.graphics.print("Game Over!", love.graphics.getWidth() / 2,love.graphics.getHeight() / 2)
end

end

function love.keypressed(key)
    local turn_timer = 0.1
    if key == "down" and count >= turn_timer then
        count = 0
        gun.width = 10
        gun.height = 15
        gun.x = player.x + player.width / 2 - gun.width / 2
        gun.y = player.y + player.height
        bullet_direction = "down"
        gun_direction = bullet_direction
    elseif key == "right" and count >= turn_timer then
        count = 0
        gun.width = 15
        gun.height = 10
        gun.x = player.x + player.width
        gun.y = player.y + player.height / 2 - gun.height / 2
 
      bullet_direction = "right"
        gun_direction = bullet_direction
    elseif key == "up" and count >= turn_timer then
        count = 0
        gun.width = 10
        gun.height = 15
        gun.x = player.x + player.width / 2 - gun.width / 2
        gun.y = player.y - gun.height
        bullet_direction = "up"
        gun_direction = bullet_direction
    elseif key == "left" and count >= turn_timer then
        count = 0
        gun.width = 15
        gun.height = 10
        gun.x = player.x - gun.width
        gun.y = player.y + player.height / 2 - gun.height / 2
        bullet_direction = "left"
        gun_direction = bullet_direction
    end
end

function createBullet()
    bullet = {}
    bullet.x = gun.x + gun.width / 2
    bullet.y = gun.y + gun.height / 2
    bullet.width = 5
    bullet.height = 5
    bullet.speed =  bullet_speed or 500
    bullet.speedOfBullet = bullet.speed
    bullet.direction = bullet_direction
    bullet.x_origin = bullet.width / 2
    bullet.y_origin = bullet.height / 2
    bullet.damage = bullet_damage or 1
    table.insert(bullets,bullet)
end


function createEnemy()
local x_min = -300
local x_max = love.graphics.getWidth() + 300
local y_min = -300
local y_max = love.graphics.getHeight() + 300
local deciding_x = math.random(0,1)
local deciding_y = math.random(0,1)
enemy = {}
enemy.width = math.random(20,50)
enemy.height = enemy.width
enemy.area = enemy.height * enemy.width
enemy.close_vert_speed = 0
enemy.close_hor_speed = 0
if pierce_shot == true then
    enemy.hit = false
end

if deciding_x == 0 then
    enemy.x = math.random(x_min,0)
elseif deciding_x == 1 then
    enemy.x = math.random(love.graphics.getWidth(),x_max)
end
if deciding_y == 0 then
    enemy.y = math.random(y_min,0)
elseif deciding_y == 1 then
    enemy.y = math.random(love.graphics.getHeight(),y_max)
end
if enemy.area >= 2500 then
    enemy.vert_speed = 50
    enemy.hor_speed = 50
    enemy.health = 7
elseif enemy.area >= 2025 then
    enemy.vert_speed = 100
    enemy.hor_speed = 100
    enemy.health = 6
elseif enemy.area >= 1600 then
    enemy.vert_speed = 150
    enemy.hor_speed = 150
    enemy.health = 5
elseif enemy.area >= 1225 then
    enemy.vert_speed = 200
    enemy.hor_speed = 200
    enemy.health = 4
elseif enemy.area >= 900 then
    enemy.vert_speed = 250
    enemy.hor_speed = 250
    enemy.health = 3
elseif enemy.area >= 625 then
    enemy.vert_speed = 300
    enemy.hor_speed = 300
    enemy.health = 2
elseif enemy.area >= 400 then
    enemy.vert_speed = 350
    enemy.hor_speed = 350
    enemy.health = 1
end
table.insert(enemies,enemy)
end

function wave_update()
    wave = wave + 1
    for i = 1,wave do
        createEnemy()
    end
end

function checkCollision(a,b)
    local a_left = a.x
    local a_right = a.x + a.width
    local a_top = a.y
    local a_bottom = a.y + a.height

    local b_left = b.x
    local b_right = b.x + b.width
    local b_top = b.y
    local b_bottom = b.y + b.height

    return  a_right > b_left
    and a_left < b_right
    and a_bottom > b_top
    and a_top < b_bottom
end


function upgradeSelect()
upgrade = math.random(1,#upgrades)
player_speed = 350
bullet_speed = 500
bullet_damage = 1
if upgrades[upgrade] == "piercing" then
    pierce_shot = true
    table.remove(upgrades,i)
elseif upgrades[upgrade] == "bulletspeed" then
    bullet_speed = bullet.speedOfBullet + 100
elseif upgrades[upgrade] == "playerspeed" then
    player_speed = player.speed + 50
    player.speed = player_speed
    gun.speed = player_speed
elseif upgrades[upgrade] ==
"bulletdamage" then
    bullet_damage = bullet.damage + 1
end
   
end


Alright, so this is the code I am using, I have added basic upgrades to the game that you get randomly after each wave. With my code currently as is shown here, whenever the createBullet() function is run it will not add to the bullets list, or maybe the bullets list is being cleared? Anyways if someone could tell me why it will not make any bullets, and maybe send an updated version of the code that would be great.

https://redd.it/1gdtv37
@r_lua
Any way to decompile .dll to .lua ?

I recently found a dll that was written in lua, but I have no idea to decompile it to readable source code or simmilar, I tried using IDA but I don't know anything about binary or hex codes so thats a no for me, I only found ways to compile lua code to executable .dll or .exe, but I want to decompile it from the alredy compiled code, is there a way to reverse engineer the .dll file?. I read that maybe lua code is compiled in C++

What programms do you recommend to decompile the dll with? (already tried dnSpy, but it doesnt work with lua)

Is there any way to make the .dll readable or useful? (making it runnable, readable or editable in .lua)



I appreciate any help or thoughts.

https://redd.it/1gdyfh4
@r_lua
Is there a guide on installing luarocks for windows for a complete beginner?

I've been programming with lua for about 2 months now, I learned a lot and its my first language. Basically, I don't know anything about programming and I wanna get some extensions for lua, however, every installation guide for luarocks in windows is extremely complex and features incomprehensible terms for someone like me, I don't have any of the tools that I need and every guide mentions different tools that I dont wanna get in fear of polluting my new pc. Can someone who got it to work on their machine give me a short guide or direction on how to do it?

https://redd.it/1geikiq
@r_lua
Lua 1 Con : 1 Pro

Hello! I started thinking about different programming languages, and their Pros and Cons (in general, not compared to each other). Each serious language has their advantages & disadvantages. I try to think about this in this format: I think of 1 Pro, something I really like about the language, and then think of 1 Con of the language, related or not to the Pro. I ask yall, Lua community, what do you think is one pro and one con of Lua as a language. I will begin:

Pro: Ik some people disagree, but I love objects being tables in Lua. It fits very well in the noscripting nature of Lua, as it's very easy to operate.

Con: I think that lack of arrays/lists is a bit annoying, and something like `array.append(...)` looks much cleaner than `array[#array+1\]=...`

Pro: I love the `:` operator, it's a nice distinguish between "non-static" and "static" function access.

Con: I feel like Lua's syntax is too simplistic. Ik it's one of the selling points, but lack of simple `+=` operators is... annoying and makes clean beautiful Lua look less clean. Ik it's hard to implement in the current parser, but it would be nice to have that.

https://redd.it/1gejvfd
@r_lua
Help with opening files
https://redd.it/1gensbt
@r_lua
Is pairs() compiled in luajit?

Can't find a reliable source about this. As I remember correctly in luajit 2.0 it can't be compiled and used in interpreter mode. What is the current state of pairs() in latest luajit?

https://redd.it/1gewkz0
@r_lua
all LUA noscripts will lose after changing windows ?

i have like 18 lua currently in desktop default just wondering what happens to them after changing windows are they saved in logitech account or i must export all ?

https://redd.it/1gf2hfs
@r_lua
Finding better syntax : conditional statement

[ ideal \]

if temp_id == ['57', '61', '62'] then

[ my code \]

if temp_id == '57' or temp_id == '62' or temp_id == '63' then



Can I make this better?



https://redd.it/1gfjjww
@r_lua
Finding better syntax : string.match

Note that, my IDE doesn't support return value of Boolean but only String.

< ideal >
if string.match(self.Entity.CurrentMapName, 'idle|proklisi') == then

but above code doesn't work due to the limited support by IDE
so I have to use like this :

if string.match(self.Entity.CurrentMapName, 'idle') = 'idel' or ~ ... then

To deal with this, is there a better idea to do this? such as..

if string.match(self.Entity.CurrentMapName, 'idle|proklisi') == ('idle' or 'proklisi') then

https://redd.it/1gfjic6
@r_lua
فك تشفير

يخوان احد يعرف كيف افك تشفير fxap ؟
سكربت fivem

Do you know how to decrypt fxap?
Sicript Fivem

https://redd.it/1gfovfw
@r_lua
Beginer help: string

I'm totally new at coding and I got assigment to capitalize the first letters of the words in sentence. I don't understand how to do it.

If someone could tell me how to do that I would be grateful.


The sentence is "Is your dog's house red?"

https://redd.it/1gfry7u
@r_lua
luarocks interpreter

I tried using luarocks but since I use lua5.1 I got this error

Error: Lua 5.4 interpreter not found at C:\Program Files\to\lua

Please set your Lua interpreter with:

luarocks --local config variables.LUA <d:\path\lua.exe>

I tried these

luarocks config variables.LUA <C:\Program Files\lua\lua5.1.exe>

luarocks config variables.LUA "C:\Program Files\lua\lua.exe"

and many more

whenever i type luarocks config variables.LUA

Error: Unknown entry LUA

i already have lua set in the evir

how would i be able to fix it?

https://redd.it/1gfsma9
@r_lua
Help for the structure

Hi!

For a project, I need to create Lua noscript to communicate with an haxe application. However, I struggle heavily to make the IDE for Lua work with classes. The class definitions are not shared with the instances and it makes coding a pain.

Is there a better way or text-editor to make the development easier?

Thank you!

https://preview.redd.it/qo6xeuasm4yd1.png?width=244&format=png&auto=webp&s=aa88447dcae142d2cb92f652d00465ffce317ae2



https://redd.it/1ggk2zp
@r_lua
So what now?!

HI! i coded with python for about 10 months now but the performance was "not good" (Terrible) and I searched for over 1 month now for coding languages and devided for lua so.

1st: what do you need to start coding (windows)

2nd:any good tutorials on youtube (full guide) that arent over 3 years old?

https://redd.it/1gh8r3k
@r_lua
HOW ROBLOX EVEN EXISTS

Hey guys rapid question:
HOW DOES ROBLOX EVEN EXISTS

It was made in the first years of 2000, so I don't think they used OpenGL or Frameworks, so PLEASE GIVE ME AND EXPLANATION ON HOW ROBLOX WORKS

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