Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- securityId = 1
- diskDrive = peripheral.wrap("bottom")
- monitor = peripheral.wrap("top")
- modem = peripheral.wrap("right")
- rewardFile = fs.open("reward","r")
- if rewardFile then
- reward = rewardFile.readAll()
- rewardFile.close()
- else
- reward = "none"
- end
- tokenFile = fs.open("token","r")
- if tokenFile then
- token = tokenFile.readAll()
- tokenFile.close()
- else
- token = "none"
- end
- playSide = "left"
- adminScreen = false
- monitor.setTextScale(.5)
- local function checkWins(values)
- local wins = 0
- for i=1,3 do
- if (values[i] == "X" and values[i+3] == "X" and values[i+6] == "X") then
- wins = wins + 1
- end
- end
- return wins
- end
- local function doDisplay(values, wins, credits)
- monitor.clear()
- monitor.setCursorPos(5,1)
- if (wins == 0) then
- monitor.write("You Lose")
- else
- monitor.write("Win x"..wins.."!")
- end
- monitor.setCursorPos(5,3)
- monitor.write("+-+-+-+")
- monitor.setCursorPos(5,4)
- monitor.write("|"..values[1].."|"..values[4].."|"..values[7].."|")
- monitor.setCursorPos(5,5)
- monitor.write("+-+-+-+")
- monitor.setCursorPos(5,6)
- monitor.write("|"..values[2].."|"..values[5].."|"..values[8].."|")
- monitor.setCursorPos(5,7)
- monitor.write("+-+-+-+")
- monitor.setCursorPos(5,8)
- monitor.write("|"..values[3].."|"..values[6].."|"..values[9].."|")
- monitor.setCursorPos(5,9)
- monitor.write("+-+-+-+")
- monitor.setCursorPos(1,10)
- monitor.write("Credits :"..credits - 1)
- end
- local function play(credits)
- local valuePool = {"O","O","O","O","O","O","X","X","X","X"}
- local randomValues = {}
- for i=1,10 do
- randomValues[i] = valuePool[math.random(1, 10)]
- end
- wins = checkWins(randomValues)
- doDisplay(randomValues, wins, credits)
- if wins > 0 then
- turtle.turnRight(1)
- turtle.suck(wins)
- turtle.turnLeft(1)
- turtle.drop(wins)
- end
- end
- local function screenSaver(credits)
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.write("Token:")
- monitor.setCursorPos(1,2)
- i = string.find(token, ":")
- monitor.write(string.sub(token, i + 1))
- monitor.setCursorPos(1,3)
- monitor.write("Reward:")
- monitor.setCursorPos(1,4)
- i = string.find(reward, ":")
- monitor.write(string.sub(reward, i + 1))
- monitor.setCursorPos(3,6)
- monitor.write("Credits: "..credits, 0)
- if (credits == 0) then
- monitor.setCursorPos(3,8)
- monitor.write("Add credits", 1)
- end
- if (credits > 0) then
- monitor.setCursorPos(1,8)
- monitor.write("Pull the lever")
- monitor.setCursorPos(1,9)
- monitor.write("to play -->")
- end
- end
- adminMenu = {
- "Collect Tokens",
- "Change Token",
- "Add Reward",
- "Change Reward",
- "Exit"
- }
- selectedItem = 1;
- local function showAdminMenu(selectedItem)
- for i=1,#adminMenu do
- if (i == selectedItem) then
- monitor.setTextColor(colors.yellow)
- end
- monitor.setCursorPos(1,2+i)
- monitor.write(adminMenu[i])
- monitor.setTextColor(colors.white)
- end
- end
- local function showAdminScreen()
- monitor.clear()
- monitor.setCursorPos(2,1)
- monitor.write("Welcome Admin")
- monitor.setCursorPos(1,2)
- showAdminMenu(selectedItem)
- monitor.setCursorPos(1,9)
- monitor.write("Submit:")
- monitor.setCursorPos(1,10)
- monitor.write("Insert Card")
- end
- local function addReward()
- turtle.suckDown()
- turtle.drop()
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.write("Add Reward:")
- monitor.setCursorPos(1,2)
- monitor.write(reward)
- monitor.setCursorPos(1,4)
- monitor.write("Current Stock:")
- monitor.setCursorPos(1,5)
- monitor.write(rewardCount)
- os.sleep(2)
- end
- local function collect(tokenChest)
- turtle.turnRight(1)
- if tokenChest then
- turtle.turnRight(1)
- end
- max = 16
- while max == 16 do
- for i=1,max do
- turtle.suck()
- if turtle.getItemCount(i) ~= 0 and max ~= 16 then
- max = max + 1
- end
- end
- turtle.turnLeft(1)
- if tokenChest then
- turtle.turnLeft(1)
- end
- emptySpace = turtle.getItemSpace()
- for i=1,max do
- turtle.select(i)
- turtle.drop()
- end
- max = emptySpace
- turtle.select(1)
- end
- end
- local function changeToken()
- turtle.suckDown()
- turtle.drop()
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.write("Change Token")
- monitor.setCursorPos(1,3)
- monitor.write("Drop the item")
- monitor.setCursorPos(1,5)
- monitor.write("Current Token:")
- monitor.setCursorPos(1,6)
- monitor.write(token)
- os.sleep(2)
- end
- local function changeReward()
- turtle.suckDown()
- turtle.drop()
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.write("Change Reward")
- monitor.setCursorPos(1,3)
- monitor.write("Drop the item")
- monitor.setCursorPos(1,5)
- monitor.write("Current Reward:")
- monitor.setCursorPos(1,6)
- monitor.write(reward)
- os.sleep(2)
- end
- local function addCredits()
- turtle.select(1)
- if (turtle.suck(64)) then
- item = turtle.getItemDetail(1)
- print(item.name)
- if (selectedItem == 2) and (item.name ~= "computercraft:disk") then
- tokenFile = fs.open("token",'w')
- tokenFile.write(item.name)
- tokenFile.close()
- token = item.name
- monitor.clear()
- monitor.setCursorPos(1,5)
- monitor.write("Token set:")
- monitor.setCursorPos(1,6)
- monitor.write(item.name)
- os.sleep(2)
- collect(true)
- selectedItem = 1
- adminScreen = false
- elseif (selectedItem == 3) then
- if (item.name == "computercraft:disk") then
- selectedItem = 1
- adminScreen = false
- else
- turtle.turnRight(1)
- turtle.drop(64)
- turtle.turnLeft(1)
- end
- elseif (selectedItem == 4) and (item.name ~= "computercraft:disk") then
- rewardFile = fs.open("reward","w")
- rewardFile.write(item.name)
- rewardFile.close()
- reward = item.name
- monitor.clear()
- monitor.setCursorPos(1,5)
- monitor.write("Reward set:")
- monitor.setCursorPos(1,6)
- monitor.write(item.name)
- os.sleep(2)
- collect(false)
- selectedItem = 1
- adminScreen = false
- elseif (item.name == token) then
- count = item.count
- turtle.turnRight(1)
- turtle.turnRight(1)
- turtle.drop(64)
- turtle.turnLeft(1)
- turtle.turnLeft(1)
- credits = credits + count
- screenSaver(credits)
- elseif (item.name == "computercraft:disk") then
- turtle.dropDown()
- file = fs.open("disk/keycard", "r")
- if file then
- password = file.readAll()
- file.close()
- modem.open(714)
- modem.transmit(816, 714, securityId..": "..diskDrive.getDiskID().."="..password)
- event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
- if message then
- turtle.suckDown()
- turtle.drop()
- if not adminScreen then
- showAdminScreen()
- adminScreen = true
- elseif selectedItem == 4 then
- changeReward()
- elseif selectedItem == 3 then
- addReward()
- elseif selectedItem == 2 then
- changeToken()
- elseif selectedItem == 1 then
- collect(true)
- else
- adminScreen = false
- selectedItem = 1
- end
- end
- end
- turtle.suckDown()
- end
- turtle.drop()
- os.sleep(2)
- end
- end
- local function main()
- credits = 0
- if adminScreen then
- if rs.getInput("left") then
- if selectedItem == #adminMenu then
- selectedItem = 1
- else
- selectedItem = selectedItem + 1
- end
- showAdminMenu(selectedItem)
- os.sleep(1)
- end
- else
- screenSaver(credits)
- end
- addCredits()
- while credits > 0 do
- if (turtle.suck()) then
- addCredits()
- end
- os.pullEvent("redstone")
- if (rs.getInput(playSide) and credits > 0) then
- play(credits)
- credits = credits - 1
- if (credits == 0) then
- os.sleep(5)
- end
- end
- if (credits == 0 and not adminScreen) then
- screenSaver(0)
- end
- end
- end
- while true do
- main()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement