Jump to content

terminaltheory

Member
  • Posts

    299
  • Joined

  • Last visited

Everything posted by terminaltheory

  1. Why yes. Yes it does. And yes, it has been noted before. Thank you for keeping us updated. I know it is hard with the search bar gone and all...
  2. 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. I dunno. The last time I went too deep, and I almost killed my girlfriend
  3. 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 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?
  4. A. Good thought, but still...... ugh. Not really. B. Spelling much?
  5. yes but you dont shoot cats off on catapault's you shoot rocks, so maybe you didnt shoot zombies off the zombapault you shoot PEOPLE The hell did you get cats from outta this??
  6. throw down the eq on the first bit. music is a bit loud, or wait to talk. Great job!
  7. it is not completly random .. u just teleport very close 2 a random perk or by the PaP....i have tried this so many times.. trust me.. This is very correct. Though you do fly out a few feet up every few times.
  8. A little far fetched there. Haha, made me laugh though. But he says brother in arms. And its kinda slurred together with his Japanese accent.
  9. Oh come on. They're russian zombies, so they're totally drunk. Nah. hehe =P I think they are a little fresher than the other zombies, thus have more bodily control. If you think of it as a virus, you are a little more able bodied in the early stages, whilist if you are entirely sick, you can't do too much. Also, the zombies that dodge and dive and do crazy stuff are spetsnaz zombies. They can be noted by their uniform, and as often, gas masks. And yes, it is a popular theory that once you kill a zombie, the virus itself is also destroyed, thus reverting the zombie back to a human. Even the zombie survival guide says so! =D
  10. This sounds the most plausible, I'll have to check... And I am quite sure that it is not from stamin up. I know the song it plays, and I like it =)
  11. Playing around on ascension, and had my headphone volume extremely high. We had finished majority of the easter egg, except past collecting letters. I was chilling out by the stamin up, and heard a whistle similar to that of the rest of the puzzle. I looked up and to the left, on top of the building where you open the next door, and I believe I have found a generator similar to that of the one that is sucked into the gersch device for the first step. The whistle was quite evident, but I would like someone else to help confirm this. Crappy cell phone picture to come soon.
  12. Hullo all. Finally downloaded the maps. Played for a good three hours today, and have been trying out the standard easter eggs out. So far, I have done the total mystery man egg, thanks to a few dedicated friends. Thus is my total report as follows: The easter egg runs normally, as was in xbox. Did the standard one first found, luna, and everything proceeded normally. Lost the DM's at 90 seconds. No other oddities to report. Tryed out hitsam and hyena, got a few different messages, as were stated in other forums too (system overload and safety protocols) . DM's lasted shorter on one try. I'll keep trying through the night tonight. Feel free to join/add me. My PSN is in my sig. I'll be on around 11:30 mountain standard time (US). I will be adding more to this "patch" idea that people were talking about.
  13. I think he was drunk, so its all a blur to us. The end.
  14. Although apparently he would only be briefly seen, this would match up considering Nikolai was sent to war after killing his wives. Not really related to anything, but still, as far as zombies characters go, this is pretty cool. Good find. But little evidence. He just kinda looks like him. Character designs are often reused, as there is no need to create more data. Keep on truckin'!
  15. I can assist in the twitter, if you would like. I'm pretty close to twitter, haha!
  16. urghhhhhhhhhh.... looking right now.....
  17. Found something to record. Seems to work when I tried it... http://www.extralabs.net/skype-recorder.htm
  18. I can also provide music, my own such. Just tell me what to make =)
×
×
  • 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. .