FireDemonite icon

ItemRequester (computer, turtle needed)

FireDemonite | PRO | 10/26/18 02:28:00 PM UTC | 0 ⭐ | 254 👁️ | Never ⏰ | []
Lua |

7.35 KB

|

None

|

0 👍

/

0 👎

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