Jump to content

baltostar

Member
  • Posts

    37
  • Joined

  • Last visited

Reputation

0

About baltostar

  • Rank
    Newbie
    Newbie
  1. I disagree with part of your statement. When talking about the code, all we see are the scripts. There are a lot of things hidden in the maps that are not in the scripts. I do agree looking at the code is cheating, however I don't see any harm in looking at it to verify that what has been found is the completed form of the Easter egg. (Though I wish the would encrypt the scripts as well, that way people don't cheat and post all the steps when the game is first released.)
  2. I don't recommend this for a starting language. Its something that COD uses for their games. If you want to learn coding, I recommend you taking a java class. The code for this game is written more in a C Language style as they use Pointers to function mapping. You might want to google, Function, Method, and Struct.
  3. I personally don't see anything in code that would support the idea of shooting the soul and here is my justification: thundergun_check( model, trig, weapon_combo_spot ) { model endon( "death" ); while (1) { self waittill( "weapon_fired" ); if ( self GetCurrentWeapon() == "thundergun_upgraded_zm" ) { if ( DistanceSquared( self.origin, weapon_combo_spot.origin ) vector_to_spot = VectorNormalize( weapon_combo_spot.origin - self GetWeaponMuzzlePoint() ); vector_player_facing = self GetWeaponForwardDir(); angle_diff = acos( VectorDot( vector_to_spot, vector_player_facing ) ); if ( angle_diff flag_set( "thundergun_hit" ); RadiusDamage( trig.origin, 5, 1, 1, self ); } } } } } In this section of code you can see the math on aiming the thunder gun toward the gursh. No where else in the code is similar logic used. For your convenience, I have posted the soul release code below to show how it moves. soul_release( model, origin ) { soul = Spawn( "script_model", origin ); soul SetModel( "tag_origin" ); soul PlayLoopSound( "zmb_egg_soul" ); fx = PlayFXOnTag( level._effect["gersh_spark"], soul, "tag_origin" ); time = 20; model waittill( "death" ); level thread play_egg_vox( "vox_ann_egg6_success", "vox_gersh_egg6_success", 9 ); level thread wait_for_gersh_vox(); soul MoveZ( 2500, time, time - 1 ); wait( time ); soul Delete(); wait(2); level thread samantha_is_angry(); }
  4. activate_casimir_light( num ){ spot = GetStruct( "casimir_light_"+num, "targetname" ); if ( IsDefined( spot ) ) { light = Spawn( "script_model", spot.origin ); light SetModel( "tag_origin" ); light.angles = spot.angles; fx = PlayFXOnTag( level._effect["fx_zmb_light_floodlight_bright"], light, "tag_origin" ); level.casimir_lights[ level.casimir_lights.size ] = light; } } As seen in this code, the casimir light is a zombie flood light. spot is the location of the casimir light being looked up by the name of the location defined. It spawns a model that is a light at the location just looked up. The if (IsDefined( spot)) is not needed, but would allow the struct of the casimir light to be programmed in later and added to the code without having to update this script. "fx =" does nothing "PlayFXOnTag( level._effect["fx_zmb_light_floodlight_bright"], light, "tag_origin" );" gets the flood light effect and applies it to the now configured model "light", playing the effect at the origin of the model "light". "level.casimir_lights[ level.casimir_lights.size ] = light;" sets the model into an array so it can be latter cleaned up in the following function: weapon_combo_event() { flag_init( "thundergun_hit" ); weapon_combo_spot = GetStruct( "weapon_combo_spot", "targetname" ); focal_point = Spawn( "script_model", weapon_combo_spot.origin ); focal_point SetModel( "tag_origin" ); focal_point PlayLoopSound( "zmb_egg_notifier", 1 ); fx = PlayFXOnTag( level._effect["gersh_spark"], focal_point, "tag_origin" ); level.black_hold_bomb_target_trig = Spawn( "trigger_radius", weapon_combo_spot.origin, 0, 50, 72 ); level.black_hole_bomb_loc_check_func = ::bhb_combo_loc_check; flag_wait( "weapons_combined" ); level.black_hold_bomb_target_trig Delete(); level.black_hole_bomb_loc_check_func = undefined; focal_point Delete(); for ( i=0; i { level.casimir_lights[i] Delete(); } }
  5. Found a design artifact that shows that in solo mode zombies, the user would only loose one perk, but I don't know the reason why this code was written or when it would be called. There is no reference to this function that I can find in any of the back ops code I have. Source: _zombiemode_deathcard.gsc //----------------------------------------------------------------------------------- // solo player gets both weapons back and only loses 1 perk //----------------------------------------------------------------------------------- deathcard_give_solo() { dc = level.deathcards[0]; // perks self maps\_zombiemode::laststand_giveback_player_perks(); take = true; startWeapon = dc.weapon[dc.current_weapon]; if ( startWeapon == "m1911_zm" ) { take = false; } currentWeapon = self GetCurrentWeapon(); if ( currentWeapon != "none" && take ) { self TakeWeapon( currentWeapon ); } for ( i = 0; i { if ( IsDefined( dc.weapon[i] ) ) { weapon = dc.weapon[i]; if ( weapon != "m1911_zm" || take ) { self GiveWeapon( weapon, 0 ); self SetWeaponAmmoClip( weapon, WeaponClipSize( weapon ) ); self GiveStartAmmo( weapon ); } } } if ( dc.current_weapon >= 0 && take ) { self SwitchToWeapon( dc.weapon[dc.current_weapon], 0 ); } // score //self.old_score += dc.score; //self.score += dc.score; // abilities //if ( IsDefined( dc.curr_ability ) ) //{ // self maps\_zombiemode_ability::giveAbility( dc.curr_ability ); // self maps\_zombiemode_ability::update_player_ability_status(); //} if ( maps\_zombiemode_weap_cymbal_monkey::cymbal_monkey_exists() ) { if ( dc.zombie_cymbal_monkey_count ) { self giveweapon( "zombie_cymbal_monkey" ); self setweaponammoclip( "zombie_cymbal_monkey", dc.zombie_cymbal_monkey_count ); } } }
  6. looking at the _zombie mode.gsc file, I found this line to exclude all perks from displaying low ammo. Just more of an interesting find but doesn't provide much incite. if(!isDefined(weap) || weap == "none" || weap == "zombie_perk_bottle_doubletap" || weap == "zombie_perk_bottle_jugg" || weap == "zombie_perk_bottle_revive" || weap == "zombie_perk_bottle_sleight" || weap == "mine_bouncing_betty" || weap == "claymore_zm" || weap == "syrette_sp" || weap == "zombie_knuckle_crack" || weap == "zombie_bowie_flourish" || issubstr( weap, "knife_ballistic_" ) || ( GetSubStr( weap, 0, 3) == "gl_" ) ) Source: track_players_ammo_count() { self endon("disconnect"); self endon("death"); wait(5); while(1) { players = get_players(); for(i=0;i { if(!IsDefined (players[i].player_ammo_low)) { players[i].player_ammo_low = 0; } if(!IsDefined(players[i].player_ammo_out)) { players[i].player_ammo_out = 0; } weap = players[i] getcurrentweapon(); //iprintln("current weapon: " + weap); //iprintlnbold(weap); //Excludes all Perk based 'weapons' so that you don't get low ammo spam. if(!isDefined(weap) || weap == "none" || weap == "zombie_perk_bottle_doubletap" || weap == "zombie_perk_bottle_jugg" || weap == "zombie_perk_bottle_revive" || weap == "zombie_perk_bottle_sleight" || weap == "mine_bouncing_betty" || weap == "claymore_zm" || weap == "syrette_sp" || weap == "zombie_knuckle_crack" || weap == "zombie_bowie_flourish" || issubstr( weap, "knife_ballistic_" ) || ( GetSubStr( weap, 0, 3) == "gl_" ) ) { continue; } //iprintln("checking ammo for " + weap); if ( players[i] GetAmmoCount( weap ) > 5) { continue; } if ( players[i] maps\_laststand::player_is_in_laststand() ) { continue; } else if (players[i] GetAmmoCount( weap ) 0) { if (players[i].player_ammo_low != 1 ) { players[i].player_ammo_low = 1; players[i] maps\_zombiemode_audio::create_and_play_dialog( "general", "ammo_low" ); players[i] thread ammo_dialog_timer(); } } else if (players[i] GetAmmoCount( weap ) == 0) { if(!isDefined(weap) || weap == "none") { continue; } wait(2); if( players[i].player_ammo_out != 1 ) { players[i].player_ammo_out = 1; players[i] maps\_zombiemode_audio::create_and_play_dialog( "general", "ammo_out" ); players[i] thread ammoout_dialog_timer(); } } else { continue; } } wait(.5); } }
  7. HoboRisesAgain, if you look at the second code block that you quoted, it is rather clear that "level thread soul_release( self, trig.origin );" is only called when ray gun, thunder gun, and dolls have hit the gursh device. Cross bow is set true in the code, but is never used within the scope of the function.
  8. This thread was created after the video was made. I can only analyze the code and give you my view on it. I never said you had to agree with me. People should use there own judgment on what they read. Note that I never took credit for finding this error in code. I my self over looked it. That is why I gave a complement to the poster of this thread.
  9. Please the code in question as I can't find any reference to zombie_flood_light_bright in the code. I am not sure what you don't understand. I'm posting the code outside of a code block so I can show you the ending sequence: soul_release( model, origin ) { soul = Spawn( "script_model", origin ); soul SetModel( "tag_origin" ); soul PlayLoopSound( "zmb_egg_soul" ); fx = PlayFXOnTag( level._effect["gersh_spark"], soul, "tag_origin" ); time = 20; model waittill( "death" ); level thread play_egg_vox( "vox_ann_egg6_success", "vox_gersh_egg6_success", 9 ); level thread wait_for_gersh_vox(); soul MoveZ( 2500, time, time - 1 ); wait( time ); soul Delete(); wait(2); level thread samantha_is_angry(); } wait_for_gersh_vox() { wait(12.5); players = GetPlayers(); for ( i=0; i { players thread reward_wait(); } } reward_wait() { while ( !is_player_valid( self ) || ( self UseButtonPressed() && self in_revive_trigger() ) ) { wait( 1.0 ); } level thread maps\_zombiemode_powerups::minigun_weapon_powerup( self, 90 ); }
  10. I reviewed the question code and have determined why cross bow doesn't matter: wait_for_combo( trig ) { self endon( "death" ); self thread kill_trig_on_death( trig ); weapon_combo_spot = GetStruct( "weapon_combo_spot", "targetname" ); ray_gun_hit = false; doll_hit = false; crossbow_hit = false; players = get_players(); array_thread( players, ::thundergun_check, self, trig, weapon_combo_spot ); while ( 1 ) { trig waittill( "damage", amount, attacker, dir, org, mod ); if ( isDefined( attacker ) ) { if ( mod == "MOD_PROJECTILE_SPLASH" && (attacker GetCurrentWeapon() == "ray_gun_upgraded_zm" ) ) { ray_gun_hit = true; } else if ( mod == "MOD_GRENADE_SPLASH" ) { if ( amount >= 90000 ) { doll_hit = true; } else if ( attacker GetCurrentWeapon() == "crossbow_explosive_upgraded_zm" ){ crossbow_hit = true; } } if ( ray_gun_hit && doll_hit && flag( "thundergun_hit" ) ) { flag_set( "weapons_combined" ); level thread soul_release( self, trig.origin ); return; } } } } Unlike ray_gun_hit and doll_hit, crossbow_hit is never used. The logic was put in to set it true but as seen here, it is never referenced to end the Easter egg: if ( ray_gun_hit && doll_hit && flag( "thundergun_hit" ) ) { flag_set( "weapons_combined" ); level thread soul_release( self, trig.origin ); return; } Line: if ( ray_gun_hit && doll_hit && flag( "thundergun_hit" ) ) { This states that the ray gun hits once, the doll hits at least once and the thunder gun hits once to activate the end of the Easter egg: level thread soul_release( self, trig.origin ); Explanation: Based on how the code is constructed, this looks more like a bug that wasn't caught in testing. When reviewing it the first time, even I missed the fact that the cross bow wasn't being checked in the last if statement. This was a good find. Thank you for creating the post.
  11. I'm sorry, but I don't see how this thread has died out. Useful information has been posted here and this thread has been reference in several other topics. As I've said in the past, I'm a Software Engineer with over 5 years of experience. If you or anyone has a valid question about the code or will like to discuss a given topic, then simply ask. -------- New Related Topics: WhosOnFirst post on code relating to the rocket trap that was never fully implemented: http://www.callofdutyzombies.com/forum/viewtopic.php?f=60&t=8302
  12. The last 7 posts don't really discuss the topic of this thread. The topic of this tread is to get the lander to fly to another location, station 2. Not to get to another location in the game by glitching. Glitching around doesn't prove anything. The game has to be modded in order to get the lander to fly to station 2. Not by adding a flight path, but by triggering a flight path that already exists. Even if its the starting location that we are flying from; the lander would then fly back there.
  13. Alright. I have no idea why others around here at my school say that they where treated poorly but that's what rumors are. I just wanted some facts and you made a good point at the source of that info.
  14. I've heard rumors floating around that the programmers where treated rather poorly and that there was a large turn around on programmers. (Programmers are higher-ed and then leave after a short time). Does anyone know anything more about this as I don't have any evidence to support the rumors. One site says that many of the workers treated black ops as a job. http://www.careerbliss.com/company-reviews/black-ops-entertainment-reviews-2317874/review-354547/
×
×
  • 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. .