Advertisement
Guest User

gtnw - Notesblok

a guest
Nov 19th, 2011
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.12 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4. /*
  5. Di$oRdER was here :]
  6. */
  7.  
  8. /*QUAKED mp_ctf_spawn_axis (0.75 0.0 0.5) (-16 -16 0) (16 16 72)
  9. Axis players spawn away from enemies and near their team at one of these positions.*/
  10.  
  11. /*QUAKED mp_ctf_spawn_allies (0.0 0.75 0.5) (-16 -16 0) (16 16 72)
  12. Allied players spawn away from enemies and near their team at one of these positions.*/
  13.  
  14. /*QUAKED mp_ctf_spawn_axis_start (1.0 0.0 0.5) (-16 -16 0) (16 16 72)
  15. Axis players spawn away from enemies and near their team at one of these positions at the start of a round.*/
  16.  
  17. /*QUAKED mp_ctf_spawn_allies_start (0.0 1.0 0.5) (-16 -16 0) (16 16 72)
  18. Allied players spawn away from enemies and near their team at one of these positions at the start of a round.*/
  19.  
  20. main()
  21. {
  22. maps\mp\gametypes\_globallogic::init();
  23. maps\mp\gametypes\_callbacksetup::SetupCallbacks();
  24. maps\mp\gametypes\_globallogic::SetupCallbacks();
  25.  
  26. registerTimeLimitDvar( level.gameType, 3, 0, 1440 );
  27. registerScoreLimitDvar( level.gameType, 101, 0, 10000 );
  28. registerRoundLimitDvar( level.gameType, 1, 0, 30 );
  29. registerWinLimitDvar( level.gameType, 1, 0, 10 );
  30. registerRoundSwitchDvar( level.gameType, 0, 0, 30 );
  31. registerNumLivesDvar( level.gameType, 0, 0, 10 );
  32. registerHalfTimeDvar( level.gameType, 0, 0, 1 );
  33.  
  34. level.teamBased = true;
  35. level.onPrecacheGameType = ::onPrecacheGameType;
  36. level.onStartGameType = ::onStartGameType;
  37. level.getSpawnPoint = ::getSpawnPoint;
  38. level.onDeadEvent = ::onDeadEvent;
  39. level.initGametypeAwards = ::initGametypeAwards;
  40. level.onTimeLimit = ::onTimeLimit;
  41. level.onNormalDeath = ::onNormalDeath;
  42. level.gtnw = true;
  43.  
  44. game["dialog"]["gametype"] = "gtw";
  45.  
  46. if ( getDvarInt( "g_hardcore" ) )
  47. game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
  48. else if ( getDvarInt( "camera_thirdPerson" ) )
  49. game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
  50. else if ( getDvarInt( "scr_diehard" ) )
  51. game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
  52. else if (getDvarInt( "scr_" + level.gameType + "_promode" ) )
  53. game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
  54.  
  55. game["dialog"]["offense_obj"] = "obj_destroy";
  56. game["dialog"]["defense_obj"] = "obj_defend";
  57. level thread onPlayerConnect();
  58. }
  59.  
  60. gtnw_endGame( winningTeam, endReasonText )
  61. {
  62. thread maps\mp\gametypes\_gamelogic::endGame( winningTeam, endReasonText );
  63. }
  64.  
  65.  
  66. onPlayerConnect()
  67. {
  68. for(;;)
  69. {
  70. level waittill( "connected", player );
  71.  
  72. useBar = player createPrimaryProgressBar();
  73. useBarText = player createPrimaryProgressBarText();
  74. useBarText setText( &"MP_CAPTURING_NUKE" );
  75.  
  76. useBar.useTime = 100;
  77. player.useBar = useBar;
  78. player.useBar hideElem();
  79. player.useBarText = useBarText;
  80. player.useBarText hideElem();
  81. }
  82. }
  83.  
  84.  
  85. onStartGameType()
  86. {
  87. if ( !isdefined( game["switchedsides"] ) )
  88. game["switchedsides"] = false;
  89.  
  90. if ( !isdefined( game["original_defenders"] ) )
  91. game["original_defenders"] = game["defenders"];
  92.  
  93. if ( game["switchedsides"] )
  94. {
  95. oldAttackers = game["attackers"];
  96. oldDefenders = game["defenders"];
  97. game["attackers"] = oldDefenders;
  98. game["defenders"] = oldAttackers;
  99. }
  100.  
  101. setClientNameMode("auto_change");
  102.  
  103.  
  104. if ( level.splitscreen )
  105. {
  106. setObjectiveScoreText( game["attackers"], &"OBJECTIVES_GTNW" );
  107. setObjectiveScoreText( game["defenders"], &"OBJECTIVES_GTNW" );
  108. }
  109. else
  110. {
  111. setObjectiveScoreText( game["attackers"], &"OBJECTIVES_GTNW_SCORE" );
  112. setObjectiveScoreText( game["defenders"], &"OBJECTIVES_GTNW_SCORE" );
  113. }
  114.  
  115. setObjectiveText( game["attackers"], &"OBJECTIVES_GTNW" );
  116. setObjectiveText( game["defenders"], &"OBJECTIVES_GTNW" );
  117.  
  118. setObjectiveHintText( game["attackers"], &"OBJECTIVES_GTNW_HINT" );
  119. setObjectiveHintText( game["defenders"], &"OBJECTIVES_GTNW_HINT" );
  120.  
  121. level.spawnMins = ( 0, 0, 0 );
  122. level.spawnMaxs = ( 0, 0, 0 );
  123. maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_ctf_spawn_allies_start" );
  124. maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_ctf_spawn_axis_start" );
  125. maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_ctf_spawn_allies" );
  126. maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_ctf_spawn_axis" );
  127.  
  128. level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
  129. setMapCenter( level.mapCenter );
  130.  
  131. maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 );
  132. maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 100 );
  133. maps\mp\gametypes\_rank::registerScoreInfo( "assist", 20 );
  134. maps\mp\gametypes\_rank::registerScoreInfo( "capture", 500 );
  135.  
  136. allowed[0] = "airdrop_pallet";
  137. allowed[1] = "gtnw";
  138. allowed[2] = "gtnw_zone";
  139. maps\mp\gametypes\_gameobjects::main(allowed);
  140.  
  141. thread setupNukeSite();
  142.  
  143. }
  144.  
  145. onPrecacheGameType()
  146. {
  147. precacheShader("waypoint_defend");
  148. precacheShader("waypoint_target");
  149. precacheShader("waypoint_capture");
  150. precacheShader("compass_waypoint_target");
  151. precacheShader("compass_waypoint_defend");
  152. precacheShader("compass_waypoint_capture");
  153.  
  154. precacheString( &"MP_CAPTURING_NUKE" );
  155. return;
  156. }
  157.  
  158. setupNukeSite()
  159. {
  160. level.lastStatus["allies"] = 0;
  161. level.lastStatus["axis"] = 0;
  162.  
  163. nukeZone = getEnt( "gtnw_zone", "targetname" );
  164. assertEx( isDefined( nukeZone ), "GTNW Zone prefab doesn't exist in this map" );
  165. visuals = [];
  166.  
  167. nukeSite = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", nukeZone, visuals, (0,0,100) );
  168.  
  169. nukeSite maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend");
  170. nukeSite maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
  171.  
  172. nukeSite maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
  173. nukeSite maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );
  174.  
  175. nukeSite maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
  176. nukeSite.noUseBar = true;
  177. nukeSite maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
  178.  
  179. nukeSite.onBeginUse = ::onBeginUse;
  180. nukeSite.onEndUse = ::onEndUse;
  181.  
  182. level.nukeSite = nukeSite;
  183. nukeSite thread scoreCounter();
  184. }
  185.  
  186.  
  187. getSpawnPoint()
  188. {
  189. if ( self.team == "axis" )
  190. {
  191. spawnTeam = game["attackers"];
  192. }
  193. else
  194. {
  195. spawnTeam = game["defenders"];
  196. }
  197.  
  198. if ( level.inGracePeriod )
  199. {
  200. spawnPoints = getentarray("mp_ctf_spawn_" + spawnteam + "_start", "classname");
  201. spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
  202. }
  203. else
  204. {
  205. spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( spawnteam );
  206. spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
  207. }
  208.  
  209. return spawnPoint;
  210. }
  211.  
  212.  
  213. spawnFxDelay( fxid, pos, forward, right, delay )
  214. {
  215. wait delay;
  216. effect = spawnFx( fxid, pos, forward, right );
  217. triggerFx( effect );
  218. }
  219.  
  220.  
  221. onDeadEvent( team )
  222. {
  223. if ( ( isDefined( level.nukeIncoming ) && level.nukeIncoming ) || ( isDefined( level.nukeDetonated ) && level.nukeDetonated ) )
  224. return;
  225.  
  226. if ( team == game["attackers"] )
  227. {
  228. maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( team, 1 );
  229. level thread gtnw_endGame( game["defenders"], game["strings"][game["attackers"]+"_eliminated"] );
  230. }
  231. else if ( team == game["defenders"] )
  232. {
  233. maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( team, 1 );
  234. level thread gtnw_endGame( game["attackers"], game["strings"][game["defenders"]+"_eliminated"] );
  235. }
  236. }
  237.  
  238. initGametypeAwards()
  239. {
  240. return;
  241. }
  242.  
  243. onTimeLimit()
  244. {
  245. if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
  246. {
  247. level thread overtimeThread();
  248. }
  249. else if( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
  250. {
  251. thread maps\mp\gametypes\_gamelogic::endGame( "axis", game["strings"]["time_limit_reached"] );
  252. }
  253. else if( game["teamScores"]["axis"] < game["teamScores"]["allies"] )
  254. {
  255. thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
  256. }
  257. }
  258.  
  259. overtimeThread( time )
  260. {
  261. level endon( "game_ended" );
  262.  
  263. level.inOvertime = true;
  264. level thread disableSpawning( 5 );
  265.  
  266. level.endGameTime = 120;
  267.  
  268. time = level.endGameTime;
  269.  
  270. foreach ( player in level.players )
  271. player thread maps\mp\gametypes\_hud_message::SplashNotify( "gtnw_overtime" );
  272.  
  273. maps\mp\gametypes\_gamelogic::pauseTimer();
  274. level.timeLimitOverride = true;
  275. setGameEndTime( int( getTime() + ( level.endGameTime * 1000 ) ) );
  276.  
  277. maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( time );
  278.  
  279. if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
  280. {
  281. thread maps\mp\gametypes\_gamelogic::endGame( "axis", game["strings"]["time_limit_reached"] );
  282. }
  283. else if ( game["teamScores"]["axis"] < game["teamScores"]["allies"] )
  284. {
  285. thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
  286. }
  287. else
  288. {
  289. thread maps\mp\gametypes\_gamelogic::endGame( "tie", game["strings"]["time_limit_reached"] );
  290. }
  291.  
  292. }
  293.  
  294. disableSpawning( waitTime )
  295. {
  296. level endon( "game_ended" );
  297.  
  298. wait ( 5 );
  299. level.disableSpawning = true;
  300. }
  301.  
  302.  
  303. onBeginUse( player )
  304. {
  305. player.useBar showElem();
  306. player.useBarText showElem();
  307. return;
  308. }
  309.  
  310. onEndUse( team, player, success )
  311. {
  312. player.useBar hideElem();
  313. player.useBarText hideElem();
  314. return;
  315. }
  316.  
  317. scoreCounter()
  318. {
  319. level endon( "game_ended" );
  320. self endon( "stop_counting" );
  321.  
  322. for ( ;; )
  323. {
  324.  
  325. if ( !self.touchList["axis"].size && !self.touchlist["allies"].size )
  326. {
  327. setDvar( "ui_danger_team", "none" );
  328.  
  329. self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
  330. self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );
  331.  
  332. self maps\mp\gametypes\_gameobjects::setOwnerTeam( "none" );
  333. self updateHudElems();
  334. wait 1;
  335. continue;
  336. }
  337.  
  338. self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend");
  339. self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
  340. self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" );
  341. self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" );
  342.  
  343. if ( self.touchList["axis"].size > self.touchList["allies"].size )
  344. {
  345. if ( maps\mp\gametypes\_gamescore::_getTeamScore( "axis" ) < 100 )
  346. maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( "axis", 1 );
  347.  
  348. self thread setUseBarScore( "axis" );
  349. setDvar( "ui_danger_team", "allies" );
  350. self maps\mp\gametypes\_gameobjects::setOwnerTeam( "axis" );
  351.  
  352. if ( maps\mp\gametypes\_gamescore::_getTeamScore( "axis" ) >= 100 )
  353. {
  354. self maps\mp\gametypes\_gameobjects::allowUse( "none" );
  355. activateNuke( "axis" );
  356. self notify( "stop_counting" );
  357. }
  358. }
  359. else if ( self.touchList["axis"].size < self.touchList["allies"].size )
  360. {
  361. if ( maps\mp\gametypes\_gamescore::_getTeamScore( "allies" ) < 100 )
  362. maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( "allies", 1 );
  363.  
  364. self thread setUseBarScore( "allies" );
  365. setDvar( "ui_danger_team", "axis" );
  366. self maps\mp\gametypes\_gameobjects::setOwnerTeam( "allies" );
  367.  
  368. if ( maps\mp\gametypes\_gamescore::_getTeamScore( "allies" ) >= 100 )
  369. {
  370. self maps\mp\gametypes\_gameobjects::allowUse( "none" );
  371. activateNuke( "allies" );
  372. self notify( "stop_counting" );
  373. }
  374. }
  375. else
  376. {
  377. self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
  378. self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );
  379.  
  380. self maps\mp\gametypes\_gameobjects::setOwnerTeam( "none" );
  381. setDvar( "ui_danger_team", "contested" );
  382. }
  383. updateHudElems();
  384.  
  385. wait( 1 );
  386. }
  387. }
  388.  
  389.  
  390. activateNuke( team )
  391. {
  392. self giveFlagCaptureXP( self.touchList[team] );
  393. self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
  394. self maps\mp\gametypes\_gameobjects::allowUse( "none" );
  395.  
  396.  
  397. bestTime = 99999999;
  398. nukeOwner = undefined;
  399.  
  400. foreach( player in level.players )
  401. {
  402. if ( !isDefined( player ) )
  403. continue;
  404.  
  405. player.useBar hideElem();
  406. player.useBarText hideElem();
  407.  
  408. if ( player.team != team )
  409. continue;
  410.  
  411. if ( !isDefined( self.touchlist[team][player.guid] ) )
  412. continue;
  413.  
  414. timeStarted = self.touchlist[team][player.guid].startTime;
  415.  
  416. if ( timeStarted < bestTime )
  417. {
  418. nukeOwner = player;
  419. bestTime = timeStarted;
  420. }
  421. }
  422. assert( isDefined( nukeOwner ) );
  423.  
  424. nukeOwner maps\mp\killstreaks\_nuke::tryUseNuke( 1 );
  425. }
  426.  
  427.  
  428. giveFlagCaptureXP( touchList )
  429. {
  430. level endon ( "game_ended" );
  431. wait .05;
  432. WaitTillSlowProcessAllowed();
  433.  
  434. players = getArrayKeys( touchList );
  435. for ( index = 0; index < players.size; index++ )
  436. {
  437. player = touchList[players[index]].player;
  438. player thread maps\mp\gametypes\_hud_message::SplashNotify( "captured_nuke", maps\mp\gametypes\_rank::getScoreInfoValue( "capture" ) );
  439. player thread [[level.onXPEvent]]( "capture" );
  440. maps\mp\gametypes\_gamescore::givePlayerScore( "capture", player );
  441. }
  442. }
  443.  
  444. setUseBarScore( team )
  445. {
  446. teamScore = getTeamScore( team );
  447.  
  448. foreach( player in level.players )
  449. {
  450. if ( !isDefined( player ) )
  451. continue;
  452.  
  453. if ( player.team != team )
  454. continue;
  455.  
  456. if ( !isDefined( self.touchlist[team][player.guid] ) )
  457. continue;
  458.  
  459. //player thread maps\mp\gametypes\_rank::giveRankXP( "challenge",50 );
  460.  
  461. player.useBar updateBar( teamScore/100, 0 );
  462. }
  463. }
  464.  
  465. updateHudElems()
  466. {
  467. foreach( player in level.players )
  468. {
  469. if ( !isDefined( player ) )
  470. continue;
  471.  
  472. if ( !isDefined( self.touchlist["axis"][player.guid] ) && !isDefined( self.touchlist["allies"][player.guid] ) )
  473. {
  474. player.useBar hideElem();
  475. player.useBarText hideElem();
  476. }
  477.  
  478. if ( isDefined( self.touchlist["axis"][player.guid] ) || isDefined( self.touchlist["allies"][player.guid] ) )
  479. {
  480. player.useBar showElem();
  481. player.useBarText showElem();
  482. }
  483. }
  484. }
  485.  
  486.  
  487. onNormalDeath( victim, attacker, lifeId )
  488. {
  489. if ( !isDefined( level.inOvertime ) || !level.inOvertime )
  490. return;
  491.  
  492. team = victim.team;
  493.  
  494. if ( game["state"] == "postgame" )
  495. attacker.finalKill = true;
  496. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement