New gametype idea

Started by Trinitrotoluene, February 05, 2006, 07:52:46 AM

Previous topic - Next topic

Trinitrotoluene

I'm sure you guys know what ''capture the hill is''. Both teams need to try and hold a specified area for x amount of time to win a point. Now, my clan sometimes plays this. We specify one or two areas in a map that we need to capture and hold, great for training. For as far as I know there isnt a gametype CTH for mohaa. But I think it would be very fun to play, in public and great for training.

   

   So what do you modders think about this idea of making a CTH mod for mohaa? Once again, great for (clan)trainings!

habsey

okay well theres a mod called stratiegic base hold, if you cannot find i could manage to do sumthing simple if you would like
1[sky] Man[/sky]
1 Job
[pink]1[/pink][yellow] Vision[/yellow]

Trinitrotoluene

Where can I download this mod? If its any good we'll use that one :)

habsey

uhh im not sure do a seearch around
1[sky] Man[/sky]
1 Job
[pink]1[/pink][yellow] Vision[/yellow]

Trinitrotoluene

Can't find it on this site, not on google either. I can only find some OBJ maps, Muna Hill etc.

   

   Dont you guys think its worth it to make a mod that works on all mohaa maps with random areas (just like CTF) ?

habsey

uhh i dunno imma go to bed if you want i will develop this gametype for u...
1[sky] Man[/sky]
1 Job
[pink]1[/pink][yellow] Vision[/yellow]

Trinitrotoluene

Sure. Any experience with modding? Let me know... Any other people that are interested?

habsey

Trinitrotoluene :
   Sure. Any experience with modding? Let me know... Any other people that are interested?

   

   

   i can do it dont worry if i get a chance when i wake up i will
1[sky] Man[/sky]
1 Job
[pink]1[/pink][yellow] Vision[/yellow]

Trinitrotoluene

Have you got MSN? If yes, add me (and everyone else that wants to help making this mod)

Vince

I was going to use this for my headquarters mod, but i dropped it. Thread it like a bomb thinker. Put your spawns you want to switch underneathe the newly spawned pulse bomb in the bomb_explode thread.

   

   
/*
   Logic For HeadQuarters based deathmatches.
   
   Scripting by Vince {sfx}
   
   Script based off of original obj_dm.scr
   
   */
   
      //***********************************************
      // initialization thread...
      //***********************************************
   
      hq_base_thinker level.base_name level.hometeam:
   
      //level.bomb_defuse_time = 30
      //level.bomb_set_time = 30
      //level.bomb_tick_time = 10
      //level.bomb_use_distance = 128
      //level.bombusefov = 30
   
      level.Regain_Base_Time = 30
      level.Claim_Base_Time = 30
      level.Defend_Claim_Time = 10
      level.Use_Distance = 128
      level.BombUseFov = 30
   
      level.subtitleX = 100
      level.subtitleY = 50
   
      //println "----------------HeadQuarters-{sfx}-----------------"
      //println "self = " self
      //println "level.hometeam = " level.hometeam
      //println "self.trigger_name = " self.trigger_name
      //println "level.base_name = " level.base_name
      //println "level.spawn_names = " level.spawn_names
      //println "self.sound = " self.sound
      //println "self.beamset = " self.beamset
      //println "----------------HeadQuarters-{sfx}-----------------"
   
      self rotatex 72
      self rotatey 95
      self rotatez 80
      self notsolid
   
      self.live = 0
      self.target.collisionent = self.target.target
   
      self.trigger_name waittill trigger
   
      thread bomb_waittill_set
   
      end
   
   //***********************************************
   // first thread... makes base wait to be taken.
   //***********************************************
   
   
   bomb_waittill_set:
   
   self model items/pulse_explosive.tik
   self notsolid
   
   while ( $(self.trigger_name) )
      {
         //println "waittill trigger " self.trigger_name
         self.trigger_name waittill trigger
         local.player = parm.other
   
         if(level.hometeam != NIL)
         {
         level.planting_team = level.hometeam
   
         if(level.planting_team == allies)
         {
         level.defusing_team = axis
         }
         if(level.planting_team == axis)
         {
         level.defusing_team = allies
         }
         }
         else
         {
         thread dmcheck
         }
   
   self notsolid
   
   if (local.player.dmteam != level.planting_team)
      {
         goto bomb_waittill_set
         println "failed dmteam check" local.player.dmteam
      }
   
      local.counter = 0
   
      while ( (Isalive local.player) && (local.player cansee self level.BombUseFov level.Use_Distance) && (local.player.useheld == 1) )
      {
   
         local.player waitexec global/weapcheck.scr
         if ( (local.counter == 0) && (local.player.holstered == 1) )
         local.player stopwatch (level.Claim_Base_Time * .1)
         local.counter++
         wait .1
         if (local.counter >= level.Claim_Base_Time)
            {
               if (level.planting_team == "allies")
               self playsound dfr_objective_o
               else
               self playsound den_objective_o
               thread bomb_waittill_defuse
               thread bomb_waittill_explode
               exec global/hud.scr ("The " + level.base_name + " is being taken by the " + level.planting_team + "!")
               self.live = 1
               end
            }
      }
   
   if (local.counter > 0)
   
   local.player stopwatch 0
   }
   
   end
   
   
   //***********************************************
   // second thread... controls opposing team defusing a capture attempt
   //***********************************************
   
   bomb_waittill_defuse:
   while ( $(self.trigger_name) )
   {
   self.trigger_name waittill trigger
   
      local.player = parm.other
   
      self notsolid
   
      //"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
      if (local.player.dmteam != level.defusing_team)
      {
         println "failed dmteam check" local.player.dmteam
         goto bomb_waittill_defuse
      }
   
   
      local.counter = 0
      while ( (Isalive local.player) && (local.player cansee self level.BombUseFov level.Use_Distance) && (local.player.useheld == 1) )
      {
   local.player waitexec global/weapcheck.scr
         if ( (local.counter == 0) && (local.player.holstered == 1) )
            local.player stopwatch (level.Regain_Base_Time * .1)
         local.player exec global/weapcheck.scr
   
         local.counter++
   
         wait .1
         if (local.counter >= level.Regain_Base_Time)
         {
            exec global/hud.scr ( "The " + level.base_name + " has been reclaimed by the " + level.defusing_team + "!" )
            if (level.defusing_team == "allies")
               self playsound dfr_diffused_d
            else
               self playsound den_diffused_d
            thread bomb_waittill_set //start first thread again
            self.live = 0
            end
         }
      }
      if (local.counter > 0)
         local.player stopwatch 0
   
      local.player stufftext "holster"
   
   local.player.dmteam = level.defusing_team
   }
   end
   
   
   //***********************************************
   // third thread... times the base and
   //***********************************************
   bomb_waittill_explode:
   
      self model items/explosive.tik
      self playsound plantbomb
      self notsolid
   
      local.player = parm.other
      if (local.player.holstered == 1)
      {
      local.player stufftext ""
      }
      else
      {
      local.player stufftext "holster"
      }
   
      self loopsound bombtick
   
      local.start_time = level.time
      while (level.time < (local.start_time + level.Defend_Claim_Time) )
      {
         wait .1
         if (self.live != 1)
         {
            self stoploopsound
            end
         }
         if (level.time == (local.start_time + level.Defend_Claim_Time - 10) )
         {
            self stoploopsound
            self loopsound final_countdown
         }
       }
       self stoploopsound
      thread bomb_explode
   end
   
   bomb_explode:
   
      local.bomb = spawn script_model
      local.bomb model "items/pulse_explosive.tik"
      local.bomb.origin = self.origin
      local.bomb.angles = self.angles
      local.bomb.targetname = ("new" + self.entnum)
      local.bomb.trigger_name = self.trigger_name
      local.bomb.target = self.target
      local.bomb.scale = self.scale
      local.bomb rotatex 90
      local.bomb rotatey 100
      local.bomb rotatez 80
      local.bomb notsolid
   
      self delete
   
      exec global/hud.scr ( "The " + level.base_name + " has been taken by the " + level.planting_team + "!" )
   
      if(level.planting_team == allies)
      {
   
         $axis_guy hide
         $allied_guy show
         level.tileshader = "textures/hud/allies"
         $("new" + self.entnum) thread bomb_thinker_2 axis allies
   
      }
      else
      {
   
         $axis_guy show
         $allied_guy hide
         level.tileshader = "textures/hud/axis"
         $("new" + self.entnum) thread bomb_thinker_2 allies axis
   
      }
   
      //delay to avoid glitches in map ending/players leaving etc...
      wait 0.5
   end
   
   bomb_thinker_2 local.planting_team local.defusing_team:
   
      level.planting_team = local.planting_team
      level.defusing_team = local.defusing_team
   
      //println "----------------HeadQuarters-{sfx}-----------------"
      //println "Bomb_thinker_2 init"
      //println "level.planting_team = " level.planting_team
      //println "level.defusing_team = " level.defusing_team
      //println "----------------HeadQuarters-{sfx}-----------------"
   
      self notsolid
      self.target.collisionent = self.target.target
      self.trigger_name waittill trigger
      thread bomb_waittill_set_2
   
   
   end
   
   //***********************************************
   // first thread... controls allies using the trigger
   //***********************************************
   
   
   bomb_waittill_set_2:
   
   
   while ( $(self.trigger_name) )
   {
   println "waittill trigger " self.trigger_name
   self.trigger_name waittill trigger
      local.player = parm.other
   
      self notsolid
   
           if (local.player.dmteam != level.planting_team)
      {
         goto bomb_waittill_set_2
         println "failed dmteam check" local.player.dmteam
      }
   
      local.counter = 0
      while ( (Isalive local.player) && (local.player cansee self level.BombUseFov level.Use_Distance) && (local.player.useheld == 1) )
      {
      local.player waitexec global/weapcheck.scr
         if ( (local.counter == 0) && (local.player.holstered == 1) )
   
            local.player stopwatch (level.Claim_Base_Time * .1)
   
         local.counter++
   
         wait .1
         if (local.counter >= level.Claim_Base_Time)
         {
   
            if (level.planting_team == "allies")
               self playsound dfr_objective_o
            else
               self playsound den_objective_o
            thread bomb_waittill_defuse_2
            thread bomb_waittill_explode
            exec global/hud.scr ( "The " + level.base_name + " is being taken by the " + level.planting_team + "!" )
            self.live = 1
            end
         }
      }
      if (local.counter > 0)
         local.player stopwatch 0
   
   
   }
   
   end
   
   bomb_waittill_defuse_2:
   while ( $(self.trigger_name) )
   {
   self.trigger_name waittill trigger
   
      local.player = parm.other
   
      self notsolid
   
      if (local.player.dmteam != level.defusing_team)
      {
         println "failed dmteam check" local.player.dmteam
         goto bomb_waittill_defuse_2
      }
   
   
      local.counter = 0
      while ( (Isalive local.player) && (local.player cansee self level.BombUseFov  level.Use_Distance) && (local.player.useheld == 1) )
      {
         local.player waitexec global/weapcheck.scr
         if ( (local.counter == 0) && (local.player.holstered == 1) )
         local.player stopwatch (level.Regain_Base_Time * .1)
   
         local.counter++
   
         wait .1
         if (local.counter >= level.Regain_Base_Time)
         {
            exec global/hud.scr ( "The " + level.base_name + " has been reclaimed by the " + level.defusing_team + "!" )
            if (level.defusing_team == "allies")
               self playsound dfr_diffused_d
            else
               self playsound den_diffused_d
            thread bomb_waittill_set_2 //start first thread again
            self.live = 0
   
            end
         }
      }
      if (local.counter > 0)
         local.player stopwatch 0
   
      local.player stufftext "holster"
   }
   end
   
   //variables:
   //waittill spawn
   //level.planting_team = level.new_planting_team
   //level.defusing_team = level.new_using_team
   //end
   
   
   
   
   dmcheck:
   
      local.player = parm.other
      if(local.player.dmteam == allies)
      {
      level.planting_team = allies
      level.defusing_team = axis
      }
   
      if(local.player.dmteam == axis)
      {
      level.planting_team = axis
      level.defusing_team = allies
      }
   
   end

Cobra {sfx}

We converted M1L2A to a King Of The Fort Mod a while back, (never released it as far as i know), ill dig it out, basically if it detected an enemy within the fort after x amount of time it respawned the current fort holders elsewhere and the attacking force inside the Fort then the war started all over again.
Sleep? What is that?

Vince

lol rob, they lost interest :((

Cobra {sfx}

I also cant find the final version lol, the one i have here some things arent finalised.

   

   Basically the Fort used a trigger and respawned the teams (with spawnpoint switching) once an enemy was detected in the fort for more than 10 seconds (or thereabouts).
Sleep? What is that?

Vince

anyway, mind proofreading the script above? I may pick it back up.

habsey

looks fine to me , neat gametype but i got 1 question,

   

   

   
         local.player exec global/weapcheck.scr
   

   

   why are you using a weapon check? to see if holstered?

   

   everything else looks fine dont see any errors myself
1[sky] Man[/sky]
1 Job
[pink]1[/pink][yellow] Vision[/yellow]