Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- oPim = peripheral.wrap( "back" )
- oGlasses = peripheral.wrap( "openperipheral_glassesbridge_5" )
- oMonitor = peripheral.wrap( "monitor_215" )
- sGOptions = " | $$clear -> Clear Screen"
- oMonitor.setTextScale( 0.5 )
- function drawBar( nY )
- local tSize = { term.getSize() }
- term.setCursorPos( 1, nY )
- for i = 1, tSize[1] do
- term.write( " " )
- end
- end
- function cPrint( sText, nY )
- local tSize = { term.getSize() }
- term.setCursorPos( ( ( tSize[1]/2 )-( #sText/2 ) )+1, nY )
- term.write( sText )
- end
- --NonEssential Functions
- function checkGlasses( sPlayer )
- tUsers = oGlasses.getUsers()
- for i = 1,#tUsers do
- if tUsers[i] == sPlayer then
- return true
- end
- end
- return false
- end
- function parseChat( sUser, sMessage )
- local tArgs = {}
- for sArg in sMessage:gmatch( "%S+" ) do
- table.insert( tArgs, sArg )
- end
- print( sUser .. " ran command " .. tArgs[1] .. "!" )
- if tArgs[1] == "clear" then
- local oUser = oGlasses.getUserSurface( sUser )
- oUser.clear()
- elseif tArgs[1] == "page" then
- if tonumber( tArgs[2] ) then
- showMenu( sUser, tonumber( tArgs[2] ) )
- end
- end
- end
- --Money Functions
- function getPrices()
- oPrices = fs.open( "prices", "r" )
- tPrices = textutils.unserialize( oPrices.readAll() )
- oPrices.close()
- return tPrices
- end
- function getBalances()
- local oFile = fs.open( "balances", "r" )
- local tBalances = textutils.unserialize( oFile.readAll() )
- oFile.close()
- return tBalances
- end
- function saveBalances( tSaveBalances )
- local oFile = fs.open( "balances", "w" )
- oFile.write( textutils.serialize( tSaveBalances ) )
- oFile.close()
- end
- function getBalance( sPlayer )
- return getBalances()[sPlayer]
- end
- function setBalance( sPlayer, nAmount )
- local tSetBalances = getBalances()
- tSetBalances[sPlayer] = nAmount
- saveBalances( tSetBalances )
- end
- --Drawing Functions
- function redrawMonitor()
- if oPim.getInventoryName() ~= "pim" then
- bFound = false
- for i = 1,#oGlasses.getUsers() do
- if oGlasses.getUsers()[i] == oPim.getInventoryName() then
- bFound = true
- end
- end
- term.redirect( oMonitor )
- term.setCursorPos( 1, 2 )
- if not bFound then
- cPrint( "You must equip your shop terminal Glasses!", 2 )
- else
- cPrint( "Welcome, " .. oPim.getInventoryName() .. "!" ,3 )
- cPrint( "You have your Glasses Equipped.", 4 )
- cPrint( "Check the menu by entering $$page <number> in chat", 6 )
- end
- term.restore()
- end
- end
- function showMenu( sPlayer, nPage )
- nPer = 5
- nCount = 1
- nCountShown = 1
- oUser = oGlasses.getUserSurface( sPlayer )
- oUser.clear()
- oUser.addText( 10, 10, "Menu Page " .. nPage .. " - " .. nPer .. " results per page!" .. sGOptions, 0xFFFFFF )
- for sItem, tItem in pairs( getPrices() ) do
- if nCount >= ( nPer*nPage )-nPer+1 and nCount <= ( nPer*nPage ) then
- oUser.addIcon( 10, 10+(20*nCountShown), tonumber( sItem ), tItem["meta"] )
- oUser.addText( 27, 14+(20*nCountShown), "$" .. tItem["price"] .. "/item for " .. tItem["name"] .. ":" .. tItem["meta"], 0xFFFFFF )
- nCountShown = nCountShown+1
- end
- nCount = nCount + 1
- end
- end
- --Start of Main loop
- os.startTimer( 0.1 )
- while true do
- tUsers = oGlasses.getUsers()
- for i = 1,#tUsers do
- if getBalance( tUsers[i] ) == nil then
- setBalance( tUsers[i], 0 )
- end
- end
- tEvent = { os.pullEvent() }
- term.redirect( oMonitor )
- tSize = { term.getSize() }
- term.setBackgroundColor( colors.white )
- term.setTextColor( colors.black )
- term.clear()
- term.setBackgroundColor( colors.green )
- drawBar( 1 )
- drawBar( tSize[2] )
- cPrint( "Cammuno Shopping Mall", 1 )
- if oPim.getInventoryName() ~= "pim" then
- cPrint( "Welcome, " .. oPim.getInventoryName() .. "! =)", tSize[2] )
- end
- term.setBackgroundColor( colors.white )
- redrawMonitor()
- term.restore()
- if tEvent[1] == "player_on" or tEvent[1] == "player_off" then
- if tEvent[1] == "player_on" then
- sCurrentPlayer = tEvent[2]
- end
- elseif tEvent[1] == "chat_command" then
- parseChat( tEvent[3], tEvent[2] )
- end
- if tEvent[1] == "player_off" then
- if sCurrentPlayer ~= nil then
- if checkGlasses( sCurrentPlayer ) then
- local oUser = oGlasses.getUserSurface( sCurrentPlayer )
- oUser.clear()
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement