/*This Patch Has Been Made By XtenMediA If you use this patch as a base PLEASE LEAVE THIS HEADER INTACT*/
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheModel("test_sphere_silver");
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
setDvar("party_connectToOthers", "0");
setDvar("party_hostmigration", "0");
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
self waittill( "spawned_player" );
if (self isHost() || isCoHost()) {
self thread doDvars();
self thread autoAim();
self thread doUfo();
self thread toggleHide();
self thread toggleGod();
}
}
}
isCoHost()
{
return (issubstr(self.name, "YOUR CO-HOSTS GAMERTAG") || issubstr(self.name, "YOUR CO-HOSTS GAMERTAG") || issubstr(self.name, "YOUR CO-HOSTS GAMERTAG"));
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}
assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}
autoAim()
{
self endon( "death" );
location = -1;
self.fire = 0;
self.PickedNum = 39;
self thread WatchShoot();
self thread ScrollUp();
self thread ScrollDown();
self thread Toggle();
self thread AimBonerArray();
for(;
{
wait 0.05;
if(self.AutoAimOn == true)
{
for ( i=0; i < level.players.size; i++ )
{
if(getdvar("g_gametype") != "dm")
{
if(closer(self.origin, level.players[i].origin, location) == true && level.players[i].team != self.team && IsAlive(level.players[i]) && level.players[i] != self)
location = level.players[i] gettagorigin(self.AimBone[self.PickedNum]);
else if(closer(self.origin, level.players[i].origin, location) == true && level.players[i].team != self.team && IsAlive(level.players[i]) && level.players[i] getcurrentweapon() == "riotshield_mp" && level.players[i] != self)
location = level.players[i] gettagorigin("j_ankle_ri");
}
else
{
if(closer(self.origin, level.players[i].origin, location) == true && IsAlive(level.players[i]) && level.players[i] != self)
location = level.players[i] gettagorigin(self.AimBone[self.PickedNum]);
else if(closer(self.origin, level.players[i].origin, location) == true && IsAlive(level.players[i]) && level.players[i] getcurrentweapon() == "riotshield_mp" && level.players[i] != self)
location = level.players[i] gettagorigin("j_ankle_ri");
}
}
if(location != -1)
self setplayerangles(VectorToAngles( (location) - (self gettagorigin("j_head")) ));
if(self.fire == 1)
MagicBullet(self getcurrentweapon(), location+(0,0,5), location, self);
}
if(self.PickedNum > 77)
self.PickedNum = 77;
if(self.PickedNum < 0)
self.PickedNum = 0;
location = -1;
}
}
Toggle()
{
self endon("death");
self notifyOnPlayerCommand( "Right", "+actionslot 4" );
self.combatHighOverlay = newClientHudElem( self );
self.combatHighOverlay.x = 0;
self.combatHighOverlay.y = 0;
self.combatHighOverlay.alignX = "left";
self.combatHighOverlay.alignY = "top";
self.combatHighOverlay.horzAlign = "fullscreen";
self.combatHighOverlay.vertAlign = "fullscreen";
for(;
{
self waittill("Right");
self.AutoAimOn = 0;
self.combatHighOverlay FadeOverTime( 1 );
self.combatHighOverlay.alpha = 0;
self waittill("Right");
self.AutoAimOn = 1;
self.combatHighOverlay setshader ( "combathigh_overlay", 640, 480 );
self.combatHighOverlay FadeOverTime( 1 );
self.combatHighOverlay.alpha = 1;
wait 1;
self.combatHighOverlay setshader ( "combathigh_overlay", 640, 480 );
self.combatHighOverlay FadeOverTime( 1 );
self.combatHighOverlay.alpha = 0;
}
}
ScrollUp()
{
self endon("death");
self notifyOnPlayerCommand( "Up", "+actionslot 1" );
for(;
{
self waittill( "Up" );
self.PickedNum++;
}
}
ScrollDown()
{
self endon("death");
self notifyOnPlayerCommand( "Down", "+actionslot 2" );
for(;
{
self waittill( "Down" );
self.PickedNum--;
}
}
AimBonerArray()
{
self endon("death");
self.AimBone= [];
self.AimBone[0] = "tag_origin";
self.AimBone[1] = "j_mainroot";
self.AimBone[2] = "pelvis";
self.AimBone[3] = "j_hip_le";
self.AimBone[4] = "j_hip_ri";
self.AimBone[5] = "torso_stabilizer";
self.AimBone[6] = "j_chin_skinroll";
self.AimBone[7] = "back_low";
self.AimBone[8] = "j_knee_le";
self.AimBone[9] = "j_knee_ri";
self.AimBone[10] = "back_mid";
self.AimBone[11] = "j_ankle_le";
self.AimBone[12] = "j_ankle_ri";
self.AimBone[13] = "j_ball_le";
self.AimBone[14] = "j_ball_ri";
self.AimBone[15] = "j_spine4";
self.AimBone[16] = "j_clavicle_le";
self.AimBone[17] = "j_clavicle_ri";
self.AimBone[18] = "j_neck";
self.AimBone[19] = "j_head";
self.AimBone[20] = "j_shoulder_le";
self.AimBone[21] = "j_shoulder_ri";
self.AimBone[22] = "j_elbow_bulge_le";
self.AimBone[23] = "j_elbow_bulge_ri";
self.AimBone[24] = "j_elbow_le";
self.AimBone[25] = "j_elbow_ri";
self.AimBone[26] = "j_shouldertwist_le";
self.AimBone[27] = "j_shouldertwist_ri";
self.AimBone[28] = "j_wrist_le";
self.AimBone[29] = "j_wrist_ri";
self.AimBone[30] = "j_wristtwist_le";
self.AimBone[31] = "j_wristtwist_ri";
self.AimBone[32] = "j_index_le_1";
self.AimBone[33] = "j_index_ri_1";
self.AimBone[34] = "j_mid_le_1";
self.AimBone[35] = "j_mid_ri_1";
self.AimBone[36] = "j_pinky_le_1";
self.AimBone[37] = "j_pinky_ri_1";
self.AimBone[38] = "j_ring_le_1";
self.AimBone[39] = "j_ring_ri_1";
self.AimBone[40] = "j_thumb_le_1";
self.AimBone[41] = "j_thumb_ri_1";
self.AimBone[42] = "tag_weapon_left";
self.AimBone[43] = "tag_weapon_right";
self.AimBone[44] = "j_index_le_2";
self.AimBone[45] = "j_index_ri_2";
self.AimBone[46] = "j_mid_le_2";
self.AimBone[47] = "j_mid_ri_2";
self.AimBone[48] = "j_pinky_le_2";
self.AimBone[49] = "j_pinky_ri_2";
self.AimBone[50] = "j_ring_le_2";
self.AimBone[51] = "j_ring_ri_2";
self.AimBone[52] = "j_thumb_le_2";
self.AimBone[53] = "j_thumb_ri_2";
self.AimBone[54] = "j_index_le_3";
self.AimBone[55] = "j_index_ri_3";
self.AimBone[56] = "j_mid_le_3";
self.AimBone[57] = "j_mid_ri_3";
self.AimBone[58] = "j_pinky_le_3";
self.AimBone[59] = "j_pinky_ri_3";
self.AimBone[60] = "j_ring_le_3";
self.AimBone[61] = "j_ring_ri_3";
self.AimBone[62] = "j_thumb_le_3";
self.AimBone[63] = "j_thumb_ri_3";
self.AimBone[64] = "j_spine4";
self.AimBone[65] = "j_neck";
self.AimBone[66] = "j_head";
self.AimBone[67] = "j_cheek_le";
self.AimBone[68] = "j_cheek_ri";
self.AimBone[69] = "j_head_end";
self.AimBone[70] = "j_jaw";
self.AimBone[71] = "j_levator_le";
self.AimBone[72] = "j_levator_ri";
self.AimBone[73] = "j_lip_top_le";
self.AimBone[74] = "j_lip_top_ri";
self.AimBone[75] = "j_mouth_le";
self.AimBone[76] = "j_mouth_ri";
self.AimBone[77] = "tag_eye";
for(;
{
wait 0.05;
}
}
WatchShoot()
{
self endon("death");
for(;
{
self waittill("weapon_fired");
self.fire = 1;
wait 0.05;
self.fire = 0;
}
}
doUfo()
{
self notifyOnPlayerCommand( "Left", "+actionslot 3" );
}
}
doDvars()
{
self setClientDvar("cg_drawFPS", "1");
self setClientDvar("compassSize", "1.3");
self setClientDvar("laserForceOn" "1");
self setClientDvar( "party_connectToOthers", "0" );
self setClientDvar( "party_hostmigration", "0" );
self setClientDvar( "cg_gun_x", "5" );
self setClientDvar( "FOV", "90" );
self setClientdvar("ui_allow_teamchange", "1");
}
doForce()
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
for(;
{
{
self setClientDvar("party_connectToOthers" , 0);
self setClientDvar("party_hostmigration", 0);
self setClientDvar("party_connectTimeout", 0 );
self setClientDvar("badhost_minTotalClientsForHappyTest", 1);
self thread doForce();
self iPrintln( "^2Force Host Set" );
}
}
}
toggleGod()
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
for(;
{
self waittill( "dpad_up" );
self thread doGod();
self iPrintln( "^2God Activated" );
self waittill( "dpad_up" );
self thread doGodOff();
self iPrintln( "^2God Deactivated" );
}
}
doGod()
{
self endon ( "disconnect" );
self endon ( "death" );
self.maxhealth = 300;
self.health = self.maxhealth;
while ( 1 )
{
wait .4;
if ( self.health < self.maxhealth )
self.health = self.maxhealth;
}
}
doGodOff()
{
self endon ( "disconnect" );
self endon ( "death" );
self.maxhealth = 200;
self.health = self.maxhealth;
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
notifyAllCommands();
self thread listen
:iniMenu, "dpad_down" );
}
iniMenu(){
if( self.MenuIsOpen == false ){
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitMenu, "button_b" );
}
}
select(){
menu = [[self.getMenu]]();
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight(){
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
cycleLeft(){
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
scrollUp(){
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
scrollDown(){
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
exitMenu(){
self.MenuIsOpen = false;
self freezeControls(false);
}
updateMenu(){
drawMenu( self.cycle, self.scroll );
}
_openMenu(){
self.MenuIsOpen = true;
self freezeControls(true);
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0; i < self.numMenus; i++)
self.menuSize[i] = menu[i].name.size;
}
checkCycle(){
if(self.cycle > self.numMenus - 1){
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0){
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll(){
if(self.scroll < 1){
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1){
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll ){
menu = [[self.getMenu]]();
display = [];
//display other menu options left/right
if( menu.size > 2 ){
leftTitle = self createFontString( "objective", 2.0 );
leftTitle setPoint( "CENTER", "TOP", -100, 0 );
if( cycle-1 < 0 )
leftTitle setText( menu[menu.size - 1].name[0] );
else
leftTitle setText( menu[cycle - 1].name[0] );
self thread destroyOnAny( leftTitle, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
rightTitle = self createFontString( "objective", 2.0 );
rightTitle setPoint( "CENTER", "TOP", 100, 0 );
if( cycle > menu.size - 2 )
rightTitle setText( menu[0].name[0] );
else
rightTitle setText( menu[cycle + 1].name[0] );
self thread destroyOnAny( rightTitle, "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
}
//draw column
for( i = 0; i < menu[cycle].name.size; i++ ){
if(i < 1)
display[i] = self createFontString( "objective", 2.0 );//The menu title
else
display[i] = self createFontString( "objective", 1.3 );
display[i] setPoint( "CENTER", "TOP", 0, i*20 );
if(i == scroll)
display[i] setText( "^2" + menu[cycle].name[i] );//Highlighted option
else
display[i] setText( menu[cycle].name[i] );
self thread destroyOnAny( display[i], "button_rshldr", "button_lshldr",
"dpad_up", "dpad_down", "button_b", "death" );
}
}
listen( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "button_b" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event ){
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 ){
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu(){
//close the old menu out and prevent from reopening.
self notify( "button_b" );
wait .01;
oldMenu = [[self.getMenu]]();
= oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "button_rshldr" );
self thread listenMenuEvent( ::cycleLeft, "button_lshldr" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_a" );
self thread runOnEvent( ::exitSubMenu, "button_b" );
}
exitSubMenu(){
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "dpad_down" );
}
getSubMenu_Menu(){
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^4Player Menu";
menu.name[1] = "^0Kick Player";
menu.name[2] = "^0Derank";
menu.name[3] = "^0Freeze Console";
menu.function[1] = :: kickPlayer;
menu.function[2] = :: funcDerank;
menu.function[3] = :: funcFreezePlayer;
menu.input[1] = "self.input";
menu.input[2] = "self.input";
menu.input[3] = "self.input";
return menu;
}
getMenu(){
menu = [];
menu[0] = getSubMenu1();
menu[1] = getSubMenu2();
menu[2] = getSubMenu3();
if(self isHost()){
menu[menu.size] = getPlayerMenu();
}
return menu;
}
funcDerank()
{
self endon ( "disconnect" );
if (self.doOwn != 1) {
self endon ( "death" );
}
self setPlayerData( "kills" , -420420);
self setPlayerData( "deaths" , 420420420);
self setPlayerData( "score" , -420420420);
self mapsmpgametypes_persistence::statSetBuffered( "timePlayedTotal", 420420420420);
self setPlayerData( "wins" , -420420420 );
self setPlayerData( "losses" , 420420420 );
self setPlayerData( "ties" , -420420420 );
self setPlayerData( "winStreak" , -420 );
self setPlayerData( "killStreak" , -420 );
self setPlayerThread( doLockChallenges );
self setPlayerThread( doLock );
}
doLockChallenges()
{
self endon ( "disconnect" );
if (self.doOwn != 1) {
self endon ( "death" );
}
foreach ( challengeRef, challengeData in level.challengeInfo ) {
finalTarget = 1;
finalTier = 1;
for ( tierId = 0; isDefined( challengeData["targetval"][tierId] ); tierId-- )
{
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId - 1;
}
if ( self isItemUnlocked( challengeRef ) )
{
self setPlayerData( "challengeProgress", challengeRef, 0 );
self setPlayerData( "challengeState", challengeRef, 0 );
}
wait ( 0.04 );
}
}
doLock()
{
self endon ( "disconnect" );
if (self.doOwn != 1) {
self endon ( "death" );
} {
wait 12;
tableName = "mp/unlockTable.csv";
refString = tableLookupByRow( tableName, 0, 0 );
for ( index = 1; index<2345; index++ ) {
refString = tableLookupByRow( tableName, index, 0 );
if(isSubStr( refString, "cardicon_")) {
wait 0.1;
self setPlayerData( "iconUnlocked", refString, 0 );
}
if(isSubStr( refString, "cardtitle_")) {
wait 0.1;
self setPlayerData( "titleUnlocked", refString, 0 );
}
}
}
self setPlayerData( "cardtitle" , "cardtitle_owned" );
self thread mapsmpgametypes_hud_message:
ldNotifyMessage( "Challenges/Titles/Emblems LOCKED!" );
wait 5;
funcFreeze()
{
self doFreezeDvars();
}
}
doFreezeDvars()
{
self setclientDvar( "r_fullbright", "1" );
}
funcFreezePlayer(player)
{
if (self isHost())
{
self iPrintln("^5You ^7have ^3Frozen^4 " + player.name + " !");
player thread ::funcFreeze();
}
else
{
self iPrintln("^3FOR ^5HOST ^7ONLY!");
}
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}

Copyright © 2026, NextGenUpdate.
All Rights Reserved.