add new scripts, fix errors

This commit is contained in:
sfokin 2025-03-29 02:16:09 +03:00
parent 15d1752602
commit 4d893a32a7
5 changed files with 528 additions and 11 deletions

View File

@ -0,0 +1,42 @@
if event.type == "program" then
mem.drawerChannel = "maindrawer"
mem.tubeChannel = "maindrawerout"
mem.filterChannel = "drawercontroller"
mem.count = 0
mem.queue = {}
mem.currentTask = nil
mem.state = "idle"
digiline_send("drawerindicator", "blue")
end
if event.type == "digiline" and event.channel == "drawercontroller" then
if event.msg.status then return end
table.insert(mem.queue, event.msg)
interrupt(1)
end
if event.type == "interrupt" then
if #mem.queue == 0 and mem.currentTask == nill then
mem.state = "idle"
digiline_send("drawerindicator", "green")
return
end
if mem.currentTask == nil then
mem.currentTask = table.remove(mem.queue, 1)
mem.count = mem.currentTask.count
mem.state = "working on " .. mem.currentTask.name
digiline_send("drawerindicator", "red")
digiline_send(mem.tubeChannel, mem.currentTask.destination)
end
if mem.count == 0 then
mem.state = "idle"
digiline_send(mem.filterChannel, {name=mem.currentTask.name, status="finished"})
digiline_send("drawerindicator", "green")
mem.currentTask = nil
else
digiline_send(mem.drawerChannel, mem.currentTask.item .. " " .. tostring(mem.currentTask.stacksize))
mem.count = mem.count - 1
end
interrupt(1)
end

196
fabric_order_controller.lua Normal file
View File

@ -0,0 +1,196 @@
local function createui()
if mem.controls then return end
mem.controls = {
{
command = "clear"
},
{
command = "adddropdown",
Y = 1.2,
label = "Drawer Controller",
selected_id = 1,
W = 10,
X = 0.4,
H = 0.8,
name = "ddController",
choices = {
"drawercontroller"
}
},
{
command = "adddropdown",
Y = 3.2,
label = "Item name",
selected_id = 1,
X = 0.4,
W = 10,
H = 0.8,
name = "ddItem",
choices = {
"basic_materials:oil_extract",
"default:cobble",
"default:copper_ingot",
"default:gold_ingot",
"default:iron_lump",
"default:mese_crystal",
"default:stone",
"flowers:tulip_black",
"mesecons_materials:glue",
"moreblocks:cobble_compressed",
"moretrees:rubber_tree_trunk"
}
},
{
command = "adddropdown",
Y = 5.2,
label = "Destination",
selected_id = 1,
W = 10,
X = 0.4,
H = 0.8,
name = "ddDestination",
choices = {
"Tacit:cobblecompress",
"Tacit:extract",
"Tacit:furnace",
"Tacit:grinder",
"Tacit:grindextract",
"Tacit:grindfurnace",
"Tacit:obsidian",
"Tacit:plasticin",
"Tacit:refab"
}
},
{
default = "99",
label = "Stack size",
X = 0.7,
W = 1.2,
command = "addfield",
Y = 7.1,
name = "fldStackSize",
H = 0.8
},
{
default = "1",
label = "Stacks count",
X = 1.9,
W = 1.6,
command = "addfield",
Y = 7.1,
name = "fldStacksCount",
H = 0.8
},
{
label = "Order",
W = 1.6,
X = 3.2,
command = "addbutton",
H = 0.8,
name = "btnOrder",
Y = 6.8
},
{
default = "",
label = "Enter drawer controller or select one",
X = 0.7,
W = 9.2,
command = "addfield",
Y = 0.7,
name = "fldController",
H = 0.8
},
{
default = "",
label = "Enter item id or select one",
W = 9.2,
X = 0.7,
command = "addfield",
Y = 2.7,
name = "fldItem",
H = 0.8
},
{
default = "",
label = "Enter destination name or select one",
X = 0.7,
W = 9.2,
command = "addfield",
H = 0.8,
name = "fldDestination",
Y = 4.7
},
{
command = "addlabel",
label = "Created with SX Digi labs Touch Designer",
Y = 8.11,
X = 7.18
}
}
end
local function addvalues(control, value)
local controls = mem.controls
for k,v in pairs(controls) do
if v.name and v.name == control then
table.insert(v.choices, value)
table.sort(v.choices)
end
end
mem.controls = controls
end
if event.type == "program" then
mem = {}
createui()
digiline_send("touch", mem.controls)
mem.orderNumber = 0
end
if event.type == "digiline" then
if event.channel ~= "touch" then return end
if event.msg.clicker ~= "Tacit" then return end
if event.msg.quit then return end
if event.msg.btnOrder ~= "Order" then return end
mem.event = event.msg
if event.channel == "touch" then
local controller = event.msg.ddController
local item = event.msg.ddItem
local destination = event.msg.ddDestination
if event.msg.fldItem ~= "" then
item = event.msg.fldItem
addvalues("ddItem", event.msg.fldItem)
end
if event.msg.fldDestination ~= "" then
destination = event.msg.fldDestination
addvalues("ddDestination", event.msg.fldDestination)
end
if event.msg.fldController ~= "" then
controller = event.msg.fldController
addvalues("ddController", event.msg.fldController)
end
local order = {
name="fc-" .. tostring(mem.orderNumber),
destination=destination,
item=item,
stacksize=tonumber(event.msg.fldStackSize),
count=tonumber(event.msg.fldStacksCount),
}
mem.order = order
mem.orderNumber = mem.orderNumber + 1
digiline_send("touch", mem.controls)
digiline_send(controller, order)
digiline_send("ordermon", order.name)
end
end

View File

@ -1,10 +1,13 @@
if event.type == "program" then
mem.events = {}
mem.treecount = 0
mem.inventory = {sapling = 0, fertiliser = 0}
digiline_send("treedetector",{distance=0, command="get"})
digiline_send("extender1", {a = false, b = false, c = false, d = false})
digiline_send("extender2", {a = false, b = false, c = false, d = false})
mem.state = "idle"
mem.isSaplingOrdered = false
mem.isFertiliserOrederd = false
end
if event.type == "digiline" then
@ -24,6 +27,18 @@ if event.type == "digiline" then
mem.state = "prepare"
interrupt(30)
end
if event.channel == "drawercontroller" and event.msg.status then
if event.msg.name == "treefarmingsapplingorder" then
mem.isSaplingOrdered = false
if mem.isFertiliserOrederd == false then mem.state = "prepare" interrupt(30) end
end
if event.msg.name == "treefarmingfertilisedorder" then
mem.isFertiliserOrederd = false
if mem.isSaplingOrdered == false then mem.state = "prepare" interrupt(30) end
end
end
end
if event.type == "interrupt" then
@ -54,9 +69,31 @@ if event.type == "interrupt" then
local item = mem.currentItem
if item ~= "air" then mem.state = "wait" interrupt(1) return end
if mem.inventory["sapling"] == 0 or mem.inventory["fertiliser"] == 0 then
--order from drawer default:sapling and bonemeal:fertiliser
mem.state = "prepare"
interrupt(20)
--order from drawer default:sapling and pandorabox_custom:super_fertiliser
if mem.inventory["sapling"] == 0 then
local order = {
name="treefarmingsapplingorder",
destination="Tacit:treefarming",
item="default:sapling",
stacksize=1, count=1
}
digiline_send("drawercontroller", order)
mem.isSaplingOrdered = true
mem.state = "pause"
digiline_send("treemon", "no sapling\nordering...")
end
if mem.inventory["fertiliser"] == 0 then
local order = {
name="treefarmingfertilisedorder",
destination="Tacit:treefarming",
item="pandorabox_custom:super_fertiliser",
stacksize=99, count=1
}
mem.isFertiliserOrederd = true
digiline_send("drawercontroller", order)
digiline_send("treemon", "no\nfertiliser\nordering...")
mem.state = "pause"
end
else
mem.state = "planting"
digiline_send("extender2", {c=false})
@ -84,6 +121,14 @@ if event.type == "interrupt" then
digiline_send("extender1", {c = true})
mem.state = "wait"
mem.currentItem = ""
mem.treecount = mem.treecount + 1
local str = "Trees done:\n" ..
tostring(mem.treecount) .. "\n" ..
"saplings:\n" ..
tostring(mem.inventory["sapling"]) .. "\n" ..
"fertiliser\n" ..
tostring(mem.inventory["fertiliser"])
digiline_send("treemon", str)
interrupt(1)
end
end

View File

@ -2,21 +2,14 @@ if event.type == "program" then
mem.events = {}
end
if event ~= nil then
local e = mem.events
table.insert(mem.events, event)
end
if event.type == "item" then
local name = event.item.name
mem.name = name
if name:find("sapling", 1, true) ~= nil then
if event.side == "white" then
digiline_send("treesort",{name="sapling", count=-event.item.count})
return "green"
else
digiline_send("treesort",{name="sapling", count=event.item.count})
digiline_send("treesort",{name="sapling", count=event.item.count})
return "white"
end
end

241
scout_touchscreen.lua Normal file
View File

@ -0,0 +1,241 @@
local function drawui()
digiline_send("touch",{
{
command="clear",
},{
command="addbutton",
name="btnxinc",
label="x+",
Y=0.8, X=0.8, H=0.8, W=1.2,
},{
command="addbutton",
name="btnxdec",
label="x-",
Y=0.8, X=2, H=0.8, W=1.2,
},{
command="addbutton",
name="btnydec",
label="y-",
Y=1.6, H=0.8, W=1.2, X=2,
},{
command="addbutton",
name="btnyinc",
label="y+",
Y=1.6, X=0.8, H=0.8, W=1.2,
},{
command="addbutton",
name="btnzinc",
label="z+",
Y=2.4, X=0.8, H=0.8, W=1.2,
},{
command="addbutton",
name="btnzdec",
label="z-",
Y=2.4, X=2, H=0.8, W=1.2,
},{
command="addbutton",
name="btnstepinc",
label="step+",
Y=3.2, H=0.8, W=1.2, X=0.8,
},{
command="addbutton",
name="btnstepdec",
label="step-",
Y=3.2, H=0.8, W=1.2, X=2,
},{
command="addbutton",
name="btnsim",
label="Simulate",
Y=4.4, X=0.8, H=0.8, W=1.6,
},{
command="addbutton",
name="btnjump",
label="Jump",
Y=5.2, H=0.8, W=1.6, X=0.8,
},{
command="addbutton",
name="btnreset",
label="Reset",
Y=6.4, H=0.8, W=1.6, X=0.8,
},{
command="addbutton",
name="btnpark",
label="Park",
Y=6.4, H=0.8, W=1.6, X=2.4,
},{
command="addbutton",
name="btnfire",
label="Fire",
Y=5.2, X=2.4, H=0.8, W=1.6,
},{
command="addbutton",
name="btnfired",
label="FireDown",
Y=5.2, X=5.4, H=0.8, W=1.6,
},{
command="addlabel",
label="Position",
Y=0.3, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Destination",
Y=0.3, X=5.9, H=0.8, W=1.2,
},{
command="addlabel",
label="Step: "..mem.step or 1,
Y=3.3, X=3.5, H=0.8, W=1.2,
}
})
end
local function updatepositionui()
digiline_send("touch",{
{
command="addlabel",
label="X: "..mem.position.x or 0,
Y=0.7, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Y: "..mem.position.y or 0,
Y=1.5, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Z: "..mem.position.z or 0,
Y=2.3, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="X: "..mem.target.x or 0,
Y=0.7, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Y: "..mem.target.y or 0,
Y=1.5, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Z: "..mem.target.z or 0,
Y=2.3, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Power: "..mem.powerstorage or 0,
Y=0.1, X=0.1, H=0.8, W=1.2,
},{
command="addlabel",
label="Distance: "..mem.distance or 0,
Y=2.9, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Power req: "..mem.power_req or 0,
Y=2.9, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Simulate: "..tostring(mem.sim),
Y=3.3, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Sim: "..mem.msg,
Y=4.3, X=3.5, H=0.8, W=1.2,
}
})
end
if event.type == "program" then
mem.position = {x = 0, y = 0, z=0}
mem.target = {x = 0, y = 0, z=0}
mem.step = 1
mem.sim = false
mem.msg = ""
mem.powerstorage = 0
mem.distance = 0
mem.power_req = 0
drawui()
updatepositionui()
digiline_send("jumpdrive", {
command = "get"
})
--interrupt(2)
--elseif event.type == "interrupt" then
--- digiline_send("jumpdrive", {
--- command = "get"
--- })
elseif event.type == "digiline" and event.channel == "jumpdrive" then
if event.msg.position ~= nil then
mem.position = event.msg.position
end
if event.msg.target ~= nil then
mem.target = event.msg.target
end
if event.msg.powerstorage ~= nil then
mem.powerstorage = event.msg.powerstorage
end
if event.msg.distance ~= nil then
mem.distance = event.msg.distance
end
if event.msg.power_req ~= nil then
mem.power_req = event.msg.power_req
end
if event.msg.success ~= nill then
mem.sim = event.msg.success
end
if event.msg.msg ~= nill then
mem.msg = event.msg.msg
end
drawui()
updatepositionui()
elseif event.type == "digiline" and event.channel == "touch" then
if event.msg.btnreset then
digiline_send("jumpdrive", {
command = "reset"
})
elseif event.msg.btnstepinc then
mem.step = mem.step+1
elseif event.msg.btnstepdec then
mem.step = mem.step-1
if mem.step < 1 then
mem.step = 1
end
elseif event.msg.btnxinc then
local x = mem.target.x + mem.step
digiline_send("jumpdrive", { command = "set", key = "x", value = x })
elseif event.msg.btnxdec then
local x = mem.target.x - mem.step
digiline_send("jumpdrive", { command = "set", key = "x", value = x })
elseif event.msg.btnyinc then
local y = mem.target.y + mem.step
digiline_send("jumpdrive", { command = "set", key = "y", value = y })
elseif event.msg.btnydec then
local y = mem.target.y - mem.step
digiline_send("jumpdrive", { command = "set", key = "y", value = y })
elseif event.msg.btnzinc then
local z = mem.target.z + mem.step
digiline_send("jumpdrive", { command = "set", key = "z", value = z })
elseif event.msg.btnzdec then
local z = mem.target.z - mem.step
digiline_send("jumpdrive", { command = "set", key = "z", value = z })
elseif event.msg.btnsim then
digiline_send("jumpdrive", {
command = "simulate"
})
elseif event.msg.btnjump then
digiline_send("jumpdrive", {
command = "jump"
})
elseif event.msg.btnfire then
digiline_send("cannon", { command="fire", verbose=false })
elseif event.msg.btnfired then
digiline_send("cannond", { command="fire", verbose=false })
elseif event.msg.btnpark then
local x = mem.target.x - 5
local y = mem.target.y - 2
local z = mem.target.z + 4
digiline_send("jumpdrive", { command = "set", key = "x", value = x })
digiline_send("jumpdrive", { command = "set", key = "y", value = y })
digiline_send("jumpdrive", { command = "set", key = "z", value = z })
end
digiline_send("jumpdrive", {
command = "get"
})
end