moh8888 Posted 2004年10月12日 09:21 Posted 2004年10月12日 09:21 俺有一个问题是M511已搞定,TEST也成功,俺记得那关 应是下雨的,俺看了半天不知是那个程序保留可下雨, 这是M511.SCR原单人图程序,请帮俺看一下,俺一一试太麻烦了... //----------------------------------------------------------------------------------- main: // Mackey crossed this path as well exec global/exploder.scr exec global/ai.scr exec global/loadout.scr maps/m5l1a.scr $leftgate notsolid $rightgate notsolid for (local.i=1;local.i $m5_crew[local.i] notsolid level waittill prespawn exec global/cabinet.scr local.count = 0 while ($ending_spawn) { local.count++ level.ending_spawn[local.count] = waitthread global/spawner.scr::spawner_create $ending_spawn[1] } // println ("local count is " + local.count) // println (" size is " + level.ending_spawn.size) waitthread setupcrew exec global/ambient.scr m5l1a // level.frienddebug = 2 // exec global/weather.scr 3500 (0.333 0.333 0.359) level.farplane = 3500 level.farplanecolor = (0.333 0.333 0.359) exec global/weather.scr exec global/shutter.scr exec global/door_locked.scr // setcvar "g_syncronousClients" "0" // setcvar "cg_rain_density" "0.0" // setcvar "ui_crosshair" "1" // setcvar "r_light_emphasize" "0" setcvar cg_playermodel 0 // soundtrack music/m5l1a.mus exec global/bomber.scr exec global/friendly.scr // waitthread global/friendly.scr::debug // Add's helpful messages level.gammacap = 0.4 level.flags[gotbazooka] = 0 level.flags[initialchat] = 0 level.flags[bazooka] = 0 level.flags[reunion] = 0 level.flags[reunion2] = 0 level.flags[thunder] = 0 level.flags[door] = 0 level.flags[obj3] = 0 cache weapons/colt45.tik cache weapons/springfield.tik cache weapons/m2frag_grenade_sp.tik cache weapons/thompsonsmg.tik level waittill spawn $player stufftext "tmstartloop sound/music/mus_SniperTown_01a.mp3" $fire loopsound fire_med for (local.i=1;local.i $autosave_health[local.i] thread health_save $bazookahit thread bazookahit $leftgate solid $leftgate disconnect_paths $rightgate solid $rightgate disconnect_paths $triggerA1 thread triggerA1prep // $triggerA2 thread triggerA2prep // $triggerB2 thread triggerB2prep // $triggerB3 thread triggerB3prep local.count = 0 if (getcvar(alive) == "1") { level.friendly1 nodamage level.friendly2 nodamage level.friendly3 nodamage level.friendly4 nodamage level.friendly5 nodamage } if (game.skill == "hard") local.kill_snipers = 1 else local.kill_snipers = 4 while (local.count { local.i = randomint ($enemy.size) + 1 if ($enemy[local.i].sniper != NIL) { // $enemy[local.i] delete $enemy[local.i] damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 $enemy[local.i].origin = $enemy[local.i].origin + (0 0 -1000) local.count++ } } level.deadsnipers = 0 for (local.i=1;local.i if ($enemy[local.i].sniper != NIL) { if (game.skill == "hard") $enemy[local.i].noticescale = 40 else $enemy[local.i].noticescale = 60 $enemy[local.i].silent = 1 $enemy[local.i] thread maps/m5l1b.scr::sniperdeath 850 } else $enemy[local.i].silent = 1 if (getcvar(dead) == "1") while ($enemy[1]) $enemy[1] delete // $enemy[local.i] thread global/ai.scr::sniperthink // $player threatbias 25 thread initmap // $enemygenerator thread enemygenerator thread objectives level.friendly1 exec global/disable_ai.scr level.friendly2 exec global/disable_ai.scr level.friendly3 exec global/disable_ai.scr $enemy1 exec global/disable_ai.scr end tempe: println level.farplane println level.farplanecolor wait 1 goto tempe health_save: local.set = self.set while (self) wait 1 exec global/autosave.scr local.set end objectives: waitthread global/objectives.scr::add_objectives 1 2 "Locate the bazooka team." $ending_point waitthread global/objectives.scr::add_objectives 2 2 "Get past the gate into the rest of the town." $leftgate waitthread global/objectives.scr::add_objectives 3 2 "Proceed to the south edge of town." $ending_point waitthread global/objectives.scr::current_objectives 1 clear_objective_pos // set_objective_pos local.ent // Rendezvous with the tank crew" $endarea.origin end initmap: level.friendly4 exec global/disable_ai.scr level.friendly5 exec global/disable_ai.scr level.friendly4 exec global/crouch.scr level.friendly5 exec global/crouch.scr level.friendly4 turnto $ac9 level.friendly5 turnto $t1380 level.friendly4.avoidplayer = 0 level.friendly5.avoidplayer = 0 level.friendly4 threatbias ignoreme level.friendly5 threatbias ignoreme if (getcvar(alive) == "1") { level.friendly1 nodamage level.friendly2 nodamage level.friendly3 nodamage level.friendly4 nodamage level.friendly5 nodamage } level.friendly1.health = 1000 level.friendly2.health = 1000 level.friendly3.health = 1000 level.friendly4.health = 1000 level.friendly5.health = 1000 level.friendly1 accuracy 0 level.friendly2 accuracy 0 level.friendly3 accuracy 0 level.friendly4 accuracy 1 level.friendly5 accuracy 1 // self waittill trigger while (isalive $enemy1) wait 1 level.friendly1 thread friendlyinit level.friendly2 thread friendlyinit level.friendly3 thread friendlyinit level.friendly1 accuracy 1 level.friendly2 accuracy 1 level.friendly3 accuracy 1 level.friendly1.fnum = 1 level.friendly2.fnum = 2 level.friendly3.fnum = 3 level.friendly4.fnum = 4 level.friendly5.fnum = 5 /* level.friendly1.voicetype = "c" level.friendly2.vonicetype = "g" level.friendly3.voicetype = "a" level.friendly4.voicetype = "f" level.friendly5.voicetype = "h" */ //level.friendly1.hearing = 0 //level.friendly2.hearing = 0 //level.friendly3.hearing = 0 //level.friendly4.hearing = 0 //level.friendly5.hearing = 0 level.friendly1 type_attack "turret" // was turret level.friendly2 type_attack "turret" // was turret level.friendly3 type_attack "turret" // was turret level.friendly4 type_attack "turret" // was turret level.friendly5 type_attack "turret" // was turret // waitthread enemygen level.flagsA = 0 // Start the first scene level.flags1 = 0 // Friendlies move to objective 1 level.flags2 = 0 // Friendlies move to objective 2 level.flags3 = 0 // Friendlies move to objective 3 level.flags4 = 0 // Friendlies move to objective 4 level.flags5 = 0 // Friendlies move to objective 5 level.flags6 = 0 // Friendlies move to objective 6 end endlevel: thread global/bomber.scr::bomb 2015 thread global/bomber.scr::bomb 78 $ending_point playsound m5l1a_plane if (level.flags[obj3] == 0) { waitthread global/objectives.scr::add_objectives 3 3 "Proceed to the south edge of town." $ending_point level.flags[obj3] = 1 } wait 3.1 thread global/exploder.scr::explode 51 wait 0.5 if ($player istouching $killplayer) { $player damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 end } if (isalive level.friendly1) if (level.friendly1 istouching $killplayer) level.friendly1 damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 if (isalive level.friendly2) if (level.friendly2 istouching $killplayer) level.friendly2 damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 if (isalive level.friendly3) if (level.friendly3 istouching $killplayer) level.friendly3 damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 if (isalive level.friendly4) if (level.friendly4 istouching $killplayer) level.friendly4 damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 if (isalive level.friendly5) if (level.friendly5 istouching $killplayer) level.friendly5 damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 radiusdamage ( -152 -1104 -8) 700 700 wait 1 println "mission complete" if ((isalive level.friendly1) && (level.friendly1 istouching $friendride)) { // game.friendly1health = level.friendly1.health game.friendly1origin = level.friendly1.origin game.friendly1model = level.friendly1.model game.friendly1angles = level.friendly1.angles game.friendly1headmodel = level.friendly1.headmodel game.friendly1headskin = level.friendly1.headskin println ("KKK model 1 is " + game.friendly1model) } else game.friendly1health = -1 if ((isalive level.friendly2) && (level.friendly2 istouching $friendride)) { game.friendly2origin = level.friendly2.origin game.friendly2model = level.friendly2.model game.friendly2angles = level.friendly2.angles game.friendly2headmodel = level.friendly2.headmodel game.friendly2headskin = level.friendly2.headskin println ("KKK model 2 is " + game.friendly2model) } else game.friendly2health = -1 if ((isalive level.friendly3) && (level.friendly3 istouching $friendride)) { game.friendly3origin = level.friendly3.origin game.friendly3model = level.friendly3.model game.friendly3angles = level.friendly3.angles game.friendly3headmodel = level.friendly3.headmodel game.friendly3headskin = level.friendly3.headskin println ("KKK model 3 is " + game.friendly3model) } else game.friendly3health = -1 if ((isalive level.friendly4) && (level.friendly4 istouching $friendride)) { game.friendly4origin = level.friendly4.origin game.friendly4model = level.friendly4.model game.friendly4angles = level.friendly4.angles game.friendly4headmodel = level.friendly4.headmodel game.friendly4headskin = level.friendly4.headskin println ("KKK model 4 is " + game.friendly4model) } else game.friendly4health = -1 if ((isalive level.friendly5) && (level.friendly5 istouching $friendride)) { game.friendly5origin = level.friendly5.origin game.friendly5model = level.friendly5.model game.friendly5angles = level.friendly5.angles game.friendly5headmodel = level.friendly5.headmodel game.friendly5headskin = level.friendly5.headskin println ("KKK model 5 is " + game.friendly5model) } else game.friendly5health = -1 game.playerorigin = $player.origin game.playerangles = $player.viewangles game.windtime = level.windtime game.shuttertime = level.shuttertime game.raindensity = level.raindensity game.rainvolume = level.rainvolume game.thundertime = level.thundertime exec global/missioncomplete.scr m5l1b 1 end triggerB2prep: self waittill trigger centerprint "Stay back, there's a sniper up there!" end secondwavethread: while ((isalive level.friendly4) && (level.friendly4.thinkstate != "idle")) wait 1 if (level.flags[reunion2] == 1) end if (isalive level.friendly4) { level.friendly4 turnto $player level.friendly4 lookat $player } wait 0.25 while ((isalive level.friendly5) && (level.friendly5.thinkstate != "idle")) wait 1 if (level.flags[reunion2] == 1) end if (isalive level.friendly5) { level.friendly5 turnto $player level.friendly5 lookat $player } while ((isalive level.friendly4) && (level.friendly4.thinkstate != "idle")) wait 1 if (level.flags[reunion2] == 1) end if (isalive level.friendly4) { level.friendly4 say dfr_m5l3_548 level.friendly4 waittill saydone } wait 2 while ((isalive level.friendly5) && (level.friendly5.thinkstate != "idle")) wait 1 if (level.flags[reunion2] == 1) end if (isalive level.friendly5) { level.friendly5 say dfr_m5l3_550 level.friendly5 waittill saydone } if (level.flags[reunion2] == 1) end if ((isalive level.friendly4) && (isalive level.friendly5)) { level.friendly4 lookat level.friendly5 level.friendly5 lookat level.friendly4 wait 2 } if (level.flags[reunion2] == 1) end if (isalive level.friendly4) { level.friendly4 turnto $ac9 level.friendly4 lookat $ac9 } if (level.flags[reunion2] == 1) end if (isalive level.friendly5) { level.friendly5 turnto $t1380 level.friendly5 lookat $t1380 } end secondwave: // level.flags[thunder] = 1 if (level.flags[reunion] == 0) { level.friendly4 exec global/enable_ai.scr level.friendly5 exec global/enable_ai.scr level.friendly4 threatbias 0 level.friendly5 threatbias 0 level.friendly4.health = 120 level.friendly5.health = 120 level.friendly4 hearing 2000 level.friendly4 sight 2000 level.friendly4 maxdist 1500 level.friendly4 mindist 0 level.friendly4 leash 0 level.friendly5 hearing 2000 level.friendly5 sight 2000 level.friendly5 maxdist 1500 level.friendly5 mindist 0 level.friendly5 leash 0 // level.flags[reunion] = 1 } end friendlyinit: self.mins = -40 self.maxs = -10 self leash 0 self mindist 1100 self maxdist 1500 self hearing 2000 self sight 2000 self.friendtype = 0 // self exec global/disable_ai.scr self exec global/friendly.scr::friendlythink self.health = 120 end triggerA1prep: /* level.friendly1 accuracy 100 level.friendly2 accuracy 100 level.friendly3 accuracy 100 level.friendly1.mins = 30 level.friendly1.maxs = 50 level.friendly2.mins = 15 level.friendly2.maxs = 60 level.friendly3.mins = 40 level.friendly3.maxs = 80 */ /* println ("+head " + level.friendly1.headmodel) println ("+head " + level.friendly1.headskin) level.friendly1.mindist = 100 level.friendly1.maxdist = 700 level.friendly2.mindist = 400 level.friendly2.maxdist = 700 level.friendly3.mindist = 100 level.friendly3.maxdist = 300 level.friendly4.mindist = 100 level.friendly4.maxdist = 1700 level.friendly5.mindist = 500 level.friendly5.maxdist = 600 for (local.i=1;local.i { level.friendly[local.i].leash = 5000 level.friendly[local.i].hearing = 5000 level.friendly[local.i].sight = 5000 } level.friendly1 thread global/friendly.scr::friendlythink level.friendly2 thread global/friendly.scr::friendlythink level.friendly3 thread global/friendly.scr::friendlythink */ self waittill trigger println "a1 trigger" level.friendly1 exec global/enable_ai.scr level.friendly2 exec global/enable_ai.scr level.friendly3 exec global/enable_ai.scr $enemy1 exec global/enable_ai.scr thread global/bomber.scr::bomb 500 thread global/bomber.scr::bomb 501 wait 1.5 // $plane2sound playsound "sound/vehicle/plane1.wav" 0 1.5 1024 wait 2 thread global/shutter.scr::shuttrig 1 // $plane1sound playsound "sound/vehicle/plane2.wav" 0 1.5 1024 end /* Voices: voicetype */ triggerA2prep: self waittill trigger level.friendly2.mins = -15 level.friendly2.maxs = 30 level.friendly1.friendtype = 1 level.friendly1.distance = 150 level.friendly1.destination = $player level.friendly3.mins = -25 level.friendly3.maxs = 15 /* level.friendly1.destination = $player level.friendly1.friendtype = 1 level.friendly1.distance = 320 level.friendly2.destination = $player level.friendly2.friendtype = 1 level.friendly2.distance = 320 level.friendly3.destination = $player level.friendly3.friendtype = 1 level.friendly3.distance = 320 level.friendly4.destination = $player level.friendly4.friendtype = 1 level.friendly4.distance = 320 level.friendly5.destination = $player level.friendly5.friendtype = 1 level.friendly5.distance = 320 t: println ">>>>>>>>>>>>>" for (local.i=1;local.i { // if (level.friendly[local.i].destination.targetname == "friendly") // println ("friendly" + level.friendly[local.i].fnum + " goes to " + level.friendly[local.i].destination + "/" + level.friendly[local.i].destination.fnum) // else // println ("friendly" + level.friendly[local.i].fnum + " goes to player") if (level.friendly[local.i].destination.fnum == NIL) println ("friendly" + level.friendly[local.i].fnum + " : Type " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].areapast + " : Destination Node " + level.friendly[local.i].destination.set) else println ("friendly" + level.friendly[local.i].fnum + " : Type " + level.friendly[local.i].friendtype + " : Area " + level.friendly[local.i].area + " : AreaPast " + level.friendly[local.i].areapast + " : Destination Entity " + level.friendly[local.i].destination.fnum) } println " wait 4 goto t */ end scene1: //while (level.flagsA == 0) // wait 0.5 //level.enemy1_1 ai_on wait 2 while (1==1) { if ($player istouching $door1) { local.distance = 500 local.arrived = 0 if (!(isalive level.friendly1) || (vector_length (level.friendly1.origin - $door1explode.origin) local.distance)) local.arrived++ if (!(isalive level.friendly2) || (vector_length (level.friendly2.origin - $door1explode.origin) local.distance)) local.arrived++ if (!(isalive level.friendly3) || (vector_length (level.friendly3.origin - $door1explode.origin) local.distance)) local.arrived++ if (!(isalive level.friendly4) || (vector_length (level.friendly4.origin - $door1explode.origin) local.distance)) local.arrived++ if (!(isalive level.friendly5) || (vector_length (level.friendly5.origin - $door1explode.origin) local.distance)) local.arrived++ println local.arrived if (local.arrived > 4) { thread global/exploder.scr::explode 100 } } wait 0.5 } end enemy1_1prep: level.enemy1_1 = self self ai_off end showorgg: println self.origin wait 0.5 thread showorgg end dialogue1: if (isalive $enemy1) level.friendly1 say "streamed_dfr_scripted_M5L3_01c" // "We're pinned down here! Help us out!" level.friendly1 lookat $player level.friendly2 lookat $player level.friendly3 lookat $player thread initialchat level.friendly1 thread initialchat level.friendly2 thread initialchat level.friendly3 end friendtypething: while (isalive self) { level waittill postthink println wtf print3d (self.origin + (0 0 90)) 2 (self.friendtype + " / " + self.destination) waitframe } end initialchat local.friend: if !(isalive local.friend) end // local.friend thread friendtypething while (((isalive $enemy1) || (local.friend.thinkstate != "idle")) && (isalive local.friend)) wait 1 if !(isalive local.friend) end local.friend.distance = 200 local.friend.friendtype = 1 wait 1 while ((isalive local.friend ) && (local.friend.thinkstate != "idle") && (vector_length (local.friend.origin - $player.origin) > 500)) wait 1 wait 2 while ((isalive local.friend ) && (local.friend.thinkstate != "idle") && (vector_length (local.friend.origin - $player.origin) > 500)) wait 1 if !(isalive local.friend) end local.friend lookat $player local.friend turnto $player if (level.flags[initialchat] == 0) { level.flags[initialchat]++ println ("chat is " + level.flags[initialchat]) local.friend say "dfr_M5L3_536c" // "Thanks. We got cut off from the rest of our squad. They're up ahead somewhere." local.friend waittill saydone level.flags[initialchat]++ wait 1 local.friend turnto NULL while ((isalive local.friend ) && (local.friend.thinkstate != "idle") && (vector_length (local.friend.origin - $player.origin) > 500)) wait 1 if !(isalive local.friend) end local.friend turnto $player local.friend say "dfr_M5L3_537c2" // "About an hour ago a regiment of Germans pushed us back through half the town. Heavy rifle action and some armor. Our squad was blown to wind, we don't know where anyone is now." local.friend waittill saydone wait 1 if (isalive local.friend) local.friend turnto NULL else end local.friend.friendtype = 0 for (local.i=1;local.i { if (level.friendlyused[local.i] == 0) { local.friend.destination = level.friendlynode[local.i] level.friendlyused[local.i] = 1 local.i = level.friendlynodes + 5 } } end } else { if !(isalive local.friend) end local.friend.friendtype = 0 local.friend turnto NULL for (local.i=1;local.i { if (level.friendlyused[local.i] == 0) { local.friend.destination = level.friendlynode[local.i] level.friendlyused[local.i] = 1 local.i = level.friendlynodes + 5 } } } end while (level.flags[initialchat] wait 1 while ((isalive local.friend ) && (local.friend.thinkstate != "idle") && (vector_length (local.friend.origin - $player.origin) > 500)) wait 1 wait 1 while ((isalive local.friend ) && (local.friend.thinkstate != "idle") && (vector_length (local.friend.origin - $player.origin) > 500)) wait 1 if !(isalive local.friend) end if (level.flags[initialchat] == 2) { level.flags[initialchat]++ local.friend say "dfr_M5L3_537c" // "About an hour ago a regiment of Germans pushed us back through half the town. Heavy rifle action and some armor. Our squad was blown to wind, we don't know where anyone is now." local.friend waittill saydone wait 1 } else { if !(isalive local.friend) end local.friend.friendtype = 0 local.friend turnto NULL for (local.i=1;local.i { if (level.friendlyused[local.i] == 0) { local.friend.destination = level.friendlynode[local.i] level.friendlyused[local.i] = 1 local.i = level.friendlynodes + 5 } } } while ((isalive local.friend) && (local.friend.thinkstate == "attack")) wait 1 if !(isalive local.friend) end local.friend say "dfr_M5L3_537c2" // "About an hour ago a regiment of Germans pushed us back through half the town. Heavy rifle action and some armor. Our squad was blown to wind, we don't know where anyone is now." local.friend waittill saydone if !(isalive local.friend) end local.friend.friendtype = 0 local.friend turnto NULL for (local.i=1;local.i { if (level.friendlyused[local.i] == 0) { local.friend.destination = level.friendlynode[local.i] level.friendlyused[local.i] = 1 local.i = level.friendlynodes + 5 } } end get_to_friends local.ent: if !(isalive local.ent) end local.ent.friendtype = -1 local.ent tether local.ent.target local.ent leash 0 local.ent runto local.ent.target local.ent waittill movedone while ((local.ent.thinkstate != "idle") && (isalive local.ent)) wait 1 if (isalive local.ent) { local.ent.ready = 1 local.ent exec global/disable_ai.scr } end go_time local.ent: if !(isalive local.ent) end local.ent.friendtype = 0 local.ent tether $player local.ent leash 512 local.ent exec global/enable_ai.scr end thunder: if (parm.other.targetname != "friendly") end self delete // while !(level.friendly4 cansee level.friendly1) // wait 0.5 local.friendly = parm.other if (isalive level.friendly4) { level.friendly4 lookat level.friendly1 level.friendly4 say "dfr_scripted_M5L3_07f" // "THUNDER!" } wait 0.2 if ((isalive level.friendly4) && (local.friendly)) { local.friendly lookat level.friendly4 level.friendly4 waittill saydone } wait 1.4 if (isalive local.friendly) { local.friendly say dfr_scripted_M5L3_08c // "FLASH!" local.friendly waittill saydone } thread get_to_friends level.friendly1 thread get_to_friends level.friendly2 thread get_to_friends level.friendly3 while (((isalive level.friendly1) && (level.friendly1.ready == NIL)) || ((isalive level.friendly2) && (level.friendly2.ready == NIL)) || ((isalive level.friendly3) && (level.friendly3.ready == NIL))) wait 1 level.flags[reunion2] = 1 if (isalive level.friendly4) level.friendly4 thread friendlyinit if (isalive level.friendly5) level.friendly5 thread friendlyinit thread go_time level.friendly1 thread go_time level.friendly2 thread go_time level.friendly3 if (isalive level.friendly1) { if (isalive level.friendly4) { level.friendly4 lookat level.friendly1 wait 0.25 level.friendly4 say dfr_scripted_M5L3_09f // "Hey Hill, look it's Parish." maps "m dm" level.friendly4 waittill saydone if (isalive level.friendly1) { level.friendly1 say dfr_scripted_M5L3_10c // "I figured you guys were dead" level.friendly1 waittill saydone } wait 2 if (isalive level.friendly5) { level.friendly5 say dfr_scripted_M5L3_11h // "Not yet" level.friendly5 waittill saydone } } } end // while ( if (isalive level.friendly4) { wait 0.25 level.friendly4 lookat local.friendly wait 0.25 level.friendly4 say dfr_scripted_M5L3_09f // "Hey Hill, look it's Parish." maps "m dm" } if (level.flags[reunion] == 0) { level.friendly4 thread friendlyinit level.friendly5 thread friendlyinit } level.flags[reunion] = 2 while ((level.friendly1.thinkstate != "idle") || (level.friendly2.thinkstate != "idle") || (level.friendly3.thinkstate != "idle") || (level.friendly4.thinkstate != "idle") || (level.friendly5.thinkstate != "idle")) wait 0.5 println "diag 05" while (thread idlelifecheck != 0) wait 1 wait 5 println "diag 06" while (thread idlelifecheck != 0) wait 0.5 println "diag 07" level.friendly1 lookat level.friendly5 level.friendly4 lookat level.friendly3 level.friendly2 lookat level.friendly4 level.friendly1 say dfr_scripted_M5L3_10c // "I figured you guys were dead" level.friendly1 waittill saydone while (thread idlelifecheck != 0) wait 0.5 println "diag 08" wait 0.25 level.friendly5 say dfr_scripted_M5L3_11h // "Not yet" level.friendly5 waittill saydone while (thread idlelifecheck != 0) wait 0.5 println "diag 09" wait 0.25 /* level.friendly5 say dfr_scripted_M5L3_11h // "Not yet" level.friendly5 waittill saydone while (thread idlelifecheck != 0) wait 0.5 wait 0.25 */ println "diag 10" level.friendly1 lookat $player level.friendly1 say dfr_scripted_M5L3_12c // "This is loot powell" level.friendly1 waittill saydone while (thread idlelifecheck != 0) wait 0.5 println "diag 11" wait 0.25 level.friendly4 lookat $player level.friendly4 say dfr_scripted_M5L3_13f // "Loot" level.friendly4 waittill saydone // "I figured you guys were dead." // dfr_scripted_M5L3_09f end locked_gate: if (self.timer == NIL) { self.timer = level.time - 5 self.count = 0 } if (level.time > self.timer) { self.timer = level.time + 2 local.self playsound door_metal_locked if (level.flags[gotbazooka] == 0) { // self.count++ if (self.count == 0) iprintlnbold "Locate the missing Bazooka team" else if (self.count == 1) iprintlnbold "Locate the missing Bazooka team" else if (self.count == 2) iprintlnbold "Locate the missing Bazooka team" else if (self.count == 3) iprintlnbold "Scour the area for the missing Bazooka team" else if (self.count == 4) iprintlnbold "The Bazooka team is missing, they must be found" else if (self.count == 5) iprintlnbold "Find the Bazooka team, spare no expense!" else if (self.count == 6) iprintlnbold "You must find them, before it's too late!" else if (self.count == 7) iprintlnbold "You know, Bazooka team. Probably carrying a long, tubular looking thing." else if (self.count == 8) iprintlnbold "Why are you banging away at this gate when you have yet to FIND THE BAZOOKA TEAM?!" else if (self.count == 9) iprintlnbold "STOP POKING ME" } else if (level.flags[door] == 0) iprintlnbold "Find a way through the gate" } end enemygenerator: if (level.totalbaddies == NIL) level.totalbaddies = 0 local.maxspawn = level.totalbaddies + 4 while (1) { while !($player istouching $enemygenerator) wait 1 if (level.totalbaddies exec global/ai.scr::spawn (50 + randomint(3)) wait (randomint (4) + 3) } end idlelifecheck: if !(isalive level.friendly1) end -2 if !(isalive level.friendly2) end -2 if !(isalive level.friendly3) end -2 if !(isalive level.friendly4) end -2 if !(isalive level.friendly5) end -2 if (level.friendly1.thinkstate != "idle") end -1 if (level.friendly2.thinkstate != "idle") end -1 if (level.friendly3.thinkstate != "idle") end -1 if (level.friendly4.thinkstate != "idle") end -1 if (level.friendly5.thinkstate != "idle") end -1 end 0 sneak: self playsound wood_creak end if (self.triggered == NIL) { self.triggered = 1 self playsound wood_creak $sneak walkto $sneakdestination wait 5 self damage $world 1500 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 } end setupcrew: if ($m5_crew == NULL) level.m5_crews = 0 else level.m5_crews = $m5_crew.size if (level.m5_crews > 0) { level.m5_crew = exec global/makearray.scr $m5_crew for (local.i=1;local.i { if (level.m5_crew[local.i].set == NIL) { println ("Warning, m5_crew at " + level.m5_crew[local.i].origin + " has no #set, setting to 1") level.m5_crew[local.i].set = 1 } else println ("Spawned an m5_crew with set " + level.m5_crew[local.i].set) level.m5_crew[local.i] thread m5crew } } if ($m5_ammo == NULL) level.m5_ammos = 0 else level.m5_ammos = $m5_ammo.size if (level.m5_ammos > 0) { level.m5_ammo = exec global/makearray.scr $m5_ammo for (local.i=1;local.i { if (level.m5_ammo[local.i].set == NIL) { println ("Warning, m5_ammo at " + level.m5_ammo[local.i].origin + " has no #set, setting to 1") level.m5_ammo[local.i].set = 1 } level.m5_ammo[local.i] thread m5ammo local.i } } level.totalcrews = 0 level.searchedcrews = 0 if ($m5_trigger == NULL) level.m5_triggers = 0 else level.m5_triggers = $m5_trigger.size if (level.m5_triggers > 0) { level.m5_trigger = exec global/makearray.scr $m5_trigger for (local.i=1;local.i { level.totalcrews++ if (level.m5_trigger[local.i].set == NIL) { println ("Warning, m5_trigger at " + level.m5_trigger[local.i].origin + " has no #set, setting to 1") level.m5_trigger[local.i].set = 1 } level.crewused [level.m5_trigger[local.i].set] = 0 level.m5_trigger[local.i] thread m5trigger } } end m5trigger: self waittill trigger level.searchedcrews++ if (level.searchedcrews == level.totalcrews) { for (local.i=1;local.i { if (level.crewused[level.m5_trigger[local.i].set] == 0) { local.set = level.m5_trigger[local.i].set level.flags[bazooka] = 1 for (local.p=1;local.p { if (level.m5_ammo[local.p].set == local.set) { local.ent = spawn level.m5_ammo[local.p].mdl local.ent.origin = level.m5_ammo[local.p].origin local.ent.angles = level.m5_ammo[local.p].angles if (level.m5_ammo[local.p].target) { // if (level.m5_trigger[local.i] == level.m5_ammo[local.p].target) // { set_objective_pos local.ent level.m5_ammo[local.p].target.parent = local.ent println level.m5_ammo[local.p].target.origin println local.ent.origin println "spawned target thing" // } // else // println "wasnt the same target" } else println "had no target" // level.m5_ammo[local.p] show // level.m5_ammo[local.p] solid } } for (local.p=1;local.p if (level.m5_crew[local.p]) if (level.m5_crew[local.p].set == local.set) level.m5_crew[local.p] show // local.i = level.m5_triggers + 5 } } for (local.p=1;local.p if (level.m5_ammo[local.p].set != local.set) { if (level.m5_ammo[local.p].target) level.m5_ammo[local.p].target delete level.m5_ammo[local.p] delete } } else { level.crewused[self.set] = 1 } end m5crew: /* self.no_idle = 1 self exec global/disable_ai.scr if (randomint(100) > 50) self anim dead_pose2 // death_crotch else self anim dead_pose1 // death_prone self threatbias ignoreme */ self notsolid self hide end m5ammo local.i: /* self hide self notsolid // if (self.target) // self.target notsolid end */ local.ent = spawn script_origin local.ent.mdl = self.model local.ent.origin = self.origin local.ent.angles = self.angles local.ent.set = self.set if (self.target) { local.ent.target = self.target self.target.parent = local.ent self.target.parent = self } println ("ammo of type " + local.ent.mdl + " at " + local.ent.origin + " and angles " + local.ent.angles + " with set " + local.ent.set) // if (self.target) // local.ent.target = self.target level.m5_ammo[local.i] = local.ent level.m5_ammo[local.i].target = self.target self delete end bazookathread: // println "bazookathread!!" if (level.flags[bazooka] != 1) end if (self.parent) { println "didnt get bazooka" end } else println "there was no self parent" self delete // exec global/autosave.scr 1 level.flags[gotbazooka] = 1 waitthread global/objectives.scr::add_objectives 1 3 "Locate the bazooka team." $ending_point waitthread global/objectives.scr::add_objectives 2 2 "Get past the gate into the rest of the town." $leftgate waitthread global/objectives.scr::add_objectives 3 2 "Proceed to the south edge of town." $ending_point waitthread global/objectives.scr::current_objectives 2 wait 60 println "z 01" if (level.flags[door] == 1) end println "z 02" while (level.flags[door] == 0) { for (local.i=1;local.i { if !(isalive level.ending_spawned[local.i]) { println "z 03" level.ending_spawned[local.i] = waitthread global/spawner.scr::spawner_activate level.ending_spawn[local.i] level.ending_spawned[local.i] thread ending_spawn_think } } wait 1 } end escape local.ent local.num: if (isalive local.ent) { local.ent.friendtype = -1 local.ent exec global/enable_ai.scr local.ent threatbias -100 while (isalive local.ent) { local.ent runto $("friendly" + local.num + "destination") local.ent waittill movedone waitframe } } end ending_spawn_think: self exec global/disable_ai.scr while ((level.flags[door] == 0) && (isalive self)) { println "z 04" self runto self.target self waittill movedone if (vector_length (self.origin - self.target.origin) { if (level.flags[door] == 0) { $leftgate time 1 $rightgate time 1.2 $leftgate thread rotatedown 85 $rightgate thread rotateup 85 level.flags[door] = 1 thread escape level.friendly1 1 thread escape level.friendly2 2 thread escape level.friendly3 3 thread escape level.friendly4 4 thread escape level.friendly5 5 } } waitframe } if (isalive self) self exec global/enable_ai.scr while (isalive self) { self runto $player self waittill movedone waitframe } end bazookahit: self.health = 1000 local.health = self.health while (level.flags[door] == 0) { self waittill damage if ((local.health - self.health) == 110) { self delete if (level.flags[door] == 0) { $leftgate time 1 $rightgate time 1.2 $leftgate thread rotateup 85 $rightgate thread rotatedown 85 level.flags[door] = 1 thread escape level.friendly1 1 thread escape level.friendly2 2 thread escape level.friendly3 3 thread escape level.friendly4 4 thread escape level.friendly5 5 } } self.health = 1000 local.health = self.health } println ("parm other is " + parm.other) end throughgate: /* local.ent = spawn script_origin if ($ending_point == NULL) local.ent.origin = ( -352 -1056 136) else { local.ent.origin = $ending_point.origin println "ENDING POINT" } */ // waitthread global/objectives.scr::add_objectives 1 3 "Locate the bazooka team." $ending_point waitthread global/objectives.scr::add_objectives 2 3 "Get past the gate into the rest of the town." $leftgate waitthread global/objectives.scr::add_objectives 3 2 "Proceed to the south edge of town." $ending_point waitthread global/objectives.scr::current_objectives 3 wait 1 while (vector_length ($player.origin - $ending_point.origin) > 50) wait 0.5 if (level.flags[obj3] == 0) { waitthread global/objectives.scr::add_objectives 3 3 "Proceed to the south edge of town." $ending_point level.flags[obj3] = 1 } // local.ent delete end burn: if (parm.other == $player) parm.other damage $world 1 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0 end bombers10-11: thread global/bomber.scr::bomb 510 wait 0.5 thread global/bomber.scr::bomb 511 end bombers14-15: thread global/bomber.scr::bomb 515 wait 0.5 thread global/bomber.scr::bomb 514 end rotatedown local.amount: self rotateydown local.amount self waitmove self connect_paths end rotateup local.amount: self rotateyup local.amount self waitmove self connect_paths end // #set 500 planes fly by /* Set 50 enemy generator */ 谢谢!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new account登录
Already have an account? Sign in here.
现在登录