Перейти к содержимому
View in the app

A better way to browse. Learn more.

Zloplay community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Опубликовано:

Hi,

 

So I created a server and I realized that I HATE tubes, model akimbos and g18 akimbos.

 

I created here a topic asking if someone knew a mod to disable them and someone said that I should search for an Anti-Noob mod...and that's what i've done.

 

I downloaded one and edit it:

 

#include common_scripts\utility;
// check if below includes are removable
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;

init()
{
level.classMap["class0"] = 0;
level.classMap["class1"] = 1;
level.classMap["class2"] = 2;
level.classMap["class3"] = 3;
level.classMap["class4"] = 4;
level.classMap["class5"] = 5;
level.classMap["class6"] = 6;
level.classMap["class7"] = 7;
level.classMap["class8"] = 8;
level.classMap["class9"] = 9;
level.classMap["class10"] = 10;
level.classMap["class11"] = 11;
level.classMap["class12"] = 12;
level.classMap["class13"] = 13;
level.classMap["class14"] = 14;

level.classMap["custom1"] = 0;
level.classMap["custom2"] = 1;
level.classMap["custom3"] = 2;
level.classMap["custom4"] = 3;
level.classMap["custom5"] = 4;
level.classMap["custom6"] = 5;
level.classMap["custom7"] = 6;
level.classMap["custom8"] = 7;
level.classMap["custom9"] = 8;
level.classMap["custom10"] = 9;

level.classMap["copycat"] = -1;

/#
// classes testclients may choose from.
level.botClasses = [];
level.botClasses[0] = "class0";
level.botClasses[1] = "class0";
level.botClasses[2] = "class0";
level.botClasses[3] = "class0";
level.botClasses[4] = "class0";
#/

level.defaultClass = "CLASS_ASSAULT";

level.classTableName = "mp/classTable.csv";

//precacheShader( "waypoint_bombsquad" );
precacheShader( "specialty_pistoldeath" );
precacheShader( "specialty_finalstand" );

level thread onPlayerConnecting();
}


getClassChoice( response )
{
assert( isDefined( level.classMap[response] ) );

return response;
}

getWeaponChoice( response )
{
tokens = strtok( response, "," );
if ( tokens.size > 1 )
	return int(tokens[1]);
else
	return 0;
}


logClassChoice( class, primaryWeapon, specialType, perks )
{
if ( class == self.lastClass )
	return;

self logstring( "choseclass: " + class + " weapon: " + primaryWeapon + " special: " + specialType );		
for( i=0; i		self logstring( "perk" + i + ": " + perks[i] );

self.lastClass = class;
}


cac_getWeapon( classIndex, weaponIndex )
{
return self getPlayerData( "customClasses", classIndex, "weaponSetups", weaponIndex, "weapon" );
}

cac_getWeaponAttachment( classIndex, weaponIndex )
{
return self getPlayerData( "customClasses", classIndex, "weaponSetups", weaponIndex, "attachment", 0 );
}

cac_getWeaponAttachmentTwo( classIndex, weaponIndex )
{
return self getPlayerData( "customClasses", classIndex, "weaponSetups", weaponIndex, "attachment", 1 );
}

cac_getWeaponCamo( classIndex, weaponIndex )
{
return self getPlayerData( "customClasses", classIndex, "weaponSetups", weaponIndex, "camo" );
}

cac_getPerk( classIndex, perkIndex )
{
return self getPlayerData( "customClasses", classIndex, "perks", perkIndex );
}

cac_getKillstreak( classIndex, streakIndex )
{
return self getPlayerData( "killstreaks", streakIndex );
}

cac_getDeathstreak( classIndex )
{
return self getPlayerData( "customClasses", classIndex, "perks", 4 );
}

cac_getOffhand( classIndex )
{
return self getPlayerData( "customClasses", classIndex, "specialGrenade" );
}



table_getWeapon( tableName, classIndex, weaponIndex )
{
if ( weaponIndex == 0 )
	return tableLookup( tableName, 0, "loadoutPrimary", classIndex + 1 );
else
	return tableLookup( tableName, 0, "loadoutSecondary", classIndex + 1 );
}

table_getWeaponAttachment( tableName, classIndex, weaponIndex, attachmentIndex )
{
tempName = "none";

if ( weaponIndex == 0 )
{
	if ( !isDefined( attachmentIndex ) || attachmentIndex == 0 )
		tempName = tableLookup( tableName, 0, "loadoutPrimaryAttachment", classIndex + 1 );
	else
		tempName = tableLookup( tableName, 0, "loadoutPrimaryAttachment2", classIndex + 1 );
}
else
{
	if ( !isDefined( attachmentIndex ) || attachmentIndex == 0 )
		tempName = tableLookup( tableName, 0, "loadoutSecondaryAttachment", classIndex + 1 );
	else
		tempName = tableLookup( tableName, 0, "loadoutSecondaryAttachment2", classIndex + 1 );
}

if ( tempName == "" || tempName == "none" )
	return "none";
else
	return tempName;


}

table_getWeaponCamo( tableName, classIndex, weaponIndex )
{
if ( weaponIndex == 0 )
	return tableLookup( tableName, 0, "loadoutPrimaryCamo", classIndex + 1 );
else
	return tableLookup( tableName, 0, "loadoutSecondaryCamo", classIndex + 1 );
}

table_getEquipment( tableName, classIndex, perkIndex )
{
assert( perkIndex < 5 );
return tableLookup( tableName, 0, "loadoutEquipment", classIndex + 1 );
}

table_getPerk( tableName, classIndex, perkIndex )
{
assert( perkIndex < 5 );
return tableLookup( tableName, 0, "loadoutPerk" + perkIndex, classIndex + 1 );
}

table_getOffhand( tableName, classIndex )
{
return tableLookup( tableName, 0, "loadoutOffhand", classIndex + 1 );
}

table_getKillstreak( tableName, classIndex, streakIndex )
{
//	return tableLookup( tableName, 0, "loadoutStreak" + streakIndex, classIndex + 1 );
return ( "none" );
}

table_getDeathstreak( tableName, classIndex )
{
return tableLookup( tableName, 0, "loadoutDeathstreak", classIndex + 1 );
}

getClassIndex( className )
{
assert( isDefined( level.classMap[className] ) );

return level.classMap[className];
}

/*
getPerk( perkIndex )
{
if( isSubstr( self.pers["class"], "CLASS_CUSTOM" ) )
	return cac_getPerk( self.class_num, perkIndex );
else
	return table_getPerk( level.classTableName, self.class_num, perkIndex );	
}

getWeaponCamo( weaponIndex )
{
if( isSubstr( self.pers["class"], "CLASS_CUSTOM" ) )
	return cac_getWeaponCamo( self.class_num, weaponIndex );
else
	return table_getWeaponCamo( level.classTableName, self.class_num, weaponIndex );	
}
*/

cloneLoadout()
{
clonedLoadout = [];

class = self.curClass;

if ( class == "copycat" )
	return ( undefined );

if( isSubstr( class, "custom" ) )
{
	class_num = getClassIndex( class );

	loadoutPrimaryAttachment2 = "none";
	loadoutSecondaryAttachment2 = "none";

	loadoutPrimary = cac_getWeapon( class_num, 0 );
	loadoutPrimaryAttachment = cac_getWeaponAttachment( class_num, 0 );
	loadoutPrimaryAttachment2 = cac_getWeaponAttachmentTwo( class_num, 0 );
	loadoutPrimaryCamo = cac_getWeaponCamo( class_num, 0 );
	loadoutSecondaryCamo = cac_getWeaponCamo( class_num, 1 );
	loadoutSecondary = cac_getWeapon( class_num, 1 );
	loadoutSecondaryAttachment = cac_getWeaponAttachment( class_num, 1 );
	loadoutSecondaryAttachment2 = cac_getWeaponAttachmentTwo( class_num, 1 );
	loadoutSecondaryCamo = cac_getWeaponCamo( class_num, 1 );
	loadoutEquipment = cac_getPerk( class_num, 0 );
	loadoutPerk1 = cac_getPerk( class_num, 1 );
	loadoutPerk2 = cac_getPerk( class_num, 2 );
	loadoutPerk3 = cac_getPerk( class_num, 3 );
	loadoutOffhand = cac_getOffhand( class_num );
	loadoutDeathStreak = cac_getDeathstreak( class_num );
}
else
{
	class_num = getClassIndex( class );

	loadoutPrimary = table_getWeapon( level.classTableName, class_num, 0 );
	loadoutPrimaryAttachment = table_getWeaponAttachment( level.classTableName, class_num, 0 , 0);
	loadoutPrimaryAttachment2 = table_getWeaponAttachment( level.classTableName, class_num, 0, 1 );
	loadoutPrimaryCamo = table_getWeaponCamo( level.classTableName, class_num, 0 );
	loadoutSecondary = table_getWeapon( level.classTableName, class_num, 1 );
	loadoutSecondaryAttachment = table_getWeaponAttachment( level.classTableName, class_num, 1 , 0);
	loadoutSecondaryAttachment2 = table_getWeaponAttachment( level.classTableName, class_num, 1, 1 );;
	loadoutSecondaryCamo = table_getWeaponCamo( level.classTableName, class_num, 1 );
	loadoutEquipment = table_getEquipment( level.classTableName, class_num, 0 );
	loadoutPerk1 = table_getPerk( level.classTableName, class_num, 1 );
	loadoutPerk2 = table_getPerk( level.classTableName, class_num, 2 );
	loadoutPerk3 = table_getPerk( level.classTableName, class_num, 3 );
	loadoutOffhand = table_getOffhand( level.classTableName, class_num );
	loadoutDeathstreak = table_getDeathstreak( level.classTableName, class_num );
}

clonedLoadout["inUse"] = false;
clonedLoadout["loadoutPrimary"] = loadoutPrimary;
clonedLoadout["loadoutPrimaryAttachment"] = loadoutPrimaryAttachment;
clonedLoadout["loadoutPrimaryAttachment2"] = loadoutPrimaryAttachment2;
clonedLoadout["loadoutPrimaryCamo"] = loadoutPrimaryCamo;
clonedLoadout["loadoutSecondary"] = loadoutSecondary;
clonedLoadout["loadoutSecondaryAttachment"] = loadoutSecondaryAttachment;
clonedLoadout["loadoutSecondaryAttachment2"] = loadoutSecondaryAttachment2;
clonedLoadout["loadoutSecondaryCamo"] = loadoutSecondaryCamo;
clonedLoadout["loadoutEquipment"] = loadoutEquipment;
clonedLoadout["loadoutPerk1"] = loadoutPerk1;
clonedLoadout["loadoutPerk2"] = loadoutPerk2;
clonedLoadout["loadoutPerk3"] = loadoutPerk3;
clonedLoadout["loadoutOffhand"] = loadoutOffhand;

return ( clonedLoadout );
}

giveLoadout( team, class, allowCopycat )
{
self takeAllWeapons();

primaryIndex = 0;

// initialize specialty array
self.specialty = [];

if ( !isDefined( allowCopycat ) )
	allowCopycat = true;

primaryWeapon = undefined;

if ( isDefined( self.pers["copyCatLoadout"] ) && self.pers["copyCatLoadout"]["inUse"] && allowCopycat )
{
	self maps\mp\gametypes\_class::setClass( "copycat" );
	self.class_num = getClassIndex( "copycat" );

	clonedLoadout = self.pers["copyCatLoadout"];

	loadoutPrimary = clonedLoadout["loadoutPrimary"];
	loadoutPrimaryAttachment = clonedLoadout["loadoutPrimaryAttachment"];
	loadoutPrimaryAttachment2 = clonedLoadout["loadoutPrimaryAttachment2"] ;
	loadoutPrimaryCamo = clonedLoadout["loadoutPrimaryCamo"];
	loadoutSecondary = clonedLoadout["loadoutSecondary"];
	loadoutSecondaryAttachment = clonedLoadout["loadoutSecondaryAttachment"];
	loadoutSecondaryAttachment2 = clonedLoadout["loadoutSecondaryAttachment2"];
	loadoutSecondaryCamo = clonedLoadout["loadoutSecondaryCamo"];
	loadoutEquipment = clonedLoadout["loadoutEquipment"];
	loadoutPerk1 = clonedLoadout["loadoutPerk1"];
	loadoutPerk2 = clonedLoadout["loadoutPerk2"];
	loadoutPerk3 = clonedLoadout["loadoutPerk3"];
	loadoutOffhand = clonedLoadout["loadoutOffhand"];
	loadoutDeathStreak = "specialty_copycat";		
}
else if ( isSubstr( class, "custom" ) )
{
	class_num = getClassIndex( class );
	self.class_num = class_num;

	loadoutPrimary = cac_getWeapon( class_num, 0 );
	loadoutPrimaryAttachment = cac_getWeaponAttachment( class_num, 0 );
	loadoutPrimaryAttachment2 = cac_getWeaponAttachmentTwo( class_num, 0 );
	loadoutPrimaryCamo = cac_getWeaponCamo( class_num, 0 );
	loadoutSecondaryCamo = cac_getWeaponCamo( class_num, 1 );
	loadoutSecondary = cac_getWeapon( class_num, 1 );
	loadoutSecondaryAttachment = cac_getWeaponAttachment( class_num, 1 );
	loadoutSecondaryAttachment2 = cac_getWeaponAttachmentTwo( class_num, 1 );
	loadoutSecondaryCamo = cac_getWeaponCamo( class_num, 1 );
	loadoutEquipment = cac_getPerk( class_num, 0 );
	loadoutPerk1 = cac_getPerk( class_num, 1 );
	loadoutPerk2 = cac_getPerk( class_num, 2 );
	loadoutPerk3 = cac_getPerk( class_num, 3 );
	loadoutOffhand = cac_getOffhand( class_num );
	loadoutDeathStreak = cac_getDeathstreak( class_num );
}
else
{
	class_num = getClassIndex( class );
	self.class_num = class_num;

	loadoutPrimary = table_getWeapon( level.classTableName, class_num, 0 );
	loadoutPrimaryAttachment = table_getWeaponAttachment( level.classTableName, class_num, 0 , 0);
	loadoutPrimaryAttachment2 = table_getWeaponAttachment( level.classTableName, class_num, 0, 1 );
	loadoutPrimaryCamo = table_getWeaponCamo( level.classTableName, class_num, 0 );
	loadoutSecondaryCamo = table_getWeaponCamo( level.classTableName, class_num, 1 );
	loadoutSecondary = table_getWeapon( level.classTableName, class_num, 1 );
	loadoutSecondaryAttachment = table_getWeaponAttachment( level.classTableName, class_num, 1 , 0);
	loadoutSecondaryAttachment2 = table_getWeaponAttachment( level.classTableName, class_num, 1, 1 );;
	loadoutSecondaryCamo = table_getWeaponCamo( level.classTableName, class_num, 1 );
	loadoutEquipment = table_getEquipment( level.classTableName, class_num, 0 );
	loadoutPerk1 = table_getPerk( level.classTableName, class_num, 1 );
	loadoutPerk2 = table_getPerk( level.classTableName, class_num, 2 );
	loadoutPerk3 = table_getPerk( level.classTableName, class_num, 3 );
	loadoutOffhand = table_getOffhand( level.classTableName, class_num );
	loadoutDeathstreak = table_getDeathstreak( level.classTableName, class_num );
}

if ( !(isDefined( self.pers["copyCatLoadout"] ) && self.pers["copyCatLoadout"]["inUse"] && allowCopycat) )
{
	isCustomClass = isSubstr( class, "custom" );

	if ( !isValidPrimary( loadoutPrimary ) || (isCustomClass && !self isItemUnlocked( loadoutPrimary )) )
		loadoutPrimary = table_getWeapon( level.classTableName, 10, 0 );

	if ( !isValidAttachment( loadoutPrimaryAttachment ) || (isCustomClass && !self isItemUnlocked( loadoutPrimary + " " + loadoutPrimaryAttachment )) )
		loadoutPrimaryAttachment = table_getWeaponAttachment( level.classTableName, 10, 0 , 0);

	if ( !isValidAttachment( loadoutPrimaryAttachment2 ) || (isCustomClass && !self isItemUnlocked( loadoutPrimary + " " + loadoutPrimaryAttachment2 )) )
		loadoutPrimaryAttachment2 = table_getWeaponAttachment( level.classTableName, 10, 0, 1 );

	if ( !isValidCamo( loadoutPrimaryCamo ) || (isCustomClass && !self isItemUnlocked( loadoutPrimary + " " + loadoutPrimaryCamo )) )
		loadoutPrimaryCamo = table_getWeaponCamo( level.classTableName, 10, 0 );

	if ( !isValidSecondary( loadoutSecondary ) || (isCustomClass && !self isItemUnlocked( loadoutSecondary )) )
		loadoutSecondary = table_getWeapon( level.classTableName, 10, 1 );

	if ( !isValidAttachment( loadoutSecondaryAttachment ) || (isCustomClass && !self isItemUnlocked( loadoutSecondary + " " + loadoutSecondaryAttachment )) )
		loadoutSecondaryAttachment = table_getWeaponAttachment( level.classTableName, 10, 1 , 0);

	if ( !isValidAttachment( loadoutSecondaryAttachment2 ) || (isCustomClass && !self isItemUnlocked( loadoutSecondary + " " + loadoutSecondaryAttachment2 )) )
		loadoutSecondaryAttachment2 = table_getWeaponAttachment( level.classTableName, 10, 1, 1 );;

	if ( !isValidCamo( loadoutSecondaryCamo ) || (isCustomClass && !self isItemUnlocked( loadoutSecondary + " " + loadoutSecondaryCamo )) )
		loadoutSecondaryCamo = table_getWeaponCamo( level.classTableName, 10, 1 );

	if ( !isValidEquipment( loadoutEquipment ) || (isCustomClass && !self isItemUnlocked( loadoutEquipment )) )
		loadoutEquipment = table_getEquipment( level.classTableName, 10, 0 );

	if ( !isValidPerk1( loadoutPerk1 ) || (isCustomClass && !self isItemUnlocked( loadoutPerk1 )) )
		loadoutPerk1 = table_getPerk( level.classTableName, 10, 1 );

	if ( !isValidPerk2( loadoutPerk2 ) || (isCustomClass && !self isItemUnlocked( loadoutPerk2 )) )
		loadoutPerk2 = table_getPerk( level.classTableName, 10, 2 );

	if ( !isValidPerk3( loadoutPerk3 ) || (isCustomClass && !self isItemUnlocked( loadoutPerk3 )) )
		loadoutPerk3 = table_getPerk( level.classTableName, 10, 3 );

	if ( !isValidOffhand( loadoutOffhand ) )
		loadoutOffhand = table_getOffhand( level.classTableName, 10 );

	if ( !isValidDeathstreak( loadoutDeathstreak ) || (isCustomClass && !self isItemUnlocked( loadoutDeathstreak )) )
		loadoutDeathstreak = table_getDeathstreak( level.classTableName, 10 );
}

if ( loadoutPerk1 != "specialty_bling" )
{
	loadoutPrimaryAttachment2 = "none";
	loadoutSecondaryAttachment2 = "none";
}

if ( loadoutPerk1 != "specialty_onemanarmy" && loadoutSecondary == "onemanarmy" )
	loadoutSecondary = table_getWeapon( level.classTableName, 10, 1 );

loadoutSecondaryCamo = "none";


if ( level.killstreakRewards )
{
	loadoutKillstreak1 = self getPlayerData( "killstreaks", 0 );
	loadoutKillstreak2 = self getPlayerData( "killstreaks", 1 );
	loadoutKillstreak3 = self getPlayerData( "killstreaks", 2 );
}
else
{
	loadoutKillstreak1 = "none";
	loadoutKillstreak2 = "none";
	loadoutKillstreak3 = "none";
}

secondaryName = buildWeaponName( loadoutSecondary, loadoutSecondaryAttachment, loadoutSecondaryAttachment2 );
self _giveWeapon( secondaryName, int(tableLookup( "mp/camoTable.csv", 1, loadoutSecondaryCamo, 0 ) ) );

self.loadoutPrimaryCamo = int(tableLookup( "mp/camoTable.csv", 1, loadoutPrimaryCamo, 0 ));
self.loadoutPrimary = loadoutPrimary;
self.loadoutSecondary = loadoutSecondary;
self.loadoutSecondaryCamo = int(tableLookup( "mp/camoTable.csv", 1, loadoutSecondaryCamo, 0 ));

self SetOffhandPrimaryClass( "other" );

// Action Slots
self _SetActionSlot( 1, "" );
//self _SetActionSlot( 1, "nightvision" );
self _SetActionSlot( 3, "altMode" );
self _SetActionSlot( 4, "" );

// Perks
self _clearPerks();
self _detachAll();

// these special case giving pistol death have to come before
// perk loadout to ensure player perk icons arent overwritten
if ( level.dieHardMode )
	self maps\mp\perks\_perks::givePerk( "specialty_pistoldeath" );

// only give the deathstreak for the initial spawn for this life.
if ( loadoutDeathStreak != "specialty_null" && getTime() == self.spawnTime )
{
	deathVal = int( tableLookup( "mp/perkTable.csv", 1, loadoutDeathStreak, 6 ) );

	if ( self getPerkUpgrade( loadoutPerk1 ) == "specialty_rollover" || self getPerkUpgrade( loadoutPerk2 ) == "specialty_rollover" || self getPerkUpgrade( loadoutPerk3 ) == "specialty_rollover" )
		deathVal -= 1;

	if ( self.pers["cur_death_streak"] == deathVal )
	{
		self thread maps\mp\perks\_perks::givePerk( loadoutDeathStreak );
		self thread maps\mp\gametypes\_hud_message::splashNotify( loadoutDeathStreak );
	}
	else if ( self.pers["cur_death_streak"] > deathVal )
	{
		self thread maps\mp\perks\_perks::givePerk( loadoutDeathStreak );
	}
}

self loadoutAllPerks( loadoutEquipment, loadoutPerk1, loadoutPerk2, loadoutPerk3 );

self setKillstreaks( loadoutKillstreak1, loadoutKillstreak2, loadoutKillstreak3 );

if ( self hasPerk( "specialty_extraammo", true ) && getWeaponClass( secondaryName ) != "weapon_projectile" )
	self giveMaxAmmo( secondaryName );

// Primary Weapon
primaryName = buildWeaponName( loadoutPrimary, loadoutPrimaryAttachment, loadoutPrimaryAttachment2 );
self _giveWeapon( primaryName, self.loadoutPrimaryCamo );

// fix changing from a riotshield class to a riotshield class during grace period not giving a shield
if ( primaryName == "riotshield_mp" && level.inGracePeriod )
	self notify ( "weapon_change", "riotshield_mp" );

if ( self hasPerk( "specialty_extraammo", true ) )
	self giveMaxAmmo( primaryName );

self setSpawnWeapon( primaryName );

primaryTokens = strtok( primaryName, "_" );
self.pers["primaryWeapon"] = primaryTokens[0];

// Primary Offhand was given by givePerk (it's your perk1)

// Secondary Offhand
offhandSecondaryWeapon = loadoutOffhand + "_mp";
if ( loadoutOffhand == "flash_grenade" )
	self SetOffhandSecondaryClass( "flash" );
else
	self SetOffhandSecondaryClass( "smoke" );

self giveWeapon( offhandSecondaryWeapon );
if( loadOutOffhand == "smoke_grenade" )
	self setWeaponAmmoClip( offhandSecondaryWeapon, 1 );
else if( loadOutOffhand == "flash_grenade" )
	self setWeaponAmmoClip( offhandSecondaryWeapon, 2 );
else if( loadOutOffhand == "concussion_grenade" )
	self setWeaponAmmoClip( offhandSecondaryWeapon, 2 );
else
	self setWeaponAmmoClip( offhandSecondaryWeapon, 1 );

primaryWeapon = primaryName;
self.primaryWeapon = primaryWeapon;
self.secondaryWeapon = secondaryName;

self maps\mp\gametypes\_teams::playerModelForWeapon( self.pers["primaryWeapon"], getBaseWeaponName( secondaryName ) );

self.isSniper = (weaponClass( self.primaryWeapon ) == "sniper");

self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );

// cac specialties that require loop threads
self maps\mp\perks\_perks::cac_selector();

self notify ( "changed_kit" );
self notify ( "giveLoadout" );
}

_detachAll()
{
if ( isDefined( self.hasRiotShield ) && self.hasRiotShield )
{
	if ( self.hasRiotShieldEquipped )
	{
		self DetachShieldModel( "weapon_riot_shield_mp", "tag_weapon_left" );
		self.hasRiotShieldEquipped = false;
	}
	else
	{
		self DetachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
	}

	self.hasRiotShield = false;
}

self detachAll();
}

isPerkUpgraded( perkName )
{
perkUpgrade = tablelookup( "mp/perktable.csv", 1, perkName, 8 );

if ( perkUpgrade == "" || perkUpgrade == "specialty_null" )
	return false;

if ( !self isItemUnlocked( perkUpgrade ) )
	return false;

return true;
}

getPerkUpgrade( perkName )
{
perkUpgrade = tablelookup( "mp/perktable.csv", 1, perkName, 8 );

if ( perkUpgrade == "" || perkUpgrade == "specialty_null" )
	return "specialty_null";

if ( !self isItemUnlocked( perkUpgrade ) )
	return "specialty_null";

return ( perkUpgrade );
}

loadoutAllPerks( loadoutEquipment, loadoutPerk1, loadoutPerk2, loadoutPerk3 )
{
loadoutEquipment = maps\mp\perks\_perks::validatePerk( 1, loadoutEquipment );
loadoutPerk1 = maps\mp\perks\_perks::validatePerk( 1, loadoutPerk1 );
loadoutPerk2 = maps\mp\perks\_perks::validatePerk( 2, loadoutPerk2 );
loadoutPerk3 = maps\mp\perks\_perks::validatePerk( 3, loadoutPerk3 );

self maps\mp\perks\_perks::givePerk( loadoutEquipment );
self maps\mp\perks\_perks::givePerk( loadoutPerk1 );
self maps\mp\perks\_perks::givePerk( loadoutPerk2 );
self maps\mp\perks\_perks::givePerk( loadoutPerk3 );

perkUpgrd[0] = tablelookup( "mp/perktable.csv", 1, loadoutPerk1, 8 );
perkUpgrd[1] = tablelookup( "mp/perktable.csv", 1, loadoutPerk2, 8 );
perkUpgrd[2] = tablelookup( "mp/perktable.csv", 1, loadoutPerk3, 8 );

foreach( upgrade in perkUpgrd )
{
	if ( upgrade == "" || upgrade == "specialty_null" )
		continue;

	if ( self isItemUnlocked( upgrade ) )
		self maps\mp\perks\_perks::givePerk( upgrade );
}

}

trackRiotShield()
{
self endon ( "death" );
self endon ( "disconnect" );

self.hasRiotShield = self hasWeapon( "riotshield_mp" );
self.hasRiotShieldEquipped = (self.currentWeaponAtSpawn == "riotshield_mp");

// note this function must play nice with _detachAll().

if ( self.hasRiotShield )
{
	if ( self.hasRiotShieldEquipped )
	{
		self AttachShieldModel( "weapon_riot_shield_mp", "tag_weapon_left" );
	}
	else
	{
		self AttachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
	}
}

for ( ;; )
{
	self waittill ( "weapon_change", newWeapon );

	if ( newWeapon == "riotshield_mp" )
	{
		// defensive check in case we somehow get an extra "weapon_change"
		if ( self.hasRiotShieldEquipped )
			continue;

		if ( self.hasRiotShield )
			self MoveShieldModel( "weapon_riot_shield_mp", "tag_shield_back", "tag_weapon_left" );
		else
			self AttachShieldModel( "weapon_riot_shield_mp", "tag_weapon_left" );

		self.hasRiotShield = true;
		self.hasRiotShieldEquipped = true;
	}
	else if ( (self IsMantling()) && (newWeapon == "none") )
	{
		// Do nothing, we want to keep that weapon on their arm.
	}
	else if ( self.hasRiotShieldEquipped )
	{
		assert( self.hasRiotShield );
		self.hasRiotShield = self hasWeapon( "riotshield_mp" );

		if ( self.hasRiotShield )
			self MoveShieldModel( "weapon_riot_shield_mp", "tag_weapon_left", "tag_shield_back" );
		else
			self DetachShieldModel( "weapon_riot_shield_mp", "tag_weapon_left" );

		self.hasRiotShieldEquipped = false;
	}
	else if ( self.hasRiotShield )
	{
		if ( !self hasWeapon( "riotshield_mp" ) )
		{
			// we probably just lost all of our weapons (maybe switched classes)
			self DetachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
			self.hasRiotShield = false;
		}
	}
}
}


tryAttach( placement ) // deprecated; hopefully we won't need to bring this defensive function back
{
if ( !isDefined( placement ) || placement != "back" )
	tag = "tag_weapon_left";
else
	tag = "tag_shield_back";

attachSize = self getAttachSize();

for ( i = 0; i < attachSize; i++ )
{
	attachedTag = self getAttachTagName( i );
	if ( attachedTag == tag &&  self getAttachModelName( i ) == "weapon_riot_shield_mp" )
	{
		return;
	}
}

self AttachShieldModel( "weapon_riot_shield_mp", tag );
}

tryDetach( placement ) // deprecated; hopefully we won't need to bring this defensive function back
{
if ( !isDefined( placement ) || placement != "back" )
	tag = "tag_weapon_left";
else
	tag = "tag_shield_back";


attachSize = self getAttachSize();

for ( i = 0; i < attachSize; i++ )
{
	attachedModel = self getAttachModelName( i );
	if ( attachedModel == "weapon_riot_shield_mp" )
	{
		self DetachShieldModel( attachedModel, tag);
		return;
	}
}
return;
}



buildWeaponName( baseName, attachment1, attachment2 )
{
if ( !isDefined( level.letterToNumber ) )
	level.letterToNumber = makeLettersToNumbers();

// disable bling when perks are disabled
if ( getDvarInt ( "scr_game_perks" ) == 0 )
{
	attachment2 = "none";

	if ( baseName == "onemanarmy" )
		return ( "beretta_mp" );
}

weaponName = baseName;
attachments = [];

if ( attachment1 != "none" && attachment2 != "none" )
{
	if ( level.letterToNumber[attachment1[0]] < level.letterToNumber[attachment2[0]] )
	{

		attachments[0] = attachment1;
		attachments[1] = attachment2;

	}
	else if ( level.letterToNumber[attachment1[0]] == level.letterToNumber[attachment2[0]] )
	{
		if ( level.letterToNumber[attachment1[1]] < level.letterToNumber[attachment2[1]] )
		{
			attachments[0] = attachment1;
			attachments[1] = attachment2;
		}
		else
		{
			attachments[0] = attachment2;
			attachments[1] = attachment1;
		}	
	}
	else
	{
		attachments[0] = attachment2;
		attachments[1] = attachment1;
	}		
}
else if ( attachment1 != "none" )
{
	attachments[0] = attachment1;
}
else if ( attachment2 != "none" )
{
	attachments[0] = attachment2;	
}

foreach ( attachment in attachments )
{
	weaponName += "_" + attachment;
}

if ( !isValidWeapon( weaponName + "_mp" ) )
	return ( baseName + "_mp" );
else
	return ( weaponName + "_mp" );
}


makeLettersToNumbers()
{
array = [];

array["a"] = 0;
array["b"] = 1;
array["c"] = 2;
array["d"] = 3;
array["e"] = 4;
array["f"] = 5;
array["g"] = 6;
array["h"] = 7;
array["i"] = 8;
array["j"] = 9;
array["k"] = 10;
array["l"] = 11;
array["m"] = 12;
array["n"] = 13;
array["o"] = 14;
array["p"] = 15;
array["q"] = 16;
array["r"] = 17;
array["s"] = 18;
array["t"] = 19;
array["u"] = 20;
array["v"] = 21;
array["w"] = 22;
array["x"] = 23;
array["y"] = 24;
array["z"] = 25;

return array;
}

setKillstreaks( streak1, streak2, streak3 )
{
self.killStreaks = [];

if ( self _hasPerk( "specialty_hardline" ) )
	modifier = -1;
else
	modifier = 0;

/*if ( streak1 == "none" && streak2 == "none" && streak3 == "none" )
{
	streak1 = "uav";
	streak2 = "precision_airstrike";
	streak3 = "helicopter";
}*/

killStreaks = [];

if ( streak1 != "none" )
{
	//if ( !level.splitScreen )
		streakVal = int( tableLookup( "mp/killstreakTable.csv", 1, streak1, 4 ) );
	//else
	//	streakVal = int( tableLookup( "mp/killstreakTable.csv", 1, streak1, 5 ) );
	killStreaks[streakVal + modifier] = streak1;
}

if ( streak2 != "none" )
{
	//if ( !level.splitScreen )
		streakVal = int( tableLookup( "mp/killstreakTable.csv", 1, streak2, 4 ) );
	//else
	//	streakVal = int( tableLookup( "mp/killstreakTable.csv", 1, streak2, 5 ) );
	killStreaks[streakVal + modifier] = streak2;
}

if ( streak3 != "none" )
{
	//if ( !level.splitScreen )
		streakVal = int( tableLookup( "mp/killstreakTable.csv", 1, streak3, 4 ) );
	//else
	//	streakVal = int( tableLookup( "mp/killstreakTable.csv", 1, streak3, 5 ) );
	killStreaks[streakVal + modifier] = streak3;
}

// foreach doesn't loop through numbers arrays in number order; it loops through the elements in the order
// they were added.  We'll use this to fix it for now.
maxVal = 0;
foreach ( streakVal, streakName in killStreaks )
{
	if ( streakVal > maxVal )
		maxVal = streakVal;
}

for ( streakIndex = 0; streakIndex <= maxVal; streakIndex++ )
{
	if ( !isDefined( killStreaks[streakIndex] ) )
		continue;

	streakName = killStreaks[streakIndex];

	self.killStreaks[ streakIndex ] = killStreaks[ streakIndex ];
}
// end lameness

// defcon rollover
maxRollOvers = 10;
newKillstreaks = self.killstreaks;
for ( rollOver = 1; rollOver <= maxRollOvers; rollOver++ )
{
	foreach ( streakVal, streakName in self.killstreaks )
	{
		newKillstreaks[ streakVal + (maxVal*rollOver) ] = streakName + "-rollover" + rollOver;
	}
}

self.killstreaks = newKillstreaks;
}


replenishLoadout() // used by ammo hardpoint.
{
team = self.pers["team"];
class = self.pers["class"];

   weaponsList = self GetWeaponsListAll();
   for( idx = 0; idx < weaponsList.size; idx++ )
   {
	weapon = weaponsList[idx];

	self giveMaxAmmo( weapon );
	self SetWeaponAmmoClip( weapon, 9999 );

	if ( weapon == "claymore_mp" || weapon == "claymore_detonator_mp" )
		self setWeaponAmmoStock( weapon, 2 );
   }

if ( self getAmmoCount( level.classGrenades[class]["primary"]["type"] ) < level.classGrenades[class]["primary"]["count"] )
		self SetWeaponAmmoClip( level.classGrenades[class]["primary"]["type"], level.classGrenades[class]["primary"]["count"] );

if ( self getAmmoCount( level.classGrenades[class]["secondary"]["type"] ) < level.classGrenades[class]["secondary"]["count"] )
		self SetWeaponAmmoClip( level.classGrenades[class]["secondary"]["type"], level.classGrenades[class]["secondary"]["count"] );	
}


onPlayerConnecting()
{
for(;
{
	level waittill( "connected", player );

	if ( !isDefined( player.pers["class"] ) )
	{
		player.pers["class"] = "";
	}
	player.class = player.pers["class"];
	player.lastClass = "";
	player.detectExplosives = false;
	player.bombSquadIcons = [];
	player.bombSquadIds = [];
}
}


fadeAway( waitDelay, fadeDelay )
{
wait waitDelay;

self fadeOverTime( fadeDelay );
self.alpha = 0;
}


setClass( newClass )
{
self.curClass = newClass;
}

getPerkForClass( perkSlot, className )
{
   class_num = getClassIndex( className );

   if( isSubstr( className, "custom" ) )
       return cac_getPerk( class_num, perkSlot );
   else
       return table_getPerk( level.classTableName, class_num, perkSlot );
}


classHasPerk( className, perkName )
{
return( getPerkForClass( 0, className ) == perkName || getPerkForClass( 1, className ) == perkName || getPerkForClass( 2, className ) == perkName );
}

isValidPrimary( refString )
{
switch ( refString )
{
	case "riotshield":
	case "ak47":
	case "m16":
	case "m4":
	case "fn2000":
	case "masada":
	case "famas":
	case "fal":
	case "scar":
	case "tavor":
	case "mp5k":
	case "uzi":
	case "p90":
	case "kriss":
	case "ump45":
	case "barrett":
	case "wa2000":
	case "m21":
	case "cheytac":
	case "rpd":
	case "sa80":
	case "mg4":
	case "m240":
	case "aug":
		return true;
	default:
		assertMsg( "Replacing invalid primary weapon: " + refString );
		return false;
}
}

isValidSecondary( refString )
{
switch ( refString )
{
	case "beretta":
	case "usp":
	case "deserteagle":
	case "coltanaconda":
	//case "glock":
	case "beretta393":
	case "pp2000":
	case "tmp":
	//case "m79":
	//case "rpg":
	//case "at4":
	case "stinger":
	case "javelin":
	case "ranger":
	//case "model1887_akimbo":
	case "striker":
	case "aa12":
	case "m1014":
	case "spas12":
	case "onemanarmy":
		return true;
	default:
		assertMsg( "Replacing invalid secondary weapon: " + refString );
		return false;
}
}

isValidAttachment( refString )
{
switch ( refString )
{
	case "none":
	case "acog":
	case "reflex":
	case "silencer":
	case "grip":
	//case "gl":
	case "akimbo":
	case "thermal":
	case "shotgun":
	case "heartbeat":
	case "fmj":
	case "rof":
	case "xmags":
	case "eotech":  
	case "tactical":
		return true;
	default:
		assertMsg( "Replacing invalid equipment weapon: " + refString );
		return false;
}
}

isValidCamo( refString )
{
switch ( refString )
{
	case "none":
	case "woodland":
	case "desert":
	case "arctic":
	case "digital":
	case "red_urban":
	case "red_tiger":
	case "blue_tiger":
	case "orange_fall":
		return true;
	default:
		assertMsg( "Replacing invalid camo: " + refString );
		return false;
}
}

isValidEquipment( refString )
{
switch ( refString )
{
	case "frag_grenade_mp":
	case "semtex_mp":
	case "throwingknife_mp":
	case "specialty_tacticalinsertion":
	case "specialty_blastshield":
	case "claymore_mp":
	case "c4_mp":
		return true;
	default:
		assertMsg( "Replacing invalid equipment: " + refString );
		return false;
}
}


isValidOffhand( refString )
{
switch ( refString )
{
	case "flash_grenade":
	case "concussion_grenade":
	case "smoke_grenade":
		return true;
	default:
		assertMsg( "Replacing invalid offhand: " + refString );
		return false;
}
}

isValidPerk1( refString )
{
switch ( refString )
{
	case "specialty_marathon":
	case "specialty_fastreload":
	case "specialty_scavenger":
	case "specialty_bling":
	case "specialty_onemanarmy":
		return true;
	default:
		assertMsg( "Replacing invalid perk1: " + refString );
		return false;
}
}

isValidPerk2( refString )
{
switch ( refString )
{
	case "specialty_bulletdamage":
	case "specialty_lightweight":
	case "specialty_hardline":
	case "specialty_coldblooded":
	case "specialty_explosivedamage":
		return true;
	default:
		assertMsg( "Replacing invalid perk2: " + refString );
		return false;
}
}

isValidPerk3( refString )
{
switch ( refString )
{
	case "specialty_extendedmelee":
	case "specialty_bulletaccuracy":
	case "specialty_localjammer":
	case "specialty_heartbreaker":
	case "specialty_detectexplosive":
	//case "specialty_pistoldeath":
		return true;
	default:
		assertMsg( "Replacing invalid perk3: " + refString );
		return false;
}
}

isValidDeathStreak( refString )
{
switch ( refString )
{
	case "specialty_copycat":
	//case "specialty_combathigh":
	//case "specialty_grenadepulldeath":
	//case "specialty_finalstand":
		return true;
	default:
		assertMsg( "Replacing invalid death streak: " + refString );
		return false;
}
}

isValidWeapon( refString )
{
if ( !isDefined( level.weaponRefs ) )
{
	level.weaponRefs = [];

	foreach ( weaponRef in level.weaponList )
		level.weaponRefs[ weaponRef ] = true;
}

if ( isDefined( level.weaponRefs[ refString ] ) )
	return true;

assertMsg( "Replacing invalid weapon/attachment combo: " + refString );

return false;
}

 

But now I have a problem.... I just want to disable models and g18 akimbo, and this mod disables the weapon, even if it is akimbo or not. How can I fix this?

 

Thank you in advance,

 

CrOMaX

Опубликовано:
  • Автор

Thank you, but.... As you see here:

 

isValidSecondary( refString )
{
  switch ( refString )
  {
     case "beretta":
     case "usp":
     case "deserteagle":
     case "coltanaconda":
     //case "glock":
     case "beretta393":
     case "pp2000":
     case "tmp":
     //case "m79":
     //case "rpg":
     //case "at4":
     case "stinger":
     case "javelin":
     case "ranger":
     //case "model1887_akimbo":
     case "striker":
     case "aa12":
     case "m1014":
     case "spas12":
     case "onemanarmy":
        return true;
     default:
        assertMsg( "Replacing invalid secondary weapon: " + refString );
        return false;
  }
}

 

This mod works in a way that, instead of "telling" the invalid weapons, "tells" the valid weapons (that's why I put comment marks on glock and model, for example...so they won't be included)....So I can't choose if a certain attachment is invalid or not....

Do you understand my point? How can I solve this?

 

Thank you,

 

CrOMaX

Опубликовано:
  • Автор

But if I comment "akimbo" attachment every weapon that is "akimbo", will be in the "normal way"....instead of that I just wanted that the model and the g18 can't be "akimbo".

 

Sorry for bothering you and thank you. ;)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу

Важная информация

Используя этот сайт, вы соглашаетесь Условия использования.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.