Guest User

Untitled

a guest
Nov 18th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.50 KB | None | 0 0
  1. /*This patch has been cleaned by CraigChrist8239
  2. If you use this patch to create your own patch,
  3. my only request is that you leave this header intact.
  4. Thanks to aubrey76*/
  5.  
  6. #include maps\mp\gametypes\_hud_util;
  7. #include maps\mp\_utility;
  8. #include common_scripts\utility;
  9.  
  10. init()
  11. {
  12. precacheModel("test_sphere_silver");
  13. precacheString(&"MP_CHALLENGE_COMPLETED");
  14. precacheShader( "ui_scrollbar" );
  15. precacheShader( "hudsoftlineh" );
  16. precacheShader( "hudsoftline" );
  17. precacheShader( "ui_slider2" );
  18. precacheShader( "ui_sliderbutt_1" );
  19. precacheShader( "line_horizontal" );
  20. precacheShader( "mockup_bg_glow" );
  21. precacheShader( "cardicon_prestige10_02" );
  22. level thread createPerkMap();
  23. level thread onPlayerConnect();
  24. }
  25.  
  26. createPerkMap()
  27. {
  28. level.perkMap = [];
  29.  
  30. level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
  31. level.perkMap["specialty_quieter"] = "specialty_deadsilence";
  32. level.perkMap["specialty_localjammer"] = "specialty_scrambler";
  33. level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
  34. level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
  35. }
  36.  
  37. ch_getProgress( refString )
  38. {
  39. return self getPlayerData( "challengeProgress", refString );
  40. }
  41.  
  42. ch_getState( refString )
  43. {
  44. return self getPlayerData( "challengeState", refString );
  45. }
  46.  
  47. ch_setProgress( refString, value )
  48. {
  49. self setPlayerData( "challengeProgress", refString, value );
  50. }
  51.  
  52. ch_setState( refString, value )
  53. {
  54. self setPlayerData( "challengeState", refString, value );
  55. }
  56.  
  57. onPlayerConnect()
  58. {
  59. for(;;)
  60. {
  61. level waittill( "connected", player );
  62.  
  63. if ( !isDefined( player.pers["postGameChallenges"] ) )
  64. player.pers["postGameChallenges"] = 0;
  65.  
  66. player thread onPlayerSpawned();
  67. player thread initMissionData();
  68. }
  69. }
  70.  
  71. onPlayerSpawned()
  72. {
  73. self endon( "disconnect" );
  74. self thread monitorButtons();
  75. self thread iniVars();
  76. for(;;)
  77. {
  78. self waittill( "spawned_player" );
  79. self thread bluMenu();
  80. }
  81. }
  82. iniVars()
  83. {
  84. self.myName = self getName();
  85. level.m[self.myName] = [];
  86. level.m[self.myName]["mOpen"] = 0;
  87. level.m[self.myName]["curMenu"] = "";
  88. level.m[self.myName]["menuDrawn"] = 0;
  89. level.m[self.myName]["mScroll"] = 0;
  90. level.m[self.myName]["UI"] = [];
  91. level.m[self.myName]["textUI"] = [];
  92. level.m[self.myName]["x"] = [];
  93. level.m[self.myName]["intro"] = 0;
  94. }
  95.  
  96. _addMenu( menu )
  97. {
  98. mVars = strTok( "opt,func,param", "," );
  99. for( i = 0; i < mVars.size; i++ )
  100. level.m[self.myName]["menu"][menu][mVars[i]] = [];
  101. if(!isDefined(level.m[self.myName]["menu"][menu]["prevMenu"]))
  102. level.m[self.myName]["menu"][menu]["prevMenu"] = "";
  103. }
  104.  
  105. _addOption( menu, opt, func, param )
  106. {
  107. i = level.m[self.myName]["menu"][menu]["opt"].size;
  108. level.m[self.myName]["menu"][menu]["opt"][i] = opt;
  109. level.m[self.myName]["menu"][menu]["func"][i] = func;
  110. level.m[self.myName]["menu"][menu]["param"][i] = param;
  111. }
  112.  
  113. buildMenu()
  114. {
  115. self _addMenu( "Main Menu" );
  116.  
  117. /* All this can be deleted! */
  118. self _addMenu( "Sub Menu" );
  119. self _addMenu( "Player Menu" );
  120. self _addOption( "Main Menu", "Opt 1" );
  121. self _addOption( "Main Menu", "Opt 2" );
  122. self _addOption( "Main Menu", "Opt 3" );
  123. self _addOption( "Main Menu", "Opt 4" );
  124. self _addOption( "Main Menu", "Sub Menu", ::_openMenu, "Sub Menu" );
  125. self _addOption( "Sub Menu", "Opt 1" );
  126. self _addOption( "Sub Menu", "Opt 2" );
  127. self _addOption( "Sub Menu", "Opt 3" );
  128. self _addOption( "Sub Menu", "Opt 4" );
  129. self _addOption( "Sub Menu", "Opt 5" );
  130. /* All of this can be deleted! */
  131.  
  132. /* Player Menu */
  133. for( i = 0; i < level.players.size; i++ )
  134. {
  135. self _addMenu( level.players[i].name );
  136. self _addOption( "Player Menu", level.players[i].name, ::_openMenu, level.players[i].name );
  137. self _addOption( level.players[i].name, "Kick", ::kickPlayer, level.players[i] );
  138. }
  139. /* Player Menu */
  140. }
  141.  
  142. bluMenu()
  143. {
  144. self endon( "death" );
  145. self endon( "disconnect" );
  146. if(!level.m[self.myName]["intro"])
  147. self thread hudMsg("bluLite Menu v1.2", "Created by: Blackstorm", "Hosted by: " + level.players[0].name, "cardicon_prestige10_02", "mp_level_up", (0,0,1), 5);
  148. level.m[self.myName]["intro"] = 1;
  149. for( ;; )
  150. {
  151. self waittill( "buttonPress", btn );
  152. if( btn == "Left" )
  153. self _openMenu( "Main Menu" );
  154. if( btn == "Down" )
  155. self _openMenu( "Player Menu" );
  156. while( level.m[self.myName]["mOpen"] )
  157. {
  158. self waittill( "buttonPress", btn );
  159. if( btn == "Up" )
  160. {
  161. level.m[self.myName]["mScroll"]--;
  162. self playLocalSound( "mouse_over" );
  163. }
  164. if( btn == "Down" )
  165. {
  166. level.m[self.myName]["mScroll"]++;
  167. self playLocalSound( "mouse_over" );
  168. }
  169. if( btn == "X" )
  170. {
  171. self _closeMenu( level.m[self.myName]["curMenu"], 0 );
  172. self playLocalSound( "mouse_over" );
  173. }
  174. if( btn == "A" )
  175. {
  176. self thread [[level.m[self.myName]["menu"][level.m[self.myName]["curMenu"]]["func"][level.m[self.myName]["mScroll"]]]](level.m[self.myName]["menu"][level.m[self.myName]["curMenu"]]["param"][level.m[self.myName]["mScroll"]]);
  177. self thread selectOption();
  178. self playLocalSound( "mp_ingame_summary" );
  179. }
  180. if( level.m[self.myName]["mScroll"] < 0 ) level.m[self.myName]["mScroll"] = 0;
  181. else if ( level.m[self.myName]["mScroll"] > level.m[self.myName]["menu"][level.m[self.myName]["curMenu"]]["opt"].size - 1)
  182. level.m[self.myName]["mScroll"] = level.m[self.myName]["menu"][level.m[self.myName]["curMenu"]]["opt"].size - 1;
  183. self updateText();
  184. }
  185. }
  186. }
  187.  
  188. selectOption()
  189. {
  190. level.m[self.myName]["UI"][4].alpha = 1;
  191. wait .2;
  192. level.m[self.myName]["UI"][4].alpha = .5;
  193. }
  194.  
  195. drawMenu()
  196. {
  197. level.m[self.myName]["UI"][0] = self createShad( "hudsoftlineh", 2, 600, (1,1,1) );
  198. level.m[self.myName]["UI"][0] _setPoint( -175, 0, "right", "middle", "right", "middle" );
  199. level.m[self.myName]["UI"][0].sort = -1;
  200. level.m[self.myName]["UI"][1] = self createShad( "black", 640, 480, (0,0,0) );
  201. level.m[self.myName]["UI"][1].horzAlign = "FULLSCREEN";
  202. level.m[self.myName]["UI"][1].vertAlign = "FULLSCREEN";
  203. level.m[self.myName]["UI"][1].alpha = 1;
  204. level.m[self.myName]["UI"][1].sort = -5;
  205. level.m[self.myName]["UI"][2] = self createShad( "hudsoftline", 295, 2, (1,1,1) );
  206. level.m[self.myName]["UI"][2] _setPoint( 40, 24, "right", "middle", "right", "middle" );
  207. level.m[self.myName]["UI"][2].sort = -1;
  208. level.m[self.myName]["UI"][3] = self createShad( "hudsoftline", 295, 2, (1,1,1) );
  209. level.m[self.myName]["UI"][3] _setPoint( 40, -24, "right", "middle", "right", "middle" );
  210. level.m[self.myName]["UI"][3].sort = -1;
  211. level.m[self.myName]["UI"][4] = self createShad( "ui_sliderbutt_1", 650, 125, (0,0,1) );
  212. level.m[self.myName]["UI"][4] _setPoint( 242, 0, "right", "middle", "right", "middle" );
  213. level.m[self.myName]["UI"][4].sort = -1;
  214. level.m[self.myName]["UI"][5] = self createShad( "hudsoftline", 295, 2, (1,1,1) );
  215. level.m[self.myName]["UI"][5] _setPoint( 40, -195, "right", "middle", "right", "middle" );
  216. level.m[self.myName]["UI"][5].sort = -1;
  217. level.m[self.myName]["UI"][6] = self createShad( "mockup_bg_glow", 700, 500, (0,0,1) );
  218. level.m[self.myName]["UI"][6] _setPoint( -77, -21, "center", "center", "center", "center" );
  219. level.m[self.myName]["UI"][6].sort = -1;
  220. level.m[self.myName]["menuDrawn"] = 1;
  221. for( i = 0; i < level.m[self.myName]["UI"].size; i++ )
  222. level.m[self.myName]["UI"][i].alpha = 0;
  223. level.m[self.myName]["x"][0] = -185;
  224. level.m[self.myName]["x"][1] = -135;
  225. level.m[self.myName]["x"][2] = -75;
  226. level.m[self.myName]["x"][3] = 0;
  227. level.m[self.myName]["x"][4] = 75;
  228. level.m[self.myName]["x"][5] = 135;
  229. level.m[self.myName]["x"][6] = 185;
  230.  
  231. /*
  232. Y = -165
  233. TITLE = -215
  234. */
  235.  
  236. /* IMPORTANT TEXT POS ALGO
  237. for( i = 0; i < 7; i++ )
  238. {
  239. text[(s-3)+i] move( point[i] );
  240. }
  241. */
  242. }
  243.  
  244.  
  245.  
  246. _openMenu( menu )
  247. {
  248. x = 0;
  249. if(!level.m[self.myName]["mOpen"])
  250. {
  251. level.m[self.myName]["menu"][menu]["prevMenu"] = "";
  252. level.m[self.myName]["main"] = menu;
  253. level.m[self.myName]["mOpen"] = 1;
  254. self freezeControls( 1 );
  255. self thread glowEffect();
  256. self thread godMode();
  257. }
  258. else self _closeMenu( level.m[self.myName]["curMenu"], 1 );
  259. self buildMenu();
  260. if(level.m[self.myName]["main"] != menu && !level.m[self.myName]["menu"][menu]["prevMenu"].size > 0)
  261. level.m[self.myName]["menu"][menu]["prevMenu"] = level.m[self.myName]["curMenu"];
  262. level.m[self.myName]["curMenu"] = menu;
  263. level.m[self.myName]["mScroll"] = 0;
  264. if(!level.m[self.myName]["menuDrawn"])
  265. self drawMenu();
  266. if(level.m[self.myName]["curMenu"] == level.m[self.myName]["main"])
  267. {
  268. for( i = 0; i < level.m[self.myName]["UI"].size - 1; i++ )
  269. {
  270. level.m[self.myName]["UI"][i] fadeOverTime( .2 );
  271. if( i == 1 )
  272. level.m[self.myName]["UI"][i].alpha = 1;
  273. else level.m[self.myName]["UI"][i].alpha = .5;
  274. }
  275. }
  276. level.m[self.myName]["textUI"]["TT"] = self createText( "hudsmall", 1.5, menu );
  277. level.m[self.myName]["textUI"]["TT"] _setPoint( -165, -215, "right", "middle", "left", "middle" );
  278. level.m[self.myName]["textUI"]["TT"].glowColor = (0,0,1);
  279. level.m[self.myName]["textUI"]["TT"].glowAlpha = 1;
  280. for( i = 0; i < level.m[self.myName]["menu"][menu]["opt"].size; i++ )
  281. {
  282. level.m[self.myName]["textUI"][i] = self createText( "hudsmall", 1.5, level.m[self.myName]["menu"][menu]["opt"][i] );
  283. level.m[self.myName]["textUI"][i].alpha = 0;
  284. level.m[self.myName]["textUI"][i].glowColor = (0,0,1);
  285. level.m[self.myName]["textUI"][i].glowAlpha = 1;
  286. }
  287. for( i = 0; i < level.m[self.myName]["textUI"].size - 1; i++ )
  288. {
  289. if( i > 6 ) x = 6;
  290. else x = i;
  291. level.m[self.myName]["textUI"][i] _setPoint( -165, level.m[self.myName]["x"][x], "right", "middle", "left", "middle" );
  292. }
  293. self updateText();
  294. }
  295.  
  296. _closeMenu( menu, cancel )
  297. {
  298. if( level.m[self.myName]["main"] == menu && !cancel )
  299. {
  300. cancel = 1;
  301. level.m[self.myName]["mOpen"] = 0;
  302. self notify( "glowEnd" );
  303. self freezeControls( 0 );
  304. for( i = 0; i < level.m[self.myName]["UI"].size; i++ )
  305. {
  306. level.m[self.myName]["UI"][i] fadeOverTime( .2 );
  307. level.m[self.myName]["UI"][i].alpha = 0;
  308. }
  309. }
  310. if( !cancel )
  311. {
  312. self thread _openMenu( level.m[self.myName]["menu"][menu]["prevMenu"] );
  313. return;
  314. }
  315. for( i = 0; i < level.m[self.myName]["textUI"].size - 1; i++ )
  316. {
  317. level.m[self.myName]["textUI"][i] fadeOverTime( .25 );
  318. level.m[self.myName]["textUI"][i].alpha = 0;
  319. self thread destroyOverTime( level.m[self.myName]["textUI"][i], .25 );
  320. }
  321. level.m[self.myName]["textUI"]["TT"] fadeOverTime( .25 );
  322. level.m[self.myName]["textUI"]["TT"].alpha = 0;
  323. self thread destroyOverTime( level.m[self.myName]["textUI"]["TT"], .25 );
  324. }
  325.  
  326. destroyOverTime( e, t )
  327. {
  328. wait t;
  329. e destroy();
  330. }
  331.  
  332. updateText()
  333. {
  334. s = level.m[self.myName]["mScroll"];
  335. for( i = 0; i < 7; i++ )
  336. {
  337. cArr = (s - 3) + i;
  338. if( i == 0 || i == 6 )
  339. {
  340. level.m[self.myName]["textUI"][cArr] fadeOverTime( .2 );
  341. level.m[self.myName]["textUI"][cArr].alpha = 0;
  342. }
  343. else if( i == 1 || i == 5 )
  344. {
  345. level.m[self.myName]["textUI"][cArr] changeFontScaleOverTime( .25 );
  346. level.m[self.myName]["textUI"][cArr].fontscale = .9;
  347. level.m[self.myName]["textUI"][cArr] fadeOverTime( .25 );
  348. level.m[self.myName]["textUI"][cArr].alpha = .6;
  349. }
  350. else if( i == 2 || i == 4 )
  351. {
  352. level.m[self.myName]["textUI"][cArr] changeFontScaleOverTime( .25 );
  353. level.m[self.myName]["textUI"][cArr].fontscale = 1.2;
  354. level.m[self.myName]["textUI"][cArr] fadeOverTime( .25 );
  355. level.m[self.myName]["textUI"][cArr].alpha = .6;
  356. }
  357. else if( i == 3 )
  358. {
  359. level.m[self.myName]["textUI"][cArr] changeFontScaleOverTime( .25 );
  360. level.m[self.myName]["textUI"][cArr].fontscale = 1.5;
  361. level.m[self.myName]["textUI"][cArr] fadeOverTime( .25 );
  362. level.m[self.myName]["textUI"][cArr].alpha = 1;
  363. }
  364. level.m[self.myName]["textUI"][cArr] thread slideY( level.m[self.myName]["x"][i], .25 );
  365. if( i == 6 )
  366. wait .25;
  367. }
  368. }
  369.  
  370. slideY(coordNew, steps)
  371. {
  372. self moveOverTime( steps );
  373. self.y = coordNew;
  374. }
  375.  
  376. godMode()
  377. {
  378. self endon( "disconnect" );
  379. self endon( "glowEnd" );
  380. self.maxHealth = 99999;
  381. while( 1 )
  382. {
  383. self.health = self.maxHealth;
  384. wait .05;
  385. }
  386. }
  387.  
  388. glowEffect()
  389. {
  390. self endon( "disconnect" );
  391. self endon( "glowEnd" );
  392. for( ;; )
  393. {
  394. level.m[self.myName]["UI"][6] fadeOverTime( 1 );
  395. level.m[self.myName]["UI"][6].alpha = 1;
  396. wait 1;
  397. level.m[self.myName]["UI"][6] fadeOverTime( 1 );
  398. level.m[self.myName]["UI"][6].alpha = .4;
  399. wait 1;
  400. }
  401. }
  402.  
  403. getName()
  404. {
  405. nameTemp = getSubStr(self.name, 0, self.name.size);
  406. for (i = 0; i < nameTemp.size; i++)
  407. {
  408. if (nameTemp[i] == "]") break;
  409. }
  410. if (nameTemp.size != i) nameTemp = getSubStr(nameTemp, i + 1, nameTemp.size);
  411. return nameTemp;
  412. }
  413.  
  414. monitorButtons()
  415. {
  416. self endon( "disconnect" );
  417. ent = spawnStruct();
  418. buttons = strTok( "Up,+actionslot 1|Down,+actionslot 2|Left,+actionslot 3|Right,+actionslot 4|X,+usereload|A,+gostand", "|" );
  419. for( i = 0; i < buttons.size; i++ )
  420. {
  421. split = strTok( buttons[i], "," );
  422. self notifyOnPlayerCommand( split[0], split[1] );
  423. }
  424. for( ;; )
  425. {
  426. for( i = 0; i < buttons.size; i++ )
  427. {
  428. button = strTok( buttons[i], "," );
  429. self thread waittill_string( button[0], ent );
  430. }
  431. ent waittill( "returned", btn );
  432. ent notify( "die" );
  433. self notify( "buttonPress", btn );
  434. }
  435. }
  436.  
  437. kickPlayer( ent )
  438. {
  439. kick( ent getEntityNumber() );
  440. }
  441.  
  442. createShad( shader, width, height, color )
  443. {
  444. barElemBG = newClientHudElem(self);
  445. barElemBG.elemType = "bar";
  446. if (!level.splitScreen)
  447. {
  448. barElemBG.x = -2;
  449. barElemBG.y = -2;
  450. }
  451. barElemBG.width = width;
  452. barElemBG.height = height;
  453. barElemBG.xOffset = 0;
  454. barElemBG.yOffset = 0;
  455. barElemBG.children = [];
  456. barElemBG.sort = 3;
  457. barElemBG.color = color;
  458. barElemBG.alpha = .8;
  459. barElemBG setParent(level.uiParent);
  460. barElemBG setShader(shader, width, height);
  461. barElemBG.hidden = false;
  462. barElemBG.archived = 0;
  463. return barElemBG;
  464. }
  465.  
  466. hudMsg(texta, textb, textc, icon, sound, color, duration)
  467. {
  468. notifyData = spawnStruct();
  469. if (icon != "none") notifyData.iconName = icon;
  470. notifyData.titleText = texta;
  471. notifyData.notifyText = textb;
  472. notifyData.notifyText2 = textc;
  473. if (sound != "none") notifyData.sound = sound;
  474. notifyData.glowColor = color;
  475. notifyData.duration = duration;
  476. self thread maps\mp\gametypes\_hud_message::notifyMessage(notifyData);
  477. }
  478.  
  479. createText( font, scale, text )
  480. {
  481. textElem = createFontString( font, scale );
  482. textElem setText( Text );
  483. textElem.archived = 0;
  484. return textElem;
  485. }
  486.  
  487. _setPoint( x, y, hAlign, vAlign, xAlign, yAlign )
  488. {
  489. if( hAlign == "middle" || vAlign == "middle" || hAlign == "center" || vAlign == "center" )
  490. adj = "";
  491. else adj = "_adjustable";
  492. if(isdefined(hAlign)) self.horzAlign = hAlign + adj;
  493. if(isdefined(vAlign)) self.vertAlign = vAlign + adj;
  494. if(isdefined(xAlign)) self.alignX = xAlign;
  495. if(isdefined(yAlign)) self.alignY = yAlign;
  496. self.x = x;
  497. self.y = y;
  498. }
  499.  
  500. initMissionData()
  501. {
  502. keys = getArrayKeys( level.killstreakFuncs );
  503. foreach ( key in keys )
  504. self.pers[key] = 0;
  505. self.pers["lastBulletKillTime"] = 0;
  506. self.pers["bulletStreak"] = 0;
  507. self.explosiveInfo = [];
  508. }
  509. playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
  510. {
  511. }
  512. playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
  513. {
  514. }
  515. vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
  516. {
  517. }
  518. waitAndProcessPlayerKilledCallback( data )
  519. {
  520. }
  521. playerAssist()
  522. {
  523. }
  524. useHardpoint( hardpointType )
  525. {
  526. }
  527. roundBegin()
  528. {
  529. }
  530. roundEnd( winner )
  531. {
  532. }
  533. lastManSD()
  534. {
  535. }
  536. healthRegenerated()
  537. {
  538. self.brinkOfDeathKillStreak = 0;
  539. }
  540. resetBrinkOfDeathKillStreakShortly()
  541. {
  542. }
  543. playerSpawned()
  544. {
  545. playerDied();
  546. }
  547. playerDied()
  548. {
  549. self.brinkOfDeathKillStreak = 0;
  550. self.healthRegenerationStreak = 0;
  551. self.pers["MGStreak"] = 0;
  552. }
  553. processChallenge( baseName, progressInc, forceSetProgress )
  554. {
  555. }
  556. giveRankXpAfterWait( baseName,missionStatus )
  557. {
  558. }
  559. getMarksmanUnlockAttachment( baseName, index )
  560. {
  561. return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
  562. }
  563. getWeaponAttachment( weaponName, index )
  564. {
  565. return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
  566. }
  567. masteryChallengeProcess( baseName, progressInc )
  568. {
  569. }
  570. updateChallenges()
  571. {
  572. }
  573. challenge_targetVal( refString, tierId )
  574. {
  575. value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
  576. return int( value );
  577. }
  578. challenge_rewardVal( refString, tierId )
  579. {
  580. value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
  581. return int( value );
  582. }
  583. buildChallegeInfo()
  584. {
  585. level.challengeInfo = [];
  586. tableName = "mp/allchallengesTable.csv";
  587. totalRewardXP = 0;
  588. refString = tableLookupByRow( tableName, 0, 0 );
  589. assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
  590. for ( index = 1; refString != ""; index++ )
  591. {
  592. assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
  593. level.challengeInfo[refString] = [];
  594. level.challengeInfo[refString]["targetval"] = [];
  595. level.challengeInfo[refString]["reward"] = [];
  596. for ( tierId = 1; tierId < 11; tierId++ )
  597. {
  598. targetVal = challenge_targetVal( refString, tierId );
  599. rewardVal = challenge_rewardVal( refString, tierId );
  600. if ( targetVal == 0 )
  601. break;
  602. level.challengeInfo[refString]["targetval"][tierId] = targetVal;
  603. level.challengeInfo[refString]["reward"][tierId] = rewardVal;
  604. totalRewardXP += rewardVal;
  605. }
  606.  
  607. assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
  608. refString = tableLookupByRow( tableName, index, 0 );
  609. }
  610. tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
  611. for ( tierId = 1; tierTable != ""; tierId++ )
  612. {
  613. challengeRef = tableLookupByRow( tierTable, 0, 0 );
  614. for ( challengeId = 1; challengeRef != ""; challengeId++ )
  615. {
  616. requirement = tableLookup( tierTable, 0, challengeRef, 1 );
  617. if ( requirement != "" )
  618. level.challengeInfo[challengeRef]["requirement"] = requirement;
  619. challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
  620. }
  621. tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
  622. }
  623. }
  624. genericChallenge( challengeType, value )
  625. {
  626. }
  627. playerHasAmmo()
  628. {
  629. primaryWeapons = self getWeaponsListPrimaries();
  630. foreach ( primary in primaryWeapons )
  631. {
  632. if ( self GetWeaponAmmoClip( primary ) )
  633. return true;
  634. altWeapon = weaponAltWeaponName( primary );
  635. if ( !isDefined( altWeapon ) || (altWeapon == "none") )
  636. continue;
  637. if ( self GetWeaponAmmoClip( altWeapon ) )
  638. return true;
  639. }
  640. return false;
  641. }
Add Comment
Please, Sign In to add comment