Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1. #include maps\mp\_utility;
  2. #include maps\mp\gametypes\_hud_util;
  3. #include supersport\endroundmusic;
  4.  
  5. finalKillcamWaiter()
  6. {
  7. if ( !level.inFinalKillcam )
  8. return;
  9.  
  10. while (level.inFinalKillcam)
  11. wait(0.05);
  12. }
  13.  
  14. postRoundFinalKillcam()
  15. {
  16. level notify( "play_final_killcam" );
  17. song = (1+randomInt(10));
  18. level thread playSoundOnAllPlayers( "endround" + song );
  19. maps\mp\gametypes\_globallogic_utils::resetOutcomeForAllPlayers();
  20. finalKillcamWaiter();
  21. }
  22.  
  23. startFinalKillcam(
  24. attackerNum,
  25. targetNum,
  26. killcamentityindex,
  27. sWeapon,
  28. deathTime,
  29. deathTimeOffset,
  30. offsetTime,
  31. attacker,
  32. victim
  33. )
  34. {
  35. if(attackerNum < 0)
  36. return;
  37. recordKillcamSettings( attackerNum, targetNum, sWeapon, deathTime, deathTimeOffset, offsetTime, attacker, killcamentityindex, victim );
  38. startLastKillcam();
  39. }
  40.  
  41. startLastKillcam()
  42. {
  43. if ( level.inFinalKillcam )
  44. return;
  45.  
  46. if ( !isDefined(level.lastKillCam) )
  47. return;
  48.  
  49. level.inFinalKillcam = true;
  50. level waittill ( "play_final_killcam" );
  51.  
  52. players = level.players;
  53. for ( index = 0; index < players.size; index++ )
  54. {
  55. player = players[index];
  56. player closeMenu();
  57. player closeInGameMenu();
  58. player thread finalKillcam();
  59. }
  60.  
  61. wait( 0.1 );
  62.  
  63. while ( areAnyPlayersWatchingTheKillcam() )
  64. wait( 0.05 );
  65.  
  66. level.inFinalKillcam = false;
  67. }
  68.  
  69.  
  70. areAnyPlayersWatchingTheKillcam()
  71. {
  72. players = level.players;
  73. for ( index = 0; index < players.size; index++ )
  74. {
  75. player = players[index];
  76. if ( isDefined( player.killcam ) )
  77. return true;
  78. }
  79.  
  80. return false;
  81. }
  82.  
  83. waitKillcamTime()
  84. {
  85. self endon("disconnect");
  86. self endon("end_finalkillcam");
  87.  
  88. wait(self.killcamlength - 0.05);
  89. self notify("end_finalkillcam");
  90. }
  91.  
  92. waitFinalKillcamSlowdown( startTime )
  93. {
  94. self endon("disconnect");
  95. self endon("end_finalkillcam");
  96. secondsUntilDeath = ( ( level.lastKillCam.deathTime - startTime ) / 1000 );
  97. deathTime = getTime() + secondsUntilDeath * 1000;
  98. waitBeforeDeath = 2;
  99. wait( max(0, (secondsUntilDeath - waitBeforeDeath) ) );
  100. setTimeScale( 1, int( deathTime - 500 ));
  101. wait( waitBeforeDeath );
  102. setTimeScale(1,getTime());
  103. }
  104. setTimeScale(to,time)
  105. {
  106. difference = (abs(getTime() - time)/1000);
  107. timescale = getDvarFloat("timescale");
  108. if(difference != 0)
  109. {
  110. for(i = timescale*20; i >= to*20; i -= 1 )
  111. {
  112. wait ((int(difference)/int(getDvarFloat("timescale")*20))/20);
  113. setDvar("timescale",i/20);
  114. }
  115. }
  116. else
  117. setDvar("timescale",to);
  118. }
  119. endKillcam()
  120. {
  121. if(isDefined(self.fkc_timer))
  122. self.fkc_timer.alpha = 0;
  123.  
  124. if(isDefined(self.killertext))
  125. self.killertext.alpha = 0;
  126.  
  127. self.killcam = undefined;
  128.  
  129. //self maps\mp\gametypes\_globallogic::spawnSpectator();
  130. }
  131.  
  132. checkForAbruptKillcamEnd()
  133. {
  134. self endon("disconnect");
  135. self endon("end_finalkillcam");
  136.  
  137. while(1)
  138. {
  139. if ( self.archivetime <= 0 )
  140. break;
  141. wait .05;
  142. }
  143.  
  144. self notify("end_finalkillcam");
  145. }
  146. checkPlayers()
  147. {
  148. self endon("disconnect");
  149. self endon("end_finalkillcam");
  150.  
  151. while(1)
  152. {
  153. if(! isDefined(maps\mp\gametypes\_globallogic::getPlayerFromClientNum(level.lastKillCam.spectatorclient)) )
  154. break;
  155. wait 0.05;
  156. }
  157. self notify("end_finalkillcam");
  158. }
  159. recordKillcamSettings( spectatorclient, targetentityindex, sWeapon, deathTime, deathTimeOffset, offsettime, attacker, entityindex, victim )
  160. {
  161. if ( ! isDefined(level.lastKillCam) )
  162. level.lastKillCam = spawnStruct();
  163.  
  164. level.lastKillCam.spectatorclient = spectatorclient;
  165. level.lastKillCam.weapon = sWeapon;
  166. level.lastKillCam.deathTime = deathTime;
  167. level.lastKillCam.deathTimeOffset = deathTimeOffset;
  168. level.lastKillCam.offsettime = offsettime;
  169. level.lastKillCam.targetentityindex = targetentityindex;
  170. level.lastKillCam.attacker = attacker;
  171. level.lastKillCam.entityindex = entityindex;
  172. level.lastKillCam.victim = victim;
  173. }
  174.  
  175. finalKillcam()
  176. {
  177. self endon("disconnect");
  178. level endon("game_ended");
  179.  
  180. self notify( "end_killcam" );
  181.  
  182. self setClientDvar("cg_airstrikeKillCamDist", 20);
  183.  
  184. postDeathDelay = (getTime() - level.lastKillCam.deathTime) / 1000;
  185. predelay = postDeathDelay + level.lastKillCam.deathTimeOffset;
  186.  
  187. camtime = calcKillcamTime( level.lastKillCam.weapon, predelay, false, undefined );
  188. postdelay = calcPostDelay();
  189.  
  190. killcamoffset = camtime + predelay;
  191. killcamlength = camtime + postdelay - 0.05;
  192.  
  193. killcamstarttime = (gettime() - killcamoffset * 1000);
  194.  
  195. self notify ( "begin_killcam", getTime() );
  196.  
  197. self.sessionstate = "spectator";
  198. self.spectatorclient = level.lastKillCam.spectatorclient;
  199. self.killcamentity = -1;
  200. if ( level.lastKillCam.entityindex >= 0 )
  201. self thread setKillCamEntity( level.lastKillCam.entityindex, 0 - killcamstarttime - 100 );
  202. self.killcamtargetentity = level.lastKillCam.targetentityindex;
  203. self.archivetime = killcamoffset;
  204. self.killcamlength = killcamlength;
  205. self.psoffsettime = level.lastKillCam.offsettime;
  206.  
  207. self allowSpectateTeam("allies", true);
  208. self allowSpectateTeam("axis", true);
  209. self allowSpectateTeam("freelook", false);
  210. self allowSpectateTeam("none", false);
  211.  
  212. wait 0.05;
  213.  
  214. if ( self.archivetime <= predelay )
  215. {
  216. self.sessionstate = "dead";
  217. self.spectatorclient = -1;
  218. self.killcamentity = -1;
  219. self.archivetime = 0;
  220. self.psoffsettime = 0;
  221.  
  222. self notify ( "end_finalkillcam" );
  223.  
  224. return;
  225. }
  226.  
  227. self thread checkForAbruptKillcamEnd();
  228. self thread checkPlayers();
  229.  
  230. self.killcam = true;
  231.  
  232. self addKillcamTimer(camtime);
  233. self addKillcamKiller(level.lastKillCam.attacker,level.lastKillCam.victim);
  234.  
  235. self thread waitKillcamTime();
  236. self thread waitFinalKillcamSlowdown( killcamstarttime );
  237.  
  238. self waittill("end_finalkillcam");
  239.  
  240. self.villain destroy();
  241. self.versus destroy();
  242. self.victim destroy();
  243.  
  244. self endKillcam();
  245. }
  246.  
  247. isKillcamGrenadeWeapon( sWeapon )
  248. {
  249. if (sWeapon == "frag_grenade_mp")
  250. return true;
  251.  
  252. else if (sWeapon == "frag_grenade_short_mp" )
  253. return true;
  254.  
  255. return false;
  256. }
  257. calcKillcamTime( sWeapon, predelay, respawn, maxtime )
  258. {
  259. camtime = 0.0;
  260.  
  261. if ( isKillcamGrenadeWeapon( sWeapon ) )
  262. {
  263. camtime = 4.25;
  264. }
  265. else
  266. camtime = 5;
  267.  
  268. if (isdefined(maxtime)) {
  269. if (camtime > maxtime)
  270. camtime = maxtime;
  271. if (camtime < .05)
  272. camtime = .05;
  273. }
  274.  
  275. return camtime;
  276. }
  277.  
  278. calcPostDelay()
  279. {
  280. postdelay = 0;
  281.  
  282. // time after player death that killcam continues for
  283. if (getDvar( "scr_killcam_posttime") == "")
  284. postdelay = 2;
  285.  
  286. else
  287. {
  288. postdelay = getDvarFloat( "scr_killcam_posttime");
  289. if (postdelay < 0.05)
  290. postdelay = 0.05;
  291. }
  292.  
  293. return postdelay;
  294. }
  295. addKillcamKiller(attacker,victim)
  296. {
  297. self.villain = createFontString( "default", level.lowerTextFontSize );
  298. self.villain setPoint( "CENTER", "BOTTOM", -500, -110 );
  299. self.villain.alignX = "right";
  300. self.villain.archived = false;
  301. self.villain setPlayerNameString( attacker );
  302. self.villain.alpha = 1;
  303. self.villain.glowalpha = 1;
  304. self.villain.glowColor = level.randomcolour;
  305. self.villain moveOverTime( 4 );
  306. self.villain.x = -20;
  307.  
  308. self.versus = createFontString( "default", level.lowerTextFontSize );
  309. self.versus.alpha = 0;
  310. self.versus setPoint( "CENTER", "BOTTOM", 0, -110 );
  311. self.versus.archived = false;
  312. self.versus setText( "vs" );
  313. self.versus.glowColor = level.randomcolour;
  314. self.versus fadeOverTime( 4 );
  315. self.versus.alpha = 1;
  316.  
  317. self.victim = createFontString( "default", level.lowerTextFontSize );
  318. self.victim setPoint( "CENTER", "BOTTOM", 500, -110 );
  319. self.victim.alignX = "left";
  320. self.victim.archived = false;
  321. self.victim setPlayerNameString( victim );
  322. self.victim.glowalpha = 1;
  323. self.victim.glowColor = level.randomcolour;
  324. self.victim moveOverTime( 4 );
  325. self.victim.x = 20;
  326.  
  327. if ( isDefined( self.carryIcon ) )
  328. self.carryIcon destroy();
  329. }
  330. addKillcamTimer(camtime)
  331. {
  332. if (! isDefined(self.fkc_timer))
  333. {
  334. self.fkc_timer = createFontString("big", 2.0);
  335. self.fkc_timer.archived = false;
  336. self.fkc_timer.x = 0;
  337. self.fkc_timer.alignX = "center";
  338. self.fkc_timer.alignY = "middle";
  339. self.fkc_timer.horzAlign = "center_safearea";
  340. self.fkc_timer.vertAlign = "top";
  341. self.fkc_timer.y = 50;
  342. self.fkc_timer.sort = 1;
  343. self.fkc_timer.font = "big";
  344. self.fkc_timer.foreground = true;
  345. self.fkc_timer.color = (0.85,0.85,0.85);
  346. self.fkc_timer.hideWhenInMenu = true;
  347. }
  348. self.fkc_timer.y = 50;
  349. self.fkc_timer.alpha = 1;
  350. self.fkc_timer setTenthsTimer(camtime);
  351. }
  352. setKillCamEntity( killcamentityindex, delayms )
  353. {
  354. self endon("disconnect");
  355. self endon("end_killcam");
  356. self endon("spawned");
  357.  
  358. if ( delayms > 0 )
  359. wait delayms / 1000;
  360.  
  361. self.killcamentity = killcamentityindex;
  362. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement