Jump to content

BL1P

Member
  • Content Count

    1052
  • Joined

  • Last visited

  • Medals

  • Medals

Posts posted by BL1P


  1. @NouberNou can you help these guys with this: https://github.com/KoffeinFlummi/AGM/issues/1529#issuecomment-68158725

    I use this Probably wrong but one of the team can correct it maybe :)

    ran on client init

    acre_enabled = isClass(configFile/"CfgPatches"/"acre_main");
    

    ran when unconsious

    if (acre_enabled) then 
    {
    	_ret = [true] call acre_api_fnc_setSpectator;
    };
    

    ran when revived

    if (acre_enabled) then 
    {
    	_ret = [false] call acre_api_fnc_setSpectator;
    };
    

    in the onPlayerRespawn.sqf

    if !(isNil "acre_enabled") then 
    {
    	if (acre_enabled) then 
    	{
    		_ret = [false] call acre_api_fnc_setSpectator;
    	};
    };
    

    Hope that helps

    ALSO does anyone have a working AI can hear players using ACRE script that they can share ?

    I've asked before but nobody had a working shareable one then, maybe now they do ?


  2. Anyone else getting these errors in the headlessclient rpt log?

    9:03:20 Error in expression BIS_TotDesatCC ppEffectAdjust [1,1,0,[0,>
    9:03:20 Error position: 
    9:03:20 Error Undefined variable in expression: bis_totdesatcc
    9:03:20 File A3\functions_f\Feedback\fn_feedbackInit.sqf, line 56
    9:03:20 Wrong init state
    9:03:20 Error in expression BIS_SuffCC ppEffectAdjust [1,1,0,[0.0090>
    9:03:20 Error position: 
    9:03:20 Error Undefined variable in expression: bis_suffcc
    

    Yes we do.


  3. There are likely lots of ways you can accomplish this BL1P.

    Using the uiNameSpace variable BIS_fnc_arsenal_cam will tell you whether the arsenal is open or not, its objNulll if its not open.

    How to check for this could also be written slightly differently dependent on how/where your calling the arsenal in the first place e.g from an ammo box, player action or from inventoryOpened.

    Heres some code from a quick test. It checks via an onEachFrame, its stacked ID is added to the player in a variable called "VAcatch" just incase you maybe want to turn the stacked event off (no sense checking for arsenal ever frame if the only place you can use it is while your back at base). It also checks to see if the player has changed their uniform and reapplies their insignia. Not thoroughly checked but should give you something to go from..

    player setVariable [ "VAcatch", [ "VAcatch", "onEachFrame", {
    if ( !( isNil { _this getVariable "VAcatch" } ) && { !( isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] ) ) } ) then {
    	_this setVariable [ "VAcatch", nil ];
    	_thread = _this spawn {
    		_uniform = uniform _this;
    		waitUntil { isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] )  };
    		_faction = _this getVariable [ "Faction", nil ];
    		if ( _uniform != uniform _this && { !( isNil "_faction" ) } ) then {
    			[ _this, _faction ] call BIS_fnc_setUnitInsignia;
    		}; 
    		_this setVariable [ "VAcatch", "VAcatch" ];
    	};
    }; 
    }, player ] call BIS_fnc_addStackedEventHandler ];

    As i said above there are likely better ways to implement this based on what you actually need but the above serves as a catch all example.

    You, are a scholar and a gentleman sir.

    Once again you supply the goods, Thank you Larrow.

    Haven't tested it but I know your work, I have faith :)

    This is how we call the Virtual Arsenal Whitelist btw.

    in the init of the object (Land_Pallet_MilBoxes_F)

    _Ammo = [this] execVM "scripts\VA_Ammo\VA.sqf";
    

    VA.sqf

    //--- Ammobox Start
    _DRBox = _this select 0;
    
    ["AmmoboxInit",[_DRBox,false]] call BIS_fnc_arsenal;
    
    [_DRBox,[true],true] call BIS_fnc_removeVirtualBackpackCargo;
    [_DRBox,[true],true] call BIS_fnc_removeVirtualItemCargo;
    [_DRBox,[true],true] call BIS_fnc_removeVirtualWeaponCargo;
    [_DRBox,[true],true] call BIS_fnc_removeVirtualMagazineCargo;
    
    
    [_DRBox,[
    "classname",
    "classname"
    ],true] call BIS_fnc_addVirtualBackpackCargo;
    
    [_DRBox,[
    "classname",
    "classname"
    ],true] call BIS_fnc_addVirtualMagazineCargo;
    
    [_DRBox,[
    "classname",
    "classname"
    ],true] call BIS_fnc_addVirtualWeaponCargo;
    
    [_DRBox,[
    "classname",
    "classname"
    ],true] call BIS_fnc_addVirtualItemCargo;	
    

    Dont know if this is the best way or not but seems to work ok for us.

    Although sometimes it freaks out, greying out loadouts etc.

    Also sometimes it seems to be the cause of some red chain dsync.

    But since last update we have been having massive problems with dsync, especially in vehicles.

    Anyway once again Thank you.


  4. Hello,

    I don't have solution for your problem but I'm very interested about your script. Is it possible to share it please?

    I've not found anything like that and i thinks it's very usefull for a clan.

    Thank you and good luck for your issue

    Hello Relianor.

    I think you mean the inhouse factions right ?

    Step : 1

    create a file in a folder in the SERVERS Arma3 root folder.

    We called our folder dRnF (Dedicated Rejects and Friends) and place an .sqf in there.

    we called ours dRFriends.sqf

    Our list is obviously quite a bit larger than this example I show below.

    private ["_players", "_player"];
    _players = [];
    
    _player = ["PlayersUIDGoesHere",1,"Falcons"]; //--- BL1P - lvl 2 - Falcon
    _players set [(count _players), _player];
    
    _player = [""PlayersUIDGoesHere",0,"Eagles"]; //--- ANOTHER MEMBER - lvl 1 - Eagle
    _players set [(count _players), _player];
    
    _player = [""PlayersUIDGoesHere",0,""]; //--- ANOTHER MEMBER - lvl 1 - NO FACTION
    _players set [(count _players), _player];
    
    _players;
    

    Step : 2

    In the main mission Init.sqf we have this snippet.

    //--- Check if player is a dR member or friend (ran by players and server)
    _handle3 = execVM "core\dR_N_Friends.sqf";
    waitUntil{scriptDone _handle3};
    

    Step : 3

    Create the insignias :-

    Place the insignia images in a folder in your mission

    Ours is in Core\Images

    Add the insignias via the description.ext.

    class CfgUnitInsignia
    {
    class Falcons
    {
    	displayName = "Falcons"; // Name displayed in Arsenal
    	author = "BL1P"; // Author displayed in Arsenal
    	texture = "Core\Images\Falcons.paa"; // Image path
    	textureVehicle = ""; // Does nothing currently, reserved for future use
    };
    
    	class Eagles
    {
    	displayName = "Eagles"; // Name displayed in Arsenal
    	author = "BL1P"; // Author displayed in Arsenal
    	texture = "Core\Images\Eagles.paa"; // Image path
    	textureVehicle = ""; // Does nothing currently, reserved for future use
    };
    };
    

    Step : 4

    We have a folder called Core in the mission root folder with a script called dR_N_Friends.sqf inside it.

    This script will sort out :-

    Who is allowed to take command slot

    Who can take pilot slot

    Who gets which insignia

    Who gets which type of random welcome message

    //////////////////////////////////////////////
    //        dR_N_Friends.sqf					
    //        by Fluit n BL1P						
    //     execVM "dR_N_Friends.sqf";	
    //////////////////////////////////////////////
    
    private ["_dRFriends","_IamAdRFriend", "_isAdmin", "_welcome", "_welcomeadmin", "_isFalcon"];
    _IamAdRFriend = false;
    _isAdmin = false;
    
    _welcome = [
    		"Welcome back %1",
    		"Hello %1!",
    		"What's up %1!",
    		"Hey its %1!",
    		"Wotcha %1",
    		"Ay-up %1",
    		"Welcome home Lord %1",
    		" %1! Thou hast returneth",
    		"Delighted to see you %1",
    		"Golly gosh...! if it isnt %1",
    		"My word %1 is that a gun in your pants or are you pleased to be back?",
    		"%1 Today try to remember G is not for Gear !!",
    		"Accessing Bank details for %1",
    		"player %1 Connected dangerous weapons removed",
    		"Its a bird ! ... Its a plane !... NO its %1",
    		"OMG! Yay! its %1",
    		"Ladies and Gentlemen.... I present to you... %1",
    		"%1..  %1..  %1.. hip.. hip.. hooorah",
    		"Jolly hockey sticks its %1",
    		"Well slap me in the face with a wet kipper... if it isnt %1",
    		"Shhhh %1s back",
    		"%1 connected ..... accessing password details .... password taken from %1",
    		"The people await your orders %1."
    		];
    _welcomeadmin = [
    		"Welcome back %1",
    		"Hello %1!",
    		"What's up %1!",
    		"Hey its %1!",
    		"Wotcha %1",
    		"Ay-up %1",
    		"Welcome home Lord %1",
    		"%1! Thou hast returneth",
    		"Delighted to see you %1",
    		"Golly gosh...! if it isnt %1",
    		"My word %1 is that a gun in your pants or are you pleased to be back?",
    		"%1 Today try to remember G is not for Gear !!",
    		"Accessing Bank details for %1",
    		"player %1 Connected dangerous weapons removed",
    		"Its a bird ! ... Its a plane !... NO its %1",
    		"OMG! Yay! its %1",
    		"Ladies and Gentlemen.... I present to you... %1",
    		"%1..  %1..  %1.. hip.. hip.. hooorah",
    		"Jolly hockey sticks its %1",
    		"Well slap me in the face with a wet kipper... if it isnt %1",
    		"Shhhh %1s back",
    		"%1 connected ..... accessing password details .... password taken from %1",
    		"The people await your orders %1."
    		];			
    
    systemchat "dRnF is running on this Server.";
    
    if (isServer) exitWith 
    {
    dRFriendsArray = call compile preprocessFile "\dRnF\dRFriends.sqf";
    publicVariable "dRFriendsArray";
    };
    
    
    if (isNil ("dRFriendsArray")) then 
    {
    	waitUntil {!isNil("dRFriendsArray")};
    };
    sleep 1;
    
    
    {
       if ( (getPlayerUID player) == (_x select 0)) then {
           // Player UID is in friend list => he is our friend
           _IamAdRFriend = true;
    
           if ( (_x select 1) == 1) then {
               // Player is an admin
               _isAdmin = true;
           };
           //--- set faction Insignias
           player setVariable["Faction", (_x select 2), true];
           switch ((_x select 2)) do
           {
               case "Falcons": {
                   [player, "Falcons"] call BIS_fnc_setUnitInsignia;
    			systemChat format ["Welcome %1 Fellow Falcon", name player];
               };
               case "Eagles":
               {
    			[player, "Eagles"] call BIS_fnc_setUnitInsignia;
    			systemChat format ["Welcome %1 Fellow Falcon", name player];
               };
           };
       };
    } forEach dRFriendsArray;
    
    
    player setVariable["friend", _IamAdRFriend, true];
    player setVariable["admin", _isAdmin, true];
    _playerType = typeOf player;
    
    if ((_playerType == "B_officer_F") && !(_isAdmin)) then {failMission "END6";}; //--- bl1p sent back to lobby
    if ((_playerType == "B_Pilot_F" || _playerType == "B_Helipilot_F" || _playerType == "B_helicrew_F" || _playerType == "B_soldier_repair_F") && !(_IamAdRFriend)) then {failMission "END7";}; //--- bl1p sent back to lobby
    
    if (_IamAdRFriend) then {
    if (_isAdmin) then {
    	//--- level 2
    	systemChat format [_welcomeadmin call BIS_fnc_selectRandom, name player];
    
    } else {
    	//--- level 1
    	systemChat format [_welcome call BIS_fnc_selectRandom, name player];
    };
    } else {
    	//--- level None
    	systemChat format ["Hello %1 you are not a dR registered Friend or Member",name player];
    	systemChat "Contact info is in the map info... or on a Sign in base";
    	systemChat "Enjoy your stay";
    };
    

    Step : 5

    If you plan on using the Slot restrictions you will need to create the following :- (if you dont comment that part out)

    In the description.ext add the following.

    //--- Slot restrictions
    #include "core\Debriefing.hpp"
    

    In the core folder add a file called Debriefing.hpp

    Put this in the file

    class CfgDebriefing {
    
    class End6 {
    	title = "WARNING";
    	subtitle = "";
    	description = "Level 2 Access required. This slot is reserved for dr members and trusted friends. More info at http://www.dedicatedrejects.com";
    	pictureBackground = "core\signs\NoEntry2.jpg";
    };
    class End7 {
    	title = "WARNING";
    	subtitle = "";
    	description = "Level 1 Access required. This slot is reserved for dr members and trusted friends. More info at http://www.dedicatedrejects.com";
    	pictureBackground = "core\signs\NoEntry1.jpg";
    };
    };
    

    I have two image files in core\signs that are pictures of no entry with the level number on them.

    I think thats all ?

    Use as you wish m8, alter however you want :p

    Credit would be cool... dont forget Fluit :)

    Hope that helps m8.

    BL1P

    P.S Credit --- this method was created from a script created by TG Unk.


  5. https://community.bistudio.com/wiki/Arsenal

    There are several ways around this. Just have to have a profile function that gets called when you close the interface. As for how to go about that...

    Can either have a separate button somewhere, or run some code when the Arsenal display opens, and then when the display closes, the loop terminates and your profile function is called to load these insignia things.

    As for how to do that? I think Xeno nailed it in Dom 3.00 with the cleanest way of opening the Arsenal display, using InventoryOpened event handler. Can also add some code in which waits for the arsenal display to open, and then waits for it to close. Once closed, your profile function gets called.

    Not that helpful I'm sure, but I think it points you toward a solution.

    Thanks m8 but...

    I cannot find what to use to find out if the Arsenal is opened or is closed.

    there doesn't seem to be any information on those variables.

    PS. We dont want to open the Virtual Arsenal anywhere but at base.

    Elite difficulty no 3rd too easy etc etc :)


  6. I run a script which adds insignias to players based on inhouse factions within our clan.

    That all works fine, player has both Xml and insignia... until they use the Virtual Arsenal to get a new uniform.

    When a uniform is added to the player from the Arsenal the insignias get removed but the Xmls stay.

    We use a whitelist Virtual Arsenal.

    Anyone know of a work around for this ?

    Thanks in advance.

    BL1P.


  7. Has anyone else Noticed that when AI are on the Headless and you shoot next to them but don't hit them, they do not react to the shot/impact.

    Once you put the same AI on the server they will react to the shot/impact.

    It seems to us that the reaction parameters of impacts or sounds are not working on the headless.

    Maybe some type of locality thing ?

    Can anyone confirm this ?


  8. Yer Sorry, I miss read you at first m8, I thought you said Combat Pace weapon lowered is same as Combat pace weapon up ;)

    I can understand why They did combat pace weapon up is more tiring than jogging weapon up though.

    Combat pace weapon up = weapon up and ready, whereas Jogging is weapon up = not ready.

    anyway Sorry I misread you :)

    2 boring videos about what we just talked about :)

    Combat pace

    http://www.twitch.tv/bl1p/c/5699222

    Jogging

    http://www.twitch.tv/bl1p/c/5699262


  9. Actually, I always thought combat pace with weapon lowered was the most cost-efficient way of moving. (Excluding walking, 'cause that's just too slow for longish distances.) But it turned out to be just as efficient as jogging with lowered weapon, only slower. It just looks cooler.

    I dont think thats correct.

    Will test and get back to you.


  10. Will take a look at that thanks Kremator.

    we tend to be at 200-300 ai normally but we get 50fps and 45cps at those numbers.

    we panic if the server gets to 25fps as we find that too laggy to play.

    Server = i7 4770, 32 GB of RAM, and 2x 320 GB SSDs in a RAID-0 config.

    O yer got the mission running on 2HCs today so now HC1 runs AO AI and HC2 runs Dynamic AI

    Makes the ASM look cool but now we need an ASM with more instances :)


  11. @Meatball

    We are doing our first tests with the HC using ArmA3server.exe for both the Server and the HC.

    We run both Server and HC on High priority with affinity splitting the cores, 1234 for server, 5678 for HC.

    In our test mission we split the AI 2/3rds on HC and 1/3rd on Server to a max of 450 total.

    The HC runs the dynamically created AI and the server runs the Static amount AO AI.

    We do see a performance increase in the servers fps and cps.

    But... we see more red chains when the AI are created on the HC as the players move about the map, than we did without the HC.

    Its hard to say atm because the last stable update has caused a lot of desync in general for us and the vehicle lag is a joke.

    We are now thinking of putting the Static amount AO AI onto the HC and use the server for Dynamic AI

    As it seems to cause too many red chains creating and removing AI on the HC.

    Hope that helps :)

    ---------- Post added at 07:32 AM ---------- Previous post was at 06:01 AM ----------

    we always get this error in HC rpt

    8:20:31 Error position: <BIS_TotDesatCC ppEffectAdjust [1,1,0,[0,>

    8:20:31 Error Undefined variable in expression: bis_totdesatcc

    8:20:31 File A3\functions_f\Feedback\fn_feedbackInit.sqf, line 56

    8:20:31 Error in expression <tOxygenRemaining player;

    BIS_SuffCC ppEffectAdjust [1,1,0,[0.0090>

    8:20:31 Error position: <BIS_SuffCC ppEffectAdjust [1,1,0,[0.0090>

    8:20:31 Error Undefined variable in expression: bis_suffcc


  12. Just some info for the Headless clients.

    We have found that its best to use both :-

    headlessClients[]={127.0.0.1};

    and

    localClient[]={127.0.0.1};

    In the server.cfg if you're using the same box for headless and server as we are.

    When we only used headlessClients[]={127.0.0.1};

    The bandwidth given the HC was insufficient and resulted in very crappy and weird AI behaviour.

    Hope this helps someone (if it did... GET BL1P A BEER :beeeers: )

×