Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- PROGRAM CONFIGURATION:
- tickSpeed = 0.05 -- How fast the game goes. Higher the slower. 0.05 is the recommended speed.
- -- END OF CONFIGURATION
- version = "a1.5PR"
- -- Forgive me for the messy and unorganized code in 1.5. I'll fix this issue in a future 1.5.X update.
- function titleScreen()
- term.clear()
- term.setCursorPos(1, 1)
- print("")
- print(" $$$ Moneybags $$$ ")
- print(" Alpha 1.5 ")
- print("")
- print("")
- -- Temp
- term.setCursorPos(1, 18)
- print(" PRE-RELEASE! ")
- -- End Temp
- menuPos = 1
- while true do
- term.setCursorPos(1, 6)
- if menuPos == 1 then
- print(" > Single Player < ")
- else
- print(" Single Player ")
- end
- print("")
- if menuPos == 2 then
- print(" > Multiplayer < ")
- else
- print(" Multiplayer ")
- end
- print("")
- if menuPos == 3 then
- print(" > Options < ")
- else
- print(" Options ")
- end
- print("")
- if menuPos == 4 then
- print(" > Quit Game < ")
- else
- print(" Quit Game ")
- end
- event, key = os.pullEvent("key")
- if (key == 17 or key == 200) and (menuPos > 1) then
- menuPos = menuPos - 1
- elseif (key == 31 or key == 208) and (menuPos < 4) then
- menuPos = menuPos + 1
- elseif key == 28 and menuPos == 1 then
- newLoadPos = 1
- while true do
- term.clear()
- term.setCursorPos(1, 4)
- print(" --------------------------------------- ")
- print(" | | ")
- if newLoadPos == 1 then
- print(" | > New Game < | ")
- else
- print(" | New Game | ")
- end
- print(" | | ")
- if newLoadPos == 2 then
- print(" | > Load Game < | ")
- else
- print(" | Load Game | ")
- end
- print(" | | ")
- print(" --------------------------------------- ")
- event, key = os.pullEvent("key")
- if (key == 17 or key == 200) and newLoadPos == 2 then
- newLoadPos = 1
- elseif (key == 31 or key == 208) and newLoadPos == 1 then
- newLoadPos = 2
- elseif key == 28 and newLoadPos == 1 then
- break
- elseif key == 28 and newLoadPos == 2 then
- file = fs.open("/ProgramData/Moneybags/Saves/Save_1", "r")
- save1 = file.readAll()
- file:close()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_2", "r")
- save2 = file:readAll()
- file:close()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_3", "r")
- save3 = file:readAll()
- file:close()
- save1 = textutils.unserialize(save1)
- save2 = textutils.unserialize(save2)
- save3 = textutils.unserialize(save3)
- loadMenuPos = 1
- loadMode = "load"
- while true do
- term.clear()
- term.setCursorPos(1, 4)
- print(" --------------------------------------- ")
- print(" | Load Game | ")
- print(" |-------------------------------------| ")
- print(" | | ")
- print(" | Choose Game to Load | ")
- print(" | | ")
- if save1.used == true then
- print(" | Slot 1 - Occupied (S: "..save1.score.." L: "..save1.lives..")")
- else
- print(" | Slot 1 - Empty")
- end
- term.setCursorPos(44, 10)
- print("|")
- print(" | | ")
- if save2.used == true then
- print(" | Slot 2 - Occupied (S: "..save2.score.." L: "..save2.lives..")")
- else
- print(" | Slot 2 - Empty")
- end
- term.setCursorPos(44, 12)
- print("|")
- print(" | | ")
- if save3.used == true then
- print(" | Slot 3 - Occupied (S: "..save3.score.." L: "..save3.lives..")")
- else
- print(" | Slot 3 - Empty")
- end
- term.setCursorPos(44, 14)
- print("|")
- print(" | | ")
- if loadMode == "load" then
- print(" | Enter Delete Mode | ")
- elseif loadMode == "delete" then
- print(" | Enter Load Mode | ")
- end
- print(" | | ")
- print(" --------------------------------------- ")
- if loadMenuPos == 1 then
- term.setCursorPos(8, 10)
- print(">")
- elseif loadMenuPos == 2 then
- term.setCursorPos(8, 12)
- print(">")
- elseif loadMenuPos == 3 then
- term.setCursorPos(8, 14)
- print(">")
- elseif loadMenuPos == 4 then
- term.setCursorPos(8, 16)
- print(">")
- end
- event, key = os.pullEvent("key")
- if (key == 17 or key == 200) and loadMenuPos > 1 then
- loadMenuPos = loadMenuPos - 1
- elseif (key == 31 or key == 208) and loadMenuPos < 4 then
- loadMenuPos = loadMenuPos + 1
- elseif (key == 28 and loadMenuPos == 1) and save1.used == true then
- if loadMode == "load" then
- loaded = true
- money = save1.money
- payday = save1.payday
- playerPos = save1.playerPos
- score = save1.score
- prevLifeScore = save1.prevLifeScore
- lives = save1.lives
- moneybagTimer = save1.moneybagTimer
- moneybag = save1.moneybag
- playerMove = save1.playerMove
- tickCount = save1.tickCount
- break
- elseif loadMode == "delete" then
- save1 = defaultTable
- file = fs.open("ProgramData/Moneybags/Saves/Save_1", "w")
- file.write(textutils.serialize(save1))
- file.close()
- end
- elseif (key == 28 and loadMenuPos == 2) and save2.used == true then
- if loadMode == "load" then
- loaded = true
- money = save2.money
- payday = save2.payday
- playerPos = save2.playerPos
- score = save2.score
- prevLifeScore = save2.prevLifeScore
- lives = save2.lives
- moneybagTimer = save2.moneybagTimer
- moneybag = save2.moneybag
- playerMove = save2.playerMove
- tickCount = save2.tickCount
- break
- elseif loadMode == "delete" then
- save2 = defaultTable
- file = fs.open("ProgramData/Moneybags/Saves/Save_2", "w")
- file.write(textutils.serialize(save2))
- file.close()
- end
- elseif (key == 28 and loadMenuPos == 3) and save3.used == true then
- if loadMode == "load" then
- loaded = true
- money = save3.money
- payday = save3.payday
- playerPos = save3.playerPos
- score = save3.score
- prevLifeScore = save3.prevLifeScore
- lives = save3.lives
- moneybagTimer = save3.moneybagTimer
- moneybag = save3.moneybag
- playerMove = save3.playerMove
- tickCount = save3.tickCount
- break
- elseif loadMode == "delete" then
- save3 = defaultTable
- file = fs.open("ProgramData/Moneybags/Saves/Save_3", "w")
- file.write(textutils.serialize(save3))
- file.close()
- end
- elseif key == 28 and loadMenuPos == 4 then
- if loadMode == "load" then
- loadMode = "delete"
- elseif loadMode == "delete" then
- loadMode = "load"
- end
- end
- end
- break
- end
- end
- fine, errorLog = pcall(parallel.waitForAny, singlePlayer, keyListener)
- if fine then
- if lose then
- term.setCursorPos(1, 5)
- print(" ----------------------------- ")
- print(" | You Lose! | ")
- print(" ----------------------------- ")
- print(" | $$ Game Data $$ | ")
- print(" |---------------------------| ")
- print(" | Score: "..score)
- term.setCursorPos(39, 10)
- print("|")
- print(" | Ticks: "..tickCount)
- term.setCursorPos(39, 11)
- print("|")
- print(" ----------------------------- ")
- sleep(1)
- print(" | Press any key to continue | ")
- print(" | to the Main Menu. | ")
- print(" ----------------------------- ")
- os.pullEvent("key")
- end
- loaded = false
- term.clear()
- term.setCursorPos(1, 1)
- print("")
- print(" $$$ Moneybags $$$ ")
- print(" Alpha 1.5 ")
- print("")
- print("")
- -- Temp
- term.setCursorPos(1, 18)
- print(" PRE-RELEASE! ")
- -- End Temp
- else
- term.clear()
- term.setCursorPos(1, 1)
- print(" You got hit by a Moneybag! ")
- print("-------------------------------------------------")
- print("")
- print(" A serious error has occurred within the game's ")
- print(" code.")
- print("")
- print("")
- print(" Error Report: ")
- print("")
- print(" "..errorLog)
- os.pullEvent("key")
- term.clear()
- term.setCursorPos(1, 1)
- break
- end
- elseif key == 28 and menuPos == 2 then
- fine, errorLog = pcall(parallel.waitForAny, multiPlayer, keyListener, packetListener)
- elseif key == 28 and menuPos == 3 then
- term.clear()
- term.setCursorPos(1, 3)
- elseif key == 28 and menuPos == 4 then
- term.clear()
- term.setCursorPos(1, 1)
- break
- end
- term.setCursorPos(1, 6)
- term.clearLine()
- term.clearLine()
- term.clearLine()
- end
- end
- function singlePlayer()
- -- Variable Definitions
- lose = false
- gameExit = false
- if not loaded then
- money = 300
- payday = 0
- playerPos = 8
- score = 0
- prevLifeScore = 0
- lives = 3
- moneybagTimer = 0
- moneybag = {}
- for i = 1, 16 do
- moneybag[i] =
- {
- onScreen = false,
- xPos = 0
- }
- end
- playerMove = false
- tickCount = 0
- end
- -- End of Variable Definitions
- -- Tick Loop
- repeat
- if playerMove == true then
- if currentKey == "up" and playerPos > 1 then
- playerPos = playerPos - 1
- currentKey = false
- elseif currentKey == "down" and playerPos < 17 then
- playerPos = playerPos + 1
- currentKey = false
- end
- playerMove = false
- else
- playerMove = true
- end
- if payday == 120 then
- money = money + 300
- payday = 0
- else
- payday = payday + 1
- end
- if moneybagTimer == 3 and money >= 10 then
- moneybagTimer = 0
- money = money - 10
- i = 0
- repeat
- i = i + 1
- if moneybag[i].onScreen == false then
- moneybag[i].onScreen = true
- moneybag[i].yPos = math.random(1, 17)
- moneybagDeployed = true
- end
- until moneybagDeployed
- moneybagDeployed = false
- elseif money >= 10 then
- moneybagTimer = moneybagTimer + 1
- end
- for i = 1, 16 do
- if moneybag[i].onScreen then
- if moneybag[i].xPos == 48 then
- moneybag[i].onScreen = false
- moneybag[i].xPos = 0
- score = score + 1
- else
- moneybag[i].xPos = moneybag[i].xPos + 1
- end
- end
- end
- for i = 1, 16 do
- if moneybag[i].yPos == playerPos and moneybag[i].xPos == 47 then
- lives = lives - 1
- end
- end
- if score - prevLifeScore == 500 then
- prevLifeScore = prevLifeScore + 500
- lives = lives + 1
- end
- if lives == 0 then
- lose = true
- end
- if currentKey == "enter" then
- singlePlayerMenu()
- currentKey = true
- end
- tickCount = tickCount + 1
- refreshSinglePlayerGraphics()
- sleep(tickSpeed)
- until lose or gameExit
- -- End of Tick Loop
- end
- function singlePlayerMenu()
- term.clear()
- term.setCursorPos(1, 1)
- print("Ticks: "..tickCount.." Score: "..score.." Money: $"..money.." Lives: "..lives)
- term.setCursorPos(1, 4)
- print(" --------------------------------------- ")
- print(" | Game is paused. | ")
- print(" --------------------------------------- ")
- print(" | | ")
- SPmenuPos = 1
- while true do
- term.setCursorPos(1, 8)
- if SPmenuPos == 1 then
- print(" | > Back to Game < | ")
- else
- print(" | Back to Game | ")
- end
- print(" | | ")
- if SPmenuPos == 2 then
- print(" | > Save and Exit < | ")
- else
- print(" | Save and Exit | ")
- end
- print(" | | ")
- if SPmenuPos == 3 then
- print(" | > Exit to Main Menu < | ")
- else
- print(" | Exit to Main Menu | ")
- end
- print(" | | ")
- print(" --------------------------------------- ")
- event, key = os.pullEvent("key")
- if (key == 17 or key == 200) and SPmenuPos >= 2 then
- SPmenuPos = SPmenuPos - 1
- elseif (key == 31 or key == 208) and SPmenuPos <= 2 then
- SPmenuPos = SPmenuPos + 1
- elseif key == 28 and SPmenuPos == 1 then
- break
- elseif key == 28 and SPmenuPos == 2 then
- saveMenu()
- gameExit = true
- break
- elseif key == 28 and SPmenuPos == 3 then
- gameExit = true
- break
- end
- end
- end
- function saveMenu()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_1", "r")
- save1 = file.readAll()
- file:close()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_2", "r")
- save2 = file:readAll()
- file:close()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_3", "r")
- save3 = file:readAll()
- file:close()
- save1 = textutils.unserialize(save1)
- save2 = textutils.unserialize(save2)
- save3 = textutils.unserialize(save3)
- saveMenuPos = 1
- while true do
- term.clear()
- term.setCursorPos(1, 4)
- print(" --------------------------------------- ")
- print(" | Save Game | ")
- print(" |-------------------------------------| ")
- print(" | | ")
- print(" | Save Game to.. | ")
- print(" | | ")
- if save1.used == true then
- print(" | Slot 1 - Occupied (S: "..save1.score.." L: "..save1.lives..")")
- else
- print(" | Slot 1 - Empty")
- end
- term.setCursorPos(44, 10)
- print("|")
- print(" | | ")
- if save2.used == true then
- print(" | Slot 2 - Occupied (S: "..save2.score.." L: "..save2.lives..")")
- else
- print(" | Slot 2 - Empty")
- end
- term.setCursorPos(44, 12)
- print("|")
- print(" | | ")
- if save3.used == true then
- print(" | Slot 3 - Occupied (S: "..save3.score.." L: "..save3.lives..")")
- else
- print(" | Slot 3 - Empty")
- end
- term.setCursorPos(44, 14)
- print("|")
- print(" | | ")
- print(" --------------------------------------- ")
- if saveMenuPos == 1 then
- term.setCursorPos(8, 10)
- print(">")
- elseif saveMenuPos == 2 then
- term.setCursorPos(8, 12)
- print(">")
- elseif saveMenuPos == 3 then
- term.setCursorPos(8, 14)
- print(">")
- end
- event, key = os.pullEvent("key")
- if (key == 17 or key == 200) and saveMenuPos >= 2 then
- saveMenuPos = saveMenuPos - 1
- elseif (key == 31 or key == 208) and saveMenuPos <= 2 then
- saveMenuPos = saveMenuPos + 1
- elseif key == 28 and saveMenuPos == 1 then
- save1 =
- {
- used = true,
- money = money,
- payday = payday,
- playerPos = playerPos,
- score = score,
- prevLifeScore = prevLifeScore,
- lives = lives,
- moneybagTimer = moneybagTimer,
- moneybag = moneybag,
- playerMove = playerMove,
- tickCount = tickCount
- }
- file = fs.open("ProgramData/Moneybags/Saves/Save_1", "w")
- file.write(textutils.serialize(save1))
- file.close()
- term.setCursorPos(1, 17)
- print(" Saved! ")
- sleep(2)
- break
- elseif key == 28 and saveMenuPos == 2 then
- save2 =
- {
- used = true,
- money = money,
- payday = payday,
- playerPos = playerPos,
- score = score,
- prevLifeScore = prevLifeScore,
- lives = lives,
- moneybagTimer = moneybagTimer,
- moneybag = moneybag,
- playerMove = playerMove,
- tickCount = tickCount
- }
- file = fs.open("ProgramData/Moneybags/Saves/Save_2", "w")
- file.write(textutils.serialize(save2))
- file.close()
- term.setCursorPos(1, 17)
- print(" Saved! ")
- sleep(2)
- break
- elseif key == 28 and saveMenuPos == 3 then
- save3 =
- {
- used = true,
- money = money,
- payday = payday,
- playerPos = playerPos,
- score = score,
- prevLifeScore = prevLifeScore,
- lives = lives,
- moneybagTimer = moneybagTimer,
- moneybag = moneybag,
- playerMove = playerMove,
- tickCount = tickCount
- }
- file = fs.open("ProgramData/Moneybags/Saves/Save_3", "w")
- file.write(textutils.serialize(save3))
- file.close()
- term.setCursorPos(1, 17)
- print(" Saved! ")
- sleep(2)
- break
- end
- end
- end
- function keyListener()
- while true do
- event, key = os.pullEvent("key")
- if currentKey ~= true then
- if key == 17 or key == 200 then
- currentKey = "up"
- elseif key == 31 or key == 208 then
- currentKey = "down"
- elseif key == 28 then
- currentKey = "enter"
- end
- else
- currentKey = false
- end
- end
- end
- function refreshSinglePlayerGraphics()
- term.clear()
- term.setCursorPos(1, 1)
- print("Ticks: "..tickCount.." Score: "..score.." Money: $"..money.." Lives: "..lives)
- term.setCursorPos(48, playerPos + 1)
- print("X")
- for i = 1, 16 do
- if moneybag[i].onScreen then
- term.setCursorPos(moneybag[i].xPos, moneybag[i].yPos + 1)
- print(">$")
- end
- end
- end
- function openRednet()
- rednet.open(modemSide)
- end
- defaultTable =
- {
- used = false
- }
- if fs.exists("/ProgramData/Moneybags") == false then
- fs.makeDir("/ProgramData/Moneybags/Saves")
- file = fs.open("/ProgramData/Moneybags/Saves/Save_1", "w")
- file.write(textutils.serialize(defaultTable))
- file.close()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_2", "w")
- file.write(textutils.serialize(defaultTable))
- file:close()
- file = fs.open("/ProgramData/Moneybags/Saves/Save_3", "w")
- file.write(textutils.serialize(defaultTable))
- file:close()
- term.clear()
- term.setCursorPos(1, 1)
- print(" Moneybags Setup - Step 1 of 2 ")
- print("-------------------------------------------------")
- term.setCursorPos(1, 4)
- print(" --------------------------------- ")
- print(" | Choose Username | ")
- print(" |-------------------------------| ")
- print(" | Username: | ")
- print(" --------------------------------- ")
- term.setCursorPos(21, 7)
- username = read()
- fs.makeDir("/ProgramData/Moneybags/UserData")
- file = fs.open("/ProgramData/Moneybags/Userdata/Username", "w")
- file.write(username)
- file.close()
- setupMenuPos = 1
- while true do
- term.clear()
- term.setCursorPos(1, 1)
- print(" Moneybags Setup - Step 2 of 2 ")
- print("-------------------------------------------------")
- term.setCursorPos(1, 3)
- print(" --------------------------------- ")
- print(" | Select Wireless Modem Side | ")
- print(" |-------------------------------| ")
- if setupMenuPos == 1 then
- print(" | > Top < | ")
- else
- print(" | Top | ")
- end
- print(" | | ")
- if setupMenuPos == 2 then
- print(" | > Bottom < | ")
- else
- print(" | Bottom | ")
- end
- print(" | | ")
- if setupMenuPos == 3 then
- print(" | > Left < | ")
- else
- print(" | Left | ")
- end
- print(" | | ")
- if setupMenuPos == 4 then
- print(" | > Right < | ")
- else
- print(" | Right | ")
- end
- print(" | | ")
- if setupMenuPos == 5 then
- print(" | > Front < | ")
- else
- print(" | Front | ")
- end
- print(" | | ")
- if setupMenuPos == 6 then
- print(" | > Back < | ")
- else
- print(" | Back | ")
- end
- print(" | | ")
- print(" --------------------------------- ")
- event, key = os.pullEvent("key")
- if (key == 17 or key == 200) and setupMenuPos > 1 then
- setupMenuPos = setupMenuPos - 1
- elseif (key == 31 or key == 208) and setupMenuPos < 6 then
- setupMenuPos = setupMenuPos + 1
- elseif key == 28 and setupMenuPos == 1 then
- modemSide = "top"
- break
- elseif key == 28 and setupMenuPos == 2 then
- modemSide = "bottom"
- break
- elseif key == 28 and setupMenuPos == 3 then
- modemSide = "left"
- break
- elseif key == 28 and setupMenuPos == 4 then
- modemSide = "right"
- break
- elseif key == 28 and setupMenuPos == 5 then
- modemSide = "front"
- break
- elseif key == 28 and setupMenuPos == 6 then
- modemSide = "back"
- break
- end
- end
- file = fs.open("/ProgramData/Moneybags/Userdata/Modem_Side", "w")
- file.write(modemSide)
- file.close()
- end
- file = fs.open("ProgramData/Moneybags/Userdata/Username", "r")
- username = file:readAll()
- file.close()
- file = fs.open("ProgramData/Moneybags/Userdata/Modem_Side", "r")
- modemSide = file:readAll()
- file.close()
- ok, err = pcall(openRednet)
- if not ok then
- term.clear()
- term.setCursorPos(1, 1)
- print(" Failed to open Rednet! ")
- print("-------------------------------------------------")
- print("")
- print(" There is no Wireless Modem attatched to the ")
- print(" "..modemSide.." side!")
- print("")
- print(" Moneybags will load without Rednet. If you'd ")
- print(" like to change the modem side, go into the ")
- print(" program options menu. ")
- sleep(2)
- term.setCursorPos(1, 17)
- print(" Press any Key to Continue.. ")
- os.pullEvent("key")
- rednetOpen = false
- end
- titleScreen()
Add Comment
Please, Sign In to add comment