Advertisement
Guest User

Untitled

a guest
Sep 29th, 2010
607
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.23 KB | None | 0 0
  1. #include maps\mp\_utility;
  2.  
  3. FACTION_REF_COL = 0;
  4. FACTION_NAME_COL = 1;
  5. FACTION_SHORT_NAME_COL = 2;
  6. FACTION_ELIMINATED_COL = 3;
  7. FACTION_FORFEITED_COL = 4;
  8. FACTION_ICON_COL = 5;
  9. FACTION_HUD_ICON_COL = 6;
  10. FACTION_VOICE_PREFIX_COL = 7;
  11. FACTION_SPAWN_MUSIC_COL = 8;
  12. FACTION_WIN_MUSIC_COL = 9;
  13. FACTION_FLAG_MODEL_COL = 10;
  14. FACTION_FLAG_CARRY_MODEL_COL = 11;
  15. FACTION_FLAG_ICON_COL = 12;
  16. FACTION_FLAG_FX_COL = 13;
  17. FACTION_COLOR_R_COL = 14;
  18. FACTION_COLOR_G_COL = 15;
  19. FACTION_COLOR_B_COL = 16;
  20. FACTION_HEAD_ICON_COL = 17;
  21. FACTION_CRATE_MODEL_COL = 18;
  22.  
  23. init()
  24. {
  25. initScoreBoard();
  26.  
  27. level.teamBalance = getDvarInt("scr_teambalance");
  28. level.maxClients = getDvarInt( "sv_maxclients" );
  29.  
  30. level._effect["thermal_beacon"] = loadFx("misc/thermal_beacon_inverted");
  31. effect = level._effect["thermal_beacon"];
  32. PrecacheFxTeamThermal( effect, "J_Spine4" );
  33.  
  34. setPlayerModels();
  35.  
  36. level.freeplayers = [];
  37.  
  38. if( level.teamBased )
  39. {
  40. level thread onPlayerConnect();
  41. level thread updateTeamBalance();
  42.  
  43. wait .15;
  44. level thread updatePlayerTimes();
  45. }
  46. else
  47. {
  48. level thread onFreePlayerConnect();
  49.  
  50. wait .15;
  51. level thread updateFreePlayerTimes();
  52. }
  53. }
  54.  
  55.  
  56. initScoreBoard()
  57. {
  58. setDvar("g_TeamName_Allies", getTeamShortName( "allies" ));
  59. setDvar("g_TeamIcon_Allies", getTeamIcon( "allies" ));
  60. setDvar("g_TeamIcon_MyAllies", getTeamIcon( "allies" ));
  61. setDvar("g_TeamIcon_EnemyAllies", getTeamIcon( "allies" ));
  62. scoreColor = getTeamColor( "allies" );
  63. setDvar("g_ScoresColor_Allies", scoreColor[0] + " " + scoreColor[1] + " " + scoreColor[2] );
  64.  
  65. setDvar("g_TeamName_Axis", getTeamShortName( "axis" ));
  66. setDvar("g_TeamIcon_Axis", getTeamIcon( "axis" ));
  67. setDvar("g_TeamIcon_MyAxis", getTeamIcon( "axis" ));
  68. setDvar("g_TeamIcon_EnemyAxis", getTeamIcon( "axis" ));
  69. scoreColor = getTeamColor( "axis" );
  70. setDvar("g_ScoresColor_Axis", scoreColor[0] + " " + scoreColor[1] + " " + scoreColor[2] );
  71.  
  72. setdvar("g_ScoresColor_Spectator", ".25 .25 .25");
  73. setdvar("g_ScoresColor_Free", ".76 .78 .10");
  74. setdvar("g_teamColor_MyTeam", ".6 .8 .6" );
  75. setdvar("g_teamColor_EnemyTeam", "1 .45 .5" );
  76. setdvar("g_teamTitleColor_MyTeam", ".6 .8 .6" );
  77. setdvar("g_teamTitleColor_EnemyTeam", "1 .45 .5" );
  78. }
  79.  
  80. onPlayerConnect()
  81. {
  82. for(;;)
  83. {
  84. level waittill( "connected", player );
  85.  
  86. player thread onJoinedTeam();
  87. player thread onJoinedSpectators();
  88. player thread onPlayerSpawned();
  89.  
  90. player thread trackPlayedTime();
  91. }
  92. }
  93.  
  94.  
  95. onFreePlayerConnect()
  96. {
  97. for(;;)
  98. {
  99. level waittill( "connected", player );
  100.  
  101. player thread trackFreePlayedTime();
  102. }
  103. }
  104.  
  105.  
  106. onJoinedTeam()
  107. {
  108. self endon("disconnect");
  109.  
  110. for(;;)
  111. {
  112. self waittill( "joined_team" );
  113. //self logString( "joined team: " + self.pers["team"] );
  114. self updateTeamTime();
  115. }
  116. }
  117.  
  118.  
  119. onJoinedSpectators()
  120. {
  121. self endon("disconnect");
  122.  
  123. for(;;)
  124. {
  125. self waittill("joined_spectators");
  126. self.pers["teamTime"] = undefined;
  127. }
  128. }
  129.  
  130.  
  131. trackPlayedTime()
  132. {
  133. self endon( "disconnect" );
  134.  
  135. self.timePlayed["allies"] = 0;
  136. self.timePlayed["axis"] = 0;
  137. self.timePlayed["free"] = 0;
  138. self.timePlayed["other"] = 0;
  139. self.timePlayed["total"] = 0;
  140.  
  141. gameFlagWait( "prematch_done" );
  142.  
  143. for ( ;; )
  144. {
  145. if ( game["state"] == "playing" )
  146. {
  147. if ( self.sessionteam == "allies" )
  148. {
  149. self.timePlayed["allies"]++;
  150. self.timePlayed["total"]++;
  151. }
  152. else if ( self.sessionteam == "axis" )
  153. {
  154. self.timePlayed["axis"]++;
  155. self.timePlayed["total"]++;
  156. }
  157. else if ( self.sessionteam == "spectator" )
  158. {
  159. self.timePlayed["other"]++;
  160. }
  161.  
  162. }
  163.  
  164. wait ( 1.0 );
  165. }
  166. }
  167.  
  168.  
  169. updatePlayerTimes()
  170. {
  171. if ( !level.rankedmatch )
  172. return;
  173.  
  174. level endon( "game_ended" );
  175.  
  176. for ( ;; )
  177. {
  178. foreach ( player in level.players )
  179. player updatePlayedTime();
  180.  
  181. wait( 1.0 );
  182. }
  183. }
  184.  
  185.  
  186. updatePlayedTime()
  187. {
  188. if ( !self rankingEnabled() )
  189. return;
  190.  
  191. if ( self.timePlayed["allies"] )
  192. {
  193. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedAllies", self.timePlayed["allies"] );
  194. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedTotal", self.timePlayed["allies"] );
  195. self maps\mp\gametypes\_persistence::statAddChildBuffered( "round", "timePlayed", self.timePlayed["allies"] );
  196. }
  197.  
  198. if ( self.timePlayed["axis"] )
  199. {
  200. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedOpfor", self.timePlayed["axis"] );
  201. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedTotal", self.timePlayed["axis"] );
  202. self maps\mp\gametypes\_persistence::statAddChildBuffered( "round", "timePlayed", self.timePlayed["axis"] );
  203. }
  204.  
  205. if ( self.timePlayed["other"] )
  206. {
  207. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedOther", self.timePlayed["other"] );
  208. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedTotal", self.timePlayed["other"] );
  209. self maps\mp\gametypes\_persistence::statAddChildBuffered( "round", "timePlayed", self.timePlayed["other"] );
  210. }
  211.  
  212. if ( game["state"] == "postgame" )
  213. return;
  214.  
  215. self.timePlayed["allies"] = 0;
  216. self.timePlayed["axis"] = 0;
  217. self.timePlayed["other"] = 0;
  218. }
  219.  
  220.  
  221. updateTeamTime()
  222. {
  223. if ( game["state"] != "playing" )
  224. return;
  225.  
  226. self.pers["teamTime"] = getTime();
  227. }
  228.  
  229.  
  230. updateTeamBalanceDvar()
  231. {
  232. for(;;)
  233. {
  234. teambalance = getdvarInt("scr_teambalance");
  235. if(level.teambalance != teambalance)
  236. level.teambalance = getdvarInt("scr_teambalance");
  237.  
  238. wait 1;
  239. }
  240. }
  241.  
  242.  
  243. updateTeamBalance()
  244. {
  245. level.teamLimit = level.maxclients / 2;
  246.  
  247. level thread updateTeamBalanceDvar();
  248.  
  249. wait .15;
  250.  
  251. if ( level.teamBalance && isRoundBased() )
  252. {
  253. if( isDefined( game["BalanceTeamsNextRound"] ) )
  254. iPrintLnbold( &"MP_AUTOBALANCE_NEXT_ROUND" );
  255.  
  256. // TODO: add or change
  257. level waittill( "restarting" );
  258.  
  259. if( isDefined( game["BalanceTeamsNextRound"] ) )
  260. {
  261. level balanceTeams();
  262. game["BalanceTeamsNextRound"] = undefined;
  263. }
  264. else if( !getTeamBalance() )
  265. {
  266. game["BalanceTeamsNextRound"] = true;
  267. }
  268. }
  269. else
  270. {
  271. level endon ( "game_ended" );
  272. for( ;; )
  273. {
  274. if( level.teamBalance )
  275. {
  276. if( !getTeamBalance() )
  277. {
  278. iPrintLnBold( &"MP_AUTOBALANCE_SECONDS", 15 );
  279. wait 15.0;
  280.  
  281. if( !getTeamBalance() )
  282. level balanceTeams();
  283. }
  284.  
  285. wait 59.0;
  286. }
  287.  
  288. wait 1.0;
  289. }
  290. }
  291.  
  292. }
  293.  
  294.  
  295. getTeamBalance()
  296. {
  297. level.team["allies"] = 0;
  298. level.team["axis"] = 0;
  299.  
  300. players = level.players;
  301. for(i = 0; i < players.size; i++)
  302. {
  303. if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies"))
  304. level.team["allies"]++;
  305. else if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "axis"))
  306. level.team["axis"]++;
  307. }
  308.  
  309. if((level.team["allies"] > (level.team["axis"] + level.teamBalance)) || (level.team["axis"] > (level.team["allies"] + level.teamBalance)))
  310. return false;
  311. else
  312. return true;
  313. }
  314.  
  315.  
  316. balanceTeams()
  317. {
  318. iPrintLnBold( game["strings"]["autobalance"] );
  319. //Create/Clear the team arrays
  320. AlliedPlayers = [];
  321. AxisPlayers = [];
  322.  
  323. // Populate the team arrays
  324. players = level.players;
  325. for(i = 0; i < players.size; i++)
  326. {
  327. if(!isdefined(players[i].pers["teamTime"]))
  328. continue;
  329.  
  330. if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies"))
  331. AlliedPlayers[AlliedPlayers.size] = players[i];
  332. else if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "axis"))
  333. AxisPlayers[AxisPlayers.size] = players[i];
  334. }
  335.  
  336. MostRecent = undefined;
  337.  
  338. while((AlliedPlayers.size > (AxisPlayers.size + 1)) || (AxisPlayers.size > (AlliedPlayers.size + 1)))
  339. {
  340. if(AlliedPlayers.size > (AxisPlayers.size + 1))
  341. {
  342. // Move the player that's been on the team the shortest ammount of time (highest teamTime value)
  343. for(j = 0; j < AlliedPlayers.size; j++)
  344. {
  345. if(isdefined(AlliedPlayers[j].dont_auto_balance))
  346. continue;
  347.  
  348. if(!isdefined(MostRecent))
  349. MostRecent = AlliedPlayers[j];
  350. else if(AlliedPlayers[j].pers["teamTime"] > MostRecent.pers["teamTime"])
  351. MostRecent = AlliedPlayers[j];
  352. }
  353.  
  354. MostRecent [[level.axis]]();
  355. }
  356. else if(AxisPlayers.size > (AlliedPlayers.size + 1))
  357. {
  358. // Move the player that's been on the team the shortest ammount of time (highest teamTime value)
  359. for(j = 0; j < AxisPlayers.size; j++)
  360. {
  361. if(isdefined(AxisPlayers[j].dont_auto_balance))
  362. continue;
  363.  
  364. if(!isdefined(MostRecent))
  365. MostRecent = AxisPlayers[j];
  366. else if(AxisPlayers[j].pers["teamTime"] > MostRecent.pers["teamTime"])
  367. MostRecent = AxisPlayers[j];
  368. }
  369.  
  370. MostRecent [[level.allies]]();
  371. }
  372.  
  373. MostRecent = undefined;
  374. AlliedPlayers = [];
  375. AxisPlayers = [];
  376.  
  377. players = level.players;
  378. for(i = 0; i < players.size; i++)
  379. {
  380. if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies"))
  381. AlliedPlayers[AlliedPlayers.size] = players[i];
  382. else if((isdefined(players[i].pers["team"])) &&(players[i].pers["team"] == "axis"))
  383. AxisPlayers[AxisPlayers.size] = players[i];
  384. }
  385. }
  386. }
  387.  
  388.  
  389. setGhillieModels( env )
  390. {
  391. level.environment = env;
  392. switch ( env )
  393. {
  394. case "desert":
  395. mptype\mptype_ally_ghillie_desert::precache();
  396. mptype\mptype_opforce_ghillie_desert::precache();
  397. game["allies_model"]["GHILLIE"] = mptype\mptype_ally_ghillie_desert::main;
  398. game["axis_model"]["GHILLIE"] = mptype\mptype_opforce_ghillie_desert::main;
  399. break;
  400. case "arctic":
  401. mptype\mptype_ally_ghillie_arctic::precache();
  402. mptype\mptype_opforce_ghillie_arctic::precache();
  403. game["allies_model"]["GHILLIE"] = mptype\mptype_ally_ghillie_arctic::main;
  404. game["axis_model"]["GHILLIE"] = mptype\mptype_opforce_ghillie_arctic::main;
  405. break;
  406. case "urban":
  407. mptype\mptype_ally_ghillie_urban::precache();
  408. mptype\mptype_opforce_ghillie_urban::precache();
  409. game["allies_model"]["GHILLIE"] = mptype\mptype_ally_ghillie_urban::main;
  410. game["axis_model"]["GHILLIE"] = mptype\mptype_opforce_ghillie_urban::main;
  411. break;
  412. case "forest":
  413. mptype\mptype_ally_ghillie_forest::precache();
  414. mptype\mptype_opforce_ghillie_forest::precache();
  415. game["allies_model"]["GHILLIE"] = mptype\mptype_ally_ghillie_forest::main;
  416. game["axis_model"]["GHILLIE"] = mptype\mptype_opforce_ghillie_forest::main;
  417. break;
  418. default:
  419. break;
  420. }
  421. }
  422.  
  423. setTeamModels( team, charSet )
  424. {
  425. switch ( charSet )
  426. {
  427. case "seals_udt":
  428. mptype\mptype_seal_udt_sniper::precache();
  429. mptype\mptype_seal_udt_lmg::precache();
  430. mptype\mptype_seal_udt_assault::precache();
  431. mptype\mptype_seal_udt_shotgun::precache();
  432. mptype\mptype_seal_udt_smg::precache();
  433. mptype\mptype_seal_udt_riot::precache();
  434.  
  435. game[team + "_model"]["SNIPER"] = mptype\mptype_seal_udt_sniper::main;
  436. game[team + "_model"]["LMG"] = mptype\mptype_seal_udt_lmg::main;
  437. game[team + "_model"]["ASSAULT"] = mptype\mptype_seal_udt_assault::main;
  438. game[team + "_model"]["SHOTGUN"] = mptype\mptype_seal_udt_shotgun::main;
  439. game[team + "_model"]["SMG"] = mptype\mptype_seal_udt_smg::main;
  440. game[team + "_model"]["RIOT"] = mptype\mptype_seal_udt_riot::main;
  441.  
  442. break;
  443. case "us_army":
  444. mptype\mptype_us_army_sniper::precache();
  445. mptype\mptype_us_army_lmg::precache();
  446. mptype\mptype_us_army_assault::precache();
  447. mptype\mptype_us_army_shotgun::precache();
  448. mptype\mptype_us_army_smg::precache();
  449. mptype\mptype_us_army_riot::precache();
  450.  
  451. game[team + "_model"]["SNIPER"] = mptype\mptype_us_army_sniper::main;
  452. game[team + "_model"]["LMG"] = mptype\mptype_us_army_lmg::main;
  453. game[team + "_model"]["ASSAULT"] = mptype\mptype_us_army_assault::main;
  454. game[team + "_model"]["SHOTGUN"] = mptype\mptype_us_army_shotgun::main;
  455. game[team + "_model"]["SMG"] = mptype\mptype_us_army_smg::main;
  456. game[team + "_model"]["RIOT"] = mptype\mptype_us_army_riot::main;
  457.  
  458. break;
  459. case "opforce_composite":
  460. mptype\mptype_opforce_comp_assault::precache();
  461. mptype\mptype_opforce_comp_lmg::precache();
  462. mptype\mptype_opforce_comp_shotgun::precache();
  463. mptype\mptype_opforce_comp_smg::precache();
  464. mptype\mptype_opforce_comp_sniper::precache();
  465. mptype\mptype_opforce_comp_riot::precache();
  466.  
  467. game[team + "_model"]["SNIPER"] = mptype\mptype_opforce_comp_sniper::main;
  468. game[team + "_model"]["LMG"] = mptype\mptype_opforce_comp_lmg::main;
  469. game[team + "_model"]["ASSAULT"] = mptype\mptype_opforce_comp_assault::main;
  470. game[team + "_model"]["SHOTGUN"] = mptype\mptype_opforce_comp_shotgun::main;
  471. game[team + "_model"]["SMG"] = mptype\mptype_opforce_comp_smg::main;
  472. game[team + "_model"]["RIOT"] = mptype\mptype_opforce_comp_riot::main;
  473.  
  474. break;
  475. case "opforce_arctic":
  476. mptype\mptype_opforce_arctic_assault::precache();
  477. mptype\mptype_opforce_arctic_lmg::precache();
  478. mptype\mptype_opforce_arctic_shotgun::precache();
  479. mptype\mptype_opforce_arctic_smg::precache();
  480. mptype\mptype_opforce_arctic_sniper::precache();
  481. mptype\mptype_opforce_arctic_riot::precache();
  482.  
  483. game[team + "_model"]["SNIPER"] = mptype\mptype_opforce_arctic_sniper::main;
  484. game[team + "_model"]["LMG"] = mptype\mptype_opforce_arctic_lmg::main;
  485. game[team + "_model"]["ASSAULT"] = mptype\mptype_opforce_arctic_assault::main;
  486. game[team + "_model"]["SHOTGUN"] = mptype\mptype_opforce_arctic_shotgun::main;
  487. game[team + "_model"]["SMG"] = mptype\mptype_opforce_arctic_smg::main;
  488. game[team + "_model"]["RIOT"] = mptype\mptype_opforce_arctic_riot::main;
  489.  
  490. break;
  491. case "opforce_airborne":
  492. mptype\mptype_opforce_airborne_assault::precache();
  493. mptype\mptype_opforce_airborne_lmg::precache();
  494. mptype\mptype_opforce_airborne_shotgun::precache();
  495. mptype\mptype_opforce_airborne_smg::precache();
  496. mptype\mptype_opforce_airborne_sniper::precache();
  497. mptype\mptype_opforce_airborne_riot::precache();
  498.  
  499. game[team + "_model"]["SNIPER"] = mptype\mptype_opforce_airborne_sniper::main;
  500. game[team + "_model"]["LMG"] = mptype\mptype_opforce_airborne_lmg::main;
  501. game[team + "_model"]["ASSAULT"] = mptype\mptype_opforce_airborne_assault::main;
  502. game[team + "_model"]["SHOTGUN"] = mptype\mptype_opforce_airborne_shotgun::main;
  503. game[team + "_model"]["SMG"] = mptype\mptype_opforce_airborne_smg::main;
  504. game[team + "_model"]["RIOT"] = mptype\mptype_opforce_airborne_riot::main;
  505.  
  506. break;
  507. case "militia":
  508. mptype\mptype_opforce_militia_assault::precache();
  509. mptype\mptype_opforce_militia_lmg::precache();
  510. mptype\mptype_opforce_militia_shotgun::precache();
  511. mptype\mptype_opforce_militia_smg::precache();
  512. mptype\mptype_opforce_militia_sniper::precache();
  513. mptype\mptype_opforce_militia_riot::precache();
  514.  
  515. game[team + "_model"]["SNIPER"] = mptype\mptype_opforce_militia_sniper::main;
  516. game[team + "_model"]["LMG"] = mptype\mptype_opforce_militia_lmg::main;
  517. game[team + "_model"]["ASSAULT"] = mptype\mptype_opforce_militia_assault::main;
  518. game[team + "_model"]["SHOTGUN"] = mptype\mptype_opforce_militia_shotgun::main;
  519. game[team + "_model"]["SMG"] = mptype\mptype_opforce_militia_smg::main;
  520. game[team + "_model"]["RIOT"] = mptype\mptype_opforce_militia_riot::main;
  521.  
  522. break;
  523. case "socom_141":
  524. mptype\mptype_socom_assault::precache();
  525. mptype\mptype_socom_lmg::precache();
  526. mptype\mptype_socom_shotgun::precache();
  527. mptype\mptype_socom_smg::precache();
  528. mptype\mptype_socom_sniper::precache();
  529.  
  530. game[team + "_model"]["SNIPER"] = mptype\mptype_socom_sniper::main;
  531. game[team + "_model"]["LMG"] = mptype\mptype_socom_lmg::main;
  532. game[team + "_model"]["ASSAULT"] = mptype\mptype_socom_assault::main;
  533. game[team + "_model"]["SHOTGUN"] = mptype\mptype_socom_shotgun::main;
  534. game[team + "_model"]["SMG"] = mptype\mptype_socom_smg::main;
  535. game[team + "_model"]["RIOT"] = mptype\mptype_socom_smg::main;
  536.  
  537. break;
  538. case "socom_141_desert":
  539. mptype\mptype_tf141_desert_assault::precache();
  540. mptype\mptype_tf141_desert_lmg::precache();
  541. mptype\mptype_tf141_desert_smg::precache();
  542. mptype\mptype_tf141_desert_shotgun::precache();
  543. mptype\mptype_tf141_desert_sniper::precache();
  544. mptype\mptype_tf141_desert_riot::precache();
  545.  
  546. game[team + "_model"]["SNIPER"] = mptype\mptype_tf141_desert_sniper::main;
  547. game[team + "_model"]["LMG"] = mptype\mptype_tf141_desert_lmg::main;
  548. game[team + "_model"]["ASSAULT"] = mptype\mptype_tf141_desert_assault::main;
  549. game[team + "_model"]["SHOTGUN"] = mptype\mptype_tf141_desert_shotgun::main;
  550. game[team + "_model"]["SMG"] = mptype\mptype_tf141_desert_smg::main;
  551. game[team + "_model"]["RIOT"] = mptype\mptype_tf141_desert_riot::main;
  552.  
  553. break;
  554. case "socom_141_forest":
  555. mptype\mptype_tf141_forest_assault::precache();
  556. mptype\mptype_tf141_forest_lmg::precache();
  557. mptype\mptype_tf141_forest_smg::precache();
  558. mptype\mptype_tf141_forest_shotgun::precache();
  559. mptype\mptype_tf141_forest_sniper::precache();
  560. mptype\mptype_tf141_forest_riot::precache();
  561.  
  562. game[team + "_model"]["SNIPER"] = mptype\mptype_tf141_forest_sniper::main;
  563. game[team + "_model"]["LMG"] = mptype\mptype_tf141_forest_lmg::main;
  564. game[team + "_model"]["ASSAULT"] = mptype\mptype_tf141_forest_assault::main;
  565. game[team + "_model"]["SHOTGUN"] = mptype\mptype_tf141_forest_shotgun::main;
  566. game[team + "_model"]["SMG"] = mptype\mptype_tf141_forest_smg::main;
  567. game[team + "_model"]["RIOT"] = mptype\mptype_tf141_forest_riot::main;
  568.  
  569. break;
  570. case "socom_141_arctic":
  571. mptype\mptype_tf141_arctic_assault::precache();
  572. mptype\mptype_tf141_arctic_lmg::precache();
  573. mptype\mptype_tf141_arctic_smg::precache();
  574. mptype\mptype_tf141_arctic_shotgun::precache();
  575. mptype\mptype_tf141_arctic_sniper::precache();
  576. mptype\mptype_tf141_arctic_riot::precache();
  577.  
  578. game[team + "_model"]["SNIPER"] = mptype\mptype_tf141_arctic_sniper::main;
  579. game[team + "_model"]["LMG"] = mptype\mptype_tf141_arctic_lmg::main;
  580. game[team + "_model"]["ASSAULT"] = mptype\mptype_tf141_arctic_assault::main;
  581. game[team + "_model"]["SHOTGUN"] = mptype\mptype_tf141_arctic_shotgun::main;
  582. game[team + "_model"]["SMG"] = mptype\mptype_tf141_arctic_smg::main;
  583. game[team + "_model"]["RIOT"] = mptype\mptype_tf141_arctic_riot::main;
  584.  
  585. break;
  586. }
  587. }
  588.  
  589. setPlayerModels()
  590. {
  591. //mptype\mptype_us_army_riot::precache();
  592. //game["allies_model"]["riotshield"] = mptype\mptype_us_army_riot::main;
  593. //game["axis_model"]["riotshield"] = mptype\mptype_us_army_riot::main;
  594.  
  595. setTeamModels( "allies", game["allies"] );
  596. setTeamModels( "axis", game["axis"] );
  597.  
  598. setGhillieModels( getMapCustom( "environment" ) );
  599. }
  600.  
  601.  
  602. playerModelForWeapon( weapon, secondary )
  603. {
  604. team = self.team;
  605.  
  606.  
  607. if ( isDefined( game[team + "_model"][weapon] ) )
  608. {
  609. [[game[team+"_model"][weapon]]]();
  610. return;
  611. }
  612.  
  613.  
  614. weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
  615.  
  616. switch ( weaponClass )
  617. {
  618. case "weapon_smg":
  619. [[game[team+"_model"]["SMG"]]]();
  620. break;
  621. case "weapon_assault":
  622. weaponClass = tablelookup( "mp/statstable.csv", 4, secondary, 2 );
  623. if ( weaponClass == "weapon_shotgun" )
  624. [[game[team+"_model"]["SHOTGUN"]]]();
  625. else
  626. [[game[team+"_model"]["ASSAULT"]]]();
  627. break;
  628. case "weapon_sniper":
  629. if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) )
  630. [[game[team+"_model"]["GHILLIE"]]]();
  631. else
  632. [[game[team+"_model"]["SNIPER"]]]();
  633. break;
  634. case "weapon_lmg":
  635. [[game[team+"_model"]["LMG"]]]();
  636. break;
  637. case "weapon_riot":
  638. [[game[team+"_model"]["RIOT"]]]();
  639. break;
  640. default:
  641. [[game[team+"_model"]["ASSAULT"]]]();
  642. break;
  643. }
  644. }
  645.  
  646.  
  647. CountPlayers()
  648. {
  649. //chad
  650. players = level.players;
  651. allies = 0;
  652. axis = 0;
  653. for(i = 0; i < players.size; i++)
  654. {
  655. if ( players[i] == self )
  656. continue;
  657.  
  658. if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "allies"))
  659. allies++;
  660. else if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == "axis"))
  661. axis++;
  662. }
  663. players["allies"] = allies;
  664. players["axis"] = axis;
  665. return players;
  666. }
  667.  
  668.  
  669. trackFreePlayedTime()
  670. {
  671. self endon( "disconnect" );
  672.  
  673. self.timePlayed["allies"] = 0;
  674. self.timePlayed["axis"] = 0;
  675. self.timePlayed["other"] = 0;
  676. self.timePlayed["total"] = 0;
  677.  
  678. for ( ;; )
  679. {
  680. if ( game["state"] == "playing" )
  681. {
  682. if ( isDefined( self.pers["team"] ) && self.pers["team"] == "allies" && self.sessionteam != "spectator" )
  683. {
  684. self.timePlayed["allies"]++;
  685. self.timePlayed["total"]++;
  686. }
  687. else if ( isDefined( self.pers["team"] ) && self.pers["team"] == "axis" && self.sessionteam != "spectator" )
  688. {
  689. self.timePlayed["axis"]++;
  690. self.timePlayed["total"]++;
  691. }
  692. else
  693. {
  694. self.timePlayed["other"]++;
  695. }
  696. }
  697.  
  698. wait ( 1.0 );
  699. }
  700. }
  701.  
  702.  
  703. /#
  704. playerConnectedTest()
  705. {
  706. if ( getdvarint( "scr_runlevelandquit" ) == 1 )
  707. return;
  708.  
  709. level endon( "exitLevel_called" );
  710.  
  711. // every frame, do a getPlayerData on each player in level.players.
  712. // this will force a script error if a player in level.players isn't connected.
  713. for ( ;; )
  714. {
  715. foreach ( player in level.players )
  716. {
  717. player getPlayerData( "experience" );
  718. }
  719. wait .05;
  720. }
  721. }
  722. #/
  723.  
  724.  
  725. updateFreePlayerTimes()
  726. {
  727. if ( !level.rankedmatch )
  728. return;
  729.  
  730. /#
  731. thread playerConnectedTest();
  732. #/
  733.  
  734. nextToUpdate = 0;
  735. for ( ;; )
  736. {
  737. nextToUpdate++;
  738. if ( nextToUpdate >= level.players.size )
  739. nextToUpdate = 0;
  740.  
  741. if ( isDefined( level.players[nextToUpdate] ) )
  742. level.players[nextToUpdate] updateFreePlayedTime();
  743.  
  744. wait ( 1.0 );
  745. }
  746. }
  747.  
  748.  
  749. updateFreePlayedTime()
  750. {
  751. if ( !self rankingEnabled() )
  752. return;
  753.  
  754. if ( self.timePlayed["allies"] )
  755. {
  756. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedAllies", self.timePlayed["allies"] );
  757. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedTotal", self.timePlayed["allies"] );
  758. }
  759.  
  760. if ( self.timePlayed["axis"] )
  761. {
  762. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedOpfor", self.timePlayed["axis"] );
  763. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedTotal", self.timePlayed["axis"] );
  764. }
  765.  
  766. if ( self.timePlayed["other"] )
  767. {
  768. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedOther", self.timePlayed["other"] );
  769. self maps\mp\gametypes\_persistence::statAddBuffered( "timePlayedTotal", self.timePlayed["other"] );
  770. }
  771.  
  772. if ( game["state"] == "postgame" )
  773. return;
  774.  
  775. self.timePlayed["allies"] = 0;
  776. self.timePlayed["axis"] = 0;
  777. self.timePlayed["other"] = 0;
  778. }
  779.  
  780.  
  781. getJoinTeamPermissions( team )
  782. {
  783. teamcount = 0;
  784.  
  785. players = level.players;
  786. for(i = 0; i < players.size; i++)
  787. {
  788. player = players[i];
  789.  
  790. if((isdefined(player.pers["team"])) && (player.pers["team"] == team))
  791. teamcount++;
  792. }
  793.  
  794. if( teamCount < level.teamLimit )
  795. return true;
  796. else
  797. return false;
  798. }
  799.  
  800.  
  801. onPlayerSpawned()
  802. {
  803. level endon ( "game_ended" );
  804.  
  805. for ( ;; )
  806. {
  807. self waittill ( "spawned_player" );
  808. }
  809. }
  810.  
  811. getTeamName( teamRef )
  812. {
  813. return ( tableLookupIString( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_NAME_COL ) );
  814. }
  815.  
  816. getTeamShortName( teamRef )
  817. {
  818. return ( tableLookupIString( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_SHORT_NAME_COL ) );
  819. }
  820.  
  821. getTeamForfeitedString( teamRef )
  822. {
  823. return ( tableLookupIString( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_FORFEITED_COL ) );
  824. }
  825.  
  826. getTeamEliminatedString( teamRef )
  827. {
  828. return ( tableLookupIString( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_ELIMINATED_COL ) );
  829. }
  830.  
  831. getTeamIcon( teamRef )
  832. {
  833. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_ICON_COL ) );
  834. }
  835.  
  836. getTeamHudIcon( teamRef )
  837. {
  838. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_HUD_ICON_COL ) );
  839. }
  840.  
  841. getTeamHeadIcon( teamRef )
  842. {
  843. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_HEAD_ICON_COL ) );
  844. }
  845.  
  846. getTeamVoicePrefix( teamRef )
  847. {
  848. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_VOICE_PREFIX_COL ) );
  849. }
  850.  
  851. getTeamSpawnMusic( teamRef )
  852. {
  853. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_SPAWN_MUSIC_COL ) );
  854. }
  855.  
  856. getTeamWinMusic( teamRef )
  857. {
  858. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_WIN_MUSIC_COL ) );
  859. }
  860.  
  861. getTeamFlagModel( teamRef )
  862. {
  863. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_FLAG_MODEL_COL ) );
  864. }
  865.  
  866. getTeamFlagCarryModel( teamRef )
  867. {
  868. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_FLAG_CARRY_MODEL_COL ) );
  869. }
  870.  
  871. getTeamFlagIcon( teamRef )
  872. {
  873. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_FLAG_ICON_COL ) );
  874. }
  875.  
  876. getTeamFlagFX( teamRef )
  877. {
  878. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_FLAG_FX_COL ) );
  879. }
  880.  
  881. getTeamColor( teamRef )
  882. {
  883. return ( (stringToFloat( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_COLOR_R_COL ) ),
  884. stringToFloat( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_COLOR_G_COL ) ),
  885. stringToFloat( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_COLOR_B_COL ) ))
  886. );
  887. }
  888.  
  889. getTeamCrateModel( teamRef )
  890. {
  891. return ( tableLookup( "mp/factionTable.csv", FACTION_REF_COL, game[teamRef], FACTION_CRATE_MODEL_COL ) );
  892. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement