Jump to content

Sgt_HARTMAN

Donator
  • Posts

    22
  • Joined

  • Last visited

  • Donations

    10.00 GBP 

Posts posted by Sgt_HARTMAN

  1. I almost found, at first the exclamation mark which was present on the respawn location disappeared after removing the units and replacing their variable names initially noted "S1" by "s1".

     

    I realized that the loadout equipped before respawn is reset after death. I checked the script "OnPlayerRespawn.sqf" and there is obviously no faction setting to change.


    Since this script works with the "Player" variable, wouldn't these two errors be linked?


    I continue my research.

     

    PS: All faction changes work perfectly beyond this.

  2. Good morning all,

     

    I modified the mission in order to play on the side of the AAF against NATO. The whole mission scenario works without errors.

     

    I am embarrassed because I can't find why I can't appear in the AAF unit. I replaced all NATO units with AAFs by carefully repeating every detail on each unit.

     

    I changed the settings "West" by "Indep" or "guerrila" of fn_BaseManager & Main_Machine.sqf and despite that, I cannot manage spwan other than as a pilot.

     

    I've this message on bottom left.

    [ZONE RESTRICTION] no synchronized units found


    thank you in advance :)

     

  3.  

     

    what I would like it is that the number of current unit is distributed in several buildings by covering a maximul the AO. The size of the groups has no importance, I just want to avoid a group of 12 men occupying a single house This is for working CQB techniques

  4. Hello World, 

     

     

    I don't know if it's the same with you, but with me, the units appear in groups, grouped into the same building. 

     

     

    So I found a script in @Achilles Mods which allows to fill and distribute the units in the buildings.

     

    I tried several times to integrate it into "fn_mainAOSpawnHandler.sqf" but nothing works.

     

    According to you, is this script adaptable in "fn_mainAOSpawnHandler.sqf" (in this //=================Garrison inf===========================) ? or is it in another file? Or is it just not adaptable?

     

     

    I will try to create a new .SQF file calling this function. If anyone has an idea to adapt it, I would be grateful

     

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // AUTHOR: 			Kex
    // DATE: 			12/26/17
    // VERSION: 		AMAE.0.1.0
    // DESCRIPTION:		Teleports units to random positions in nearby buildings.
    //					Preferably orients them in such that they look out of windows.
    //					They won't be able to move away till forceSpeed is set to -1.
    //
    // ARGUMENTS:		0: ARRAY - 3D position from where the building search starts.
    //					1: ARRAY - Array of units which are used for the occupation.
    //					2: SCALAR - Building search radius in meter (default: 150).
    //					3: BOOLEAN - Only use positions inside buildings (default: false).
    //					4: BOOLEAN - Distribute units evenly over closest buildings (default: false).
    //
    // RETURNS:			nothing
    //
    // Example:			[position leader _group, units _group] call Achilles_fnc_instantBuildingGarrison;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    #define GOOD_LOS			10
    #define MEDIOCRE_LOS		3
    #define EYE_HEIGHT			1.53
    #define REL_REF_POS_LIST_HORIZONTAL		[[25,0,0],[0,25,0],[-25,0,0],[0,-25,0]]
    #define REL_REF_POS_VERTICAL			[0,0,25]
    
    // get arguments
    params ["_AOpos", "_units", ["_searchRadius",150,[0]], ["_insideOnly",false,[false]], ["_fillEvenly",false,[false]]];
    
    private _errorOccured = false;
    
    // local function for checking whether positions are inside a building
    private _fnc_isInsideBuilding =
    {
    	params ["_pos","_building"];
    	_pos = ATLToASL _pos;
    	_pos set [2, EYE_HEIGHT + (_pos select 2)];
    	
    	// if we have at least 3 walls and a roof, we are inside
    	if (_building in (lineIntersectsObjs [_pos, _pos vectorAdd REL_REF_POS_VERTICAL])) then
    	{
    		{_building in (lineIntersectsObjs [_pos, _pos vectorAdd _x])} count REL_REF_POS_LIST_HORIZONTAL >= 3;
    	}
    	else
    	{
    		false;
    	};
    };
    
    // get all near buildings and their positions inside
    private _nearestBuildings = nearestObjects [_AOpos, ["building"], _searchRadius, true];
    private _buildings = if (_searchRadius < 0) then {[_nearestBuildings select 0]} else {_nearestBuildings};
    private _pos_nestedList = [];
    {
    	private _building = _x;
    	private _pos_list = [_building] call BIS_fnc_buildingPositions;
    
    	// filter positions that are already occupied or not inside if "inside only" is true.
    	for "_i_pos" from (count _pos_list - 1) to 0 step -1 do
    	{
    		private _pos = _pos_list select _i_pos;
    		if (count (_pos nearEntities [["Man"], 0.5]) > 0 or {_insideOnly and {not ([_pos, _building] call _fnc_isInsideBuilding)}}) then 
    		{
    			_pos_list deleteAt _i_pos;
    		};
    	};
    
    	// filter buildings that do not offer valid positions
    	if (not (_pos_list isEqualTo [])) then
    	{
    		_pos_nestedList pushBack _pos_list;
    	};
    } forEach _buildings;
    
    for "AO-GarrisonInf-%1" from 0 to (count _units - 1) do
    {
    	private _unit = _units select AO-GarrisonInf-%1;
    	private "_pos";
    	private _n_building = count _pos_nestedList;
    	
    	if (_n_building > 0) then
    	{
    		if (_fillEvenly) then
    		{
    			// fill closest buildings by distributing the units randomly
    			private _i_building = floor random _n_building;
    			private _pos_list = _pos_nestedList select _i_building;
    			private _i_pos = floor random count _pos_list;
    			_pos = +(_pos_list select _i_pos);
    			_pos_list deleteAt _i_pos;
    			if (count _pos_list == 0) then {_pos_nestedList deleteAt _i_building};
    		}
    		else
    		{
    			// fill closest buildings one by one
    			private _i_building = 0;
    			private _pos_list = _pos_nestedList select _i_building;
    			private _i_pos = floor random count _pos_list;
    			_pos = +(_pos_list select _i_pos);
    			_pos_list deleteAt _i_pos;
    			if (count _pos_list == 0) then {_pos_nestedList deleteAt _i_building};
    		};
    		_unit setPosATL _pos;
    		
    		// rotate unit for a good line of sight
    		private _eyePosASL = (ATLToASL _pos) vectorAdd [0,0,EYE_HEIGHT];
    		private _startAngle = (round random 360);
            for "_angle" from _startAngle to (_startAngle + 360) step 10 do
    		{
    			// use angle finally if the line of sight is good
    			private _relRefPos = [GOOD_LOS*sin(_angle), GOOD_LOS*cos(_angle), 0];
    			if (not lineIntersects [_eyePosASL, _eyePosASL vectorAdd _relRefPos]) exitWith
    			{
    				_unit doWatch (_pos vectorAdd _relRefPos);
    			};
    
    			// use angle provisionally if the line of sight is mediocre
    			private _relRefPos = [MEDIOCRE_LOS*sin(_angle), MEDIOCRE_LOS*cos(_angle), 0];
    			if (not lineIntersects [_eyePosASL, _eyePosASL vectorAdd _relRefPos]) then
    			{
    				_unit doWatch (_pos vectorAdd _relRefPos);
    			};
    		};
    	}
    	else
    	{
    		// if we don't have sufficient building positions
    		_errorOccured = true;
    	};
    	_unit forceSpeed 0;
    };
    
    if (_errorOccured) then
    {
    	[localize "STR_AMAE_DID_NOT_FIND_SUFFICIENT_FREE_POSITIONS"] call Achilles_fnc_showZeusErrorMessage;
    };

    fn_mainAOSpawnHandler.sqf

    //=================Garrison inf===========================
    [_AOpos, _radiusSize] spawn {
        params ["_AOpos", "_radiusSize"];
        private _grpList = [];
        private _milBuildingsarray = nearestObjects [_AOpos, ["house","building"], _radiusSize*0.5];
        sleep 0.5;
        private _milBuildingCount = count _milBuildingsarray;
        private _garrisongroupamount = 0;
    	waitUntil {sleep 0.1; !isNil "MainFaction"};
        if (_milBuildingCount > 0) then{
    
            if (_milBuildingCount > 15) then{_milBuildingCount = 15;};
    
            for "_i" from 1 to _milBuildingCount do {
                private _infBuilding = selectRandom _milBuildingsarray;
                _milBuildingsarray = _milBuildingsarray - [_infBuilding];
                private _infbuildingpos = _infBuilding buildingPos -1;
                private _buildingposcount = count _infbuildingpos;
                if (_buildingposcount > 12 ) then {_buildingposcount = 12};
    
                _garrisongroupamount = _garrisongroupamount + 1;
                private _garrisongroup = createGroup east;
        		_grpList pushBack _garrisongroup;
                _garrisongroup setGroupIdGlobal [format ['AO-GarrisonInf-%1', _garrisongroupamount]];
    
                if (_buildingposcount > 0) then{
                    for "_i" from 1 to _buildingposcount do {
                        private _unitpos = selectRandom _infbuildingpos;
                        _infbuildingpos = _infbuildingpos - [_unitpos];
                        private _unitArray = (missionConfigFile >> "unitList" >> MainFaction >> "units") call BIS_fnc_getCfgData;
                        private _unittype = selectRandom _unitArray;
                        private _unit = _garrisongroup createUnit [_unittype, _unitpos, [], 0, "CAN_COLLIDE"];
                        _unit disableAI "PATH";
                    };
                };
                [units _garrisongroup] remoteExec ["AW_fnc_addToAllCurators", 2];
    
                { mainAOUnits pushBack _x; } forEach (units _garrisongroup);
                [units _garrisongroup] spawn derp_fnc_AISkill;
                {
                	_x setCombatMode "YELLOW";
                	_x setBehaviour "AWARE";
                } forEach _grpList;
    
                sleep 0.5;
            };
        };
        publicVariableServer "mainAOUnits";
    };
    
    [_AISkillUnitsArray] spawn {
        params ["_AISkillUnitsArray"];
    	[_AISkillUnitsArray] call derp_fnc_AISkill;
    };
    
    [mainAOUnits] remoteExec ["AW_fnc_addToAllCurators", 2];
    publicVariableServer "mainAOUnits";
    
    {
    	_x setCombatMode "YELLOW"; 
    	_x setBehaviour "AWARE";
    } forEach _grpList;
    
    
    mainAOUnitsSpawnCompleted = true;
    publicVariableServer "mainAOUnitsSpawnCompleted";

     

    Thanks

  5. That's what I do, I learn by integrating pre-edited scripts and create some basic ones. I & A is quite complex and it allows me to learn.

     

    I thank you for the advice you give me because you help me to learn even if I know you have more important things to do.

     

    I tried the last script you gave me but unfortunately nothing happens. the main and secondaries missions don't spawn but no error messages appears.

     

    Would this be a problem with "(_nextAO in controlledZones)" or because the "manualAO" should be called by another scipt ? or quite simply manually called by an admin command in game ? 

     

    I will continue my tests by modifying the script in "MainMachine.sqf"

     

    thanks for your help.

  6. I am not an expert in scripting, I made several attempts but unsuccessful.
    Would there be another way to only change the order of appearance? In my tests I changed the order of "Class" in "MainAos.hpp" but the first AO spawn always to "Atkinarki".
    Would there be another script determining the order of appearance of "Aos"?

    Thanks

  7. Hello everyone.


    Would anyone know how to randomize the appearance of the main missions?


    Indeed, I would like to do as on the old I & A at least two years old.


    That is, start the first mission anywhere on Altis and at the end of it, select another random location and no longer work with the "controlled zones".

     

    After several attempts to modify scripts in "fn_getAo.sqf" and "MainAos.hpp, I can not find a solution to what I want to achieve.

     

    I thank you in advance for your help.

     

    Sorry for any mistakes in my sentences, I am French and my English is not great ...

     

    Sgt_HARTMAN

     
  8. I find the solution, it's because when i try in editor an error appaers with the #include "\arma3_readme.txt"; and i put it in comment "//". 


    So i have replace that

    //#include "\arma3_readme.txt";

    By that 

     

    #include "\arma3server_readme.txt";

    And now all works perfectly 

     

    Thank you ! ;)

  9. Hello every one,

     

    I try to creat a little server for the French Community with French military mods. 

     

    everythings works great with all scripts but i encounter just one problem. 

     

    I have created my server.cfg and put on it :

    zeusAdminUIDs = [MyOwnUIDxxxxxxxxxxxxxxxxxxxxx]

    But when my server start i can't use zeus when i press Y key (there are no more ping but after about 5 minuts there are back and i have the message "Zeus is not online, blah blah blah...) . 

     

    I try too log as Admin with #login cmde and that works but not zeus

     

    Is somebody can help me to resolve my issue ?

     

    I post my server.cfg too if u see somthing wrong 

     

    Thank you 

     

    (sorry for my orthograph and grammar mistakes, my english is far to be perfect)

    //
    // server.cfg
    //
    // comments are written with "//" in front of them.
    
    // NOTE: More parameters and details are available at http://community.bistudio.com/wiki/server.cfg
    
    // STEAM PORTS (not needed anymore, it's +1 +2 to gameport)
    // steamPort       = 8766;     // default 8766, needs to be unique if multiple serves on same box
    // steamQueryPort  = 27016;    // default 27016, needs to be unique if multiple servers on same box
    
    // GENERAL SETTINGS
    hostname       = "[FR] FrenchBadCompany Invade & Annexe Semi-RP";    // Name of the server displayed in the public server list
    password     = "xxxxxx";      // Password required to join the server (remove // at start of line to enable)
    passwordAdmin  = "xxxxxx";       // Password to login as admin. Open the chat and type: #login password
    maxPlayers     = 60;    // Maximum amount of players, including headless clients. Anybody who joins the server is considered a player, regardless of their role or team.
    persistent     = 1;     // If set to 1, missions will continue to run after all players have disconnected; required if you want to use the -autoInit startup parameter
    zeusAdminUIDs = ["xxxxxxxxx","xxxxxxxxx"]
    rcon_password ="xxxxxxxx";
    
    // VOICE CHAT
    disableVoN       = 1;     // If set to 1, voice chat will be disabled
    vonCodecQuality  = 10;    // Supports range 1-30; 1-10 is 8kHz (narrowband), 11-20 is 16kHz (wideband), 21-30 is 32kHz (ultrawideband); higher = better sound quality, more bandwidth consumption
    
    // VOTING
    voteMissionPlayers  = 1;       // Minimum number of players required before displaying the mission selection screen, if you have not already selected a mission in this config
    voteThreshold       = 0.75;    // Percentage (0.00 to 1.00) of players needed to vote something into effect, for example an admin or a new mission. Set to 9999 to disable voting.
    allowedVoteCmds[] =            // Voting commands allowed to players
    {
    	// {command, preinit, postinit, threshold} - specifying a threshold value will override "voteThreshold" for that command
    	{"admin", false, false}, // vote admin
    	{"kick", false, true, 0.51}, // vote kick
    	{"missions", false, false}, // mission change
    	{"mission", false, false}, // mission selection
    	{"restart", false, false}, // mission restart
    	{"reassign", false, false} // mission restart with roles unassigned
    };
    
    // WELCOME MESSAGE ("message of the day")
    // It can be several lines, separated by comma
    // Empty messages "" will not be displayed, but can be used to increase the delay before other messages
    motd[] =
    {
    
    };
    motdInterval = 5;    // Number of seconds between each message
    
    // MISSIONS CYCLE
    class Missions
    {
    	class Mission1
    	{
    		template = "Invade_&_Annex_3_3_28.Altis"; // Filename of pbo in MPMissions folder
    		difficulty = "Recruit"; // "Recruit", "Regular", "Veteran", "Custom"
    	};
    };
    
    // LOGGING
    timeStampFormat  = "short";                 // Timestamp format used in the server RPT logs. Possible values are "none" (default), "short", "full"
    logFile          = "server_console.log";    // Server console output filename
    
    // SECURITY
    BattlEye             = 1;    // If set to 1, BattlEye Anti-Cheat will be enabled on the server (default: 1, recommended: 1)
    verifySignatures     = 0;    // If set to 2, players with unknown or unsigned mods won't be allowed join (default: 0, recommended: 2)
    kickDuplicate        = 1;    // If set to 1, players with an ID that is identical to another player will be kicked (recommended: 1)
    allowedFilePatching  = 1;    // Prevents clients with filePatching enabled from joining the server (0 = block filePatching, 1 = allow headless clients, 2 = allow all) (default: 0, recommended: 1)
    
    // FILE EXTENSIONS
    allowedLoadFileExtensions[] =       {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; // only allow files with those extensions to be loaded via loadFile command (since Arma 3 v1.19.124216) 
    allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; // only allow files with those extensions to be loaded via preprocessFile / preprocessFileLineNumbers commands (since Arma 3 v1.19.124323)
    allowedHTMLLoadExtensions[] =       {"htm","html","php","xml","txt"}; // only allow files and URLs with those extensions to be loaded via htmlLoad command (since Arma 3 v1.27.126715)
    
    // EVENT SCRIPTS - see http://community.bistudio.com/wiki/ArmA:_Server_Side_Scripting
    onUserConnected     = "";    // command to run when a player connects
    onUserDisconnected  = "";    // command to run when a player disconnects
    doubleIdDetected    = "";    // command to run if a player has the same ID as another player in the server
    onUnsignedData      = "kick (_this select 0)";    // command to run if a player has unsigned files
    onHackedData        = "kick (_this select 0)";    // command to run if a player has tampered files
    
    // HEADLESS CLIENT
    //headlessClients[]  = {"127.0.0.1"};    // list of IP addresses allowed to connect using headless clients; example: {"127.0.0.1", "192.168.1.100"};
    //localClient[]      = {"127.0.0.1"};    // list of IP addresses to which are granted unlimited bandwidth; example: {"127.0.0.1", "192.168.1.100"};

     

     

    Edit: Mark T - removed signature, some inappropriate words.  

  10.  

    hello to all.

     

    I allow myself to relaunch this topic because I encounter the same problem with the "DERP REVIVE".

     

    In fact, when I delete the lines of scripts inits.sqf, InitPlayerLocal.sqf and Descritpion.ext and after removing the folder "AIS", MAIN AOs no longer works. I only have the "Take Any" notification and nothing happens.

     

    Would I have forgotten something?

     

    If anyone could help me I'll be grateful!

     

    I want to apologize for my grammar, my English is not good ...

×
×
  • Create New...