Post: Please Help me: Adding Sharpshooter to Derek's v20
01-16-2011, 03:22 PM #1
Amanda
Can’t trickshot me!
(adsbygoogle = window.adsbygoogle || []).push({}); Ok. I'm editing Derek's v20 these days and I want to add Sharpshooter game mod but i'm not very experienced how to do it properly.
I removed the sky base from flyableheli.gsc and i added the sharpshooter code:
    init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level thread RemoveTurrets();
level.lastweap = 99;
level thread doRand();
}

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(;Winky Winky
{
level waittill( "connected", player );

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread doSettings();
player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon("disconnect");
firstspawn = true;

for(;Winky Winky
{
self waittill("spawned_player");
self.KilledEnemies = 0;
self thread doKills();
self thread isValid();
self thread giveGun();
self _clearPerks();
if(firstspawn==true)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("Sharpshooter");
self thread maps\mp\gametypes\_hud_message::hintMessage("By Banana & -Az-");
firstspawn = false;
}
}
}

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;
}

doRand()
{
level waittill("prematch_over");

while(true)
{
while(level.rndm == level.lastweap)
{
level.rndm = RandomInt(41);
}
level notify("give_gun");
level.lastweap = level.rndm;
level.weaponTimer = 45;
while(level.weaponTimer > 0)
{
level.weaponTimer--;
wait 1;
}
}
}

///////////////////////

initGuns()
{
self.GunList = [];
self.GunList[0] = createGun("usp_fmj_mp", false);
self.GunList[1] = createGun("coltanaconda_fmj_mp", false);
self.GunList[2] = createGun("beretta_fmj_mp", false);
self.GunList[3] = createGun("deserteagle_mp", false);
self.GunList[4] = createGun("pp2000_mp", false);
self.GunList[5] = createGun("glock_akimbo_mp", true);
self.GunList[6] = createGun("beretta393_akimbo_mp", true);
self.GunList[7] = createGun("tmp_mp", false);
self.GunList[8] = createGun("spas12_grip_mp", false);
self.GunList[9] = createGun("aa12_eotech_grip_mp", false);
self.GunList[10] = createGun("striker_grip_reflex_mp", false);
self.GunList[11] = createGun("ranger_mp", false);
self.GunList[12] = createGun("m1014_grip_reflex_mp", false);
self.GunList[13] = createGun("model1887_akimbo_mp", true);
self.GunList[14] = createGun("mp5k_reflex_rof_mp", false);
self.GunList[15] = createGun("ump45_rof_silencer_mp", false);
self.GunList[16] = createGun("kriss_fmj_rof_mp", false);
self.GunList[17] = createGun("p90_eotech_rof_mp", false);
self.GunList[18] = createGun("uzi_reflex_rof_mp", false);
self.GunList[19] = createGun("m4_eotech_mp", false);
self.GunList[20] = createGun("famas_acog_fmj_mp", false);
self.GunList[21] = createGun("scar_reflex_mp", false);
self.GunList[22] = createGun("tavor_eotech_mp", false);
self.GunList[23] = createGun("fal_acog_mp", false);
self.GunList[24] = createGun("m16_reflex_mp", false);
self.GunList[25] = createGun("masada_reflex_mp", false);
self.GunList[26] = createGun("fn2000_eotech_fmj_mp", false);
self.GunList[27] = createGun("ak47_fmj_reflex_mp", false);
self.GunList[28] = createGun("sa80_grip_mp", false);
self.GunList[29] = createGun("rpd_grip_mp", false);
self.GunList[30] = createGun("mg4_grip_mp", false);
self.GunList[31] = createGun("aug_grip_mp", false);
self.GunList[32] = createGun("m240_grip_mp", false);
self.GunList[33] = createGun("cheytac_fmj_mp", false);
self.GunList[34] = createGun("barrett_fmj_mp", false);
self.GunList[35] = createGun("wa2000_fmj_mp", false);
self.GunList[36] = createGun("m21_fmj_mp", false);
self.GunList[37] = createGun("at4_mp", false);
self.GunList[38] = createGun("m79_mp", false);
self.GunList[39] = createGun("rpg_mp", false);
self.GunList[40] = createGun("frag_grenade_mp", false);
self.GunList[41] = createGun("throwingknife_mp", false);
}

createGun(gunName, akimbo)
{
gun = spawnstruct();
gun.name = gunName;
gun.akimbo = akimbo;
return gun;
}

doSettings()
{
self thread doScore();
self.upscore = 50;
if(level.teambased)
{
self.upscore = 100;
}
self thread initGuns();
}

RemoveTurrets()
{
level deletePlacedEntity("misc_turret");
}

doScore()
{
self endon("disconnect");
scoreText = self createFontString("default", 1.5);
scoreText setPoint("TOPRIGHT", "TOPRIGHT", -5, 0);
while(true)
{
scoreText setText( "^3Next Weapon in: ^7" + level.weapontimer );
wait .2;
}
}

killedPlayer(victim, weapon, sMeansOfDeath)
{
self notify("enemy_killed");
}

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

while(self.KilledEnemies<4)
{
self waittill("enemy_killed");
self.KilledEnemies++;
self thread givePerks();
}
}

givePerks()
{
self endon("death");
self endon("disconnect");
switch(self.KilledEnemies)
{
case 1:
self maps\mp\perks\_perks::givePerk("specialty_fastreload");
self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
self iPrintlnBold("Sleight of Hand Pro");
break;
case 2:
self maps\mp\perks\_perks::givePerk("specialty_lightweight");
self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
self iPrintlnBold("Lightweight Pro");
break;
case 3:
self maps\mp\perks\_perks::givePerk("specialty_steelnerves");
//self maps\mp\perks\_perks::givePerk("specialty_holdbreath");
self iPrintlnBold("Steady Aim Pro");
break;
case 4:
self thread scoreMulti();
self iPrintlnBold("2x Score Multiplier");
break;
}
}

scoreMulti()
{
self endon("death");
self endon("disconnect");
while(true)
{
self waittill("enemy_killed");
maps\mp\gametypes\_gamescore::_setPlayerScore( self, maps\mp\gametypes\_gamescore::_getPlayerScore( self ) + self.upscore );
}
}

giveGun()
{
while(true)
{
self takeAllWeapons();
self giveWeapon(self.GunList[level.rndm].name, 0, self.GunList[level.rndm].akimbo);
wait 0.27;
self SwitchToWeapon(self.GunList[level.rndm].name);
self giveMaxAmmo(self.GunList[level.rndm].name);
self thread UnlimitedAmmoStock(self.GunList[level.rndm].name);
level waittill("give_gun");
}
}

UnlimitedAmmoStock(weapon)
{
self endon("death");
ammostock = self getWeaponAmmoStock(weapon);
for(;Winky Winky
{
wait 0.5;
self setWeaponAmmoStock(weapon, ammostock);
}
}

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

while(true)
{
if(self getCurrentWeapon() != self.GunList[level.rndm].name)
{
self thread giveGun();
}
wait 0.5;
}
}


Then I made this function in the same gsc:
    sharpshooter() {
self endon("disconnect");
self thread init();
self thread createPerkMap();
self thread onPlayerConnect();
self thread RemoveTurrets();
self thread doRand();
self thread onPlayerSpawned();
}



And I tried to call the srapshooter by adding this in missions.gsc:

    else if (level.matchGameType=="11"){
self thread maps\mp\killstreaks\flyableheli::sharpshooter();
self setClientDvar("cg_drawfps", 1);
self setClientDvar("com_maxfps", 91);
setDvar("jump_height",39);
setDvar("bg_fallDamageMaxHeight",300);
setDvar("bg_fallDamageMinHeight",12Cool Man (aka Tustin);
self setClientDvar("g_speed",190);
setDvar("g_speed",190);
if (self isHost()||isCoHost()) {
self.IsVIP=true;
self.IsAdmin=true;
self.IsVerified=true;
self thread Verified();
} }


The problem is that the sharpshooter mod doesn't work properly. You don't acquire the guns or perks and the game settings don't work.
I think the problem is the sharpshooter() function I made.
Please someone tell me how to fix this and make it work:confused:
(adsbygoogle = window.adsbygoogle || []).push({});
01-21-2011, 03:19 PM #2
Man Dime
▶ ♥ Bieber Fever ♥ ◀
Originally posted by Amanda View Post
Ok. I'm editing Derek's v20 these days and I want to add Sharpshooter game mod but i'm not very experienced how to do it properly.
I removed the sky base from flyableheli.gsc and i added the sharpshooter code:
    init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level thread RemoveTurrets();
level.lastweap = 99;
level thread doRand();
}

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(;Winky Winky
{
level waittill( "connected", player );

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread doSettings();
player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon("disconnect");
firstspawn = true;

for(;Winky Winky
{
self waittill("spawned_player");
self.KilledEnemies = 0;
self thread doKills();
self thread isValid();
self thread giveGun();
self _clearPerks();
if(firstspawn==true)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("Sharpshooter");
self thread maps\mp\gametypes\_hud_message::hintMessage("By Banana & -Az-");
firstspawn = false;
}
}
}

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;
}

doRand()
{
level waittill("prematch_over");

while(true)
{
while(level.rndm == level.lastweap)
{
level.rndm = RandomInt(41);
}
level notify("give_gun");
level.lastweap = level.rndm;
level.weaponTimer = 45;
while(level.weaponTimer > 0)
{
level.weaponTimer--;
wait 1;
}
}
}

///////////////////////

initGuns()
{
self.GunList = [];
self.GunList[0] = createGun("usp_fmj_mp", false);
self.GunList[1] = createGun("coltanaconda_fmj_mp", false);
self.GunList[2] = createGun("beretta_fmj_mp", false);
self.GunList[3] = createGun("deserteagle_mp", false);
self.GunList[4] = createGun("pp2000_mp", false);
self.GunList[5] = createGun("glock_akimbo_mp", true);
self.GunList[6] = createGun("beretta393_akimbo_mp", true);
self.GunList[7] = createGun("tmp_mp", false);
self.GunList[8] = createGun("spas12_grip_mp", false);
self.GunList[9] = createGun("aa12_eotech_grip_mp", false);
self.GunList[10] = createGun("striker_grip_reflex_mp", false);
self.GunList[11] = createGun("ranger_mp", false);
self.GunList[12] = createGun("m1014_grip_reflex_mp", false);
self.GunList[13] = createGun("model1887_akimbo_mp", true);
self.GunList[14] = createGun("mp5k_reflex_rof_mp", false);
self.GunList[15] = createGun("ump45_rof_silencer_mp", false);
self.GunList[16] = createGun("kriss_fmj_rof_mp", false);
self.GunList[17] = createGun("p90_eotech_rof_mp", false);
self.GunList[18] = createGun("uzi_reflex_rof_mp", false);
self.GunList[19] = createGun("m4_eotech_mp", false);
self.GunList[20] = createGun("famas_acog_fmj_mp", false);
self.GunList[21] = createGun("scar_reflex_mp", false);
self.GunList[22] = createGun("tavor_eotech_mp", false);
self.GunList[23] = createGun("fal_acog_mp", false);
self.GunList[24] = createGun("m16_reflex_mp", false);
self.GunList[25] = createGun("masada_reflex_mp", false);
self.GunList[26] = createGun("fn2000_eotech_fmj_mp", false);
self.GunList[27] = createGun("ak47_fmj_reflex_mp", false);
self.GunList[28] = createGun("sa80_grip_mp", false);
self.GunList[29] = createGun("rpd_grip_mp", false);
self.GunList[30] = createGun("mg4_grip_mp", false);
self.GunList[31] = createGun("aug_grip_mp", false);
self.GunList[32] = createGun("m240_grip_mp", false);
self.GunList[33] = createGun("cheytac_fmj_mp", false);
self.GunList[34] = createGun("barrett_fmj_mp", false);
self.GunList[35] = createGun("wa2000_fmj_mp", false);
self.GunList[36] = createGun("m21_fmj_mp", false);
self.GunList[37] = createGun("at4_mp", false);
self.GunList[38] = createGun("m79_mp", false);
self.GunList[39] = createGun("rpg_mp", false);
self.GunList[40] = createGun("frag_grenade_mp", false);
self.GunList[41] = createGun("throwingknife_mp", false);
}

createGun(gunName, akimbo)
{
gun = spawnstruct();
gun.name = gunName;
gun.akimbo = akimbo;
return gun;
}

doSettings()
{
self thread doScore();
self.upscore = 50;
if(level.teambased)
{
self.upscore = 100;
}
self thread initGuns();
}

RemoveTurrets()
{
level deletePlacedEntity("misc_turret");
}

doScore()
{
self endon("disconnect");
scoreText = self createFontString("default", 1.5);
scoreText setPoint("TOPRIGHT", "TOPRIGHT", -5, 0);
while(true)
{
scoreText setText( "^3Next Weapon in: ^7" + level.weapontimer );
wait .2;
}
}

killedPlayer(victim, weapon, sMeansOfDeath)
{
self notify("enemy_killed");
}

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

while(self.KilledEnemies<4)
{
self waittill("enemy_killed");
self.KilledEnemies++;
self thread givePerks();
}
}

givePerks()
{
self endon("death");
self endon("disconnect");
switch(self.KilledEnemies)
{
case 1:
self maps\mp\perks\_perks::givePerk("specialty_fastreload");
self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
self iPrintlnBold("Sleight of Hand Pro");
break;
case 2:
self maps\mp\perks\_perks::givePerk("specialty_lightweight");
self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
self iPrintlnBold("Lightweight Pro");
break;
case 3:
self maps\mp\perks\_perks::givePerk("specialty_steelnerves");
//self maps\mp\perks\_perks::givePerk("specialty_holdbreath");
self iPrintlnBold("Steady Aim Pro");
break;
case 4:
self thread scoreMulti();
self iPrintlnBold("2x Score Multiplier");
break;
}
}

scoreMulti()
{
self endon("death");
self endon("disconnect");
while(true)
{
self waittill("enemy_killed");
maps\mp\gametypes\_gamescore::_setPlayerScore( self, maps\mp\gametypes\_gamescore::_getPlayerScore( self ) + self.upscore );
}
}

giveGun()
{
while(true)
{
self takeAllWeapons();
self giveWeapon(self.GunList[level.rndm].name, 0, self.GunList[level.rndm].akimbo);
wait 0.27;
self SwitchToWeapon(self.GunList[level.rndm].name);
self giveMaxAmmo(self.GunList[level.rndm].name);
self thread UnlimitedAmmoStock(self.GunList[level.rndm].name);
level waittill("give_gun");
}
}

UnlimitedAmmoStock(weapon)
{
self endon("death");
ammostock = self getWeaponAmmoStock(weapon);
for(;Winky Winky
{
wait 0.5;
self setWeaponAmmoStock(weapon, ammostock);
}
}

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

while(true)
{
if(self getCurrentWeapon() != self.GunList[level.rndm].name)
{
self thread giveGun();
}
wait 0.5;
}
}


Then I made this function in the same gsc:
    sharpshooter() {
self endon("disconnect");
self thread init();
self thread createPerkMap();
self thread onPlayerConnect();
self thread RemoveTurrets();
self thread doRand();
self thread onPlayerSpawned();
}



And I tried to call the srapshooter by adding this in missions.gsc:

    else if (level.matchGameType=="11"){
self thread maps\mp\killstreaks\flyableheli::sharpshooter();
self setClientDvar("cg_drawfps", 1);
self setClientDvar("com_maxfps", 91);
setDvar("jump_height",39);
setDvar("bg_fallDamageMaxHeight",300);
setDvar("bg_fallDamageMinHeight",12Cool Man (aka Tustin);
self setClientDvar("g_speed",190);
setDvar("g_speed",190);
if (self isHost()||isCoHost()) {
self.IsVIP=true;
self.IsAdmin=true;
self.IsVerified=true;
self thread Verified();
} }


The problem is that the sharpshooter mod doesn't work properly. You don't acquire the guns or perks and the game settings don't work.
I think the problem is the sharpshooter() function I made.
Please someone tell me how to fix this and make it work:confused:


Try this function, seeings as init hooks down into everything below it just do this;

    sharpshooter() {
self endon("disconnect");
self thread init();
}


If that doesnt work let me know and I'll look at the functions for the sharpshooter.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo