Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 4199 was 4199, checked in by snellen, 19 years ago

various updated

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