Advertisement
Guest User

Untitled

a guest
Jul 14th, 2011
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.12 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5. init()
  6. {
  7. level.doCustomMap = 0;
  8. level.doorwait = 0.3;
  9. level.elevator_model["enter"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
  10. level.elevator_model["exit"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" );
  11. precacheModel( level.elevator_model["enter"] );
  12. precacheModel( level.elevator_model["exit"] );
  13. wait 1;
  14. if(getDvar("mapname") == "mp_afghan"){ /** Afghan **/
  15. level thread Afghan();
  16. level.doCustomMap = 1;
  17. }
  18. if(getDvar("mapname") == "mp_boneyard"){ /** Scrapyard **/
  19. level thread Scrapyard();
  20. level.doCustomMap = 1;
  21. }
  22. if(getDvar("mapname") == "mp_brecourt"){ /** Wasteland **/
  23. level thread Wasteland();
  24. level.doCustomMap = 1;
  25. }
  26. if(getDvar("mapname") == "mp_checkpoint"){ /** Karachi **/
  27. level thread Karachi();
  28. level.doCustomMap = 1;
  29. }
  30. if(getDvar("mapname") == "mp_derail"){ /** Derail **/
  31. level thread Derail();
  32. level.doCustomMap = 1;
  33. }
  34. if(getDvar("mapname") == "mp_estate"){ /** Estate **/
  35. level thread Estate();
  36. level.doCustomMap = 1;
  37. }
  38. if(getDvar("mapname") == "mp_favela"){ /** Favela **/
  39. level thread Favela();
  40. level.doCustomMap = 1;
  41. }
  42. if(getDvar("mapname") == "mp_highrise"){ /** HighRise **/
  43. level thread HighRise();
  44. level.doCustomMap = 1;
  45. }
  46. if(getDvar("mapname") == "mp_nightshift"){ /** Skidrow **/
  47. level thread Skidrow();
  48. level.doCustomMap = 1;
  49. }
  50. if(getDvar("mapname") == "mp_invasion"){ /** Invasion **/
  51. level thread Invasion();
  52. level.doCustomMap = 1;
  53. }
  54. if(getDvar("mapname") == "mp_quarry"){ /** Quarry **/
  55. level thread Quarry();
  56. level.doCustomMap = 1;
  57. }
  58. if(getDvar("mapname") == "mp_rundown"){ /** Rundown **/
  59. level thread Rundown();
  60. level.doCustomMap = 1;
  61. }
  62. if(getDvar("mapname") == "mp_rust"){ /** Rust **/
  63. level thread Rust();
  64. level.doCustomMap = 1;
  65. }
  66. if(getDvar("mapname") == "mp_subbase"){ /** SubBase **/
  67. level thread SubBase();
  68. level.doCustomMap = 1;
  69. }
  70. if(getDvar("mapname") == "mp_terminal"){ /** Terminal **/
  71. level thread Terminal();
  72. level.doCustomMap = 1;
  73. }
  74. if(getDvar("mapname") == "mp_underpass"){ /** Underpass **/
  75. level thread Underpass();
  76. level.doCustomMap = 1;
  77. }
  78. if(getDvar("mapname") == "mp_strike"){ /** Strike **/
  79. level thread Strike();
  80. level.doCustomMap = 1;
  81. }
  82. if(getDvar("mapname") == "mp_crash"){ /** Crash **/
  83. level thread Crash();
  84. level.doCustomMap = 1;
  85. }
  86. if(getDvar("mapname") == "mp_compact"){ /** Salvage **/
  87. level thread Salvage();
  88. level.doCustomMap = 1;
  89. }
  90. if(level.doCustomMap == 1){
  91. level.gameState = "starting";
  92. //if(!level.testing)
  93. level thread CreateMapWait();
  94. //
  95. } else {
  96. level.gameState = "starting";
  97. wait 15;
  98. level notify("CREATED");
  99. }
  100. }
  101.  
  102. CreateMapWait()
  103. {
  104. level.TimerText destroy();
  105. level.Timer destroy();
  106. level.TimerText = level createServerFontString( "objective", 1.5 );
  107. level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
  108. level.TimerText setText("^3Wait for the map to be created:");
  109. level.Timer = level createServerFontString( "objective", 2 );
  110. level.Timer setPoint( "CENTER", "CENTER", 0, -75 );
  111. level.Timer.color = (1,1,0);
  112. for(i = 30; i > 0; i--)
  113. {
  114. level.Timer setValue(i);
  115. foreach(player in level.players)
  116. {
  117. player freezeControls(true);
  118. player VisionSetNakedForPlayer("mpIntro", 0);
  119. }
  120. wait 1;
  121. }
  122. level notify("CREATED");
  123. foreach(player in level.players)
  124. {
  125. player freezeControls(false);
  126. player VisionSetNakedForPlayer(getDvar("mapname"), 0);
  127. }
  128. }
  129.  
  130. CreateCustomSpawnPointsCircle(center, radius, team)
  131. {
  132. rings = roundUp(radius/50);
  133. for(r = 1; r <= rings; r++){
  134. for(t = 0; t < 360; t += 30){
  135. x = 50 * r * Cos(t);
  136. y = 50 * r * Sin(t);
  137. pos = (center + (x, y, 0));
  138. if(team == "allies" || team == "all"){
  139. level.CustomSpawnPoints["allies"][level.CustomSpawnPoints["allies"].size] = pos;
  140. }
  141. if(team == "axis" || team == "all"){
  142. level.CustomSpawnPoints["axis"][level.CustomSpawnPoints["axis"].size] = pos;
  143. }
  144. }
  145. }
  146. }
  147.  
  148. CreateCustomSpawnPointsBox(corner1, corner2, team)
  149. {
  150. W = Distance((corner1[0], 0, 0), (corner2[0], 0, 0));
  151. L = Distance((0, corner1[1], 0), (0, corner2[1], 0));
  152. CX = corner2[0] - corner1[0];
  153. CY = corner2[1] - corner1[1];
  154. ROWS = roundUp(W/50);
  155. COLUMNS = roundUp(L/50);
  156. XA = CX/ROWS;
  157. YA = CY/COLUMNS;
  158. for(r = 0; r <= ROWS; r++){
  159. for(c = 0; c <= COLUMNS; c++){
  160. pos = (corner1 + (XA * r, YA * c, 0));
  161. if(team == "allies" || team == "all"){
  162. level.CustomSpawnPoints["allies"][level.CustomSpawnPoints["allies"].size] = pos;
  163. }
  164. if(team == "axis" || team == "all"){
  165. level.CustomSpawnPoints["axis"][level.CustomSpawnPoints["axis"].size] = pos;
  166. }
  167. }
  168. }
  169. }
  170.  
  171. CreateCustomSpawnPointsPoint(pos, team)
  172. {
  173. if(team == "allies" || team == "all"){
  174. level.CustomSpawnPoints["allies"][level.CustomSpawnPoints["allies"].size] = pos;
  175. }
  176. if(team == "axis" || team == "all"){
  177. level.CustomSpawnPoints["axis"][level.CustomSpawnPoints["axis"].size] = pos;
  178. }
  179. }
  180.  
  181. CreateElevator(enter, exit, angle)
  182. {
  183. flag = spawn( "script_model", enter );
  184. flag setModel( level.elevator_model["enter"] );
  185. wait 0.01;
  186. efx = loadfx( "misc/flare_ambient" );
  187. playFx( efx, enter );
  188. flag showInMap();
  189. wait 0.01;
  190. flag = spawn( "script_model", exit );
  191. flag setModel( level.elevator_model["exit"] );
  192. wait 0.01;
  193. self thread ElevatorThink(enter, exit, angle);
  194. }
  195.  
  196. showInMap()
  197. {
  198. self endon ( "disconnect" );
  199. self endon ( "death" );
  200. curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
  201. name = precacheShader( "compass_waypoint_panic" );
  202. objective_add( curObjID, "invisible", (0,0,0) );
  203. objective_position( curObjID, self.origin );
  204. objective_state( curObjID, "active" );
  205. objective_team( curObjID, self.team );
  206. objective_icon( curObjID, name );
  207. self.objIdFriendly = curObjID;
  208. }
  209.  
  210. CreateBlocks(pos, angle)
  211. {
  212. block = spawn("script_model", pos );
  213. block setModel("com_plasticcase_friendly");
  214. block.angles = angle;
  215. block Solid();
  216. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  217. wait 0.01;
  218. }
  219.  
  220. CreateDoors(open, close, xangle, yangle, zangle, size, height, hp, range)
  221. {
  222. offset = (((size / 2) - 0.5) * -1);
  223. center = spawn("script_model", open );
  224. for(j = 0; j < size; j++){
  225. door = spawn("script_model", open + ((0, 30, 0) * offset));
  226. door setModel("com_plasticcase_enemy");
  227. door Solid();
  228. door CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  229. door EnableLinkTo();
  230. door LinkTo(center);
  231. for(h = 1; h < height; h++){
  232. door = spawn("script_model", open + ((0, 30, 0) * offset) - ((70, 0, 0) * h));
  233. door setModel("com_plasticcase_enemy");
  234. door Solid();
  235. door CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  236. door EnableLinkTo();
  237. door LinkTo(center);
  238. }
  239. offset += 1;
  240. }
  241. if(!isDefined(yangle)){
  242. Temp = VectorToAngles(open - close);
  243. yangle = Temp[1]-90;
  244. }
  245. center.angles = (xangle, yangle, zangle);
  246. center.state = "open";
  247. center.maxhp = hp;
  248. center.hp = hp;
  249. center.range = range;
  250. center thread DoorThinkUse(open, close);
  251. center thread DoorThinkRepair();
  252. center thread DoorUse();
  253. center thread ResetDoors(open, hp);
  254. wait 0.01;
  255. }
  256.  
  257. CreateRamps(top, bottom)
  258. {
  259. D = Distance(top, bottom);
  260. blocks = roundUp(D/30);
  261. CX = top[0] - bottom[0];
  262. CY = top[1] - bottom[1];
  263. CZ = top[2] - bottom[2];
  264. XA = CX/blocks;
  265. YA = CY/blocks;
  266. ZA = CZ/blocks;
  267. CXY = Distance((top[0], top[1], 0), (bottom[0], bottom[1], 0));
  268. Temp = VectorToAngles(top - bottom);
  269. BA = (Temp[2], Temp[1] + 90, Temp[0]);
  270. for(b = 0; b < blocks; b++){
  271. block = spawn("script_model", (bottom + ((XA, YA, ZA) * b)));
  272. block setModel("com_plasticcase_friendly");
  273. block.angles = BA;
  274. block Solid();
  275. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  276. wait 0.01;
  277. }
  278. block = spawn("script_model", (bottom + ((XA, YA, ZA) * blocks) - (0, 0, 5)));
  279. block setModel("com_plasticcase_friendly");
  280. block.angles = (BA[0], BA[1], 0);
  281. block Solid();
  282. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  283. wait 0.01;
  284. }
  285.  
  286. CreateBridge(point1, point2, point3)
  287. {
  288. points = [];
  289. points[0] = point1;
  290. points[1] = point2;
  291. points[2] = point3;
  292. for(i = 0; i < points.size; i++){
  293. if(!isDefined(points[i+1])){
  294. return;
  295. }
  296. D = Distance(points[i], points[i+1]);
  297. blocks = roundUp(D/30);
  298. CX = points[i][0] - points[i+1][0];
  299. CY = points[i][1] - points[i+1][1];
  300. CZ = points[i][2] - points[i+1][2];
  301. XA = CX/blocks;
  302. YA = CY/blocks;
  303. ZA = CZ/blocks;
  304. CXY = Distance((points[i][0], points[i][1], 0), (points[i+1][0], points[i+1][1], 0));
  305. Temp = VectorToAngles(points[i] - points[i+1]);
  306. BA = (Temp[2], Temp[1] + 90, Temp[0]);
  307. for(b = 0; b <= blocks; b++){
  308. block = spawn("script_model", (points[i+1] + ((XA, YA, ZA) * b)));
  309. block setModel("com_plasticcase_friendly");
  310. block.angles = BA;
  311. block Solid();
  312. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  313. wait 0.01;
  314. }
  315. }
  316. }
  317.  
  318. CreateGrids(corner1, corner2, angle)
  319. {
  320. W = Distance((corner1[0], 0, 0), (corner2[0], 0, 0));
  321. L = Distance((0, corner1[1], 0), (0, corner2[1], 0));
  322. H = Distance((0, 0, corner1[2]), (0, 0, corner2[2]));
  323. CX = corner2[0] - corner1[0];
  324. CY = corner2[1] - corner1[1];
  325. CZ = corner2[2] - corner1[2];
  326. ROWS = roundUp(W/55);
  327. COLUMNS = roundUp(L/30);
  328. HEIGHT = roundUp(H/20);
  329. XA = CX/ROWS;
  330. YA = CY/COLUMNS;
  331. ZA = CZ/HEIGHT;
  332. center = spawn("script_model", corner1);
  333. for(r = 0; r <= ROWS; r++){
  334. for(c = 0; c <= COLUMNS; c++){
  335. for(h = 0; h <= HEIGHT; h++){
  336. block = spawn("script_model", (corner1 + (XA * r, YA * c, ZA * h)));
  337. block setModel("com_plasticcase_friendly");
  338. block.angles = (0, 0, 0);
  339. block Solid();
  340. block LinkTo(center);
  341. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  342. wait 0.01;
  343. }
  344. }
  345. }
  346. center.angles = angle;
  347. }
  348.  
  349. CreateWalls(start, end)
  350. {
  351. D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
  352. H = Distance((0, 0, start[2]), (0, 0, end[2]));
  353. blocks = roundUp(D/55);
  354. height = roundUp(H/30);
  355. CX = end[0] - start[0];
  356. CY = end[1] - start[1];
  357. CZ = end[2] - start[2];
  358. XA = (CX/blocks);
  359. YA = (CY/blocks);
  360. ZA = (CZ/height);
  361. TXA = (XA/4);
  362. TYA = (YA/4);
  363. Temp = VectorToAngles(end - start);
  364. Angle = (0, Temp[1], 90);
  365. for(h = 0; h < height; h++){
  366. block = spawn("script_model", (start + (TXA, TYA, 10) + ((0, 0, ZA) * h)));
  367. block setModel("com_plasticcase_friendly");
  368. block.angles = Angle;
  369. block Solid();
  370. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  371. wait 0.001;
  372. for(i = 1; i < blocks; i++){
  373. block = spawn("script_model", (start + ((XA, YA, 0) * i) + (0, 0, 10) + ((0, 0, ZA) * h)));
  374. block setModel("com_plasticcase_friendly");
  375. block.angles = Angle;
  376. block Solid();
  377. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  378. wait 0.001;
  379. }
  380. block = spawn("script_model", ((end[0], end[1], start[2]) + (TXA * -1, TYA * -1, 10) + ((0, 0, ZA) * h)));
  381. block setModel("com_plasticcase_friendly");
  382. block.angles = Angle;
  383. block Solid();
  384. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  385. wait 0.001;
  386. }
  387. }
  388.  
  389. CreateAdaptWalls(start, end, height, offset)
  390. {
  391. D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
  392. blocks = roundUp(D/55);
  393. CX = end[0] - start[0];
  394. CY = end[1] - start[1];
  395. XA = (CX/blocks);
  396. YA = (CY/blocks);
  397. ZA = 30;
  398. TXA = (XA/4);
  399. TYA = (YA/4);
  400. Temp = VectorToAngles(end - start);
  401. Angle = (0, Temp[1], 90);
  402. tempstart = bulletTrace(start, start + (0, 0, 100000), false, undefined)["position"] - (0,0,500);
  403. tempend = bulletTrace(end, end + (0, 0, 100000), false, undefined)["position"] - (0,0,500);
  404. for(h = 0; h < height; h++){
  405. spawnlocation = bulletTrace(tempstart, tempstart - (0, 0, 100000), false, undefined)["position"];
  406. block = spawn("script_model", (spawnlocation + (TXA, TYA, 15 + offset)));
  407. block setModel("com_plasticcase_friendly");
  408. block.angles = Angle;
  409. block Solid();
  410. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  411. wait 0.001;
  412. for(i = 1; i < blocks; i++){
  413. spawnlocation = bulletTrace(tempstart + ((XA, YA, 0) * i), tempstart + ((XA, YA, 0) * i) - (0, 0, 100000), false, undefined)["position"];
  414. block = spawn("script_model", (spawnlocation + (0, 0, 15 + offset)));
  415. block setModel("com_plasticcase_friendly");
  416. block.angles = Angle;
  417. block Solid();
  418. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  419. wait 0.001;
  420. }
  421. spawnlocation = bulletTrace(tempend, tempend - (0, 0, 100000), false, undefined)["position"];
  422. block = spawn("script_model", (spawnlocation + (TXA * -1, TYA * -1, 15 + offset)));
  423. block setModel("com_plasticcase_friendly");
  424. block.angles = Angle;
  425. block Solid();
  426. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  427. wait 0.001;
  428. }
  429. }
  430.  
  431. CreateCluster(amount, pos, radius)
  432. {
  433. for(i = 0; i < amount; i++)
  434. {
  435. half = radius / 2;
  436. power = ((randomInt(radius) - half), (randomInt(radius) - half), 500);
  437. block = spawn("script_model", pos + (0, 0, 1000) );
  438. block setModel("com_plasticcase_friendly");
  439. block.angles = (90, 0, 0);
  440. block PhysicsLaunchServer((0, 0, 0), power);
  441. block Solid();
  442. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  443. block thread ResetCluster(pos, radius);
  444. wait 0.05;
  445. }
  446. }
  447.  
  448. CreateTables(start, end)
  449. {
  450. D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
  451. blocks = roundUp(D/55);
  452. CX = end[0] - start[0];
  453. CY = end[1] - start[1];
  454. XA = (CX/blocks);
  455. YA = (CY/blocks);
  456. TXA = (XA/4);
  457. TYA = (YA/4);
  458. Temp = VectorToAngles(end - start);
  459. Angle = (0, Temp[1], 0);
  460. block = spawn("script_model", (start + (TXA, TYA, 10)));
  461. block setModel("com_plasticcase_enemy");
  462. block.angles = Angle;
  463. block Solid();
  464. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  465. wait 0.001;
  466. for(i = 1; i < blocks; i++){
  467. block = spawn("script_model", (start + ((XA, YA, 0) * i) + (0, 0, 10)));
  468. block setModel("com_plasticcase_enemy");
  469. block.angles = Angle;
  470. block Solid();
  471. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  472. wait 0.001;
  473. }
  474. block = spawn("script_model", ((end[0], end[1], start[2]) + (TXA * -1, TYA * -1, 10)));
  475. block setModel("com_plasticcase_enemy");
  476. block.angles = Angle;
  477. block Solid();
  478. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  479. wait 0.001;
  480. }
  481.  
  482. CreateBombSite(pos, team, otherteam)
  483. {
  484. center = spawn("script_model", pos );
  485. center setModel("com_bomb_objective");
  486. center Solid();
  487. center CloneBrushmodelToScriptmodel( level.bombSiteCollision );
  488. block = spawn("script_model", pos + (0, 20, 30) );
  489. block.angles = (0, 0, 0);
  490. block Solid();
  491. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  492. block EnableLinkTo();
  493. block LinkTo(center);
  494. block = spawn("script_model", pos + (0, -20, 30) );
  495. block.angles = (0, 0, 0);
  496. block Solid();
  497. block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
  498. block EnableLinkTo();
  499. block LinkTo(center);
  500. curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
  501. objective_add( curObjID, "invisible", (0,0,0) );
  502. objective_position( curObjID, center.origin );
  503. objective_state( curObjID, "active" );
  504. objective_team( curObjID, team );
  505. center.objIdFriendly = curObjID;
  506. center maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defend_a", (0,0,44), 14, 14 );
  507. curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
  508. objective_add( curObjID, "invisible", (0,0,0) );
  509. objective_position( curObjID, center.origin );
  510. objective_state( curObjID, "active" );
  511. objective_team( curObjID, otherteam );
  512. center.objIdEnemy = curObjID;
  513. center maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_target_a", (0,0,44), 14, 14 );
  514. center thread BombSiteUse(team, otherteam);
  515. center thread BombThinkPlant(team, otherteam);
  516. }
  517.  
  518. CreateKillIfBelow(z)
  519. {
  520. level thread KillBelow(z);
  521. }
  522.  
  523. CustomSpawningSystem()
  524. {
  525. self endon("disconnect");
  526. pickingspawn = true;
  527. spawnpoint = undefined;
  528. for(;;)
  529. {
  530. self waittill("spawned_player");
  531. pickingspawn = true;
  532. hits = 0;
  533. trys = 0;
  534. if(level.CustomSpawnSetting == 0){
  535. return;
  536. } else if(level.CustomSpawnSetting == 1){
  537. if(randomInt(99) < 50){
  538. while(pickingspawn){
  539. temppos = level.CustomSpawnPointsFinal[self.team][randomInt(level.CustomSpawnPointsFinal[self.team].size)];
  540. top = bullettrace(temppos, temppos + (0, 0, 100000), false, undefined)["position"];
  541. spawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
  542. if(level.CustomSpawnNearEnemy == 0){
  543. foreach(player in level.players)
  544. {
  545. if(player.team == self.team){
  546. continue;
  547. }
  548. end = player.origin - spawnpoint;
  549. if(length(end) > 10000){
  550. continue;
  551. }
  552. check = bullettracepassed(spawnpoint, spawnpoint + (end[0], end[1], 0), false, undefined);
  553. if(check){
  554. hits++;
  555. }
  556. }
  557. if(hits == 0){
  558. pickingspawn = false;
  559. } else {
  560. trys++;
  561. }
  562. if(trys > level.CustomSpawnPointsFinal[self.team].size - 1){
  563. pickingspawn = false;
  564. }
  565. } else {
  566. pickingspawn = false;
  567. }
  568. }
  569. self SetOrigin((spawnpoint));
  570. }
  571. } else if(level.CustomSpawnSetting == 2){
  572. while(pickingspawn){
  573. temppos = level.CustomSpawnPointsFinal[self.team][randomInt(level.CustomSpawnPointsFinal[self.team].size)];
  574. top = bullettrace(temppos, temppos + (0, 0, 100000), false, undefined)["position"];
  575. spawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
  576. if(level.CustomSpawnNearEnemy == 0){
  577. foreach(player in level.players)
  578. {
  579. if(player.team == self.team){
  580. continue;
  581. }
  582. end = player.origin - spawnpoint;
  583. if(length(end) > 1000){
  584. continue;
  585. }
  586. check = bullettracepassed(spawnpoint, spawnpoint + (end[0], end[1], 0), false, undefined);
  587. if(check){
  588. hits++;
  589. }
  590. }
  591. if(hits == 0){
  592. pickingspawn = false;
  593. } else {
  594. trys++;
  595. }
  596. if(trys > level.CustomSpawnPointsFinal[self.team].size - 1){
  597. pickingspawn = false;
  598. }
  599. } else {
  600. pickingspawn = false;
  601. }
  602. }
  603. self SetOrigin((spawnpoint));
  604. }
  605. }
  606. }
  607.  
  608. RemoveUnusableSpawnPoint()
  609. {
  610. foreach(spawnpoint in level.CustomSpawnPoints["allies"])
  611. {
  612. hits = 0;
  613. top = bullettrace(spawnpoint, spawnpoint + (0, 0, 100000), false, undefined)["position"];
  614. checkspawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
  615. for(i = 0; i < 360; i++)
  616. {
  617. direction = AnglesToForward((0, i, 0));
  618. end = vector_multiply((0, direction[1], 0) ,55);
  619. check = bullettracepassed(checkspawnpoint, checkspawnpoint + end, false, undefined);
  620. if(!check){
  621. hits++;
  622. }
  623. }
  624. if(hits == 0){
  625. level.CustomSpawnPointsFinal["allies"][level.CustomSpawnPointsFinal["allies"].size] = spawnpoint;
  626. }
  627. }
  628. foreach(spawnpoint in level.CustomSpawnPoints["axis"])
  629. {
  630. hits = 0;
  631. top = bullettrace(spawnpoint, spawnpoint + (0, 0, 100000), false, undefined)["position"];
  632. checkspawnpoint = bullettrace(top, top + (0, 0, -1000000), false, undefined)["position"];
  633. for(i = 0; i < 360; i += 5)
  634. {
  635. direction = AnglesToForward((0, i, 0));
  636. end = vector_multiply((0, direction[1], 0) ,55);
  637. check = bullettracepassed(checkspawnpoint, checkspawnpoint + end, false, undefined);
  638. if(!check){
  639. hits++;
  640. }
  641. }
  642. if(hits == 0){
  643. level.CustomSpawnPointsFinal["axis"][level.CustomSpawnPointsFinal["axis"].size] = spawnpoint;
  644. }
  645. }
  646. foreach(player in level.players)
  647. {
  648. player suicide();
  649. }
  650. }
  651.  
  652. ElevatorThink(enter, exit, angle)
  653. {
  654. self endon("disconnect");
  655. while(1)
  656. {
  657. foreach(player in level.players)
  658. {
  659. if(DistanceSquared(enter, player.origin) <= Power(50, 2)){
  660. player SetOrigin(exit);
  661. player SetPlayerAngles(angle);
  662. }
  663. }
  664. wait .25;
  665. }
  666. }
  667.  
  668. DoorThinkUse(open, close)
  669. {
  670. while(1)
  671. {
  672. if(self.hp > 0){
  673. self waittill ( "triggeruse" , player );
  674. if(player.team == "allies"){
  675. if(self.state == "open"){
  676. self MoveTo(close, level.doorwait);
  677. wait level.doorwait;
  678. self.state = "close";
  679. continue;
  680. }
  681. if(self.state == "close"){
  682. self MoveTo(open, level.doorwait);
  683. wait level.doorwait;
  684. self.state = "open";
  685. continue;
  686. }
  687. }
  688. if(player.team == "axis"){
  689. if(self.state == "close"){
  690. if(player.attackeddoor == 0){
  691. hitChance = 0;
  692. switch(player GetStance())
  693. {
  694. case "prone":
  695. hitChance = 15;
  696. break;
  697. case "crouch":
  698. hitChance = 45;
  699. break;
  700. case "stand":
  701. hitChance = 90;
  702. break;
  703. default:
  704. break;
  705. }
  706. if(randomInt(100) < hitChance){
  707. self.hp--;
  708. player iPrintlnBold("HIT - " + self.hp + "/" + self.maxhp);
  709. if(self.hp <= int(self.maxhp/5)){
  710. self playSound("flag_spawned");
  711. }
  712. } else {
  713. player iPrintlnBold("^1MISS - " + self.hp + "/" + self.maxhp);
  714. }
  715. player.attackeddoor = 1;
  716. player thread DoorAttackWait();
  717. continue;
  718. }
  719. }
  720. }
  721. } else {
  722. if(self.state == "close"){
  723. self MoveTo(open, level.doorwait);
  724. }
  725. self.state = "broken";
  726. wait .5;
  727. }
  728. }
  729. }
  730.  
  731. DoorThinkRepair()
  732. {
  733. while(1)
  734. {
  735. self waittill ( "triggerrepair" , player );
  736. if(self.hp < self.maxhp){
  737. if(self.hp > 0){
  738. player thread RepairDoor(self);
  739. } else {
  740. if(useHoldThink(player, "Fixing Door...", 20000)){
  741. self.hp = self.maxhp;
  742. self.state = "open";
  743. player.bounty += 200;
  744. }
  745. }
  746. }
  747. }
  748. }
  749.  
  750. RepairDoor(door)
  751. {
  752. self notify("RepairingDoor");
  753. self endon("RepairingDoor");
  754. self endon("disconnect");
  755. self endon("death");
  756. if(useHoldThink(self, "Repairing Door...", 5000)){
  757. if(door.state != "broken"){
  758. door.hp += 1;
  759. self.hprepaired += 1;
  760. self iPrintlnBold("Repaired - " + door.hp + "/" + door.maxhp);
  761. if(self.hprepaired >= 5){
  762. self.bounty += 50;
  763. self.hprepaired = 0;
  764. }
  765. }
  766. }
  767. }
  768.  
  769. DoorUse()
  770. {
  771. while(1)
  772. {
  773. foreach(player in level.players)
  774. {
  775. if(DistanceSquared(self.origin, player.origin) <= Power(self.range, 2)){
  776. if(player.team == "allies"){
  777. if(player getCurrentWeapon() == "onemanarmy_mp"){
  778. if(self.state == "broken"){
  779. player.hint = "^1Door is Broken. ^7Press and Hold ^3[{+activate}] ^7to ^2Fix ^7the door";
  780. } else {
  781. if(self.hp < self.maxhp){
  782. player.hint = "Press and Hold ^3[{+activate}] ^7to ^2Repair ^7the door";
  783. }
  784. }
  785. } else {
  786. if(self.state == "open"){
  787. player.hint = "Press ^3[{+activate}] ^7to ^2Close ^7the door";
  788. }
  789. if(self.state == "close"){
  790. player.hint = "Press ^3[{+activate}] ^7to ^2Open ^7the door";
  791. }
  792. if(self.state == "broken"){
  793. player.hint = "^1Door is Broken";
  794. }
  795. }
  796. }
  797. if(player.team == "axis"){
  798. if(self.state == "close"){
  799. player.hint = "Press ^3[{+activate}] ^7to ^2Attack ^7the door";
  800. }
  801. if(self.state == "broken"){
  802. player.hint = "^1Door is Broken";
  803. }
  804. }
  805. if(player getCurrentWeapon() == "onemanarmy_mp"){
  806. if(player maps\mp\gametypes\_rank::checkPress("F")){
  807. self notify( "triggerrepair" , player);
  808. }
  809. } else {
  810. if(player UseButtonPressed()){
  811. self notify( "triggeruse" , player);
  812. }
  813. }
  814. }
  815. }
  816. wait .045;
  817. }
  818. }
  819.  
  820. DoorAttackWait()
  821. {
  822. self notify("attackwait");
  823. self endon("attackwait");
  824. self endon("disconnect");
  825. self endon("death");
  826. wait 1;
  827. self.attackeddoor = 0;
  828. }
  829.  
  830. BombSiteUse(team, otherteam)
  831. {
  832. while(1)
  833. {
  834. foreach(player in level.players)
  835. {
  836. if(DistanceSquared(self.origin, player.origin) <= Power(100, 2)){
  837. if(!self.bombplanted){
  838. if(player.team == otherteam){
  839. player.hint = "Press and Hold ^3[{+activate}] ^7to ^2Plant ^7the bomb";
  840. }
  841. } else {
  842. if(player.team == team){
  843. player.hint = "Press and Hold ^3[{+activate}] ^7to ^2Defuse ^7the bomb";
  844. }
  845. }
  846. if(player maps\mp\gametypes\_rank::checkPress("F")){
  847. self notify( "triggeruse" , player);
  848. }
  849. }
  850. }
  851. wait .045;
  852. }
  853. }
  854.  
  855. BombThinkPlant(team, otherteam)
  856. {
  857. self endon("defuse");
  858. while(1)
  859. {
  860. self waittill ( "triggeruse" , player );
  861. if(level.BombsPlanted == 1 && level.BombSiteSetting == 1){
  862. continue;
  863. }
  864. if(player.team == team){
  865. continue;
  866. }
  867. player.currentweapon = player getCurrentWeapon();
  868. player giveWeapon("briefcase_bomb_mp");
  869. player SwitchToWeapon("briefcase_bomb_mp");
  870. wait .5;
  871. if(!useHoldThink( player, &"MP_PLANTING_EXPLOSIVE", 6000 )){
  872. player SwitchToWeapon(player.currentweapon);
  873. continue;
  874. }
  875. player SwitchToWeapon(player.currentweapon);
  876. trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
  877. tempAngle = randomfloat( 360 );
  878. forward = (cos( tempAngle ), sin( tempAngle ), 0);
  879. forward = vectornormalize( forward - vector_multiply( trace["normal"], vectordot( forward, trace["normal"] ) ) );
  880. dropAngles = vectortoangles( forward );
  881. wait 1;
  882. self.bombmodel = spawn( "script_model", trace["position"] );
  883. self.bombmodel.angles = dropAngles;
  884. self.bombmodel setModel( "prop_suitcase_bomb" );
  885. level.BombTimerIcon = createServerIcon( "hud_suitcase_bomb", 50, 50 );
  886. level.BombTimerIcon setPoint( "BOTTOM RIGHT", "BOTTOM RIGHT", -90, -50 );
  887. level.BombTimerIcon.alpha = 0.75;
  888. level.BombTimerIcon.glow = 1;
  889. level.BombTimerIcon.glowColor = ( 1, 1, 0 );
  890. level.BombTimerIcon.glowAlpha = 1;
  891. level.BombTimer = createServerTimer("objective", 1.25);
  892. level.BombTimer setPoint( "BOTTOM RIGHT", "BOTTOM RIGHT", -90, -65 );
  893. level.BombTimer.foreground = true;
  894. level.BombTimer.glow = 1;
  895. level.BombTimer.glowColor = ( 1, 1, 0 );
  896. level.BombTimer.glowAlpha = 1;
  897. level.BombTimer SetTenthsTimer(30);
  898. level.BombsPlanted++;
  899. leaderDialog( "bomb_planted" );
  900. player playSound( "mp_bomb_plant" );
  901. level thread teamPlayerCardSplash( "callout_bombplanted", player );
  902. self maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defuse_a", (0,0,44), 14, 14 );
  903. self maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_defend_a", (0,0,44), 14, 14 );
  904. self.bombplanted = true;
  905. self.bombmodel thread playTickingSound(30);
  906. self thread BombThinkDefuse(team, otherteam);
  907. TimerWait(30);
  908. self notify("explode");
  909. self.bombmodel notify("stop_ticking");
  910. level.BombTimerIcon destroy();
  911. level.BombTimer destroy();
  912. self.bombplanted = false;
  913. self.bombmodel hide();
  914. self.bombmodel thread BombExplosion();
  915. self.bombmodel delete();
  916. self maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defend_a", (0,0,44), 14, 14 );
  917. self maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_target_a", (0,0,44), 14, 14 );
  918. }
  919. }
  920.  
  921. BombThinkDefuse(team, otherteam)
  922. {
  923. self endon("explode");
  924. while(1)
  925. {
  926. self waittill ( "triggeruse" , player );
  927. if(player.team == otherteam){
  928. continue;
  929. }
  930. player.currentweapon = player getCurrentWeapon();
  931. player giveWeapon("briefcase_bomb_mp");
  932. player SwitchToWeapon("briefcase_bomb_mp");
  933. self.bombmodel hide();
  934. wait .5;
  935. if(!useHoldThink( player, &"MP_DEFUSING_EXPLOSIVE", 6000 )){
  936. player SwitchToWeapon(player.currentweapon);
  937. self.bombmodel show();
  938. continue;
  939. }
  940. player SwitchToWeapon(player.currentweapon);
  941. leaderDialog( "bomb_defused" );
  942. level thread teamPlayerCardSplash( "callout_bombdefused", player );
  943. self notify("defuse");
  944. level.BombsPlanted--;
  945. self.bombplanted = false;
  946. self thread BombThinkPlant(team, otherteam);
  947. self.bombmodel notify("stop_ticking");
  948. level.BombTimerIcon destroy();
  949. level.BombTimer destroy();
  950. self.bombmodel delete();
  951. self maps\mp\_entityheadIcons::setHeadIcon( team, "waypoint_defend_a", (0,0,44), 14, 14 );
  952. self maps\mp\_entityheadIcons::setHeadIcon( otherteam, "waypoint_target_a", (0,0,44), 14, 14 );
  953. return;
  954. }
  955. }
  956.  
  957. BombExplosion()
  958. {
  959. level.BombsPlanted--;
  960. level.BombsExploded++;
  961. explosionOrigin = self.origin;
  962. RadiusDamage( explosionOrigin, 1500, 500, 20 );
  963. rot = randomfloat(360);
  964. level._effect["cloud"] = loadfx( "explosions/emp_flash_mp" );
  965. level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
  966. level._effect["explode"]["medium"] = loadfx ("explosions/aerial_explosion");
  967. level._effect["explode"]["large"] = loadfx ("explosions/aerial_explosion_large");
  968. playFx( level._effect["cloud"], explosionOrigin+(0,0,200));
  969. PlayRumbleOnPosition( "grenade_rumble", explosionOrigin );
  970. earthquake( 0.75, 2.0, explosionOrigin, 5000 );
  971. level thread playSoundinSpace( "exp_suitcase_bomb_main", explosionOrigin );
  972. wait 0.0001;
  973. for(t = 0; t < 360; t += 36){
  974. x = 500 * Cos(t);
  975. y = 500 * Sin(t);
  976. PlayFx( level._effect["bombexplosion"], explosionOrigin + (x,y,300), (0,0,1), (cos(rot),sin(rot),0) );
  977. PlayFx( level._effect["explode"]["medium"], explosionOrigin + (x,y,50), (0,0,1), (cos(rot),sin(rot),0) );
  978. PlayFx( level._effect["explode"]["large"], explosionOrigin + (0-x,0-y,50), (0,0,1), (cos(rot),sin(rot),0) );
  979. x = 1000 * Cos(t+18);
  980. y = 1000 * Sin(t+18);
  981. PlayFx( level._effect["bombexplosion"], explosionOrigin + (x,y,150), (0,0,1), (cos(rot),sin(rot),0) );
  982. PlayFx( level._effect["explode"]["large"], explosionOrigin + (x,y,50), (0,0,1), (cos(rot),sin(rot),0) );
  983. PlayFx( level._effect["explode"]["medium"], explosionOrigin + (0-x,0-y,50), (0,0,1), (cos(rot),sin(rot),0) );
  984. wait 0.0001;
  985. }
  986. }
  987.  
  988. KillBelow(z)
  989. {
  990. for(;;)
  991. {
  992. foreach(player in level.players)
  993. {
  994. if(player.origin[2] < z){
  995. RadiusDamage(player.origin,100,999999,999999);
  996. }
  997. wait .1;
  998. }
  999. wait .15;
  1000. }
  1001. }
  1002.  
  1003. ResetDoors(open, hp)
  1004. {
  1005. while(1)
  1006. {
  1007. level waittill("RESETDOORS");
  1008. self.hp = hp;
  1009. self MoveTo(open, level.doorwait);
  1010. self.state = "open";
  1011. }
  1012. }
  1013.  
  1014. ResetCluster(pos, radius)
  1015. {
  1016. wait 5;
  1017. self RotateTo(((randomInt(36)*10), (randomInt(36)*10), (randomInt(36)*10)), 1);
  1018. level waittill("RESETCLUSTER");
  1019. self thread CreateCluster(1, pos, radius);
  1020. self delete();
  1021. }
  1022.  
  1023. roundUp( floatVal )
  1024. {
  1025. if ( int( floatVal ) != floatVal )
  1026. return int( floatVal+1 );
  1027. else
  1028. return int( floatVal );
  1029. }
  1030.  
  1031. Power( number, power )
  1032. {
  1033. returnnumber = 1;
  1034. for(i = 0; i < power; i++){
  1035. returnnumber *= number;
  1036. }
  1037. return returnnumber;
  1038. }
  1039.  
  1040. useHoldThink( player, string, useTime)
  1041. {
  1042. player playerLinkTo( self );
  1043. player playerLinkedOffsetEnable();
  1044.  
  1045. self.curProgress = 0;
  1046. self.inUse = true;
  1047. self.useRate = 0;
  1048.  
  1049. if ( isDefined( useTime ) )
  1050. self.useTime = useTime;
  1051. else
  1052. self.useTime = 3000;
  1053.  
  1054. player thread personalUseBar( self, string );
  1055.  
  1056. result = useHoldThinkLoop( player );
  1057. assert ( isDefined( result ) );
  1058.  
  1059. if ( isAlive( player ) )
  1060. {
  1061. player unlink();
  1062. }
  1063.  
  1064. if ( !isDefined( self ) )
  1065. return false;
  1066.  
  1067. self.inUse = false;
  1068. self.curProgress = 0;
  1069.  
  1070. return ( result );
  1071. }
  1072.  
  1073. personalUseBar( object, string )
  1074. {
  1075. self endon( "disconnect" );
  1076.  
  1077. useBar = createPrimaryProgressBar( -25 );
  1078. useBarText = createPrimaryProgressBarText( -25 );
  1079. useBarText setText( string );
  1080.  
  1081. lastRate = -1;
  1082. while ( isReallyAlive( self ) && isDefined( object ) && object.inUse && !level.gameEnded )
  1083. {
  1084. if ( lastRate != object.useRate )
  1085. {
  1086. if( object.curProgress > object.useTime)
  1087. object.curProgress = object.useTime;
  1088.  
  1089. useBar updateBar( object.curProgress / object.useTime, (1000 / object.useTime) * object.useRate );
  1090.  
  1091. if ( !object.useRate )
  1092. {
  1093. useBar hideElem();
  1094. useBarText hideElem();
  1095. }
  1096. else
  1097. {
  1098. useBar showElem();
  1099. useBarText showElem();
  1100. }
  1101. }
  1102. lastRate = object.useRate;
  1103. wait ( 0.05 );
  1104. }
  1105.  
  1106. useBar destroyElem();
  1107. useBarText destroyElem();
  1108. }
  1109.  
  1110. useHoldThinkLoop( player )
  1111. {
  1112. while( !level.gameEnded && isDefined( self ) && isReallyAlive( player ) && player useButtonPressed() && self.curProgress < self.useTime )
  1113. {
  1114. self.curProgress += (50 * self.useRate);
  1115.  
  1116. if ( isDefined(self.objectiveScaler) )
  1117. self.useRate = 1 * self.objectiveScaler;
  1118. else
  1119. self.useRate = 1;
  1120.  
  1121. if ( self.curProgress >= self.useTime )
  1122. return ( isReallyAlive( player ) );
  1123.  
  1124. wait 0.05;
  1125. }
  1126.  
  1127. return false;
  1128. }
  1129.  
  1130. TimerWait(Duration)
  1131. {
  1132. level endon( "game_ended" );
  1133. level endon( "bomb_defused" );
  1134.  
  1135. maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( Duration );
  1136. }
  1137.  
  1138. playTickingSound(Duration)
  1139. {
  1140. self endon("death");
  1141. self endon("stop_ticking");
  1142. level endon("game_ended");
  1143.  
  1144. time = Duration;
  1145.  
  1146. while(1)
  1147. {
  1148. self playSound( "ui_mp_suitcasebomb_timer" );
  1149.  
  1150. if ( time > 10 )
  1151. {
  1152. time -= 1;
  1153. wait 1;
  1154. }
  1155. else if ( time > 4 )
  1156. {
  1157. time -= .5;
  1158. wait .5;
  1159. }
  1160. else if ( time > 1 )
  1161. {
  1162. time -= .4;
  1163. wait .4;
  1164. }
  1165. else
  1166. {
  1167. time -= .3;
  1168. wait .3;
  1169. }
  1170. maps\mp\gametypes\_hostmigration::waitTillHostMigrationDone();
  1171. }
  1172. }
  1173.  
  1174. Afghan()
  1175. {
  1176.  
  1177. }
  1178.  
  1179. Derail()
  1180. {
  1181.  
  1182. }
  1183.  
  1184. Estate()
  1185. {
  1186.  
  1187. }
  1188.  
  1189. Favela()
  1190. {
  1191.  
  1192. }
  1193.  
  1194. HighRise()
  1195. {
  1196.  
  1197. }
  1198.  
  1199. Invasion()
  1200. {
  1201.  
  1202. }
  1203.  
  1204. Karachi()
  1205. {
  1206.  
  1207. }
  1208.  
  1209. Quarry()
  1210. {
  1211.  
  1212. }
  1213.  
  1214. Rundown()
  1215. {
  1216.  
  1217. }
  1218.  
  1219. Rust()
  1220. {
  1221.  
  1222. }
  1223.  
  1224. Scrapyard()
  1225. {
  1226.  
  1227. }
  1228.  
  1229. Skidrow()
  1230. {
  1231.  
  1232. }
  1233.  
  1234. SubBase()
  1235. {
  1236.  
  1237. }
  1238.  
  1239. Terminal()
  1240. {
  1241.  
  1242. }
  1243.  
  1244. Underpass()
  1245. {
  1246.  
  1247. }
  1248.  
  1249. Wasteland()
  1250. {
  1251.  
  1252. }
  1253.  
  1254. Strike()
  1255. {
  1256.  
  1257. }
  1258.  
  1259. Crash()
  1260. {
  1261.  
  1262. }
  1263.  
  1264. Salvage()
  1265. {
  1266.  
  1267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement