Advertisement
momo5502

MW2 Mod

May 9th, 2013
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.82 KB | None | 0 0
  1. init()
  2. {
  3.     thread onPlayerConnect();
  4. }
  5.  
  6. onPlayerConnect()
  7. {
  8.     for(;;)
  9.     {
  10.         level waittill("connected", player);
  11.         player thread onPlayerSpec();
  12.         player thread onPlayerSpawned();
  13.     }
  14. }
  15.  
  16. onPlayerSpec()
  17. {
  18.     for(;;)
  19.     {
  20.         self waittill("joined_spectators");
  21.     }
  22. }
  23.  
  24. onPlayerSpawned()
  25. {
  26.     self endon("disconnect");
  27.     self endon("joined_spectators");
  28.     self endon("killed_player");
  29.    
  30.     level thread initmod();
  31.    
  32.     for(;;)
  33.     {
  34.         self waittill("spawned_player");
  35.         if(self.team == "allies")
  36.             self thread watchFirstBlood();
  37.     }
  38. }
  39.  
  40. initmod()
  41. {
  42.     //level endon( "disconnect" ); // level can't disconnect
  43.     level endon ( "game_ended" );
  44.     if( !isDefined( game[ 'mod_initialized' ] ) )
  45.     {
  46.         level thread levelseekerleft();
  47.     }
  48.    
  49.     level thread watchIfNotSeeker();
  50. }
  51.  
  52. levelseekerleft()
  53. {
  54.     level endon ( "game_ended" );
  55.     game['mod_initialized'] = true;
  56.     while(1)
  57.     {
  58.         players = maps\mp\gametypes\_teams::CountPlayers();
  59.         if(players["axis"] == 0 && level.players.size > 0)
  60.         {
  61.             level selectseeker();
  62.         }
  63.         wait 0.05;
  64.     }
  65. }
  66.  
  67. selectseeker()
  68. {  
  69.     if(!isDefined(game['mod_next_seeker']) || game['mod_next_seeker'] == false)
  70.         game['mod_next_seeker'] = level.players[randomint(65535) % level.players.size];
  71.    
  72.     level.Seeker = game['mod_next_seeker'];
  73.     level thread watchSeekerDisconnect();
  74.     level.Seeker thread doSeeker();
  75. }
  76.  
  77. doSeeker()
  78. {
  79.     self endon( "disconnect" );
  80.    
  81.     self waittill("spawned_player");
  82.     self thread Seeker();
  83.     level.Seeker freezeControls(true);
  84.     level.Seeker blind();
  85.     iPrintlnBold( self.name + " ist Sucher!");
  86.     wait 30;
  87.     iPrintlnBold( "Noch 90 Sekunden!" );
  88.     wait 30;
  89.     iPrintlnBold( "Noch 60 Sekunden!" );
  90.     wait 30;
  91.     iPrintlnBold( "Noch 30 Sekunden!" );
  92.     wait 15;
  93.     iPrintlnBold( "Noch 15 Sekunden!" );
  94.     wait 10;
  95.     iPrintlnBold( "Noch 5 Sekunden!" );
  96.     wait 5;
  97.     iPrintlnBold( "Auf gehts!" );
  98.     level.Seeker.blind destroy();
  99.     level.Seeker freezeControls(false);
  100. }
  101.  
  102. Seeker()
  103. {
  104.     self endon("disconnect");
  105.  
  106.     self takeAllWeapons();
  107.     self clearPerks();
  108.  
  109.     self giveWeapon("deserteaglegold_mp");
  110.     self switchToWeapon("deserteaglegold_mp");
  111.     self setWeaponAmmoClip("frag_grenade_mp", 0);
  112. }
  113.  
  114. blind()
  115. {
  116.     self.blind = newClientHudElem(self);
  117.     self.blind.x = 0;
  118.     self.blind.y = 0;
  119.     self.blind setshader ("white", 640, 480);
  120.     self.blind.alignX = "left";
  121.     self.blind.alignY = "top";
  122.     self.blind.horzAlign = "fullscreen";
  123.     self.blind.vertAlign = "fullscreen";
  124.     self.blind.color = (0, 0, 0);
  125.     self.blind.alpha = 1.0;
  126. }
  127.  
  128. watchFirstBlood()
  129. {
  130.     level endon("first_blood_done");
  131.    
  132.     self waittill("death");
  133.    
  134.     game['mod_next_seeker'] = self;
  135.     level thread watchSeekerDisconnect();
  136.     level notify("first_blood_done");
  137.  
  138. }
  139.  
  140. watchIfNotSeeker()
  141. {
  142.     level notify("fuck_i_only_want_one_instance");
  143.     level endon("fuck_i_only_want_one_instance");
  144.    
  145.     while( true )
  146.     {
  147.         foreach( p in level.players )
  148.         {
  149.             if(p != level.seeker)
  150.             {
  151.                 if(p.team != "allies")
  152.                     p maps\mp\gametypes\_menus::addToTeam( "allies", true );
  153.                 level.players[ p getPlayersIndex() ].seeker = 0;
  154.             }
  155.            
  156.             else
  157.             {
  158.                 if(p.team != "axis")
  159.                     p maps\mp\gametypes\_menus::addToTeam( "axis", true );
  160.                 level.players[ p getPlayersIndex() ].seeker = 1;
  161.             }
  162.         }
  163.         wait (0.1);
  164.     }
  165. }
  166.  
  167. watchNextSeekerDisconnect()
  168. {
  169.     level notify("fuck_i_also_only_want_one_instance2");
  170.     level endon("fuck_i_also_only_want_one_instance2");
  171.    
  172.     game['mod_next_seeker'] waittill("disconnect");
  173.     game['mod_next_seeker'] = false;
  174.    
  175. }
  176.  
  177. watchSeekerDisconnect()
  178. {
  179.     level notify("fuck_i_also_only_want_one_instance");
  180.     level endon("fuck_i_also_only_want_one_instance");
  181.    
  182.     level thread watchNextSeekerDisconnect();
  183.    
  184.     level.Seeker waittill("disconnect");
  185.     //Do stuff - maybe end the round or select a new seeker
  186.    
  187. }
  188.  
  189. getPlayersIndex()
  190. {
  191.     for(i=0;i<level.players.size;i++)
  192.     {
  193.         if(self == level.players[i])
  194.             return i;
  195.     }
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement