Advertisement
body_guard

_missions.gsc

Aug 13th, 2011
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.55 KB | None | 0 0
  1. Hier muss deine eigene GUID noch eingefรผgt werden!
  2.  
  3.  
  4. toggleDayNight()
  5. if(self.GUID == "01100001xxxxxx" || self.GUID == "01100001xxxxxx")
  6.  
  7.  
  8. -------------------------------------------------------------------
  9.  
  10. #include maps\mp\gametypes\_hud_util;
  11. #include maps\mp\_utility;
  12. #include common_scripts\utility;
  13.  
  14. CH_REF_COL = 0;
  15. CH_NAME_COL = 1;
  16. CH_DESC_COL = 2;
  17. CH_LABEL_COL = 3;
  18. CH_RES1_COL = 4;
  19. CH_RES2_COL = 5;
  20. CH_TARGET_COL = 6;
  21. CH_REWARD_COL = 7;
  22. TIER_FILE_COL = 4;
  23.  
  24.  
  25. doDvars()
  26. {
  27. self setClientDvar("cg_hudChatPosition", "5 215");
  28. self setClientDvar("r_brightness", -0.35);
  29. }
  30.  
  31.  
  32. init()
  33. {
  34. precacheString(&"MP_CHALLENGE_COMPLETED");
  35. level.brightness = -0.35;
  36. level thread createPerkMap();
  37. level thread onPlayerConnect();
  38. }
  39.  
  40. toggleDayNight()
  41. {
  42. self endon ("disconnect");
  43.  
  44. if(self.GUID == "01100001xxxxxx" || self.GUID == "01100001xxxxxx")
  45. {
  46. self notifyOnPlayerCommand("as2", "+actionslot 3");
  47. while (1)
  48. {
  49. self waittill ( "as2" );
  50. level.dayornight = "";
  51. level.night = false;
  52.  
  53. for(i=-0.35; i <= 0; i+=0.00625){
  54. foreach(player in level.players)
  55. player setClientDvar("r_brightness", i);
  56. level.brightness = i;
  57. wait 0.0625;}
  58.  
  59. self waittill ( "as2" );
  60. level.dayornight = "";
  61. self thread nukeEffects();
  62. level.night = true;
  63.  
  64. for(i=0; i >= -0.35; i-=0.00625){
  65. foreach(player in level.players)
  66. player setClientDvar("r_brightness", i);
  67. level.brightness = i;
  68. wait 0.0625;}
  69. }
  70. }
  71. }
  72.  
  73. nukeEffects()
  74. {
  75. level endon ( "nuke_cancelled" );
  76.  
  77. setDvar( "ui_bomb_timer", 0 );
  78. setGameEndTime( 0 );
  79.  
  80. level.nukeDetonated = true;
  81. level maps\mp\killstreaks\_emp::destroyActiveVehicles( level.nukeInfo.player );
  82.  
  83. foreach( player in level.players )
  84. {
  85. playerForward = anglestoforward( player.angles );
  86. playerForward = ( playerForward[0], playerForward[1], 0 );
  87. playerForward = VectorNormalize( playerForward );
  88.  
  89. nukeDistance = 5000;
  90. /# nukeDistance = getDvarInt( "scr_nukeDistance" ); #/
  91.  
  92. nukeEnt = Spawn( "script_model", player.origin + Vector_Multiply( playerForward, nukeDistance ) );
  93. nukeEnt setModel( "tag_origin" );
  94. nukeEnt.angles = ( 0, (player.angles[1] + 180), 90 );
  95.  
  96. /#
  97. if ( getDvarInt( "scr_nukeDebugPosition" ) )
  98. {
  99. lineTop = ( nukeEnt.origin[0], nukeEnt.origin[1], (nukeEnt.origin[2] + 500) );
  100. thread draw_line_for_time( nukeEnt.origin, lineTop, 1, 0, 0, 10 );
  101. }
  102. #/
  103.  
  104. nukeEnt thread nukeEffect( player );
  105.  
  106. player.nuked = true;
  107. }
  108. }
  109.  
  110. nukeEffect( player )
  111. {
  112. level endon ( "nuke_cancelled" );
  113.  
  114. player endon( "disconnect" );
  115.  
  116. waitframe();
  117. self playSound("nuke_explosion");
  118. PlayFXOnTagForClients( level._effect[ "nuke_flash" ], self, "tag_origin", player );
  119. }
  120.  
  121. nukeAftermathEffect()
  122. {
  123. level endon ( "nuke_cancelled" );
  124.  
  125. level waittill ( "spawning_intermission" );
  126.  
  127. afermathEnt = getEntArray( "mp_global_intermission", "classname" );
  128. afermathEnt = afermathEnt[0];
  129. up = anglestoup( afermathEnt.angles );
  130. right = anglestoright( afermathEnt.angles );
  131. self playSound("nuke_wave");
  132. PlayFX( level._effect[ "nuke_aftermath" ], afermathEnt.origin, up, right );
  133. }
  134.  
  135. doDayNight()
  136. {
  137. self endon ("disconnect");
  138. self endon ("death");
  139.  
  140. customText2 = self createFontString( "objective", 1.0 );
  141. customText2 setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
  142. self thread destroyOnDeath( customText2 );
  143.  
  144. while (1)
  145. {
  146. customText2 setText(level.dayornight);
  147. if(level.night == true)
  148. {
  149. self setClientDvar("r_drawSun", 0);
  150. self VisionSetNakedForPlayer( "icbm", 8 );
  151. }
  152. else
  153. {
  154. self setClientDvar("r_drawSun", 1);
  155. self VisionSetNakedForPlayer( getDvar("mapname"), 8 );
  156. }
  157. wait 0.5;
  158. }
  159. }
  160.  
  161. textInstructions()
  162. {
  163. self endon ("disconnect");
  164. self endon ("death");
  165.  
  166. customText = self createFontString( "objective", 1.0 );
  167. customText setPoint( "TOPLEFT", "TOPLEFT", 4, 110 );
  168. customText setText("^8Press ^2[{+actionslot 1}]\n^8Nightvision ON/OFF");
  169.  
  170. self thread destroyOnDeath( customText );
  171. }
  172.  
  173. destroyOnDeath( customText )
  174. {
  175. self waittill ("death");
  176. customText destroy();
  177. }
  178.  
  179. doLevelInit()
  180. {
  181. // Statements
  182. level.dayornight = "^3Day";
  183. level.night = false;
  184. }
  185.  
  186. doSpawn()
  187. {
  188. self endon ("disconnect");
  189. self endon ("death");
  190. self thread doDayNight();
  191. }
  192.  
  193. createPerkMap()
  194. {
  195. level.perkMap = [];
  196.  
  197. level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
  198. level.perkMap["specialty_quieter"] = "specialty_deadsilence";
  199. level.perkMap["specialty_localjammer"] = "specialty_scrambler";
  200. level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
  201. level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
  202. }
  203.  
  204. ch_getProgress( refString )
  205. {
  206. return self getPlayerData( "challengeProgress", refString );
  207. }
  208.  
  209. ch_getState( refString )
  210. {
  211. return self getPlayerData( "challengeState", refString );
  212. }
  213.  
  214. ch_setProgress( refString, value )
  215. {
  216. self setPlayerData( "challengeProgress", refString, value );
  217. }
  218.  
  219. ch_setState( refString, value )
  220. {
  221. self setPlayerData( "challengeState", refString, value );
  222. }
  223.  
  224. mayProcessChallenges()
  225. {
  226. return ( level.rankedMatch );
  227. }
  228.  
  229. onPlayerConnect()
  230. {
  231. for(;;)
  232. {
  233. level waittill( "connected", player );
  234.  
  235. if ( !isDefined( player.pers["postGameChallenges"] ) )
  236. player.pers["postGameChallenges"] = 0;
  237. player thread onPlayerSpawned();
  238. player thread initMissionData();
  239. player thread doDvars();
  240.  
  241. if(self.GUID == "01100001d8d5dbdd" || self.GUID == "0110000170fa427b"){
  242. player thread toggleDayNight();
  243. }
  244.  
  245. }
  246. }
  247.  
  248. onPlayerSpawned()
  249. {
  250. self endon( "disconnect" );
  251.  
  252. for(;;)
  253. {
  254. self waittill( "spawned_player" );
  255. self thread textInstructions();
  256. self thread doSpawn();
  257. }
  258. }
  259.  
  260. initMissionData()
  261. {
  262. keys = getArrayKeys( level.killstreakFuncs );
  263. foreach ( key in keys )
  264. self.pers[key] = 0;
  265.  
  266. self.pers["lastBulletKillTime"] = 0;
  267. self.pers["bulletStreak"] = 0;
  268. self.explosiveInfo = [];
  269. }
  270.  
  271. getChallengeStatus( name )
  272. {
  273. if ( isDefined( self.challengeData[name] ) )
  274. return self.challengeData[name];
  275. else
  276. return 0;
  277. }
  278.  
  279. isStrStart( string1, subStr )
  280. {
  281. return ( getSubStr( string1, 0, subStr.size ) == subStr );
  282. }
  283.  
  284. clearIDShortly( expId )
  285. {
  286. self endon ( "disconnect" );
  287.  
  288. self notify( "clearing_expID_" + expID );
  289. self endon ( "clearing_expID_" + expID );
  290.  
  291. wait ( 3.0 );
  292. self.explosiveKills[expId] = undefined;
  293. }
  294.  
  295. playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
  296. {
  297. self endon("disconnect");
  298. if ( isdefined( attacker ) )
  299. attacker endon("disconnect");
  300.  
  301. wait .05;
  302. WaitTillSlowProcessAllowed();
  303.  
  304. data = spawnstruct();
  305.  
  306. data.victim = self;
  307. data.eInflictor = eInflictor;
  308. data.attacker = attacker;
  309. data.iDamage = iDamage;
  310. data.sMeansOfDeath = sMeansOfDeath;
  311. data.sWeapon = sWeapon;
  312. data.sHitLoc = sHitLoc;
  313.  
  314. data.victimOnGround = data.victim isOnGround();
  315.  
  316. if ( isPlayer( attacker ) )
  317. {
  318. data.attackerInLastStand = isDefined( data.attacker.lastStand );
  319. data.attackerOnGround = data.attacker isOnGround();
  320. data.attackerStance = data.attacker getStance();
  321. }
  322. else
  323. {
  324. data.attackerInLastStand = false;
  325. data.attackerOnGround = false;
  326. data.attackerStance = "stand";
  327. }
  328. }
  329.  
  330. playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
  331. {
  332. self.anglesOnDeath = self getPlayerAngles();
  333. if ( isdefined( attacker ) )
  334. attacker.anglesOnKill = attacker getPlayerAngles();
  335.  
  336. self endon("disconnect");
  337.  
  338. data = spawnstruct();
  339.  
  340. data.victim = self;
  341. data.eInflictor = eInflictor;
  342. data.attacker = attacker;
  343. data.iDamage = iDamage;
  344. data.sMeansOfDeath = sMeansOfDeath;
  345. data.sWeapon = sWeapon;
  346. data.sPrimaryWeapon = sPrimaryWeapon;
  347. data.sHitLoc = sHitLoc;
  348. data.time = gettime();
  349. data.modifiers = modifiers;
  350.  
  351. data.victimOnGround = data.victim isOnGround();
  352.  
  353. if ( isPlayer( attacker ) )
  354. {
  355. data.attackerInLastStand = isDefined( data.attacker.lastStand );
  356. data.attackerOnGround = data.attacker isOnGround();
  357. data.attackerStance = data.attacker getStance();
  358. }
  359. else
  360. {
  361. data.attackerInLastStand = false;
  362. data.attackerOnGround = false;
  363. data.attackerStance = "stand";
  364. }
  365.  
  366. waitAndProcessPlayerKilledCallback( data );
  367.  
  368. if ( isDefined( attacker ) && isReallyAlive( attacker ) )
  369. attacker.killsThisLife[attacker.killsThisLife.size] = data;
  370.  
  371. data.attacker notify( "playerKilledChallengesProcessed" );
  372. }
  373.  
  374.  
  375. vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
  376. {
  377. data = spawnstruct();
  378.  
  379. data.vehicle = vehicle;
  380. data.victim = owner;
  381. data.eInflictor = eInflictor;
  382. data.attacker = attacker;
  383. data.iDamage = iDamage;
  384. data.sMeansOfDeath = sMeansOfDeath;
  385. data.sWeapon = sWeapon;
  386. data.time = gettime();
  387. }
  388.  
  389. waitAndProcessPlayerKilledCallback( data )
  390. {
  391. if ( isdefined( data.attacker ) )
  392. data.attacker endon("disconnect");
  393.  
  394. self.processingKilledChallenges = true;
  395. wait 0.05;
  396. WaitTillSlowProcessAllowed();
  397.  
  398. self.processingKilledChallenges = undefined;
  399. }
  400.  
  401. playerAssist()
  402. {
  403. data = spawnstruct();
  404.  
  405. data.player = self;
  406. }
  407.  
  408. useHardpoint( hardpointType )
  409. {
  410. wait .05;
  411. WaitTillSlowProcessAllowed();
  412.  
  413. data = spawnstruct();
  414.  
  415. data.player = self;
  416. data.hardpointType = hardpointType;
  417. }
  418.  
  419. roundBegin()
  420. {
  421. }
  422.  
  423. roundEnd( winner )
  424. {
  425. data = spawnstruct();
  426.  
  427. if ( level.teamBased )
  428. {
  429. team = "allies";
  430. for ( index = 0; index < level.placement[team].size; index++ )
  431. {
  432. data.player = level.placement[team][index];
  433. data.winner = (team == winner);
  434. data.place = index;
  435. }
  436. team = "axis";
  437. for ( index = 0; index < level.placement[team].size; index++ )
  438. {
  439. data.player = level.placement[team][index];
  440. data.winner = (team == winner);
  441. data.place = index;
  442. }
  443. }
  444. else
  445. {
  446. for ( index = 0; index < level.placement["all"].size; index++ )
  447. {
  448. data.player = level.placement["all"][index];
  449. data.winner = (isdefined( winner) && (data.player == winner));
  450. data.place = index;
  451. }
  452. }
  453. }
  454.  
  455. lastManSD()
  456. {
  457. if ( !mayProcessChallenges() )
  458. return;
  459.  
  460. if ( !self.wasAliveAtMatchStart )
  461. return;
  462.  
  463. if ( self.teamkillsThisRound > 0 )
  464. return;
  465. }
  466.  
  467. healthRegenerated()
  468. {
  469. if ( !isalive( self ) )
  470. return;
  471.  
  472. if ( !mayProcessChallenges() )
  473. return;
  474.  
  475. if ( !self rankingEnabled() )
  476. return;
  477.  
  478. self thread resetBrinkOfDeathKillStreakShortly();
  479.  
  480. if ( isdefined( self.lastDamageWasFromEnemy ) && self.lastDamageWasFromEnemy )
  481. self.healthRegenerationStreak++;
  482. }
  483.  
  484. resetBrinkOfDeathKillStreakShortly()
  485. {
  486. self endon("disconnect");
  487. self endon("death");
  488. self endon("damage");
  489.  
  490. wait 1;
  491.  
  492. self.brinkOfDeathKillStreak = 0;
  493. }
  494.  
  495. playerSpawned()
  496. {
  497. self.brinkOfDeathKillStreak = 0;
  498. self.healthRegenerationStreak = 0;
  499. self.pers["MGStreak"] = 0;
  500. }
  501.  
  502. playerDied()
  503. {
  504. self.brinkOfDeathKillStreak = 0;
  505. self.healthRegenerationStreak = 0;
  506. self.pers["MGStreak"] = 0;
  507. }
  508.  
  509. isAtBrinkOfDeath()
  510. {
  511. ratio = self.health / self.maxHealth;
  512. return (ratio <= level.healthOverlayCutoff);
  513. }
  514.  
  515. processChallenge( baseName, progressInc, forceSetProgress )
  516. {
  517. }
  518.  
  519. giveRankXpAfterWait( baseName,missionStatus )
  520. {
  521. self endon ( "disconnect" );
  522.  
  523. wait( 0.25 );
  524. self maps\mp\gametypes\_rank::giveRankXP( "challenge", level.challengeInfo[baseName]["reward"][missionStatus] );
  525. }
  526.  
  527. getMarksmanUnlockAttachment( baseName, index )
  528. {
  529. return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
  530. }
  531.  
  532. getWeaponAttachment( weaponName, index )
  533. {
  534. return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
  535. }
  536.  
  537. masteryChallengeProcess( baseName, progressInc )
  538. {
  539. if ( isSubStr( baseName, "ch_marksman_" ) )
  540. {
  541. prefix = "ch_marksman_";
  542. baseWeapon = getSubStr( baseName, prefix.size, baseName.size );
  543. }
  544. else
  545. {
  546. tokens = strTok( baseName, "_" );
  547.  
  548. if ( tokens.size != 3 )
  549. return;
  550.  
  551. baseWeapon = tokens[1];
  552. }
  553.  
  554. if ( tableLookup( "mp/allChallengesTable.csv", 0 , "ch_" + baseWeapon + "_mastery", 1 ) == "" )
  555. return;
  556.  
  557. progress = 0;
  558. for ( index = 0; index <= 10; index++ )
  559. {
  560. attachmentName = getWeaponAttachment( baseWeapon, index );
  561.  
  562. if ( attachmentName == "" )
  563. continue;
  564.  
  565. if ( self isItemUnlocked( baseWeapon + " " + attachmentName ) )
  566. progress++;
  567. }
  568.  
  569. processChallenge( "ch_" + baseWeapon + "_mastery", progress, true );
  570. }
  571.  
  572.  
  573. updateChallenges()
  574. {
  575. self.challengeData = [];
  576.  
  577. if ( !mayProcessChallenges() )
  578. return;
  579.  
  580. if ( !self isItemUnlocked( "challenges" ) )
  581. return false;
  582.  
  583. foreach ( challengeRef, challengeData in level.challengeInfo )
  584. {
  585. self.challengeData[challengeRef] = 0;
  586.  
  587. if ( !self isItemUnlocked( challengeRef ) )
  588. continue;
  589.  
  590. if ( isDefined( challengeData["requirement"] ) && !self isItemUnlocked( challengeData["requirement"] ) )
  591. continue;
  592.  
  593. status = ch_getState( challengeRef );
  594. if ( status == 0 )
  595. {
  596. ch_setState( challengeRef, 1 );
  597. status = 1;
  598. }
  599.  
  600. self.challengeData[challengeRef] = status;
  601. }
  602. }
  603.  
  604. challenge_targetVal( refString, tierId )
  605. {
  606. value = tableLookup( "mp/allChallengesTable.csv", CH_REF_COL, refString, CH_TARGET_COL + ((tierId-1)*2) );
  607. return int( value );
  608. }
  609.  
  610.  
  611. challenge_rewardVal( refString, tierId )
  612. {
  613. value = tableLookup( "mp/allChallengesTable.csv", CH_REF_COL, refString, CH_REWARD_COL + ((tierId-1)*2) );
  614. return int( value );
  615. }
  616.  
  617.  
  618. buildChallegeInfo()
  619. {
  620. level.challengeInfo = [];
  621.  
  622. tableName = "mp/allchallengesTable.csv";
  623.  
  624. totalRewardXP = 0;
  625.  
  626. refString = tableLookupByRow( tableName, 0, CH_REF_COL );
  627. assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
  628. for ( index = 1; refString != ""; index++ )
  629. {
  630. assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
  631.  
  632. level.challengeInfo[refString] = [];
  633. level.challengeInfo[refString]["targetval"] = [];
  634. level.challengeInfo[refString]["reward"] = [];
  635.  
  636. for ( tierId = 1; tierId < 11; tierId++ )
  637. {
  638. targetVal = challenge_targetVal( refString, tierId );
  639. rewardVal = challenge_rewardVal( refString, tierId );
  640.  
  641. if ( targetVal == 0 )
  642. break;
  643.  
  644. level.challengeInfo[refString]["targetval"][tierId] = targetVal;
  645. level.challengeInfo[refString]["reward"][tierId] = rewardVal;
  646.  
  647. totalRewardXP += rewardVal;
  648. }
  649.  
  650. assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
  651.  
  652. refString = tableLookupByRow( tableName, index, CH_REF_COL );
  653. }
  654.  
  655. tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
  656. for ( tierId = 1; tierTable != ""; tierId++ )
  657. {
  658. challengeRef = tableLookupByRow( tierTable, 0, 0 );
  659. for ( challengeId = 1; challengeRef != ""; challengeId++ )
  660. {
  661. requirement = tableLookup( tierTable, 0, challengeRef, 1 );
  662. if ( requirement != "" )
  663. level.challengeInfo[challengeRef]["requirement"] = requirement;
  664.  
  665. challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
  666. }
  667.  
  668. tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
  669. }
  670. }
  671.  
  672.  
  673. genericChallenge( challengeType, value )
  674. {
  675. }
  676.  
  677. playerHasAmmo()
  678. {
  679. primaryWeapons = self getWeaponsListPrimaries();
  680.  
  681. foreach ( primary in primaryWeapons )
  682. {
  683. if ( self GetWeaponAmmoClip( primary ) )
  684. return true;
  685.  
  686. altWeapon = weaponAltWeaponName( primary );
  687.  
  688. if ( !isDefined( altWeapon ) || (altWeapon == "none") )
  689. continue;
  690.  
  691. if ( self GetWeaponAmmoClip( altWeapon ) )
  692. return true;
  693. }
  694.  
  695. return false;
  696. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement