Jump to content

[Release] Build Vectors - Rotate objects in Dayz Epoch (v2.34 P4L & non-P4L)


striker

Recommended Posts

  On 3/19/2015 at 10:43 AM, SchwEde said:

check the steps again and take a closer look at your variables.sqf

nice tip, SchwEde!

but i have no clue what to do in the variables.sqf...

i still get those errors which i dont understand, nor to find them in my variables.sqf

here´s my variables.sqf

  Reveal hidden contents

 

Error in expression <hen{
["","","",["Init","Init",0]] spawn build_vectors;
};
_passArray = [_locatio>
Error position: <build_vectors;
};
_passArray = [_locatio>
Error Undefined variable in expression: build_vectors
File mpmissions\__CUR_MP.Chernarus\Custom\A_Plot_for_Life\Action\player_build_create.sqf, line 36 
here´s my player_build_create.sqf

  Reveal hidden contents

 

Cannot create non-ai vehicle c_grasstall,
Error in expression <Back,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
};

sleep 0.5;

_lo>
Error position: <fnc_SetPitchBankYaw;
};

sleep 0.5;

_lo>
Error Undefined variable in expression: fnc_setpitchbankyaw
File mpmissions\__CUR_MP.Chernarus\Custom\A_Plot_for_Life\Action\player_build_controls.sqf, line 152
Error in expression <Back,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
};

if(_zheightchan>
Error position: <fnc_SetPitchBankYaw;
};

if(_zheightchan>
Error Undefined variable in expression: fnc_setpitchbankyaw
File mpmissions\__CUR_MP.Chernarus\Custom\A_Plot_for_Life\Action\player_build_controls.sqf, line 101

Error in expression <Back,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
_objectHelper setPo>
Error position: <fnc_SetPitchBankYaw;
_objectHelper setPo>
Error Undefined variable in expression: fnc_setpitchbankyaw
File mpmissions\__CUR_MP.Chernarus\Custom\A_Plot_for_Life\Action\player_build_controls.sqf, line 92
here´s my player_build_controls.sqf

  Reveal hidden contents

private ["_canDo","_passArray","_objHDiff","_isOk","_zheightchanged","_zheightdirection","_rotate","_dir","_object","_position","_isAllowedUnderGround","_location1","_location2","_cancel","_reason","_lastDir","_objectHelper","_objectHelperDir","_objectHelperPos","_vector];

_object = _this select 0;
_isAllowedUnderGround = _this select 1;
_location1 = _this select 2;
_objectHelper = _this select 3;

_passArray = [];

_objHDiff = 0;
_isOk = true;
_cancel = false;
_reason = "";
_dir = getDir player; //required to pass direction when building
helperDetach = false;
_canDo = (!r_drag_sqf and !r_player_unconscious);
_position = [_objectHelper] call FNC_GetPos;



while {_isOk} do {

_zheightchanged = false;
_zheightdirection = "";
_rotate = false;

if (DZE_Q) then {
DZE_Q = false;
_zheightdirection = "up";
_zheightchanged = true;
};
if (DZE_Z) then {
DZE_Z = false;
_zheightdirection = "down";
_zheightchanged = true;
};
if (DZE_Q_alt) then {
DZE_Q_alt = false;
_zheightdirection = "up_alt";
_zheightchanged = true;
};
if (DZE_Z_alt) then {
DZE_Z_alt = false;
_zheightdirection = "down_alt";
_zheightchanged = true;
};
if (DZE_Q_ctrl) then {
DZE_Q_ctrl = false;
_zheightdirection = "up_ctrl";
_zheightchanged = true;
};
if (DZE_Z_ctrl) then {
DZE_Z_ctrl = false;
_zheightdirection = "down_ctrl";
_zheightchanged = true;
};
if (DZE_4) then {
_rotate = true;
DZE_4 = false;
if(DZE_dirWithDegrees) then{
DZE_memDir = DZE_memDir - DZE_curDegree;
}else{
DZE_memDir = DZE_memDir - 45;
};

};
if (DZE_6) then {
_rotate = true;
DZE_6 = false;
if(DZE_dirWithDegrees) then{
DZE_memDir = DZE_memDir + DZE_curDegree;
}else{
DZE_memDir = DZE_memDir + 45;
};
};

if(DZE_updateVec) then{
[_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
DZE_updateVec = false;
};

if (DZE_F and _canDo) then {
if (helperDetach) then {
_objectHelper attachTo [player];
DZE_memDir = DZE_memDir-(getDir player);
helperDetach = false;
[_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
} else {
_objectHelperPos = getPosATL _objectHelper;
detach _objectHelper;
DZE_memDir = getDir _objectHelper;
[_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
_objectHelper setPosATL _objectHelperPos;
_objectHelper setVelocity [0,0,0]; //fix sliding glitch
helperDetach = true;
};
DZE_F = false;
};

if(_rotate) then {
[_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
};

if(_zheightchanged) then {
if (!helperDetach) then {
detach _objectHelper;
_objectHelperDir = getDir _objectHelper;
};

_position = [_objectHelper] call FNC_GetPos;

if(_zheightdirection == "up") then {
_position set [2,((_position select 2)+0.1)];
_objHDiff = _objHDiff + 0.1;
};
if(_zheightdirection == "down") then {
_position set [2,((_position select 2)-0.1)];
_objHDiff = _objHDiff - 0.1;
};

if(_zheightdirection == "up_alt") then {
_position set [2,((_position select 2)+1)];
_objHDiff = _objHDiff + 1;
};
if(_zheightdirection == "down_alt") then {
_position set [2,((_position select 2)-1)];
_objHDiff = _objHDiff - 1;
};

if(_zheightdirection == "up_ctrl") then {
_position set [2,((_position select 2)+0.01)];
_objHDiff = _objHDiff + 0.01;
};
if(_zheightdirection == "down_ctrl") then {
_position set [2,((_position select 2)-0.01)];
_objHDiff = _objHDiff - 0.01;
};

if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then {
_position set [2,0];
};

if (surfaceIsWater _position) then {
_objectHelper setPosASL _position;
} else {
_objectHelper setPosATL _position;
};

if (!helperDetach) then {
_objectHelper attachTo [player];
};
[_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
};

sleep 0.5;

_location2 = [player] call FNC_GetPos;
_objectHelperPos = [_objectHelper] call FNC_GetPos;

if(DZE_5) exitWith {
_isOk = false;
_position = [_object] call FNC_GetPos;
detach _object;
_dir = getDir _object;
_vector = [(vectorDir _object),(vectorUp _object)];
deleteVehicle _object;
detach _objectHelper;
deleteVehicle _objectHelper;
};

if(_location1 distance _location2 > 10) exitWith {
_isOk = false;
_cancel = true;
_reason = "You've moved to far away from where you started building (within 10 meters)";
detach _object;
deleteVehicle _object;
detach _objectHelper;
deleteVehicle _objectHelper;
};

if(_location1 distance _objectHelperPos > 10) exitWith {
_isOk = false;
_cancel = true;
_reason = "Object is placed to far away from where you started building (within 10 meters)";
detach _object;
deleteVehicle _object;
detach _objectHelper;
deleteVehicle _objectHelper;
};

if(abs(_objHDiff) > 10) exitWith {
_isOk = false;
_cancel = true;
_reason = "Cannot move up or down more than 10 meters";
detach _object;
deleteVehicle _object;
detach _objectHelper;
deleteVehicle _objectHelper;
};

if (player getVariable["combattimeout", 0] >= time) exitWith {
_isOk = false;
_cancel = true;
_reason = (localize "str_epoch_player_43");
detach _object;
deleteVehicle _object;
detach _objectHelper;
deleteVehicle _objectHelper;
};

if (DZE_cancelBuilding) exitWith {
_isOk = false;
_cancel = true;
_reason = "Cancelled building.";
detach _object;
deleteVehicle _object;
detach _objectHelper;
deleteVehicle _objectHelper;
};
};



_passArray = [_cancel,_reason,_position,_dir,_vector];
_passArray //[bool,string,array,int,array]

 

 Error in expression <Back,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;
waitUntil {sleep 0.>
  Error position: <fnc_SetPitchBankYaw;
waitUntil {sleep 0.>
  Error Undefined variable in expression: fnc_setpitchbankyaw
File mpmissions\__CUR_MP.Chernarus\Custom\Snap_Pro\snap_build.sqf, line 120
Error in expression <Back,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw;

};
_cnt = _cnt+1;
>
  Error position: <fnc_SetPitchBankYaw;

};
_cnt = _cnt+1;
>
  Error Undefined variable in expression: fnc_setpitchbankyaw
File mpmissions\__CUR_MP.Chernarus\Custom\Snap_Pro\snap_build.sqf, line 286
here´s my snap_build.sqf

  Reveal hidden contents

Link to comment
Share on other sites

@SchwEde- thanxx for your very fast response :-)

 

hm, seems that the files hooked up correct

 

here´s my compiles.sqf

 

  Reveal hidden contents

Link to comment
Share on other sites

ok, why are those variables in the else part in you compiles.sqf?

if (DZE_modularBuild) then {
player_build = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\modular_build.sqf";
player_build_countNearby = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_countNearby.sqf";
player_build_states = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_states.sqf";
player_build_needNearby = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_needNearby.sqf";
player_build_getConfig = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_getConfig.sqf";
player_build_plotCheck = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_plotCheck.sqf";
player_build_buildReq = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_buildReq.sqf";
player_build_create = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_create.sqf";
player_build_controls = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_controls.sqf";
player_build_publish = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build_publish.sqf";
DZE_snap_build_file = "Custom\Snap_Pro\snap_build.sqf"; // Set as a global variable as it is also referenced in snapbuild.sqf
snap_build = compile preprocessFileLineNumbers DZE_snap_build_file;
} else {
player_build = compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\player_build.sqf";
fnc_SetPitchBankYaw = compile preprocessFileLineNumbers "Custom\BuildVectors\fnc_SetPitchBankYaw.sqf";
DZE_build_vector_file = "Custom\BuildVectors\build_vectors.sqf";
build_vectors = compile preprocessFileLineNumbers DZE_build_vector_file;
};

this will allways return to true, since you are asking for DZE_modularBuild. Have you written this yourself or copied from somewhere?

Best thing is to merge your player_build with the one from vector building. This is some shitty compare work, but you need to get through it to get this nice and clean plus you get some more expirience in scripting ^^

Link to comment
Share on other sites

@SchwEde - oh yeah, hm...

i am not a coder nor a scripter. i did it all myself. my only know ledge about all that, is only that what i have learned in the past 3 weeks ;-) (i am only an system admin / networks)

i just did that copy - paste thing as described in all the installations guides of the addons.

what i was trying was:

i only want to use our own custom files.

because each addon was using his own custom files, and did not respect our custom files, where we just have alot of other scripts installed.

if i would use them, all our previous addons wont work anymore.

 

first i started with snapbuild pro 1.4. after that i was going to "a plot 4 life 2.34 / 2.5". in that i saw that the snap build pro1.4.1 is installed by side with this. next step was that i was going  to the install of the BuildVectors 4 which comes with  Precise Base Building 1.04. the next step was the admin build .. i did that step by step, and compared all the custom files of them, and merged them in mine. then i corrected the folder paths and landed here :-)

 

my start point was here 

 

next steps would be to install the achmed´s indestructable items and then, finally zupa´s doormanagement 3.0

 

so what should i do  now, can i simply remove your mentioned variables above, or replace them to somewhere away from the "else" part in the same file? i have a look now at the player_build and this compiles.sqf

 

btw, good morning, we have now  the sun eclipse here over europe ;-)

 

cheers

Link to comment
Share on other sites

if you install something and everything is working correctly make this version as you base for the next script.

 

If you a scripts which edit the same sqf (e.g. player_build.sqf) allways try to merge them together. This works the best for me, less files, less complicated stuff ^^

if something does not work ask for help :)

but allways try to merge scripts rather then have a bunch of files which do almost the same thing

Link to comment
Share on other sites

@SchwEde - 

 

thats exactly what i am trying to do the last steps...

 

but i got lost, when installing the vector build.

 

5mins ago i was on chainsaw´s server.  he showed me how perfect the vector build works...

 

now i am imprssed and like to get this to work to...

 

so i check now what i have installed with the vector and remove that..

 

after that i try to merge that stuff...

 

thanx

Link to comment
Share on other sites

Hello I have a problem with the Maintain and vector. The Vector works but everytime I try to Maintain then everything is set in its origin. I would just like to have you just need to pay for maintain the base, but unfortunately it's not the time for. I hope you can help me further.
excuse for my bad englich.

Link to comment
Share on other sites

Ok dann in deutsch ;)

 

Also ich habe das Problem das ich gerne zu dem Vector Maintain haben möchte. Aber leider immer wenn man Maintain tut Wird alles was man mit Vector gebaut hat wird dann so hin gestellt als währe vector gar nicht da.

 

Bsp.: Zwei Stein Tore ein zu 90° nach links und eins zu 90° nach rechts und dann zusammen gebaut, nach dem Maintain hängen sie in der Luft und sind in einander.

 

Meine Frage ist nun gibt es eine Möglichkeit auch das Maintain zu benutzten?

Link to comment
Share on other sites

das müsste dann die hier sein maintain_area.sqf oder??

ich habe jetzt den Plot Manager eingebaut

private ["_missing","_missingQty","_proceed","_itemIn","_countIn","_qty","_num_removed","_uniqueID","_removed","_removed_total","_tobe_removed_total","_obj","_objectID","_objectUID","_classname","_location","_dir","_objectCharacterID","_object","_temp_removed_array","_textMissing","_target","_objectClasses","_range","_objects","_requirements","_count","_cost","_itemText","_option"];
disableSerialization;

if (DZE_ActionInProgress) exitWith { cutText [(localize "STR_EPOCH_ACTIONS_2") , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;

player removeAction s_player_maintain_area;
s_player_maintain_area = 1;
player removeAction s_player_maintain_area_preview;
s_player_maintain_area_preview = 1;

_target = cursorTarget;

_objectClasses = DZE_maintainClasses;
_range = DZE_PlotPole select 0;
_objects = nearestObjects [_target, _objectClasses, _range];

_objects_filtered = [];
{
    if (damage _x >= DZE_DamageBeforeMaint) then {
        _objects_filtered set [count _objects_filtered, _x];
   };
} count _objects;
_objects = _objects_filtered;

_count = count _objects;

if (_count == 0) exitWith {
	_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7012);
	_result =  format["Objects to maintain: %1" , _count];
	_ctrl ctrlSetText   _result;		
	_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7013);
	_result =  format["No money needed.", " "];	
	_ctrl ctrlSetText   _result;	
	DZE_ActionInProgress = false;
	s_player_maintain_area = -1;
	s_player_maintain_area_preview = -1;
};

_requirements = [];
switch true do {
	case (_count <= 10):  {_requirements = [["ItemGoldBar10oz",1]]};
	case (_count <= 20):  {_requirements = [["ItemGoldBar10oz",2]]};
	case (_count <= 35):  {_requirements = [["ItemGoldBar10oz",3]]};
	case (_count <= 50):  {_requirements = [["ItemGoldBar10oz",4]]};
	case (_count <= 75):  {_requirements = [["ItemGoldBar10oz",6]]};
	case (_count <= 100): {_requirements = [["ItemBriefcase100oz",1]]};
	case (_count <= 175): {_requirements = [["ItemBriefcase100oz",2]]};
	case (_count <= 250): {_requirements = [["ItemBriefcase100oz",3]]};
	case (_count <= 325): {_requirements = [["ItemBriefcase100oz",4]]};
	case (_count <= 400): {_requirements = [["ItemBriefcase100oz",5]]};
	case (_count <= 475): {_requirements = [["ItemBriefcase100oz",6]]};
	case (_count <= 550): {_requirements = [["ItemBriefcase100oz",7]]};
	case (_count <= 625): {_requirements = [["ItemBriefcase100oz",8]]};
	case (_count > 625):  {_requirements = [["ItemBriefcase100oz",9]]};
};



_option = _this select 0;
switch _option do {
	case "maintain": {		
		_missing = "";
		_missingQty = 0;
		_proceed = true;
		{
			_itemIn = _x select 0;
			_countIn = _x select 1;
			_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
			if (_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
		} forEach _requirements;

		if (_proceed) then {
			player playActionNow "Medic";
			[player,_range,true,(getPosATL player)] spawn player_alertZombies;

			_temp_removed_array = [];
			_removed_total = 0;
			_tobe_removed_total = 0;
			
			{
				_removed = 0;
				_itemIn = _x select 0;
				_countIn = _x select 1;
				_tobe_removed_total = _tobe_removed_total + _countIn;
				
				{					
					if ((_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
						_num_removed = ([player,_x] call BIS_fnc_invRemove);
						_removed = _removed + _num_removed;
						_removed_total = _removed_total + _num_removed;
						if (_num_removed >= 1) then {
							_temp_removed_array set [count _temp_removed_array,_x];
						};
					};
				} forEach magazines player;
			} forEach _requirements;

			// all required items removed from player gear
			if (_tobe_removed_total == _removed_total) then {
				cutText [format[(localize "STR_EPOCH_ACTIONS_4"), _count], "PLAIN DOWN", 5];
				PVDZE_maintainArea = [player,1,_target];
				publicVariableServer "PVDZE_maintainArea";										
				_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7012);
				_result =  format["SUCCESS : Objects maintained: %1" , _count];
				_ctrl ctrlSetText   _result;		
				_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7013);
				_result =  format["SUCCESS : Price maintained: %1 %2 !" , (_requirements select 0) select 1, (_requirements select 0) select 0];
				_ctrl ctrlSetText   _result;
			} else {
				{player addMagazine _x;} count _temp_removed_array;
				cutText [format[(localize "STR_EPOCH_ACTIONS_5"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];
			};
		} else {
			_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
			_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7012);
			_result =  format["FAILED : Objects maintained: 0" , _count];
			_ctrl ctrlSetText   _result;			
			_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7013);
			_result =  format["FAILED : Money needed: %1 %2 !" , (_requirements select 0) select 1, (_requirements select 0) select 0];
			_ctrl ctrlSetText   _result;			
			cutText [format[(localize "STR_EPOCH_ACTIONS_6"), _missingQty, _textMissing], "PLAIN DOWN"];
		};
	};
	case "preview": {
		_cost = "";
		{
			_itemIn = _x select 0;
			_countIn = _x select 1;
			_itemText = getText(configFile >> "CfgMagazines" >> _itemIn >> "displayName");
			if (_cost != "") then {
				_cost = _cost + " and ";
			};
			_cost = _cost + (str(_countIn) + " of " + _itemText);
		} count _requirements;					
		cutText [format[(localize "STR_EPOCH_ACTIONS_7"), _count, _cost], "PLAIN DOWN"];
		_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7012);
		_result =  format["Objects to maintain: %1" , _count];
		_ctrl ctrlSetText   _result;		
		_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7013);
	    _result =  format["Price to maintain: %1 %2" ,  (_requirements select 0) select 1, (_requirements select 0) select 0];
		_ctrl ctrlSetText   _result;					
	};
};

DZE_ActionInProgress = false;
s_player_maintain_area = -1;
s_player_maintain_area_preview = -1;
Link to comment
Share on other sites

ok, finally we have now restored  the plot4life 2.35 working with snap build pro 1.4.1 together with doormanagement 3.0

 

what should be our next step?

 

is this build vector 4 compatible to ap4l 2.5?  should we update to 2.5 first? or is the 2.35 quite enough?

 

when we install this build vector, should we begin with the legacy install of version 3, or can we go directly to the 4 version?

 

next thing is, that the precise building 1.04 which is included in the build vector 3 step, is also included in the a plot 4 life 2.5, as RimBlock told me today..

 

go on SchwEde ;-) :D

Link to comment
Share on other sites

  On 3/25/2015 at 2:02 PM, cheech said:

ok, finally we have now restored  the plot4life 2.35 working with snap build pro 1.4.1 together with doormanagement 3.0

 

what should be our next step?

 

is this build vector 4 compatible to ap4l 2.5?  should we update to 2.5 first? or is the 2.35 quite enough?

 

when we install this build vector, should we begin with the legacy install of version 3, or can we go directly to the 4 version?

 

next thing is, that the precise building 1.04 which is included in the build vector 3 step, is also included in the a plot 4 life 2.5, as RimBlock told me today..

 

go on SchwEde ;-) :D

you would install the files meant to be used with plot 4 life, and you would skip the installation of the snap build pro since you already have that installed.

If you click the install directions, literally the very first thing you read

"If you have not installed Rimblock's A Plot for Life v2.34, do so now (ignore the server_monitor.sqf file as I will cover it)."

Link to comment
Share on other sites

  On 3/25/2015 at 6:30 PM, DangerRuss said:

you would install the files meant to be used with plot 4 life, and you would skip the installation of the snap build pro since you already have that installed.

If you click the install directions, literally the very first thing you read

"If you have not installed Rimblock's A Plot for Life v2.34, do so now (ignore the server_monitor.sqf file as I will cover it)."

 

I write it again: ok, finally we have now restored  the plot4life 2.35 working with snap build pro 1.4.1 together with doormanagement 3.0

 

your answer is completetly useless and nonesense

Link to comment
Share on other sites

  On 3/25/2015 at 7:01 PM, SchwEde said:

its allways the same way:

 

Find a good Script

Follow the Instructions

Look for sqfs you already have customized and merge them together

test if everything work

struggle with problems? post in the support thread or make one

enjoy :)

 

this also didnt answer a single question of mine...

 

i simply like to know which versions are working togehter!

which versions you all use currently?

 

1. is snap build pro 2.5  compatible to the rest of my desired addons?

if so, i think that we can skip the installation of the included precise building 1.04 included in the build vector 3, cause its a part of the build vector 4 installation.

we also can skip that precise building if we directly heading to the install of build vector 4.

 

2. is build vector 4 just an update of the version 3?

3. should we first install build vector 3, or can we directly go to build vector 4?

 

simple questions, expecting simply answers ;-)

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Advertisement
×
×
  • Create New...