Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/trunk/scripts/secondguard.lua @ 4340

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

merged the data back from scripting

File size: 11.8 KB
RevLine 
[4202]1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("secondguardtrigger")
4trigger:setScript("secondguard.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
8
[4080]9-- Get objects from orxonox
10thisscript:addObject("GenericNPC", "secondguard")
11thisscript:addObject("GenericNPC", "guard")
12thisscript:addObject("FPSPlayer", "Player")
13thisscript:addObject("GenericNPC", "prisoner")
14
[3945]15-- Global Variables
16allOk = true
[3951]17cellReached = false
[3945]18guidePositionReached = false
19prisonerReachedLock = false
20hangarReached = false
[4080]21guardStopped = false
[4106]22letsgo = false
[3945]23
[4080]24height = 90
[3946]25
26-- Returns the distance between (x1,x2,x3) and (y1,y2,y3)
27function dist( x1,x2,x3, y1,y2,y3 )
28return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
29end
30
31
[3951]32function observeGuard()
33guardX = guard:getAbsCoorX()
34guardY = guard:getAbsCoorY()
35guardZ = guard:getAbsCoorZ()
36
[3965]37if dist( guardX,guardY,guardZ,35.48, 29, 191.28 ) < 30 then
[3945]38allOk = false
39end
40
[3951]41end
42
[4080]43function observePlayer()
44
45guardX = guard:getAbsCoorX()
46guardY = guard:getAbsCoorY()
47guardZ = guard:getAbsCoorZ()
48
49playerX = Player:getAbsCoorX()
50playerY = Player:getAbsCoorY()
51playerZ = Player:getAbsCoorZ()
52
53distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
54
55if distance > 250 and hangarProgrammed and not guardStopped then
56 secondguard:stop()
57 guardStopped = true
58end
59
60if distance < 250 and hangarProgrammed and guardStopped then
61 secondguard:resume()
62 guardStopped = false
63end
64
[4161]65if dist( playerX,playerY,playerZ,161.76,49,408.87 ) < 50  then
[4106]66letsgo = true
[4080]67end
68
[4106]69end
[4080]70
71
[4106]72
[3946]73function observePrisoner()
[3945]74
[3962]75prisonerX = prisoner:getAbsCoorX()
76prisonerY = prisoner:getAbsCoorY()
77prisonerZ = prisoner:getAbsCoorZ()
[3946]78
[3964]79if dist( prisonerX,prisonerY,prisonerZ,162.757919,49,363.489349 ) < 60 then
[3965]80--io.write("Prisonner reached lock \n")
81prisonerReachedLock = true
[3945]82end
83
[3951]84end
[3945]85
[3954]86cellProgrammed = false
[3951]87function goToCell(timestep)
88
[3954]89if not cellProgrammed then
[3964]90secondguard:walkTo( 442.173767, height, 176.429855)
91secondguard:walkTo( 442.173767, height, 176.429855)
92secondguard:walkTo( 436.727753, height, 188.191757)
93secondguard:walkTo( 432.311584, height, 198.882462)
94secondguard:walkTo( 426.079590, height, 213.968994)
95secondguard:walkTo( 420.553986, height, 226.714996)
96secondguard:walkTo( 412.681915, height, 235.053696)
97secondguard:walkTo( 398.758545, height, 241.846924)
98secondguard:walkTo( 384.690735, height, 242.851395)
99secondguard:walkTo( 348.930481, height, 242.394958)
100secondguard:walkTo( 336.467926, height, 241.985764)
101secondguard:walkTo( 324.042999, height, 241.577774)
102secondguard:walkTo( 303.851410, height, 240.914841)
103secondguard:walkTo( 293.013977, height, 240.559006)
104secondguard:walkTo( 276.207611, height, 240.007233)
105secondguard:walkTo( 261.475800, height, 239.523544)
106secondguard:walkTo( 239.185089, height, 238.791687)
107secondguard:walkTo( 226.655655, height, 238.491974)
108secondguard:walkTo( 211.996979, height, 238.851044)
109secondguard:walkTo( 192.956741, height, 239.859207)
110secondguard:walkTo( 178.496552, height, 241.852539)
111secondguard:walkTo( 160.421860, height, 244.009827)
112secondguard:walkTo( 145.371857, height, 244.946075)
113secondguard:walkTo( 129.918198, height, 245.307037)
114secondguard:walkTo( 113.065468, height, 245.108231)
115secondguard:walkTo( 99.159073, height, 244.695694)
116secondguard:walkTo( 82.069923, height, 244.188766)
117secondguard:walkTo( 65.880531, height, 243.708527)
118secondguard:walkTo( 48.133881, height, 243.182114)
119secondguard:walkTo( 34.706280, height, 242.783813)
120secondguard:walkTo( 20.682344, height, 242.367783)
121secondguard:walkTo( 5.419819, height, 241.915070)
122secondguard:walkTo( -10.556346, height, 241.058746)
123secondguard:walkTo( -24.159513, height, 240.127090)
124secondguard:walkTo( -33.819145, height, 239.995453)
125secondguard:walkTo( -45.414162, height, 240.373322)
126secondguard:walkTo( -60.228550, height, 240.856079)
127secondguard:walkTo( -73.269897, height, 241.260895)
128secondguard:walkTo( -86.128647, height, 240.457886)
129secondguard:walkTo( -100.443581, height, 236.485718)
130secondguard:walkTo( -112.346939, height, 233.967209)
131secondguard:walkTo( -127.331635, height, 227.615112)
132secondguard:walkTo( -135.153656, height, 215.476883)
133secondguard:walkTo( -131.529984, height, 202.931015)
134secondguard:walkTo( -122.671799, height, 193.644669)
135secondguard:walkTo( -113.823517, height, 183.986633)
136secondguard:walkTo( -104.089592, height, 170.659729)
[3954]137cellProgrammed = true
138end
139
140if secondguard:finalGoalReached() then
141return true
142end
143
[3945]144return false
145end
146
[3954]147guideProgrammed = false
[3945]148function goToGuidePosition(timestep)
149
[3954]150if not guideProgrammed then
[3964]151secondguard:walkTo( -100.266739, height, 171.345627)
152secondguard:walkTo( -91.152046, height, 171.639709)
153secondguard:walkTo( -85.456375, height, 171.823486)
154secondguard:walkTo( -74.048538, height, 172.191589)
155secondguard:walkTo( -53.574173, height, 172.852219)
156secondguard:walkTo( -43.275124, height, 173.184540)
157secondguard:walkTo( -35.155544, height, 173.446518)
158secondguard:walkTo( -31.645050, height, 173.559784)
159secondguard:walkTo( -23.426588, height, 173.824966)
160secondguard:walkTo( -10.576803, height, 174.239578)
161secondguard:walkTo( -2.389911, height, 174.503754)
162secondguard:walkTo( 6.950986, height, 174.805176)
163secondguard:walkTo( 16.313608, height, 175.161179)
164secondguard:walkTo( 23.271458, height, 175.547226)
165secondguard:walkTo( 31.248058, height, 176.199890)
166secondguard:walkTo( 43.694778, height, 177.753479)
167secondguard:walkTo( 50.441612, height, 178.595612)
168secondguard:walkTo( 71.374535, height, 181.208389)
169secondguard:walkTo( 82.251022, height, 181.855988)
170secondguard:walkTo( 91.975792, height, 182.434998)
171secondguard:walkTo( 101.695015, height, 183.013672)
172secondguard:walkTo( 110.377205, height, 183.530609)
173secondguard:walkTo( 122.299400, height, 184.240448)
174secondguard:walkTo( 129.848495, height, 184.689911)
175secondguard:walkTo( 141.687805, height, 185.394821)
176secondguard:walkTo( 150.166702, height, 186.776016)
177secondguard:walkTo( 155.342255, height, 189.285080)
178secondguard:walkTo( 162.508133, height, 192.849976)
179secondguard:walkTo( 171.747696, height, 197.075134)
180secondguard:walkTo( 177.846390, height, 199.864029)
181secondguard:walkTo( 182.707596, height, 204.381516)
182secondguard:walkTo( 182.707596, height, 204.381516)
183secondguard:walkTo( 187.317139, height, 211.966385)
184secondguard:walkTo( 193.191528, height, 221.632446)
185secondguard:walkTo( 197.856018, height, 229.307724)
186secondguard:walkTo( 198.350906, height, 232.634857)
187secondguard:walkTo( 198.427155, height, 243.656113)
[3954]188
189guideProgrammed = true
190end
191
192if secondguard:finalGoalReached() then
193return true
194end
195
[3945]196return false
197end
198
[3954]199hangarProgrammed = false
[3945]200function goToHangar(timestep)
201
[4106]202if not hangarProgrammed and prisonerReachedLock and letsgo then
[4080]203secondguard:walkTo( 198.984589, height, 243.144440)
204secondguard:walkTo( 188.270493, height, 242.143143)
205secondguard:walkTo( 185.177658, height, 241.854080)
206secondguard:walkTo( 166.990906, height, 249.598251)
207secondguard:walkTo( 160.702652, height, 251.610641)
208secondguard:walkTo( 157.542480, height, 260.691101)
209secondguard:walkTo( 158.720688, height, 285.526489)
210secondguard:walkTo( 158.819519, height, 295.229065)
211secondguard:walkTo( 158.941727, height, 307.225800)
212secondguard:walkTo( 159.095718, height, 322.344818)
213secondguard:walkTo( 159.248337, height, 332.535400)
214secondguard:walkTo( 159.600082, height, 343.361420)
215secondguard:walkTo( 160.006805, height, 355.880432)
216secondguard:walkTo( 161.582108, height, 441.998688)
217secondguard:walkTo( 161.650970, height, 447.407074)
218secondguard:walkTo( 161.755173, height, 455.592651)
219secondguard:walkTo( 162.311462, height, 471.569611)
220secondguard:walkTo( 164.966690, height, 482.971222)
221secondguard:walkTo( 168.578796, height, 492.256317)
222secondguard:walkTo( 204.727936, height, 507.833527)
223secondguard:walkTo( 212.031540, height, 508.235596)
224secondguard:walkTo( 226.355484, height, 509.024170)
225secondguard:walkTo( 441.672638, height, 512.266846)
226secondguard:walkTo( 509.640350, height, 512.965515)
227secondguard:walkTo( 576.208435, height, 512.614258)
228secondguard:walkTo( 638.251770, height, 512.247986)
229secondguard:walkTo( 667.897888, height, 512.072693)
230secondguard:walkTo( 683.874451, height, 511.978363)
231secondguard:walkTo( 693.377319, height, 511.922302)
232secondguard:walkTo( 700.632446, height, 511.837494)
233secondguard:walkTo( 703.564148, height, 511.713562)
234secondguard:walkTo( 710.958313, height, 510.896362)
235secondguard:walkTo( 724.824585, height, 502.160461)
236secondguard:walkTo( 728.256226, height, 497.817627)
237secondguard:walkTo( 734.361206, height, 484.795380)
238secondguard:walkTo( 737.112488, height, 478.616089)
239secondguard:walkTo( 740.696350, height, 470.796539)
240secondguard:walkTo( 743.915833, height, 462.804688)
241secondguard:walkTo( 750.241150, height, 438.829529)
242secondguard:walkTo( 751.186340, height, 432.598022)
243secondguard:walkTo( 751.977051, height, 427.385315)
244secondguard:walkTo( 756.962708, height, 379.979919)
245secondguard:walkTo( 759.845581, height, 337.377167)
246secondguard:walkTo( 762.304626, height, 288.355713)
247secondguard:walkTo( 764.125244, height, 248.893723)
248secondguard:walkTo( 766.738892, height, 164.214142)
249secondguard:walkTo( 767.405884, height, 116.896973)
250secondguard:walkTo( 767.289917, height, 68.270233)
251secondguard:walkTo( 767.680176, height, 31.480713)
252secondguard:walkTo( 767.315247, height, -46.728809)
253secondguard:walkTo( 767.634888, height, -85.314407)
254secondguard:walkTo( 767.905823, height, -112.270973)
255secondguard:walkTo( 767.716003, height, -134.956741)
256secondguard:walkTo( 765.699829, height, -159.042664)
257secondguard:walkTo( 762.026978, height, -178.211639)
258secondguard:walkTo( 751.512512, height, -219.904297)
259secondguard:walkTo( 735.898499, height, -277.525970)
260secondguard:walkTo( 722.206055, height, -329.591888)
261secondguard:walkTo( 709.354858, height, -383.514618)
262secondguard:walkTo( 697.115295, height, -434.870483)
263secondguard:walkTo( 685.142822, height, -485.212402)
264secondguard:walkTo( 681.659058, height, -532.429504)
265secondguard:walkTo( 679.999634, height, -581.595886)
266secondguard:walkTo( 678.678101, height, -632.772156)
267secondguard:walkTo( 678.162842, height, -682.753113)
268secondguard:walkTo( 678.398376, height, -731.779053)
269secondguard:walkTo( 679.124756, height, -782.160034)
270secondguard:walkTo( 680.050781, height, -831.132141)
271secondguard:walkTo( 678.395569, height, -877.242920)
272secondguard:walkTo( 676.737793, height, -919.301819)
273secondguard:walkTo( 676.191956, height, -962.443909)
274secondguard:walkTo( 676.493774, height, -994.707703)
275secondguard:walkTo( 677.446716, height, -1018.486389)
276secondguard:walkTo( 681.286865, height, -1042.623901)
277secondguard:walkTo( 685.302917, height, -1060.096436)
278secondguard:walkTo( 692.212036, height, -1083.229370)
279secondguard:walkTo( 698.947937, height, -1103.496826)
280secondguard:walkTo( 710.392944, height, -1137.932617)
281secondguard:walkTo( 719.685608, height, -1164.374634)
282secondguard:walkTo( 728.124512, height, -1186.812622)
283secondguard:walkTo( 746.270569, height, -1235.059082)
284secondguard:walkTo( 754.436340, height, -1259.201660)
285secondguard:walkTo( 760.588013, height, -1286.830933)
286secondguard:walkTo( 765.026733, height, -1329.641113)
287secondguard:walkTo( 765.849609, height, -1362.461670)
288secondguard:walkTo( 765.842346, height, -1398.791016)
289secondguard:walkTo( 765.749695, height, -1425.336304)
290secondguard:walkTo( 765.650024, height, -1454.007935)
[3954]291hangarProgrammed = true
292end
293
[3965]294guardX = secondguard:getAbsCoorX()
295guardY = secondguard:getAbsCoorY()
296guardZ = secondguard:getAbsCoorZ()
297
298if dist( guardX,guardY,guardZ, 2.861493, 29, -1705.131958) < 60 then
[3954]299return true
300end
301
[3945]302return false
[3954]303
[3945]304end
305
[3965]306time = 2
[3945]307function tick(timestep)
[3946]308--io.write("Secondguard called \n")
309 
310observePrisoner()
[3964]311observeGuard()
[4080]312observePlayer()
[3945]313
314if not allOk then
[3951]315cellReached = goToCell(timestep)
[3945]316end
317
[3965]318--do talking
319if cellReached then
320time = time - timestep
321end
322
323
324if time < 0 then
325
[3951]326if cellReached and not guidePositionReached then
[3945]327guidePositionReached = goToGuidePosition(timestep)
328end
329
[3964]330if guidePositionReached and not hangarReached then
[3945]331hangarReached = goToHangar(timestep)
332end
333
334if hangarReached then
335return true
336end
337
[3965]338
339end
340
341
[3945]342return false
343end
Note: See TracBrowser for help on using the repository browser.