Scribe
Scribe provides functions to convert Lua objects to readable strings and output methods that make printing Lua tables in various formats easy.
For example, if
Scribe gracefully handles complex tables, including ones with shared and cyclical references. The strings returned for those tables show the underlying structure in a way that is as readable as possible.
You can customise the strings returned for tables by passing a set of formatting options, and there are pre-defined options that will work for most applications. Those include printing tables on a single line, in a “pretty” format on multiple lines, or as JSON-like denoscriptors.
luarocks install scribe
We built the documentation site using Quarto.
The documentation includes a lengthy article describing how we built the module.
That tutorial might be a decent Lua 201 tutorial for those new to the language.
https://redd.it/1jf3n39
@r_lua
Scribe provides functions to convert Lua objects to readable strings and output methods that make printing Lua tables in various formats easy.
For example, if
arr = {1, 2, 3} then scribe.put("Array: %t", arr) will print "Array: [ 1, 2, 3 \]" to stdout.Scribe gracefully handles complex tables, including ones with shared and cyclical references. The strings returned for those tables show the underlying structure in a way that is as readable as possible.
You can customise the strings returned for tables by passing a set of formatting options, and there are pre-defined options that will work for most applications. Those include printing tables on a single line, in a “pretty” format on multiple lines, or as JSON-like denoscriptors.
scribe is available as a GitHub repo. It has a permissive MIT License.scribe can also be installed using luarocks:luarocks install scribe
scribe is fully documented here. We built the documentation site using Quarto.
The documentation includes a lengthy article describing how we built the module.
That tutorial might be a decent Lua 201 tutorial for those new to the language.
https://redd.it/1jf3n39
@r_lua
GitHub
GitHub - nessan/scribe: Scribe converts Lua objects to readable strings and has output methods to output tables in many different…
Scribe converts Lua objects to readable strings and has output methods to output tables in many different formats. - nessan/scribe
Beginner programmer looking for a teacher or tips
I am new to lua and coding in general, though I do have a little experience in python. I am trying to make a Roblox game. I am looking for someone to help me and teach me the coding language lua
https://redd.it/1jfgnb9
@r_lua
I am new to lua and coding in general, though I do have a little experience in python. I am trying to make a Roblox game. I am looking for someone to help me and teach me the coding language lua
https://redd.it/1jfgnb9
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Help! Roblox Studio Lua!
So, before I get into this, yes I used AI, no I can't code even a little, meaning no I do not have any idea what I'm doing, but brownie points for trying, I guess?
I don't currently want to get into learning code, (I have school and other stuff, but I really wanted to get into experimenting with Studio) but unfortunately, with trying to make a Roblox game, that's required for quality. Hoping someone can help me here.
By the way! This is all happening on a test world which has nothing but a part that I'm using as a baseplate, and a humanoid named DialogueNPC in the workspace (plus spawn). The dialogue in this code is random and only for testing purposes.
I'm trying to make a dialogue work, as you can tell by the NPC's name. I already have a noscript for tweening on-screen, and a noscript for tweening off-screen. By the grace of God, they work perfectly.Still, I'll provide you with everything I have, and everything these AI's have put me through lmao. I put an image of my hierarchy, assuming you'll need it. I'll sum up the noscripts, but pretty sure you guys could probably read these like books. I broke these into many noscripts because originally when there were just two big ones, it didn't work well and I couldn't try to use my very tiny coding brain to figure out what was the problem.
**Script #1: AnimScript. (Server Script) This noscript tweens the CinemaBar1 and 2 onto the screen for the player, no issues but I don't know if it conflicts with anything, so I'm giving it to you.**
\-- Script inside DialogueUI (AnimScript)
local Torso = workspace.DialogueNPC:WaitForChild("Torso")
local EPrompt = Torso:WaitForChild("EPrompt")
local dialogueUI = noscript.Parent -- Get DialogueUI from noscript.Parent
local CinemaBar1 = dialogueUI:WaitForChild("CinemaBar1")
local CinemaBar2 = dialogueUI:WaitForChild("CinemaBar2")
local startPosition1 = UDim2.new(0.5, 0, 1.851, 0)
local targetPosition1 = UDim2.new(0.5, 0, 0.851, 0)
local startPosition2 = UDim2.new(0.5, 0, -1, 0)
local targetPosition2 = UDim2.new(0.5, 0, 0.066, 0)
local tweenInfo = TweenInfo.new(
1,
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out,
0,
false,
0
)
local function onPromptTriggered(player) -- Player is passed in
local tweenService = game:GetService("TweenService")
local tween1 = tweenService:Create(CinemaBar1, tweenInfo, {Position = targetPosition1})
local tween2 = tweenService:Create(CinemaBar2, tweenInfo, {Position = targetPosition2})
CinemaBar1.Position = startPosition1
CinemaBar2.Position = startPosition2
tween1:Play()
tween2:Play()
\-- Signal Dialogue Script
local dialogueEvent = game.ReplicatedStorage:WaitForChild("StartDialogueEvent")
dialogueEvent:FireClient(player) -- Fire the event to the client
end
EPrompt.Triggered:Connect(onPromptTriggered)
**Script #2: AnimScriptReverse. (Server Script) This does what the name says. Just the reverse of the AnimScript. Brings CinemaBar1 & 2 off screen, then turns the GUI to false.**
off-screen.
\-- Script inside DialogueUI (AnimScriptReverse)
local dialogueUI = noscript.Parent
local dialogueScript = dialogueUI:WaitForChild("DialogueButtonScript")
local dialogueModule = require(dialogueUI:WaitForChild("DialogueModule")) -- Require the module
local CinemaBar1 = dialogueUI:WaitForChild("CinemaBar1")
local CinemaBar2 = dialogueUI:WaitForChild("CinemaBar2")
local startPosition1 = UDim2.new(0.5, 0, 1.851, 0)
local targetPosition1 = UDim2.new(0.5, 0, 0.851, 0)
local startPosition2 = UDim2.new(0.5, 0, -1, 0)
local targetPosition2 = UDim2.new(0.5, 0, 0.066, 0)
local tweenInfo = TweenInfo.new(
1,
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out,
0,
false,
0
)
local function resetDialogue()
dialogueUI.Enabled = true
dialogueModule.currentDialogueState = "Greeting" -- Use the module variable
dialogueScript.updateDialogue()
end
local function reverseAnimation()
local tweenService = game:GetService("TweenService")
local tween1 = tweenService:Create(CinemaBar1, tweenInfo, {Position =
So, before I get into this, yes I used AI, no I can't code even a little, meaning no I do not have any idea what I'm doing, but brownie points for trying, I guess?
I don't currently want to get into learning code, (I have school and other stuff, but I really wanted to get into experimenting with Studio) but unfortunately, with trying to make a Roblox game, that's required for quality. Hoping someone can help me here.
By the way! This is all happening on a test world which has nothing but a part that I'm using as a baseplate, and a humanoid named DialogueNPC in the workspace (plus spawn). The dialogue in this code is random and only for testing purposes.
I'm trying to make a dialogue work, as you can tell by the NPC's name. I already have a noscript for tweening on-screen, and a noscript for tweening off-screen. By the grace of God, they work perfectly.Still, I'll provide you with everything I have, and everything these AI's have put me through lmao. I put an image of my hierarchy, assuming you'll need it. I'll sum up the noscripts, but pretty sure you guys could probably read these like books. I broke these into many noscripts because originally when there were just two big ones, it didn't work well and I couldn't try to use my very tiny coding brain to figure out what was the problem.
**Script #1: AnimScript. (Server Script) This noscript tweens the CinemaBar1 and 2 onto the screen for the player, no issues but I don't know if it conflicts with anything, so I'm giving it to you.**
\-- Script inside DialogueUI (AnimScript)
local Torso = workspace.DialogueNPC:WaitForChild("Torso")
local EPrompt = Torso:WaitForChild("EPrompt")
local dialogueUI = noscript.Parent -- Get DialogueUI from noscript.Parent
local CinemaBar1 = dialogueUI:WaitForChild("CinemaBar1")
local CinemaBar2 = dialogueUI:WaitForChild("CinemaBar2")
local startPosition1 = UDim2.new(0.5, 0, 1.851, 0)
local targetPosition1 = UDim2.new(0.5, 0, 0.851, 0)
local startPosition2 = UDim2.new(0.5, 0, -1, 0)
local targetPosition2 = UDim2.new(0.5, 0, 0.066, 0)
local tweenInfo = TweenInfo.new(
1,
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out,
0,
false,
0
)
local function onPromptTriggered(player) -- Player is passed in
local tweenService = game:GetService("TweenService")
local tween1 = tweenService:Create(CinemaBar1, tweenInfo, {Position = targetPosition1})
local tween2 = tweenService:Create(CinemaBar2, tweenInfo, {Position = targetPosition2})
CinemaBar1.Position = startPosition1
CinemaBar2.Position = startPosition2
tween1:Play()
tween2:Play()
\-- Signal Dialogue Script
local dialogueEvent = game.ReplicatedStorage:WaitForChild("StartDialogueEvent")
dialogueEvent:FireClient(player) -- Fire the event to the client
end
EPrompt.Triggered:Connect(onPromptTriggered)
**Script #2: AnimScriptReverse. (Server Script) This does what the name says. Just the reverse of the AnimScript. Brings CinemaBar1 & 2 off screen, then turns the GUI to false.**
off-screen.
\-- Script inside DialogueUI (AnimScriptReverse)
local dialogueUI = noscript.Parent
local dialogueScript = dialogueUI:WaitForChild("DialogueButtonScript")
local dialogueModule = require(dialogueUI:WaitForChild("DialogueModule")) -- Require the module
local CinemaBar1 = dialogueUI:WaitForChild("CinemaBar1")
local CinemaBar2 = dialogueUI:WaitForChild("CinemaBar2")
local startPosition1 = UDim2.new(0.5, 0, 1.851, 0)
local targetPosition1 = UDim2.new(0.5, 0, 0.851, 0)
local startPosition2 = UDim2.new(0.5, 0, -1, 0)
local targetPosition2 = UDim2.new(0.5, 0, 0.066, 0)
local tweenInfo = TweenInfo.new(
1,
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out,
0,
false,
0
)
local function resetDialogue()
dialogueUI.Enabled = true
dialogueModule.currentDialogueState = "Greeting" -- Use the module variable
dialogueScript.updateDialogue()
end
local function reverseAnimation()
local tweenService = game:GetService("TweenService")
local tween1 = tweenService:Create(CinemaBar1, tweenInfo, {Position =
startPosition1})
local tween2 = tweenService:Create(CinemaBar2, tweenInfo, {Position = startPosition2})
tween1:Play()
tween2:Play()
tween2.Completed:Connect(function()
dialogueUI.Enabled = false
resetDialogue()
end)
end
\-- Connect to a RemoteEvent (we'll fire this from the dialogue noscript)
local reverseEvent = game.ReplicatedStorage:WaitForChild("ReverseDialogueEvent")
reverseEvent.OnServerEvent:Connect(reverseAnimation)
**Script #3: DialogueModule. (Module Script) I'll be honest. I have no idea what this does, or why it's needed. It's just there because the AI told me to.**
\-- DialogueModule
local DialogueModule = {}
DialogueModule.currentDialogueState = "Greeting" -- Starting state
return DialogueModule
**Script #4: DialogueButtonScript. (Local noscript) This is where the issue is. It's not a big part, something small that prevents the whole thing from working, but essentially it holds the dialogue, creates buttons using a button template I made, and is supposed to carry out the sequence of dialogue when an option other than nextState = nil or Goodbye is pressed.**
**Issue? ::** line 76, updateDialogue()
**What is the output error? ::** it is a nil error.
Players.R1NYP00H.PlayerGui.DialogueUI.DialogueButtonScript:76: attempt to call a nil value - Client - DialogueButtonScript:76
Apparently this means its trying to call a value that's undefined? I've tried anything I know, and anything these computers can give me, and its either going way too complicated for my understanding, or doesn't work and creates more errors. This error happens when you click a text button/option that leads to more dialogue instead of closing the UI. Once again, dialogue was generated random, just for testing.
\-- LocalScript inside DialogueUI
local OptionsList = noscript.Parent:WaitForChild("CinemaBar1"):WaitForChild("OptionsList")
local DialogueOptionTemplate = OptionsList:WaitForChild("DialogueOptionTemplate")
local NPCSpeechText = noscript.Parent:WaitForChild("CinemaBar1"):WaitForChild("NPCDialogueBar"):WaitForChild("NPCSpeechText")
local UIListLayout = OptionsList:WaitForChild("UIListLayout")
local dialogueModule = require(noscript.Parent:WaitForChild("DialogueModule")) -- Require the module
\-- // Dialogue Data (your data)
local dialogueData = {
["Greeting"\] = {
npcSpeech = "Hello there, adventurer!",
options = {
{text = "Who are you?", nextState = "WhoAreYou"},
{text = "What's going on?", nextState = "WhatsGoingOn"},
{text = "Goodbye.", nextState = nil}
}
},
["WhoAreYou"\] = {
npcSpeech = "I am the friendly local guide.",
options = {
{text = "Where can you guide me?", nextState = "WhereToGuide"},
{text = "Okay, thanks.", nextState = nil}
}
},
["WhatsGoingOn"\] = {
npcSpeech = "There's a bit of trouble in town...",
options = {
{text = "Tell me more.", nextState = "TellMeMore"},
{text = "I see.", nextState = nil}
}
},
["TellMeMore"\] = {
npcSpeech = "The goblins have been stealing pies!",
options = {
{text = "I'll help!", nextState = "Help"},
{text = "That's... unfortunate.", nextState = nil}
}
},
["WhereToGuide"\] = {
npcSpeech = "I can show you the old ruins.",
options = {
{text = "Take me there!", nextState = "Goodbye"}, -- Or another state
{text = "Maybe later.", nextState = nil}
}
},
["Help"\] = {
npcSpeech = "Thank you! The bakery is just over there.",
options = {
{text = "I'm on it!", nextState = nil}
}
},
["Goodbye"\] = {
npcSpeech = "Farewell!",
options = {} -- No more options, dialogue ends
}
}
\-- Move updateDialogue() before the click event handler
local function createDialogueOptions(options)
\-- Create new options from the provided table
for _, optionData in ipairs(options) do
local newOption = DialogueOptionTemplate:Clone()
newOption.Text = optionData.text
newOption.Name = "DialogueOption_" .. _ -- Unique name
\-- Parent the button before making it
local tween2 = tweenService:Create(CinemaBar2, tweenInfo, {Position = startPosition2})
tween1:Play()
tween2:Play()
tween2.Completed:Connect(function()
dialogueUI.Enabled = false
resetDialogue()
end)
end
\-- Connect to a RemoteEvent (we'll fire this from the dialogue noscript)
local reverseEvent = game.ReplicatedStorage:WaitForChild("ReverseDialogueEvent")
reverseEvent.OnServerEvent:Connect(reverseAnimation)
**Script #3: DialogueModule. (Module Script) I'll be honest. I have no idea what this does, or why it's needed. It's just there because the AI told me to.**
\-- DialogueModule
local DialogueModule = {}
DialogueModule.currentDialogueState = "Greeting" -- Starting state
return DialogueModule
**Script #4: DialogueButtonScript. (Local noscript) This is where the issue is. It's not a big part, something small that prevents the whole thing from working, but essentially it holds the dialogue, creates buttons using a button template I made, and is supposed to carry out the sequence of dialogue when an option other than nextState = nil or Goodbye is pressed.**
**Issue? ::** line 76, updateDialogue()
**What is the output error? ::** it is a nil error.
Players.R1NYP00H.PlayerGui.DialogueUI.DialogueButtonScript:76: attempt to call a nil value - Client - DialogueButtonScript:76
Apparently this means its trying to call a value that's undefined? I've tried anything I know, and anything these computers can give me, and its either going way too complicated for my understanding, or doesn't work and creates more errors. This error happens when you click a text button/option that leads to more dialogue instead of closing the UI. Once again, dialogue was generated random, just for testing.
\-- LocalScript inside DialogueUI
local OptionsList = noscript.Parent:WaitForChild("CinemaBar1"):WaitForChild("OptionsList")
local DialogueOptionTemplate = OptionsList:WaitForChild("DialogueOptionTemplate")
local NPCSpeechText = noscript.Parent:WaitForChild("CinemaBar1"):WaitForChild("NPCDialogueBar"):WaitForChild("NPCSpeechText")
local UIListLayout = OptionsList:WaitForChild("UIListLayout")
local dialogueModule = require(noscript.Parent:WaitForChild("DialogueModule")) -- Require the module
\-- // Dialogue Data (your data)
local dialogueData = {
["Greeting"\] = {
npcSpeech = "Hello there, adventurer!",
options = {
{text = "Who are you?", nextState = "WhoAreYou"},
{text = "What's going on?", nextState = "WhatsGoingOn"},
{text = "Goodbye.", nextState = nil}
}
},
["WhoAreYou"\] = {
npcSpeech = "I am the friendly local guide.",
options = {
{text = "Where can you guide me?", nextState = "WhereToGuide"},
{text = "Okay, thanks.", nextState = nil}
}
},
["WhatsGoingOn"\] = {
npcSpeech = "There's a bit of trouble in town...",
options = {
{text = "Tell me more.", nextState = "TellMeMore"},
{text = "I see.", nextState = nil}
}
},
["TellMeMore"\] = {
npcSpeech = "The goblins have been stealing pies!",
options = {
{text = "I'll help!", nextState = "Help"},
{text = "That's... unfortunate.", nextState = nil}
}
},
["WhereToGuide"\] = {
npcSpeech = "I can show you the old ruins.",
options = {
{text = "Take me there!", nextState = "Goodbye"}, -- Or another state
{text = "Maybe later.", nextState = nil}
}
},
["Help"\] = {
npcSpeech = "Thank you! The bakery is just over there.",
options = {
{text = "I'm on it!", nextState = nil}
}
},
["Goodbye"\] = {
npcSpeech = "Farewell!",
options = {} -- No more options, dialogue ends
}
}
\-- Move updateDialogue() before the click event handler
local function createDialogueOptions(options)
\-- Create new options from the provided table
for _, optionData in ipairs(options) do
local newOption = DialogueOptionTemplate:Clone()
newOption.Text = optionData.text
newOption.Name = "DialogueOption_" .. _ -- Unique name
\-- Parent the button before making it
visible
newOption.Parent = OptionsList
newOption.Visible = true
\-- Connect the button click event (add your logic here)
newOption.MouseButton1Click:Connect(function()
if optionData.nextState then
dialogueModule.currentDialogueState = optionData.nextState -- Use the module variable
updateDialogue() -- THIS LINE HERE , other comments were ai, but this is me
else
\-- End dialogue and reverse animation
local reverseEvent = game.ReplicatedStorage:WaitForChild("ReverseDialogueEvent")
reverseEvent:FireServer()
end
end)
end
end
\-- Move updateDialogue() outside of createDialogueOptions()
local function updateDialogue()
local currentStateData = dialogueData[dialogueModule.currentDialogueState\] -- Use the module variable
if currentStateData then
NPCSpeechText.Text = currentStateData.npcSpeech
createDialogueOptions(currentStateData.options)
else
\-- Handle invalid state (e.g., end dialogue or show an error)
NPCSpeechText.Text = "Dialogue error."
createDialogueOptions({})
end
end
\-- Start the dialogue
updateDialogue()
pls help I beg you very very smart awesome programming people. I'm a teen with no job and no moneys I can't afford to pay for an actual noscripter for my currently nonexistent game. (under NPCDialogueBar is NPCSpeechText, its a text label and it holds the NPC's end of the dialogue. forgot that drop-down)
https://redd.it/1jfijs2
@r_lua
newOption.Parent = OptionsList
newOption.Visible = true
\-- Connect the button click event (add your logic here)
newOption.MouseButton1Click:Connect(function()
if optionData.nextState then
dialogueModule.currentDialogueState = optionData.nextState -- Use the module variable
updateDialogue() -- THIS LINE HERE , other comments were ai, but this is me
else
\-- End dialogue and reverse animation
local reverseEvent = game.ReplicatedStorage:WaitForChild("ReverseDialogueEvent")
reverseEvent:FireServer()
end
end)
end
end
\-- Move updateDialogue() outside of createDialogueOptions()
local function updateDialogue()
local currentStateData = dialogueData[dialogueModule.currentDialogueState\] -- Use the module variable
if currentStateData then
NPCSpeechText.Text = currentStateData.npcSpeech
createDialogueOptions(currentStateData.options)
else
\-- Handle invalid state (e.g., end dialogue or show an error)
NPCSpeechText.Text = "Dialogue error."
createDialogueOptions({})
end
end
\-- Start the dialogue
updateDialogue()
pls help I beg you very very smart awesome programming people. I'm a teen with no job and no moneys I can't afford to pay for an actual noscripter for my currently nonexistent game. (under NPCDialogueBar is NPCSpeechText, its a text label and it holds the NPC's end of the dialogue. forgot that drop-down)
https://redd.it/1jfijs2
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
do you think i can optimise this code?
\--lua 5.4.2
print("write only numbers")
for i = 1,io.read() do
local file = io.open("words.txt", "r")
local word = ""
for i = 1,math.random(1,19999) do
word = file:read("*l")
end
local generated = {}
for i = 1, #word do
generated[i\] = word:sub(i, i)
end
local word_G = {}
for i = 1, #generated do
word_G[i\] = generated[math.random(#generated)\]
end
print(i..": "..word.." to "..table.concat(word_G))
end
https://redd.it/1jfw1ud
@r_lua
\--lua 5.4.2
print("write only numbers")
for i = 1,io.read() do
local file = io.open("words.txt", "r")
local word = ""
for i = 1,math.random(1,19999) do
word = file:read("*l")
end
local generated = {}
for i = 1, #word do
generated[i\] = word:sub(i, i)
end
local word_G = {}
for i = 1, #generated do
word_G[i\] = generated[math.random(#generated)\]
end
print(i..": "..word.." to "..table.concat(word_G))
end
https://redd.it/1jfw1ud
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
What is the return function?
I'm learning how to code, but I've reached a roadblock on what the return function is, as in I don't understand the explanation on what a return function does. I believe it's where you set a variable to the end of a sum? I'm pretty sure I'm wrong, so could you lovely people please help me?
https://redd.it/1jgntc2
@r_lua
I'm learning how to code, but I've reached a roadblock on what the return function is, as in I don't understand the explanation on what a return function does. I believe it's where you set a variable to the end of a sum? I'm pretty sure I'm wrong, so could you lovely people please help me?
https://redd.it/1jgntc2
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Need help with URI-encoded link pattern
So I wanted to create a URI encode/decode library and I am stuck on my function "IsUri"
I can't figure out how to return true/false correctly, because:
A URI encoded link will have %HEX for special characters like " " (space)
A non URI-encoded link can also contain "%" which messes up my pattern.
I tried to do these 2 steps but failed:
find if there are any special characters without "%" in a string (return false early)
find if "%" has a valid syntax (return false/true)
I have also searched google and your subreddit for it. No answers....
https://redd.it/1jgsmxf
@r_lua
So I wanted to create a URI encode/decode library and I am stuck on my function "IsUri"
I can't figure out how to return true/false correctly, because:
A URI encoded link will have %HEX for special characters like " " (space)
A non URI-encoded link can also contain "%" which messes up my pattern.
I tried to do these 2 steps but failed:
find if there are any special characters without "%" in a string (return false early)
find if "%" has a valid syntax (return false/true)
I have also searched google and your subreddit for it. No answers....
https://redd.it/1jgsmxf
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
How do I create a website using HTML, CSS, & Lua?
I have tried EVERYTHING, Lapis, OpenResty, Luasocket, LuaJit, Luarocks, EVERYTHING, but NOTHING will work, I just want an index.lua file, with embedded HTML & CSS, & then I can use Lua as the back-end stuff such as button clicking.
I don't get it, why does it work for EVERYBODY but me.
I am on Windows-11, & I use Visual Studio Code.
https://redd.it/1jgtoye
@r_lua
I have tried EVERYTHING, Lapis, OpenResty, Luasocket, LuaJit, Luarocks, EVERYTHING, but NOTHING will work, I just want an index.lua file, with embedded HTML & CSS, & then I can use Lua as the back-end stuff such as button clicking.
I don't get it, why does it work for EVERYBODY but me.
I am on Windows-11, & I use Visual Studio Code.
https://redd.it/1jgtoye
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Run other lua noscripts without knowing the name
Hi, so i’m making a lua noscript and it has a gui, and i want to make it so people can make addons for that gui, people keep saying it’s risky or they wouldn’t do it, they don’t even give a tip on how to do it, can anyone help?
https://redd.it/1jgvzl9
@r_lua
Hi, so i’m making a lua noscript and it has a gui, and i want to make it so people can make addons for that gui, people keep saying it’s risky or they wouldn’t do it, they don’t even give a tip on how to do it, can anyone help?
https://redd.it/1jgvzl9
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Making an Game Editor on the iPad
https://www.youtube.com/watch?v=4ohmJjPK46U
https://redd.it/1jhlso1
@r_lua
https://www.youtube.com/watch?v=4ohmJjPK46U
https://redd.it/1jhlso1
@r_lua
YouTube
Game Editor I am coding on my iPad
Should I learn Lua over Python as a non-dev ? (For macro / Scripting in Davinci Resolve)
Hello !
So I'm working with Davinci Resolve on a daily basis and I want to learn how to make my own noscript and macro. Resolve support both Lua and Python, but I don't know which language I should invest my time into. I don't really need to code outside this usecase, so I want to keep things simple and efficient.
I know that both are (relatively) easy to learn and from what I've heard the main advantage of Lua is its speed and simplicity while Python have a bigger community / ecosystem. I might be wrong or miss some elements tho, so I would like to know your opinion or advice !
https://redd.it/1jielaz
@r_lua
Hello !
So I'm working with Davinci Resolve on a daily basis and I want to learn how to make my own noscript and macro. Resolve support both Lua and Python, but I don't know which language I should invest my time into. I don't really need to code outside this usecase, so I want to keep things simple and efficient.
I know that both are (relatively) easy to learn and from what I've heard the main advantage of Lua is its speed and simplicity while Python have a bigger community / ecosystem. I might be wrong or miss some elements tho, so I would like to know your opinion or advice !
https://redd.it/1jielaz
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Fastest way to execute Lua?
Is there any method to execute Lua at it's highest speed?
Right now I'm using Zerobrane studio to execute Lua noscripts. It's very handy.
But it's probably not the fastest way to run it. I wonder if there are any faster methods for running Lua?
https://redd.it/1jif3h5
@r_lua
Is there any method to execute Lua at it's highest speed?
Right now I'm using Zerobrane studio to execute Lua noscripts. It's very handy.
But it's probably not the fastest way to run it. I wonder if there are any faster methods for running Lua?
https://redd.it/1jif3h5
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Are there any programs that let you simulate controller input with lua?
https://redd.it/1jia4cb
@r_lua
https://redd.it/1jia4cb
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
How do I learn Lua???
Hello I recently had the idea to learn how to code I heard that lua is better than python while still being as easy or easier than python the only problem is where do I start? What resources should I use to learn Lua? Can somebody help me. Thank You.
https://redd.it/1jibrgx
@r_lua
Hello I recently had the idea to learn how to code I heard that lua is better than python while still being as easy or easier than python the only problem is where do I start? What resources should I use to learn Lua? Can somebody help me. Thank You.
https://redd.it/1jibrgx
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Error : <eof> expected near 'function'
Anyone know how to get this noscript good ?
ELEMENTS_TO_GATHER = { }
MAX_PODS = 90
MIN_MONSTERS = 1
MAX_MONSTERS = 8
-- Script OnlyBot pour Paysan 1-200 avec retour banque
local trajet = {}
function trajet:run()
return {
-- Récolte du blé (niveau 1-20)
{ map = "2,-25", action = "harvest" },
{ map = "3,-25", action = "harvest" },
{ map = "4,-25", action = "harvest" },
-- Vérification de l'inventaire et retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte de l’orge (niveau 20-40)
{ map = "5,-25", action = "harvest" },
{ map = "6,-25", action = "harvest" },
-- Retour banque si plein
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte de l’avoine (niveau 40-60)
{ map = "7,-25", action = "harvest" },
{ map = "8,-25", action = "harvest" },
-- Retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte du houblon (niveau 60-100)
{ map = "9,-25", action = "harvest" },
{ map = "10,-25", action = "harvest" },
-- Retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte du seigle (niveau 100-140)
{ map = "11,-25", action = "harvest" },
{ map = "12,-25", action = "harvest" },
-- Retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte du malt et riz (niveau 140-200)
{ map = "13,-25", action = "harvest" },
{ map = "14,-25", action = "harvest" },
-- Retour en banque final
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" }
}
end
return trajet
function bank()
if map_CurrentMapId() ~= 162791424 and map_CurrentMapId() ~= 191105026 and map_CurrentMapId() ~= 191104002 and map_CurrentMapId() ~= 192415750 then
return {{map = map_CurrentPos(), changeMap = "havenbag"},}
end
return {
--HavreSac--
{map = "162791424", changeMap = "usezaap:191105026"}, -- Astrub
--Astrub--
{map = "191105026", changeMap = "left"},
{map = "191104002", changeMap = "cell:289"},
{map = "192415750", custom = banquier},
}
end
function banquier()
global_Delay(1000)
npc_Speak(-20000) -- [-20000] = id du npc banque Astrub
global_Delay(1000)
npc_Reply(64347) -- [64347] = id de la reponse
global_Delay(1000)
storage_DropAll() -- On vide TOUT les items
global_Delay(1000)
npc_Close() -- On ferme la banque
global_Delay(1000)
map_ChangeMap("cell:409") -- Sortir de la banque
global_Delay(5000)
end
https://redd.it/1jj2hiy
@r_lua
Anyone know how to get this noscript good ?
ELEMENTS_TO_GATHER = { }
MAX_PODS = 90
MIN_MONSTERS = 1
MAX_MONSTERS = 8
-- Script OnlyBot pour Paysan 1-200 avec retour banque
local trajet = {}
function trajet:run()
return {
-- Récolte du blé (niveau 1-20)
{ map = "2,-25", action = "harvest" },
{ map = "3,-25", action = "harvest" },
{ map = "4,-25", action = "harvest" },
-- Vérification de l'inventaire et retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte de l’orge (niveau 20-40)
{ map = "5,-25", action = "harvest" },
{ map = "6,-25", action = "harvest" },
-- Retour banque si plein
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte de l’avoine (niveau 40-60)
{ map = "7,-25", action = "harvest" },
{ map = "8,-25", action = "harvest" },
-- Retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte du houblon (niveau 60-100)
{ map = "9,-25", action = "harvest" },
{ map = "10,-25", action = "harvest" },
-- Retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte du seigle (niveau 100-140)
{ map = "11,-25", action = "harvest" },
{ map = "12,-25", action = "harvest" },
-- Retour banque
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" },
-- Récolte du malt et riz (niveau 140-200)
{ map = "13,-25", action = "harvest" },
{ map = "14,-25", action = "harvest" },
-- Retour en banque final
{ condition = "inventoryFull", map = "5,-18", action = "bankDeposit" }
}
end
return trajet
function bank()
if map_CurrentMapId() ~= 162791424 and map_CurrentMapId() ~= 191105026 and map_CurrentMapId() ~= 191104002 and map_CurrentMapId() ~= 192415750 then
return {{map = map_CurrentPos(), changeMap = "havenbag"},}
end
return {
--HavreSac--
{map = "162791424", changeMap = "usezaap:191105026"}, -- Astrub
--Astrub--
{map = "191105026", changeMap = "left"},
{map = "191104002", changeMap = "cell:289"},
{map = "192415750", custom = banquier},
}
end
function banquier()
global_Delay(1000)
npc_Speak(-20000) -- [-20000] = id du npc banque Astrub
global_Delay(1000)
npc_Reply(64347) -- [64347] = id de la reponse
global_Delay(1000)
storage_DropAll() -- On vide TOUT les items
global_Delay(1000)
npc_Close() -- On ferme la banque
global_Delay(1000)
map_ChangeMap("cell:409") -- Sortir de la banque
global_Delay(5000)
end
https://redd.it/1jj2hiy
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
lua feels high and low level at the same time
thinking about it for the past hour. no pointers to screw you up, yet nearly zero standard library as well. every time i need a very basic function (like checking if a table contains a value, iirc even C++ has that in the standard library!) i try and look it up, only to realise that i am on my own. it's nothing difficult most of the time, annoying at worst. yet... it feels like zen. the purity i've felt while writing stuff in 6502 assembly in an online emulator, except in lua... everything actually works. it all makes sense. every piece of code makes sense. there are frustrating points as well, like not having the continue keyword (what a shame!)... but it's a small price for such soulful feeling.
>!oh GODDAMMIT i have to write deepcopy again!<
https://redd.it/1jld1rx
@r_lua
thinking about it for the past hour. no pointers to screw you up, yet nearly zero standard library as well. every time i need a very basic function (like checking if a table contains a value, iirc even C++ has that in the standard library!) i try and look it up, only to realise that i am on my own. it's nothing difficult most of the time, annoying at worst. yet... it feels like zen. the purity i've felt while writing stuff in 6502 assembly in an online emulator, except in lua... everything actually works. it all makes sense. every piece of code makes sense. there are frustrating points as well, like not having the continue keyword (what a shame!)... but it's a small price for such soulful feeling.
>!oh GODDAMMIT i have to write deepcopy again!<
https://redd.it/1jld1rx
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Guidance on Improving Function Efficiency
Hi all, I'm working on a vehicle model in Lua/Aumlet, but have been running into performance issues. One function that gets called *a lot* is the function that returns an iterator to iterate over all the degrees of freedom (DoF) of the car (body x, y, z direction, etc.). The vehicle is modelled as a body, axles, and powertrain parts. The way I've done it feels pretty sloppy. Any pointers?
function car:iterateOverDoF()
local a = 0 -- Initialise body DoF counter to 0
local aMax = 3 -- Number of body DoF
local b = 0 -- Initialise axle DoF counter to 0
local bMax = self.body.numAxles*3 -- Number of axle DoF
local c = 0 -- Initialise powertrain DoF counter to 0
local cMax = #self.powertrain -- Number of powertrain DoF
local i=0 -- Overall counter
return function ()
i=i+1 -- Increment counter
if a<aMax then -- Check that we have not iterated over all body DoF
a=a+1 -- Increment body DoF counter
return i, self.body, self.body.dimensions[a] -- Return information about the DoF being inteorgated
elseif b<bMax then -- Repeat same process for axles and powertrain
b=b+1
return i, self.axles[math.ceil(b/3)], self.axles[math.ceil(b/3)].dimensions[(b-1)%3+1]
elseif c<cMax then
c=c+1
return i, self.powertrain[c], self.powertrain[c].dimensions[1]
else return nil end -- Return nil once all DoF have been iterated over
end
end
https://redd.it/1jmo0ti
@r_lua
Hi all, I'm working on a vehicle model in Lua/Aumlet, but have been running into performance issues. One function that gets called *a lot* is the function that returns an iterator to iterate over all the degrees of freedom (DoF) of the car (body x, y, z direction, etc.). The vehicle is modelled as a body, axles, and powertrain parts. The way I've done it feels pretty sloppy. Any pointers?
function car:iterateOverDoF()
local a = 0 -- Initialise body DoF counter to 0
local aMax = 3 -- Number of body DoF
local b = 0 -- Initialise axle DoF counter to 0
local bMax = self.body.numAxles*3 -- Number of axle DoF
local c = 0 -- Initialise powertrain DoF counter to 0
local cMax = #self.powertrain -- Number of powertrain DoF
local i=0 -- Overall counter
return function ()
i=i+1 -- Increment counter
if a<aMax then -- Check that we have not iterated over all body DoF
a=a+1 -- Increment body DoF counter
return i, self.body, self.body.dimensions[a] -- Return information about the DoF being inteorgated
elseif b<bMax then -- Repeat same process for axles and powertrain
b=b+1
return i, self.axles[math.ceil(b/3)], self.axles[math.ceil(b/3)].dimensions[(b-1)%3+1]
elseif c<cMax then
c=c+1
return i, self.powertrain[c], self.powertrain[c].dimensions[1]
else return nil end -- Return nil once all DoF have been iterated over
end
end
https://redd.it/1jmo0ti
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community