Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
12d8256
Update README.md
recklessmetro Dec 26, 2019
941d422
Update darkretriever.lua
recklessmetro Dec 26, 2019
8068744
Update darkretriever.lua
recklessmetro Dec 26, 2019
97d3bf8
Update programVersions
recklessmetro Dec 26, 2019
50f975a
Update darkretriever.lua
recklessmetro Dec 26, 2019
2da3b6c
Update installer.lua
recklessmetro Dec 26, 2019
3a0d774
Update client.lua
recklessmetro Dec 26, 2019
b3177f5
Update server.lua
recklessmetro Dec 26, 2019
b3919f9
Update dark.lua
recklessmetro Dec 26, 2019
7fefa21
Update darkfile.lua
recklessmetro Dec 26, 2019
4050543
Update darkbuttons.lua
recklessmetro Dec 26, 2019
4ec8513
Update screen.lua
recklessmetro Dec 26, 2019
8a1ccd1
Update turt.lua
recklessmetro Dec 26, 2019
9f070bb
Update programVersions
recklessmetro Dec 26, 2019
4a30451
Update programVersions
recklessmetro Dec 26, 2019
fa4b059
Update programVersions
recklessmetro Dec 26, 2019
c43f468
Update server.lua
recklessmetro Dec 26, 2019
8af799a
Update server.lua
recklessmetro Dec 26, 2019
2c27ecb
Update chat.lua
recklessmetro Dec 26, 2019
a5ac78e
Update server.lua
recklessmetro Dec 26, 2019
0b10a60
Update client.lua
recklessmetro Dec 26, 2019
a5a2b3c
Update client.lua
recklessmetro Dec 26, 2019
36bb07c
Create securesigns
recklessmetro Dec 29, 2019
6676c9b
Create securitysigns
recklessmetro Dec 29, 2019
327ce84
Update programVersions
recklessmetro Dec 29, 2019
677986f
Create startup
recklessmetro Dec 29, 2019
f165695
Update programVersions
recklessmetro Dec 29, 2019
5a2e2e6
Update programVersions
recklessmetro Dec 29, 2019
6d14495
Update programVersions
recklessmetro Dec 29, 2019
10c42b3
Update programVersions
recklessmetro Dec 29, 2019
8e214e4
Rename startup to sign
recklessmetro Dec 29, 2019
608e0e2
Add files via upload
recklessmetro Dec 29, 2019
cdead63
fix
recklessmetro Dec 29, 2019
619989a
Create mineos
recklessmetro Mar 8, 2020
d00644f
Update programVersions
recklessmetro Mar 8, 2020
933aece
Mineos
recklessmetro Mar 8, 2020
9938dd0
setup
recklessmetro Mar 8, 2020
f5a9c97
Revert "setup"
recklessmetro Mar 8, 2020
fb22435
Update programVersions
recklessmetro Mar 8, 2020
6bb5aae
Create SecureDoor
recklessmetro Mar 10, 2020
bcc2303
Update programVersions
recklessmetro Mar 10, 2020
1fc44de
Update programVersions
recklessmetro Mar 10, 2020
6c23e99
Create office
recklessmetro Mar 10, 2020
cce0dbb
Update programVersions
recklessmetro Mar 10, 2020
072ffea
Rename office to ink
recklessmetro Mar 10, 2020
db7d9ba
Update ink
recklessmetro Mar 10, 2020
eaf90e7
Update programVersions
recklessmetro Mar 10, 2020
eeb60d6
Update ink
recklessmetro Mar 10, 2020
4a18175
Update programVersions
recklessmetro Mar 10, 2020
91bba25
Update programVersions
recklessmetro Mar 11, 2020
f8defec
MetroOS
recklessmetro Apr 25, 2020
2d53009
Updated OS
recklessmetro Apr 25, 2020
7b72bd5
Update programVersions
recklessmetro Apr 25, 2020
1336a77
updated Metro OS
recklessmetro Apr 25, 2020
8acbca5
Games Update!
recklessmetro Apr 26, 2020
25c7b93
fixed code issue
recklessmetro Apr 26, 2020
d6e5eb5
Games update!
recklessmetro Apr 26, 2020
34d6496
Merge branch 'darkprograms' of https://github.com/rservices/darkprogr…
recklessmetro Apr 26, 2020
85d75cc
CookieClicker
recklessmetro Apr 26, 2020
30824af
fixed code
recklessmetro Apr 26, 2020
3cefcaf
updated office software 2.0
recklessmetro Apr 26, 2020
abdb0f5
fixed code error
recklessmetro Apr 26, 2020
d43e8c3
Update chat.lua
recklessmetro Apr 14, 2022
21d3dd0
Update chat.lua
recklessmetro Apr 14, 2022
bad227f
Update secure.lua
recklessmetro Apr 16, 2022
96ed4f3
Update MetroOS
recklessmetro Apr 16, 2022
5c299e5
Update programVersions
recklessmetro Apr 16, 2022
f19a666
Update MetroOS
recklessmetro Apr 16, 2022
6661bd7
Update programVersions
recklessmetro Apr 16, 2022
e7484b9
Create doorlock
recklessmetro Apr 16, 2022
bbbb37e
Update programVersions
recklessmetro Apr 16, 2022
394ad3c
Update programVersions
recklessmetro Apr 16, 2022
81de280
Update programVersions
recklessmetro Apr 16, 2022
8089795
Update programVersions
recklessmetro Apr 16, 2022
4ebb1ef
Update programVersions
recklessmetro Apr 16, 2022
104728a
Update SecureDoor
recklessmetro Apr 16, 2022
ea57050
Update programVersions
recklessmetro Apr 16, 2022
7639b6e
Update programVersions
recklessmetro Apr 21, 2022
d152b33
Update client.lua
recklessmetro Jul 21, 2022
4257e98
Update server.lua
recklessmetro Jul 21, 2022
b761273
Update server.lua
recklessmetro Jul 21, 2022
3bb9353
Update server.lua
recklessmetro Jul 21, 2022
deadcea
updated prograns
recklessmetro Mar 22, 2023
4ec0f1d
updated code
recklessmetro Apr 29, 2023
9550403
Update MetroOS
recklessmetro Apr 29, 2023
578612b
Update server.lua
recklessmetro Apr 30, 2023
6603423
Update server.lua
recklessmetro Apr 30, 2023
fc56718
Update server.lua
recklessmetro Apr 30, 2023
887bcb7
Update client.lua
recklessmetro Apr 30, 2023
2326710
Update server.lua
recklessmetro Apr 30, 2023
9f9d08b
Update darkretriever.lua
recklessmetro Apr 30, 2023
c772783
Update client.lua
recklessmetro Apr 30, 2023
3e346f0
Update darkretriever.lua
recklessmetro Apr 30, 2023
c382f7d
Update darkretriever.lua
recklessmetro Apr 30, 2023
af9b2c4
colours
recklessmetro Apr 30, 2023
11be093
Update darkretriever.lua
recklessmetro Apr 30, 2023
46bac2d
Update MetroOS
recklessmetro Apr 30, 2023
3ad2598
Fixed colour issues
recklessmetro Apr 30, 2023
56b05cf
fixed code
recklessmetro Apr 30, 2023
9326176
Update darkretriever.lua
recklessmetro May 23, 2023
12745a0
Update darkretriever.lua
recklessmetro May 23, 2023
f98ba8f
Update darkretriever.lua
recklessmetro May 23, 2023
72d4844
Update darkretriever.lua
recklessmetro May 23, 2023
7f1d213
Update darkretriever.lua
recklessmetro May 23, 2023
4486a27
Update darkretriever.lua
recklessmetro May 23, 2023
7ea1ddb
Update darkretriever.lua
recklessmetro May 23, 2023
551ebce
Update darkretriever.lua
recklessmetro May 23, 2023
02b9bc7
Update darkretriever.lua
recklessmetro May 23, 2023
94eea76
Update darkretriever.lua
recklessmetro May 23, 2023
6f770d1
Update darkretriever.lua
recklessmetro May 23, 2023
cca191c
Update darkretriever.lua
recklessmetro May 23, 2023
38a0ae2
Update darkretriever.lua
recklessmetro May 23, 2023
8067b7d
Update darkretriever.lua
recklessmetro May 23, 2023
5ec108a
Add files via upload
recklessmetro Jul 24, 2023
25d4b4f
Update programVersions
recklessmetro Jul 24, 2023
07f7205
Update SecureDoor
recklessmetro Jul 24, 2023
fa02f3f
Update chat.lua
recklessmetro Aug 21, 2023
e9fc7dd
Create chat_server.lua
recklessmetro Feb 23, 2025
fdff001
Create chat_client.lua
recklessmetro Feb 23, 2025
1aa5c3f
Update programVersions
recklessmetro Feb 23, 2025
a5d6cee
Update programVersions
recklessmetro Feb 23, 2025
665370c
Update programVersions
recklessmetro Feb 23, 2025
46424ae
Update programVersions
recklessmetro Feb 23, 2025
66ec58e
Update programVersions
recklessmetro Feb 23, 2025
78a94dd
Update programVersions
recklessmetro Feb 23, 2025
438b40e
Update programVersions
recklessmetro Feb 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
353 changes: 353 additions & 0 deletions MetroOS/MetroOS

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
darkprograms
Outraged Programs
============
Programs witten by Darkrising for use with the Minecraft mod: Computercraft.
Programs witten by Outraged Security .INC for use with the Minecraft mod: Computercraft.

These Files are written in: Lua
194 changes: 194 additions & 0 deletions Secure OS/apis/processes.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
local userEvents = {"mouse_click", "mouse_up", "mouse_drag", "char", "key", "monitor_touch", "key_up", "paste", "terminate"}
local parentTerm = term.current()
local parentWidth, parentHeight = parentTerm.getSize()
local defaultProperties = {
x = math.ceil(parentWidth/2-parentWidth/4),
y = math.ceil(parentHeight/2-parentHeight/4),
w = math.ceil(parentWidth/2), h = math.ceil(parentHeight/2),
noWindow = false, noBar = false, noInteraction = false,
name = "Unnamed Window"
}

local isUserEvent = function(event)
for userEventNum = 1, #userEvents do
local userEvent = userEvents[userEventNum]
if event == userEvent then
return true
end
end
end

local createProcessCoroutine = function(func)
return coroutine.create(function()
local succ, mess = pcall(func)
if not succ and mess then
while true do
term.setBackgroundColor(colors.black)
term.setTextColor(colors.orange)
term.clear()
term.setCursorPos(1, 1)
print("The program crashed!")
write(mess)
coroutine.yield()
end
end
end)
end

return {
drawWindowDecorations = function(self, processNum, event, var1, var2, var3)
local process = self[processNum]
if not process.noWindow and not process.noBar then
local pw, ph = process.term.getSize()

paintutils.drawLine(process.x, process.y-1, process.x+pw-1, process.y-1, colors.lightGray)
term.setTextColor(colors.gray)

term.setCursorPos(process.x+pw-1, process.y-1)
term.write("x")
term.setCursorPos(process.x, process.y-1)
term.write(process.name)
end
end,
handleInputOfProcess = function(self, processNum, event, var1, var2, var3)
local process = self[processNum]
if not process.noWindow and not process.noInteraction then
local px, py = process.term.getPosition()
local pw, ph = process.term.getSize()
local mx, my
if var3 then
mx, my = var2-px+1, var3-py+1
end

if event == "mouse_click" then
process.resizeX, process.resizeY = nil, nil
if mx>0 and my==0 and mx<pw+1 then
if not process.noBar then
if mx == pw then
table.remove(self, processNum)
else
process.clickedX, process.clickedY = mx, my
process.barClicked = true
end
end
else
process.barClicked = false
if keyboard.leftCtrl and mx>0 and my>0 and mx<pw+1 and my<ph+1 then
if mx==1 or mx==pw then
process.resizeX = mx
end
if my==1 or my==ph then
process.resizeY = my
end
end
end
elseif event == "mouse_drag" and (process.resizeX or process.resizeY) then
if not process.noResize then
if process.resizeX then
process:resize(pw - (process.resizeX-mx), ph)
process.resizeX = mx
end
local pw, ph = process.term.getSize()
if process.resizeY then
process:resize(pw, ph - (process.resizeY-my))
process.resizeY = my
end
end
elseif event == "mouse_drag" and process.barClicked then
if not process.noMove then
process:reposition(process.x-(process.clickedX-mx), process.y-(process.clickedY-my))
end
elseif event == "mouse_up" then
process.barClicked = false
end
end
end,
updateProgramOfProcess = function(self, processNum, event, var1, var2, var3)
local process = self[processNum]
local pw, ph = process.term.getSize()
local px, py = process.term.getPosition()
local var1, var2, var3 = var1, var2, var3

if string.sub(event, 1, #"mouse") == "mouse" then
var2 = var2-px+1
var3 = var3-py+1
end

-- redirect to process window and update it
local oldTerm = term.redirect(process.term)
process.term.setVisible(false)
coroutine.resume(process.coroutine, event, var1, var2, var3 )
if not process.noWindow then
process.term.setVisible(true)
end

-- redirect to the old term and redraw the process window
term.redirect(oldTerm)
process.term.redraw()
end,
updateProcess = function(self, processNum, event, var1, var2, var3)
local process = self[processNum]

-- check if process is still running, if not, remove it
if coroutine.status(process.coroutine) == "dead" then
table.remove(self, processNum)
return
end

self:handleInputOfProcess(processNum, event, var1, var2, var3)
if self[processNum] then
self:drawWindowDecorations(processNum, event, var1, var2, var3)
self:updateProgramOfProcess(processNum, event, var1, var2, var3)
end
end,
-- start process with command as function
run = function(self, command)
self:new(function() shell.run(command) end, {name = command})
end,
-- start process from directory
start = function(self, programName)
local programPath = "/programs/"..programName.."/"
local width, height = term.getSize()
local programProperties = {}

if fs.exists(programPath.."properties.lua") then
programProperties = dofile(programPath.."properties.lua")
end

local program = loadfile(programPath.."init.lua", _ENV)
self:new(program, programProperties)
end,
-- start a new process
new = function(self, func, properties)
local process = {
coroutine = createProcessCoroutine(func),
reposition = function(self, x, y)
self.x, self.y = x, y
self.term.reposition(x, y)
end,
resize = function(self, w, h)
if w>#self.name and h>3 then
local oldX, oldY = self.term.getPosition()
self.term.reposition(oldX, oldY, w, h)
os.queueEvent("term_resize")
end
end
}

for k, v in pairs(defaultProperties) do
process[k] = properties[k] or v
end

process.term = window.create(
parentTerm, process.x, process.y, process.w, process.h
)

table.insert(self, process)
end,
-- update all processes
update = function(self, event, var1, var2, var3)
for processNum, process in ipairs(self) do
self:updateProcess(processNum, event, var1, var2, var3)
end
end
}
3 changes: 3 additions & 0 deletions Secure OS/apis/ui.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
local ui = {}

return ui
Loading