-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstartup.lua
117 lines (105 loc) · 2.96 KB
/
startup.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
print("checking computer type...")
local machineType = 0
local isAdvanced = false
local isPocket = false
local isTurtle = false
local isCommand = false
-- Check if advanced (multishell exists in advanced computers and advanced pocket computers)
if multishell then
isAdvanced = true
end
-- Check if Pocket Computer (API specific to Pocket Computers)
if pocket then
isPocket = true
end
-- Check if Turtle (turtle API is available for turtles)
if turtle then
isTurtle = true
end
if commands then
isCommand = true
end
-- Determine machine type
if isTurtle then
if isAdvanced then
machineType = 3 -- Advanced Turtle
else
machineType = 1 -- Standard Turtle
end
elseif isPocket then
if isAdvanced then
machineType = 4 -- Advanced Pocket Computer
else
machineType = 2 -- Standard Pocket Computer
end
else
if isAdvanced then
if isCommand then
machineType = 7 -- Command Computer
else
machineType = 6 -- Advanced Computer
end
else
machineType = 5 -- Standard Computer
end
end
print("Machine Type: " .. machineType)
print("connecting to IDE...")
local ws = assert(http.websocket("ws://127.0.0.1:5133"))
print("connected to server")
local id
local isrunning = true
function exitcheck()
while true do
local event = os.pullEventRaw("terminate")
if event == "terminate" then
print("Exiting...")
isrunning = false
ws.close()
break
end
end
end
function main()
while isrunning do
print("ready")
local message, error = ws.receive()
if message then
print("Received message:", message)
if message == "ping" then
ws.send("pong")
elseif message == "info" then
info = {
OSVersion = os.version(),
ID = os.getComputerID(),
Name = os.getComputerLabel() or "No Name",
Type = machineType,
uptime = os.clock()
}
ws.send(textutils.serialiseJSON(info))
elseif message == "sendcode" then
local file = io.open("main.lua", "w")
print("waiting for code")
local filedata, error = ws.receive()
file:write(filedata)
file:close()
elseif message == "runcode" then
if isAdvanced then
id = multishell.launch({}, "main.lua")
multishell.setTitle(id, "Code")
multishell.setFocus(id)
else
shell.run("main")
end
elseif message == "exit" then
print("Exiting...")
break
end
else
print("WebSocket error:", error)
break
end
end
end
parallel.waitForAny(exitcheck, main)
print("Exited")