Jump to content

Search the Community

Showing results for tags 'gui'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


    • Vigor
    • DAYZ
    • ARMA 3
    • ARMA 2
    • YLANDS
    • ARGO
  • Die Hard OFP Lovers' Club's Topics
  • ArmA Toolmakers's Releases
  • ArmA Toolmakers's General
  • Japan in Arma's Topics
  • Arma 3 Photography Club's Discussions
  • The Order Of the Wolfs- Unit's Topics
  • 4th Infantry Brigade's Recruitment
  • 11th Marine Expeditionary Unit OFFICIAL | 11th MEU(SOC)'s 11th MEU(SOC) Recruitment Status - OPEN
  • Legion latina semper fi's New Server Legion latina next wick
  • Legion latina semper fi's https://www.facebook.com/groups/legionlatinasemperfidelis/
  • Legion latina semper fi's Server VPN LEGION LATINA SEMPER FI
  • Team Nederland's Welkom bij ons club
  • Team Nederland's Facebook
  • [H.S.O.] Hellenic Special Operations's Infos
  • BI Forum Ravage Club's Forum Topics
  • Exilemod (Unofficial)'s General Discussion
  • Exilemod (Unofficial)'s Scripts
  • Exilemod (Unofficial)'s Addons
  • Exilemod (Unofficial)'s Problems & Bugs
  • Exilemod (Unofficial)'s Exilemod Server tweaks
  • Exilemod (Unofficial)'s Promotion
  • Exilemod (Unofficial)'s Maps - Mission Files
  • TKO's Weferlingen
  • TKO's Chernarus
  • TKO's Livonia
  • TKO's Rules
  • TKO's Changelog
  • TKO's Help
  • TKO's What we Need
  • TKO's Virolahti
  • MSOF A3 Wasteland's Server Game Play Features
  • MSOF A3 Wasteland's Problems & Bugs
  • MSOF A3 Wasteland's Maps in Rotation
  • SOS GAMING's Server
  • SOS GAMING's News on Server
  • SOS GAMING's Regeln / Rules
  • SOS GAMING's Ghost-Town-Team
  • SOS GAMING's Steuerung / Keys
  • SOS GAMING's Div. Infos
  • SOS GAMING's Small Talk
  • NAMC's Topics

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL


Jabber (xmpp)








Steam url id







PlayStation PSN














Found 63 results

  1. Hi all ; I'll try to make it short. I have created a new weapon, with three fire modes which can be installed on all vanilla and community planes and helicopters, even those provided without weapons at the base (e.g. unarmed WY-55, etc.). Everything is working well, except that I cannot see the display of fire modes in the HUD at the top right, on any of the vehicles. I then understood slightly that the display seams to depends on the vehicle and its configuration (UnitInfoType: RscBlaBlaBla), and not on the weapon, because this one, moreover, is a weapon mountable on vehicle (so WeaponInfoType: RscBlaBlaBla is not used). Therefore ; to counter this, i created a control display and a script. The only current problem, when the player is in the pause menu, the display remains there, same for the splendid camera, same for the spectator mode, same for the GUI editor, etc. I managed to use a displayeventhandler to hide the control display in the pause menu, but not for the rest mentioned. If someone can do a lot much easier, I'm interested, just to understand a little better ! 😶 > Here is the script : _veh = _this select 0; waitUntil {(currentWeapon _veh == "MyNewWeapon") && (!isNull findDisplay 46)}; ("FireModes" call BIS_fnc_rscLayer) cutRsc ["RscTitleDisplayEmpty", "PLAIN", -1, false]; with uiNamespace do { _display = uiNamespace getVariable "RscTitleDisplayEmpty"; FireModes = _display ctrlCreate ["RscStructuredText", -1]; }; sleep 0.01; FireModes = [uiNamespace getVariable "FireModes"]; (FireModes select 0) ctrlSetPosition [32.5 * (((safezoneW / safezoneH) min 1.2) / 40), -1.60 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25), 0.095 * safezoneW, 0.085 * safezoneH]; sleep 0.01; (findDisplay 46) displayAddEventHandler ["KeyDown", "if (_this select 1 == 0x01) then {(FireModes select 0) ctrlShow false;};"]; while {alive _veh} do { (FireModes select 0) ctrlCommit 0.0; if ((currentWeapon _veh == "MyNewWeapon") && (player in _veh) && (assignedDriver _veh == player) && !(visibleMap) && (isNull (uinamespace getvariable "RscDisplayInterrupt"))) then { (FireModes select 0) ctrlShow true; (FireModes select 0) ctrlSetStructuredText parseText format ["<t size='0.8' align='Left' font='RobotoCondensed' color='#D9FFFFFF'>%1</t>", gettext (configFile >> "CfgWeapons" >> "MyNewWeapon" >> (currentWeaponMode (driver _veh)) >> "displayName")]; } else { (FireModes select 0) ctrlShow false; }; }; sleep 0.01; ctrlDelete (FireModes select 0); sleep 0.01; terminate _thisScript; > Here is the configuration of the weapon (it is unusual / but do not focus on it, it works) : class CfgWeapons { class Laserdesignator; class MyNewWeapon : Laserdesignator { //_generalMacro = "Laserdesignator"; access = 3; aiDispersionCoefX = 1; aiDispersionCoefY = 1; aimTransitionSpeed = 1; aiRateOfFire = 5; aiRateOfFireDispersion = 0; aiRateOfFireDistance = 500; ammo = ""; artilleryCharge = 1; artilleryDispersion = 1; author = "Bohemia Interactive"; autoFire = 0; autoReload = 1; backgroundReload = 1; ballisticsComputer = 0; burst = 100; canMODE = 1; canLock = 0; canShootInWater = 0; cartridgePos = "nabojnicestart"; cartridgeVel = "nabojniceend"; changeFiremodeSound[] = {"",1,1}; cmImmunity = 1; count = 0; cursor = "laserDesignator"; cursorAim = "EmptyCursor"; cursorAimOn = "CursorAimOn"; cursorSize = 1; detectRange = 0; dispersion = 0.002; displayName = "MyNewWeapon"; distanceZoomMax = 2300; distanceZoomMin = 100; drySound[] = {"",1,1}; emptySound[] = {"",1,1}; enableAttack = 1; ffCount = 1; ffFrequency = 1; ffMagnitude = 0; fireAnims[] = {}; fireLightAmbient[] = {0,0,0}; fireLightDiffuse[] = {0.937,0.631,0.259}; fireLightDuration = 0.05; fireLightIntensity = 0.2; fireSpreadAngle = 3; forceOptics = 0; handAnim[] = {}; hiddenSelections[] = {}; hiddenSelectionsTextures[] = {}; hiddenUnderwaterSelections[] = {}; hiddenUnderwaterSelectionsTextures[] = {}; inertia = 0.1; initSpeed = 0; irDistance = 0; irDotIntensity = 0.001; irLaserEnd = "laser dir"; irLaserPos = "laser pos"; Laser = 1; lockAcquire = 1; lockedTargetSound[] = {"",0.000316228,6}; lockingTargetSound[] = {"",0.000316228,2}; magazineReloadSwitchPhase = 1; magazineReloadTime = 0; magazines[] = {"MyNewWeaponMag"}; maxLeadSpeed = 10000; maxRange = 850; maxRangeProbab = 0.1; maxRecoilSway = 0.008; memoryPointCamera = "eye"; midRange = 500; midRangeProbab = 0.75; minRange = 1; minRangeProbab = 0.95; //model = "\A3\Weapons_F\Binocular\laserdesignator_f.p3d"; modelMagazine = ""; //modelOptics = "\A3\Weapons_F_beta\Binocular\lasermarker_optics"; modelSpecial = ""; modes[] = {"MyNewWeapon_1","MyNewWeapon_2","MyNewWeapon_3"}; multiplier = 1; muzzleEnd = "konec hlavne"; muzzlePos = "usti hlavne"; muzzles[] = {"this"}; nameSound = "binoculars"; optics = 1; opticsDisablePeripherialVision = 1; opticsFlare = 1; opticsID = 0; opticsPPEffects[] = {"OpticsCHAbera1","OpticsBlur1"}; opticsZoomInit = 0.05; opticsZoomMax = 0.05; opticsZoomMin = 0.01; //picture = "\A3\Weapons_F_Mark\Data\UI\gear_laserdesignator_ca.paa"; primary = 0; recoil = "empty"; recoilProne = ""; reloadAction = ""; reloadMagazineSound[] = {"",1,1}; reloadSound[] = {"",1,1}; reloadTime = 0.05; scope = 2; selectionFireAnim = "zasleh"; showAimCursorInternal = 1; showEmpty = 1; shownUnderwaterSelections[] = {}; showSwitchAction = 1; showToPlayer = 1; simulation = "weapon"; sound[] = {"",0,1}; soundBegin[] = {"sound",1}; soundBeginWater[] = {"sound",1}; soundBullet[] = {"emptySound",1}; soundBurst = 1; soundClosure[] = {"sound",1}; soundContinuous = 0; soundEnd[] = {"sound",1}; soundLoop[] = {"sound",1}; sounds[] = {}; swayCoef = 0.34; swayDecaySpeed = 2; textureType = "default"; thermalMode[] = {2}; type = 4096; uiPicture = ""; useAction = 0; useActionTitle = ""; useAsBinocular = 1; useModelOptics = 1; value = 5; visionMode[] = {"Normal","NVG","TI"}; //weaponInfoType = "RscUnitInfoAir"; //"RscOptics_LaserDesignator_2"; Not used for vehicle mounted weapon weaponLockDelay = 0; weaponLockSystem = 0; weaponPoolAvailable = 1; weaponSoundEffect = ""; weight = 0; zeroingSound[] = {"",1,1}; class MyNewWeapon_1 : Laserdesignator { displayName = "FULL MODE"; autoFire = 0; autoReload = 1; backgroundReload = 1; reloadTime = 0.05; burst = 100; }; class MyNewWeapon_2 : Laserdesignator { displayName = "HALF MODE"; autoFire = 0; autoReload = 1; backgroundReload = 1; reloadTime = 0.05; burst = 50; }; class MyNewWeapon_3 : Laserdesignator { displayName = "LITE MODE"; autoFire = 0; autoReload = 1; backgroundReload = 1; reloadTime = 0.05; burst = 25; }; class Eventhandlers {}; }; };
  2. Hope you guys like it! Please feel free to let me know if I should be doing anything differently(still new to it). Tutorial https://www.youtube.com/watch?v=nQygf2qKIU4 Mission Template http://bit.ly/SoolieVehSelector Other links to check out http://killzonekid.com/arma-scripting-tutorials-gui-part-1/ http://killzonekid.com/hex-2-arma-gui-colour-converter/ https://forums.bistudio.com/topic/136734-dialog-tutorial-for-noobs-by-a-noob/ https://community.bistudio.com/wiki/Dialog_Control https://community.bistudio.com/wiki/User_Interface_Event_Handlers Common.hpp
  3. Hi everyone and happy new year! Introduction This is my first script in 2020. @Ori150418 posted a request about a marker searching system and this piqued my interest so I got to work. This script adds a searchable list with all markers to the right side of the map (see video below). Features Adds list with all markers Markers are searchable by their text Updates positions periodically Updates markers when opening the map Includes user made markers List is hideable Note: The performance might suffer in missions with a lot of markers. The example mission has a small test built into it which generates 100 markers randomly on the map. I'd appreciate feedback about the performance as I have a good enough system to not notice a difference. Usage Copy the file "fn_markersearch.sqf" to your mission directory Add the following line to your init.sqf/initPlayerLocal.sqf: ["init"] execVM "path\to\file\fn_markersearch.sqf" Video Downloads https://github.com/7erra/marker_search Have fun!
  4. Adobe XD to Arma 3 - Convert your Adobe XD GUIs to Arma 3 (sort of) Create your GUIs in Adobe XD, export them as SVGs, use them in Arma 3 Website: http://xd2a3.heyoxe.ch/ GitHub Repo: https://github.com/Heyoxe/Adobe-SVG-to-Arma-Config Discord: https://discord.gg/QDGatN2 Licence (CC/BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode What is Adobe XD to Arma 3 (XD2A3)? XD2A3 is a small web application written in Javascript/NodeJS that let you transform your Adobe XD GUI (exported in SVG format) to an almost ready to use .hpp file. For who? The app is directed to people that have some basic knowledge of GUIs and have all their common controls with styles defined. It will not export colors/text/..., just the basic forms. Why would I use that? While some tools to make GUI more easily exist, most of them lack some basic things like alignment and grouping. When you make GUI you will generally use a base class for controls that you defined in your addon and will not redefine that for each new control. You may have do small modifications but overall, you don't change a lot of style. By using Adobe XD for you GUIs, things are more easy and until now, the only issue was converting those prototypes into usable in game GUIs. Once you have your base classes (here is an example of what I mean: https://github.com/CoopR-Mod/CoopR-Mod/blob/development/addons/core/coopr_gui_base.hpp) the only thing you will have to do is adding onLoads/onUnloads and change the Text. Positioning and class defining is all handled by XD2A3. Adobe XD Exportation Options: Format: SVG Styling: Presentation Attributes Save images: Link File size: Normal (do not check) Licence: CC/BY-NC-SA 4.0: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode How to use? https://github.com/Heyoxe/Adobe-SVG-to-Arma-Config#how-to-use-it What are the limitations of XD2A3? First and foremost, it only works with Adobe XD (hence the name). It cannot export GUIs that are not in the 1920x1080 format. Why? Because the macro used to convert from XYWH pixel positions to Arma is based around that format. It will not export elements other than Rectangles, Texts, Images or Groups for a very simple reason: those other forms don't exist in Arma 3. That's also why it's Open Source. While my knowledges are limited, I hope to extend the App to take in charge other GUIs designing tools Note: While the app works, I'm still a beginner in JS/Node so the code may not be high quality but feel free to contribute on GitHub Additional Credits: - A26Mike: Web Design and Testing Example: Please keep in mind that colors are not exported, those are just predefined Download Example: https://github.com/Heyoxe/Adobe-SVG-to-Arma-Config/raw/master/example.rar In Adobe XD: In Game: Adobe XD vs Config:
  5. Simple small mod that brings back the pre-apex main menu and background, because I simply don't like the new one, and Through the Jungle has been hammered into my head at this point. Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=1933347159 [ACE & CBA] https://steamcommunity.com/sharedfiles/filedetails/?id=1933588335 [CBA Only] Github: https://github.com/Freddo3000/Legacy-Main-Menu This work is licensed under the Arma and Dayz Public License Share Alike
  6. Description: This is a GUI that allows the person who executed the script to add/assign or remove/unassign Zeus to any specified player(s). Downloads & More Information: GitHub: link Pastebin: link * No download required! Video: link Steam Guide: link Curator Creator Version 1.0: (Check the GitHub for the latest version) comment "Script Title: Curator Creator (Create and Assign New Zeuses). < Current Version: 1.0 > "; comment "Credits: Created by J [WoLF] and M9-SD. "; comment "Description: - Creates new unique zeus module for specified players. - Assigns unique Zeus module to specified clients. - Automatically updates zeus interface with new objects. - Re-assigns zeus to player every respawn. - Re-assigns zeus to player upon reconnecting to the session. - JIP (join-in-progress) compatible. "; comment "Usage: - Copy entire script. Paste in debug console. - Execute on local client. - Exit the pause menu if open. - Wait for GUI to appear. - Select recipients of the Zeus Interface. - Choose to remove or add interface. - The selected players will now either be assigned or unassigned their unique Zeus module. "; comment "Distribution: - You may share this script with anyone you want. - Don't give this to trolls, please. - Give credit where it is due. - Enjoy :) "; [] spawn { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; systemChat "[JAM] >>> Zeus Helper >>> Initializing Curator Creator..."; JAM_fnc_createAndAssignZeus = { if (typeOf getAssignedCuratorLogic player != "") then { comment "do nothing"; systemChat "[JAM] >>> Zeus Helper >>> You already have a zeus interface."; } else { JAM_fnc_createAssignCurator = { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _myPlayer = _this # 0; _myCuratorPlayer = _myPlayer; JAM_addZeus_UID = getPlayerUID _myPlayer; JAM_addZeus_superCuratorVar = ("JAM_" + JAM_addZeus_UID + "_superCurator"); JAM_addZeus_superCuratorPlayerAttributesVar = ("JAM_" + JAM_addZeus_UID + "_superCuratorPlayerAttributes"); _JAM_my_curatorInitText = ("" + "if (isNil """ + JAM_addZeus_superCuratorVar + """) then {" + JAM_addZeus_superCuratorVar + " = JAM_superCurator_group createUnit ['ModuleCurator_F', [0, 90, 90],[],0.5,'NONE'];" + JAM_addZeus_superCuratorVar + " setVehicleVarName '" + JAM_addZeus_superCuratorVar + "';" + JAM_addZeus_superCuratorVar + " setVariable ['text','" + JAM_addZeus_superCuratorVar + "'];" + JAM_addZeus_superCuratorVar + " setVariable ['Addons',3,true];" + JAM_addZeus_superCuratorVar + " setVariable ['owner','objnull'];" + JAM_addZeus_superCuratorVar + " setVariable ['vehicleinit',"" _this setVariable ['Addons',3,true]; _this setVariable ['owner','objnull']; ""];" + "unassignCurator " + JAM_addZeus_superCuratorVar + ";" + "objnull assignCurator " + JAM_addZeus_superCuratorVar + ";" + JAM_addZeus_superCuratorPlayerAttributesVar + " = JAM_superCurator_group createUnit ['ModuleCuratorSetAttributesPlayer_F', [2, 91, 91],[],0.5,'NONE'];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['curator','" + JAM_addZeus_superCuratorVar + "'];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['unitpos',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['fuel',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['respawnposition',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['respawnvehicle',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['skill',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['rank',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['damage',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['exec',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['lock',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['vehicleinit',"" _this setVariable ['curator','" + JAM_addZeus_superCuratorVar + "']; _this setVariable ['unitpos',true]; _this setVariable ['fuel',true]; _this setVariable ['respawnposition',true]; _this setVariable ['respawnvehicle',true]; _this setVariable ['skill',true]; _this setVariable ['rank',true]; _this setVariable ['damage',true]; _this setVariable ['exec',true]; _this setVariable ['lock',true]; ""];" + "[" + JAM_addZeus_superCuratorVar + ",[-2,-1,0,1]] spawn BIS_fnc_setCuratorVisionModes;" + "JAM_" + JAM_addZeus_UID + "_updateSuperCuratorEditableObjects = true;" + "[] spawn {while {(JAM_" + JAM_addZeus_UID + "_updateSuperCuratorEditableObjects" + ")} do { if ( ((getAssignedCuratorUnit " + JAM_addZeus_superCuratorVar + ") != objNull) && (alive (getAssignedCuratorUnit " + JAM_addZeus_superCuratorVar + "))) then { " + JAM_addZeus_superCuratorVar + " addCuratorEditableObjects [([] call JAM_fnc_getEditableObjects),true]; }; sleep 30;}; };" + "}; " + ""); [_JAM_my_curatorInitText,{ _initText = _this; _initCode = compile _initText; if (isNil "JAM_blacklistedObjectsArray_01") then { JAM_blacklistedObjectsArray_01 = [ "ModuleCurator_F", "ModuleCuratorSetCamera_F", "Logic", "ModuleHQ_F", "VirtualCurator_F", "ModuleCuratorSetModuleCosts_F", "ModuleCuratorAddPoints_F", "ModuleCuratorSetObjectCosts_F", "ModuleCuratorSetCosts_F", "ModuleCuratorSetCoefs_F", "ModuleCuratorSetDefaultCosts_F", "ModuleCuratorAddEditingAreaPlayers_F", "ModuleMPTypeGameMaster_F", "ModuleRadioChannelCreate_F", "ModuleCuratorSetAttributesPlayer_F" ]; }; if (isNil "JAM_fnc_getEditableObjects") then { JAM_fnc_getEditableObjects = { _allObjs = allMissionObjects 'all'; _editableObjs = []; { if ( ( not ( ( typeOf _x ) in JAM_blacklistedObjectsArray_01 ) ) && ( not ( _x isKindOf "Logic" ) ) ) then { _editableObjs pushBackUnique _x; }; } forEach _allObjs; _editableObjs; }; }; if (isNil "JAM_superCurator_group") then { JAM_superCurator_group = createGroup sideLogic; }; [] spawn _initCode; }] remoteExec ['spawn',2]; comment "JIP"; [[JAM_addZeus_UID,JAM_addZeus_superCuratorVar], { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _curatorUID = _this # 0; _curatorVarStr = _this # 1; if (getPlayerUID player == _curatorUID) then { _curatorPlayer = player; JAM_my_curatorInitText = ("" + "waitUntil {(not isNil """ + _curatorVarStr + """)}; " + "_curatorVar = " + _curatorVarStr + "; " + "_curatorPlayer = _this select 0; " + "[_curatorVar,_curatorPlayer] spawn { _curatorVar = _this # 0; _curatorPlayer = _this # 1; while {((getAssignedCuratorLogic _curatorPlayer) != _curatorVar)} do { unassignCurator _curatorVar; objnull assignCurator _curatorVar; unassignCurator _curatorVar; _curatorPlayer assignCurator _curatorVar; sleep 3.5; }; };" + "JAM_" + _curatorUID + "_updateSuperCuratorEditableObjects = true;" + "_curatorPlayer = _this select 0; '[JAM] >>> Zeus Helper >>> You were given Zeus interface. To open, press [Y].' remoteExec ['systemChat', _curatorPlayer];" + ""); [[JAM_my_curatorInitText,_curatorPlayer],{ _initText = _this # 0; _curatorPlayer = _this # 1; _initCode = compile _initText; [_curatorPlayer] spawn _initCode; }] remoteExec ['spawn',2]; comment "re-assign upon death/respawn"; JAM_keepGivingMeZeus = true; if (!isNil "JAM_EH_autoReassignCuratorUponDeath") then { player removeEventHandler ["Respawn",JAM_EH_autoReassignCuratorUponDeath]; }; waitUntil {(alive _curatorPlayer)}; JAM_EH_autoReassignCuratorUponDeath = player addEventHandler ["Respawn",{ if (JAM_keepGivingMeZeus) then { [] spawn { waitUntil {(alive player)}; sleep 3.5; [[JAM_my_curatorInitText,player],{ _initText = _this # 0; _curatorPlayer = _this # 1; _initCode = compile _initText; [_curatorPlayer] spawn _initCode; }] remoteExec ['spawn',2]; }; }; }]; }; }] remoteExec ['spawn',0,JAM_addZeus_superCuratorVar]; }; _target = player; [_target] spawn JAM_fnc_createAssignCurator; }; }; JAM_fnc_deleteAndUnassignZeus = { if (typeOf getAssignedCuratorLogic player == "") then { comment "do nothing"; systemChat "[JAM] >>> Zeus Helper >>> You already do not have a zeus interface."; } else { JAM_fnc_deleteUnassignCurator = { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _myPlayer = _this # 0; _myCuratorPlayer = _myPlayer; JAM_addZeus_UID = getPlayerUID _myPlayer; JAM_addZeus_superCuratorVar = ("JAM_" + JAM_addZeus_UID + "_superCurator"); JAM_addZeus_superCuratorPlayerAttributesVar = ("JAM_" + JAM_addZeus_UID + "_superCuratorPlayerAttributes"); _JAM_my_curatorInitText = ("" + "if (!isNil """ + JAM_addZeus_superCuratorVar + """) then {" + "JAM_" + JAM_addZeus_UID + "_updateSuperCuratorEditableObjects = false;" + "unassignCurator " + JAM_addZeus_superCuratorVar + ";" + "objnull assignCurator " + JAM_addZeus_superCuratorVar + ";" + "unassignCurator " + JAM_addZeus_superCuratorVar + "; sleep 0.1;" + "comment 'deleteVehicle " + JAM_addZeus_superCuratorVar + ";';" + "};" + "if (!isNil """ + JAM_addZeus_superCuratorPlayerAttributesVar + """) then {" + "comment 'deleteVehicle " + JAM_addZeus_superCuratorPlayerAttributesVar + ";';" + "};" + ""); [_JAM_my_curatorInitText,{ _initText = _this; _initCode = compile _initText; [] spawn _initCode; }] remoteExec ['spawn',2]; comment "remove JIP"; [[JAM_addZeus_UID,JAM_addZeus_superCuratorVar], { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _curatorUID = _this # 0; _curatorVarStr = _this # 1; if (getPlayerUID player == _curatorUID) then { _curatorPlayer = player; JAM_my_curatorInitText = ("" + "_curatorPlayer = _this select 0; '[JAM] >>> Zeus Helper >>> Zeus Interface was removed from your client.' remoteExec ['systemChat', _curatorPlayer];" + ""); [[JAM_my_curatorInitText,_curatorPlayer],{ _initText = _this # 0; _curatorPlayer = _this # 1; _initCode = compile _initText; [_curatorPlayer] spawn _initCode; }] remoteExec ['spawn',2]; JAM_keepGivingMeZeus = false; [] spawn { if (not (isNull (findDisplay 312))) then { (findDisplay 312) closeDisplay 0; }; waitUntil {(not (isNull (findDisplay 312)))}; if (not JAM_keepGivingMeZeus) then { if (not (isNull (findDisplay 312))) then { (findDisplay 312) closeDisplay 0; }; }; }; if (!isNil "JAM_EH_autoReassignCuratorUponDeath") then { player removeEventHandler ["Respawn",JAM_EH_autoReassignCuratorUponDeath]; }; }; }] remoteExec ['spawn',0]; [[],{}] remoteExec ['spawn',0,JAM_addZeus_superCuratorVar]; }; _target = player; [_target] spawn JAM_fnc_deleteUnassignCurator; }; }; JAM_curator_recipients = []; comment "check if player is Zeus"; if (isNil "JAM_fnc_getDisplay46or312") then { JAM_fnc_getDisplay46or312 = { comment "default"; _displayNumber = 46; if ((isNull (findDisplay 312)) && (not isNull (findDisplay 46))) then { _displayNumber = 46; }; if (not isNull (findDisplay 312)) then { _displayNumber = 312; }; comment "return value (display number)"; _displayNumber }; }; comment " - Define critical variables. > JAM_txtSizeNum > JAM_txtSizeStr "; JAM_txtSizeNum = 0.5 * safezoneH; JAM_txtSizeStr = str JAM_txtSizeNum; with uiNamespace do { JAM_txtSizeNum = 0.5 * safezoneH; JAM_txtSizeStr = str JAM_txtSizeNum; }; with missionNamespace do { JAM_txtSizeNum = 0.5 * safezoneH; JAM_txtSizeStr = str JAM_txtSizeNum; }; comment " ...Variables Defined. "; JAM_open_selectJAMZeusRecipients = { JAM_curator_recipients = []; _centerScreenPos = [0.494844 * safezoneW + safezoneX,0.489 * safezoneH + safezoneY,0.004125 * safezoneW,0.0055 * safezoneH]; disableSerialization; d_selectJAMZeusRecipients = (findDisplay ([] call JAM_fnc_getDisplay46or312)) createDisplay "RscDisplayEmpty"; showChat true; _ctrl_selectJAMZeusRecipientsTitle = d_selectJAMZeusRecipients ctrlCreate ["RscStructuredText", -1]; _ctrl_selectJAMZeusRecipientsTitle ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + (str (JAM_txtSizeNum * 0.8)) + "'>ZEUS HELPER >>> CURATOR CREATOR<br/><t size='" + (str (JAM_txtSizeNum * 0.7)) + "'>(Create and Assign New Zeuses)<t/>"); _ctrl_selectJAMZeusRecipientsTitle ctrlSetBackgroundColor [0,0,0,0.77]; _ctrl_selectJAMZeusRecipientsTitle ctrlSetPosition _centerScreenPos; _ctrl_selectJAMZeusRecipientsTitle ctrlSetFade 1; _ctrl_selectJAMZeusRecipientsTitle ctrlCommit 0; _ctrl_selectJAMZeusRecipientsTitle ctrlSetPosition [0.427812 * safezoneW + safezoneX,0.313 * safezoneH + safezoneY,0.128906 * safezoneW,0.033 * safezoneH]; _ctrl_selectJAMZeusRecipientsTitle ctrlSetFade 0; _ctrl_selectJAMZeusRecipientsTitle ctrlCommit 0.5; ctrl_sJr_PlayerList = d_selectJAMZeusRecipients ctrlCreate ["RscListBox", -1]; { _pL_index = ctrl_sJr_PlayerList lbAdd name _x; } forEach allPlayers; ctrl_sJr_PlayerList ctrlSetPosition _centerScreenPos; ctrl_sJr_PlayerList ctrlSetFade 1; ctrl_sJr_PlayerList ctrlCommit 0; ctrl_sJr_PlayerList ctrlSetPosition [0.427812 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.061875 * safezoneW,0.22 * safezoneH]; ctrl_sJr_PlayerList ctrlSetFade 0; ctrl_sJr_PlayerList ctrlCommit 0.5; ctrl_sJr_recipientList = d_selectJAMZeusRecipients ctrlCreate ["RscListBox", -1]; ctrl_sJr_recipientList ctrlSetPosition _centerScreenPos; ctrl_sJr_recipientList ctrlSetFade 1; ctrl_sJr_recipientList ctrlCommit 0; ctrl_sJr_recipientList ctrlSetPosition [0.494844 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.061875 * safezoneW,0.22 * safezoneH]; ctrl_sJr_recipientList ctrlSetFade 0; ctrl_sJr_recipientList ctrlCommit 0.5; _ctrl_cancel = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_cancel ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>CLOSE<t/>"); _ctrl_cancel ctrlSetTooltip "Cancel the script and close this menu."; _ctrl_cancel ctrladdEventHandler ["ButtonClick",{ d_selectJAMZeusRecipients closeDisplay 0; JAM_curator_recipients = []; }]; _ctrl_cancel ctrlSetFade 1; _ctrl_cancel ctrlSetPosition _centerScreenPos; _ctrl_cancel ctrlCommit 0; _ctrl_cancel ctrlSetPosition [0.469063 * safezoneW + safezoneX,0.698 * safezoneH + safezoneY, 0.0464063 * safezoneW,0.022 * safezoneH]; _ctrl_cancel ctrlSetFade 0; _ctrl_cancel ctrlCommit 0.5; _ctrl_removeJAMZeusbutton = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_removeJAMZeusbutton ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>---------REMOVE ZEUS---------<t/>"); _ctrl_removeJAMZeusbutton ctrlSetTooltip "Delete and unassign unique zeus module for each player on the right-hand list."; _ctrl_removeJAMZeusbutton ctrlSetBackgroundColor [0.5,0.2,0,0.6]; _ctrl_removeJAMZeusbutton ctrladdEventHandler ["ButtonClick",{ if (count JAM_curator_recipients != 0) then { d_selectJAMZeusRecipients closeDisplay 0; { _recipientName = _x; systemChat ("[JAM] >>> Zeus Helper >>> Removing Zeus from " + (_recipientName) + "..."); { if ((name _x) == (_recipientName)) then { [JAM_fnc_deleteAndUnassignZeus,{ _code = _this; [] spawn _code; }] remoteExec ['spawn',_x]; }; } forEach allPlayers; } forEach JAM_curator_recipients; comment "[] call JAM_init;"; } else { hint "[JAM] : ERROR : You have not selected any players; Array is empty."; systemChat "[JAM] : ERROR : You have not selected any players; Array is empty."; }; }]; _ctrl_removeJAMZeusbutton ctrlSetPosition _centerScreenPos; _ctrl_removeJAMZeusbutton ctrlSetFade 1; _ctrl_removeJAMZeusbutton ctrlCommit 0; _ctrl_removeJAMZeusbutton ctrlSetPosition [0.432969 * safezoneW + safezoneX,0.654 * safezoneH + safezoneY,0.118594 * safezoneW,0.033 * safezoneH]; _ctrl_removeJAMZeusbutton ctrlSetFade 0; _ctrl_removeJAMZeusbutton ctrlCommit 0.5; _ctrl_addBtn = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_addBtn ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>Add<t/>"); _ctrl_addBtn ctrlSetTooltip "Add selected player to the target list."; _ctrl_addBtn ctrlSetBackgroundColor [-1,0.5,-1,0.6]; _ctrl_addBtn ctrladdEventHandler ["ButtonClick",{ _selectedItem = lbCurSel ctrl_sJr_PlayerList; _playerName = ctrl_sJr_PlayerList lbText _selectedItem; if (JAM_curator_recipients find _playerName == -1) then { JAM_curator_recipients pushBackUnique _playerName; ctrl_sJr_recipientList lbAdd _playerName; }; }]; _ctrl_addBtn ctrlSetPosition _centerScreenPos; _ctrl_addBtn ctrlSetFade 1; _ctrl_addBtn ctrlCommit 0; _ctrl_addBtn ctrlSetPosition [0.427812 * safezoneW + safezoneX,0.357 * safezoneH + safezoneY,0.061875 * safezoneW,0.022 * safezoneH]; _ctrl_addBtn ctrlSetFade 0; _ctrl_addBtn ctrlCommit 0.5; _ctrl_removeBtn = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_removeBtn ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>Remove<t/>"); _ctrl_removeBtn ctrlSetTooltip "Remove selected player from the target list."; _ctrl_removeBtn ctrlSetBackgroundColor [0.5,-1,-1,0.6]; _ctrl_removeBtn ctrladdEventHandler ["ButtonClick",{ _selectedItem = lbCurSel ctrl_sJr_recipientList; _playerName = ctrl_sJr_recipientList lbText _selectedItem; if (JAM_curator_recipients find _playerName > -1) then { _idx = JAM_curator_recipients find _playerName; JAM_curator_recipients deleteAt _idx; ctrl_sJr_recipientList lbDelete _selectedItem; }; }]; _ctrl_removeBtn ctrlSetPosition _centerScreenPos; _ctrl_removeBtn ctrlSetFade 1; _ctrl_removeBtn ctrlCommit 0; _ctrl_removeBtn ctrlSetPosition [0.494844 * safezoneW + safezoneX,0.357 * safezoneH + safezoneY,0.061875 * safezoneW,0.022 * safezoneH]; _ctrl_removeBtn ctrlSetFade 0; _ctrl_removeBtn ctrlCommit 0.5; _ctrl_giveJAMZeusbutton = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_giveJAMZeusbutton ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>------------GIVE ZEUS------------<t/>"); _ctrl_giveJAMZeusbutton ctrlSetTooltip "Create and assign unique zeus module for each player on the right-hand list."; _ctrl_giveJAMZeusbutton ctrlSetBackgroundColor [-1,-1,0.4,0.6]; _ctrl_giveJAMZeusbutton ctrladdEventHandler ["ButtonClick",{ if (count JAM_curator_recipients != 0) then { d_selectJAMZeusRecipients closeDisplay 0; comment "[] call JAM_init;"; { _recipientName = _x; systemChat ("[JAM] >>> Zeus Helper >>> Giving Zeus to " + (_recipientName) + "..."); { if ((name _x) == (_recipientName)) then { [JAM_fnc_createAndAssignZeus,{ _code = _this; [] spawn _code; }] remoteExec ['spawn',_x]; }; } forEach allPlayers; } forEach JAM_curator_recipients; } else { hint "[JAM] : ERROR : You have not selected any players; Array is empty."; systemChat "[JAM] : ERROR : You have not selected any players; Array is empty."; }; }]; _ctrl_giveJAMZeusbutton ctrlSetFade 1; _ctrl_giveJAMZeusbutton ctrlSetPosition _centerScreenPos; _ctrl_giveJAMZeusbutton ctrlCommit 0; _ctrl_giveJAMZeusbutton ctrlSetPosition [0.432969 * safezoneW + safezoneX,0.61 * safezoneH + safezoneY,0.118594 * safezoneW,0.033 * safezoneH]; _ctrl_giveJAMZeusbutton ctrlSetFade 0; _ctrl_giveJAMZeusbutton ctrlCommit 0.5; systemChat "[JAM] >>> Zeus Helper >>> Select players to give or remove Zeus Interface."; }; comment "close debug console"; if ( not (isNull (findDisplay 49)) ) then { (findDisplay 49) closeDisplay 0; }; waitUntil { isNull (findDisplay 49) }; sleep 0.1; systemChat "[JAM] >>> Zeus Helper >>> Spawning GUI..."; [] spawn JAM_open_selectJAMZeusRecipients; }; - Feel free to give me some feedback on this script, as I am sure there are some bugs to be reported with it, and I would like to improve it however I can. I might make an alternate version where it doesn't auto-add objects to the Zeus interface every 30 seconds.
  7. If a custom GUI is opened when player is driver of an air vehicle with engine on, the vehicle behaves as though the landing auto-pilot (or some other phantom) has taken control. After researching the issue for some time now I have found exactly zero information about it. It's not too bad while flying but it's game breaking on the ground. I tried using, playerJET action ["cancelLand", playerJET]; each time the menu opens but that's doesn't seem to do much or anything. There was a forum topic I can't find again where GOM suggested the above as a EachFrame EH but that seems heavy for a function that should just completely go away. Where does this controller exist and how can it be modified? Help me exorcise this phantom pilot! Testing... Test module: drive link
  8. My two current projects contain dozens of script references from this forum all in one place with a script description text to find what you're looking for. JET TOYS SWO Mission Control DEMO If you're an experienced script writer you probably won't learn much from the references. However you're welcome to make suggestions for improvement. Keep in mind the theme of making simple scripts that are accessible to new users and not fellow computer science majors. This forum page is WIP and will expand as the above projects progress.
  9. Hi community! My name is Paul and I am an illustrator, designer and author. I am also an amateur mod maker with ~20 years of experience beginning with Operation Flash-point all those years ago. Over this period of time the mods, maps, utilities, textures, concepts etc., that I have made were downloaded hundreds of thousands of times. This is not me trying to brag but to demonstrate that when I commit to a project I see it through to success. It's been a while since I wanted to commit to such a project and now the time has come. The Eden editor is a fun tool, and so I've come to join all of you. There are two projects I currently have in progress. These projects are very different but serve as a learning environment to develop future goals. Both of these projects use a GUI "toy" which is a major element that I want to incorporate in the final project. Ultimately I'd like to release these projects as "modular plug-ins" (a combination of in-engine assets and the scripts to run them), which fit easily into any existing or future scenarios. Here, my first goal is to post sample missions of the two current projects for others to try out and to show my participation with the community. A long time ago on a NEXUS far-far away I released a mod titled "187gurlz" for Fallout 3. The primary character, named Sasha Ashe, was an ass-kicking wasteland warrior devoted to assisting the player restore hope to the capital waste. The first modular plug-in will be a companion mod very much like the ones we're familiar with for Bethesda games. The first part will be the GUI toy connected to a generic character (which you can assign female assets to if you have them). The second part will be the same with custom assets for the female model. That's where you come in. I need the model assets to make this module stand-alone. Necessary is the Female model/outfits. Potentially custom weapons, too. Download link: SWO Mission Control The balance of flight mechanics in ARMA III, somewhere in the middle between Battlefield and DCS, are very appealing to me. With the same GUI toy philosophy in mind I am creating a mission control interface which can be slotted into any existing and future "flight oriented" scenario. Although I've had success getting all the elements to work, surely my scripting is poorly executed and, if nothing else, not optimized. That's where you come in. If you're interested in examining and potentially editing these scripts I'd be excited to see your feedback. Download link: JET TOYS My intention is to submit these projects to the community as a demonstration of participation and aptitude. And to potentially find like-minded modders of all different skill sets to work on a more ambitious future project. I'm honored to be here among service members, grumpy old men, and some alarmingly proficient computer science majors. Thanks for having me in your community, Paul
  10. In my last project I was trying something new - based GUI on Pixel Grid System hoping, this will allow me to define easily a HUD or GUI display , that will keep its dimensions and position in relation to screen boundries constant, regardless of set resolution or interface size in video settings. I was following provided example this way: But no, if I change the UI scale from "small" to "normal" all is bigger, set more to left and lower, not fitting the screen, even worse, if I change resolution from 1920x1080 to lower. Using pixelGridNoUIScale or pixelGridBase instead of pixelGrid makes the size difference even bigger. Most likely I misunderstood something. How to achieve, what I try to do? If I define HUD element just below the upper edge of the screen, I do not want it to go out of screen boundary for lower resolution (or farther from the edge for higher resolution) etc.
  11. Hi, I've been wondering for a while on how Bohemia have done this, maybe someone can help here. The 3DEN Displays all have actions that display a new box on the screen (e.g. Clicking new scenario button will display a another box and wont let you interact with anything behind it): https://gyazo.com/956ab95d3148cd87e4c9de5902d591ca I was thinking they made it so when the user clicks on the button, the controls get made in the script, but I don't know. Thanks
  12. Hi, I'm really confused on why when I use createDisplay, it doesnt go over the parent display like the 3den displays: https://gyazo.com/956ab95d3148cd87e4c9de5902d591ca Instead it just looks like I created another parent display/dialog: https://gyazo.com/be01e67e6a0a7a6ebfcd6d9e1562407b Thanks in advance, skirmish_
  13. Hi, I've been very confused for the past week on how bohemia made their 3DEN displays overlap each other. I've copied basically everything they have done as far as configs go, and I have also been using createDisplay to have the child display go over the dialog, however it just looks like I made another parent display/dialog and its not going over the display. Maybe someone here can help. Thanks in advance, skirmish_
  14. hey i am making a Y-Menu dialog but i just cant find out how to get the dialog to make a slow fade in and out when open or closed any help? to how i can make this possible
  15. I've been struggling for some time to create a nametag script that could: - use drawIcon3D to place the tags over players (like F3) instead of center screen (like ST) - have multiple lines of text for player roles, group names, etc - display these multiple lines (in 3D) as if they were one big sprite (psuedo-2D) ( Pictures available here ) drawIcon3D does not support structured text. It does not support text over multiple lines, or with a different justification, or any of that. You can render an icon, and you can render some text. That icon and text will always face you, and will appear the same size no matter the distance between your player and the drawIcon3D's position, but if you want to display multiple lines of text stacked upon each other you were out of luck. I was out of luck. I tried a few things. My original solution was to use the easy method (modelToWorld[0,0,0] + height for stance, +/- static Z-level spacing between tags) F3 uses, but to dynamically change the spacing between 3D icons on-screen depending on player FOV and distance to target. As you moved closer or further, the tags would space out or scrunch up in 3D accordingly. The problem? That solution only changed the Z levels of the tags, meaning that if I looked down on the tags from above (or up from below, or really any angle other than flat horizontal) the visual spacing would decrease until they appeared to overlap each other. The next attempt adjusted the spacing by first converting the world coordinates to screen coordinates (worldToScreen), adjusting those screen coordinates with a fixed Y spacing, and then converting them back into world coordinates before displaying them (screenToWorld). It worked, for the most part. Tags viewed from above would be spaced out perfectly. The problem here was twofold: first, screenToWorld gets the world position (going through models and buildings) at the screen position given, even if that world position is kilometers away. The drawIcon3D text looks the same size at any distance, of course, but this lead into a bigger problem -- If you were looking at someone and there was no "world" behind them (ie: just a sky) then screenToWorld would be unable to find a world position, and the tag would not appear. I had no idea what to do at this point and repeatedly turned to the Arma 3 Discord for help. A lot of people offered advice for which I am very grateful, but I am especially thankful towards cptnnick for helping me work through a solution to the dynamic spacing problem using orthogonal vectors and vector cross products. The solution is available in simplified form in my (unreleased, beta) nametag script, but a more expanded (and easily explained) process is this commented demonstration code graciously provided by cptnnick: comment "Setup. Not part of dynamic spacing solution."; removeMissionEventHandler ["Draw3D",missionNamespace getVariable ["drawHandler",-1]]; drawHandler = addMissionEventHandler ["Draw3D", { comment "Get the target object and player."; _target = cursorObject; _player = player; comment "Get the position of the player's camera and the middle of the target's body."; _targetPosition = _target modelToWorldVisual[0,0,1.3]; _playerPosition = positionCameraToWorld[0,0,0]; comment "Calculate the distance from target to player."; _distance = _targetPosition distance _playerPosition; comment "Get the player's current zoom level. Google 'Killzone Kid Get Zoom.'"; _fov = call wh_nt_fnc_getZoom; comment "Get the vector from target to player (GREEN LINE)."; _dir = _targetPosition vectorDiff _playerPosition; comment "NEW: vectorDir _player doesn't work when the player is using freelook."; comment "To get the vectorDir of the player's camera instead of his body, do this:"; _playerDir = _playerPosition vectorFromTo positionCameraToWorld[0,0,1]; comment "Get a vector orthogonal to the player's orientation (RED LINE)."; _cross = (_playerDir) vectorCrossProduct (vectorUp _player); comment "Get the relative "UP" direction of the target model (PURPLE LINE)."; _drawUpNormal = vectorNormalized (_cross vectorCrossProduct _dir); comment "Multiply the direction by how far we want the text spaced."; _drawUp = _drawUpNormal vectorMultiply (0.1 * _distance / _fov); comment "Flip it for down."; _drawDown = _drawUp vectorMultiply -1; _drawPosUp = _targetPosition vectorAdd _drawUp; _drawPosDown=_targetPosition vectorAdd _drawDown; comment "Render some cool drawIcon3D stuff with your new, dynamically-spaced positions."; drawLine3D [_targetPosition, _drawPosUp, [1,0,0,1]]; drawLine3D [_targetPosition, _playerPosition, [0,1,0,1]]; drawLine3D [_targetPosition, _targetPosition vectorAdd _cross, [0,0,1,1]]; drawIcon3D ["", [1,1,1,1], _drawPosUp, 0, 0, 0, "TOP", 2, 0.04, "RobotoCondensed"]; drawIcon3D ["", [1,1,1,1], _targetPosition, 0, 0, 0, "MIDDLE", 2, 0.04, "RobotoCondensed"]; drawIcon3D ["", [1,1,1,1], _drawPosDown, 0, 0, 0, "BOTTOM", 2, 0.04, "RobotoCondensed"]; }];
  16. Hi, I am currently trying to find a way to check if local player is function caller in sqf file. I have civilian with addAction, which calls this script: _caller = _this select 2; if (local player == _caller) then { _handle = createdialog "Interaction"; } I need to show the GUI only to player using the action. Sorry if it's somewhere on these forums, but I was unable to find it. Thanks for your answers 🙂 WendAF
  17. class RscText_1000: RscText { idc = 1000; text = "Paciente:"; //--- ToDo: Localize; x = 0.237519 * safezoneW + safezoneX; y = 0.15 * safezoneH + safezoneY; w = 0.0524963 * safezoneW; h = 0.07 * safezoneH; }; class nombrePaciente: RscText { idc = 1001; text = "hint format['%1', nombre];"; x = 0.289762 * safezoneW + safezoneX; y = 0.171182 * safezoneH + safezoneY; w = 0.104993 * safezoneW; h = 0.028 * safezoneH; }; Hey, how can I make it show the name of the player ? It only shows the code
  18. Videos https://cdn.discordapp.com/attachments/442250017521139713/529767509516222464/2019-01-01_22-04-23.mp4 https://cdn.discordapp.com/attachments/442250017521139713/529767747291447308/2019-01-01_22-04-50.mp4 https://cdn.discordapp.com/attachments/442250017521139713/530474492367994881/2019-01-03_20-53-21.mp4 https://cdn.discordapp.com/attachments/442250017521139713/533932043873157121/2019-01-13_09-50-30.mp4 https://cdn.discordapp.com/attachments/442250017521139713/533614139055013908/2019-01-12_12-49-49.mp4 Images Features Demo all clutter compositions of the currently loaded terrains Select as basis from all clutter compositions of the currently loaded terrains Tweak your clutter composition individually Live preview of your current setup Select from all available clutter models with 3d preview used by other currently loaded terrains (toggle the desired box to apply) Adjust the clutter grid (distance between each), the clutter distance (radius around the player) (applies to this preview and the dynamic spawning) - be careful with too dense or too many objects Adjust the clutter probability Logs the current clutter stats to rpt Exports the current clutter composition to clipboard (to embedded in your config) Preview your current clutter composition with dynamic clutter spawning (and despawning) to replicate engine clutter as close as possible (run around and have clutter "move with you") Note: scale cannot be adjust Possible future changes: As mod to be usable on any terrain easily (and dynamic removal of engine generated clutter) Try to speed up the clutter generation (seems to come mostly from createSimpleObject though - in other words not sure if can be improved) Try to fix the height/floating of some clutter Try to fix the 3d preview of clutter models working for all/all the time Interface optimizations (key shortcuts, mouse wheel use for sliders, hint/warning system) Try to replicate the "random placement" exactly as the engine does (based on bit shifting which cannot be replicated in SQF - maybe some algorithm/approach with very similar results possible though) Credits: T_D mikero M242 Download: https://cdn.discordapp.com/attachments/442250017521139713/533931523452436492/tweakClutterCompositions.VR.7z
  19. I'm looking to change elements of the default ArmA targeting pod - specifically, I want to add UI elements like 10-digit grids and target elevation. I know how to get that information, but what I don't know is how to make it appear in the UI. If possible, I'd also like to remove some vanilla elements like the narrow FOV box. Any insight on how to do these things?
  20. Hi, can someone tell me how do i geht the current open display ? I want to progressSetPosition to a progressbar but in a fuction. I have multiple dialogs but they all have the same progesspbar control (idd=121212). so if i call the progress function i want that the progessbar updates no matter which dialog is shown. Currently i can update the progess only with the dialog "name"=WeaponsDialog; Function: AV_progress= { [...] for "_i" from 0 to _delay do { sleep 1; ((uiNamespace getVariable "WeaponsDialog") displayCtrl 121212) progressSetPosition (_i / _delay); }; [...] }; So i want to replace (uiNamespace getVariable "WeaponsDialog")with something dynamic. Thanks ;D
  21. VPHUD stands for Virtual Pilot Head-Up Display What is VPHUD? Have you ever felt the need to look at the aircraft fixed gauges, because it had no HUD? Have you ever crashed your aircraft because you were distracted looking at such gauges? Have you ever wished the Advanced Flight Model GUI existed in the Standard Flight Model? If that's your case then I'm glad to tell you that VPHUD seeks to solve all those problems and wishes you ever had before. VPHUD is a seamless addon that adds two virtual gauges to all aircraft which do not have native HUD support. A Artificial Horizon to help you understand when your airplane is upside down, or if you're landing your helicopter perfectly leveled. A Vertical Speed Indicator to give you crucial information if the landing you're attempting to make is too harsh for your aircraft to handle. Some other misc information is also available such as height from surfaces (not ground terrain) and speed. How it works? As mentioned before, the addon works seamlessly without the need for any configuration. All you have to do is get in a aircraft as pilot, and the VPHUD will pop up immediatly. At the left will show up the Vertical Speed Indicator and at the right the Artificial Horizon. Aircraft that have built-in HUDs will not make VPHUD appear. But that's not all, you can change VPHUD's settings by scrolling and selecting "VPHUD Options". What can I change? In VPHUD's Options menu you'll be able to: Change the System of Units between Metric System and Imperial System. Change VPHUD scale and positioning. Enable a virtual crosshair and change its color. . You can use the crosshair only if you don't care about the gauges. Force/unforce VPHUD to show up, ignoring built-in filtering options. How to aim the crosshair? When NOT zoomed in the player aims with the V's top (default view), when zooming in the player aims with the bottom end of the V (right click zoom). Issues Gauges scalling algorythm needs improvement. Altitude bar sometimes getting behind the Vertical Speed Indicator is a expected behaviour. Pitch not perfectly accurate. Aside from that, none that I'm aware. Let me know if you find any. Planned Improvements Throttle indicator. Better crosshair customisation. Change pitch degrees scale from 10º to 15º. Another VPHUD styling that replicates real aircraft HUDs. Meanwhile this may interest you. Licensing No Redistribution - You may not publicly redistribute VPHUD without my consent. As such public modpacks/mod compilations are not authorized. The ONLY EXCEPTION are communities/clans that may PRIVATELY share VPHUD on their own PRIVATE repositories for PRIVATE IN-HOUSE use without noticing me. (I'll personally take care of distributing and keeping updated VPHUD on the most popular Arma public repositories. If you wish for VPHUD to be available on a public repository that is not yet available please contact me.) Attribution - You may create your own derivative works as long as you credit me for the original work on which your derivative work is based on, but not in any way that suggests that I endorse you or your derivative work. Noncommercial - You may not use VPHUD for any commercial purposes whatsoever. Share Alike - Your derivative work must also be open for derivative works and not be used for commercial purposes as well (both Arma derivatives and non-Arma derivatives). You may opt to openly allow your derivative work to be publicly distributed. Download Repositories Steam Workshop Armaholic Direct Download withSIX (Outdated) Feedback and suggestions are always welcome! Thank you. Contribute to the mod at GitHub.
  22. Hello, OOP macro File : https://github.com/code34/oop.h Today i wanna share with you my gui editor. This is the link https://github.com/minipopov/GuiEditor Why new editor? -Based on layer with ctrlGroup -You could use your own style control directly from mission -You could export HPP (with EVH link for oop user) -You could export OOP file which is load on createDialog and delete variable on closeDialog -OOP file will contain all functions associate with your dialog. You could set from editor a name for each control which is the name of variable inside class and add init function Press F1 in mission you will see all shortcut. Let's talk about other thing. In initPlayerLocal.sqf you could set OOP_GuiEditor_ListControl which is an array of control avaible. You could remove all, add yours. The only thing that you have to do for add your control is to fill the file styles/customStyle.hpp with your style. Let's create together a new simple dialog. I named it shop with idd 8600. I create a simple dialog with 1 layer. Inside my layer i would create 1 LB which i named "itemList" and 2 button btnClose, btnOK. On my LB i check in event "Init" "OnLBSelChanged". Screenshot:http://prntscr.com/i2r1zj Let's look hpp file generated: Have a look for people who doesn't use OOP. All Event call static function to OOP class that you don't have. You need to change the call AND remove onLoad/unLoad event on display. Hpp contain string to reimport later your dialog Now let's generate oop class First there is standard function Init that it executed at openning your display. For ours BUTTONS We have 2 buttons on our hpp, so 2 functions btnAction_btnOK and btnAction_btnClose. They are call on click For Listbox We have Init function that you could call like this ["static",["onLBSelChanged_itemList", _whateveryouwant] call oo_shop. You could passed to the function anything you wan't and do your job... We have this function cause we check Init There is onLBSelChanged_itemList that is called on selected element on LB. EVH functions are auto fill. Now in-game how to use that? Just by using createDialog "shop", this gonna call our constructor function and get/set all controls, exec standard init. How to delete all vars & clear memory? closeDialog 0; Gonna set all variable to nil and clear memory Hope that i don't let but inside my code ^^. We're on beta version but, it's seems work well
  23. Could anyone make a GUI for our community? Please join our teamspeak (IP below) for more details. We want a GUI that looks like this: Code - https://pastebin.com/Yz0vYpba Picture - https://gyazo.com/fef1144f66efb1bf906fbe2ee8e04878 But that has these buttons, lists, and titles: Code - https://pastebin.com/1cMi4mnZ We are not good with making GUI thats why we are seeing if someone would like to make us one. Again if you have anymore questions fill free to join our teamspeak (IP below). Just join Requesting Management and someone should move you into a support room. (3pm to 11 pm US Eastern time is the best time to reach us, but usually someone is on after 11pm) Teamspeak IP: officialtglp.ts.io
  24. _______________________________________________________________________________ !!! IMPORTANT UPDATE: !!! _______________________________________________________________________________ Hello ArmA Community, the attachTo command can be unnecessarily time consuming since you have to basically guess the position of the attached object. Therefore I've made a dialog with which you can attach any object to another and return the offset. And there's more: https://drive.google.com/drive/folders/0B8-BL9HKQ_OXd1NfSzhnSlBXVk0?usp=sharing Main Interface: 1. Camera control: Move - WASD Up - Q Down - Y Faster - SHIFT Slower - ALT Detach pointer - SPACE (see 5.2.) 2. Source object, object of which the offset is taken 2.1. Select object from list of existing objects 2.2. Confirm selection 3. Offset, shows the current values // Until here is the basic stuff. The following points are not necessary but maybe interesting ------------------------------------------------------------------------------------------------------------------ 3.1. Step selector: Change the steps of which changes are applied ranging from 0.001 to 1. Positions can only be edited while pointer is not attached. Edits can be edited with the scroll wheel. 4. Memory points (Selections) 4.1. Select memory point, opens new dialog "Memory Points" (see below) 4.2. Enter the name of your own memory point. If memory point is not found, default offset [0,0,0] is used 5. Pointer 5.1. Show pointer yes/no 5.2. Detach/Attach pointer. Leave pointer whereever it currently is. Values are still evaluated. 5.3. Attaches the nearest object to the pointer and automatically disables simulation 5.4. ~Currently not used. If you want to create a new object then do so in the editor or Zeus. Object list is updated on dialog load~ 5.5. Delete object: Select an existing object in the COMBO and press the BUTTON to delete it. You can't delete yourself, the current source object or the current pointer object (that would cause many many script errors) 6. Directions of pointer object 6.1. Vector Dir: Shows the vectorDir (difficult behaviour, use (6.2) instead) 6.2. Degrees: Shows the orientation in degrees 6.3. Vector Up: Shows the vectorUp (difficult behaviour, use (6.4) instead) 6.4. getPitchBank: Uses BIS_fnc_getPitchBank 6.5. Enter and Reset: Enter apllies settings, Reset sets everything to normal 7. Other 7.1. Opens new dialog "Settings" (see below) 7.2. Copy the commands to the clipboard. 7.3.2. shows the resulting message 7.3. Credits: Shows contributors. Memory points: 1. Available memory points, Shows some default selections (link to topic follows (maybe)) 2. Search for specific memory point. Enter text. Results are shown in tree below 3. Find Memorypoints: Most useful control of them all. Automatically finds existing (!= [0,0,0]) selections 4. Resets the dialog 5. Passes selected memory point to Main Interface 6. Leave without changes Settings: 1. Pointer color (Default: GREEN) 1.1. Predefined colors and custom ones 1.2. Define own color. Remember to set "Alpha" to something greater than 0 or else nothing happens 1.3. Preview of custom color 2. Pointer size (Default: 10cm) 2.1. Select size 3. Pointer object (Default: sign_sphere_10cm) 3.1. Choose an existing object to become the pointer. (3.2.) has to be checked. 3.3. Create new object from config name as pointer. (3.4.) has to be checked. 4. Memory points (Default: Unchecked, Unchecked) 4.1. If checked the memory points will be shown next time you are executing point (3.) from Memory points dialog (see above) 4.2. Delete the pointers when dialog is closed. If unchecked, pointers will stay. 5. Simulation (Default: checked > enabled) 5.1. Enable or disable simulation of source object 6. Collsion (Default: checked > enabled) 6.1. Enable or disable collision of the pointer object with all other scenario objects 7. Exclude/Include objects (Default: Excuded objects: player, pointer, (camera)) 7.1. Select objects that won't be shown in the dialogs 7.2. Reverse actions of (7.1.) 8. Dialog 8.1. Apply the settings 8.2. Return all settings to default 8.3. Cancel: Leave without changes Changelog: Bugs, Quirks, Errors More Features: Of course the main function is to find the offset, therefore you only need point (1) to (3) of the main display. Everything else is just nice to have and I thought why not? The documentation inside of the scripts is pretty bad because I was focussing on scripting, not explaining. Feel free to ask me anything. Bugs can ofcourse be reported in this thread ;) Thats all for now and have fun editing, 7erra ________________________________________________ Version 1.0 - 25.04.2017
  25. Description This dialog is supposed to make the training of firing drills easier. It will show the current target, stats of the last shot and gives the opportunity to evaluate your firing discipline. Features Camera on the target Stats from last shot 3D model and hit position Mini map with position of targets Activate and deactivate selected target MP compatible (tested on dedicated and hosted with 2 players, NOT TESTED WITH JIP) Localized in German and English Picture Usage To add a target to the list add this to the object init: this setVariable ["TER_isTarget", true]; I recommend to only use objects of the type "Pop-Up Target X". Open the dialog with createDialog "TER_target"; Include the following files in your main mission folder (where the mission.sqm is): Add these two lines to your description.ext (or create it): #include "TER_TargetGUI\defines_A3.hpp" #include "TER_TargetGUI\TER_target.hpp" Put this in the initPlayerLocal.sqf (or create it): #include "TER_targetGUI\addEH.sqf" Add the content of the stringtable.xml to your own or copy it as is The TER_TargetGUI folder Download http://www.armaholic.com/page.php?id=33043 https://drive.google.com/drive/folders/0B8-BL9HKQ_OXWjFnUDhEUGhqejA?usp=sharing Credits Dialog & scripts: Terra Testing: Aasgeyer Good hunting! Changelog: