View difference between Paste ID: WNQsW2iT and bWKufQDT
SHOW: | | - or go back to the newest paste.
1-
local component = require("component")
1+
local component = require("component")
2-
local event = require("event")
2+
local event = require("event")
3-
local os = require("os")
3+
local os = require("os")
4-
4+
5-
local ol = component.openlight
5+
local ol = component.openlight
6-
local cb = component.chat_box
6+
local cb = component.chat_box
7-
local door = component.os_door
7+
local door = component.os_door
8-
local char_space = string.byte(" ")
8+
local char_space = string.byte(" ")
9-
local running = true
9+
local running = true
10-
local char_pause = string.byte("p")
10+
local char_pause = string.byte("p")
11-
11+
12-
cb.setName("Dave")
12+
cb.setName("Dave")
13-
13+
14-
function unknownEvent()
14+
function unknownEvent()
15
end
16-
16+
17-
local myEventHandlers = setmetatable({}, { __index = function() return unknownEvent end })
17+
local myEventHandlers = setmetatable({}, { __index = function() return unknownEvent end })
18-
18+
19-
function myEventHandlers.key_up(adress, char, code, playerName)
19+
function myEventHandlers.key_up(adress, char, code, playerName)
20-
  if (char == char_space) then
20+
  if (char == char_space) then
21-
  running = false
21+
  running = false
22-
  --[[elseif (char == char_pause) then
22+
  --[[elseif (char == char_pause) then
23-
  cardMenu()
23+
  cardMenu()
24-
  doChoice()  ]]--
24+
  doChoice()  ]]--
25-
  end
25+
  end
26-
  end
26+
  end
27-
27+
28-
local function openDoor()
28+
local function openDoor()
29-
  door.toggle()
29+
  door.toggle()
30-
  os.sleep(5)
30+
  os.sleep(5)
31-
  door.toggle()
31+
  door.toggle()
32-
  return
32+
  return
33
end
34-
34+
35-
local function cardMenu()
35+
local function cardMenu()
36-
term.clear()
36+
term.clear()
37-
term.setCursor(1,1)
37+
term.setCursor(1,1)
38-
print("Do you wish to add or remove a UUID? (A/r)")
38+
print("Do you wish to add or remove a UUID? (A/r)")
39-
choice = io.read()
39+
choice = io.read()
40-
if choice and (choice == "" or choice:sub(1,1):lower() == "a") then
40+
if choice and (choice == "" or choice:sub(1,1):lower() == "a") then
41-
choice = "a" -- I have no idea where I was going with this
41+
choice = "a" -- I have no idea where I was going with this
42-
else choice = "r"
42+
else choice = "r"
43
end
44-
return choice
44+
return choice
45
end
46-
46+
47-
local messages = {
47+
local messages = {
48-
 
48+
 
49-
  ["lights"] = {
49+
  ["lights"] = {
50-
    --Syntax: ["keyword"] = {function, all, other, arguments}
50+
    --Syntax: ["keyword"] = {function, all, other, arguments}
51-
    ["on"] = {},
51+
    ["on"] = {},
52-
    ["off"] = {}
52+
    ["off"] = {}
53-
  },
53+
  },
54-
 
54+
 
55-
 ["door"] = {
55+
 ["door"] = {
56-
    ["open"] = {openDoor}
56+
    ["open"] = {openDoor}
57-
  },
57+
  },
58-
 
58+
 
59-
 ["lamp"] = {
59+
 ["lamp"] = {
60-
    ["on"] = {ol.setColor, 0x00FF00},
60+
    ["on"] = {ol.setColor, 0x00FF00},
61-
    ["off"] = {ol.setColor, 0xFF0000}
61+
    ["off"] = {ol.setColor, 0xFF0000}
62-
  },
62+
  },
63-
 
63+
 
64-
  ["core"] = {
64+
  ["core"] = {
65-
    ["current"] = {cb.say, "Herpderp"},
65+
    ["current"] = {cb.say, "Herpderp"},
66-
    ["max"] = {cb.say, "Herpderp"}
66+
    ["max"] = {cb.say, "Herpderp"}
67-
  },
67+
  },
68-
 
68+
 
69-
  ["reactor"] = {
69+
  ["reactor"] = {
70-
  ["fuel"] = {}
70+
  ["fuel"] = {}
71-
  },
71+
  },
72-
72+
73-
  ["awesome"] = {
73+
  ["awesome"] = {
74-
    ["you're"] = {cb.say, "No, you're awesome."}
74+
    ["you're"] = {cb.say, "No, you're awesome."}
75-
  }
75+
  }
76-
 
76+
 
77-
}
77+
}
78-
78+
79-
local function getFunction(tbl, msg)
79+
local function getFunction(tbl, msg)
80-
  if tbl[1] then
80+
  if tbl[1] then
81-
    return tbl
81+
    return tbl
82-
  end
82+
  end
83-
  for i,j in pairs(tbl) do
83+
  for i,j in pairs(tbl) do
84-
    if type(i) == "string" then
84+
    if type(i) == "string" then
85-
      -- print(i)
85+
      -- print(i)
86-
      if msg:find(i) and type(j) == "table" then
86+
      if msg:find(i) and type(j) == "table" then
87-
        return getFunction(j, msg)
87+
        return getFunction(j, msg)
88-
      end
88+
      end
89-
    end
89+
    end
90-
  end
90+
  end
91
end
92-
92+
93-
local function parseMessage(msg)
93+
local function parseMessage(msg)
94-
  local fnc = getFunction(messages, msg)
94+
  local fnc = getFunction(messages, msg)
95-
  if not fnc then return false, "no command found" end
95+
  if not fnc then return false, "no command found" end
96-
  return pcall(table.unpack(fnc))
96+
  return pcall(table.unpack(fnc))
97
end
98-
98+
99-
function myEventHandlers.chat_message(adr,playerName,message)
99+
function myEventHandlers.chat_message(adr,playerName,message)
100-
if message:find("^%Dave, .+") then
100+
if message:find("^%Dave, .+") then
101-
local result, response = parseMessage(message:lower())
101+
local result, response = parseMessage(message:lower())
102
end
103
end
104-
104+
105-
105+
106-
local function doChoice()
106+
local function doChoice()
107
end
108-
108+
109-
local function authorized()
109+
local function authorized()
110-
  local env = {}
110+
  local env = {}
111-
  local config = loadfile("/etc/auth.dat", nil, env)
111+
  local config = loadfile("/etc/auth.dat", nil, env)
112-
  if config then
112+
  if config then
113-
    pcall(config)
113+
    pcall(config)
114-
  end
114+
  end
115-
  return env.authorized
115+
  return env.authorized
116
end
117-
117+
118-
local authorized = authorized() -- This one?
118+
local authorized = authorized() -- This one?
119-
119+
120-
function myEventHandlers.magData(addr, playerName, data, UUID, locked)
120+
function myEventHandlers.magData(addr, playerName, data, UUID, locked)
121-
for i = 1,#authorized do
121+
for i = 1,#authorized do
122-
print("Checking index #" .. i .. " for a match against: " .. UUID)
122+
print("Checking index #" .. i .. " for a match against: " .. UUID)
123-
if UUID == authorized[i] then
123+
if UUID == authorized[i] then
124-
print("Door opening for " .. playerName .. ".")
124+
print("Door opening for " .. playerName .. ".")
125-
openDoor()
125+
openDoor()
126-
break
126+
break
127-
elseif UUID ~= authorized[i] then
127+
elseif UUID ~= authorized[i] then
128-
print("Unauthorized Access attempt from " .. playerName .. "!")
128+
print("Unauthorized Access attempt from " .. playerName .. "!")
129
end
130
end
131
end
132-
132+
133-
function handleEvent(eventID, ...)
133+
function handleEvent(eventID, ...)
134-
  if (eventID) then -- can be nil if no event was pulled for some time
134+
  if (eventID) then -- can be nil if no event was pulled for some time
135-
    myEventHandlers[eventID](...) -- call the appropriate event handler with all remaining arguments
135+
    myEventHandlers[eventID](...) -- call the appropriate event handler with all remaining arguments
136-
  end
136+
  end
137
end
138-
138+
139-
--[[function myEventHandlers.chat_message(addr,playerName,msg)
139+
--[[function myEventHandlers.chat_message(addr,playerName,msg)
140-
if playerName == "Kodos" and msg == "Open sesame" then
140+
if playerName == "Kodos" and msg == "Open sesame" then
141-
openDoor()
141+
openDoor()
142
end
143-
end ]]--
143+
end ]]--
144-
144+
145-
while running do
145+
while running do
146-
handleEvent(event.pull())
146+
handleEvent(event.pull())
147
end