Jump to content

WhosOnFirst

Member
  • Posts

    516
  • Joined

  • Last visited

Everything posted by WhosOnFirst

  1. You dont fail at all my friend, the image Carbon has up is not the best quality. I appreciate your taking the time to have a look. Thank you
  2. Does it really, and why does it say HYENA? Maybe you should look again and be willing to quest ion what it is you think you see.
  3. Possibly, though I think they are mentioned as seperate entities at one point in the code. What I dont think people have realised is that these files are not from Ascension, they are from "5" / Pentagon. The first file I posted clearly mentions Zombie_Cosmodrome. So pretty much goes to show that Treyarch have been working on this zombie map longer than they would have you believe. Infact they must have been working on it before the game was even sent to the factory for the disks to be printed.
  4. But there was no saw blade trap in Der Reise, other than a single texture in the PC files and a feeble representation on the pin boards. Is your keyboard broken? ... ... ... ... ...
  5. http://www.youtube.com/watch?v=8ZUt6n_UY08 Enjoy. Don't do it online. Don't glitch online either. Yknow back in the W@W days Treyarch took a completely differant line to glithes and hacks than they do now. 3 gun glitch, that was never patched. Textures such as Tunguska that could only be found by glitching out of the map. Tank even has a line "Im allways into Juggernog" Let the guy do what he wants, he wont be doing it online if he doesnt want to get banned.
  6. Ya thats been noticed already.. interesting but inconclusive. We can also spell : Samantha, and Illuminati Lol can you actually spell Illuminati in the game? Does it really say HYENA on the chalkboards or are you all presuming it says HYENA.
  7. I voted "only own Black Ops", I am slowly loosing interest in FPS games alltogether, recently purchased "Perfect Dark" to try and remember what it was that I originaly loved about FPS and have yet to play it past the first level. I think from now on any FPS game I purchase will be based on SP campaing rather than MP. I still play Black Ops but mostly I am motivated to play out of boredom and a lack of other games to play. Portal 2 will be my next game purchase and any additional content for IloMilo Might pick up FO New Vegas if they do a GOTY Edition with all the map packs included.
  8. Is it possible the rockets in the load screen are A4-V2 rockets, German WW2 era rockets, at least that is what they look like to me. I like your idea of a teleporter on the moon used to construct a base, but why would we need a rocket to get to the moon? Maybe this is the rocket that takes the teleporter to the moon base and sparks off the zombie infestation. Or the teleporter allready there is not functioning or is functioning but is dangerous to use so they need a rocket to get to the base.
  9. I LOLed "really". Try clearing your browser caches of cookies, if its not an IP ban which I doubt you should be able to view the site no problem. I mean your "friend" should be able to view the site :D
  10. I think the OP is referancing a step in the EE hunt, I am not sure as I have not done it myself. I believe that when you maintain pressure on the plate beneath the rocket it sets off a KA BOOM. She was indeed robbed by the sounds of it, the swines. I guess you wont be so keen to kill crawlers anymore. Rock on lady.
  11. Maybe there is but no one has found it that we know of, if Treyarch put something in for solo I doubt it follows the same path as what ever that travesty of an EE was. :D
  12. This whole evil freemasons/ illuminati has gotten well out of hand. I think you guys and ladies who are interested should take the time to look past the badly researched majority of info posted online. For the Americans who use this site learn to take an interest and some pride in your history, Free masons played a huge part in the founding and ideals of your country. A state seperate from religion but based on religious freedom to worship, where science was hoped to bring order from chaos. All that is now under threat and its not the freemasons who are responsible.
  13. Awesome, glad he came through for you; I like the style of hat and its nice that he took the time to sign it for you. I dont really know about the 1 dollar bill but when I was in my teens (long time ago) an American friend of the family sent me a 2 dollar bill which I still have. He said it was a tradition they had, so maybe google it and see what comes up. I am about to do the same as your gift reminded me.
  14. I get what your saying Alpha, but didnt Treyarch themselves say that there was no tie in between the campaing and zombies? I am confudled. Anaways the story has never really been my thing, I do enjoy reading other peoples ideas about the plot progression such as yours. Keep it up, if you can. :D
  15. Well said. Please tell me how you dislike it? Why do you feel that the Moon is out of the question? Regards Snake. I agree with some of Snakes thoughts and ideas, infact I would go as far to say that the moon has allways been alluded to by Treyarch, just not in an obvious manner. This is for you Snake. Perhaps the red dots on the moon were not 115 metiorites but were outgassing from volcanic activity which has been observable on the moon and been recorded as far back as 1800, possibly further. So maybe the outgassing could be a cause of lunar metiorites landing on earth. Volcanic explosion on the moon, material escapes relativly low lunar gravity and lands on earth as meteorites. Now maybe these meteorites contained dormant bacteria, a sentient parasite. That would go some way to explaining a zombie breakout. It could also be used to explain a breakout on the moon. They make a base on the moon and it finishes completion. They now start mining for precious minerals, ores or 115 and hit a pocket of bacteria which infects a few of the workers and soon spreads. Will edit with some links in a few minutes. http://www.reuters.com/article/2011/03/ ... 9120110306 http://www.redicecreations.com/article.php?id=14460 http://en.wikipedia.org/wiki/Transient_lunar_phenomenon http://healthmad.com/conditions-and-dis ... man-brain/
  16. Watch what & who you call retarded mate, why don't you try and do it better if it's so retarded eh? :x I hate it when people post things like this on a forum which is based on peoples "retarded ideas" if you don't like it GTFO. You sir are a maroon... To the OP, come on dude its a game. Regards Alpha... Chill OUt Alpha, at least he read your post; for some who replied to your post it was a case of TLDR. He didnt say your post or thoughts were retarded, he said something retarded happened which for a lot of the zombie community now sums up the story line efforts from Treyarch completely, nothing but contradiction after contradiction. But hey its their show and thats how they do their biz right. Treyarch have had a silly amount of opportunities to provide some solid direction to the storyline and have so far ignored those chances, instead just dropping silly hints in the load menu that could allude to anything or nothing. I have to be honest If I could have leaned through teh interwebz and punched JuggaJugga in the throat I would have. When Ascension dropped he came on here and posted "The cosmic silverback has many brothers", insinuating that the information had allways been there and we were to ignorant to understand there elite stream of consiousness. If Treyarch gave a shit they would have made a sincere effort to give solid direction to the story. They have not...
  17. WhosOnFirst

    -

    It just annoys me a bit. Y'know, being a grammar/spelling nazi and all =) And it doesn't mean I am hating, the ugh meant more like, "Woah, this is going a little too deep for my likes..." Peace not war? Haha you must have read my mind I started my reply to you with something about grammer Nazis, that little voice told me I know better though. I wouldnt worry about going to deep, you wont drown! Your right though, PAX bro.
  18. WhosOnFirst

    -

    Yes it was a good thought, so why the UGH. Not really? His idea is confirmed by the game code that an entity can be made invisible to the player or players. Both codes shown below confirm Treyarch have this ability within the engine, I very much doubt there is a limit on what can be hidden and would not be viewable in no-clip. zombie_pentagon_traps.gsc #include common_scripts\utility; #include maps\_utility; #include maps\_zombiemode_traps; #include maps\_zombiemode_utility; init_traps() { level init_flags(); level electric_trap_battery_init(); level pentagon_fix_electric_trap_init(); // ww: getting teh quad intro fx in with the changes to the trap system level quad_first_drop_fx_init(); } init_flags() { flag_init( "trap_elevator" ); flag_init( "trap_quickrevive" ); } //------------------------------------------------------------------------------- // DCS 082410: standarding and making into prefabs batteries for traps. //------------------------------------------------------------------------------- electric_trap_battery_init() { trap_batteries = GetEntArray( "trigger_trap_piece", "targetname" ); players = get_players(); for ( i = 0; i { players[i]._trap_piece = 0; } array_thread( trap_batteries, ::pickup_trap_piece ); } pickup_trap_piece() { self endon( "_piece_placed" ); if( !IsDefined( self.target ) ) { // where the model goes isn't hooked up, leave return; } trap_piece = self spawn_trap_piece(); self SetHintString( &"ZOMBIE_PENTAGON_GRAB_MISSING_PIECE" ); self SetCursorHint( "HINT_NOICON" ); // battery = getstruct( self.target, "targetname" ); self.picked_up = 0; // require look at self UseTriggerRequireLookAt(); while( self.picked_up == 0 ) { self waittill( "trigger", user ); if( is_player_valid( user ) ) { if( IsDefined( user._trap_piece ) && user._trap_piece > 0 ) // you have a piece, go away { play_sound_at_pos( "no_purchase", self.origin ); continue; } else { self trigger_off(); if( IsDefined( trap_piece ) ) { PlayFXOnTag( level._effect["switch_sparks"], trap_piece, "tag_origin" ); // TODO: NEED A BETTER SOUND HERE, COULD WE GET AN EVIL BARB? // SOMETHING LIKE "SO YOU THINK YOU'RE SLICK?!" trap_piece thread play_sound_on_entity( "zmb_battery_pickup" ); user thread pentagon_have_battery_hud(); user thread trap_piece_deliver_clean_up( self ); } user._trap_piece = 1; self.picked_up = 1; user thread pentagon_hide_piece_triggers(); // wait( 1.0 ); trap_piece Delete(); } } } } // ww: trigger spawns the script model that will be picked up, script model is returned spawn_trap_piece() { spawn_struct = getstruct( self.target, "targetname" ); trap_model = Spawn( "script_model", spawn_struct.origin ); trap_model SetModel( "zombie_sumpf_power_switch" ); trap_model.angles = spawn_struct.angles; return trap_model; } // WW: make all other trap piece triggers invisible to players who have a trap piece pentagon_hide_piece_triggers() { trap_piece_triggers = GetEntArray( "trigger_trap_piece", "targetname" ); for( i = 0; i { if( trap_piece_triggers[i].picked_up == 0 ) { trap_piece_triggers[i] SetInvisibleToPlayer( self ); } } } // WW: Init all the triggers needed for fixing the electric traps. there should be one of these per electric trap pentagon_fix_electric_trap_init() { fix_trigger_array = GetEntArray( "trigger_battery_trap_fix", "targetname" ); if( IsDefined( fix_trigger_array ) ) { array_thread( fix_trigger_array, ::pentagon_fix_electric_trap ); } } // WW: Traps wait for a battery to be delivered before becoming active pentagon_fix_electric_trap() { if( !IsDefined( self.script_flag_wait ) ) // make sure the proper kvp is on the object { PrintLn( "trap at " + self.origin + " missing script flag" ); return; } if( !IsDefined( self.script_string ) ) { PrintLn( "trap at " + self.origin + " missing script string" ); } self SetHintString( &"ZOMBIE_PENTAGON_MISSING_PIECE" ); self SetCursorHint( "HINT_NOICON" ); self UseTriggerRequireLookAt(); trap_trigger = GetEntArray( self.script_flag_wait, "targetname" ); // the script string has the trap trigger targetname array_thread( trap_trigger, ::electric_hallway_trap_piece_hide, self.script_flag_wait ); trap_cover = GetEnt( self.script_string, "targetname" ); // script brush model covering the trap pieces level thread pentagon_trap_cover_remove( trap_cover, self.script_flag_wait ); while( !flag( self.script_flag_wait ) ) // this flag will be set internally when the battery is delivered { self waittill( "trigger", who ); if( is_player_valid( who ) ) { if( !IsDefined( who._trap_piece ) || who._trap_piece == 0 ) // you don't have it, go away { play_sound_at_pos( "no_purchase", self.origin ); // continue; } else if( IsDefined( who._trap_piece ) && who._trap_piece == 1 ) // you have the battery { who._trap_piece = 0; self PlaySound( "zmb_battery_insert" ); who thread pentagon_show_piece_triggers(); flag_set( self.script_flag_wait ); // flag is set on the trigger in the trap who notify( "trap_piece_returned" ); who thread pentagon_remove_battery_hud(); } } } // hide the trigger self SetHintString( "" ); self trigger_off(); } // WW: make all other trap piece triggers visbile to players who have placed a trap piece pentagon_show_piece_triggers() { trap_piece_triggers = GetEntArray( "trigger_trap_piece", "targetname" ); for( i = 0; i { if( trap_piece_triggers[i].picked_up == 0 ) { trap_piece_triggers[i] SetVisibleToAll(); } } } // ww: removes trigger on successfuly piece placement trap_piece_deliver_clean_up( ent_trig ) { self endon( "death" ); self endon( "disconnect" ); self waittill( "trap_piece_returned" ); ent_trig notify( "_piece_placed" ); ent_trig Delete(); } // ww: hides the zctivation trigger for the trap, but goes through multiple script ents // SELF == SCRIPT MODEL/TRIGGER electric_hallway_trap_piece_hide( str_flag ) { if( !IsDefined( str_flag ) ) { return; } if( self.classname == "trigger_use" ) { self SetHintString( &"ZOMBIE_NEED_POWER" ); self thread electric_hallway_trap_piece_show( str_flag ); self trigger_off(); } } // ww: returns the trigger once the piece has been placed // SELF == SCRIPT MODEL/TRIGGER electric_hallway_trap_piece_show( str_flag ) { if( !IsDefined( str_flag ) ) { return; } flag_wait( str_flag ); self trigger_on(); } // ww: removes the script brushmodel covers when teh trap has been created pentagon_trap_cover_remove( ent_cover, str_flag ) { flag_wait( str_flag ); // TODO: COOL FX TO PLAY WHILE MOVING IT? ent_cover NotSolid(); ent_cover.fx = Spawn( "script_model", ent_cover.origin ); ent_cover.fx SetModel( "tag_origin" ); ent_cover MoveZ( 48, 1.0, 0.4, 0 ); ent_cover waittill( "movedone" ); ent_cover RotateRoll( ( 360 * RandomIntRange( 4, 10 ) ), 1.2, 0.6, 0 ); PlayFXOnTag( level._effect["poltergeist"], ent_cover.fx, "tag_origin" ); // TODO: COOL ANGRY VOICE HERE? AS IF THE ETHER IS ANGRY YOU PUT THE TRAP TOGETHER ent_cover waittill( "rotatedone" ); ent_cover Hide(); ent_cover.fx Hide(); ent_cover.fx Delete(); ent_cover Delete(); // ent_cover Hide(); // ent_cover Delete(); } // WW:add the hud element for the battery so a player knows they have the battery pentagon_have_battery_hud() { self.powercellHud = create_simple_hud( self ); self.powercellHud.foreground = true; self.powercellHud.sort = 2; self.powercellHud.hidewheninmenu = false; self.powercellHud.alignX = "center"; self.powercellHud.alignY = "bottom"; self.powercellHud.horzAlign = "user_right"; self.powercellHud.vertAlign = "user_bottom"; self.powercellHud.x = -200; // ww: started at 256 self.powercellHud.y = 0; self.powercellHud.alpha = 1; self.powercellHud setshader( "zom_icon_trap_switch_handle", 32, 32 ); self thread pentagon_remove_hud_on_death(); } // WW: remove the battery hud element pentagon_remove_battery_hud() { if( IsDefined( self.powercellHud ) ) { self.powercellHud Destroy(); } } // WW: remove the trap piece hud on player death pentagon_remove_hud_on_death() { self endon( "trap_piece_returned" ); self waittill_either( "death", "_zombie_game_over" ); self thread pentagon_remove_battery_hud() ; } //------------------------------------------------------------------------------- // ww: setups the fx exploder for certain vents the first time a quad comes out quad_first_drop_fx_init() { vent_drop_triggers = GetEntArray( "trigger_quad_intro", "targetname" ); // these triggers are one timers, don't thread them or the function dies for( i = 0; i { level thread quad_first_drop_fx( vent_drop_triggers[i] ); } } quad_first_drop_fx( ent_trigger ) { if( !IsDefined( ent_trigger.script_int ) ) { return; } exploder_id = ent_trigger.script_int; ent_trigger waittill( "trigger" ); ent_trigger PlaySound( "evt_pentagon_quad_spawn" ); exploder( exploder_id ); } zombie_theater_movie_screen.gsc #include common_scripts\utility; #include maps\_utility; #include maps\_zombiemode_utility; initMovieScreen() { //level thread set_up_images(); //level thread lower_movie_screen(); level thread setupCurtains(); level thread movie_reels_init(); } set_up_images() { level.images = []; level.images = getentarray("screen_image", "targetname"); level.images = mergeSort(level.images); for (x = 0; x level.images[x] hide(); } //merge sort for speed and sexiness mergeSort(current_list) { if (current_list.size return current_list; left = []; right = []; middle = current_list.size / 2; for (x = 0; x left = add_to_array(left, current_list[x]); for (; x right = add_to_array(right, current_list[x]); left = mergeSort(left); right = mergeSort(right); if (left[left.size - 1].script_int > right[right.size - 1].script_int) result = merge(left, right); else result = append(left, right); return result; } //merge the two arrays merge(left, right) { result = []; while (left.size > 0 && right.size > 0) { if (left[0] { result = add_to_array(result, left[0]); left = array_remove_index(left, 0); } else { result = add_to_array(result, right[0]); right = array_remove_index(right, 0); } } while (left.size > 0) result = append(result, left); while (right.size > 0) result = append(result, right); return result; } //simple add right array to the end of left array append(left, right) { for (x = 0; x left = add_to_array(left, right[x]); return left; } setupCurtains() { flag_wait( "power_on" ); //wait(2); //level thread moveCurtains("left_curtain"); //level thread moveCurtains("right_curtain"); curtains = getent("theater_curtains", "targetname"); curtains_clip = getent("theater_curtains_clip", "targetname"); curtains_clip notsolid(); curtains_clip connectpaths(); curtains maps\zombie_theater::theater_playanim("curtains_move" ); curtains waittill ("curtains_move_done"); flag_set( "curtains_done" ); level thread lower_movie_screen(); } moveCurtains(curtent) { curtain = getent( curtent, "targetname"); curtorg = curtain.origin; time = 2; curtain thread monitorCurtain(curtorg); curtain connectpaths(); curtain MoveTo( curtain.origin + curtain.script_vector, time, time * 0.25, time * 0.25 ); curtain playsound( "curtain_open" ); } monitorCurtain(curtorg) { clip = getent(self.target, "targetname"); while (IsDefined(clip)) { if ((abs(curtorg[0] - self.origin[0])) >= 38 ) { clip connectpaths(); clip NotSolid(); if (IsDefined(clip.target)) clip = getent(clip.target, "targetname"); else clip = undefined; } wait (0.1); } } open_left_curtain() { flag_wait( "power_on" ); curtain = GetEnt("left_curtain", "targetname"); if(isDefined(curtain)) { wait(2); //curtain waittill("movedone"); curtain_clip = getentarray("left_curtain_clip", "targetname"); for (i = 0; i { curtain_clip[i] connectpaths(); curtain_clip[i] notsolid(); } curtain connectpaths(); curtain movex(-300, 2); } } open_right_curtain() { flag_wait( "power_on" ); curtain = GetEnt("right_curtain", "targetname"); if(isDefined(curtain)) { wait(2); //curtain waittill("movedone"); curtain_clip = getentarray("right_curtain_clip", "targetname"); for (i = 0; i { curtain_clip[i] connectpaths(); curtain_clip[i] notsolid(); } curtain connectpaths(); curtain movex(300, 2); } } lower_movie_screen() { // flag_wait( "power_on" ); screen = GetEnt("movie_screen", "targetname"); if(isDefined(screen)) { screen movez(-466, 6); screen playsound( "evt_screen_lower" ); } //for (x = 0; x // level.images[x] movez(-466, 6); //wait (4); screen waittill ("movedone"); wait (2); // level notify( "sip" ); clientnotify( "sip" ); // ww: notify talks to zombie_theater_fx.csc to start the projector fxs // exploder(314); // projection light on //level thread play_images(); } play_images() { x = 0; while (1) { if (x > level.images.size - 1) x = 0; level.images[x] show(); wait(0.1); level.images[x] hide(); x++; } } // Init the reel triggers movie_reels_init() { // active reel array // each room will have three places the reel could go clean_bedroom_reels = GetEntArray( "trigger_movie_reel_clean_bedroom", "targetname" ); bear_bedroom_reels = GetEntArray( "trigger_movie_reel_bear_bedroom", "targetname" ); interrogation_reels = GetEntArray( "trigger_movie_reel_interrogation", "targetname" ); pentagon_reels = GetEntArray( "trigger_movie_reel_pentagon", "targetname" ); // put all the arrays in to a master array level.reel_trigger_array = []; level.reel_trigger_array = add_to_array( level.reel_trigger_array, clean_bedroom_reels, false ); level.reel_trigger_array = add_to_array( level.reel_trigger_array, bear_bedroom_reels, false ); level.reel_trigger_array = add_to_array( level.reel_trigger_array, interrogation_reels, false ); level.reel_trigger_array = add_to_array( level.reel_trigger_array, pentagon_reels, false ); // randomize the master array. the first three arrays will be chosen for reel placement level.reel_trigger_array = array_randomize( level.reel_trigger_array ); // now pick one reel out of each of the first three arrays reel_0 = movie_reels_random( level.reel_trigger_array[0], "ps1" ); reel_1 = movie_reels_random( level.reel_trigger_array[1], "ps2" ); reel_2 = movie_reels_random( level.reel_trigger_array[2], "ps3" ); // combine all the individual reels in to one array temp_reels_0 = array_merge( clean_bedroom_reels, bear_bedroom_reels ); temp_reels_1 = array_merge( interrogation_reels, pentagon_reels ); all_reels = array_merge( temp_reels_0, temp_reels_1 ); // thread off the movie reel func on all reels. func will hide reels that were not chosen for display array_thread( all_reels, ::movie_reels ); level thread movie_projector_reel_change(); } // Randomly choose one of the reels in a reel array for display movie_reels_random( array_reel_triggers, str_reel ) { if( !IsDefined( array_reel_triggers ) ) { return; } else if( array_reel_triggers.size { return; } else if( !IsDefined( str_reel ) ) { return; } random_reels = array_randomize( array_reel_triggers ); // grab the first one out of teh random array random_reels[0].script_string = str_reel; // TODO: THIS WILL HAVE TO BE MADE INTO A SIDE FUNCTION IF WE GET 20-24 VIDEOS random_reels[0].reel_active = true; return random_reels[0]; // return the first reel in the array as the one to display } // watch the reel to get picked up. the trigger should be targetting a script model // SELF == TRIGGER movie_reels() { if( !IsDefined( self.target ) ) { /# AssertEx( IsDefined( self.target ), "one of the reel triggers missing target" ); #/ return; } // define the model being used for the reel self.reel_model = GetEnt( self.target, "targetname" ); if( !IsDefined( self.reel_active ) ) { self.reel_active = false; } if( IsDefined( self.reel_active ) && self.reel_active == false ) { // turn off the trigger and hide the model self.reel_model Hide(); self SetCursorHint( "HINT_NOICON" ); self SetHintString( "" ); self trigger_off(); // end the function return; } else if ( IsDefined( self.reel_active ) && self.reel_active == true ) { // set the reel model self.reel_model SetModel( "zombie_theater_reelcase_obj" ); // TODO: SPECIAL MODELS WILL NEED TO BE INPUT AT SOME POINT // set hint string and cursor image self SetCursorHint( "HINT_NOICON" ); // self SetHintString( &"ZOMBIE_THEATER_FILM_REEL" ); // ww:removing hing strings } // wait for power flag_wait( "power_on" ); self waittill( "trigger", who ); who PlaySound( "zmb_reel_pickup" ); self.reel_model Hide(); self trigger_off(); // put the reel string on the player that hit the trigger who.reel = self.script_string; who thread theater_movie_reel_hud(); } // Projector trigger watching for a player with a reel movie_projector_reel_change() { screen_struct = getstruct( "struct_theater_screen", "targetname" ); projector_trigger = GetEnt( "trigger_change_projector_reels", "targetname" ); projector_trigger SetCursorHint( "HINT_NOICON" ); //projector_trigger SetHintString( &"ZOMBIE_THEATER_REEL_PROJECTOR" ); // ww:removing hing strings // just in case the struct is missing the beginning string if( !IsDefined( screen_struct.script_string ) ) { screen_struct.script_string = "ps0"; } while( true ) { projector_trigger waittill( "trigger", who ); if( IsDefined( who.reel ) && IsString( who.reel ) ) { clientnotify( who.reel ); // ww: this should be a three digit notify that is set on the reels above who notify( "reel_set" ); who thread theater_remove_reel_hud(); who thread maps\zombie_theater_amb::play_radio_egg( 2 ); who PlaySound( "zmb_reel_place" ); who.reel = undefined; wait( 3 ); } else { wait( 0.1 ); } wait( 0.1 ); } } // WW:add the hud element for the reel so a player knows they have it theater_movie_reel_hud() { self.reelHud = create_simple_hud( self ); self.reelHud.foreground = true; self.reelHud.sort = 2; self.reelHud.hidewheninmenu = false; self.reelHud.alignX = "center"; self.reelHud.alignY = "bottom"; self.reelHud.horzAlign = "user_right"; self.reelHud.vertAlign = "user_bottom"; self.reelHud.x = -200; self.reelHud.y = 0; self.reelHud.alpha = 1; self.reelHud setshader( "zom_icon_theater_reel", 32, 32 ); self thread theater_remove_reel_on_death(); } // WW: remove the battery hud element theater_remove_reel_hud() { if( IsDefined( self.reelHud ) ) { self.reelHud Destroy(); } } // WW: removes hud element if player dies theater_remove_reel_on_death() { self endon( "reel_set" ); self waittill_either( "death", "_zombie_game_over" ); self thread theater_remove_reel_hud(); } Lay off with the spelling bro, that high standard by which you judge others will one day be the yard stick that is used to judge you. Show some love, it easier than being a hater and more fun :D
  19. Dude that is exactly what a theory is, "A scientific theory comprises a collection of concepts, including abstractions of observable phenomena expressed as quantifiable properties, together with rules (called scientific laws) that express relationships between observations of such concepts. A scientific theory is constructed to conform to available empirical data about such observations, and is put forth as a principle or body of principles for explaining a class of phenomena." I feel that you are trying to imply your theory is better than others because it does not involve 360 noscoping a teddy bear while pressing left bumper down D pad and singing the chorus from Jebus Christ Superstar backwards? If thats the case I would have to agree with you, your theory is commendable. It might well hold water...
  20. Seems like a fairly good point, is there an intro script that would deal with this event? If we could read that, then it might answer any questions regarding the lander. I dont see anything that suggests that there are two missing landers, even the 1 missing lander might be accaunted for in the intro script event.
  21. So I was browsing the game code and came across what appear to be mentions of unused traps. The code was in this file _zombiemode_traps.gsc include common_scripts\utility; #include maps\_utility; #include maps\_zombiemode_utility; // // NOTES: // See trap_init for trap trigger setup info. // Make sure you precache the trap effects for your level. // Also, start a trap monitor thread for each unique trap in your clientscripts // (see zombie_cosmodrome for examples) //***************************************************************************** // All traps are trigger_multiples that will be used to determine if the // zombie is within the trap zone. //***************************************************************************** init() { level.trap_kills = 0; traps = GetEntArray( "zombie_trap", "targetname" ); if( level.mutators["mutator_noTraps"] ) { disable_traps( traps ); return; } array_thread( traps, ::trap_init ); level.burning_zombies = []; //JV max number of zombies that can be on fire level.elec_trap_time = 40; level.elec_trap_cooldown_time = 60; } disable_traps( traps ) { for( i = 0; i { if( isDefined( traps[i].target ) ) { components = GetEntArray( traps[i].target, "targetname" ); for( j = 0; j { if( components[j].classname == "trigger_use" ) { components[j] disable_trigger(); } } } traps[i] disable_trigger(); } } //***************************************************************************** // This gets information from the trap trigger and then loops through its targets // to identify and sets up each component. // // TRAP KVPs: // target // Trap components including use_triggers, switches and lights // script_noteworthy // The type of trap it is, such as "fire" or "electric" // script_string // Two character unique ID (used for clientnotify messages, which should // be max 3 characters long. The first character should not be a number. // The extra character will have "1" for on and "0" for off // Alternatively, this could be a number which will be used to fire off an exploder. // script_flag_wait // Set if you want it to wait for a flag like "power_on" before being usable //***************************************************************************** trap_init() { //Setup ent flag self ent_flag_init( "flag_active" ); self ent_flag_init( "flag_cooldown" ); self._trap_type = ""; // Figure out what kind of trap we are. if ( IsDefined(self.script_noteworthy) ) { self._trap_type = self.script_noteworthy; // Note make sure you define your own _trap_activate_func!! if ( IsDefined( level._zombiemode_trap_activate_funcs ) && IsDefined( level._zombiemode_trap_activate_funcs[ self._trap_type ] ) ) { self._trap_activate_func = level._zombiemode_trap_activate_funcs[ self._trap_type ]; } else { switch( self.script_noteworthy ) { case "rotating": self._trap_activate_func = ::trap_activate_rotating; break; case "electric": self._trap_activate_func = ::trap_activate_electric; break; case "flipper": self._trap_activate_func = ::trap_activate_flipper; break; case "fire": default: self._trap_activate_func = ::trap_activate_fire; } } // Note make sure you define your own _trap_use_func!! if ( IsDefined( level._zombiemode_trap_use_funcs ) && IsDefined( level._zombiemode_trap_use_funcs[ self._trap_type ] ) ) { self._trap_use_func = level._zombiemode_trap_use_funcs[ self._trap_type ]; } else { self._trap_use_func = ::trap_use_think; } } // WW: adding function to issue which models switch based on trigger script_parameters self trap_model_type_init(); // Okay sort through the targets self._trap_use_trigs = []; // What the player needs to use to activate the trap self._trap_lights = []; // Indicates if the trap is available self._trap_movers = []; // Physical part of the trap that moves self._trap_switches = []; // Move when trap turned on/off components = GetEntArray( self.target, "targetname" ); for ( i=0; i { if ( IsDefined( components[i].script_noteworthy ) ) { switch ( components[i].script_noteworthy ) { case "counter_1s": self.counter_1s = components[i]; continue; case "counter_10s": self.counter_10s = components[i]; continue; case "counter_100s": self.counter_100s = components[i]; continue; case "mover": self._trap_movers[ self._trap_movers.size ] = components[i]; continue; case "switch": self._trap_switches[ self._trap_switches.size ] = components[i]; continue; case "light": self._trap_lightes[ self._trap_lightes.size ] = components[i]; continue; } } if( IsDefined( components[i].script_string ) ) // If a script noteworthy is defined { switch ( components[i].script_string ) { case "flipper1": self.flipper1 = components[i]; continue; case "flipper2": self.flipper2 = components[i]; continue; case "flipper1_radius_check": self.flipper1_radius_check = components[i]; continue; case "flipper2_radius_check": self.flipper2_radius_check = components[i]; continue; case "target1": self.target1 = components[i]; continue; case "target2": self.target2 = components[i]; continue; case "target3": self.target3 = components[i]; continue; } } switch ( components[i].classname ) { case "trigger_use": self._trap_use_trigs[ self._trap_use_trigs.size ] = components[i]; break; case "script_model": if ( components[i].model == self._trap_light_model_off ) { self._trap_lights[ self._trap_lights.size ] = components[i]; } else if ( components[i].model == self._trap_switch_model ) // "zombie_zapper_handle" { self._trap_switches[ self._trap_switches.size ] = components[i]; } } } // self.use_this_angle = getstruct ("use_this_angle", "script_string"); self._trap_fx_structs = []; components = GetStructArray( self.target, "targetname" ); for ( i=0; i { if ( IsDefined( components[i].script_string ) && components[i].script_string == "use_this_angle" ) { self.use_this_angle = components[i]; } else { self._trap_fx_structs[ self._trap_fx_structs.size ] = components[i]; } } assertEx( self._trap_use_trigs.size > 0, "_zombiemode_traps::init no use triggers found for "+self.target ); if ( !IsDefined( self.zombie_cost ) ) { self.zombie_cost = 1000; } self._trap_in_use = 0; self._trap_cooling_down = 0; self thread trap_dialog(); flag_wait( "all_players_connected" ); self trap_lights_red(); // Setup Use triggers for ( i=0; i { self._trap_use_trigs[i] SetCursorHint( "HINT_NOICON" ); } // Wait for activation flag if necessary if ( !IsDefined( self.script_flag_wait ) ) { self trap_set_string( &"ZOMBIE_NEED_POWER" ); flag_wait( "power_on" ); } else { // Make sure to "setcursorhint" on the use trig for the initial deactivated state. if ( !isdefined( level.flag[ self.script_flag_wait ] ) ) { flag_init( self.script_flag_wait ); } flag_wait( self.script_flag_wait ); } // Set buy string self trap_set_string( &"ZOMBIE_BUTTON_BUY_TRAP", self.zombie_cost ); // Open for business! self trap_lights_green(); for ( i=0; i { self._trap_use_trigs[i] thread [[ self._trap_use_func ]]( self ); } } //***************************************************************************** // This controls the electric traps in the level // self = use trigger associated with the trap // trap = trap trigger entity //***************************************************************************** trap_use_think( trap ) { while(1) { //wait until someone uses the valve self waittill("trigger",who); if( who in_revive_trigger() ) { continue; } if( is_player_valid( who ) && !trap._trap_in_use ) { // See if they can afford it players = get_players(); if ( players.size == 1 && who.score >= trap.zombie_cost ) { // Solo buy who maps\_zombiemode_score::minus_to_player_score( trap.zombie_cost ); } else if( level.team_pool[who.team_num].score >= trap.zombie_cost ) { // Team buy who maps\_zombiemode_score::minus_to_team_score( trap.zombie_cost ); } else if( level.team_pool[ who.team_num ].score + who.score >= trap.zombie_cost ) { // team funds + player funds team_points = level.team_pool[ who.team_num ].score; who maps\_zombiemode_score::minus_to_player_score( trap.zombie_cost - team_points ); who maps\_zombiemode_score::minus_to_team_score( team_points ); } else { continue; } trap._trap_in_use = 1; trap trap_set_string( &"ZOMBIE_TRAP_ACTIVE" ); play_sound_at_pos( "purchase", who.origin ); if ( trap._trap_switches.size ) { trap thread trap_move_switches(); //need to play a 'woosh' sound here, like a gas furnace starting up trap waittill("switch_activated"); } //this trigger detects zombies who need to be smacked trap trigger_on(); //start the movement trap thread [[ trap._trap_activate_func ]](); //wait until done and then clean up and cool down trap waittill("trap_done"); //turn the damage detection trigger off until the trap is used again trap trigger_off(); trap._trap_cooling_down = 1; trap trap_set_string( &"ZOMBIE_TRAP_COOLDOWN" ); /# if ( GetDvarInt( #"zombie_cheat" ) >= 1 ) { trap._trap_cooldown_time = 5; } #/ wait( trap._trap_cooldown_time ); trap._trap_cooling_down = 0; //COLLIN: Play the 'alarm' sound to alert players that the traps are available again (playing on a temp ent in case the PA is already in use. //speakerA = getstruct("loudspeaker", "targetname"); //playsoundatposition("warning", speakera.origin); trap notify("available"); trap._trap_in_use = 0; trap trap_set_string( &"ZOMBIE_BUTTON_BUY_TRAP", trap.zombie_cost ); } } } //***************************************************************************** // Swaps the cage light models to the red one. // self is a trap damage trigger //***************************************************************************** trap_lights_red() { if( level.mutators["mutator_noTraps"] ) { return; } for(i=0;i { light = self._trap_lights[i]; light setmodel( self._trap_light_model_red ); if(isDefined(light.fx)) { light.fx delete(); } light.fx = maps\_zombiemode_net::network_safe_spawn( "trap_lights_red", 2, "script_model", light.origin ); light.fx setmodel("tag_origin"); light.fx.angles = light.angles; playfxontag(level._effect["zapper_light_notready"],light.fx,"tag_origin"); } } //***************************************************************************** // Swaps the cage light models to the green one. // self is a trap damage trigger //***************************************************************************** trap_lights_green() { if( level.mutators["mutator_noTraps"] ) { return; } for(i=0;i { light = self._trap_lights[i]; light setmodel( self._trap_light_model_green ); if(isDefined(light.fx)) { light.fx delete(); } light.fx = maps\_zombiemode_net::network_safe_spawn( "trap_lights_green", 2, "script_model", light.origin ); light.fx setmodel("tag_origin"); light.fx.angles = light.angles; playfxontag(level._effect["zapper_light_ready"],light.fx,"tag_origin"); } } //***************************************************************************** // Set the hintstrings for all associated use triggers // self should be the trap entity //***************************************************************************** trap_set_string( string, param1, param2 ) { // Set buy string for ( i=0; i { if ( !IsDefined(param1) ) { self._trap_use_trigs[i] SetHintString( string ); } else if ( !IsDefined(param2) ) { self._trap_use_trigs[i] SetHintString( string, param1 ); } else { self._trap_use_trigs[i] SetHintString( string, param1, param2 ); } } } //***************************************************************************** // It's a throw switch // self should be the trap entity //***************************************************************************** trap_move_switches() { if( level.mutators["mutator_noTraps"] ) { return; } self trap_lights_red(); for ( i=0; i { // Rotate switch model "on" self._trap_switches[i] rotatepitch( 180, .5 ); self._trap_switches[i] playsound( "amb_sparks_l_b" ); } self._trap_switches[0] waittill( "rotatedone" ); // When "available" notify hit, bring back the level self notify( "switch_activated" ); self waittill( "available" ); for ( i=0; i { // Rotate switch model "off" self._trap_switches[i] rotatepitch( -180, .5 ); } self._trap_switches[0] waittill( "rotatedone" ); self trap_lights_green(); } //############################################################################# // Generic Trap-specific functions // Level-specific traps should be defined in the level.gsc //***************************************************************************** //***************************************************************************** // //***************************************************************************** trap_activate_electric() { self._trap_duration = 40; self._trap_cooldown_time = 60; self notify("trap_activate"); // Kick off the client side FX structs if ( IsDefined( self.script_string ) ) { number = Int( self.script_string ); if ( number != 0 ) { Exploder( number ); } else { clientnotify( self.script_string+"1" ); } } // Kick off audio fx_points = getstructarray( self.target,"targetname" ); for( i=0; i { wait_network_frame(); fx_points[i] thread trap_audio_fx(self); } // Do the damage self thread trap_damage(); wait( self._trap_duration ); // Shut down self notify ("trap_done"); if ( IsDefined( self.script_string ) ) { clientnotify(self.script_string +"0"); // turn off FX } } //***************************************************************************** // //***************************************************************************** trap_activate_fire() { self._trap_duration = 40; self._trap_cooldown_time = 60; // Kick off the client side FX structs clientnotify( self.script_string+"1" ); clientnotify( self.script_parameters ); // Kick off audio fx_points = getstructarray( self.target,"targetname" ); for( i=0; i { wait_network_frame(); fx_points[i] thread trap_audio_fx(self); } // Do the damage self thread trap_damage(); wait( self._trap_duration ); // Shut down self notify ("trap_done"); clientnotify(self.script_string +"0"); // turn off FX clientnotify( self.script_parameters ); } //***************************************************************************** // Any traps that spin and cause damage from colliding //***************************************************************************** trap_activate_rotating() { self endon( "trap_done" ); // used to end the trap early self._trap_duration = 30; self._trap_cooldown_time = 60; // Kick off the client side FX structs // clientnotify( self.script_string+"1" ); // Kick off audio // fx_points = getstructarray( self.target,"targetname" ); // for( i=0; i // { // wait_network_frame(); // fx_points[i] thread trap_audio_fx(self); // } // Do the damage self thread trap_damage(); self thread trig_update( self._trap_movers[0] ); old_angles = self._trap_movers[0].angles; //Shawn J Sound - power up sound for centrifuge // self playsound ("evt_centrifuge_rise"); for ( i=0; i { self._trap_movers[i] RotateYaw( 360, 5.0, 4.5 ); } wait( 5.0 ); step = 1.5; //Shawn J Sound - loop sound for centrifuge // self playloopsound ("evt_centrifuge_loop", .6); for (t=0; t { for ( i=0; i { self._trap_movers[i] RotateYaw( 360, step ); } wait( step ); } //Shawn J Sound - power down sound for centrifuge // self stoploopsound (2); // self playsound ("evt_centrifuge_fall"); for ( i=0; i { self._trap_movers[i] RotateYaw( 360, 5.0, 0.0, 4.5 ); } wait( 5.0 ); for ( i=0; i { self._trap_movers[i].angles = old_angles; } // Shut down self notify ("trap_done"); // clientnotify(self.script_string +"0"); // turn off FX3/16/2010 3:44:13 PM } //***************************************************************************** // Any traps that spin and cause damage from colliding //***************************************************************************** //***************************************************************************** // New zombapult or flipper traps //***************************************************************************** trap_activate_flipper() { // basics of the trap are setup // IPrintLnBold("trap is almost working..."); // self endon( "trap_done" ); // Used to end the trap early // wait( 4 ); // self._trap_duration = 3; // self._trap_cooldown_time = 0; // self notify ("trap_done"); //I need to communicate from here to the actual funcion } //***************************************************************************** // //***************************************************************************** trap_audio_fx( trap ) { if( level.mutators["mutator_noTraps"] ) { return; } sound_origin = undefined; if( trap.script_noteworthy == "electric" ) { sound_origin = spawn( "script_origin", self.origin ); sound_origin playsound( "zmb_elec_start" ); sound_origin playloopsound( "zmb_elec_loop" ); self thread play_electrical_sound( trap ); } else if( trap.script_noteworthy == "fire" ) { sound_origin = spawn( "script_origin", self.origin ); sound_origin playsound( "zmb_firetrap_start" ); sound_origin playloopsound( "zmb_firetrap_loop" ); } trap waittill_any_or_timeout( trap._trap_duration, "trap_done"); if(IsDefined(sound_origin)) { if( trap.script_noteworthy == "fire" ) playsoundatposition( "zmb_firetrap_end", sound_origin.origin ); sound_origin stoploopsound(); wait(.05); sound_origin delete(); } } //***************************************************************************** // //***************************************************************************** // Shawn J Sound - commenting out alias call so spark sound won't play on the rocket trap - and there are currently no electrical traps play_electrical_sound( trap ) { trap endon ("trap_done"); while( 1 ) { wait( randomfloatrange(0.1, 0.5) ); playsoundatposition( "zmb_elec_arc", self.origin ); } } //***************************************************************************** // //***************************************************************************** trap_damage() { self endon( "trap_done" ); while(1) { self waittill( "trigger", ent ); // Is player standing in the electricity? if( isplayer(ent) ) { switch ( self._trap_type ) { case "electric": ent thread player_elec_damage(); break; case "fire": case "rocket": ent thread player_fire_damage(); break; case "rotating": if ( ent GetStance() == "stand" ) { ent dodamage( 50, ent.origin+(0,0,20) ); ent SetStance( "crouch" ); } break; } } else { if(!isDefined(ent.marked_for_death)) { switch ( self._trap_type ) { case "rocket": ent thread zombie_trap_death( self, 100 ); break; case "rotating": ent thread zombie_trap_death( self, 200 ); break; case "electric": case "fire": default: ent thread zombie_trap_death( self, randomint(100) ); break; } } } } } //***************************************************************************** // Updates the position of a trigger. MoveTo and RotateTo do not support triggers //TODO This is unneeded. Should be able to Enable Linkto on the trigger. //***************************************************************************** trig_update( parent ) { if( level.mutators["mutator_noTraps"] ) { return; } self endon( "trap_done" ); // start_origin = self.origin; start_angles = self.angles; while (1) { self.angles = parent.angles; // segment = self.origin + vector_scale( AnglesToForward(self.angles), 300); // draw_line_for_time( self.origin, segment, 1, 1, 1, 0.1 ); wait( 0.05 ); } } //***************************************************************************** // //***************************************************************************** player_elec_damage() { self endon("death"); self endon("disconnect"); if( !IsDefined(level.elec_loop) ) { level.elec_loop = 0; } if( !isDefined(self.is_burning) && !self maps\_laststand::player_is_in_laststand() ) { self.is_burning = 1; self setelectrified(1.25); shocktime = 2.5; //Changed Shellshock to Electrocution so we can have different bus volumes. self shellshock("electrocution", shocktime); if(level.elec_loop == 0) { elec_loop = 1; //self playloopsound ("electrocution"); self playsound("zmb_zombie_arc"); } if(!self hasperk("specialty_armorvest") /*|| !self hasperk("specialty_armorvest_upgrade")*/ || self.health - 100 { radiusdamage(self.origin,10,self.health + 100,self.health + 100); self.is_burning = undefined; } else { self dodamage(50, self.origin); wait(.1); //self playsound("zmb_zombie_arc"); self.is_burning = undefined; } } } //***************************************************************************** // //***************************************************************************** player_fire_damage() { self endon("death"); self endon("disconnect"); if( !isDefined(self.is_burning) && !self maps\_laststand::player_is_in_laststand() ) { self.is_burning = 1; self setburn(1.25); if(!self hasperk("specialty_armorvest") /*|| !self hasperk("specialty_armorvest_upgrade")*/ || self.health - 100 { radiusdamage(self.origin,10,self.health + 100,self.health + 100); self.is_burning = undefined; } else { self dodamage(50, self.origin); wait(.1); //self playsound("zmb_zombie_arc"); self.is_burning = undefined; } } } //***************************************************************************** // trap is the parent trap entity // param is a multi-purpose paramater. The exact use is described by trap type //***************************************************************************** zombie_trap_death( trap, param ) { if( level.mutators["mutator_noTraps"] ) { return; } self endon("death"); self.marked_for_death = true; switch (trap._trap_type) { case "fire": case "electric": case "rocket": // Param is used as a random chance number if ( IsDefined( self.animname ) && self.animname != "zombie_dog" ) { // 10% chance the zombie will burn, a max of 6 burning zombs can be going at once // otherwise the zombie just gibs and dies if( (param > 90) && (level.burning_zombies.size { level.burning_zombies[level.burning_zombies.size] = self; self thread zombie_flame_watch(); self playsound("ignite"); self thread animscripts\zombie_death::flame_death_fx(); wait( randomfloat(1.25) ); } else { refs[0] = "guts"; refs[1] = "right_arm"; refs[2] = "left_arm"; refs[3] = "right_leg"; refs[4] = "left_leg"; refs[5] = "no_legs"; refs[6] = "head"; self.a.gib_ref = refs[randomint(refs.size)]; playsoundatposition("zmb_zombie_arc", self.origin); if( trap._trap_type == "electric" ) { if(randomint(100) > 50 ) { self thread electroctute_death_fx(); self thread play_elec_vocals(); } } wait(randomfloat(1.25)); self playsound("zmb_zombie_arc"); } } // custom damage if ( IsDefined( self.fire_damage_func ) ) { self [[ self.fire_damage_func ]]( trap ); } else { self dodamage(self.health + 666, self.origin, trap); } // iprintlnbold("should be damaged"); break; case "rotating": case "centrifuge": // Param is used as a magnitude for the physics push // Get a vector for the force to be applied. It needs to be perpendicular to the // bar ang = VectorToAngles( trap.origin - self.origin ); // eliminate height difference factors // calculate the right angle and increase intensity direction_vec = vector_scale( AnglesToRight( ang ), param); // custom reaction if ( IsDefined( self.trap_reaction_func ) ) { self [[ self.trap_reaction_func ]]( trap ); } self StartRagdoll(); self launchragdoll(direction_vec); wait_network_frame(); // Make sure they're dead...physics launch didn't kill them. self.a.gib_ref = "head"; self dodamage(self.health, self.origin, trap); break; } } //***************************************************************************** // //***************************************************************************** zombie_flame_watch() { if( level.mutators["mutator_noTraps"] ) { return; } self waittill("death"); self stoploopsound(); level.burning_zombies = array_remove_nokeys(level.burning_zombies,self); } //***************************************************************************** // //***************************************************************************** play_elec_vocals() { if( IsDefined (self) ) { org = self.origin; wait(0.15); playsoundatposition("zmb_elec_vocals", org); playsoundatposition("zmb_zombie_arc", org); playsoundatposition("zmb_exp_jib_zombie", org); } } //***************************************************************************** // //***************************************************************************** electroctute_death_fx() { self endon( "death" ); if (isdefined(self.is_electrocuted) && self.is_electrocuted ) { return; } self.is_electrocuted = true; self thread electrocute_timeout(); // JamesS - this will darken the burning body //self StartTanning(); if(self.team == "axis") { level.bcOnFireTime = gettime(); level.bcOnFireOrg = self.origin; } PlayFxOnTag( level._effect["elec_torso"], self, "J_SpineLower" ); self playsound ("zmb_elec_jib_zombie"); wait 1; tagArray = []; tagArray[0] = "J_Elbow_LE"; tagArray[1] = "J_Elbow_RI"; tagArray[2] = "J_Knee_RI"; tagArray[3] = "J_Knee_LE"; tagArray = array_randomize( tagArray ); PlayFxOnTag( level._effect["elec_md"], self, tagArray[0] ); self playsound ("zmb_elec_jib_zombie"); wait 1; self playsound ("zmb_elec_jib_zombie"); tagArray[0] = "J_Wrist_RI"; tagArray[1] = "J_Wrist_LE"; if( !IsDefined( self.a.gib_ref ) || self.a.gib_ref != "no_legs" ) { tagArray[2] = "J_Ankle_RI"; tagArray[3] = "J_Ankle_LE"; } tagArray = array_randomize( tagArray ); PlayFxOnTag( level._effect["elec_sm"], self, tagArray[0] ); PlayFxOnTag( level._effect["elec_sm"], self, tagArray[1] ); } //***************************************************************************** // //***************************************************************************** electrocute_timeout() { self endon ("death"); self playloopsound("fire_manager_0"); // about the length of the flame fx wait 12; self stoploopsound(); if (isdefined(self) && isalive(self)) { self.is_electrocuted = false; self notify ("stop_flame_damage"); } } //***************************************************************************** // //***************************************************************************** trap_dialog() { self endon ("warning_dialog"); level endon("switch_flipped"); timer =0; while(1) { wait(0.5); players = get_players(); for(i = 0; i { dist = distancesquared(players[i].origin, self.origin ); if(dist > 70*70) { timer = 0; continue; } if(dist { wait(0.5); timer ++; } if(dist { index = maps\_zombiemode_weapons::get_player_index(players[i]); plr = "plr_" + index + "_"; //players[i] create_and_play_dialog( plr, "vox_level_start", 0.25 ); wait(3); self notify ("warning_dialog"); //iprintlnbold("warning_given"); } } } } //***************************************************************************** // Find Trap triggers //***************************************************************************** get_trap_array( trap_type ) { ents = GetEntArray( "zombie_trap", "targetname" ); traps = []; for ( i=0; i { if ( ents[i].script_noteworthy == trap_type ) { traps[ traps.size ] = ents[i]; } } return traps; } //***************************************************************************** // //***************************************************************************** trap_disable() { cooldown = self._trap_cooldown_time; if ( self._trap_in_use ) { self notify( "trap_done" ); self._trap_cooldown_time = 0.05; self waittill( "available" ); } array_thread( self._trap_use_trigs, ::trigger_off ); self trap_lights_red(); self._trap_cooldown_time = cooldown; } //***************************************************************************** // //***************************************************************************** trap_enable() { array_thread( self._trap_use_trigs, ::trigger_on ); self trap_lights_green(); } //****************************************************************************** // WWilliams: checks the trigger script parameters and then assigns which models // should be used for swapping //****************************************************************************** trap_model_type_init() { // this depends on the trap trigger to have the script_parameters // to chose which models to use if( !IsDefined( self.script_parameters ) ) { self.script_parameters = "default"; } // new models should be added here for updated trap switch( self.script_parameters ) { case "pentagon_electric": //WW: TODO - REMOVE THIS ONCE A NEW PENTAGON BSP HAS BEEN GENERATED self._trap_light_model_off = "zombie_trap_switch_light"; self._trap_light_model_green = "zombie_trap_switch_light_on_green"; self._trap_light_model_red = "zombie_trap_switch_light_on_red"; self._trap_switch_model = "zombie_trap_switch_handle"; break; case "default": default: self._trap_light_model_off = "zombie_zapper_cagelight"; self._trap_light_model_green = "zombie_zapper_cagelight_green"; self._trap_light_model_red = "zombie_zapper_cagelight_red"; self._trap_switch_model = "zombie_zapper_handle"; break; } The interesting parts that refer to new/ unused traps are Rocket trap //***************************************************************************** // //***************************************************************************** // Shawn J Sound - commenting out alias call so spark sound won't play on the rocket trap - and there are currently no electrical traps play_electrical_sound( trap ) { trap endon ("trap_done"); while( 1 ) { wait( randomfloatrange(0.1, 0.5) ); playsoundatposition( "zmb_elec_arc", self.origin ); } } //***************************************************************************** // Zombapault or Flipper Trap //***************************************************************************** // New zombapult or flipper traps //***************************************************************************** trap_activate_flipper() { // basics of the trap are setup // IPrintLnBold("trap is almost working..."); // self endon( "trap_done" ); // Used to end the trap early // wait( 4 ); // self._trap_duration = 3; // self._trap_cooldown_time = 0; // self notify ("trap_done"); //I need to communicate from here to the actual funcion } //***************************************************************************** Would be nice to see some more inventive traps in future games, I wonder what they had intended with these ideas.
  22. Engineer and Quads could be related to Dead Ops which also comes under the Zombie tag
  23. WhosOnFirst

    -

    Ima gona stick my neck out on this one and say you might be wrong. We allready have tech like texture streaming, why say they cannot go one step further. I believe it is possible to create an entity but not render it as an object unless a trigger is switched. I was having a quick read through the Kino script, I think (hope) that the script for the reels might demonstrate this idea on a smaller scale. If I come acrooss the post featuring that code again I will update this post.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use, Privacy Policy, Code of Conduct, We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. .