Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/branches/scripting/scripts/prisoner.lua @ 4198

Last change on this file since 4198 was 4178, checked in by snellen, 18 years ago

update

File size: 12.7 KB
Line 
1-- Get objects from orxonox
2thisscript:addObject("GenericNPC", "prisoner")
3thisscript:addObject("FPSPlayer", "Player")
4thisscript:addObject("GenericNPC", "secondguard")
5thisscript:addObject("GenericNPC","guard")
6
7
8cellDoorOpened = false
9walkinCellFinished = false
10cellExitReached = false
11exitReached = false
12hangarReached = false
13spaceShipReached = false
14spaceShipEntered = false
15playerInLock = false
16guardStopped = false
17gotoSpaceship = false
18
19randTime = 0
20height = 36
21
22
23function dist( x1,x2,x3, y1,y2,y3 )
24
25return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
26
27end
28
29function observeGuard()
30guardX = secondguard:getAbsCoorX()
31guardY = secondguard:getAbsCoorY()
32guardZ = secondguard:getAbsCoorZ()
33
34if dist( guardX,guardY,guardZ, -85.456375, height, 171.823486) < 60 then
35cellDoorOpened = true
36end
37
38end
39
40function observePlayer()
41playerX = Player:getAbsCoorX()
42playerY = Player:getAbsCoorY()
43playerZ = Player:getAbsCoorZ()
44
45
46guardX = guard:getAbsCoorX()
47guardY = guard:getAbsCoorY()
48guardZ = guard:getAbsCoorZ()
49
50distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
51
52if dist( playerX,playerY,playerZ,161.76,49,408.87 ) < 50 then
53playerInLock = true
54end
55
56
57if distance > 250 and hangarRouteProgrammed and not guardStopped and not gotoSpaceship then
58 prisoner:stop()
59 guardStopped = true
60end
61
62if distance < 250 and hangarRouteProgrammed and guardStopped and not gotoSpaceship then
63 prisoner:resume()
64 guardStopped = false
65end
66
67
68if dist( guardX,guardY,guardZ,772.325012, height, -1500.850708) < 200 then
69gotoSpaceship = true
70end
71
72
73end
74
75walkProgrammed = false
76exitProgrammed = false
77function walkInCell(timestep)
78
79
80if not walkProgrammed then
81--prisoner:walkTo( -66.454849, height, 62.363449)
82--prisoner:walkTo( -66.454849, height, 62.363449)
83prisoner:walkTo( -63.214821, height, 62.429710)
84prisoner:walkTo( -56.661182, height, 62.563740)
85prisoner:walkTo( -46.779755, height, 62.765827)
86prisoner:walkTo( -41.634224, height, 71.319214)
87prisoner:walkTo( -38.168526, height, 79.655807)
88prisoner:walkTo( -40.782196, height, 101.285233)
89prisoner:walkTo( -47.722874, height, 114.314980)
90prisoner:walkTo( -54.593349, height, 118.605423)
91prisoner:walkTo( -62.802982, height, 117.947144)
92prisoner:walkTo( -73.180130, height, 116.720863)
93prisoner:walkTo( -85.028603, height, 114.952316)
94prisoner:walkTo( -113.125824, height, 96.362946)
95prisoner:walkTo( -118.218887, height, 87.702599)
96prisoner:walkTo( -120.596275, height, 80.304184)
97prisoner:walkTo( -114.928169, height, 68.971840)
98prisoner:walkTo( -108.606766, height, 62.085098)
99prisoner:walkTo( -90.078171, height, 59.558804)
100prisoner:walkTo( -83.558510, height, 60.516567)
101prisoner:walkTo( -71.352402, height, 63.920750)
102walkProgrammed = true
103end
104
105
106if prisoner:finalGoalReached() and not cellDoorOpened then
107 walkProgrammed = false
108end
109
110
111if cellDoorOpened then
112
113  if not exitProgrammed then
114prisoner:walkTo( -61.875267, height, 158.254517)
115prisoner:walkTo( -62.335995, height, 170.318756)
116prisoner:walkTo( -62.358681, height, 179.232559)
117prisoner:walkTo( -55.998741, height, 189.289749)
118prisoner:walkTo( -49.237957, height, 195.076263)
119prisoner:walkTo( -39.007496, height, 195.889221)
120prisoner:walkTo( -24.234095, height, 195.547043)
121prisoner:walkTo( -11.409116, height, 196.236069)
122prisoner:walkTo( 2.545602, height, 196.805954)
123prisoner:walkTo( 13.875313, height, 196.377563)
124prisoner:walkTo( 28.379402, height, 195.829132)
125prisoner:walkTo( 41.672989, height, 195.326477)
126prisoner:walkTo( 57.125935, height, 194.742126)
127prisoner:walkTo( 70.114609, height, 194.251007)
128prisoner:walkTo( 81.857407, height, 193.806961)
129prisoner:walkTo( 97.840607, height, 193.974030)
130prisoner:walkTo( 107.569641, height, 196.299652)
131prisoner:walkTo( 120.975266, height, 202.754532)
132prisoner:walkTo( 129.063812, height, 207.099640)
133prisoner:walkTo( 140.468765, height, 214.389191)
134prisoner:walkTo( 145.902267, height, 224.194229)
135prisoner:walkTo( 148.106079, height, 233.095215)
136prisoner:walkTo( 150.907532, height, 244.410049)
137prisoner:walkTo( 153.191757, height, 253.635788)
138prisoner:walkTo( 153.191757, height, 253.635788)
139prisoner:walkTo( 151.838257, height, 257.185974)
140prisoner:walkTo( 153.967865, height, 270.535095)
141prisoner:walkTo( 156.288605, height, 284.582123)
142prisoner:walkTo( 158.034988, height, 300.072937)
143prisoner:walkTo( 158.817184, height, 311.973724)
144prisoner:walkTo( 159.794891, height, 326.848816)
145prisoner:walkTo( 160.789093, height, 342.474060)
146prisoner:walkTo( 161.391815, height, 357.817505)
147prisoner:walkTo( 162.055618, height, 374.715668)
148prisoner:walkTo( 161.595901, height, 389.146759)
149prisoner:walkTo( 160.607056, height, 407.092896)
150prisoner:walkTo( 160.508041, height, 416.996307)
151
152   exitProgrammed = true
153  end
154
155  if prisoner:finalGoalReached() then
156   return true
157  end
158
159end 
160
161return false
162
163end
164
165
166hangarRouteProgrammed = false
167function goToHangar(timestep)
168
169if not hangarRouteProgrammed and playerInLock then
170prisoner:walkTo( 162.624390, height, 425.402435)
171prisoner:walkTo( 162.666931, height, 431.160980)
172prisoner:walkTo( 162.708481, height, 436.786591)
173prisoner:walkTo( 162.789124, height, 447.704620)
174prisoner:walkTo( 162.863098, height, 457.719055)
175prisoner:walkTo( 162.916428, height, 464.939545)
176prisoner:walkTo( 162.975830, height, 472.982452)
177prisoner:walkTo( 163.028259, height, 480.078857)
178prisoner:walkTo( 164.319611, height, 491.340607)
179prisoner:walkTo( 168.597382, height, 497.577728)
180prisoner:walkTo( 186.090088, height, 506.772766)
181prisoner:walkTo( 205.179825, height, 510.814911)
182prisoner:walkTo( 210.280609, height, 511.704041)
183prisoner:walkTo( 216.508865, height, 512.518982)
184prisoner:walkTo( 224.820663, height, 513.199585)
185prisoner:walkTo( 233.553589, height, 513.803711)
186prisoner:walkTo( 275.363922, height, 514.931763)
187prisoner:walkTo( 325.490265, height, 515.918945)
188prisoner:walkTo( 365.214355, height, 516.691833)
189prisoner:walkTo( 403.109619, height, 515.911804)
190prisoner:walkTo( 464.696991, height, 514.644348)
191prisoner:walkTo( 524.817627, height, 513.407104)
192prisoner:walkTo( 565.836670, height, 512.870239)
193prisoner:walkTo( 608.300232, height, 512.717957)
194prisoner:walkTo( 634.151794, height, 512.625183)
195prisoner:walkTo( 656.115234, height, 512.546570)
196prisoner:walkTo( 679.420166, height, 512.462708)
197prisoner:walkTo( 696.694702, height, 512.400635)
198prisoner:walkTo( 712.425781, height, 512.344299)
199prisoner:walkTo( 720.998474, height, 512.273193)
200prisoner:walkTo( 733.098389, height, 512.028137)
201prisoner:walkTo( 755.905273, height, 493.950714)
202prisoner:walkTo( 758.626648, height, 472.345520)
203prisoner:walkTo( 758.944458, height, 464.883545)
204prisoner:walkTo( 760.426208, height, 404.809967)
205prisoner:walkTo( 761.147827, height, 370.829987)
206prisoner:walkTo( 761.848511, height, 337.836395)
207prisoner:walkTo( 762.567932, height, 303.964020)
208prisoner:walkTo( 763.293335, height, 269.808380)
209prisoner:walkTo( 764.076294, height, 232.951477)
210prisoner:walkTo( 765.114441, height, 184.070221)
211prisoner:walkTo( 765.890076, height, 147.545258)
212prisoner:walkTo( 766.753296, height, 106.902954)
213prisoner:walkTo( 767.115967, height, 76.410255)
214prisoner:walkTo( 766.648621, height, 39.034630)
215prisoner:walkTo( 766.501282, height, 3.641552)
216prisoner:walkTo( 766.630615, height, -25.998037)
217prisoner:walkTo( 766.773560, height, -58.753052)
218prisoner:walkTo( 766.897766, height, -87.277809)
219prisoner:walkTo( 766.534546, height, -107.109718)
220prisoner:walkTo( 764.282104, height, -135.666809)
221prisoner:walkTo( 761.187439, height, -155.214981)
222prisoner:walkTo( 756.769043, height, -180.015106)
223prisoner:walkTo( 748.603821, height, -224.832336)
224prisoner:walkTo( 741.901978, height, -259.153870)
225prisoner:walkTo( 735.091492, height, -293.963196)
226prisoner:walkTo( 726.579651, height, -329.477051)
227prisoner:walkTo( 716.802002, height, -367.452911)
228prisoner:walkTo( 706.963806, height, -402.515228)
229prisoner:walkTo( 697.003357, height, -438.013824)
230prisoner:walkTo( 688.261230, height, -471.035400)
231prisoner:walkTo( 683.497986, height, -504.091461)
232prisoner:walkTo( 681.250732, height, -528.006287)
233prisoner:walkTo( 679.264771, height, -554.841125)
234prisoner:walkTo( 678.647949, height, -582.533508)
235prisoner:walkTo( 678.731018, height, -612.342407)
236prisoner:walkTo( 678.873230, height, -663.699585)
237prisoner:walkTo( 683.213135, height, -824.669922)
238prisoner:walkTo( 691.796326, height, -993.215332)
239prisoner:walkTo( 696.237244, height, -1045.909302)
240prisoner:walkTo( 702.897461, height, -1072.645020)
241prisoner:walkTo( 710.501160, height, -1095.735107)
242prisoner:walkTo( 715.637573, height, -1111.740845)
243prisoner:walkTo( 725.408020, height, -1144.843506)
244prisoner:walkTo( 747.384888, height, -1223.670410)
245prisoner:walkTo( 751.330872, height, -1238.939941)
246prisoner:walkTo( 757.179504, height, -1262.104980)
247prisoner:walkTo( 761.473145, height, -1287.161133)
248prisoner:walkTo( 764.180298, height, -1311.035767)
249prisoner:walkTo( 765.995178, height, -1339.139648)
250prisoner:walkTo( 767.811340, height, -1381.138428)
251prisoner:walkTo( 769.017273, height, -1409.277344)
252prisoner:walkTo( 769.463684, height, -1430.375244)
253prisoner:walkTo( 769.351685, height, -1451.503418)
254
255prisoner:walkTo( 775.508972, height, -1457.168213)
256prisoner:walkTo( 776.536743, height, -1462.372925)
257prisoner:walkTo( 778.141663, height, -1470.500732)
258prisoner:walkTo( 779.744995, height, -1478.620117)
259prisoner:walkTo( 782.587646, height, -1489.528198)
260prisoner:walkTo( 785.285156, height, -1497.338013)
261prisoner:walkTo( 788.850159, height, -1506.399414)
262prisoner:walkTo( 792.417053, height, -1515.465820)
263prisoner:walkTo( 796.757446, height, -1525.825684)
264prisoner:walkTo( 802.122009, height, -1534.417847)
265prisoner:walkTo( 808.422058, height, -1541.669067)
266prisoner:walkTo( 816.134949, height, -1549.770508)
267prisoner:walkTo( 824.352783, height, -1557.150024)
268prisoner:walkTo( 832.695801, height, -1563.451172)
269prisoner:walkTo( 843.443665, height, -1571.163818)
270prisoner:walkTo( 850.623901, height, -1576.316284)
271prisoner:walkTo( 859.099182, height, -1580.545166)
272prisoner:walkTo( 868.999939, height, -1585.129028)
273prisoner:walkTo( 879.254211, height, -1588.827148)
274prisoner:walkTo( 888.822021, height, -1592.277832)
275prisoner:walkTo( 895.563293, height, -1594.931885)
276prisoner:walkTo( 900.941589, height, -1597.049438)
277prisoner:walkTo( 907.684387, height, -1599.704102)
278prisoner:walkTo( 914.599243, height, -1604.825928)
279prisoner:walkTo( 919.703430, height, -1609.984619)
280prisoner:walkTo( 925.728088, height, -1616.250977)
281prisoner:walkTo( 930.751343, height, -1621.475830)
282prisoner:walkTo( 934.714905, height, -1625.719360)
283prisoner:walkTo( 940.166260, height, -1631.555664)
284prisoner:walkTo( 946.152344, height, -1637.964600)
285prisoner:walkTo( 953.042297, height, -1646.456421)
286prisoner:walkTo( 958.174194, height, -1654.167847)
287prisoner:walkTo( 964.112854, height, -1663.534424)
288prisoner:walkTo( 968.981812, height, -1670.229248)
289prisoner:walkTo( 975.821045, height, -1678.569946)
290prisoner:walkTo( 982.743835, height, -1687.244385)
291prisoner:walkTo( 990.572571, height, -1697.622559)
292prisoner:walkTo( 995.849670, height, -1704.618164)
293prisoner:walkTo( 1001.152649, height, -1711.648193)
294prisoner:walkTo( 1005.204590, height, -1717.019531)
295prisoner:walkTo( 1012.097412, height, -1725.154907)
296prisoner:walkTo( 1017.283020, height, -1731.152222)
297prisoner:walkTo( 1022.044250, height, -1736.658936)
298prisoner:walkTo( 1028.422852, height, -1744.234863)
299prisoner:walkTo( 1033.080688, height, -1749.780884)
300prisoner:walkTo( 1036.395874, height, -1753.908936)
301prisoner:walkTo( 1040.509155, height, -1759.065186)
302prisoner:walkTo( 1044.627441, height, -1764.227783)
303prisoner:walkTo( 1050.220093, height, -1770.871094)
304prisoner:walkTo( 1054.504883, height, -1775.961060)
305prisoner:walkTo( 1060.259888, height, -1782.490723)
306prisoner:walkTo( 1067.060913, height, -1789.939209)
307prisoner:walkTo( 1072.477173, height, -1795.898315)
308prisoner:walkTo( 1076.556152, height, -1800.990845)
309prisoner:walkTo( 1080.718018, height, -1806.200439)
310prisoner:walkTo( 1085.281494, height, -1811.912476)
311prisoner:walkTo( 1090.934448, height, -1817.621094)
312prisoner:walkTo( 1095.896240, height, -1822.369141)
313prisoner:walkTo( 1100.940430, height, -1827.278564)
314prisoner:walkTo( 1107.045898, height, -1833.460693)
315prisoner:walkTo( 1113.230103, height, -1839.722534)
316
317hangarRouteProgrammed = true
318end
319
320thisX = prisoner:getAbsCoorX()
321thisY = prisoner:getAbsCoorY()
322thisZ = prisoner:getAbsCoorZ()
323
324distance = dist( thisX,thisY,thisZ, 1113.230103, height, -1839.722534)
325--io.write(distance,"\n")
326
327if dist( thisX,thisY,thisZ, 1113.230103, height, -1839.722534) < 40 then
328prisoner:hide()
329return true
330end
331
332
333return false
334
335end
336
337spaceshipRouteProgrammed = false
338function goToSpaceship(timestep)
339
340if not spaceshipRouteProgrammed then
341
342
343spaceshipRouteProgrammed = true
344end
345
346if prisoner:finalGoalReached() then
347   return true
348end
349
350return false
351
352end
353
354
355function enterSpaceship(timestep)
356
357return false
358end
359
360
361
362function tick(timestep)
363
364 observeGuard()
365 observePlayer()
366
367
368if not walkinCellFinished then
369walkinCellFinished = walkInCell(timestep)
370end
371
372
373if walkinCellFinished and not hangarReached then
374hangarReached = goToHangar(timestep)
375end
376
377
378return hangarReached
379end
Note: See TracBrowser for help on using the repository browser.