Grabbing A Weapon's Camo...
-
The title says it all. Any ideas? I tried looking in _weapons.gsc and _class.gsc and didn't get too far.
I want to be able to build a function or use a built in function to return a camo value (like 17 for diamond).
I.E:
CamoGrab() { return self GiveWeapon(weapon, 0, self calcweaponoptions( CAMO_INDEX, lens_index, reticle_index, reticle_color_index )); }
Something like this, except only the camo. This function here was grabbed from the Bo2 zombie's gsc
maps\mp\zombies\_zm_weapons
get_pack_a_punch_weapon_options( weapon ) { if ( !isDefined( self.pack_a_punch_weapon_options ) ) { self.pack_a_punch_weapon_options = []; } if ( !is_weapon_upgraded( weapon ) ) { return self calcweaponoptions( 0, 0, 0, 0, 0 ); } if ( isDefined( self.pack_a_punch_weapon_options[ weapon ] ) ) { return self.pack_a_punch_weapon_options[ weapon ]; } smiley_face_reticle_index = 1; base = get_base_name( weapon ); camo_index = 39; lens_index = randomintrange( 0, 6 ); reticle_index = randomintrange( 0, 16 ); reticle_color_index = randomintrange( 0, 6 ); plain_reticle_index = 16; r = randomint( 10 ); use_plain = r < 3; if ( base == "saritch_upgraded_zm" ) { reticle_index = smiley_face_reticle_index; } else { if ( use_plain ) { reticle_index = plain_reticle_index; } } /# if ( getDvarInt( #"471F9AB9" ) >= 0 ) { reticle_index = getDvarInt( #"471F9AB9" ); #/ } scary_eyes_reticle_index = 8; purple_reticle_color_index = 3; if ( reticle_index == scary_eyes_reticle_index ) { reticle_color_index = purple_reticle_color_index; } letter_a_reticle_index = 2; pink_reticle_color_index = 6; if ( reticle_index == letter_a_reticle_index ) { reticle_color_index = pink_reticle_color_index; } letter_e_reticle_index = 7; green_reticle_color_index = 1; if ( reticle_index == letter_e_reticle_index ) { reticle_color_index = green_reticle_color_index; } self.pack_a_punch_weapon_options[ weapon ] = self calcweaponoptions( camo_index, lens_index, reticle_index, reticle_color_index ); return self.pack_a_punch_weapon_options[ weapon ]; }
Not too much beyond this seems to yield any results unfortunately. Looking in _class.gsc, this is the closest i can find to anything camo related here.
giveloadout( team, class ) //checked partially changed to match cerberus output did not use continue in for loop see github for more info { pixbeginevent( "giveLoadout" ); self takeallweapons(); primaryindex = 0; self.specialty = []; self.killstreak = []; primaryweapon = undefined; self notify( "give_map" ); class_num_for_killstreaks = 0; primaryweaponoptions = 0; secondaryweaponoptions = 0; playerrenderoptions = 0; primarygrenadecount = 0; iscustomclass = 0; if ( issubstr( class, "CLASS_CUSTOM" ) ) { pixbeginevent( "custom class" ); class_num = int( class[ class.size - 1 ] ) - 1; if ( class_num == -1 ) { class_num = 9; } self.class_num = class_num; self reset_specialty_slots( class_num ); playerrenderoptions = self calcplayeroptions( class_num ); class_num_for_killstreaks = class_num; iscustomclass = 1; pixendevent(); } else { pixbeginevent( "default class" ); /* /# assert( isDefined( self.pers[ "class" ] ), "Player during spawn and loadout got no class!" ); #/ */ class_num = level.classtoclassnum[ class ]; self.class_num = class_num; pixendevent(); } knifeweaponoptions = self calcweaponoptions( class_num, 2 ); self giveweapon( "knife_mp", 0, knifeweaponoptions ); self.specialty = self getloadoutperks( class_num ); if ( level.leaguematch ) { for ( i = 0; i < self.specialty.size; i++ ) { if ( isleagueitemrestricted( self.specialty[ i ] ) ) { arrayremoveindex( self.specialty, i ); i--; } } } self register_perks(); self setactionslot( 3, "altMode" ); self setactionslot( 4, "" ); givekillstreaks( class_num_for_killstreaks ); spawnweapon = ""; initialweaponcount = 0; if ( isDefined( self.pers[ "weapon" ] ) && self.pers[ "weapon" ] != "none" && !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( self.pers[ "weapon" ] ) ) { weapon = self.pers[ "weapon" ]; } else { weapon = self getloadoutweapon( class_num, "primary" ); weapon = removeduplicateattachments( weapon ); if ( maps/mp/killstreaks/_killstreaks::iskillstreakweapon( weapon ) ) { weapon = "weapon_null_mp"; } } sidearm = self getloadoutweapon( class_num, "secondary" ); sidearm = removeduplicateattachments( sidearm ); if ( maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sidearm ) ) { sidearm = "weapon_null_mp"; } self.primaryweaponkill = 0; self.secondaryweaponkill = 0; if ( self isbonuscardactive( 2, self.class_num ) ) { self.primaryloadoutweapon = weapon; self.primaryloadoutaltweapon = weaponaltweaponname( weapon ); self.secondaryloadoutweapon = sidearm; self.secondaryloadoutaltweapon = weaponaltweaponname( sidearm ); } else if ( self isbonuscardactive( 0, self.class_num ) ) { self.primaryloadoutweapon = weapon; } if ( self isbonuscardactive( 1, self.class_num ) ) { self.secondaryloadoutweapon = sidearm; } if ( sidearm != "weapon_null_mp" ) { secondaryweaponoptions = self calcweaponoptions( class_num, 1 ); } primaryweapon = weapon; if ( primaryweapon != "weapon_null_mp" ) { primaryweaponoptions = self calcweaponoptions( class_num, 0 ); } if ( sidearm != "" && sidearm != "weapon_null_mp" && sidearm != "weapon_null" ) { self giveweapon( sidearm, 0, secondaryweaponoptions ); if ( self hasperk( "specialty_extraammo" ) ) { self givemaxammo( sidearm ); } spawnweapon = sidearm; initialweaponcount++; } primaryweapon = weapon; primarytokens = strtok( primaryweapon, "_" ); self.pers[ "primaryWeapon" ] = primarytokens[ 0 ]; /* /# println( "^5GiveWeapon( " + weapon + " ) -- weapon" ); #/ */ if ( primaryweapon != "" && primaryweapon != "weapon_null_mp" && primaryweapon != "weapon_null" ) { if ( self hasperk( "specialty_extraammo" ) ) { self givemaxammo( primaryweapon ); } self giveweapon( primaryweapon, 0, primaryweaponoptions ); spawnweapon = primaryweapon; initialweaponcount++; } if ( initialweaponcount < 2 ) { self giveweapon( "knife_held_mp", 0, knifeweaponoptions ); if ( initialweaponcount == 0 ) { spawnweapon = "knife_held_mp"; } } if ( !isDefined( self.spawnweapon ) && isDefined( self.pers[ "spawnWeapon" ] ) ) { self.spawnweapon = self.pers[ "spawnWeapon" ]; } if ( isDefined( self.spawnweapon ) && doesweaponreplacespawnweapon( self.spawnweapon, spawnweapon ) && !self.pers[ "changed_class" ] ) { spawnweapon = self.spawnweapon; } self.pers[ "changed_class" ] = 0; /* /# assert( spawnweapon != "" ); #/ */ self.spawnweapon = spawnweapon; self.pers[ "spawnWeapon" ] = self.spawnweapon; self setspawnweapon( spawnweapon ); grenadetypeprimary = self getloadoutitemref( class_num, "primarygrenade" ); if ( isleagueitemrestricted( grenadetypeprimary ) ) { grenadetypeprimary = ""; } if ( maps/mp/killstreaks/_killstreaks::iskillstreakweapon( grenadetypeprimary + "_mp" ) ) { grenadetypeprimary = ""; } grenadetypesecondary = self getloadoutitemref( class_num, "specialgrenade" ); if ( isleagueitemrestricted( grenadetypesecondary ) ) { grenadetypesecondary = ""; } if ( maps/mp/killstreaks/_killstreaks::iskillstreakweapon( grenadetypesecondary + "_mp" ) ) { grenadetypesecondary = ""; } if ( grenadetypeprimary != "" && grenadetypeprimary != "weapon_null_mp" && isequipmentallowed( grenadetypeprimary ) ) { grenadetypeprimary += "_mp"; primarygrenadecount = self getloadoutitem( class_num, "primarygrenadecount" ); } if ( grenadetypesecondary != "" && grenadetypesecondary != "weapon_null_mp" && isequipmentallowed( grenadetypesecondary ) ) { grenadetypesecondary += "_mp"; grenadesecondarycount = self getloadoutitem( class_num, "specialgrenadecount" ); } if ( grenadetypeprimary != "" && grenadetypeprimary != "weapon_null_mp" && !isequipmentallowed( grenadetypeprimary ) ) { if ( grenadetypesecondary != level.weapons[ "frag" ] ) { grenadetypeprimary = level.weapons[ "frag" ]; } else { grenadetypeprimary = level.weapons[ "flash" ]; } } /* /# println( "^5GiveWeapon( " + grenadetypeprimary + " ) -- grenadeTypePrimary" ); #/ */ self giveweapon( grenadetypeprimary ); self setweaponammoclip( grenadetypeprimary, primarygrenadecount ); self switchtooffhand( grenadetypeprimary ); self.grenadetypeprimary = grenadetypeprimary; self.grenadetypeprimarycount = primarygrenadecount; if ( self.grenadetypeprimarycount > 1 ) { self dualgrenadesactive(); } if ( grenadetypesecondary != "" && grenadetypesecondary != "weapon_null_mp" && isequipmentallowed( grenadetypesecondary ) ) { self setoffhandsecondaryclass( grenadetypesecondary ); /* /# println( "^5GiveWeapon( " + grenadetypesecondary + " ) -- grenadeTypeSecondary" ); #/ */ self giveweapon( grenadetypesecondary ); self setweaponammoclip( grenadetypesecondary, grenadesecondarycount ); self.grenadetypesecondary = grenadetypesecondary; self.grenadetypesecondarycount = grenadesecondarycount; } self bbclasschoice( class_num, primaryweapon, sidearm ); if ( !sessionmodeiszombiesgame() ) { for ( i = 0; i < 3; i++ ) { if ( level.loadoutkillstreaksenabled && isDefined( self.killstreak[ i ] ) && isDefined( level.killstreakindices[ self.killstreak[ i ] ] ) ) { killstreaks[ i ] = level.killstreakindices[ self.killstreak[ i ] ]; } else { killstreaks[ i ] = 0; } } self recordloadoutperksandkillstreaks( primaryweapon, sidearm, grenadetypeprimary, grenadetypesecondary, killstreaks[ 0 ], killstreaks[ 1 ], killstreaks[ 2 ] ); } self maps/mp/teams/_teams::set_player_model( team, weapon ); self initstaticweaponstime(); self thread initweaponattachments( spawnweapon ); self setplayerrenderoptions( playerrenderoptions ); if ( isDefined( self.movementspeedmodifier ) ) { self setmovespeedscale( self.movementspeedmodifier * self getmovespeedscale() ); } if ( isDefined( level.givecustomloadout ) ) { spawnweapon = self [[ level.givecustomloadout ]](); if ( isDefined( spawnweapon ) ) { self thread initweaponattachments( spawnweapon ); } } self cac_selector(); if ( !isDefined( self.firstspawn ) ) { if ( isDefined( spawnweapon ) ) { self initialweaponraise( spawnweapon ); } else { self initialweaponraise( weapon ); } } else { self seteverhadweaponall( 1 ); } self.firstspawn = 0; pixendevent(); }
self calcweaponoptions( class_num, 2 ); //In the zombies function i shared earlier, class_num is taking the place of the camo_index arg. This doesn't exactly get me any closer.
Thank you. Any help would be appreciated. Remember, i'm looking to return a camo. Not change one. If a player spawns in with a diamond camo, i wanna know that they have it through my scripts.