//ScoreHudInventroy.cs //Phantom139 //For TWM2, and other mods, A rework of the inventory system to be ran through the //score menu, for easier use and classification of weapons, packs, and armors //one can simply disable it through this G-Var //$ScoreHudInventory::Active = 1; package scoreHudInventory { function DefaultGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %arg4, %arg5) { %tag = $TagToUseForScoreMenu; messageClient( %client, 'ClearHud', "", %tag, 1 ); // switch$(%arg1) { case "inventoryWindow": %index = buildInventoryWindow(%client, %tag, %index); return; case "setScoreInv": %subZone = %arg2; switch$(%subZone) { case "Armor": %client.scoreHudInv[Armor] = %arg3; case "Weapon": //pull the current settings %int = 1; while(isSet(%client.scoreHudInv[Weapon, %int])) { if(%client.scoreHudInv[Weapon, %int] $= %client.scoreHudInv[Weapon, %arg3]) { %client.scoreHudInv[Weapon, %int] = ""; } %int++; } %slot = %arg3; %client.scoreHudInv[Weapon, %slot] = %arg4; //now do a post set check %xSlot = 1; while(isSet(%client.scoreHudInv[Weapon, %xSlot])) { //no two may co-exist, IE: be the same %iSlot = 1; while(isSet(%client.scoreHudInv[Weapon, %iSlot])) { if(%client.scoreHudInv[Weapon, %iSlot] $= %client.scoreHudInv[Weapon, %xSlot]) { if(%iSlot != %xSlot) { //remove iSlot, proceed %client.scoreHudInv[Weapon, %iSlot] = ""; } } %iSlot++; } %xSlot++; } case "Pistol": %client.scoreHudInv[Pistol] = %arg3; case "Melee": %client.scoreHudInv[Melee] = %arg3; case "Pack": %client.scoreHudInv[Pack] = %arg3; case "Grenade": %client.scoreHudInv[Grenade] = %arg3; case "Mine": %client.scoreHudInv[Mine] = %arg3; case "Ability": %client.scoreHudInv[Ability] = %arg3; default: error("Unknown Call to setScoreInv: "@%arg2@"/"@%arg3@"/"@%arg4@""); // } Game.processGameLink(%client, "inventoryWindow"); return; } parent::processGameLink(%game, %client, %arg1, %arg2, %arg3, %arg4, %arg5); } function pushScoreInventory(%client) { messageClient(%client, 'OpenHud', "", 'scoreScreen' SPC "inventoryWindow"); messageClient(%client, 'CloseHud', "", 'inventoryScreen' SPC "inventoryScreen"); Game.processGameLink(%client, "inventoryWindow"); } function InventoryScreen::updateHud( %this, %client, %tag ) { if($ScoreHudInventory::Active == 1) { pushScoreInventory(%client); return; } else { parent::updateHud( %this, %client, %tag ); } } function GameConnection::onConnect( %client, %name, %raceGender, %skin, %voice, %voicePitch ) { Parent::onConnect( %client, %name, %raceGender, %skin, %voice, %voicePitch ); %client.scoreHudInv[Armor] = "Purebuild"; } //modification to the game's inventory buy functions function buyFavorites(%client) { if($ScoreHudInventory::Active == 1) { if(!isObject(%client.player)) { return; } if(%client.player.isZombie) { return; } if (%client.isJailed) { return; } if (!%client.isAdmin && !%client.isSuperAdmin) { if ($Host::Purebuild == 1) { %client.scoreHudInv[Armor] = "Purebuild"; } else { if (%client.scoreHudInv[Armor] $= "Purebuild") { %client.scoreHudInv[Armor] = "Scout"; } } } // don't forget -- for many functions, anything done here also needs to be done // below in buyDeployableFavorites !!! %client.player.clearInventory(); %client.setWeaponsHudClearAll(); %cmt = $CurrentMissionType; %curArmor = %client.player.getDatablock(); %curDmgPct = getDamagePercent(%curArmor.maxDamage, %client.player.getDamageLevel()); // armor %client.armor = $NameToInv[%client.scoreHudInv[Armor]]; %client.player.setArmor( %client.armor ); %newArmor = %client.player.getDataBlock(); %client.player.setDamageLevel(%curDmgPct * %newArmor.maxDamage); %weaponCount = 0; DoPerksStuff(%client, %client.player); // // weapons %armor = getArmorDatablock(%client, $NameToInv[%client.scoreHudInv[Armor]]); %slotCount = %armor.MaxWeapons; if(%client.IsActivePerk("OverKill") == 1) { %slotCount++; } for(%i = 1; %i <= %slotCount; %i++) { %inv = $NameToInv[%client.scoreHudInv[Weapon, %i]]; if( %inv !$= "" ) { %weaponCount++; %client.player.setInventory( %inv, 1 ); %WImg = %inv.Image; if(%WImg.ClipName !$= "") { //apply clips if(%client.IsActivePerk("Bandolier")) { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips * 2; } else { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips; } } } // z0dd - ZOD, 9/13/02. Streamlining. if ( %inv.image.ammo !$= "" ) { %client.player.setInventory( %inv.image.ammo, 400 ); } } %client.player.weaponCount = %weaponCount; // //pistol %Pinv = $NameToInv[%client.scoreHudInv[Pistol]]; if( %Pinv !$= "" ) { %client.player.setInventory( %Pinv, 1 ); %WImg = %Pinv.Image; if(%WImg.ClipName !$= "") { //apply clips if(%client.IsActivePerk("Bandolier")) { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips * 2; } else { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips; } } } if ( %Pinv.image.ammo !$= "" ) { %client.player.setInventory( %Pinv.image.ammo, 400 ); } //melee %meleeinv = $NameToInv[%client.scoreHudInv[Melee]]; if( %meleeinv !$= "" ) { %client.player.setInventory( %meleeinv, 1 ); } //pack/deployable/ect/you get the point :P %pCh = $NameToInv[%client.scoreHudInv[Pack]]; if(%pCh !$= "") { %client.player.setInventory( %pCh, 1 ); // if this pack is a deployable that has a team limit, warn the purchaser // if it's a deployable turret, the limit depends on the number of players (deployables.cs) if (isDeployableTurret(%pCh)) { %maxDep = countTurretsAllowed(%pCh); } else { %maxDep = $TeamDeployableMax[%pCh]; } if(%maxDep !$= "") { %depSoFar = $TeamDeployedCount[%client.player.team, %pCh]; %packName = %client.favorites[%client.packIndex]; if(Game.numTeams > 1) { %msTxt = "Your team has "@%depSoFar@" of "@%maxDep SPC %packName@"s deployed."; } else { %msTxt = "You have deployed "@%depSoFar@" of "@%maxDep SPC %packName@"s."; } messageClient(%client, 'MsgTeamDepObjCount', %msTxt); } } // //Grenade %nadeinv = $NameToInv[%client.scoreHudInv[Grenade]]; if( %nadeinv !$= "" ) { %client.player.setInventory( %nadeinv, %armor.max[%nadeinv] ); } //Mine %Mineinv = $NameToInv[%client.scoreHudInv[Mine]]; if( %Mineinv !$= "" ) { %client.player.setInventory( %Mineinv, %armor.max[%Mineinv] ); } // // miscellaneous stuff -- Repair Kit, Beacons, Targeting Laser if ( !($InvBanList[%cmt, RepairKit]) ) %client.player.setInventory( RepairKit, 1 ); if ( !($InvBanList[%cmt, Beacon]) ) %client.player.setInventory( Beacon, 400 ); if ( !($InvBanList[%cmt, TargetingLaser]) ) %client.player.setInventory( TargetingLaser, 1 ); // ammo pack pass -- hack! hack! if( %pCh $= "AmmoPack" ) { invAmmoPackPass(%client); } // give admins the Super Chaingun GiveTWM2Weapons(%client); //includes SW's and admin stuff // TODO - temporary - remove if (%client.forceArmor !$= "") { %client.player.setArmor(%client.forceArmor); } } else { parent::buyFavorites(%client); } } function buyDeployableFavorites(%client) { if($ScoreHudInventory::Active == 1) { if(%client.player.isZombie) { return; } if (%client.isJailed) { return; } if (!%client.isAdmin && !%client.isSuperAdmin) { if ($Host::Purebuild == 1) { %client.scoreHudInv[Armor] = "Purebuild"; } else { if (%client.scoreHudInv[Armor] $= "Purebuild") { %client.scoreHudInv[Armor] = "Scout"; } } } %player = %client.player; %prevPack = %player.getMountedImage($BackpackSlot); %player.clearInventory(); %client.setWeaponsHudClearAll(); %cmt = $CurrentMissionType; // players cannot buy armor from deployable inventory stations %armor = getArmorDatablock(%client, $NameToInv[%client.scoreHudInv[Armor]]); %slotCount = %armor.MaxWeapons; if(%client.IsActivePerk("OverKill") == 1) { %slotCount++; } %weapCount = 0; for(%i = 1; %i <= %slotCount; %i++) { %inv = $NameToInv[%client.scoreHudInv[Weapon, %i]]; if (!($InvBanList[DeployInv, %inv])) { %player.setInventory( %inv, 1 ); // increment weapon count if current armor can hold this weapon if(%player.getDatablock().max[%inv] > 0) { %weapCount++; } %WImg = %inv.Image; if(%WImg.ClipName !$= "") { //apply clips if(%client.IsActivePerk("Bandolier")) { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips * 2; } else { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips; } } // z0dd - ZOD, 9/13/02. Streamlining if ( %inv.image.ammo !$= "" ) { %player.setInventory( %inv.image.ammo, 400 ); } if(%weapCount >= %player.getDatablock().maxWeapons) { break; } } } %player.weaponCount = %weapCount; //Update Pistol %inv = $NameToInv[%client.scoreHudInv[Pistol]]; if (!($InvBanList[DeployInv, %inv]) ) { %player.setInventory( %inv, 1 ); %WImg = %inv.Image; if(%WImg.ClipName !$= "") { //apply clips if(%client.IsActivePerk("Bandolier")) { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips * 2; } else { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips; } } // z0dd - ZOD, 9/13/02. Streamlining if ( %inv.image.ammo !$= "" ) { %player.setInventory( %inv.image.ammo, 400 ); } } //Update Melee %meleeinv = $NameToInv[%client.scoreHudInv[Melee]]; if ( !($InvBanList[DeployInv, %meleeinv]) ) { %player.setInventory( %meleeinv, 1 ); // z0dd - ZOD, 9/13/02. Streamlining if ( %meleeinv.image.ammo !$= "" ) { %player.setInventory( %meleeinv.image.ammo, 400 ); } } // give player the grenades and mines they chose, beacons, and a repair kit %nadeinv = $NameToInv[%client.scoreHudInv[Grenade]]; if ( !($InvBanList[DeployInv, %nadeinv]) ) { %player.setInventory( %nadeinv, 30 ); } %mineinv = $NameToInv[%client.scoreHudInv[Mine]]; if ( !($InvBanList[DeployInv, %mineinv]) ) { %player.setInventory( %mineinv, 30 ); } if ( !($InvBanList[DeployInv, Beacon]) && !($InvBanList[%cmt, Beacon]) ) %player.setInventory( Beacon, 400 ); if ( !($InvBanList[DeployInv, RepairKit]) && !($InvBanList[%cmt, RepairKit]) ) %player.setInventory( RepairKit, 1 ); if ( !($InvBanList[DeployInv, TargetingLaser]) && !($InvBanList[%cmt, TargetingLaser]) ) %player.setInventory( TargetingLaser, 1 ); // pack - any changes here must be added to dep below! // players cannot buy deployable station packs from a deployable inventory station %packChoice = $NameToInv[%client.scoreHudInv[Pack]]; if ( !($InvBanList[DeployInv, %packChoice]) ) %player.setInventory( %packChoice, 1 ); // if this pack is a deployable that has a team limit, warn the purchaser // if it's a deployable turret, the limit depends on the number of players (deployables.cs) if (isDeployableTurret(%packChoice)) { %maxDep = countTurretsAllowed(%packChoice); } else { %maxDep = $TeamDeployableMax[%packChoice]; } if((%maxDep !$= "") && (%packChoice !$= "InventoryDeployable")) { %depSoFar = $TeamDeployedCount[%client.player.team, %packChoice]; %packName = %client.favorites[%client.packIndex]; if(Game.numTeams > 1) { %msTxt = "Your team has "@%depSoFar@" of "@%maxDep SPC %packName@"s deployed."; } else { %msTxt = "You have deployed "@%depSoFar@" of "@%maxDep SPC %packName@"s."; } messageClient(%client, 'MsgTeamDepObjCount', %msTxt); } if(%packChoice $= "AmmoPack") { invAmmoPackPass(%client); } GiveTWM2Weapons(%client); //includes SW's and admin stuff } else { Parent::buyDeployableFavorites(%client); } } function getAmmoStationLovin(%client) { if($ScoreHudInventory::Active == 1) { //error("Much ammo station lovin applied"); %cmt = $CurrentMissionType; // weapons %counter = %client.player.weaponSlotCount; if(%client.IsActivePerk("OverKill")) { %counter++; } for(%i = 0; %i < %counter; %i++) { %weapon = %client.player.weaponSlot[%i]; // z0dd - ZOD, 9/13/02. Streamlining if ( %weapon.image.ammo !$= "" ) { %client.player.setInventory( %weapon.image.ammo, 400 ); } %WImg = %weapon.Image; if(%WImg.ClipName !$= "") { //apply clips if(%client.IsActivePerk("Bandolier")) { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips * 2; } else { %client.player.ClipCount[%WImg.ClipName] = %WImg.InitialClips; } } } // miscellaneous stuff -- Repair Kit, Beacons, Targeting Laser if ( !($InvBanList[%cmt, RepairKit]) ) %client.player.setInventory( RepairKit, 1 ); if ( !($InvBanList[%cmt, Beacon]) ) %client.player.setInventory( Beacon, 400 ); if ( !($InvBanList[%cmt, TargetingLaser]) ) %client.player.setInventory( TargetingLaser, 1 ); %client.player.setInventory( Grenade, 0 ); %client.player.setInventory( ConcussionGrenade, 0 ); %client.player.setInventory( CameraGrenade, 0 ); %client.player.setInventory( FlashGrenade, 0 ); %client.player.setInventory( FlareGrenade, 0 ); // player should get the last type they purchased %grenType = %client.player.lastGrenade; // if the player hasnt been to a station they get regular grenades if(%grenType $= "") { //error("no gren type, using default..."); %grenType = Grenade; } if ( !($InvBanList[%cmt, %grenType]) ) %client.player.setInventory( %grenType, 30 ); if( %client.player.getMountedImage($BackpackSlot) $= "AmmoPack") { invAmmoPackPass(%client); } } else { parent::getAmmoStationLovin(%client); } } //End //THIS FUNCTION HERE IS THE BRAINS OF THE SYSTEM //APPLY ALL MAJOR EDITS HERE function buildInventoryWindow(%client, %tag, %index) { %client.SCMPage = "SM"; messageClient( %client, 'SetScoreHudSubheader', "", "INVENTORY" ); //Required vars %cmt = $CurrentMissionType; %sO = %client.TWM2Core; %xpHas = %sO.xp; %prestige = %sO.officer; if(%sO.officer $= "") { %sO.officer = 0; %prestige = %sO.officer; } // //fully customizable inventory system, separate, yet better messageClient( %client, 'SetLineHud', "", %tag, %index, "Score Hud Inventory System: Version 1.0, By Phantom139"); %index++; //* BEGIN ARMORS messageClient( %client, 'SetLineHud', "", %tag, %index, "CURRENT ARMOR: "@%client.scoreHudInv[Armor]@""); %index++; // messageClient( %client, 'SetLineHud', "", %tag, %index, "Select Armor: "); %index++; //build the armor list, 3 armors per line for (%y = 0; $InvArmor[%y] !$= ""; %y++) { if ($InvArmor[%y] !$= %client.scoreHudInv[Armor]) { %armorList = %armorList TAB $InvArmor[%y]; } } if($TWM::PlayingInfection) { %armorList = InfectionArmors(%client, %armorList); } else { %armorList = updateArmorList(%client, %armorList); } // %armors = getFieldCount(%armorList); %arSC = 0; for(%i = 0; %i < %armors; %i++) { %armorString[%arSC] = %armorString[%arSC]@" * "@getField(%armorList, %i)@""; if(%i % 3 == 0) { %arSC++; } } // %arCT = 0; while(isSet(%armorString[%arCt])) { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@%armorString[%arCt]@""); %index++; %arCT++; } //* END ARMORS messageClient( %client, 'SetLineHud', "", %tag, %index, "* WEAPONS * "); %index++; //* BEGIN WEAPONS // * Slot Count Determined by the armor, see this line :D %armor = getArmorDatablock(%client, $NameToInv[%client.scoreHudInv[Armor]]); %slotCount = %armor.MaxWeapons; if(%client.IsActivePerk("OverKill") == 1) { %slotCount++; } // EX: S3 Rifle - [Slot 1] * Slot 2 * Slot 3 %wepGroup = 0; while(isSet($SHI::WeaponGroup[%wepGroup])) { %weapCounter = 0; %weap = 0; while(isSet($InvWeapon[%weap])) { if($SHI::BlockToClass[$NameToInv[$InvWeapon[%weap]]] $= $SHI::WeaponGroup[%wepGroup]) { if(%armor.max[$NameToInv[$InvWeapon[%weap]]]) { %weapCounter++; } } %weap++; } if(%weapCounter >= 1) { messageClient( %client, 'SetLineHud', "", %tag, %index, "* "@$SHI::WeaponGroup[%wepGroup]@" *"); %index++; // %weap = 0; while(isSet($InvWeapon[%weap])) { if($SHI::BlockToClass[$NameToInv[$InvWeapon[%weap]]] $= $SHI::WeaponGroup[%wepGroup]) { %WInv = $NameToInv[$InvWeapon[%weap]]; if(%armor.max[%WInv]) { if(%WInv.Image.RankRequire $= "") { %xpNeed = 0; } else { %xpNeed = $Ranks::MinPoints[%WInv.Image.RankRequire]; } // if(%WInv.Image.PrestigeRequire $= "") { %prestigeNeed = 0; } else { %prestigeNeed = %WInv.Image.PrestigeRequire; } // if(%prestigeNeed $= "" || %prestigeNeed == 0) { if(%xpNeed $= "" || %xpNeed == 0) { if(%WInv.Image.MedalRequire) { %canUse = DoMedalCheck(%client, %WInv.Image); if(%canUse) { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } else { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } else { if (%xpHas >= %xpNeed && (isSet(%WInv.Image.RankRequire) ? %client.TWM2Core.rankNumber >= %WInv.Image.RankRequire : true )){ if(%WInv.Image.MedalRequire) { %canUse = DoMedalCheck(%client, %WInv.Image); if(%canUse) { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } else { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } } } else { if(%prestige >= %prestigeNeed) { if(%xpNeed $= "" || %xpNeed == 0) { if(%WInv.Image.MedalRequire) { %canUse = DoMedalCheck(%client, %WInv.Image); if(%canUse) { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } else { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } else { if (%xpHas >= %xpNeed && (isSet(%WInv.Image.RankRequire) ? %client.TWM2Core.rankNumber >= %WInv.Image.RankRequire : true )){ if(%WInv.Image.MedalRequire) { %canUse = DoMedalCheck(%client, %WInv.Image); if(%canUse) { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } else { %slotString = ""; for(%i = 1; %i <= %slotCount; %i++) { if(%client.scoreHudInv[Weapon, %i] $= $InvWeapon[%weap]) { %slotString = %slotString @" [SLOT "@%i@"]"; } else { %slotString = %slotString @" SLOT "@%i@" "; } } messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvWeapon[%weap]@" - "@%slotString@""); %index++; } } } } } //} } } %weap++; } } %wepGroup++; } //* END WEAPONS //* BEGIN PISTOL if(!%client.IsActivePerk("OverKill")) { messageClient( %client, 'SetLineHud', "", %tag, %index, "* PISTOL * "); %index++; for ( %y = 0; $InvPistol[%y] !$= ""; %y++ ) { %PistolInv = $NameToInv[$InvPistol[%y]]; if(%PistolInv.Image.RankRequire $= "") { %xpNeed = 0; } else { %xpNeed = $Ranks::MinPoints[%PistolInv.Image.RankRequire]; } // if(%PistolInv.Image.PrestigeRequire $= "") { %prestigeNeed = 0; } else { %prestigeNeed = %PistolInv.Image.PrestigeRequire; } // if(%PistolInv.Image.MedalRequire) { %canUse = DoMedalCheck(%client, %PistolInv.Image); } else { %canUse = 1; } if(%canUse) { //XP Check Here if(%prestige >= %prestigeNeed) { if(%xpHas > %xpNeed && (isSet(%PistolInv.Image.RankRequire) ? %client.TWM2Core.rankNumber >= %PistolInv.Image.RankRequire : true )) { if(%client.scoreHudInv[Pistol] $= $InvPistol[%y]) { messageClient( %client, 'SetLineHud', "", %tag, %index, "["@$InvPistol[%y]@"]"); %index++; } else { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvPistol[%y]@""); %index++; } } } } } } else { messageClient( %client, 'SetLineHud', "", %tag, %index, "* PISTOL SLOT IS DISABLED -> OVERKILL PERK * "); %index++; } //* END PISTOL //* BEGIN MELEE if(%client.scoreHudInv[Armor] !$= "Purebuild") { messageClient( %client, 'SetLineHud', "", %tag, %index, "* MELEE * "); %index++; for ( %y = 0; $InvMelee[%y] !$= ""; %y++ ) { %meleeInv = $NameToInv[$InvMelee[%y]]; if(%meleeInv.Image.MedalRequire) { %canUse = DoMedalCheck(%client, %meleeInv.Image); } else { %canUse = 1; } if(%canUse) { if(%client.scoreHudInv[Melee] $= $InvMelee[%y]) { messageClient( %client, 'SetLineHud', "", %tag, %index, "["@$InvMelee[%y]@"]"); %index++; } else { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvMelee[%y]@""); %index++; } } } } else { messageClient( %client, 'SetLineHud', "", %tag, %index, "* MELEE SLOT IS DISABLED -> PUREBUILD ARMOR * "); %index++; } //* END MELEE //* BEGIN PACK/DEPLOYABLE messageClient( %client, 'SetLineHud', "", %tag, %index, "* PACK * "); %index++; for ( %y = 0; $InvPack[%y] !$= ""; %y++ ) { %PInv = $NameToInv[$InvPack[%y]]; if (%armor.max[%PInv] && !$InvBanList[%cmt, %PInv]) { %packList = %packList TAB $InvPack[%y]; } } %packs = getFieldCount(%packList); %arSC = 0; for(%i = 0; %i < %packs; %i++) { if(%client.scoreHudInv[Pack] $= getField(%packList, %i)) { %packString[%arSC] = %packString[%arSC]@" * ["@getField(%packList, %i)@"]"; } else { %packString[%arSC] = %packString[%arSC]@" * "@getField(%packList, %i)@""; } if(%i % 3 == 0) { %arSC++; } } // %arCT = 0; while(isSet(%packString[%arCt])) { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@%packString[%arCt]@""); %index++; %arCT++; } // // messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvPack[%y]@""); // %index++; if(%client.scoreHudInv[Armor] $= "Purebuild") { messageClient( %client, 'SetLineHud', "", %tag, %index, "* BUILDER PACK * "); %index++; // for ( %y = 0; $InvDep[%y] !$= ""; %y++ ) { %PInv = $NameToInv[$InvDep[%y]]; if (%armor.max[%PInv] && !$InvBanList[%cmt, %PInv]) { %DepList = %DepList TAB $InvDep[%y]; } } %packs = getFieldCount(%DepList); %arSC = 0; for(%i = 0; %i < %packs; %i++) { if(%client.scoreHudInv[Pack] $= getField(%DepList, %i)) { %DepString[%arSC] = %DepString[%arSC]@" * ["@getField(%DepList, %i)@"]"; } else { %DepString[%arSC] = %DepString[%arSC]@" * "@getField(%DepList, %i)@""; } if(%i % 3 == 0) { %arSC++; } } // %arCT = 0; while(isSet(%DepString[%arCt])) { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@%DepString[%arCt]@""); %index++; %arCT++; } } else { messageClient( %client, 'SetLineHud', "", %tag, %index, "* BUILDER PACK IS DISABLED -> NON-PUREBUILD ARMOR * "); %index++; } //* END PACK/DEPLOYABLE //* BEGIN GRENADE messageClient( %client, 'SetLineHud', "", %tag, %index, "* GRENADE * "); %index++; for (%y = 0; $InvGrenade[%y] !$= ""; %y++) { %GInv = $NameToInv[$InvGrenade[%y]]; if (%armor.max[%GInv] && !$InvBanList[%cmt, %GInv]) { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvGrenade[%y]@""); %index++; } } //* END GRENADE //* BEGIN MINE messageClient( %client, 'SetLineHud', "", %tag, %index, "* MINE * "); %index++; for (%y = 0; $InvMine[%y] !$= ""; %y++) { %MInv = $NameToInv[$InvMine[%y]]; if (%armor.max[%MInv] && !$InvBanList[%cmt, %MInv]) { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$InvMine[%y]@""); %index++; } } //* END MINE //* BEGIN ABILITY messageClient( %client, 'SetLineHud', "", %tag, %index, "* ARMOR ABILITY * "); %index++; //* END ABILITY //* SAVE SLOTS messageClient( %client, 'SetLineHud', "", %tag, %index, "* SAVE SETTINGS * "); %index++; // return %index; } }; deactivatePackage(scoreHudInventory); activatePackage(scoreHudInventory); //SHI -> Score Hud Inventory //New Inventory List Functions //All Inventory itself is still handled by inventoryHud.cs $SHI::WeaponGroup[0] = "Rifles"; $SHI::WeaponGroup[1] = "Sniper Rifles"; $SHI::WeaponGroup[2] = "SMGs"; $SHI::WeaponGroup[3] = "MGs"; $SHI::WeaponGroup[4] = "Shotguns"; $SHI::WeaponGroup[5] = "Explosives"; $SHI::WeaponGroup[6] = "Other"; $SHI::WeaponGroup[7] = "Construction"; // $SHI::BlockToClass[S3Rifle] = "Rifles"; $SHI::BlockToClass[G41Rifle] = "Rifles"; $SHI::BlockToClass[M4A1] = "Rifles"; $SHI::BlockToClass[lasergun] = "Rifles"; $SHI::BlockToClass[ShadowRifle] = "Rifles"; $SHI::BlockToClass[IonRifle] = "Rifles"; $SHI::BlockToClass[PulseRifle] = "Rifles"; $SHI::BlockToClass[G17SniperRifle] = "Sniper Rifles"; $SHI::BlockToClass[M1SniperRifle] = "Sniper Rifles"; $SHI::BlockToClass[R700SniperRifle] = "Sniper Rifles"; $SHI::BlockToClass[ALSWPSniperRifle] = "Sniper Rifles"; $SHI::BlockToClass[MP26] = "SMGs"; $SHI::BlockToClass[Pg700] = "SMGs"; $SHI::BlockToClass[MiniChaingun] = "SMGs"; $SHI::BlockToClass[P90] = "SMGs"; $SHI::BlockToClass[PulseSMG] = "SMGs"; $SHI::BlockToClass[RP432] = "MGs"; $SHI::BlockToClass[MRXX] = "MGs"; $SHI::BlockToClass[MG42] = "MGs"; $SHI::BlockToClass[M1700] = "Shotguns"; $SHI::BlockToClass[Wp400] = "Shotguns"; $SHI::BlockToClass[SA2400] = "Shotguns"; $SHI::BlockToClass[SCD343] = "Shotguns"; $SHI::BlockToClass[Model1887] = "Shotguns"; $SHI::BlockToClass[MissileLauncher] = "Explosives"; $SHI::BlockToClass[Stinger] = "Explosives"; $SHI::BlockToClass[Javelin] = "Explosives"; $SHI::BlockToClass[RPG] = "Explosives"; $SHI::BlockToClass[PlasmaTorpedo] = "Explosives"; $SHI::BlockToClass[IonLauncher] = "Other"; $SHI::BlockToClass[flamer] = "Other"; $SHI::BlockToClass[ConcussionGun] = "Other"; $SHI::BlockToClass[MiniColliderCannon] = "Other"; $SHI::BlockToClass[ConstructionTool] = "Construction"; $SHI::BlockToClass[MergeTool] = "Construction"; $SHI::BlockToClass[EditTool] = "Construction"; $SHI::BlockToClass[EditorGun] = "Construction";