Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/trunk/scripts/guard.lua @ 4270

Last change on this file since 4270 was 4202, checked in by bensch, 18 years ago

merged the data back from scripting

File size: 10.9 KB
RevLine 
[4202]1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("guardtrigger")
4trigger:setScript("guard.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
[4080]8-- Get objects from orxonox
9thisscript:addObject("GenericNPC","guard")
10thisscript:addObject("FPSPlayer", "Player")
11
[3945]12-- Global Variables
[3947]13walkingRouteOne = true   -- True if thestranger is walking route one
[3945]14exitPositionReached = false
15playerInLock = false
16hangarReached = false
[4080]17guardStopped = false
[4151]18gotoSpaceship = false
[3945]19
[4080]20height = 34
[3962]21
[3946]22-- Returns the distance between (x1,x2,x3) and (y1,y2,y3)
23function dist( x1,x2,x3, y1,y2,y3 )
24return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
25end
26
[3945]27
[3946]28function observePlayer()
[4080]29
30guardX = guard:getAbsCoorX()
31guardY = guard:getAbsCoorY()
32guardZ = guard:getAbsCoorZ()
33
[3946]34playerX = Player:getAbsCoorX()
35playerY = Player:getAbsCoorY()
36playerZ = Player:getAbsCoorZ()
37
[4080]38
39distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
40
[4151]41if distance > 250 and hangarRouteProgrammed and not guardStopped and not gotoSpaceship then
[4080]42 guard:stop()
43 guardStopped = true
44end
45
[4151]46if distance < 250 and hangarRouteProgrammed and guardStopped and not gotoSpaceship then
[4080]47 guard:resume()
48 guardStopped = false
49end
50
[4161]51if dist( playerX,playerY,playerZ,167.361526,29,483.163818 ) < 150 then
[3947]52playerInLock = true
[3945]53end
54
[4151]55if dist( guardX,guardY,guardZ,772.325012, height, -1500.850708) < 200 then
56gotoSpaceship = true
[3947]57end
58
[4151]59
60end
61
[3947]62routeOneProgrammed = false
[3945]63function walkRouteOne(timestep)
[3947]64if not routeOneProgrammed then
[3964]65guard:walkTo( 266.396362, height, 241.398544)
66guard:walkTo( 254.577255, height, 241.159897)
67guard:walkTo( 221.120651, height, 240.484360)
68guard:walkTo( 187.732651, height, 239.810196)
69guard:walkTo( 165.661865, height, 239.364563)
70guard:walkTo( 148.642044, height, 239.020889)
71guard:walkTo( 128.012802, height, 238.604340)
72guard:walkTo( 65.664688, height, 237.345383)
73guard:walkTo( 30.099592, height, 236.627243)
74guard:walkTo( -14.031926, height, 236.483414)
75guard:walkTo( -52.224205, height, 241.776978)
76guard:walkTo( -83.528168, height, 245.757629)
77guard:walkTo( -98.730980, height, 247.394043)
78guard:walkTo( -111.666504, height, 246.585648)
79guard:walkTo( -111.666504, height, 246.585648)
80guard:walkTo( -114.805542, height, 246.144440)
81guard:walkTo( -119.267967, height, 245.360168)
82guard:walkTo( -138.284515, height, 239.281021)
83guard:walkTo( -146.166840, height, 234.512054)
84guard:walkTo( -157.210480, height, 222.620941)
85guard:walkTo( -158.519867, height, 219.674301)
86guard:walkTo( -158.519867, height, 219.674301)
87guard:walkTo( -158.478958, height, 213.490570)
88guard:walkTo( -158.478958, height, 213.490570)
89guard:walkTo( -155.965332, height, 210.303101)
90guard:walkTo( -150.804489, height, 203.959869)
91guard:walkTo( -148.853012, height, 201.561295)
92guard:walkTo( -145.451157, height, 197.554382)
93guard:walkTo( -143.694107, height, 196.373535)
94guard:walkTo( -139.281479, height, 193.407990)
95guard:walkTo( -137.526047, height, 192.228226)
96guard:walkTo( -103.046753, height, 182.510071)
[3965]97guard:runTo( -14.992087, height, 181.910767)
98guard:runTo( 46.347664, height, 181.493317)
99guard:runTo( 86.343376, height, 181.221130)
100guard:runTo( 124.465179, height, 194.251617)
101guard:runTo( 136.548996, height, 219.682953)
102guard:runTo( 145.162140, height, 244.268982)
103guard:runTo( 149.328720, height, 256.993256)
104guard:runTo( 162.649582, height, 268.181732)
[3951]105
[3947]106routeOneProgrammed = true
107end
[3945]108
[3951]109if guard:finalGoalReached() then
110return false
[3945]111end
112
[3951]113return true
114end
115
116
117exitRouteProgrammed = false
[3945]118function goToExitPosition(timestep)
119
[3951]120if not exitRouteProgrammed then
[4080]121--guard:runTo( 162.096558, height, 274.944366)
122--guard:runTo( 161.519516, height, 286.673370)
123--guard:runTo( 161.098618, height, 295.228699)
124--guard:runTo( 160.568466, height, 306.004486)
125guard:runTo( 160.151169, height, 314.486572)
126guard:runTo( 159.416641, height, 324.925232)
[3962]127guard:walkTo( 158.700073, height, 335.108154)
128guard:walkTo( 157.943298, height, 345.862610)
129guard:walkTo( 157.418381, height, 356.131256)
130guard:walkTo( 156.908035, height, 366.115417)
131guard:walkTo( 156.940308, height, 377.467712)
132guard:walkTo( 156.965408, height, 386.287933)
133guard:walkTo( 156.924698, height, 394.296417)
134guard:walkTo( 156.816116, height, 401.564911)
135guard:walkTo( 156.147583, height, 446.314850)
136guard:walkTo( 155.145660, height, 515.473877)
137guard:walkTo( 148.450058, height, 524.572571)
138guard:walkTo( 135.599609, height, 533.407166)
139guard:walkTo( 119.772217, height, 539.609192)
140guard:walkTo( 108.926720, height, 537.174927)
141guard:walkTo( 100.885788, height, 524.737793)
142guard:walkTo( 99.870834, height, 512.540100)
143guard:walkTo( 108.219215, height, 502.064178)
144
[3951]145exitRouteProgrammed = true
146end
147
148if guard:finalGoalReached() and playerInLock then
149return true
150end
151
[3945]152return false
153end
154
155
[3951]156hangarRouteProgrammed = false
[3945]157function goToHangar(timestep)
158
[3964]159if not hangarRouteProgrammed and playerInLock then
[4080]160
161guard:walkTo( 133.354797, height, 504.669128)
162guard:walkTo( 147.490158, height, 507.034393)
163guard:walkTo( 157.640610, height, 508.901001)
164guard:walkTo( 168.830688, height, 510.958710)
165guard:walkTo( 185.020630, height, 512.736206)
166guard:walkTo( 201.232452, height, 513.413818)
167guard:walkTo( 265.666138, height, 513.736023)
168guard:walkTo( 362.377960, height, 515.575806)
169guard:walkTo( 426.176392, height, 515.666748)
170guard:walkTo( 500.031677, height, 515.197266)
171guard:walkTo( 551.294250, height, 514.430237)
172guard:walkTo( 604.974731, height, 515.106323)
173guard:walkTo( 651.117920, height, 516.026550)
174guard:walkTo( 664.581909, height, 516.295227)
175guard:walkTo( 683.122803, height, 516.665100)
176guard:walkTo( 694.547485, height, 516.892944)
177guard:walkTo( 704.408569, height, 517.089539)
178guard:walkTo( 714.413208, height, 517.289185)
179guard:walkTo( 739.045288, height, 515.581970)
180guard:walkTo( 763.904541, height, 497.281738)
181guard:walkTo( 767.672791, height, 481.974457)
182guard:walkTo( 769.436951, height, 468.704559)
183guard:walkTo( 770.490967, height, 453.283386)
184guard:walkTo( 771.185303, height, 435.960114)
185guard:walkTo( 771.952820, height, 379.502045)
186guard:walkTo( 771.938293, height, 310.049042)
187guard:walkTo( 772.514526, height, 231.579498)
188guard:walkTo( 773.601074, height, 135.177933)
189guard:walkTo( 773.790771, height, 50.675163)
190guard:walkTo( 773.316162, height, -36.961666)
191guard:walkTo( 772.885986, height, -116.407944)
192guard:walkTo( 772.841309, height, -124.651726)
193guard:walkTo( 772.491333, height, -137.742279)
194guard:walkTo( 770.644775, height, -153.245926)
195guard:walkTo( 768.774414, height, -163.767120)
196guard:walkTo( 766.336426, height, -174.224228)
197guard:walkTo( 762.794128, height, -187.312271)
198guard:walkTo( 733.548279, height, -274.004791)
199guard:walkTo( 713.113647, height, -329.657959)
200guard:walkTo( 694.801819, height, -379.530243)
201guard:walkTo( 681.276062, height, -422.047028)
202guard:walkTo( 672.579102, height, -458.540985)
203guard:walkTo( 670.843384, height, -465.824615)
204guard:walkTo( 669.948364, height, -480.910645)
205guard:walkTo( 669.361511, height, -493.648529)
206guard:walkTo( 669.686829, height, -501.598572)
207guard:walkTo( 674.055664, height, -582.077637)
208guard:walkTo( 676.046387, height, -630.403809)
209guard:walkTo( 677.839050, height, -674.209534)
210guard:walkTo( 680.754944, height, -765.965515)
211guard:walkTo( 681.034180, height, -803.351135)
212guard:walkTo( 680.088806, height, -844.069031)
213guard:walkTo( 677.801514, height, -899.952148)
214guard:walkTo( 675.205627, height, -950.496460)
215guard:walkTo( 672.847778, height, -996.413574)
216guard:walkTo( 676.204041, height, -1043.556274)
217guard:walkTo( 691.304382, height, -1088.596558)
218guard:walkTo( 705.101318, height, -1128.320312)
219guard:walkTo( 720.476013, height, -1164.364380)
220guard:walkTo( 729.216797, height, -1183.948364)
221guard:walkTo( 740.145203, height, -1212.598267)
222guard:walkTo( 746.547363, height, -1238.340576)
223guard:walkTo( 756.866211, height, -1280.605347)
224guard:walkTo( 763.380554, height, -1314.622314)
225guard:walkTo( 768.731506, height, -1347.977539)
226guard:walkTo( 772.446655, height, -1381.641479)
227guard:walkTo( 772.721069, height, -1421.184937)
228guard:walkTo( 772.414734, height, -1457.349121)
229guard:walkTo( 772.803284, height, -1489.560913)
230
[4100]231guard:walkTo( 772.325012, height, -1500.850708)
232guard:walkTo( 772.325012, height, -1500.850708)
233guard:walkTo( 772.487854, height, -1508.028809)
234guard:walkTo( 774.761047, height, -1519.442139)
235guard:walkTo( 778.809204, height, -1525.292847)
236guard:walkTo( 783.482666, height, -1530.000610)
237guard:walkTo( 790.163269, height, -1536.350708)
238guard:walkTo( 797.713745, height, -1542.968018)
239guard:walkTo( 804.024475, height, -1548.390503)
240guard:walkTo( 810.316406, height, -1553.796875)
241guard:walkTo( 819.849731, height, -1561.323242)
242guard:walkTo( 826.676819, height, -1566.627197)
243guard:walkTo( 833.950928, height, -1572.278442)
244guard:walkTo( 840.587036, height, -1577.434082)
245guard:walkTo( 847.261230, height, -1582.458252)
246guard:walkTo( 852.104797, height, -1586.104370)
247guard:walkTo( 857.504944, height, -1590.169556)
248guard:walkTo( 861.696411, height, -1593.324829)
249guard:walkTo( 867.690613, height, -1597.837036)
250guard:walkTo( 874.808105, height, -1604.437378)
251guard:walkTo( 878.302429, height, -1608.333252)
252guard:walkTo( 884.001892, height, -1614.366211)
253guard:walkTo( 890.699646, height, -1621.398315)
254guard:walkTo( 895.391052, height, -1626.179688)
255guard:walkTo( 902.171509, height, -1633.090332)
256guard:walkTo( 906.807495, height, -1637.957764)
257guard:walkTo( 910.438599, height, -1641.770142)
258guard:walkTo( 915.626160, height, -1647.216797)
259guard:walkTo( 921.844727, height, -1653.745972)
260guard:walkTo( 928.565125, height, -1660.801636)
261guard:walkTo( 933.742004, height, -1666.236694)
262guard:walkTo( 938.956543, height, -1671.711182)
263guard:walkTo( 942.160706, height, -1675.745972)
264guard:walkTo( 947.547302, height, -1681.952881)
265guard:walkTo( 951.732483, height, -1687.077759)
266guard:walkTo( 957.284851, height, -1693.876709)
267guard:walkTo( 962.786438, height, -1700.614990)
268guard:walkTo( 966.177246, height, -1705.151245)
269guard:walkTo( 970.221619, height, -1710.886230)
270guard:walkTo( 974.503113, height, -1717.243896)
271guard:walkTo( 977.332153, height, -1722.064087)
272guard:walkTo( 981.496887, height, -1729.391357)
273guard:walkTo( 986.814148, height, -1738.394165)
274guard:walkTo( 991.428650, height, -1745.393799)
275guard:walkTo( 998.958069, height, -1755.184326)
276guard:walkTo( 1003.995300, height, -1761.734131)
277guard:walkTo( 1009.006226, height, -1768.234375)
278guard:walkTo( 1013.550842, height, -1773.405029)
279guard:walkTo( 1019.371277, height, -1778.674072)
280guard:walkTo( 1024.703491, height, -1782.708618)
281guard:walkTo( 1030.605469, height, -1787.173950)
282guard:walkTo( 1036.072876, height, -1790.982056)
283guard:walkTo( 1043.746094, height, -1795.485474)
284guard:walkTo( 1050.884644, height, -1799.663574)
[3951]285hangarRouteProgrammed  = true
286end
287
[4106]288if guard:finalGoalReached() and not guardStopped then
[3951]289return true
290end
291
[3945]292return false
293end
294
295
[4151]296
[3945]297function tick(timestep)
[3946]298--io.write("Guard called \n")
299observePlayer()
[3945]300
[4151]301
[3945]302if walkingRouteOne then
[3951]303walkingRouteOne = walkRouteOne(timestep)
[3945]304end
305
306if not walkingRouteOne and not exitPositionReached then
307exitPositionReached = goToExitPosition(timestep)
308end
309
[3964]310if not hangarReached and exitPositionReached then
[3945]311hangarReached = goToHangar(timestep)
312end
313
[4100]314return hangarReached
[3945]315end
316 
Note: See TracBrowser for help on using the repository browser.