Jump to content
_xetex_

Unofficial patch ArmA Resistance 2.01

Recommended Posts

The links are dead, and I had to reinstall my Arma CWA. Any possible way for me to get this patch? 

Share this post


Link to post
Share on other sites

Downloaded fine for me. 

 

One question, are mods broken in this patch? 

 

Just loaded a couple of SP missions at random and they both gave me errors, missing content etc. In the 1.96 version of the game (i still have the GOG for it), all the expansion stuff goes to a Res folder where as here it does not may that has something to do with it i'm not sure. 

 

FPS gain is noticeable compared to version 1.96, would like it to keep it like that. Also, is this using more than one core now? I heard the Linux port is multi-treated, seems the game might work better in that platform than on Windows for a change if that's the same. 

Share this post


Link to post
Share on other sites

you don't read with understanding, 2.01 is only for version 1.99

Share this post


Link to post
Share on other sites

why does this unofficial patch fixes my issues with mouse/sensitivity for some reason when I play ARMA CWA or ECP mouse sensitivity is weird its hard to aim , I tried lowering the sensitivity but it still feels kinda weird. Does this unofficial patch have something to do with mouse sensitivity?

Share this post


Link to post
Share on other sites
On 2/11/2020 at 2:24 AM, zygius461 said:

why does this unofficial patch fixes my issues with mouse/sensitivity for some reason when I play ARMA CWA or ECP mouse sensitivity is weird its hard to aim , I tried lowering the sensitivity but it still feels kinda weird. Does this unofficial patch have something to do with mouse sensitivity?

yep

Share this post


Link to post
Share on other sites

Some notes about new script commands:

ammoarray

Spoiler

Syntax:
    object ammoarray muzzleName
Return Value:
    array
The second parameter is "muzzleName". If using wrong name, e.g. using weaponName on a weapon whose name isn't equal to any of its muzzle's name, the return array will be empty, i.e. " [ ] ". More information about "weapon, muzzle, etc" can be seen here.

And that array, the return value, will list all modes of current muzzle. The magazine's name and left rounds will be display for each mode.

Example 1:
<east grenadier> ammoarray "ak74muzzle" will return ["ak74", 30, "ak74", 30, "ak74", 30], corresponding to 3 modes of AK74.
The muzzleName is case-insensitive.

magazinesArray

Spoiler

Syntax:
    magazinesArray object
Return Value:
    array

The elements of returned array is in form: magazineName (string), ammunition (number), magazineName (string), ammunition (number)...

This command is better than magazines. One might have noticed that an exhausted (but not removed) magazine will remain in the returned array of magazines and magazinesArray command. Thus it's hard to judge whether a magazine is empty by magazines but not hard for magaziensArray.

Spoiler

An example to judge precisely whether a unit exhausted its secondary weapon:


// CheckRearm.sqf
_unit = _this;
_wpnSec = secondaryWeapon _unit;
_magazines = _unit call loadFile "GetNotEmptyMags.sqf";
_validMags = [_wpnSec] call loadFile "WeaponValidMags.sqf";
if ("_x in _validMags" count _magazines == 0) then {_rearm = true};
_rearm

// "GetNotEmptyMags.sqf"
_unit = _this;
_magazinesArray = magazinesArray _unit; _index = 0; _count = count _magazinesArray; _magazines = [];
while "_index < _count" do {
	if ((_magazinesArray select (_index + 1)) > 0) then {_magazines set [count _magazines, _magazinesArray select _index]};
	_index = _index + 2;
};
_magazines

// "WeaponValidMags.sqf"
_weapons = _this; _mags = [];
{
	_weapon = _x;
	_muzzles = call format ["%1", _weapon GetWeaponParamArray "muzzles"];
	{
		_muzzle = _x; if (_x == "this") then {
			_muzzle = _weapon; _magazines = call format ["%1", _muzzle GetWeaponParamArray "magazines"];
		} else {
			_magazines = call format ["%1", [_weapon, _muzzle] GetWeaponSubParamArray "magazines"];
		};
		{
			_magazine = _x; if (_x == "this") then {_magazine = _muzzle};
			if !(_magazine in _mags) then {_mags set [count _mags, _magazine]};
		} forEach _magazines;
	} forEach _muzzles;
} forEach _weapons;
_mags

 

Get[Vehicle/Weapon/Ammo](Sub)Param(Array)

Spoiler

These commands can be applied to obtain parameters directly from CONFIG.

 

Remark 1: Those "...Array" commands return an array, but commands not returning array probably have to apply "format" first to convert into string and "call" then to obtain their actual value.

 

Example 1: In TZK_4.0.0, the version "setObjectTexture" starts to be widely applied on vehicles in-game, the GetVehicleParamArray is applied on "hiddenSelections" to obtain the array for iterator to be "setObjectTexture".
Example 2: In TZK_2.12 commands GetWeaponParamArray, GetWeaponSubParamArray are applied to obtain available magazines of particular weapon(s). The idea is to check all muzzles of the weapon, then obtain all magazines of each muzzles.

 

analogue method in 1.99:
One can camCreate a temporary vehicle/ammo in a SQF file, and obtain some parameters from that object:

  • HasDriver/Gunner/Commander and transportSoldier: camCreate some temporary "Logic" object(s) and apply moveInDriver/Gunner/Commander/Cargo command.
    • Spoiler
      
      
      private ["_vehicle", "_bool", "_logic"];
      
      _vehicle = typeOf (_this select 0) camCreate [0,0,20];
      _logic = "Logic" camCreate [0,0,0];
      call format ["_logic moveIn%1 _vehicle", _this select 1];
      _bool = count crew _vehicle > 0;
      deleteVehicle _logic;
      deleteVehicle _vehicle;
      [0,1] select _bool

       

       

    • Spoiler
      
      
      private ["_vehicle", "_i", "_c", "_j", "_full"];
      
      _vehicle = typeOf _this camCreate [0,0,20];
      _i = 0; _c = 100; _full = false;
      while "_i < _c && !_full" do {
      	call format [{_tempObjLogic%1 = "Logic" camCreate [0,0,0], _tempObjLogic%1 moveInCargo _vehicle}, _i];
      	if !(count crew _vehicle > _i) Then {_full = true};
      	_i = _i + 1
      };
      _j = _i; if (_i >= _c) Then {_i = 0};
      while "_j > 0" do {
      	call format [{deleteVehicle _tempObjLogic%1}, _j - 1];
      	_j = _j - 1
      };
      deleteVehicle _vehicle;
      _i - 1

       

  • weapons[] and magazines[]: directly obtain those array from that object.
    • Spoiler
      
      
      private ["_vehicle", "_array"];
      
      _vehicle = typeOf _this camCreate [0,0,20];
      _array = weapons _vehicle;
      deleteVehicle _vehicle;
      _array

       

       

  • weaponSlots: Add particular weapons/magazines to that vehicle to know the type and quantity of weaponSlots.
    • Spoiler
      
      
      private ["_vehicle", "_weapons", "_mags", "_slots"];
      
      _vehicle = typeOf _this camCreate [0,0,20];
      removeAllWeapons _vehicle;
      
      {_vehicle addWeapon _x} forEach ["HK", "LaserDesignator", "Binocular", "NVGoggles", "glockS"];
      {_vehicle addMagazine _x} forEach ["HK", "HK", "HK", "HK", "HK", "HK", "HK", "HK", "HK", "HK", "glocksmag","glocksmag","glocksmag","glocksmag"];
      
      _weapons = weapons _vehicle; _mags = magazines _vehicle;
      _slots	= 1 * ("_x == {HK}" count _weapons) + 16 * ("_x == {LaserDesignator}" count _weapons) + 4096 * ("_x == {Binocular}" count _weapons) + 4096 * ("_x == {NVGoggles}" count _weapons)
      		+ 2 * ("_x == {glockS}" count _weapons) + 256 * ("_x == {HK}" count _mags) + 32 * ("_x == {glocksmag}" count _mags);
      
      deleteVehicle _vehicle;
      _slots

       

       

    
Don't forget to delete those temporary objects in the end of SQF file.

No way to create temporary CfgWeapons object in-game. Editor can however pre-define some required data in mission, telling the relationship between weapons, muzzles and magazines.

(Set)Vector[Dir/Up/DirAndUp]

Spoiler

The only one need to be illustrated is setVectorDirAndUp, it accept an array whose elements are array as well.

Syntax:

  • object SetVectorDirAndUp [array1, array2]

See https://forums.bohemia.net/forums/topic/86426-setvectordirandup-usage-solved/?tab=comments#comment-1459492 for more information.

According to link above, the array1 should be treated as a vector meaning 3D-direction, and the array2 defines the "roll"(Euler Angle).

Thus if wish to set an object's 3D-direction without roll, one can write:

<object> setVectorDirAndUp [<3D-direction>, [0,0,1]]

 

setVectorDirAndUp is the most intuitive in the view of "vectorDir", for vectorDir is its 1st parameter. Actually we need 3 parameters in assign a vehicle's direction, for example, "longitude", "latitude" and "roll". However, when assign 2 3D-vector, we assigned 2 length and 4 angle and thus there's 1 redundant parameter (as in "<object> setVectorDirAndUp [<3D-direction>, [0,0,1]]", one value of array2 is redundant.

 

One can apply setVectorDir and setVectorUp separately, but take care that these 2 vectors aren't independent.

 

Like "setDir" command, it's recommend to use "setPos(ASL)" command right after having used setVector... commands, otherwise some abnormal stuff might occur.

 

And some applications about new commands. They're introduced in form of "applications" but not "commands" thus not list here directly.

Spoiler

 

to be continued...

Edited by CTI player IF
Updating
  • Like 2

Share this post


Link to post
Share on other sites

Please, is there a way to install this on Arma Cold War Crisis 1.99 Linux/Mac edition (Steam version)?

  • Like 2

Share this post


Link to post
Share on other sites
On 5/31/2020 at 2:37 AM, igloigabor said:

Please, is there a way to install this on Arma Cold War Crisis 1.99 Linux/Mac edition (Steam version)?

 

No way. Arma Cold War Crisis 1.99 Linux/Mac edition (Steam version) - is other game.

  • Sad 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×