ACE3/docs/wiki/framework/crew-served-weapons-framework.md
Brandon Danyluk 7b13a75305 RHS CSW compatability (#7082)
* Initial Commit

* Got rid of unneeded translation values

* Updated Strings

* "Fixed" issue where when you deploy the tripid and weapon on slope it freaked out.

* Fixed locality issues. Added timers to relavent functions.

* Added weights to all magazines/tripod. Weights to weapons coming soon when I transfer them to the launcher slot

* Fixed bug regarding localized strings. Created new tripod model

* Added timers for deploying/picking up the tripod. Changed ammo-box model from custom to one already in ARMA. Changed gun-bag model for a more generic one. Created a texture for the tripod and gunbag

* Removed ability to disassemble weapons via the addAction. Added  ACE Action to get in due to a memory point issue. Changed from a static deploy/dismount time to one based in the weapon configs

* Created forward-compatability. Made it so I can define a base plate for any weapon if I ever want to expand from the generic M3 Tripod.

* Fixed bug where tripod wouldn't deploy with the correct times. Fixed bug where if you moved the tripod into the ground it would go flying.

* Added mortar compatability. Will probably shift whole mortar ammo loading to CSW one day

* Added icons to each relavent item

* Added README, possibly fixed bug where if you are in a weapon others cant load/unload ammo. Changed distance you can interact with weapons

* Added checks for when deploying the gun as well as unloading ammo to prevent duplication/deletion of items.

* Added documentation

* Added order to doc

* Explained why things are the way they are

* Remove temp files

* Removed redundant files

* Converted tabs->spaces. Added newlines at end of all files. Changed broken line in fnc_tripodDeploy.sqf.

* 100% newlines at end of file

* Added newlines to files that didnt get the change. Fixed README. Changed from GVAR(cswOptions) to GVAR(options). Changed from tabs to spaces in wiki

* Fixed issue with UAV assembling with enableWeaponDisassembling. Fixed bug where game would crash if you disassembled static weapon with more than 1 magazine

* Tabs->Spaces

* Added CSW options to base StaticWeapon class to allow for easier additions. Switched default mortar away from CSW system due to incompatabilities

* Lazy Evaluations and macros to describe how things work.

* Added newlines to script_component. Fix no-texture issue on tripod. "Fix" 20mm HE saying 40mm HE. Add custom icons to all weapons. Move "Check Ammo" to CSW menu

* abc

* Revert "abc"

This reverts commit bcb4214bd9.

* Update to current commit

* Revert changes to fortify.md

* Updated UI Icon to Crew Served Ammo branch UI

* Added Pabst's CrewServedAmmo to handle ammo loading/unloading instead of my solution

* Fixed bug where currentWeaponTurret returned a blank string when a player hasent entered hte weapon to select the current weapon

* Re-added ammo loading time

* Tabs->Spaces

* Newline at end of files

* Removed replaced functions

* Remove redundant strings. Move ammo handling to appropiate section

* Tabs->Spaces

* Update wiki

* Updated to fix crash with default weapons and disable CSW ability on default static weapons

* Added editor attributes to enable/disable CSW at edit time

* Change how ammo is removed from the CSW. Uses math instead of iteration

* Fix bug where assembled weapon did not get rid of default actions

* Added support for multiple types of ammo in one CSW

* Add tracer magazines for .50 cal

* Fix bug where you could load ammo even if the gun couldnt take any more

* Disable debug and enable compile cache

* Changed weapon deploy/pickup time. Removed custom Titan missiles. Using ACE Dragging now. Added progress bar check for pickupTripod. Updated documentation

* Removed check if CSW is full to unload ammo

* Fix bug where items would spawn underneath other items on wepaon dismount

* Change some things

* Configure base statics, improve returnAmmo

* Add mortar baseplate

* Remove explicit inheritance

* Fix bug where unloading ammo would duplicate it if you had room in your person.

* Tab->Space

* Player couldnt pickup tripod due to legacy code

* Fix GMG_01_base_F inheritce

* Port of ACE 2 tripod + ACE 2 CSW Bag

* Move ACE 2 Data to APL folder

* Adjust weights to make them more accurate to how ARMA uses it and the real life equivalents

* Fix bug where error was thrown on esc from picking up tripod. Tripod rotated 180

* Fix bug where if you called ace_common_claim the weapon could be set to be disassembled even though it may not be wanted via CSW

* Added ability to toggle ammo handling when weaponAssembly is disabled.

* Add Proxy Weapons for all Vanilla static weapons. These serve as a way to allow for realistic ammo reload times without having to modify base classes if you want feautres turned off. Adjusted reload and mount times to be more "realistic"

* Fix Shadow RPT Spam

* Update wiki

* Change order of setDir and setPos

* Change all setDir/setPos orientations. Remove redundant check. Ensure that weapon locked state reflects it with the "getIn" command. Add a way to pass in a specific classname for the weapon assemble type. Add a callback function onDisassemble if user wants to set the state of the new tripod using the old weapon as a reference

* Actually check for the carryWeaponClassname in the deployWeapon check

* Ai Compatiblity

* Add stringtable entries

* Formatting fixes

* Stringtables for settings, fix setMagazineTurretAmmo

* inherit ammo for mags, reorder stringtable

displays correct ammo and descriptionShort

* don't require ace_javelin

* Tweaks, cleanup, localzation, ace_reload changes

change weapon tag to [CSW]
tweak localization strings
minor cleanup
simplify some ace_reload funcs

* delete moved dev func

* Hopefully fix issue where to-be deleted tripod intersects with newly created weapon and vice versa. Remove PBOPREFIX newline

* cleanup/proxyWeapon/mk6 compat

* RHS compatability

* Modified all tripod p3ds to have [0,0,0] at the mount. Ported AGS-30, Kord, M220, and SPG-9 tripods to APL And added them to CSW. Changed RHS compats to use new ported tripods. Changed strings to reflect real names.

* Change from M224 Mortar Bag -> Mk6 Mortar bag

* Add named propert (Autocenter) to make P3D [0,0,0] the center of the object instead of engine calculated

* oh no tabs

* remove some more evil tabs

* fix changes lost in merge

* fix bad merge pt2

* Fix UBC
2019-07-04 17:56:49 -05:00

5.0 KiB

layout title description group order parent mod version
wiki Crew Served Weapons Framework Explains how to add new Crew Served Weapons to ACE3 framework 5 wiki ace
major minor patch
3 13 0

1. Making a new Crew Served Weapon

1.1 CfgVehicles

class CfgVehicles {
    class LandVehicle;
    class StaticWeapon: LandVehicle {
        class ACE_Actions;
    };
    class StaticMGWeapon: StaticWeapon {
        class Turrets {
            class MainTurret;
        };
        class ACE_Actions: ACE_Actions {
            class ACE_MainActions;
        };
    };
    class banana_csw: StaticMGWeapon {
        class ace_csw {
            enabled = 1; // whether or not the weapon is affected by CSW                
            proxyWeapon = QGVAR(HMG_Static); // The weapon that will be added to the CSW on initialization. Used to ensure lower ammo-reload time when using Ammo Handling
            magazineLocation = "_target selectionPosition 'magazine'"; // The location of the magazine. Where the action for ammo-handling will appear on the weapon
            disassembleWeapon = QGVAR(staticHMGCarry); // What the weapon will disassemble to
            disassembleTurret = QGVAR(m3TripodLow); // Which tripod will appear when weapon has been disassembled
            ammoLoadTime = 7; // How long it takes in seconds to load ammo into the weapon           
            ammoUnloadTime = 5; // How long it takes in seconds to unload ammo from the weapon
            desiredAmmo = 69; // When the weapon is reloaded it will try and reload to this ammo capacity
            disassembleFunc = "myCoolFunction.sqf"; // A callback function for when the CSW gets disassembled. Arguments: [tripod, staticWeapon]
        };
    };
};

1.2 CfgMagazines

class CfgMagazines {
    class 100Rnd_127x99_mag; // Example magazine used - does not have to be this
    class banana_ammo: 100Rnd_127x99_mag {
        scope=2; // Needs to be 2 to make sure it shows up in Arsenal
        type=256; // Must be 256 to show up in Arsenal
        count = 100; // How much ammo gets added per "Load Ammo" selection
        model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // default ammo box model
        //ace_isbelt = 1; // Needed if your magazine has belt linking
    };
};

1.3 CfgWeapons

class CfgWeapons {
    class Launcher_Base_F;
    class banana_carry_weapon: Launcher_Base_F {
        class ACE_CSW {
            type = "weapon"; // What type of carry it is. Must always be "weapon" for the carry weapon
            deployTime = 4; // How long it takes to deploy the weapon onto the tripod
            pickupTime = 4; // How long it takes to disassemble weapon from the tripod
            class assembleTo {
                ace_csw_m3Tripod = "banana_csw_mod1"; // What tripod can this weapon deploy onto, and what vehicle will it spawn when it is deployed
                banana_tripod = "banana_csw";
            };
        };
    };
    
    class HMG_Static;
    class banana_proxy_weapon: HMG_Static {
        magazineReloadTime = 0.5; // Proxy weapons are spawned onto the CSW when it is assembled. Because ammo loading times use defined values in the magazine, this number needs to be low to ensure low latency
    };
};

1.4 CfgMagazineGroups

    class ace_csw_groups { // Ammo that can be loaded into this CSW
        class banana_ammo { // The magazine which the player can place into their inventory
            banana_dummy_ammo = 1; // Magazine that is loaded into the weapon as per CfgWeapons >> weapon >> magazines
        };
        
        // Optional
        class ace_csw_100Rnd_127x99_mag { // default magazine that CSW already implements
            banana_dummy_ammo = 1;
        };
        
        /*
          Ammo types already defined by CSW:
            - ace_csw_100Rnd_127x99_mag
            - ace_csw_100Rnd_127x99_mag_red
            - ace_csw_100Rnd_127x99_mag_green
            - ace_csw_100Rnd_127x99_mag_yellow
            - ace_csw_50Rnd_127x108_mag
            - ace_csw_20Rnd_20mm_G_belt
            - ACE_1Rnd_82mm_Mo_HE
            - ACE_1Rnd_82mm_Mo_Smoke
            - ACE_1Rnd_82mm_Mo_Illum
            - ACE_1Rnd_82mm_Mo_HE_Guided
            - ACE_1Rnd_82mm_Mo_HE_LaserGuided
            - Titan_AT
            - Titan_AA
        */
    };

2. Making a new Tripod

2.1 CfgVehicles

class CfgVehicles {
    class ace_csw_baseTripod;
    class banana_tripod: ace_csw_baseTripod {
        class ace_csw { disassembleTo = "banana_carry_tripod"; }; // What will be spawned when "Pickup Tripod" is selected
    };
};

2.2 CfgWeapons

class CfgWeapons {
    class Launcher_Base_F;
    class banana_carry_tripod: Launcher_Base_F {
        class ACE_CSW {
            type = "mount"; // What type of carry it is. Must always be "mount" for the tripod
            deployTime = 4; // How long it takes to deploy the tripod
            pickupTime = 4; // How long it takes to pickup the tripod
            deploy = "banana_tripod"; // what vehicle will spawn when the tripod is deployed
        };
    };
};