rednet.open("top")
local turtleID = 0
local User = {}
local file = fs.open("items.txt","r")
CurrItems = textutils.unserialise(file.readAll())
file.close()
if (fs.exists("Config.txt")) then
local file = fs.open("Config.txt","r")
file.readLine()
turtleID = file.readLine()
else
while not (tonumber(turtleID) and tonumber(turtleID) > 0) do
term.clear()
term.setCursorPos(1,1)
term.write("Turtle ID: ")
turtleID = read()
if not (tonumber(turtleID)) then
print("Not a number!")
sleep(1)
end
end
local file = fs.open("Config.txt","a")
file.close()
file = fs.open("Config.txt","w")
file.writeLine("TurtleID: ")
file.write(turtleID)
file.close()
end
if (fs.exists(".Users")) then
local file = fs.open(".Users","r")
Users = textutils.unserialise(file.readAll())
file.close()
else
local file = fs.open(".Users","a")
file.close()
User["Admin"] = {password = "ADMIN", deposit = 0}
local file = fs.open(".Users","w")
file.write(textutils.serialize(User))
file.close()
end
local file = fs.open(".Users","r")
User = textutils.unserialise(file.readAll())
file.close()
function fetchItem(item, itemAmount)
if (checkItem(item)) then
item = CurrItems[item]
rednet.send(tonumber(turtleID), {item, itemAmount})
return true
else
return false
end
end
function checkItem(item)
if (CurrItems[item] ~= nil) then
print(CurrItems[item])
return true
else
return false
end
end
function printItems()
term.clear()
term.setCursorPos(1,1)
i = 1
for k,v in pairs(CurrItems) do
--chatbox.say(k)
if (i>1) then
list = list..", "..k
else
list = k
end
i = i + 1
end
--list = list.sub(list,2)
print(list)
end
function printUsers()
term.clear()
term.setCursorPos(1,1)
i = 1
for k,v in pairs(User) do
--chatbox.say(k)
if (i>1) then
list = list..", "..k
else
list = k
end
i = i + 1
end
--list = list.sub(list,2)
print(list)
end
function addItem()
term.clear()
term.setCursorPos(1,1)
print("ADMIN MODE")
term.write("Item Name: ")
item = read()
if (item == "exit") then
adminMode()
end
print()
print("X and Y position where X is horizontal and Y is vertical, right and up are positive")
term.write("X: ")
Xloc = read()
term.setCursorPos(string.len(Xloc)+5,6)
term.write("Y: ")
Yloc = read()
term.write("Price: $")
dollar = read()
Xloc = tonumber(Xloc)
Yloc = tonumber(Yloc)
dollar = tonumber(price)
if (CurrItems[item] == nil) then
CurrItems[item] = {count = 0, location = {X = Xloc, Y = Yloc}, map = {"","","","","","","","",""},price = dollar}
print("Item "..item.." Added with location X: "..CurrItems[item].location.X.." Y: "..CurrItems[item].location.Y.. " and $ "..CurrItems[item].price)
local file = fs.open("items.txt","w")
file.write(textutils.serialize(CurrItems))
file.close()
else
print("Item Already Existant!")
end
adminMode()
end
function removeItem()
term.clear()
term.setCursorPos(1,1)
print("ADMIN MODE")
print("What item would you like to have deleted?")
printItems()
term.write("#")
item = read()
CurrItems[item] = nil
local file = fs.open("items.txt","w")
file.write(textutils.serialize(CurrItems))
file.close()
end
function addUser()
term.clear()
term.setCursorPos(1,1)
print("ADMIN MODE")
term.write("User Name: ")
name = read()
if (item == "exit") then
adminMode()
end
print()
term.write("User Password: ")
pass = read()
print()
term.write("Beginning amount: $")
amount = read()
amount = tonumber(amount)
if (User[name] == nil) then
User[name] = {password = pass, deposit = ((amount <= 100) and 100 or amount)}
print("Item "..name.." Added with deposit: $"..User[name].deposit)
local file = fs.open(".Users","w")
file.write(textutils.serialize(User))
file.close()
else
print("Item Already Existant!")
end
adminMode()
end
function removeUser()
term.clear()
term.setCursorPos(1,1)
print("ADMIN MODE")
print("What user would you like to have deleted?")
printUsers()
term.write("#")
name = read()
User[name] = nil
local file = fs.open(".Users","w")
file.write(textutils.serialize(User))
file.close()
end
function adminMode()
while true do
term.clear()
term.setCursorPos(1,1)
print("ADMIN MODE")
term.write("# ")
cmd = read()
if (cmd == "help") then
print("addItem")
print("r(e)m(ove)Item")
print("addUser")
print("r(e)m(ove)User")
print("command")
print("exit")
elseif (cmd == "addItem") then
addItem()
elseif (cmd == "rmItem" or cmd == "removeItem") then
removeItem()
elseif (cmd == "addUser") then
addUser()
elseif (cmd == "rmUser" or cmd == "removeUser") then
removeUser()
elseif (cmd == "command") then
error("ADMIN MODE EXIT")
elseif (cmd == "exit") then
shell.run("startup.lua")
end
end
end
function loggedIn(user)
while true do
getitem = false
cmd = ""
item = ""
itemAmount = ""
term.clear()
term.setCursorPos(1,1)
print("Computer ID: "..os.getComputerID())
print("Turtle ID: "..turtleID)
print("Type 'item' to get an item, type 'list' to get a list of all the items")
choice = read()
crafting = false
--print("Item: "..item.." Amount: "..itemAmount)
if (choice == "item") then
term.clear()
term.setCursorPos(1,1)
print()
term.clear()
term.setCursorPos(1,1)
print("Computer ID: "..os.getComputerID())
print("Turtle ID: "..turtleID)
term.write("Item: ")
item = read()
term.write("Amount: ")
itemAmount = read()
if (item and crafting == false) then
if (fetchItem(item, tonumber(itemAmount))) then
print("Getting items...")
sleep(5)
else
print("Not an exisiting item")
sleep(2)
end
end
elseif (choice == "admin") then
term.clear()
term.setCursorPos(1,1)
print("ADMIN MODE")
term.write("Password: ")
if (read() == "F1r3") then
adminMode()
end
elseif (choice == "list") then
printItems()
sleep(5)
elseif (choice == "logout") then
textutils.slowPrint("Logging Out...")
sleep(2)
return
end
end
end
loggedIn()
Comments