Page 2 of 3 FirstFirst 123 LastLast
Results 16 to 30 of 44
  1. #16
    lolhack8808's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    world
    Posts
    120
    Reputation
    10
    Thanks
    6
    this is awesome.

  2. #17
    Insane's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Posts
    9,057
    Reputation
    1007
    Thanks
    2,013
    Quote Originally Posted by lolhack8808 View Post
    this is awesome.
    wow stupid newb...
    this is a plan not release, how could you know if it is awesome or not??

    Ex Middleman

  3. #18
    Eddwiinn's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    Holland
    Posts
    180
    Reputation
    12
    Thanks
    87
    My Mood
    Amused
    Quote Originally Posted by Insane View Post


    wow stupid newb...
    this is a plan not release, how could you know if it is awesome or not??
    cause the f*cker need some post for some reason

    Lalalalala...
    _______________

    I'm already fucking wasted. So now we dance.!



  4. #19
    rathynia's Avatar
    Join Date
    Mar 2009
    Gender
    male
    Location
    Modern Warfare 2 Section.
    Posts
    457
    Reputation
    126
    Thanks
    538
    My Mood
    Aggressive
    Quote Originally Posted by Insane View Post


    wow stupid newb...
    this is a plan not release, how could you know if it is awesome or not??
    Insane, what the fuck is wrong with you seriously?
    Every post here is a put down personally, I'm hoping you get banned for spamming or something I'm starting to think twice about you just get the fuck off of this thread seriously?
    Nothing Is "Impossible" For The Word Itself Says "I'm Possible".
    If you get a thank from me you better act like it's a reward, because I don't give them out easily.

    Computer Specs:
    Processor - AMD Athlon(tm) II X4 640 Processor 3.0 GHz (Not OverClocked)
    RAM - 8.0 GB
    OS - Microsoft Windows 7 Ultimate Edition 64-bit
    Video Card - GeForce GTX 550 Ti
    Video RAM 4.0 GB
    Pixel Shader version 5.0
    Vertex Shader version 5.0
    Sound Card - NVIDIA High Definition Audio
    Disk space - 1,640 GB

  5. #20
    jdude399's Avatar
    Join Date
    Jan 2010
    Gender
    male
    Posts
    5
    Reputation
    10
    Thanks
    3
    My Mood
    Inspired
    This looks Like alot of fun!! Great job!!

    I hope this Gets Accepted!! Plz

  6. #21
    Eddwiinn's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    Holland
    Posts
    180
    Reputation
    12
    Thanks
    87
    My Mood
    Amused
    Quote Originally Posted by jdude399 View Post
    This looks Like alot of fun!! Great job!!

    I hope this Gets Accepted!! Plz
    omg dude can you read or not ?
    its an idea and he search for modders to help him ^^

    Lalalalala...
    _______________

    I'm already fucking wasted. So now we dance.!



  7. #22
    oktane's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Posts
    29
    Reputation
    10
    Thanks
    14
    My Mood
    Happy
    I played on a server with tath mod, i pass you an image with the IP of the host, and my personage with the prop and commands, to have an idea, the hiders dont have any weapon, only the knife, and the seekers start with the black screen 30 seconds, to wait until the other team hides, and when you press 2 you have the M41A, Gold Desert Eagle and intervention. Sorry for my english, if you don't understand something say me, I'm Spanish /


  8. #23
    Josephlittle™'s Avatar
    Join Date
    May 2010
    Gender
    male
    Location
    GSC Modding Section
    Posts
    1,345
    Reputation
    26
    Thanks
    562
    My Mood
    Devilish
    Quote Originally Posted by oktane View Post
    I played on a server with tath mod, i pass you an image with the IP of the host, and my personage with the prop and commands, to have an idea, the hiders dont have any weapon, only the knife, and the seekers start with the black screen 30 seconds, to wait until the other team hides, and when you press 2 you have the M41A, Gold Desert Eagle and intervention. Sorry for my english, if you don't understand something say me, I'm Spanish /

    Damn, i hope we can make a "better work"?

  9. #24
    oktane's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Posts
    29
    Reputation
    10
    Thanks
    14
    My Mood
    Happy
    Ok, a friend of AIW pass me the code of the game props from cod4, I don't have suficient skill to do a decent mod, and maybe is helpful for kamielftw to do the mod, I paste de code Here:

    Code:
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    //******************* \\
    // PROPS MOD BY SEVEN \\
    //******************* \\
    
    main()
    {
       if(getdvar("mapname") == "mp_background")
          return;
       
       maps\mp\gametypes\_globallogic::init();
       maps\mp\gametypes\_callbacksetup::SetupCallbacks();
       maps\mp\gametypes\_globallogic::SetupCallbacks();
       
       maps\mp\gametypes\_globallogic::registerRoundSwitchDvar( level.gameType, 1, 0, 9 );
       maps\mp\gametypes\_globallogic::registerTimeLimitDvar( level.gameType, 2.5, 0, 1440 );
       maps\mp\gametypes\_globallogic::registerScoreLimitDvar( level.gameType, 4, 0, 500 );
       maps\mp\gametypes\_globallogic::registerRoundLimitDvar( level.gameType, 0, 0, 12 );
       maps\mp\gametypes\_globallogic::registerNumLivesDvar( level.gameType, 1, 0, 10 );
       
       level.teamBased = true;
       level.overrideTeamScore = true;
       level.onPrecacheGameType = ::onPrecacheGameType;
       level.onStartGameType = ::onStartGameType;
       level.onSpawnPlayer = ::onSpawnPlayer;
       level.onPlayerKilled = ::onPlayerKilled;
       level.onDeadEvent = ::onDeadEvent;
       level.onOneLeftEvent = ::onOneLeftEvent;
       level.onTimeLimit = ::onTimeLimit;
       level.onRoundSwitch = ::onRoundSwitch;
       
       level.endGameOnScoreLimit = false;
       
       game["dialog"]["gametype"] = "searchdestroy";
       game["dialog"]["offense_obj"] = "obj_destroy";
       game["dialog"]["defense_obj"] = "obj_defend";
    }
    
    
    onPrecacheGameType()
    {
       game["bombmodelname"] = "mil_tntbomb_mp";
       game["bombmodelnameobj"] = "mil_tntbomb_mp";
       game["bomb_dropped_sound"] = "mp_war_objective_lost";
       game["bomb_recovered_sound"] = "mp_war_objective_taken";
       precacheModel(game["bombmodelname"]);
       precacheModel(game["bombmodelnameobj"]);
    
       precacheShader("waypoint_bomb");
       precacheShader("hud_suitcase_bomb");
       precacheShader("waypoint_target");
       precacheShader("waypoint_target_a");
       precacheShader("waypoint_target_b");
       precacheShader("waypoint_defend");
       precacheShader("waypoint_defend_a");
       precacheShader("waypoint_defend_b");
       precacheShader("waypoint_defuse");
       precacheShader("waypoint_defuse_a");
       precacheShader("waypoint_defuse_b");
       precacheShader("compass_waypoint_target");
       precacheShader("compass_waypoint_target_a");
       precacheShader("compass_waypoint_target_b");
       precacheShader("compass_waypoint_defend");
       precacheShader("compass_waypoint_defend_a");
       precacheShader("compass_waypoint_defend_b");
       precacheShader("compass_waypoint_defuse");
       precacheShader("compass_waypoint_defuse_a");
       precacheShader("compass_waypoint_defuse_b");
       
       precacheString( &"MP_EXPLOSIVES_RECOVERED_BY" );
       precacheString( &"MP_EXPLOSIVES_DROPPED_BY" );
       precacheString( &"MP_EXPLOSIVES_PLANTED_BY" );
       precacheString( &"MP_EXPLOSIVES_DEFUSED_BY" );
       precacheString( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
       precacheString( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
       precacheString( &"MP_CANT_PLANT_WITHOUT_BOMB" );   
       precacheString( &"MP_PLANTING_EXPLOSIVE" );   
       precacheString( &"MP_DEFUSING_EXPLOSIVE" );   
       
       
       if( getdvar( "mapname" ) == "mp_broadcast" )
       {
          precacheModel( "com_northafrica_armoire_short" );
          precacheModel( "me_refrigerator" );
          precacheModel( "me_refrigerator2" );
          precacheModel( "me_satellitedish" );
          precacheModel( "ch_furniture_couch01" );
          precacheModel( "com_lamp_ornate_on" );
          precacheModel( "com_paintcan" );
          precacheModel( "com_trashbag1_black" );
          precacheModel( "com_cardboardbox01" );
          precacheModel( "com_cardboardbox03" );
          precacheModel( "com_barrel_white" );
          precacheModel( "me_streetlightdual" );
          precacheModel( "me_dumpster_close" );
          precacheModel( "com_pallet_stack" );
          precacheModel( "com_computer_case" );
          precacheModel( "com_laptop_open" );
          precacheModel( "com_office_chair_black" );
          precacheModel( "com_photocopier" );
          precacheModel( "com_computer_monitor" );
          precacheModel( "tvs_column_1" );
          precacheModel( "com_cafe_chair2" );
          precacheModel( "com_widescreen_monitor_on_1" );
          precacheModel( "com_widescreen_monitor" );
          precacheModel( "com_trashcan_metal" );
          precacheModel( "com_cafe_chair" );
          precacheModel( "com_cardboardbox04" );
          precacheModel( "com_stepladder_large" );
          precacheModel( "com_cardboardbox06" );
          precacheModel( "com_cardboardbox02" );
          precacheModel( "com_vending_can_old2_lit" );
          precacheModel( "com_trashcan" );
          precacheModel( "com_vending_can_new1_lit" );
          precacheModel( "bathroom_toilet" );
          precacheModel( "me_market_stand1" );
          precacheModel( "com_restaurantstainlessteelshelf_02" );
          precacheModel( "com_red_toolbox" );
          precacheModel( "me_concrete_barrier" );
          precacheModel( "com_cafe_table2" );
          precacheModel( "com_speaker" );
          precacheModel( "com_fire_extinguisher" );
          precacheModel( "bog_b_cinderblock_clutter" );
          precacheModel( "com_computer_mouse" );
          precacheModel( "com_widescreen_monitor_3" );
          precacheModel( "com_widescreen_monitor_on_3" );
          precacheModel( "com_propane_tank" );
          precacheModel( "com_office_lamp02" );
          precacheModel( "com_office_lamp01" );
          precacheModel( "com_laptop_close" );
          precacheModel( "com_copypaper_box" );
          precacheModel( "com_laptop_2_open" );
       }
       else if( getDvar( "mapname" ) == "mp_bog" )
       {
          precacheModel( "me_wood_cage_large" );
          precacheModel( "me_wood_cage_small" );
          precacheModel( "me_electricbox4" );
          precacheModel( "me_market_stand1" );
          precacheModel( "ch_dinerboothchair" );
          precacheModel( "ch_dinerboothtable" );
          precacheModel( "me_refrigerator" );
          precacheModel( "me_refrigerator2" );
          precacheModel( "ch_dinercounterchair" );
          precacheModel( "me_dumpster_close" );
          precacheModel( "com_cafe_table1" );
          precacheModel( "com_wagon_donkey" );
          precacheModel( "com_trashcan_metal" );
          precacheModel( "me_market_stand4" );
          precacheModel( "bc_militarytent_wood_table" );
          precacheModel( "me_woodcrateclosed" );
          precacheModel( "me_box_citrusfruitopenshort_1" );
          precacheModel( "com_cardboardboxshortopen_1" );
          precacheModel( "com_cardboardboxshortclosed_1" );
          precacheModel( "me_woodcrateopen" );
          precacheModel( "com_cardboardboxshortopen_3" );
          precacheModel( "com_cardboardboxshortclosed_2" );
          precacheModel( "me_citrus_box1" );
          precacheModel( "me_plastic_crate1" );
          precacheModel( "me_tomato_crate1" );
          precacheModel( "com_cardboardbox04" );
          precacheModel( "com_trashcan_metal_with_trash" );
          precacheModel( "com_cardboardbox01" );
          precacheModel( "me_banana_box1" );
          precacheModel( "me_streetlight" );
          precacheModel( "com_restaurantsink_1comp" );
          precacheModel( "ch_washer_01" );
          precacheModel( "com_barrel_fire" );
          precacheModel( "me_concrete_barrier" );
          precacheModel( "ch_crate48x64" );
          precacheModel( "me_dumpster" );
          precacheModel( "com_cafe_chair" );
          precacheModel( "bog_b_cinderblock_clutter" );
          precacheModel( "com_red_toolbox" );
          precacheModel( "com_pail_metal1" );
          precacheModel( "com_cash_register" );
          precacheModel( "com_barrel_blue_rust" );
          precacheModel( "com_barrel_white_rust" );
          precacheModel( "com_barrel_green" );
          precacheModel( "com_junktire" );
       }
       else if( getDvar( "mapname" ) == "mp_vacant" )
       {
          precacheModel( "com_barrel_white_rust" );
          precacheModel( "com_barrel_blue_rust" );
          precacheModel( "com_pallet_2" );
          precacheModel( "com_filecabinetblackclosed" );
          precacheModel( "com_photocopier" );
          precacheModel( "com_plasticcase_green_big" );
          precacheModel( "com_office_chair_black" );
          precacheModel( "com_office_book_set1" );
          precacheModel( "ch_furniture_couch01" );
          precacheModel( "com_locker_double" );
          precacheModel( "com_locker_open" );
          precacheModel( "com_locker_single" );
          precacheModel( "me_refrigerator" );
          precacheModel( "com_coffee_machine" );
          precacheModel( "com_sheet_chair" );
          precacheModel( "me_streetlight" );
          precacheModel( "me_telegraphpole" );
          precacheModel( "com_paintcan" );
          precacheModel( "com_trashbag1_black" );
          precacheModel( "ch_crate32x48" );
          precacheModel( "com_cardboardboxshortclosed_2" );
          precacheModel( "com_cardboardboxshortopen_2" );
          precacheModel( "com_cardboardboxshortopen_3" );
          precacheModel( "com_bike" );
          precacheModel( "me_concrete_barrier" );
          precacheModel( "com_widescreen_monitor" );
          precacheModel( "com_computer_keyboard" );
          precacheModel( "com_telephone_desk" );
          precacheModel( "com_widescreen_monitor_2" );
          precacheModel( "com_widescreen_monitor_3" );
          precacheModel( "com_computer_case" );
          precacheModel( "com_vcr" );
          precacheModel( "com_office_lamp02" );
          precacheModel( "com_transistor_radio" );
          precacheModel( "com_pot_metal" );
          precacheModel( "com_pan_copper" );
          precacheModel( "com_red_toolbox" );
          precacheModel( "me_plastic_crate3" );
          precacheModel( "com_propane_tank" );
          precacheModel( "com_tv2_d" );
          precacheModel( "me_plastic_crate1" );
          precacheModel( "me_plastic_crate2" );
          precacheModel( "com_junktire" );
          precacheModel( "com_copypaper_box" );
          precacheModel( "bc_militarytent_wood_table" );
       }
          precacheModel( "body_mp_arab_regular_cqb" );
          precacheModel( "head_mp_arab_regular_headwrap" );
    }
    
    onRoundSwitch()
    {
       if ( !isdefined( game["switchedsides"] ) )
          game["switchedsides"] = false;
       
       if ( game["teamScores"]["allies"] == level.scorelimit - 1 && game["teamScores"]["axis"] == level.scorelimit - 1 )
       {
          // overtime! team that's ahead in kills gets to defend.
          aheadTeam = getBetterTeam();
          if ( aheadTeam != game["defenders"] )
          {
             game["switchedsides"] = !game["switchedsides"];
          }
          else
          {
             level.halftimeSubCaption = "";
          }
          level.halftimeType = "overtime";
       }
       else
       {
          level.halftimeType = "halftime";
          game["switchedsides"] = !game["switchedsides"];
       }
    }
    
    getBetterTeam()
    {
       kills["allies"] = 0;
       kills["axis"] = 0;
       deaths["allies"] = 0;
       deaths["axis"] = 0;
       
       for ( i = 0; i < level.players.size; i++ )
       {
          player = level.players[i];
          team = player.pers["team"];
          if ( isDefined( team ) && (team == "allies" || team == "axis") )
          {
             kills[ team ] += player.kills;
             deaths[ team ] += player.deaths;
          }
       }
       
       if ( kills["allies"] > kills["axis"] )
          return "allies";
       else if ( kills["axis"] > kills["allies"] )
          return "axis";
       
       // same number of kills
    
       if ( deaths["allies"] < deaths["axis"] )
          return "allies";
       else if ( deaths["axis"] < deaths["allies"] )
          return "axis";
       
       // same number of deaths
       
       if ( randomint(2) == 0 )
          return "allies";
       return "axis";
    }
    
    onStartGameType()
    {
       if ( !isDefined( game["switchedsides"] ) )
          game["switchedsides"] = false;
       
       if ( game["switchedsides"] )
       {
          oldAttackers = game["attackers"];
          oldDefenders = game["defenders"];
          game["attackers"] = oldDefenders;
          game["defenders"] = oldAttackers;
       }
       
       setClientNameMode( "auto_change" );
       
       game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED";
       game["strings"]["bomb_defused"] = &"MP_BOMB_DEFUSED";
       
       precacheString( game["strings"]["target_destroyed"] );
       precacheString( game["strings"]["bomb_defused"] );
    
       level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
       
       maps\mp\gametypes\_globallogic::setObjectiveText( game["attackers"], &"OBJECTIVES_SD_ATTACKER" );
       maps\mp\gametypes\_globallogic::setObjectiveText( game["defenders"], &"OBJECTIVES_SD_DEFENDER" );
    
       if ( level.splitscreen )
       {
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["attackers"], &"OBJECTIVES_SD_ATTACKER" );
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["defenders"], &"OBJECTIVES_SD_DEFENDER" );
       }
       else
       {
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_SCORE" );
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_SCORE" );
       }
       maps\mp\gametypes\_globallogic::setObjectiveHintText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_HINT" );
       maps\mp\gametypes\_globallogic::setObjectiveHintText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_HINT" );
    
       level.spawnMins = ( 0, 0, 0 );
       level.spawnMaxs = ( 0, 0, 0 );   
       maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_attacker" );
       maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_defender" );
       
       level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
       setMapCenter( level.mapCenter );
       
       allowed[0] = "dm";
       //allowed[1] = "bombzone";
       //allowed[2] = "blocker";
       maps\mp\gametypes\_gameobjects::main(allowed);
       
       maps\mp\gametypes\_rank::registerScoreInfo( "win", 2 );
       maps\mp\gametypes\_rank::registerScoreInfo( "loss", 1 );
       maps\mp\gametypes\_rank::registerScoreInfo( "tie", 1.5 );
       
       maps\mp\gametypes\_rank::registerScoreInfo( "kill", 5 );
       maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 5 );
       maps\mp\gametypes\_rank::registerScoreInfo( "assist", 2 );
       maps\mp\gametypes\_rank::registerScoreInfo( "plant", 10 );
       maps\mp\gametypes\_rank::registerScoreInfo( "defuse", 10 );
       maps\mp\gametypes\_rank::registerScoreInfo( "live", 100 );
       
       thread updateGametypeDvars();
       
       //thread bombs();
    }
    
    
    onSpawnPlayer()
    {
       self.isPlanting = false;
       self.isDefusing = false;
       self.isBombCarrier = false;
    
       if(self.pers["team"] == game["attackers"])
          spawnPointName = "mp_sd_spawn_attacker";
       else
          spawnPointName = "mp_sd_spawn_defender";
    
       spawnPoints = getEntArray( spawnPointName, "classname" );
       assert( spawnPoints.size );
       spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
    
       self spawn( spawnpoint.origin, spawnpoint.angles );
    
       level notify ( "spawned_player" );
    }
    
    
    onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
    {
       thread checkAllowSpectating();
    }
    
    
    checkAllowSpectating()
    {
       wait ( 0.05 );
       
       update = false;
       if ( !level.aliveCount[ game["attackers"] ] )
       {
          level.spectateOverride[game["attackers"]].allowEnemySpectate = 1;
          update = true;
       }
       if ( !level.aliveCount[ game["defenders"] ] )
       {
          level.spectateOverride[game["defenders"]].allowEnemySpectate = 1;
          update = true;
       }
       if ( update )
          maps\mp\gametypes\_spectating::updateSpectateSettings();
    }
    
    
    sd_endGame( winningTeam, endReasonText )
    {
       if ( isdefined( winningTeam ) )
          [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
       
       thread maps\mp\gametypes\_globallogic::endGame( winningTeam, endReasonText );
    }
    
    
    onDeadEvent( team )
    {
       if ( team == "all" )
       {
          sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
       }
       else if ( team == game["attackers"] )
       {
          sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
       }
       else if ( team == game["defenders"] )
       {
          sd_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] );
       }
    }
    
    
    onOneLeftEvent( team )
    {
       warnLastPlayer( team );
    }
    
    
    onTimeLimit()
    {
       if ( level.teamBased )
          sd_endGame( game["defenders"], game["strings"]["time_limit_reached"] );
       else
          sd_endGame( undefined, game["strings"]["time_limit_reached"] );
    }
    
    
    warnLastPlayer( team )
    {
       if ( !isdefined( level.warnedLastPlayer ) )
          level.warnedLastPlayer = [];
       
       if ( isDefined( level.warnedLastPlayer[team] ) )
          return;
          
       level.warnedLastPlayer[team] = true;
    
       players = level.players;
       for ( i = 0; i < players.size; i++ )
       {
          player = players[i];
    
          if ( isDefined( player.pers["team"] ) && player.pers["team"] == team && isdefined( player.pers["class"] ) )
          {
             if ( player.sessionstate == "playing" && !player.afk )
                break;
          }
       }
       
       if ( i == players.size )
          return;
       
       players[i] thread giveLastAttackerWarning();
    }
    
    
    giveLastAttackerWarning()
    {
       self endon("death");
       self endon("disconnect");
       
       fullHealthTime = 0;
       interval = .05;
       
       while(1)
       {
          if ( self.health != self.maxhealth )
             fullHealthTime = 0;
          else
             fullHealthTime += interval;
          
          wait interval;
          
          if (self.health == self.maxhealth && fullHealthTime >= 3)
             break;
       }
       
       //self iprintlnbold(&"MP_YOU_ARE_THE_ONLY_REMAINING_PLAYER");
       self maps\mp\gametypes\_globallogic::leaderDialogOnPlayer( "last_alive" );
       
       self maps\mp\gametypes\_missions::lastManSD();
    }
    
    
    updateGametypeDvars()
    {
       level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 );
       level.defuseTime = dvarFloatValue( "defusetime", 5, 0, 20 );
       level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 );
       level.multiBomb = dvarIntValue( "multibomb", 0, 0, 1 );
    }
    
    
    bombs()
    {
       level.bombPlanted = false;
       level.bombDefused = false;
       level.bombExploded = false;
    
       trigger = getEnt( "sd_bomb_pickup_trig", "targetname" );
       if ( !isDefined( trigger ) )
       {
          maps\mp\_utility::error("No sd_bomb_pickup_trig trigger found in map.");
          return;
       }
       
       visuals[0] = getEnt( "sd_bomb", "targetname" );
       if ( !isDefined( visuals[0] ) )
       {
          maps\mp\_utility::error("No sd_bomb script_model found in map.");
          return;
       }
    
       precacheModel( "prop_suitcase_bomb" );   
       visuals[0] setModel( "prop_suitcase_bomb" );
       
       if ( !level.multiBomb )
       {
          level.sdBomb = maps\mp\gametypes\_gameobjects::createCarryObject( game["attackers"], trigger, visuals, (0,0,32) );
          level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "friendly" );
          level.sdBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" );
          level.sdBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "friendly" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" );
          level.sdBomb.allowWeapons = true;
          level.sdBomb.onPickup = ::onPickup;
          level.sdBomb.onDrop = ::onDrop;
       }
       else
       {
          trigger delete();
          visuals[0] delete();
       }
       
       
       level.bombZones = [];
       
       bombZones = getEntArray( "bombzone", "targetname" );
       
       for ( index = 0; index < bombZones.size; index++ )
       {
          trigger = bombZones[index];
          visuals = getEntArray( bombZones[index].target, "targetname" );
          
          bombZone = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,64) );
          bombZone maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
          bombZone maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime );
          bombZone maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" );
          bombZone maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
          if ( !level.multiBomb )
             bombZone maps\mp\gametypes\_gameobjects::setKeyObject( level.sdBomb );
          label = bombZone maps\mp\gametypes\_gameobjects::getLabel();
          bombZone.label = label;
          bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" + label );
          bombZone maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" + label );
          bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" + label );
          bombZone maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_target" + label );
          bombZone maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
          bombZone.onBeginUse = ::onBeginUse;
          bombZone.onEndUse = ::onEndUse;
          bombZone.onUse = ::onUsePlantObject;
          bombZone.onCantUse = ::onCantUse;
          bombZone.useWeapon = "briefcase_bomb_mp";
          
          for ( i = 0; i < visuals.size; i++ )
          {
             if ( isDefined( visuals[i].script_exploder ) )
             {
                bombZone.exploderIndex = visuals[i].script_exploder;
                break;
             }
          }
          
          level.bombZones[level.bombZones.size] = bombZone;
          
          bombZone.bombDefuseTrig = getent( visuals[0].target, "targetname" );
          assert( isdefined( bombZone.bombDefuseTrig ) );
          bombZone.bombDefuseTrig.origin += (0,0,-10000);
          bombZone.bombDefuseTrig.label = label;
       }
       
       for ( index = 0; index < level.bombZones.size; index++ )
       {
          array = [];
          for ( otherindex = 0; otherindex < level.bombZones.size; otherindex++ )
          {
             if ( otherindex != index )
                array[ array.size ] = level.bombZones[otherindex];
          }
          level.bombZones[index].otherBombZones = array;
       }
    }
    
    onBeginUse( player )
    {
       if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
       {
          player playSound( "mp_bomb_defuse" );
          player.isDefusing = true;
          
          if ( isDefined( level.sdBombModel ) )
             level.sdBombModel hide();
       }
       else
       {
          player.isPlanting = true;
    
          if ( level.multibomb )
          {
             for ( i = 0; i < self.otherBombZones.size; i++ )
             {
                self.otherBombZones[i] maps\mp\gametypes\_gameobjects::disableObject();
             }
          }
       }
    }
    
    onEndUse( team, player, result )
    {
       if ( !isAlive( player ) )
          return;
          
       player.isDefusing = false;
       player.isPlanting = false;
    
       if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
       {
          if ( isDefined( level.sdBombModel ) && !result )
          {
             level.sdBombModel show();
          }
       }
       else
       {
          if ( level.multibomb && !result )
          {
             for ( i = 0; i < self.otherBombZones.size; i++ )
             {
                self.otherBombZones[i] maps\mp\gametypes\_gameobjects::enableObject();
             }
          }
       }
    }
    
    onCantUse( player )
    {
       player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" );
    }
    
    onUsePlantObject( player )
    {
       // planted the bomb
       if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
       {
          level thread bombPlanted( self, player );
          player logString( "bomb planted: " + self.label );
          
          // disable all bomb zones except this one
          for ( index = 0; index < level.bombZones.size; index++ )
          {
             if ( level.bombZones[index] == self )
                continue;
                
             level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
          }
          
          player playSound( "mp_bomb_plant" );
          player notify ( "bomb_planted" );
          if ( !level.hardcoreMode )
             iPrintLn( &"MP_EXPLOSIVES_PLANTED_BY", player );
          maps\mp\gametypes\_globallogic::leaderDialog( "bomb_planted" );
    
          maps\mp\gametypes\_globallogic::givePlayerScore( "plant", player );
          player thread [[level.onXPEvent]]( "plant" );
       }
    }
    
    onUseDefuseObject( player )
    {
       wait .05;
       
       player notify ( "bomb_defused" );
       player logString( "bomb defused: " + self.label );
       level thread bombDefused();
       
       // disable this bomb zone
       self maps\mp\gametypes\_gameobjects::disableObject();
       
       if ( !level.hardcoreMode )
          iPrintLn( &"MP_EXPLOSIVES_DEFUSED_BY", player );
       maps\mp\gametypes\_globallogic::leaderDialog( "bomb_defused" );
    
       maps\mp\gametypes\_globallogic::givePlayerScore( "defuse", player );
       player thread [[level.onXPEvent]]( "defuse" );
    }
    
    
    onDrop( player )
    {
       if ( !level.bombPlanted )
       {
          if ( isDefined( player ) && isDefined( player.name ) )
             printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", game["attackers"], player );
    
    //      maps\mp\gametypes\_globallogic::leaderDialog( "bomb_lost", player.pers["team"] );
          if ( isDefined( player ) )
              player logString( "bomb dropped" );
           else
              logString( "bomb dropped" );
       }
    
       self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
       
       maps\mp\_utility::playSoundOnPlayers( game["bomb_dropped_sound"], game["attackers"] );
    }
    
    
    onPickup( player )
    {
       player.isBombCarrier = true;
    
       self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
    
       if ( !level.bombDefused )
       {
          if ( isDefined( player ) && isDefined( player.name ) )
             printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", game["attackers"], player );
             
          maps\mp\gametypes\_globallogic::leaderDialog( "bomb_taken", player.pers["team"] );
          player logString( "bomb taken" );
       }      
       maps\mp\_utility::playSoundOnPlayers( game["bomb_recovered_sound"], game["attackers"] );
    }
    
    
    onReset()
    {
    }
    
    
    bombPlanted( destroyedObj, player )
    {
       maps\mp\gametypes\_globallogic::pauseTimer();
       level.bombPlanted = true;
       
       destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic::playTickingSound();
       level.tickingObject = destroyedObj.visuals[0];
    
       level.timeLimitOverride = true;
       setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) );
       setDvar( "ui_bomb_timer", 1 );
       
       if ( !level.multiBomb )
       {
          level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setDropped();
          level.sdBombModel = level.sdBomb.visuals[0];
       }
       else
       {
          
          for ( index = 0; index < level.players.size; index++ )
          {
             if ( isDefined( level.players[index].carryIcon ) )
                level.players[index].carryIcon destroyElem();
          }
    
          trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
          
          tempAngle = randomfloat( 360 );
          forward = (cos( tempAngle ), sin( tempAngle ), 0);
          forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
          dropAngles = vectortoangles( forward );
          
          level.sdBombModel = spawn( "script_model", trace["position"] );
          level.sdBombModel.angles = dropAngles;
          level.sdBombModel setModel( "prop_suitcase_bomb" );
       }
       destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" );
       destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
       /*
       destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined );
       destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined );
       destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined );
       destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined );
       */
       label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel();
       
       // create a new object to defuse with.
       trigger = destroyedObj.bombDefuseTrig;
       trigger.origin = level.sdBombModel.origin;
       visuals = [];
       defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) );
       defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
       defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
       defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
       defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
       defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
       defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label );
       defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label );
       defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label );
       defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label );
       defuseObject.label = label;
       defuseObject.onBeginUse = ::onBeginUse;
       defuseObject.onEndUse = ::onEndUse;
       defuseObject.onUse = ::onUseDefuseObject;
       defuseObject.useWeapon = "briefcase_bomb_defuse_mp";
       
       BombTimerWait();
       setDvar( "ui_bomb_timer", 0 );
       
       destroyedObj.visuals[0] maps\mp\gametypes\_globallogic::stopTickingSound();
       
       if ( level.gameEnded || level.bombDefused )
          return;
       
       level.bombExploded = true;
       
       explosionOrigin = level.sdBombModel.origin;
       level.sdBombModel hide();
       
       if ( isdefined( player ) )
          destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player );
       else
          destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20 );
       
       rot = randomfloat(360);
       explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
       triggerFx( explosionEffect );
       
       thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin );
       
       if ( isDefined( destroyedObj.exploderIndex ) )
          exploder( destroyedObj.exploderIndex );
       
       for ( index = 0; index < level.bombZones.size; index++ )
          level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
       defuseObject maps\mp\gametypes\_gameobjects::disableObject();
       
       setGameEndTime( 0 );
       
       wait 3;
       
       sd_endGame( game["attackers"], game["strings"]["target_destroyed"] );
    }
    
    BombTimerWait()
    {
       level endon("game_ended");
       level endon("bomb_defused");
       wait level.bombTimer;
    }
    
    playSoundinSpace( alias, origin )
    {
       org = spawn( "script_origin", origin );
       org.origin = origin;
       org playSound( alias  );
       wait 10; // MP doesn't have "sounddone" notifies =(
       org delete();
    }
    
    bombDefused()
    {
       level.tickingObject maps\mp\gametypes\_globallogic::stopTickingSound();
       level.bombDefused = true;
       setDvar( "ui_bomb_timer", 0 );
       
       level notify("bomb_defused");
       
       wait 1.5;
       
       setGameEndTime( 0 );
       
       sd_endGame( game["defenders"], game["strings"]["bomb_defused"] );
    }


    Xfire:jmgpsp

  10. #25
    Josephlittle™'s Avatar
    Join Date
    May 2010
    Gender
    male
    Location
    GSC Modding Section
    Posts
    1,345
    Reputation
    26
    Thanks
    562
    My Mood
    Devilish
    Quote Originally Posted by oktane View Post
    Ok, a friend of AIW pass me the code of the game props from cod4, I don't have suficient skill to do a decent mod, and maybe is helpful for kamielftw to do the mod, I paste de code Here:

    Code:
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    //******************* \\
    // PROPS MOD BY SEVEN \\
    //******************* \\
    
    main()
    {
       if(getdvar("mapname") == "mp_background")
          return;
       
       maps\mp\gametypes\_globallogic::init();
       maps\mp\gametypes\_callbacksetup::SetupCallbacks();
       maps\mp\gametypes\_globallogic::SetupCallbacks();
       
       maps\mp\gametypes\_globallogic::registerRoundSwitchDvar( level.gameType, 1, 0, 9 );
       maps\mp\gametypes\_globallogic::registerTimeLimitDvar( level.gameType, 2.5, 0, 1440 );
       maps\mp\gametypes\_globallogic::registerScoreLimitDvar( level.gameType, 4, 0, 500 );
       maps\mp\gametypes\_globallogic::registerRoundLimitDvar( level.gameType, 0, 0, 12 );
       maps\mp\gametypes\_globallogic::registerNumLivesDvar( level.gameType, 1, 0, 10 );
       
       level.teamBased = true;
       level.overrideTeamScore = true;
       level.onPrecacheGameType = ::onPrecacheGameType;
       level.onStartGameType = ::onStartGameType;
       level.onSpawnPlayer = ::onSpawnPlayer;
       level.onPlayerKilled = ::onPlayerKilled;
       level.onDeadEvent = ::onDeadEvent;
       level.onOneLeftEvent = ::onOneLeftEvent;
       level.onTimeLimit = ::onTimeLimit;
       level.onRoundSwitch = ::onRoundSwitch;
       
       level.endGameOnScoreLimit = false;
       
       game["dialog"]["gametype"] = "searchdestroy";
       game["dialog"]["offense_obj"] = "obj_destroy";
       game["dialog"]["defense_obj"] = "obj_defend";
    }
    
    
    onPrecacheGameType()
    {
       game["bombmodelname"] = "mil_tntbomb_mp";
       game["bombmodelnameobj"] = "mil_tntbomb_mp";
       game["bomb_dropped_sound"] = "mp_war_objective_lost";
       game["bomb_recovered_sound"] = "mp_war_objective_taken";
       precacheModel(game["bombmodelname"]);
       precacheModel(game["bombmodelnameobj"]);
    
       precacheShader("waypoint_bomb");
       precacheShader("hud_suitcase_bomb");
       precacheShader("waypoint_target");
       precacheShader("waypoint_target_a");
       precacheShader("waypoint_target_b");
       precacheShader("waypoint_defend");
       precacheShader("waypoint_defend_a");
       precacheShader("waypoint_defend_b");
       precacheShader("waypoint_defuse");
       precacheShader("waypoint_defuse_a");
       precacheShader("waypoint_defuse_b");
       precacheShader("compass_waypoint_target");
       precacheShader("compass_waypoint_target_a");
       precacheShader("compass_waypoint_target_b");
       precacheShader("compass_waypoint_defend");
       precacheShader("compass_waypoint_defend_a");
       precacheShader("compass_waypoint_defend_b");
       precacheShader("compass_waypoint_defuse");
       precacheShader("compass_waypoint_defuse_a");
       precacheShader("compass_waypoint_defuse_b");
       
       precacheString( &"MP_EXPLOSIVES_RECOVERED_BY" );
       precacheString( &"MP_EXPLOSIVES_DROPPED_BY" );
       precacheString( &"MP_EXPLOSIVES_PLANTED_BY" );
       precacheString( &"MP_EXPLOSIVES_DEFUSED_BY" );
       precacheString( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
       precacheString( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
       precacheString( &"MP_CANT_PLANT_WITHOUT_BOMB" );   
       precacheString( &"MP_PLANTING_EXPLOSIVE" );   
       precacheString( &"MP_DEFUSING_EXPLOSIVE" );   
       
       
       if( getdvar( "mapname" ) == "mp_broadcast" )
       {
          precacheModel( "com_northafrica_armoire_short" );
          precacheModel( "me_refrigerator" );
          precacheModel( "me_refrigerator2" );
          precacheModel( "me_satellitedish" );
          precacheModel( "ch_furniture_couch01" );
          precacheModel( "com_lamp_ornate_on" );
          precacheModel( "com_paintcan" );
          precacheModel( "com_trashbag1_black" );
          precacheModel( "com_cardboardbox01" );
          precacheModel( "com_cardboardbox03" );
          precacheModel( "com_barrel_white" );
          precacheModel( "me_streetlightdual" );
          precacheModel( "me_dumpster_close" );
          precacheModel( "com_pallet_stack" );
          precacheModel( "com_computer_case" );
          precacheModel( "com_laptop_open" );
          precacheModel( "com_office_chair_black" );
          precacheModel( "com_photocopier" );
          precacheModel( "com_computer_monitor" );
          precacheModel( "tvs_column_1" );
          precacheModel( "com_cafe_chair2" );
          precacheModel( "com_widescreen_monitor_on_1" );
          precacheModel( "com_widescreen_monitor" );
          precacheModel( "com_trashcan_metal" );
          precacheModel( "com_cafe_chair" );
          precacheModel( "com_cardboardbox04" );
          precacheModel( "com_stepladder_large" );
          precacheModel( "com_cardboardbox06" );
          precacheModel( "com_cardboardbox02" );
          precacheModel( "com_vending_can_old2_lit" );
          precacheModel( "com_trashcan" );
          precacheModel( "com_vending_can_new1_lit" );
          precacheModel( "bathroom_toilet" );
          precacheModel( "me_market_stand1" );
          precacheModel( "com_restaurantstainlessteelshelf_02" );
          precacheModel( "com_red_toolbox" );
          precacheModel( "me_concrete_barrier" );
          precacheModel( "com_cafe_table2" );
          precacheModel( "com_speaker" );
          precacheModel( "com_fire_extinguisher" );
          precacheModel( "bog_b_cinderblock_clutter" );
          precacheModel( "com_computer_mouse" );
          precacheModel( "com_widescreen_monitor_3" );
          precacheModel( "com_widescreen_monitor_on_3" );
          precacheModel( "com_propane_tank" );
          precacheModel( "com_office_lamp02" );
          precacheModel( "com_office_lamp01" );
          precacheModel( "com_laptop_close" );
          precacheModel( "com_copypaper_box" );
          precacheModel( "com_laptop_2_open" );
       }
       else if( getDvar( "mapname" ) == "mp_bog" )
       {
          precacheModel( "me_wood_cage_large" );
          precacheModel( "me_wood_cage_small" );
          precacheModel( "me_electricbox4" );
          precacheModel( "me_market_stand1" );
          precacheModel( "ch_dinerboothchair" );
          precacheModel( "ch_dinerboothtable" );
          precacheModel( "me_refrigerator" );
          precacheModel( "me_refrigerator2" );
          precacheModel( "ch_dinercounterchair" );
          precacheModel( "me_dumpster_close" );
          precacheModel( "com_cafe_table1" );
          precacheModel( "com_wagon_donkey" );
          precacheModel( "com_trashcan_metal" );
          precacheModel( "me_market_stand4" );
          precacheModel( "bc_militarytent_wood_table" );
          precacheModel( "me_woodcrateclosed" );
          precacheModel( "me_box_citrusfruitopenshort_1" );
          precacheModel( "com_cardboardboxshortopen_1" );
          precacheModel( "com_cardboardboxshortclosed_1" );
          precacheModel( "me_woodcrateopen" );
          precacheModel( "com_cardboardboxshortopen_3" );
          precacheModel( "com_cardboardboxshortclosed_2" );
          precacheModel( "me_citrus_box1" );
          precacheModel( "me_plastic_crate1" );
          precacheModel( "me_tomato_crate1" );
          precacheModel( "com_cardboardbox04" );
          precacheModel( "com_trashcan_metal_with_trash" );
          precacheModel( "com_cardboardbox01" );
          precacheModel( "me_banana_box1" );
          precacheModel( "me_streetlight" );
          precacheModel( "com_restaurantsink_1comp" );
          precacheModel( "ch_washer_01" );
          precacheModel( "com_barrel_fire" );
          precacheModel( "me_concrete_barrier" );
          precacheModel( "ch_crate48x64" );
          precacheModel( "me_dumpster" );
          precacheModel( "com_cafe_chair" );
          precacheModel( "bog_b_cinderblock_clutter" );
          precacheModel( "com_red_toolbox" );
          precacheModel( "com_pail_metal1" );
          precacheModel( "com_cash_register" );
          precacheModel( "com_barrel_blue_rust" );
          precacheModel( "com_barrel_white_rust" );
          precacheModel( "com_barrel_green" );
          precacheModel( "com_junktire" );
       }
       else if( getDvar( "mapname" ) == "mp_vacant" )
       {
          precacheModel( "com_barrel_white_rust" );
          precacheModel( "com_barrel_blue_rust" );
          precacheModel( "com_pallet_2" );
          precacheModel( "com_filecabinetblackclosed" );
          precacheModel( "com_photocopier" );
          precacheModel( "com_plasticcase_green_big" );
          precacheModel( "com_office_chair_black" );
          precacheModel( "com_office_book_set1" );
          precacheModel( "ch_furniture_couch01" );
          precacheModel( "com_locker_double" );
          precacheModel( "com_locker_open" );
          precacheModel( "com_locker_single" );
          precacheModel( "me_refrigerator" );
          precacheModel( "com_coffee_machine" );
          precacheModel( "com_sheet_chair" );
          precacheModel( "me_streetlight" );
          precacheModel( "me_telegraphpole" );
          precacheModel( "com_paintcan" );
          precacheModel( "com_trashbag1_black" );
          precacheModel( "ch_crate32x48" );
          precacheModel( "com_cardboardboxshortclosed_2" );
          precacheModel( "com_cardboardboxshortopen_2" );
          precacheModel( "com_cardboardboxshortopen_3" );
          precacheModel( "com_bike" );
          precacheModel( "me_concrete_barrier" );
          precacheModel( "com_widescreen_monitor" );
          precacheModel( "com_computer_keyboard" );
          precacheModel( "com_telephone_desk" );
          precacheModel( "com_widescreen_monitor_2" );
          precacheModel( "com_widescreen_monitor_3" );
          precacheModel( "com_computer_case" );
          precacheModel( "com_vcr" );
          precacheModel( "com_office_lamp02" );
          precacheModel( "com_transistor_radio" );
          precacheModel( "com_pot_metal" );
          precacheModel( "com_pan_copper" );
          precacheModel( "com_red_toolbox" );
          precacheModel( "me_plastic_crate3" );
          precacheModel( "com_propane_tank" );
          precacheModel( "com_tv2_d" );
          precacheModel( "me_plastic_crate1" );
          precacheModel( "me_plastic_crate2" );
          precacheModel( "com_junktire" );
          precacheModel( "com_copypaper_box" );
          precacheModel( "bc_militarytent_wood_table" );
       }
          precacheModel( "body_mp_arab_regular_cqb" );
          precacheModel( "head_mp_arab_regular_headwrap" );
    }
    
    onRoundSwitch()
    {
       if ( !isdefined( game["switchedsides"] ) )
          game["switchedsides"] = false;
       
       if ( game["teamScores"]["allies"] == level.scorelimit - 1 && game["teamScores"]["axis"] == level.scorelimit - 1 )
       {
          // overtime! team that's ahead in kills gets to defend.
          aheadTeam = getBetterTeam();
          if ( aheadTeam != game["defenders"] )
          {
             game["switchedsides"] = !game["switchedsides"];
          }
          else
          {
             level.halftimeSubCaption = "";
          }
          level.halftimeType = "overtime";
       }
       else
       {
          level.halftimeType = "halftime";
          game["switchedsides"] = !game["switchedsides"];
       }
    }
    
    getBetterTeam()
    {
       kills["allies"] = 0;
       kills["axis"] = 0;
       deaths["allies"] = 0;
       deaths["axis"] = 0;
       
       for ( i = 0; i < level.players.size; i++ )
       {
          player = level.players[i];
          team = player.pers["team"];
          if ( isDefined( team ) && (team == "allies" || team == "axis") )
          {
             kills[ team ] += player.kills;
             deaths[ team ] += player.deaths;
          }
       }
       
       if ( kills["allies"] > kills["axis"] )
          return "allies";
       else if ( kills["axis"] > kills["allies"] )
          return "axis";
       
       // same number of kills
    
       if ( deaths["allies"] < deaths["axis"] )
          return "allies";
       else if ( deaths["axis"] < deaths["allies"] )
          return "axis";
       
       // same number of deaths
       
       if ( randomint(2) == 0 )
          return "allies";
       return "axis";
    }
    
    onStartGameType()
    {
       if ( !isDefined( game["switchedsides"] ) )
          game["switchedsides"] = false;
       
       if ( game["switchedsides"] )
       {
          oldAttackers = game["attackers"];
          oldDefenders = game["defenders"];
          game["attackers"] = oldDefenders;
          game["defenders"] = oldAttackers;
       }
       
       setClientNameMode( "auto_change" );
       
       game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED";
       game["strings"]["bomb_defused"] = &"MP_BOMB_DEFUSED";
       
       precacheString( game["strings"]["target_destroyed"] );
       precacheString( game["strings"]["bomb_defused"] );
    
       level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
       
       maps\mp\gametypes\_globallogic::setObjectiveText( game["attackers"], &"OBJECTIVES_SD_ATTACKER" );
       maps\mp\gametypes\_globallogic::setObjectiveText( game["defenders"], &"OBJECTIVES_SD_DEFENDER" );
    
       if ( level.splitscreen )
       {
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["attackers"], &"OBJECTIVES_SD_ATTACKER" );
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["defenders"], &"OBJECTIVES_SD_DEFENDER" );
       }
       else
       {
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_SCORE" );
          maps\mp\gametypes\_globallogic::setObjectiveScoreText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_SCORE" );
       }
       maps\mp\gametypes\_globallogic::setObjectiveHintText( game["attackers"], &"OBJECTIVES_SD_ATTACKER_HINT" );
       maps\mp\gametypes\_globallogic::setObjectiveHintText( game["defenders"], &"OBJECTIVES_SD_DEFENDER_HINT" );
    
       level.spawnMins = ( 0, 0, 0 );
       level.spawnMaxs = ( 0, 0, 0 );   
       maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_attacker" );
       maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sd_spawn_defender" );
       
       level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
       setMapCenter( level.mapCenter );
       
       allowed[0] = "dm";
       //allowed[1] = "bombzone";
       //allowed[2] = "blocker";
       maps\mp\gametypes\_gameobjects::main(allowed);
       
       maps\mp\gametypes\_rank::registerScoreInfo( "win", 2 );
       maps\mp\gametypes\_rank::registerScoreInfo( "loss", 1 );
       maps\mp\gametypes\_rank::registerScoreInfo( "tie", 1.5 );
       
       maps\mp\gametypes\_rank::registerScoreInfo( "kill", 5 );
       maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 5 );
       maps\mp\gametypes\_rank::registerScoreInfo( "assist", 2 );
       maps\mp\gametypes\_rank::registerScoreInfo( "plant", 10 );
       maps\mp\gametypes\_rank::registerScoreInfo( "defuse", 10 );
       maps\mp\gametypes\_rank::registerScoreInfo( "live", 100 );
       
       thread updateGametypeDvars();
       
       //thread bombs();
    }
    
    
    onSpawnPlayer()
    {
       self.isPlanting = false;
       self.isDefusing = false;
       self.isBombCarrier = false;
    
       if(self.pers["team"] == game["attackers"])
          spawnPointName = "mp_sd_spawn_attacker";
       else
          spawnPointName = "mp_sd_spawn_defender";
    
       spawnPoints = getEntArray( spawnPointName, "classname" );
       assert( spawnPoints.size );
       spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
    
       self spawn( spawnpoint.origin, spawnpoint.angles );
    
       level notify ( "spawned_player" );
    }
    
    
    onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
    {
       thread checkAllowSpectating();
    }
    
    
    checkAllowSpectating()
    {
       wait ( 0.05 );
       
       update = false;
       if ( !level.aliveCount[ game["attackers"] ] )
       {
          level.spectateOverride[game["attackers"]].allowEnemySpectate = 1;
          update = true;
       }
       if ( !level.aliveCount[ game["defenders"] ] )
       {
          level.spectateOverride[game["defenders"]].allowEnemySpectate = 1;
          update = true;
       }
       if ( update )
          maps\mp\gametypes\_spectating::updateSpectateSettings();
    }
    
    
    sd_endGame( winningTeam, endReasonText )
    {
       if ( isdefined( winningTeam ) )
          [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
       
       thread maps\mp\gametypes\_globallogic::endGame( winningTeam, endReasonText );
    }
    
    
    onDeadEvent( team )
    {
       if ( team == "all" )
       {
          sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
       }
       else if ( team == game["attackers"] )
       {
          sd_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
       }
       else if ( team == game["defenders"] )
       {
          sd_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] );
       }
    }
    
    
    onOneLeftEvent( team )
    {
       warnLastPlayer( team );
    }
    
    
    onTimeLimit()
    {
       if ( level.teamBased )
          sd_endGame( game["defenders"], game["strings"]["time_limit_reached"] );
       else
          sd_endGame( undefined, game["strings"]["time_limit_reached"] );
    }
    
    
    warnLastPlayer( team )
    {
       if ( !isdefined( level.warnedLastPlayer ) )
          level.warnedLastPlayer = [];
       
       if ( isDefined( level.warnedLastPlayer[team] ) )
          return;
          
       level.warnedLastPlayer[team] = true;
    
       players = level.players;
       for ( i = 0; i < players.size; i++ )
       {
          player = players[i];
    
          if ( isDefined( player.pers["team"] ) && player.pers["team"] == team && isdefined( player.pers["class"] ) )
          {
             if ( player.sessionstate == "playing" && !player.afk )
                break;
          }
       }
       
       if ( i == players.size )
          return;
       
       players[i] thread giveLastAttackerWarning();
    }
    
    
    giveLastAttackerWarning()
    {
       self endon("death");
       self endon("disconnect");
       
       fullHealthTime = 0;
       interval = .05;
       
       while(1)
       {
          if ( self.health != self.maxhealth )
             fullHealthTime = 0;
          else
             fullHealthTime += interval;
          
          wait interval;
          
          if (self.health == self.maxhealth && fullHealthTime >= 3)
             break;
       }
       
       //self iprintlnbold(&"MP_YOU_ARE_THE_ONLY_REMAINING_PLAYER");
       self maps\mp\gametypes\_globallogic::leaderDialogOnPlayer( "last_alive" );
       
       self maps\mp\gametypes\_missions::lastManSD();
    }
    
    
    updateGametypeDvars()
    {
       level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 );
       level.defuseTime = dvarFloatValue( "defusetime", 5, 0, 20 );
       level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 );
       level.multiBomb = dvarIntValue( "multibomb", 0, 0, 1 );
    }
    
    
    bombs()
    {
       level.bombPlanted = false;
       level.bombDefused = false;
       level.bombExploded = false;
    
       trigger = getEnt( "sd_bomb_pickup_trig", "targetname" );
       if ( !isDefined( trigger ) )
       {
          maps\mp\_utility::error("No sd_bomb_pickup_trig trigger found in map.");
          return;
       }
       
       visuals[0] = getEnt( "sd_bomb", "targetname" );
       if ( !isDefined( visuals[0] ) )
       {
          maps\mp\_utility::error("No sd_bomb script_model found in map.");
          return;
       }
    
       precacheModel( "prop_suitcase_bomb" );   
       visuals[0] setModel( "prop_suitcase_bomb" );
       
       if ( !level.multiBomb )
       {
          level.sdBomb = maps\mp\gametypes\_gameobjects::createCarryObject( game["attackers"], trigger, visuals, (0,0,32) );
          level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "friendly" );
          level.sdBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" );
          level.sdBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "friendly" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" );
          level.sdBomb.allowWeapons = true;
          level.sdBomb.onPickup = ::onPickup;
          level.sdBomb.onDrop = ::onDrop;
       }
       else
       {
          trigger delete();
          visuals[0] delete();
       }
       
       
       level.bombZones = [];
       
       bombZones = getEntArray( "bombzone", "targetname" );
       
       for ( index = 0; index < bombZones.size; index++ )
       {
          trigger = bombZones[index];
          visuals = getEntArray( bombZones[index].target, "targetname" );
          
          bombZone = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,64) );
          bombZone maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
          bombZone maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime );
          bombZone maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" );
          bombZone maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
          if ( !level.multiBomb )
             bombZone maps\mp\gametypes\_gameobjects::setKeyObject( level.sdBomb );
          label = bombZone maps\mp\gametypes\_gameobjects::getLabel();
          bombZone.label = label;
          bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" + label );
          bombZone maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" + label );
          bombZone maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" + label );
          bombZone maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_target" + label );
          bombZone maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
          bombZone.onBeginUse = ::onBeginUse;
          bombZone.onEndUse = ::onEndUse;
          bombZone.onUse = ::onUsePlantObject;
          bombZone.onCantUse = ::onCantUse;
          bombZone.useWeapon = "briefcase_bomb_mp";
          
          for ( i = 0; i < visuals.size; i++ )
          {
             if ( isDefined( visuals[i].script_exploder ) )
             {
                bombZone.exploderIndex = visuals[i].script_exploder;
                break;
             }
          }
          
          level.bombZones[level.bombZones.size] = bombZone;
          
          bombZone.bombDefuseTrig = getent( visuals[0].target, "targetname" );
          assert( isdefined( bombZone.bombDefuseTrig ) );
          bombZone.bombDefuseTrig.origin += (0,0,-10000);
          bombZone.bombDefuseTrig.label = label;
       }
       
       for ( index = 0; index < level.bombZones.size; index++ )
       {
          array = [];
          for ( otherindex = 0; otherindex < level.bombZones.size; otherindex++ )
          {
             if ( otherindex != index )
                array[ array.size ] = level.bombZones[otherindex];
          }
          level.bombZones[index].otherBombZones = array;
       }
    }
    
    onBeginUse( player )
    {
       if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
       {
          player playSound( "mp_bomb_defuse" );
          player.isDefusing = true;
          
          if ( isDefined( level.sdBombModel ) )
             level.sdBombModel hide();
       }
       else
       {
          player.isPlanting = true;
    
          if ( level.multibomb )
          {
             for ( i = 0; i < self.otherBombZones.size; i++ )
             {
                self.otherBombZones[i] maps\mp\gametypes\_gameobjects::disableObject();
             }
          }
       }
    }
    
    onEndUse( team, player, result )
    {
       if ( !isAlive( player ) )
          return;
          
       player.isDefusing = false;
       player.isPlanting = false;
    
       if ( self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
       {
          if ( isDefined( level.sdBombModel ) && !result )
          {
             level.sdBombModel show();
          }
       }
       else
       {
          if ( level.multibomb && !result )
          {
             for ( i = 0; i < self.otherBombZones.size; i++ )
             {
                self.otherBombZones[i] maps\mp\gametypes\_gameobjects::enableObject();
             }
          }
       }
    }
    
    onCantUse( player )
    {
       player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" );
    }
    
    onUsePlantObject( player )
    {
       // planted the bomb
       if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
       {
          level thread bombPlanted( self, player );
          player logString( "bomb planted: " + self.label );
          
          // disable all bomb zones except this one
          for ( index = 0; index < level.bombZones.size; index++ )
          {
             if ( level.bombZones[index] == self )
                continue;
                
             level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
          }
          
          player playSound( "mp_bomb_plant" );
          player notify ( "bomb_planted" );
          if ( !level.hardcoreMode )
             iPrintLn( &"MP_EXPLOSIVES_PLANTED_BY", player );
          maps\mp\gametypes\_globallogic::leaderDialog( "bomb_planted" );
    
          maps\mp\gametypes\_globallogic::givePlayerScore( "plant", player );
          player thread [[level.onXPEvent]]( "plant" );
       }
    }
    
    onUseDefuseObject( player )
    {
       wait .05;
       
       player notify ( "bomb_defused" );
       player logString( "bomb defused: " + self.label );
       level thread bombDefused();
       
       // disable this bomb zone
       self maps\mp\gametypes\_gameobjects::disableObject();
       
       if ( !level.hardcoreMode )
          iPrintLn( &"MP_EXPLOSIVES_DEFUSED_BY", player );
       maps\mp\gametypes\_globallogic::leaderDialog( "bomb_defused" );
    
       maps\mp\gametypes\_globallogic::givePlayerScore( "defuse", player );
       player thread [[level.onXPEvent]]( "defuse" );
    }
    
    
    onDrop( player )
    {
       if ( !level.bombPlanted )
       {
          if ( isDefined( player ) && isDefined( player.name ) )
             printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", game["attackers"], player );
    
    //      maps\mp\gametypes\_globallogic::leaderDialog( "bomb_lost", player.pers["team"] );
          if ( isDefined( player ) )
              player logString( "bomb dropped" );
           else
              logString( "bomb dropped" );
       }
    
       self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
       
       maps\mp\_utility::playSoundOnPlayers( game["bomb_dropped_sound"], game["attackers"] );
    }
    
    
    onPickup( player )
    {
       player.isBombCarrier = true;
    
       self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
    
       if ( !level.bombDefused )
       {
          if ( isDefined( player ) && isDefined( player.name ) )
             printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", game["attackers"], player );
             
          maps\mp\gametypes\_globallogic::leaderDialog( "bomb_taken", player.pers["team"] );
          player logString( "bomb taken" );
       }      
       maps\mp\_utility::playSoundOnPlayers( game["bomb_recovered_sound"], game["attackers"] );
    }
    
    
    onReset()
    {
    }
    
    
    bombPlanted( destroyedObj, player )
    {
       maps\mp\gametypes\_globallogic::pauseTimer();
       level.bombPlanted = true;
       
       destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic::playTickingSound();
       level.tickingObject = destroyedObj.visuals[0];
    
       level.timeLimitOverride = true;
       setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) );
       setDvar( "ui_bomb_timer", 1 );
       
       if ( !level.multiBomb )
       {
          level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
          level.sdBomb maps\mp\gametypes\_gameobjects::setDropped();
          level.sdBombModel = level.sdBomb.visuals[0];
       }
       else
       {
          
          for ( index = 0; index < level.players.size; index++ )
          {
             if ( isDefined( level.players[index].carryIcon ) )
                level.players[index].carryIcon destroyElem();
          }
    
          trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
          
          tempAngle = randomfloat( 360 );
          forward = (cos( tempAngle ), sin( tempAngle ), 0);
          forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
          dropAngles = vectortoangles( forward );
          
          level.sdBombModel = spawn( "script_model", trace["position"] );
          level.sdBombModel.angles = dropAngles;
          level.sdBombModel setModel( "prop_suitcase_bomb" );
       }
       destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" );
       destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
       /*
       destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined );
       destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined );
       destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined );
       destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined );
       */
       label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel();
       
       // create a new object to defuse with.
       trigger = destroyedObj.bombDefuseTrig;
       trigger.origin = level.sdBombModel.origin;
       visuals = [];
       defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) );
       defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
       defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
       defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
       defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
       defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
       defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label );
       defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label );
       defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label );
       defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label );
       defuseObject.label = label;
       defuseObject.onBeginUse = ::onBeginUse;
       defuseObject.onEndUse = ::onEndUse;
       defuseObject.onUse = ::onUseDefuseObject;
       defuseObject.useWeapon = "briefcase_bomb_defuse_mp";
       
       BombTimerWait();
       setDvar( "ui_bomb_timer", 0 );
       
       destroyedObj.visuals[0] maps\mp\gametypes\_globallogic::stopTickingSound();
       
       if ( level.gameEnded || level.bombDefused )
          return;
       
       level.bombExploded = true;
       
       explosionOrigin = level.sdBombModel.origin;
       level.sdBombModel hide();
       
       if ( isdefined( player ) )
          destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player );
       else
          destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20 );
       
       rot = randomfloat(360);
       explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
       triggerFx( explosionEffect );
       
       thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin );
       
       if ( isDefined( destroyedObj.exploderIndex ) )
          exploder( destroyedObj.exploderIndex );
       
       for ( index = 0; index < level.bombZones.size; index++ )
          level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
       defuseObject maps\mp\gametypes\_gameobjects::disableObject();
       
       setGameEndTime( 0 );
       
       wait 3;
       
       sd_endGame( game["attackers"], game["strings"]["target_destroyed"] );
    }
    
    BombTimerWait()
    {
       level endon("game_ended");
       level endon("bomb_defused");
       wait level.bombTimer;
    }
    
    playSoundinSpace( alias, origin )
    {
       org = spawn( "script_origin", origin );
       org.origin = origin;
       org playSound( alias  );
       wait 10; // MP doesn't have "sounddone" notifies =(
       org delete();
    }
    
    bombDefused()
    {
       level.tickingObject maps\mp\gametypes\_globallogic::stopTickingSound();
       level.bombDefused = true;
       setDvar( "ui_bomb_timer", 0 );
       
       level notify("bomb_defused");
       
       wait 1.5;
       
       setGameEndTime( 0 );
       
       sd_endGame( game["defenders"], game["strings"]["bomb_defused"] );
    }
    Cod4 codes are way different than mw2 codes, thats why its easier to code in Cod4 than in mw2

  11. #26
    ZeroTroubles's Avatar
    Join Date
    Feb 2010
    Gender
    male
    Location
    Whereever I feel like.
    Posts
    3,050
    Reputation
    145
    Thanks
    505
    My Mood
    Amused
    Quote Originally Posted by oktane View Post
    I played on a server with tath mod, i pass you an image with the IP of the host, and my personage with the prop and commands, to have an idea, the hiders dont have any weapon, only the knife, and the seekers start with the black screen 30 seconds, to wait until the other team hides, and when you press 2 you have the M41A, Gold Desert Eagle and intervention. Sorry for my english, if you don't understand something say me, I'm Spanish /

    Lol really? Someone made this already? Well were going to make one that actually is going to be released to the public, yay : D


    Okay were done with the team. Now let the modding begin (:

  12. #27
    Josephlittle™'s Avatar
    Join Date
    May 2010
    Gender
    male
    Location
    GSC Modding Section
    Posts
    1,345
    Reputation
    26
    Thanks
    562
    My Mood
    Devilish
    Quote Originally Posted by kamielftw View Post
    Lol really? Someone made this already? Well were going to make one that actually is going to be released to the public, yay : D


    Okay were done with the team. Now let the modding begin (:
    ok i talked to Azumikkel and its almost impossible to make yourself a prop

    Sorry

  13. #28
    TheLynx's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    Sverige
    Posts
    366
    Reputation
    10
    Thanks
    42
    My Mood
    Happy
    Quote Originally Posted by Josephlittle™ View Post
    ok i talked to Azumikkel and its almost impossible to make yourself a prop

    Sorry
    Soo is this idea closed or wut?

  14. #29
    ZeroTroubles's Avatar
    Join Date
    Feb 2010
    Gender
    male
    Location
    Whereever I feel like.
    Posts
    3,050
    Reputation
    145
    Thanks
    505
    My Mood
    Amused
    Quote Originally Posted by Josephlittle™ View Post
    ok i talked to Azumikkel and its almost impossible to make yourself a prop

    Sorry
    Damn. Well then we can do an other mod right, Something like... 2Forts. Used to be played on Wasteland (or any map where are open spots to build good forts), Team Deathmatch. 2 Forts in the map, first who plants the bomb in the other's fort 5 times wins, Doors so its harder to get in the fort.

  15. #30
    B4M's Avatar
    Join Date
    May 2009
    Gender
    male
    Location
    Real World
    Posts
    6,940
    Reputation
    478
    Thanks
    1,752
    My Mood
    Bored
    You are planning a bit too much.

    And I am tired of all this [WIP] threads.
    [center]

    Back in '10



    Got a question?PM/VM me!
    I read them all.
    Also contact me via MSN.
    vlad@mpgh.net

    Minion since:07-04-2010
    Mod since:08-31-2010
    Till : 05.07.2011

Page 2 of 3 FirstFirst 123 LastLast

Similar Threads

  1. [Discussion] Working PropHunt (Hide&Seek) mod for aIW
    By ZOMG-HACKS in forum Call of Duty Modern Warfare 2 Server / GSC Modding
    Replies: 0
    Last Post: 10-01-2011, 10:53 PM
  2. When are planning to get July mods that work?
    By Amy Lockheart in forum Soldier Front General
    Replies: 4
    Last Post: 07-15-2011, 09:12 PM
  3. [Release] Prophunt Mod (updated)
    By zxz0O0 in forum Call of Duty Modern Warfare 2 Server / GSC Modding
    Replies: 22
    Last Post: 09-23-2010, 10:21 AM
  4. Gsc Modding Help For Prophunt (Improved)
    By soccerguy in forum Call of Duty Modern Warfare 2 GSC Modding Help/Discussion
    Replies: 6
    Last Post: 08-30-2010, 05:24 PM
  5. GunZ God Mod
    By Brunogol in forum Gunz Hacks
    Replies: 14
    Last Post: 02-07-2006, 09:09 PM