Advertisement
Guest User

conf - Notesblok

a guest
Nov 19th, 2011
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.72 KB | None | 0 0
  1. #include maps\mp\_utility;
  2. #include maps\mp\gametypes\_hud_util;
  3. #include common_scripts\utility;
  4. /*
  5. Confirmed Kill
  6. Objective: Score points for your team by eliminating players on the opposing team.
  7. Score bonus points for picking up dogtags from downed enemies.
  8. Map ends: When one team reaches the score limit, or time limit is reached
  9. Respawning: No wait / Near teammates
  10.  
  11. Level requirementss
  12. ------------------
  13. Spawnpoints:
  14. classname mp_tdm_spawn
  15. All players spawn from these. The spawnpoint chosen is dependent on the current locations of teammates and enemies
  16. at the time of spawn. Players generally spawn behind their teammates relative to the direction of enemies.
  17.  
  18. Spectator Spawnpoints:
  19. classname mp_global_intermission
  20. Spectators spawn from these and intermission is viewed from these positions.
  21. Atleast one is required, any more and they are randomly chosen between.
  22. */
  23.  
  24.  
  25. main()
  26. {
  27. if(getdvar("mapname") == "mp_background")
  28. return;
  29.  
  30. maps\mp\gametypes\_globallogic::init();
  31. maps\mp\gametypes\_callbacksetup::SetupCallbacks();
  32. maps\mp\gametypes\_globallogic::SetupCallbacks();
  33.  
  34. if ( isUsingMatchRulesData() )
  35. {
  36. level.initializeMatchRules = ::initializeMatchRules;
  37. [[level.initializeMatchRules]]();
  38. level thread reInitializeMatchRulesOnMigration();
  39. }
  40. else
  41. {
  42. registerRoundSwitchDvar( level.gameType, 0, 0, 9 );
  43. registerTimeLimitDvar( level.gameType, 10 );
  44. registerScoreLimitDvar( level.gameType, 65 );
  45. registerRoundLimitDvar( level.gameType, 1 );
  46. registerWinLimitDvar( level.gameType, 1 );
  47. registerNumLivesDvar( level.gameType, 0 );
  48. registerHalfTimeDvar( level.gameType, 0 );
  49.  
  50. level.matchRules_damageMultiplier = 0;
  51. level.matchRules_vampirism = 0;
  52. }
  53.  
  54. level.teamBased = true;
  55. level.initGametypeAwards = ::initGametypeAwards;
  56. level.onStartGameType = ::onStartGameType;
  57. level.getSpawnPoint = ::getSpawnPoint;
  58. level.onNormalDeath = ::onNormalDeath;
  59. level.onPrecacheGameType = ::onPrecacheGameType;
  60.  
  61. if ( level.matchRules_damageMultiplier || level.matchRules_vampirism )
  62. level.modifyPlayerDamage = maps\mp\gametypes\_damage::gamemodeModifyPlayerDamage;
  63.  
  64. game["dialog"]["gametype"] = "kill_confirmed";
  65.  
  66. level.conf_vo["axis"] = "RU_1mc_kill_confirmed";
  67. level.conf_vo["allies"] = "US_1mc_kill_confirmed";
  68.  
  69. level.conf_fx["vanish"] = loadFx( "impacts/small_snowhit" );
  70. }
  71.  
  72.  
  73. initializeMatchRules()
  74. {
  75. // set common values
  76. setCommonRulesFromMatchRulesData();
  77.  
  78. // set everything else (private match options, default .cfg file values, and what normally is registered in the 'else' below)
  79. SetDynamicDvar( "scr_conf_roundswitch", 0 );
  80. registerRoundSwitchDvar( "conf", 0, 0, 9 );
  81. SetDynamicDvar( "scr_conf_roundlimit", 1 );
  82. registerRoundLimitDvar( "conf", 1 );
  83. SetDynamicDvar( "scr_conf_winlimit", 1 );
  84. registerWinLimitDvar( "conf", 1 );
  85. SetDynamicDvar( "scr_conf_halftime", 0 );
  86. registerHalfTimeDvar( "conf", 0 );
  87.  
  88. SetDynamicDvar( "scr_conf_promode", 0 );
  89. }
  90.  
  91.  
  92. onPrecacheGameType()
  93. {
  94. precachemodel( "prop_dogtags_friend" );
  95. precachemodel( "prop_dogtags_foe" );
  96. precacheshader( "waypoint_dogtags" );
  97. }
  98.  
  99.  
  100. onStartGameType()
  101. {
  102. setClientNameMode("auto_change");
  103.  
  104. if ( !isdefined( game["switchedsides"] ) )
  105. game["switchedsides"] = false;
  106.  
  107. if ( game["switchedsides"] )
  108. {
  109. oldAttackers = game["attackers"];
  110. oldDefenders = game["defenders"];
  111. game["attackers"] = oldDefenders;
  112. game["defenders"] = oldAttackers;
  113. }
  114.  
  115. setObjectiveText( "allies", &"OBJECTIVES_CONF" );
  116. setObjectiveText( "axis", &"OBJECTIVES_CONF" );
  117.  
  118. if ( level.splitscreen )
  119. {
  120. setObjectiveScoreText( "allies", &"OBJECTIVES_CONF" );
  121. setObjectiveScoreText( "axis", &"OBJECTIVES_CONF" );
  122. }
  123. else
  124. {
  125. setObjectiveScoreText( "allies", &"OBJECTIVES_CONF_SCORE" );
  126. setObjectiveScoreText( "axis", &"OBJECTIVES_CONF_SCORE" );
  127. }
  128. setObjectiveHintText( "allies", &"OBJECTIVES_CONF_HINT" );
  129. setObjectiveHintText( "axis", &"OBJECTIVES_CONF_HINT" );
  130.  
  131. level.spawnMins = ( 0, 0, 0 );
  132. level.spawnMaxs = ( 0, 0, 0 );
  133. maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" );
  134. maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" );
  135. maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
  136. maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" );
  137.  
  138. level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
  139. setMapCenter( level.mapCenter );
  140.  
  141. maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 );
  142. maps\mp\gametypes\_rank::registerScoreInfo( "kill_confirmed", 50 );
  143. maps\mp\gametypes\_rank::registerScoreInfo( "kill_denied", 50 );
  144. maps\mp\gametypes\_rank::registerScoreInfo( "tags_retrieved", 250 );
  145.  
  146. level.dogtags = [];
  147.  
  148. allowed[0] = level.gameType;
  149.  
  150. maps\mp\gametypes\_gameobjects::main(allowed);
  151. }
  152.  
  153.  
  154. getSpawnPoint()
  155. {
  156. spawnteam = self.pers["team"];
  157. if ( game["switchedsides"] )
  158. spawnteam = getOtherTeam( spawnteam );
  159.  
  160. if ( level.inGracePeriod )
  161. {
  162. spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + spawnteam + "_start" );
  163. spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
  164. }
  165. else
  166. {
  167. spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( spawnteam );
  168. spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
  169. }
  170.  
  171. return spawnPoint;
  172. }
  173.  
  174.  
  175. onNormalDeath( victim, attacker, lifeId )
  176. {
  177. //score = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" );
  178. //assert( isDefined( score ) );
  179.  
  180. level thread spawnDogTags( victim, attacker );
  181.  
  182. //attacker maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( attacker.pers["team"], score );
  183.  
  184. if ( game["state"] == "postgame" && game["teamScores"][attacker.team] > game["teamScores"][level.otherTeam[attacker.team]] )
  185. attacker.finalKill = true;
  186. }
  187.  
  188.  
  189. spawnDogTags( victim, attacker )
  190. {
  191. if ( isDefined( level.dogtags[victim.guid] ) )
  192. {
  193. PlayFx( level.conf_fx["vanish"], level.dogtags[victim.guid].curOrigin );
  194. level.dogtags[victim.guid] notify( "reset" );
  195.  
  196. //if ( isDefined( level.dogtags[victim.guid].attacker ) /*&& level.dogtags[victim.guid].attacker != attacker*/ && isAlive( level.dogtags[victim.guid].attacker ) )
  197. //level.dogtags[victim.guid].attacker thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_UNCONFIRMED_KILL" );
  198. }
  199. else
  200. {
  201. visuals[0] = spawn( "script_model", (0,0,0) );
  202. visuals[0] setModel( "prop_dogtags_foe" );
  203. visuals[1] = spawn( "script_model", (0,0,0) );
  204. visuals[1] setModel( "prop_dogtags_friend" );
  205.  
  206. trigger = spawn( "trigger_radius", (0,0,0), 0, 32, 32 );
  207.  
  208. level.dogtags[victim.guid] = maps\mp\gametypes\_gameobjects::createUseObject( "any", trigger, visuals, (0,0,16) );
  209.  
  210. // we don't need these
  211. _objective_delete( level.dogtags[victim.guid].objIDAllies );
  212. _objective_delete( level.dogtags[victim.guid].objIDAxis );
  213. maps\mp\gametypes\_objpoints::deleteObjPoint( level.dogtags[victim.guid].objPoints["allies"] );
  214. maps\mp\gametypes\_objpoints::deleteObjPoint( level.dogtags[victim.guid].objPoints["axis"] );
  215.  
  216. level.dogtags[victim.guid] maps\mp\gametypes\_gameobjects::setUseTime( 0 );
  217. level.dogtags[victim.guid].onUse = ::onUse;
  218. level.dogtags[victim.guid].victim = victim;
  219. level.dogtags[victim.guid].victimTeam = victim.pers["team"];
  220.  
  221. level.dogtags[victim.guid].objId = maps\mp\gametypes\_gameobjects::getNextObjID();
  222. objective_add( level.dogtags[victim.guid].objId, "invisible", (0,0,0) );
  223. objective_icon( level.dogtags[victim.guid].objId, "waypoint_dogtags" );
  224.  
  225. level thread clearOnVictimDisconnect( victim );
  226. }
  227.  
  228. pos = victim.origin + (0,0,14);
  229. level.dogtags[victim.guid].curOrigin = pos;
  230. level.dogtags[victim.guid].trigger.origin = pos;
  231. level.dogtags[victim.guid].visuals[0].origin = pos;
  232. level.dogtags[victim.guid].visuals[1].origin = pos;
  233.  
  234. level.dogtags[victim.guid] maps\mp\gametypes\_gameobjects::allowUse( "any" );
  235.  
  236. level.dogtags[victim.guid].visuals[0] thread showToTeam( level.dogtags[victim.guid], getOtherTeam( victim.pers["team"] ) );
  237. level.dogtags[victim.guid].visuals[1] thread showToTeam( level.dogtags[victim.guid], victim.pers["team"] );
  238.  
  239. level.dogtags[victim.guid].attacker = attacker;
  240. //level.dogtags[victim.guid] thread timeOut( victim );
  241.  
  242. objective_position( level.dogtags[victim.guid].objId, pos );
  243. objective_state( level.dogtags[victim.guid].objId, "active" );
  244. objective_player( level.dogtags[victim.guid].objId, attacker getEntityNumber() );
  245.  
  246. playSoundAtPos( pos, "mp_killconfirm_tags_drop" );
  247.  
  248. level.dogtags[victim.guid] thread bounce();
  249. }
  250.  
  251.  
  252. showToTeam( gameObject, team )
  253. {
  254. gameObject endon ( "death" );
  255. gameObject endon( "reset" );
  256.  
  257. self hide();
  258.  
  259. foreach ( player in level.players )
  260. {
  261. if( player.team == team )
  262. self ShowToPlayer( player );
  263. }
  264.  
  265. for ( ;; )
  266. {
  267. level waittill ( "joined_team" );
  268.  
  269. self hide();
  270. foreach ( player in level.players )
  271. {
  272. if ( player.team == team )
  273. self ShowToPlayer( player );
  274.  
  275. if ( gameObject.victimTeam == player.team && player == gameObject.attacker )
  276. objective_state( gameObject.objId, "invisible" );
  277. }
  278. }
  279. }
  280.  
  281.  
  282. onUse( player )
  283. {
  284. pos = self.curOrigin;
  285.  
  286. self notify( "reset" );
  287. self.visuals[0] hide();
  288. self.visuals[1] hide();
  289. self.curOrigin = (0,0,1000);
  290. self.trigger.origin = (0,0,1000);
  291. self.visuals[0].origin = (0,0,1000);
  292. self.visuals[1].origin = (0,0,1000);
  293. self maps\mp\gametypes\_gameobjects::allowUse( "none" );
  294. objective_state( self.objId, "invisible" );
  295.  
  296. // friendly pickup
  297. if ( player.pers["team"] == self.victimTeam )
  298. {
  299. self.trigger playSound( "mp_killconfirm_tags_deny" );
  300.  
  301. player incPlayerStat( "killsdenied", 1 );
  302. player incPersStat( "denied", 1 );
  303. player maps\mp\gametypes\_persistence::statSetChild( "round", "denied", player.pers["denied"] );
  304.  
  305. if ( self.victim == player )
  306. {
  307. event = "tags_retrieved";
  308. splash = &"SPLASHES_TAGS_RETRIEVED";
  309. }
  310. else
  311. {
  312. event = "kill_denied";
  313. splash = &"SPLASHES_KILL_DENIED";
  314. }
  315.  
  316. // tell the attacker their kill was denied
  317. if ( isDefined( self.attacker ) )
  318. self.attacker thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_DENIED_KILL", (1,0.5,0.5) );
  319. }
  320. // enemy pickup
  321. else
  322. {
  323. self.trigger playSound( "mp_killconfirm_tags_pickup" );
  324.  
  325. event = "kill_confirmed";
  326. splash = &"SPLASHES_KILL_CONFIRMED";
  327.  
  328. player incPlayerStat( "killsconfirmed", 1 );
  329. player incPersStat( "confirmed", 1 );
  330. player maps\mp\gametypes\_persistence::statSetChild( "round", "confirmed", player.pers["confirmed"] );
  331.  
  332. // if not us, tell the attacker their kill was confirmed
  333. if ( self.attacker != player )
  334. self.attacker onPickup( event, splash );
  335.  
  336. player playLocalSound( game["voice"][player.pers["team"]] + "kill_confirmed" );
  337.  
  338. player maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( player.pers["team"], 1 );
  339. }
  340.  
  341. player onPickup( event, splash );
  342.  
  343. self.attacker = undefined;
  344. }
  345.  
  346.  
  347. onPickup( event, splash, stat )
  348. {
  349. self thread maps\mp\gametypes\_rank::xpEventPopup( splash );
  350. maps\mp\gametypes\_gamescore::givePlayerScore( event, self, undefined, true );
  351. self thread maps\mp\gametypes\_rank::giveRankXP( event );
  352.  
  353. //self notify( "objective", event );
  354. //self incPlayerStat( stat, 1 );
  355. //self thread maps\mp\_matchdata::logGameEvent( event, self.origin );
  356. }
  357.  
  358.  
  359. bounce()
  360. {
  361. level endon( "game_ended" );
  362. self endon( "reset" );
  363.  
  364. bottomPos = self.curOrigin;
  365. topPos = self.curOrigin + (0,0,12);
  366.  
  367. while( true )
  368. {
  369. self.visuals[0] moveTo( topPos, 0.5, 0.15, 0.15 );
  370. self.visuals[0] rotateYaw( 180, 0.5 );
  371. self.visuals[1] moveTo( topPos, 0.5, 0.15, 0.15 );
  372. self.visuals[1] rotateYaw( 180, 0.5 );
  373.  
  374. wait( 0.5 );
  375.  
  376. self.visuals[0] moveTo( bottomPos, 0.5, 0.15, 0.15 );
  377. self.visuals[0] rotateYaw( 180, 0.5 );
  378. self.visuals[1] moveTo( bottomPos, 0.5, 0.15, 0.15 );
  379. self.visuals[1] rotateYaw( 180, 0.5 );
  380.  
  381. wait( 0.5 );
  382. }
  383. }
  384.  
  385.  
  386. timeOut( victim )
  387. {
  388. level endon( "game_ended" );
  389. victim endon( "disconnect" );
  390. self notify( "timeout" );
  391. self endon( "timeout" );
  392.  
  393. level maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( 30.0 );
  394. //wait( 30 );
  395.  
  396. self.visuals[0] hide();
  397. self.visuals[1] hide();
  398. self.curOrigin = (0,0,1000);
  399. self.trigger.origin = (0,0,1000);
  400. self.visuals[0].origin = (0,0,1000);
  401. self.visuals[1].origin = (0,0,1000);
  402. self maps\mp\gametypes\_gameobjects::allowUse( "none" );
  403. }
  404.  
  405.  
  406. clearOnVictimDisconnect( victim )
  407. {
  408. level endon( "game_ended" );
  409.  
  410. guid = victim.guid;
  411. victim waittill( "disconnect" );
  412.  
  413. if ( isDefined( level.dogtags[guid] ) )
  414. {
  415. // block further use
  416. level.dogtags[guid] maps\mp\gametypes\_gameobjects::allowUse( "none" );
  417.  
  418. // tell the attacker their kill was denied
  419. if ( isDefined( level.dogtags[guid].attacker ) )
  420. level.dogtags[guid].attacker thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_DENIED_KILL", (1,0.5,0.5) );
  421.  
  422. // play vanish effect, reset, and wait for reset to process
  423. PlayFx( level.conf_fx["vanish"], level.dogtags[guid].curOrigin );
  424. level.dogtags[guid] notify( "reset" );
  425. wait( 0.05 );
  426.  
  427. // sanity check before removal
  428. if ( isDefined( level.dogtags[guid] ) )
  429. {
  430. // delete objective and visuals
  431. objective_delete( level.dogtags[guid].objId );
  432. level.dogtags[guid].trigger delete();
  433. for ( i=0; i<level.dogtags[guid].visuals.size; i++ )
  434. level.dogtags[guid].visuals[i] delete();
  435. level.dogtags[guid] notify ( "deleted" );
  436.  
  437. // remove from list
  438. level.dogtags[guid] = undefined;
  439. }
  440. }
  441. }
  442.  
  443.  
  444. initGametypeAwards()
  445. {
  446. //maps\mp\_awards::initStatAward( "killsconfirmed", 0, maps\mp\_awards::highestWins );
  447. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement