View difference between Paste ID: Aq4dBjLn and cb6xzPVH
SHOW: | | - or go back to the newest paste.
1
local component = require("component")
2
local colors = require("colors")
3
local sides = require("sides")
4
local event = require("event")
5
6
local rs = component.redstone
7
local cb = component.chat_box
8
local cl = component.colorful_lamp
9
local de = component.draconic_storage
10-
    ["off"] = {rs.setBundledOutput, sides.back, colors.cyan, 0}
10+
local ni = component.notification_interface -- TODO: Correct component name
11
local db = component.debug
12
local ws = component.world_sensor -- TODO: Correct this one too
13
14
15
16-
}
16+
-- ChatBox init
17
cb.setName("Dave")
18
19
if cb.getDistance() < 32768 then
20-
    if msg:find(i) then
20+
cb.setDistance(32768)
21-
      if type(j) == "table" then
21+
22-
        if j[1] and type(j[1]) ~= "table" then
22+
23-
          return j
23+
local function rgbto15(r,g,b) 
24-
        end
24+
  return (b%32)+((g%32)*32)+((r%32)*1024) 
25
end
26
27
local function round(num, idp)
28
	local mult = 10^(idp or 0)
29
	return math.floor(num * mult + 0.5) / mult
30
end
31
32-
  return pcall(table.unpack(getFunction(messages, msg)))
32+
33
34
  ["lights"] = {
35-
local testmsg = "Please turn the lights on"
35+
36-
local result, response = parseMessage(testmsg)
36+
37
    -- ["on"] = {rs.setBundledOutput, sides.back, colors.orange, 15},
38-
print(response)
38+
    ["off"] = {rs.setBundledOutput, sides.back, colors.cyan, 0},
39
    -- ["off"] = {rs.setBundledOutput, sides.back, colors.orange, 0}
40
  },
41
42
  ["door"] = {
43
    ["open"] = {rs.setBundledOutput, sides.back, colors.magenta, 15},
44
    ["close"] = {rs.setBundledOutput, sides.back, colors.magenta, 0}
45
  },
46
47
  ["all machines"] = {
48
    ["on"] = {cl.setLampColor, rgbto15(0,255,0)},
49
    ["off"] = {cl.setLampColor, rgbto15(255,0,0)}
50
  },
51
52
  ["core"] = {
53
    ["current"] = {cb.say, tostring(de.getEnergyStored())},
54
    ["max"] = {cb.say, tostring(de.getMaxEnergyStored())}
55
  }
56
  
57
  ["reactor"] = {
58
  ["fuel"] = {}
59
  }
60
  
61
  }
62
  
63
64
local function getFunction(tbl, msg)
65
  if tbl[1] then
66
    return tbl
67
  end
68
  for i,j in pairs(tbl) do
69
    if type(i) == "string" then
70
      print(i)
71
      if msg:find(i) and type(j) == "table" then
72
        return getFunction(j, msg)
73
      end
74
    end
75
  end
76
end
77
78
local function parseMessage(msg)
79
  local fnc = getFunction(messages, msg)
80
  if not fnc then return false, "no command found" end
81
  return pcall(table.unpack(fnc))
82
end
83
84
while true do
85
local _, _, user, message = event.pull("chat_message")
86
local result, response = parseMessage(message:lower())
87
print(result)
88
print(response)
89
end