Advertisement
Guest User

Untitled

a guest
Sep 29th, 2010
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.82 KB | None | 0 0
  1. #include maps\mp\_utility;
  2. #include maps\mp\gametypes\_hud_util;
  3. #include common_scripts\utility;
  4.  
  5. init()
  6. {
  7. /#
  8. setDevDvarIfUninitialized("scr_showspawns", "0");
  9.  
  10. precacheItem("defaultweapon_mp");
  11. precacheModel("test_sphere_silver");
  12.  
  13. thread addTestClients();
  14.  
  15. setDevDvarIfUninitialized( "scr_testclients", "0" );
  16.  
  17. setDevDvar( "scr_list_weapons", "" );
  18. setDevDvar( "scr_givekillstreak", "" );
  19. setDevDvar( "scr_giveradar", "0" );
  20. setDevDvar( "scr_useGambit", "" );
  21. setDevDvar( "scr_useAirDrop", "");
  22. setDevDvar( "scr_giveairstrike", "0" );
  23. setDevDvar( "scr_givehelicopter", "0" );
  24. setDevDvar( "scr_giveac130", "0" );
  25. setDevDvar( "scr_giveairdrop", "0" );
  26. setDevDvar( "scr_giveremotemissile", "0" );
  27.  
  28. setDevDvar( "scr_predatorme", "" );
  29. setDevDvar( "scr_setdefcon", "" );
  30. setDevDvar( "scr_showcard", "" );
  31. setDevDvar( "scr_showoutcome", "" );
  32.  
  33. setDevDvar( "scr_enemykillhost", "" );
  34.  
  35. setDevDvar( "scr_giveperk", "" );
  36. setDevDvar( "scr_takeperk", "" );
  37.  
  38. setDevDvar( "scr_sre", "" );
  39. setDevDvar( "scr_testmigration", "" );
  40.  
  41. setDevDvar( "scr_show_splash", "" );
  42. setDevDvar( "scr_spam_splashes", "" );
  43.  
  44. setDevDvar( "scr_show_endgameupdate", "" );
  45.  
  46. level.baseWeaponList = maps\mp\gametypes\_weapons::buildWeaponData( true );
  47.  
  48. setDevDvarIfUninitialized( "debug_reflection", "0" );
  49.  
  50. level thread onPlayerConnect();
  51.  
  52. for(;;)
  53. {
  54. updateDevSettings();
  55. wait .05;
  56. }
  57. #/
  58. }
  59.  
  60.  
  61. /#
  62. updateDevSettings()
  63. {
  64. showspawns = getdvarInt("scr_showspawns");
  65. if(showspawns > 1)
  66. showspawns = 1;
  67. else if(showspawns < 0)
  68. showspawns = 0;
  69.  
  70. if(!isdefined(level.showspawns) || level.showspawns != showspawns)
  71. {
  72. level.showspawns = showspawns;
  73. setDevDvar("scr_showspawns", level.showspawns);
  74.  
  75. if(level.showspawns)
  76. showSpawnpoints();
  77. else
  78. hideSpawnpoints();
  79. }
  80.  
  81. updateMinimapSetting();
  82.  
  83. if ( getDvar( "scr_test_weapon" ) != "" )
  84. {
  85. foreach ( player in level.players )
  86. {
  87. player thread initForWeaponTests();
  88. player setTestWeapon( getDvar( "scr_test_weapon" ) );
  89. }
  90.  
  91. setDevDvar( "scr_test_weapon", "" );
  92. }
  93.  
  94. if ( getDvar( "scr_dump_ranks" ) != "" )
  95. {
  96.  
  97. setDevDvar( "scr_dump_ranks", "" );
  98.  
  99. for ( rId = 0; rId <= level.maxRank; rId++ )
  100. {
  101. rankName = tableLookupIString( "mp/rankTable.csv", 0, rId, 5 );
  102. iprintln( "REFERENCE UNLOCKED_AT_LV" + (rId+1) );
  103. iprintln( "LANG_ENGLISH Unlocked at ", rankName, " (Lv" + (rId+1) + ")" );
  104.  
  105. wait ( 0.05 );
  106. }
  107. }
  108.  
  109. if ( getDvar( "scr_list_weapons" ) != "" )
  110. {
  111. foreach ( baseWeapon, _ in level.baseWeaponList )
  112. iPrintLn( baseWeapon );
  113.  
  114. setDevDvar( "scr_list_weapons", "" );
  115. }
  116.  
  117. if ( getdvarint("scr_predatorme") == 1 )
  118. {
  119. foreach ( player in level.players )
  120. level thread maps\mp\killstreaks\_remotemissile::_fire_noplayer( 0, player );
  121.  
  122. setDevDvar( "scr_predatorme", "" );
  123. }
  124.  
  125. if ( getdvarfloat("scr_complete_all_challenges") != 0 )
  126. {
  127. foreach ( player in level.players )
  128. {
  129. player thread maps\mp\gametypes\_missions::completeAllChallenges( getdvarfloat("scr_complete_all_challenges") );
  130. }
  131.  
  132. setDevDvar( "scr_complete_all_challenges", "" );
  133. }
  134.  
  135. if ( getdvarint("scr_giveradar") == 1 )
  136. {
  137. foreach ( player in level.players )
  138. player maps\mp\killstreaks\_killstreaks::giveKillstreak( "uav" );
  139.  
  140. setDevDvar( "scr_giveradar", "0" );
  141. }
  142. if ( getdvarint("scr_giveairstrike") == 1 )
  143. {
  144. foreach ( player in level.players )
  145. player maps\mp\killstreaks\_killstreaks::giveKillstreak( "airstrike" );
  146.  
  147. setDevDvar( "scr_giveairstrike", "0" );
  148. }
  149. if ( getdvarint("scr_giveairdrop") == 1 )
  150. {
  151. foreach ( player in level.players )
  152. player maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop" );
  153.  
  154. setDevDvar( "scr_giveairdrop", "0" );
  155. }
  156. if ( getdvarint("scr_givehelicopter") == 1 )
  157. {
  158. foreach ( player in level.players )
  159. player maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter" );
  160.  
  161. setDevDvar( "scr_givehelicopter", "0" );
  162. }
  163. if ( getdvarint("scr_giveac130") == 1 )
  164. {
  165. foreach ( player in level.players )
  166. player maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130" );
  167.  
  168. setDevDvar( "scr_giveac130", "0" );
  169. }
  170. if ( getdvarint("scr_giveremotemissile") == 1 )
  171. {
  172. foreach ( player in level.players )
  173. player maps\mp\killstreaks\_killstreaks::giveKillstreak( "predator_missile" );
  174.  
  175. setDevDvar( "scr_giveremotemissile", "0" );
  176. }
  177. if ( getDvarInt("scr_setdefcon") != 0 )
  178. {
  179. maps\mp\_defcon::updateDefcon( getDvarInt("scr_setdefcon") );
  180. setDevDvar( "scr_setdefcon", "" );
  181. }
  182.  
  183. if ( getDvar("scr_givekillstreak") != "" )
  184. {
  185. streakName = getDvar( "scr_givekillstreak" );
  186.  
  187. if ( isDefined( level.killstreakFuncs[streakName] ) )
  188. {
  189. foreach ( player in level.players )
  190. player maps\mp\killstreaks\_killstreaks::giveKillstreak( streakName );
  191. }
  192. else
  193. {
  194. println( "\"" + getDvar("scr_givekillstreak") + "\" is not a valid value for scr_givekillstreak. Try:" );
  195. foreach ( killstreak, value in level.killstreakFuncs )
  196. {
  197. println( " " + killstreak );
  198. }
  199. println( "" );
  200. }
  201.  
  202. setDevDvar( "scr_givekillstreak", "" );
  203. }
  204.  
  205. if ( getDvar("scr_showcard") != "" )
  206. {
  207. tokens = strTok( getDvar( "scr_showcard" ), " " );
  208.  
  209. if ( tokens.size )
  210. {
  211. playerName = tokens[0];
  212.  
  213. if ( isDefined( tokens[1] ) )
  214. slotId = int(tokens[1]);
  215. else
  216. slotId = 0;
  217.  
  218. owner = undefined;
  219. foreach ( player in level.players )
  220. {
  221. if ( player.name == playerName )
  222. {
  223. owner = player;
  224. player SetCardDisplaySlot( player, slotId );
  225. break;
  226. }
  227. }
  228.  
  229. if ( !isDefined( owner ) )
  230. printLn( "Player " + playerName + "not found!" );
  231. }
  232.  
  233. setDevDvar( "scr_showcard", "" );
  234. }
  235.  
  236. if ( getDvar("scr_usekillstreak") != "" )
  237. {
  238. tokens = strTok( getDvar( "scr_usekillstreak" ), " " );
  239.  
  240. if ( tokens.size > 1 )
  241. {
  242. playerName = tokens[0];
  243. streakName = tokens[1];
  244.  
  245. if ( !isDefined( level.killstreakFuncs[streakName] ) )
  246. printLn( "Killstreak " + streakName + "not found!" );
  247.  
  248. owner = undefined;
  249. foreach ( player in level.players )
  250. {
  251. if ( player.name == playerName )
  252. {
  253. owner = player;
  254.  
  255. player maps\mp\killstreaks\_killstreaks::giveKillstreak( streakName );
  256.  
  257. if ( isDefined( tokens[2] ) )
  258. player thread maps\mp\killstreaks\_killstreaks::killstreakUsePressed();
  259. else
  260. player thread [[ level.killstreakFuncs[ streakName ] ]]();
  261.  
  262. if ( isSubStr( streakName, "airstrike" ) )
  263. {
  264. wait .05;
  265. player notify( "confirm_location", level.mapCenter, 0 );
  266. }
  267.  
  268. if ( isSubStr( streakName, "airdrop" ) )
  269. {
  270. wait .05;
  271.  
  272. if ( streakName == "airdrop_mega" )
  273. level thread maps\mp\killstreaks\_airdrop::doC130FlyBy( player, level.mapCenter, randomFloat( 360 ), "airdrop_mega" );
  274. else
  275. level thread maps\mp\killstreaks\_airdrop::doFlyBy( player, level.mapCenter, randomFloat( 360 ), "airdrop" );
  276. }
  277. break;
  278. }
  279. }
  280.  
  281. if ( !isDefined( owner ) )
  282. printLn( "Player " + playerName + "not found!" );
  283. }
  284. setDevDvar( "scr_usekillstreak", "" );
  285. }
  286.  
  287. if ( getDvar("scr_playertoorigin") != "" )
  288. {
  289. tokens = strTok( getDvar( "scr_playertoorigin" ), " " );
  290.  
  291. newOrigin = (int(tokens[0]), int(tokens[1]), int(tokens[2]));
  292.  
  293. playerName = tokens[3];
  294. foreach ( player in level.players )
  295. {
  296. if ( player.name == playerName )
  297. {
  298. player setOrigin( newOrigin );
  299. break;
  300. }
  301. }
  302.  
  303. setDevDvar( "scr_playertoorigin", "" );
  304. }
  305.  
  306. if ( getDvar("scr_useGambit") != "" )
  307. {
  308. tokens = strTok( getDvar( "scr_useGambit" ), " " );
  309.  
  310. if ( tokens.size > 1 )
  311. {
  312. playerName = tokens[0];
  313. gambitName = tokens[1];
  314.  
  315. if ( !isDefined( level.scriptPerks[gambitName] ) )
  316. printLn( "Gambit " + gambitName + "not found!" );
  317.  
  318. owner = undefined;
  319. foreach ( player in level.players )
  320. {
  321. if ( player.name == playerName )
  322. {
  323. owner = player;
  324. player notify("gambit_on");
  325. break;
  326. }
  327. }
  328.  
  329. if ( !isDefined( owner ) )
  330. printLn( "Player " + playerName + "not found!" );
  331. }
  332. setDevDvar( "scr_useGambit", "" );
  333. }
  334.  
  335. if ( getDvar("scr_levelnotify" ) != "" )
  336. {
  337. level notify ( getDvar( "scr_levelnotify" ) );
  338. setDevDvar( "scr_levelnotify", "" );
  339. }
  340.  
  341. if ( getdvar("scr_giveperk") != "" )
  342. {
  343. perk = getdvar("scr_giveperk");
  344.  
  345. for ( i = 0; i < level.players.size; i++ )
  346. level.players[i] thread maps\mp\perks\_perks::givePerk( perk );
  347.  
  348. setDevDvar( "scr_giveperk", "" );
  349. }
  350. if ( getdvar("scr_takeperk") != "" )
  351. {
  352. perk = getdvar("scr_takeperk");
  353. for ( i = 0; i < level.players.size; i++ )
  354. {
  355. level.players[i] unsetPerk( perk, true );
  356. level.players[i].extraPerks[ perk ] = undefined;
  357. }
  358. setDevDvar( "scr_takeperk", "" );
  359. }
  360.  
  361. if ( getDvar( "scr_x_kills_y" ) != "" )
  362. {
  363. nameTokens = strTok( getDvar( "scr_x_kills_y" ), " " );
  364. if ( nameTokens.size > 1 )
  365. thread xKillsY( nameTokens[0], nameTokens[1] );
  366.  
  367. setDevDvar( "scr_x_kills_y", "" );
  368. }
  369.  
  370. if ( getDvar( "scr_enemykillhost" ) != "" )
  371. {
  372. hostPlayer = undefined;
  373. enemyPlayer = undefined;
  374. foreach ( player in level.players )
  375. {
  376. if ( !player isHost() )
  377. continue;
  378.  
  379. hostPlayer = player;
  380. break;
  381. }
  382.  
  383.  
  384. foreach ( player in level.players )
  385. {
  386. if ( level.teamBased )
  387. {
  388. if ( player.team == hostPlayer.team )
  389. continue;
  390.  
  391. enemyPlayer = player;
  392. break;
  393. }
  394. else
  395. {
  396. if ( player isHost() )
  397. continue;
  398.  
  399. enemyPlayer = player;
  400. break;
  401. }
  402. }
  403.  
  404. if ( isDefined( enemyPlayer ) )
  405. thread xKillsY( enemyPlayer.name, hostPlayer.name );
  406.  
  407. setDevDvar( "scr_enemykillhost", "" );
  408. }
  409.  
  410. if ( getDvar( "scr_drop_weapon" ) != "" )
  411. {
  412. weapon = spawn( "weapon_" + getDvar( "scr_drop_weapon" ), level.players[0].origin );
  413. setDevDvar( "scr_drop_weapon", "" );
  414. }
  415.  
  416. if ( getDvar( "scr_set_rank" ) != "" )
  417. {
  418. level.players[0].pers["rank"] = 0;
  419. level.players[0].pers["rankxp"] = 0;
  420.  
  421. newRank = min( getDvarInt( "scr_set_rank" ), 54 );
  422. newRank = max( newRank, 1 );
  423.  
  424. setDevDvar( "scr_set_rank", "" );
  425.  
  426. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  427. println( "scr_set_rank may not work because there are not players on both teams" );
  428. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  429. println( "scr_set_rank may not work because there are not at least two players" );
  430.  
  431. level.players[0] setPlayerData( "restXPGoal", 0 );
  432.  
  433. lastXp = 0;
  434. for ( index = 0; index <= newRank; index++ )
  435. {
  436. newXp = maps\mp\gametypes\_rank::getRankInfoMinXP( index );
  437. level.players[0] thread maps\mp\gametypes\_rank::giveRankXP( "kill", newXp - lastXp );
  438. lastXp = newXp;
  439. wait ( 0.25 );
  440. self notify ( "cancel_notify" );
  441. }
  442. }
  443.  
  444. if ( getDvar( "scr_givexp" ) != "" )
  445. {
  446. level.players[0] thread maps\mp\gametypes\_rank::giveRankXP( "challenge", getDvarInt( "scr_givexp" ) );
  447.  
  448. setDevDvar( "scr_givexp", "" );
  449. }
  450.  
  451. if ( getDvar( "scr_do_notify" ) != "" )
  452. {
  453. for ( i = 0; i < level.players.size; i++ )
  454. level.players[i] maps\mp\gametypes\_hud_message::oldNotifyMessage( getDvar( "scr_do_notify" ), getDvar( "scr_do_notify" ), game["icons"]["allies"] );
  455.  
  456. announcement( getDvar( "scr_do_notify" ) );
  457. setDevDvar( "scr_do_notify", "" );
  458. }
  459.  
  460. if ( getDvar( "scr_spam_splashes" ) != "" )
  461. {
  462. foreach( player in level.players )
  463. {
  464. player thread maps\mp\gametypes\_hud_message::splashNotifyDelayed( "longshot" );
  465. player thread maps\mp\gametypes\_hud_message::splashNotifyDelayed( "headshot" );
  466. player thread maps\mp\gametypes\_rank::updateRankAnnounceHUD();
  467. player thread maps\mp\gametypes\_hud_message::challengeSplashNotify( "ch_marksman_m16" );
  468. player thread maps\mp\gametypes\_hud_message::splashNotifyDelayed( "execution" );
  469. player thread maps\mp\gametypes\_hud_message::killstreakSplashNotify( "uav", 3 );
  470. player thread maps\mp\gametypes\_hud_message::killstreakSplashNotify( "ac130", 11 );
  471. player thread maps\mp\gametypes\_rank::updateRankAnnounceHUD();
  472. }
  473.  
  474. setDevDvar( "scr_spam_splashes", "" );
  475. }
  476.  
  477. if ( getDvar( "scr_show_splash" ) != "" )
  478. {
  479. splashName = getDvar( "scr_show_splash" );
  480. splashValue = 1;
  481. splashType = tableLookup( "mp/splashTable.csv", 0, splashName, 11 );
  482.  
  483. if ( splashType == "" || splashType == "none" )
  484. {
  485. println( "splash not found in splash table" );
  486. }
  487. else
  488. {
  489. switch( splashType )
  490. {
  491. case "splash":
  492. foreach( player in level.players )
  493. player thread maps\mp\gametypes\_hud_message::splashNotify( splashName, splashValue );
  494. break;
  495. case "killstreak":
  496. foreach( player in level.players )
  497. player thread maps\mp\gametypes\_hud_message::killstreakSplashNotify( splashName, splashValue );
  498. break;
  499. case "challenge":
  500. case "perk_challenge":
  501. foreach( player in level.players )
  502. player thread maps\mp\gametypes\_hud_message::challengeSplashNotify( splashName );
  503. break;
  504. case "splooge":
  505. foreach( player in level.players )
  506. {
  507. player thread maps\mp\gametypes\_hud_message::challengeSplashNotify( "ch_marksman_m16" );
  508. player thread maps\mp\gametypes\_hud_message::killstreakSplashNotify( "uav", 3 );
  509. player thread maps\mp\gametypes\_hud_message::killstreakSplashNotify( "ac130", 11 );
  510. }
  511. break;
  512. default:
  513. break;
  514. }
  515. }
  516. setDevDvar( "scr_show_splash", "" );
  517. }
  518.  
  519. if ( getDvar( "scr_addlower" ) != "" )
  520. {
  521. foreach ( player in level.players )
  522. player thread testLowerMessage();
  523.  
  524. setDevDvar( "scr_addlower", "" );
  525. }
  526.  
  527. if ( getDvar( "scr_entdebug" ) != "" )
  528. {
  529. ents = getEntArray();
  530. level.entArray = [];
  531. level.entCounts = [];
  532. level.entGroups = [];
  533. for ( index = 0; index < ents.size; index++ )
  534. {
  535. classname = ents[index].classname;
  536. if ( !isSubStr( classname, "_spawn" ) )
  537. {
  538. curEnt = ents[index];
  539.  
  540. level.entArray[level.entArray.size] = curEnt;
  541.  
  542. if ( !isDefined( level.entCounts[classname] ) )
  543. level.entCounts[classname] = 0;
  544.  
  545. level.entCounts[classname]++;
  546.  
  547. if ( !isDefined( level.entGroups[classname] ) )
  548. level.entGroups[classname] = [];
  549.  
  550. level.entGroups[classname][level.entGroups[classname].size] = curEnt;
  551. }
  552. }
  553. }
  554.  
  555. if ( getDvar( "scr_sre" ) != "" )
  556. {
  557. assertmsg( "Testing script runtime error" );
  558. setDevDvar( "scr_sre", "" );
  559. }
  560.  
  561. if ( getDvar( "scr_testmigration" ) != "" )
  562. {
  563. setDevDvar( "scr_testmigration", "" );
  564. thread maps\mp\gametypes\_hostmigration::Callback_HostMigration();
  565. thread hostMigrationEndTimer_dev();
  566. }
  567.  
  568. if ( getDvar( "scr_show_endgameupdate" ) != "" )
  569. {
  570. promotion = ( getDvar( "scr_show_endgameupdate" ) == "2" );
  571.  
  572. foreach( player in level.players )
  573. player thread testEndGameUpdate( promotion );
  574.  
  575. setDevDvar( "scr_show_endgameupdate", "" );
  576. }
  577. }
  578.  
  579. testEndGameUpdate( promotion )
  580. {
  581. self setClientDvars( "ui_challenge_1_ref", "ch_marksman_ak47",
  582. "ui_challenge_2_ref", "ch_ak47_gl",
  583. "ui_challenge_3_ref", "ch_ak47_reflex",
  584. "ui_challenge_4_ref", "ch_ak47_silencer",
  585. "ui_challenge_5_ref", "ch_ak47_acog",
  586. "ui_challenge_6_ref", "ch_ak47_fmj",
  587. "ui_challenge_7_ref", "ch_ak47_mastery" );
  588.  
  589. if ( isDefined( promotion ) && promotion )
  590. self setClientDvar( "ui_promotion", 1 );
  591. else
  592. self setClientDvar( "ui_promotion", 0 );
  593.  
  594. self closepopupMenu();
  595. self closeInGameMenu();
  596.  
  597. self openMenu( game["menu_endgameupdate"] );
  598.  
  599. waitTime = 4.0 + min( 7, 3 );
  600. while ( waitTime )
  601. {
  602. wait ( 0.25 );
  603. waitTime -= 0.25;
  604.  
  605. self openMenu( game["menu_endgameupdate"] );
  606. }
  607.  
  608. self closeMenu( game["menu_endgameupdate"] );
  609. }
  610.  
  611. hostMigrationEndTimer_dev()
  612. {
  613. level endon( "host_migration_begin" );
  614. wait randomfloat( 20 );
  615. level notify( "hostmigration_enoughplayers" );
  616. }
  617.  
  618.  
  619. testLowerMessage()
  620. {
  621. self setLowerMessage( "spawn_info", game["strings"]["waiting_to_spawn"], 10 );
  622. wait ( 3.0 );
  623.  
  624. self setLowerMessage( "last_stand", &"PLATFORM_COWARDS_WAY_OUT", undefined, 50 );
  625. wait ( 3.0 );
  626.  
  627. self clearLowerMessage( "last_stand" );
  628. wait ( 10.0 );
  629.  
  630. self clearLowerMessage( "spawn_info" );
  631. }
  632.  
  633.  
  634. giveExtraPerks()
  635. {
  636. if ( !isdefined( self.extraPerks ) )
  637. return;
  638.  
  639. perks = getArrayKeys( self.extraPerks );
  640.  
  641. for ( i = 0; i < perks.size; i++ )
  642. self setPerk( perks[i], true );
  643. }
  644.  
  645. xKillsY( attackerName, victimName )
  646. {
  647. attacker = undefined;
  648. victim = undefined;
  649.  
  650. for ( index = 0; index < level.players.size; index++ )
  651. {
  652. if ( level.players[index].name == attackerName )
  653. attacker = level.players[index];
  654. else if ( level.players[index].name == victimName )
  655. victim = level.players[index];
  656. }
  657.  
  658. if ( !isAlive( attacker ) || !isAlive( victim ) )
  659. return;
  660.  
  661. victim thread [[level.callbackPlayerDamage]](
  662. attacker, // eInflictor The entity that causes the damage.(e.g. a turret)
  663. attacker, // eAttacker The entity that is attacking.
  664. 500, // iDamage Integer specifying the amount of damage done
  665. 0, // iDFlags Integer specifying flags that are to be applied to the damage
  666. "MOD_RIFLE_BULLET", // sMeansOfDeath Integer specifying the method of death
  667. "scar_mp", // sWeapon The weapon number of the weapon used to inflict the damage
  668. (0,0,0), // vPoint The point the damage is from?
  669. (0,0,0), // vDir The direction of the damage
  670. "none", // sHitLoc The location of the hit
  671. 0 // psOffsetTime The time offset for the damage
  672. );
  673. }
  674.  
  675.  
  676. updateMinimapSetting()
  677. {
  678. // use 0 for no required map aspect ratio.
  679. requiredMapAspectRatio = getdvarfloat("scr_requiredMapAspectRatio", 1);
  680.  
  681. if (!isdefined(level.minimapheight)) {
  682. setDevDvar("scr_minimap_height", "0");
  683. level.minimapheight = 0;
  684. }
  685. minimapheight = getdvarfloat("scr_minimap_height");
  686. if (minimapheight != level.minimapheight)
  687. {
  688. if (isdefined(level.minimaporigin)) {
  689. level.minimapplayer unlink();
  690. level.minimaporigin delete();
  691. level notify("end_draw_map_bounds");
  692. }
  693.  
  694. if (minimapheight > 0)
  695. {
  696. level.minimapheight = minimapheight;
  697.  
  698. players = getentarray("player", "classname");
  699. if (players.size > 0)
  700. {
  701. player = players[0];
  702.  
  703. corners = getentarray("minimap_corner", "targetname");
  704. if (corners.size == 2)
  705. {
  706. viewpos = (corners[0].origin + corners[1].origin);
  707. viewpos = (viewpos[0]*.5, viewpos[1]*.5, viewpos[2]*.5);
  708.  
  709. maxcorner = (corners[0].origin[0], corners[0].origin[1], viewpos[2]);
  710. mincorner = (corners[0].origin[0], corners[0].origin[1], viewpos[2]);
  711. if (corners[1].origin[0] > corners[0].origin[0])
  712. maxcorner = (corners[1].origin[0], maxcorner[1], maxcorner[2]);
  713. else
  714. mincorner = (corners[1].origin[0], mincorner[1], mincorner[2]);
  715. if (corners[1].origin[1] > corners[0].origin[1])
  716. maxcorner = (maxcorner[0], corners[1].origin[1], maxcorner[2]);
  717. else
  718. mincorner = (mincorner[0], corners[1].origin[1], mincorner[2]);
  719.  
  720. viewpostocorner = maxcorner - viewpos;
  721. viewpos = (viewpos[0], viewpos[1], viewpos[2] + minimapheight);
  722.  
  723. origin = spawn("script_origin", player.origin);
  724.  
  725. northvector = (cos(getnorthyaw()), sin(getnorthyaw()), 0);
  726. eastvector = (northvector[1], 0 - northvector[0], 0);
  727. disttotop = vectordot(northvector, viewpostocorner);
  728. if (disttotop < 0)
  729. disttotop = 0 - disttotop;
  730. disttoside = vectordot(eastvector, viewpostocorner);
  731. if (disttoside < 0)
  732. disttoside = 0 - disttoside;
  733.  
  734. // extend map bounds to meet the required aspect ratio
  735. if ( requiredMapAspectRatio > 0 )
  736. {
  737. mapAspectRatio = disttoside / disttotop;
  738. if ( mapAspectRatio < requiredMapAspectRatio )
  739. {
  740. incr = requiredMapAspectRatio / mapAspectRatio;
  741. disttoside *= incr;
  742. addvec = vecscale( eastvector, vectordot( eastvector, maxcorner - viewpos ) * (incr - 1) );
  743. mincorner -= addvec;
  744. maxcorner += addvec;
  745. }
  746. else
  747. {
  748. incr = mapAspectRatio / requiredMapAspectRatio;
  749. disttotop *= incr;
  750. addvec = vecscale( northvector, vectordot( northvector, maxcorner - viewpos ) * (incr - 1) );
  751. mincorner -= addvec;
  752. maxcorner += addvec;
  753. }
  754. }
  755.  
  756. if ( level.console )
  757. {
  758. aspectratioguess = 16.0/9.0;
  759. // .8 would be .75 but it needs to be bigger because of safe area
  760. angleside = 2 * atan(disttoside * .8 / minimapheight);
  761. angletop = 2 * atan(disttotop * aspectratioguess * .8 / minimapheight);
  762. }
  763. else
  764. {
  765. aspectratioguess = 4.0/3.0;
  766. angleside = 2 * atan(disttoside / minimapheight);
  767. angletop = 2 * atan(disttotop * aspectratioguess / minimapheight);
  768. }
  769. if (angleside > angletop)
  770. angle = angleside;
  771. else
  772. angle = angletop;
  773.  
  774. znear = minimapheight - 1000;
  775. if (znear < 16) znear = 16;
  776. if (znear > 10000) znear = 10000;
  777.  
  778. player playerlinkto(origin);
  779. origin.origin = viewpos + (0,0,-62);
  780. origin.angles = (90, getnorthyaw(), 0);
  781.  
  782.  
  783. player TakeAllWeapons();
  784. player _giveWeapon( "defaultweapon_mp" );
  785. player setclientdvar("cg_drawgun", "0");
  786. player setclientdvar("cg_draw2d", "0");
  787. player setclientdvar("cg_drawfps", "0");
  788. player setclientdvar("fx_enable", "0");
  789. player setclientdvar("r_fog", "0");
  790. player setclientdvar("r_highLodDist", "0"); // (turns of lods)
  791. player setclientdvar("r_znear", znear); // (reduces z-fighting)
  792. player setclientdvar("r_lodscale", "0");
  793. player setclientdvar("cg_drawversion", "0");
  794. player setclientdvar("sm_enable", "1");
  795. setDevDvar("player_view_pitch_down", "90");
  796. setDevDvar("player_view_pitch_up", "0");
  797. player setclientdvar("cg_fov", angle);
  798. player setclientdvar("cg_fovmin", "1");
  799.  
  800. // hide 3D icons
  801. if ( isdefined( level.objPoints ) )
  802. {
  803. for ( i = 0; i < level.objPointNames.size; i++ )
  804. {
  805. if ( isdefined( level.objPoints[level.objPointNames[i]] ) )
  806. level.objPoints[level.objPointNames[i]] destroy();
  807. }
  808. level.objPoints = [];
  809. level.objPointNames = [];
  810. }
  811.  
  812. level.minimapplayer = player;
  813. level.minimaporigin = origin;
  814.  
  815. thread drawMiniMapBounds(viewpos, mincorner, maxcorner);
  816.  
  817. wait .05;
  818.  
  819. player setplayerangles(origin.angles);
  820. }
  821. else
  822. println("^1Error: There are not exactly 2 \"minimap_corner\" entities in the level.");
  823. }
  824. else
  825. setDevDvar("scr_minimap_height", "0");
  826. }
  827. }
  828. }
  829.  
  830. vecscale(vec, scalar)
  831. {
  832. return (vec[0]*scalar, vec[1]*scalar, vec[2]*scalar);
  833. }
  834.  
  835. drawMiniMapBounds(viewpos, mincorner, maxcorner)
  836. {
  837. level notify("end_draw_map_bounds");
  838. level endon("end_draw_map_bounds");
  839.  
  840. viewheight = (viewpos[2] - maxcorner[2]);
  841.  
  842. north = (cos(getnorthyaw()), sin(getnorthyaw()), 0);
  843.  
  844. diaglen = length(mincorner - maxcorner);
  845.  
  846. /*diagonal = maxcorner - mincorner;
  847. side = vecscale(north, vectordot(diagonal, north));
  848.  
  849. origcorner0 = mincorner;
  850. origcorner1 = mincorner + side;
  851. origcorner2 = maxcorner;
  852. origcorner3 = maxcorner - side;*/
  853.  
  854. mincorneroffset = (mincorner - viewpos);
  855. mincorneroffset = vectornormalize((mincorneroffset[0], mincorneroffset[1], 0));
  856. mincorner = mincorner + vecscale(mincorneroffset, diaglen * 1/800);
  857. maxcorneroffset = (maxcorner - viewpos);
  858. maxcorneroffset = vectornormalize((maxcorneroffset[0], maxcorneroffset[1], 0));
  859. maxcorner = maxcorner + vecscale(maxcorneroffset, diaglen * 1/800);
  860.  
  861. diagonal = maxcorner - mincorner;
  862. side = vecscale(north, vectordot(diagonal, north));
  863. sidenorth = vecscale(north, abs(vectordot(diagonal, north)));
  864.  
  865. corner0 = mincorner;
  866. corner1 = mincorner + side;
  867. corner2 = maxcorner;
  868. corner3 = maxcorner - side;
  869.  
  870. toppos = vecscale(mincorner + maxcorner, .5) + vecscale(sidenorth, .51);
  871. textscale = diaglen * .003;
  872.  
  873. while(1)
  874. {
  875. line(corner0, corner1, (0,1,0));
  876. line(corner1, corner2, (0,1,0));
  877. line(corner2, corner3, (0,1,0));
  878. line(corner3, corner0, (0,1,0));
  879.  
  880. /*line(origcorner0, origcorner1, (1,0,0));
  881. line(origcorner1, origcorner2, (1,0,0));
  882. line(origcorner2, origcorner3, (1,0,0));
  883. line(origcorner3, origcorner0, (1,0,0));*/
  884.  
  885. print3d(toppos, "This Side Up", (1,1,1), 1, textscale);
  886.  
  887. wait .05;
  888. }
  889. }
  890.  
  891. addTestClients()
  892. {
  893. wait 5;
  894.  
  895. for(;;)
  896. {
  897. if(getdvarInt("scr_testclients") > 0)
  898. break;
  899. wait 1;
  900. }
  901.  
  902. // for ( index = 1; index < 24; index++ )
  903. // kick( index );
  904.  
  905. testclients = getdvarInt("scr_testclients");
  906. setDevDvar( "scr_testclients", 0 );
  907. for(i = 0; i < testclients; i++)
  908. {
  909. ent[i] = addtestclient();
  910.  
  911. if (!isdefined(ent[i])) {
  912. println("Could not add test client");
  913. wait 1;
  914. continue;
  915. }
  916.  
  917. ent[i].pers["isBot"] = true;
  918. ent[i] thread TestClient("autoassign");
  919. }
  920.  
  921. if ( matchMakingGame() )
  922. setMatchData( "hasBots", true );
  923.  
  924. thread addTestClients();
  925. }
  926.  
  927.  
  928. TestClient(team)
  929. {
  930. self endon( "disconnect" );
  931.  
  932. while(!isdefined(self.pers["team"]))
  933. wait .05;
  934.  
  935. self notify("menuresponse", game["menu_team"], team);
  936. wait 0.5;
  937.  
  938. while( 1 )
  939. {
  940. //class = level.classMap[randomInt( level.classMap.size )];
  941. class = "class" + randomInt( 5 );
  942.  
  943. self notify("menuresponse", "changeclass", class);
  944.  
  945. self waittill( "spawned_player" );
  946. wait ( 0.10 );
  947. }
  948. }
  949.  
  950. showSpawnpoint( spawnpoint, classname, color )
  951. {
  952. center = spawnpoint.origin;
  953. forward = anglestoforward(spawnpoint.angles);
  954. right = anglestoright(spawnpoint.angles);
  955.  
  956. forward = common_scripts\utility::vector_multiply(forward, 16);
  957. right = common_scripts\utility::vector_multiply(right, 16);
  958.  
  959. a = center + forward - right;
  960. b = center + forward + right;
  961. c = center - forward + right;
  962. d = center - forward - right;
  963.  
  964. thread lineUntilNotified(a, b, color, 0);
  965. thread lineUntilNotified(b, c, color, 0);
  966. thread lineUntilNotified(c, d, color, 0);
  967. thread lineUntilNotified(d, a, color, 0);
  968.  
  969. thread lineUntilNotified(a, a + (0, 0, 72), color, 0);
  970. thread lineUntilNotified(b, b + (0, 0, 72), color, 0);
  971. thread lineUntilNotified(c, c + (0, 0, 72), color, 0);
  972. thread lineUntilNotified(d, d + (0, 0, 72), color, 0);
  973.  
  974. a = a + (0, 0, 72);
  975. b = b + (0, 0, 72);
  976. c = c + (0, 0, 72);
  977. d = d + (0, 0, 72);
  978.  
  979. thread lineUntilNotified(a, b, color, 0);
  980. thread lineUntilNotified(b, c, color, 0);
  981. thread lineUntilNotified(c, d, color, 0);
  982. thread lineUntilNotified(d, a, color, 0);
  983.  
  984. center = center + (0, 0, 36);
  985. arrow_forward = anglestoforward(spawnpoint.angles);
  986. arrowhead_forward = anglestoforward(spawnpoint.angles);
  987. arrowhead_right = anglestoright(spawnpoint.angles);
  988.  
  989. arrow_forward = common_scripts\utility::vector_multiply(arrow_forward, 32);
  990. arrowhead_forward = common_scripts\utility::vector_multiply(arrowhead_forward, 24);
  991. arrowhead_right = common_scripts\utility::vector_multiply(arrowhead_right, 8);
  992.  
  993. a = center + arrow_forward;
  994. b = center + arrowhead_forward - arrowhead_right;
  995. c = center + arrowhead_forward + arrowhead_right;
  996.  
  997. thread lineUntilNotified(center, a, (1, 1, 1), 0);
  998. thread lineUntilNotified(a, b, (1, 1, 1), 0);
  999. thread lineUntilNotified(a, c, (1, 1, 1), 0);
  1000.  
  1001. foreach ( alternate in spawnpoint.alternates )
  1002. {
  1003. thread lineUntilNotified( spawnpoint.origin, alternate, color, 0);
  1004. }
  1005.  
  1006. thread print3DUntilNotified(spawnpoint.origin + (0, 0, 72), classname, color, 1, 1);
  1007. }
  1008.  
  1009. showSpawnpoints()
  1010. {
  1011. if ( isdefined( level.spawnpoints ) )
  1012. {
  1013. foreach ( spawnpoint in level.spawnpoints )
  1014. {
  1015. showSpawnpoint( spawnpoint, spawnpoint.classname, (1,1,1) );
  1016. }
  1017. }
  1018. if ( isdefined( level.extraspawnpointsused ) )
  1019. {
  1020. foreach ( spawnpoint in level.extraspawnpointsused )
  1021. {
  1022. showSpawnpoint( spawnpoint, spawnpoint.fakeclassname, (.5,.5,.5) );
  1023. }
  1024. }
  1025. }
  1026.  
  1027. print3DUntilNotified(origin, text, color, alpha, scale)
  1028. {
  1029. level endon("hide_spawnpoints");
  1030.  
  1031. for(;;)
  1032. {
  1033. print3d(origin, text, color, alpha, scale);
  1034. wait .05;
  1035. }
  1036. }
  1037.  
  1038. lineUntilNotified(start, end, color, depthTest)
  1039. {
  1040. level endon("hide_spawnpoints");
  1041.  
  1042. for(;;)
  1043. {
  1044. line(start, end, color, depthTest);
  1045. wait .05;
  1046. }
  1047. }
  1048.  
  1049. hideSpawnpoints()
  1050. {
  1051. level notify("hide_spawnpoints");
  1052. }
  1053.  
  1054.  
  1055. initForWeaponTests()
  1056. {
  1057. if ( isDefined( self.initForWeaponTests ) )
  1058. return;
  1059.  
  1060. self.initForWeaponTests = true;
  1061.  
  1062. self thread changeCamoListener();
  1063. self thread thirdPersonToggle();
  1064.  
  1065. self waittill ( "death" );
  1066. self.initForWeaponTests = undefined;
  1067. }
  1068.  
  1069.  
  1070. setTestWeapon( weaponName )
  1071. {
  1072. if ( !isDefined( level.baseWeaponList[weaponName] ) )
  1073. {
  1074. self iPrintLnBold( "Unknown weapon: " + weaponName );
  1075. return;
  1076. }
  1077.  
  1078. self notify ( "new_test_weapon" );
  1079. self.baseWeapon = weaponName;
  1080. self thread weaponChangeListener();
  1081.  
  1082. self updateTestWeapon();
  1083. }
  1084.  
  1085.  
  1086. thirdPersonToggle()
  1087. {
  1088. self endon ( "death" );
  1089. self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
  1090.  
  1091. thirdPersonElem = self createFontString( "default", 1.5 );
  1092. thirdPersonElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 72 + 260 );
  1093. thirdPersonElem setText( "3rd Person: " + getDvarInt( "camera_thirdPerson" ) + " [{+actionslot 2}]" );
  1094. self thread destroyOnDeath( thirdPersonElem );
  1095.  
  1096. for ( ;; )
  1097. {
  1098. self waittill( "dpad_down" );
  1099.  
  1100. setDvar( "camera_thirdPerson", !getDvarInt( "camera_thirdPerson" ) );
  1101.  
  1102. thirdPersonElem setText( "3rd Person: " + getDvarInt( "camera_thirdPerson" ) + " [{+actionslot 2}]" );
  1103. }
  1104. }
  1105.  
  1106.  
  1107. changeCamoListener()
  1108. {
  1109. self endon ( "death" );
  1110. self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
  1111.  
  1112. camoList = [];
  1113.  
  1114. for ( rowIndex = 0; tableLookupByRow( "mp/camoTable.csv", rowIndex, 1 ) != ""; rowIndex++ )
  1115. camoList[camoList.size] = tableLookupByRow( "mp/camoTable.csv", rowIndex, 1 );
  1116.  
  1117. self.camoIndex = 0;
  1118.  
  1119. camoElem = self createFontString( "default", 1.5 );
  1120. camoElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 52 + 260 );
  1121. camoElem setText( "Camo: " + tableLookup( "mp/camoTable.csv", 0, self.camoIndex, 1 ) + " [{+actionslot 1}]" );
  1122. self thread destroyOnDeath( camoElem );
  1123.  
  1124. for ( ;; )
  1125. {
  1126. self waittill( "dpad_up" );
  1127.  
  1128. self.camoIndex++;
  1129. if ( self.camoIndex > (camoList.size - 1) )
  1130. self.camoIndex = 0;
  1131.  
  1132. camoElem setText( "Camo: " + tableLookup( "mp/camoTable.csv", 0, self.camoIndex, 1 ) + " [{+actionslot 1}]" );
  1133. self updateTestWeapon();
  1134. }
  1135. }
  1136.  
  1137.  
  1138. weaponChangeListener()
  1139. {
  1140. self endon ( "death" );
  1141. self endon ( "new_test_weapon" );
  1142.  
  1143. self notifyOnPlayerCommand( "next_weapon", "weapnext" );
  1144.  
  1145. if ( !isDefined( self.weaponElem ) )
  1146. {
  1147. self.weaponElem = self createFontString( "default", 1.5 );
  1148. self.weaponElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 32 + 260 );
  1149. self thread destroyOnDeath( self.weaponElem );
  1150. }
  1151. self.variantIndex = 0;
  1152.  
  1153. self.weaponElem setText( "Weapon: " + level.baseWeaponList[self.baseWeapon].variants[self.variantIndex] + " [{weapnext}]" );
  1154.  
  1155. for ( ;; )
  1156. {
  1157. self waittill ( "next_weapon" );
  1158.  
  1159. self.variantIndex++;
  1160. if ( self.variantIndex > (level.baseWeaponList[self.baseWeapon].variants.size - 1) )
  1161. self.variantIndex = 0;
  1162.  
  1163. self.weaponElem setText( "Weapon: " + level.baseWeaponList[self.baseWeapon].variants[self.variantIndex] + " [{weapnext}]" );
  1164. self updateTestWeapon();
  1165. }
  1166. }
  1167.  
  1168.  
  1169. destroyOnDeath( hudElem )
  1170. {
  1171. self waittill ( "death" );
  1172.  
  1173. hudElem destroy();
  1174. }
  1175.  
  1176. updateTestWeapon()
  1177. {
  1178. self takeAllWeapons();
  1179.  
  1180. wait ( 0.05 );
  1181.  
  1182. weaponName = level.baseWeaponList[self.baseWeapon].variants[self.variantIndex];
  1183.  
  1184. self _giveWeapon( weaponName, int(self.camoIndex) );
  1185. self switchToWeapon( weaponName );
  1186. self giveMaxAmmo( weaponName );
  1187. }
  1188.  
  1189. #/
  1190.  
  1191. onPlayerConnect()
  1192. {
  1193. for(;;)
  1194. {
  1195. level waittill( "connected", player );
  1196.  
  1197. player thread updateReflectionProbe();
  1198. }
  1199. }
  1200.  
  1201. updateReflectionProbe()
  1202. {
  1203. /#
  1204. for(;;)
  1205. {
  1206. if ( getDvarInt( "debug_reflection" ) == 1 )
  1207. {
  1208. if ( !isDefined( self.debug_reflectionobject ) )
  1209. {
  1210. self.debug_reflectionobject = spawn( "script_model", self geteye() + ( vector_multiply( anglestoforward( self.angles ), 100 ) ) );
  1211. self.debug_reflectionobject setmodel( "test_sphere_silver" );
  1212. self.debug_reflectionobject.origin = self geteye() + ( vector_multiply( anglestoforward( self getplayerangles() ), 100 ) );
  1213. self thread reflectionProbeButtons();
  1214. }
  1215. }
  1216. else if ( getDvarInt( "debug_reflection" ) == 0 )
  1217. {
  1218. if ( isDefined( self.debug_reflectionobject ) )
  1219. self.debug_reflectionobject delete();
  1220. }
  1221.  
  1222. wait( 0.05 );
  1223. }
  1224. #/
  1225. }
  1226.  
  1227. reflectionProbeButtons()
  1228. {
  1229. /#
  1230. offset = 100;
  1231. offsetinc = 50;
  1232.  
  1233. while ( getDvarInt( "debug_reflection" ) == 1 )
  1234. {
  1235. if ( self buttonpressed( "BUTTON_X" ) )
  1236. offset += offsetinc;
  1237. if ( self buttonpressed( "BUTTON_Y" ) )
  1238. offset -= offsetinc;
  1239. if ( offset > 1000 )
  1240. offset = 1000;
  1241. if ( offset < 64 )
  1242. offset = 64;
  1243.  
  1244. self.debug_reflectionobject.origin = self geteye() + ( vector_multiply( anglestoforward( self getplayerangles() ), offset ) );
  1245.  
  1246. wait .05;
  1247. }
  1248. #/
  1249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement