Juliett SSG

Jun 21st, 2021 (edited)
795
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. subCoordX = 3091
2. subCoordY = 66
3. subCoordZ = 1391
4. maxDist = 5000
5. remMissile = 4
6.
7. function clear()
8.     term.clear()
9.     term.setCursorPos(1, 1)
10.     term.write("        Raketnym kompleksom \"P-6\"")
11. end
12.
13. function insertCoords()
14.     while true do
15.         clear()
16.         print("\n\nVstavit' koordinaty:")
17.         term.setCursorPos(1, 6)
18.         term.write("X: ")
19.         term.setCursorPos(1, 8)
20.         term.write("Z: ")
21.         term.setCursorPos(1, 10)
23.         term.setCursorPos(4, 6)
25.         term.setCursorPos(4, 8)
27.         term.setCursorPos(9, 10)
31.
32.         term.setCursorPos(1, 12)
33.
34.         if tonumber(x) ~= nil and tonumber(z) ~= nil and tonumber(radius) ~= nil then
35.             print("Sokhranennyye koordinaty.")
36.             break
37.         end
38.     end
39.
40.     sleep(1)
41.     clear()
42. end
43.
44. function drawRosace()
45.     term.setCursorPos(21, 6)
46.     term.write("    |    ")
47.     term.setCursorPos(21, 7)
48.     term.write("    |    ")
49.     term.setCursorPos(21, 8)
50.     term.write("   /|\\   ")
51.     term.setCursorPos(21, 9)
52.     term.write("  / | \\  ")
53.     term.setCursorPos(21, 10)
54.     term.write("----O----")
55.     term.setCursorPos(21, 11)
56.     term.write("  \\ | /  ")
57.     term.setCursorPos(21, 12)
58.     term.write("   \\|/   ")
59.     term.setCursorPos(21, 13)
60.     term.write("    |    ")
61.     term.setCursorPos(21, 14)
62.     term.write("    |    ")
63. end
64.
65. function getRemainingMissile()
66.     term.setCursorPos(1, 19)
67.     if remMissile == 4 then
68.         term.write("Raketa:  [1] [2] [3] [4]  ")
69.     elseif remMissile == 3 then
70.         term.write("Raketa:  [ ] [2] [3] [4]  ")
71.     elseif remMissile == 2 then
72.         term.write("Raketa:  [ ] [ ] [3] [4]  ")
73.     elseif remMissile == 1 then
74.         term.write("Raketa:  [ ] [ ] [ ] [4]  ")
75.     elseif remMissile == 0 then
76.         term.write("Raketa:  [ ] [ ] [ ] [ ]  ")
77.     end
78. end
79.
81.     p = peripheral.wrap("bottom")
82.     w = p.getWorld(0)
83.     y = 128
84.     id = 0
85.     while id == 0 do
86.         id = w.getBlockID(coordx, y, coordz)
87.         y = y-1
88.         if y < 10 then
89.             clear()
90.             print("\n\nZapusk rakety ne udaslya!!!!")
91.             sleep(1)
92.             os.reboot()
93.         end
94.     end
95.     clear()
96.     w.playSound("AdvJetpacks_startup", coordx, y, coordz, 1, 0.2)
97.     print("\n\nZapusk krylatyye rakety!")
98.     rs.setOutput("left", true)
99.     sleep(0.5)
100.     rs.setOutput("left", false)
101.     sleep(1)
102.     w.explode(subCoordX, subCoordY, subCoordZ, 1, false, false)
103.     sleep(2)
104.
106. end
107.
108. function spawnMissile(coordX, coordZ, size)
109.     p = peripheral.wrap("bottom")
110.     w = p.getWorld(0)
111.     abort = false
112.     xt = 0 -- current position; x
113.     zt = 0 -- / current position; y
114.     d = 0 --  current direction; 0=RIGHT, 1=DOWN, 2=LEFT, 3=UP
115.     s = 1 --  chain size
116.
117.     k=1
118.     while k <= size-1 do
119.         k = k+1
120.         m = 0
121.         if k < size-1 then
122.             m = 2
123.         else
124.             m = 3
125.         end
126.         j = 0
127.         while j<m do
128.             j=j+1
129.             i=0
130.             while i<s do
131.                 i=i+1
132.                 --std::cout << matrix[x][y] << " ";
133.                 --print("X: " .. coordX+xt .. " Z: " .. coordZ+zt)
134.                 id = w.getBlockID(coordX+xt, y, coordZ+zt)
135.                 if id == 8 or id == 9 then
136.                     abort = true
137.                     break
138.                 end
139.
140.                 spawnGas(coordX+xt, coordZ+zt)
141.
142.                 if d == 0 then zt = zt + 2
143.                 elseif d == 1 then xt = xt + 2
144.                 elseif d == 2 then zt = zt - 2
145.                 elseif d == 3 then xt = xt - 2
146.                 end
147.             end
148.             if abort == true then
149.                 break
150.             end
151.             d = (d+1)%4
152.         end
153.         if abort == true then
154.             break
155.         end
156.         s = s + 1
157.     end
158.
159.     w.setBlock(coordX, y+1, coordZ, 76, 0)
160. end
161.
162. function spawnGas(x, z)
163.     w.setBlock(x, y, z, 1, 0)
164.     w.setBlock(x, y+2, z, 929, 0)
165.     --w.setBlock(x, y+1, z, 76, 0)
166. end
167.
168. function validateCodes()
169.     while true do
170.         error = 0
171.         clear()
172.         print("\n\nKod autentifikatsii:")
173.         term.setCursorPos(1, 6)
174.         term.write("CDR:")
175.         term.setCursorPos(1, 8)
176.         term.write("XO:")
177.         term.setCursorPos(6, 6)
179.         term.setCursorPos(6, 8)
181.         term.setCursorPos(1, 10)
182.
183.
184.         if tonumber(code1) ~= nil and tonumber(code2) ~= nil then
185.             rest = http.get("http://172.16.20.220/luanet/servlets/ssg/k77.php?code1="..code1.."&code2="..code2)
187.             rest.close()
188.
189.             if reply == "OK" then
190.                 print("Zapusk razreshen.")
192.                 break
193.             else
194.                 term.setCursorPos(1,15)
195.                 term.write("Oshibka! Nevernyy kod!")
196.                 error = error + 1
197.                 if error > 3 then
198.                     os.reboot()
199.                 end
200.                 sleep(1)
201.                 term.setCursorPos(1,15)
202.                 term.write("                      ")
203.             end
204.         end
205.     end
206.
207.     sleep(1)
208.     clear()
209. end
210.
211. function shootMissile()
212.     if remMissile > 0 then
213.         validateCodes()
215.         remMissile = remMissile - 1
216.         return true
217.     else
218.         return false
219.     end
220. end
221.
222. function autoAcquire()
223.     p = peripheral.wrap("bottom")
224.
225.     while true do
226.         clear()
227.         print("\n\nTsel:'")
228.         term.setCursorPos(1, 6)
229.         term.write("Imya pol'zovatelya: ")
230.         term.setCursorPos(1, 9)
231.         term.write("Sila: ")
232.
233.         term.setCursorPos(1, 7)
235.         term.setCursorPos(7, 9)
239.
240.         pl = p.getPlayerByName(user)
241.         term.setCursorPos(1, 12)
242.
243.         if pl ~= nil and tonumber(radius) ~= nil then
244.             ent = pl.asEntity()
245.             x, ignoredY, z = ent.getPosition()
246.             print("Tsel' dostignuta.")
247.             break
248.         end
249.     end
250.
251.     sleep(1)
252.     clear()
253. end
254.
255.
256. x = 75
257. z = 900
259.
260. clear()
261. while true do
262.     getRemainingMissile()
263.     drawRosace()
264.     term.setCursorPos(1, 3)
265.     term.write("         ")
266.     term.setCursorPos(1, 3)
267.     term.write("X: " .. x)
268.     term.setCursorPos(1, 4)
269.     term.write("          ")
270.     term.setCursorPos(1, 4)
271.     term.write("Z: " .. z)
272.     term.setCursorPos(1, 5)
273.
274.     d = math.floor(math.sqrt(((x - subCoordX) ^ 2) + ((z - subCoordZ) ^ 2))) / 1000
275.
276.     term.write("d: " .. d .. " km               ")
277.     local event, key = os.pullEvent("key")
278.     if key == 200 then
279.         z = z + 1
280.     elseif key == 208 then
281.         z = z - 1
282.     elseif key == 203 then
283.         x = x - 1
284.     elseif key == 205 then
285.         x = x + 1
286.     elseif key == 211 then
287.         if d < maxDist then
288.             shootMissile()
289.         else
290.             clear()
291.             term.setCursorPos(1, 12)
292.             print("Tsel' slishkom daleko.")
293.             sleep(2)
294.             clear()
295.         end
296.     elseif key == 210 then
297.         insertCoords()
298.     elseif key == 199 then
299.         autoAcquire()
300.     end
301. end
RAW Paste Data