Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Everything posted by NumbNutsJunior

  1. NumbNutsJunior

    Disable ESC key while dialog open

    Put it whatever file the dialog is initially created with ... so once the dialog is created (createDialog), you then assign `_display = findDisplay idd` (idd is usually defined in the hpp file for the dialog). You can use either of the first three code snippets that you quoted, dedmen just revised 7erra's snippet because it is redundant. Its like saying `_boolean = if (condition) then {true} else {false}`. Edit: If you are talking about the hpp/ext file for the "dialog code", then just below where the idd is defined you will want to just add the line: onLoad = "(_this select 0) displayAddEventhandler ['KeyDown', {(_this select 1) isEqualTo 1}];"; ... which just says "add an event handler to the dialog so that when a key is pressed, if that key is equal to 1 (escape key) then override the default behavior (closing the dialog)"
  2. NumbNutsJunior

    Disable ESC key while dialog open

    🤔 _display displayAddEventhandler ["KeyDown", {(_this select 1) isEqualTo 1}]; 💇‍♂️
  3. NumbNutsJunior

    [Help] HoldAction to Classname

    Yeah, there is no real reason to do all that work. The condition gets evaluated every frame regardless if it is defined or not, the default value is just 'true'.
  4. NumbNutsJunior

    [Help] HoldAction to Classname

    The solution is quite simple. When using https://community.bistudio.com/wiki/BIS_fnc_holdActionAdd, the target parameter should be assigned to the player and then inside the conditionShow parameter you check if the player is looking at an object of the desired class name (e.g. ((typeOf cursorObject) isEqualTo "class_name")). Same thing applies to https://community.bistudio.com/wiki/addAction.
  5. Colored Hexes A portable mission that re-introduces colored group indicators to Arma 3. Features - Scriptable group indicators. - Adjustable group indicator colors. Setup - Disable the default group indicators within your server's difficulty settings. - Define the example file fn_coloredHexes.sqf and call it from any initialization function that runs locally on the player once during mission run-time. Showcase Download https://github.com/NumbNutsJunior/Colored-Hexes Disclaimer Re-adding colored group indicators has been done before but the only public version available (that I have found) is under ShackTac's UI mod. This mod almost completes the same task but the vehicle hex position is inaccurate and it is not very lightweight, and so I am releasing this version for those who wish to add colored hexes to their missions with little to no complexity. I hope you can find some use for it in your missions! Feel free to modify and improve on it of course, but I just ask that you leave the initial author credits. ~ NumbNutsJunior aka Pizza Man
  6. I am unable to collect examples right now because I am on mobile but my issue is that I need to convert the relative position of a 2D control group control to its position relative to the control group's parent display. The reason is because I need to compare the position of a control group control to a display control and I cannot get around having to use a control group. If anyone has any solutions or suggestions, that would be greatly appriciated!
  7. NumbNutsJunior

    Control Posititon Relative Conversion?

    Thank you man. I knew it was something simple, worked perfectly.
  8. A Notification System A simple notification system with timed hints that are simple and easy to use. Features - Priority message system, messages are sorted from top (highest priority) to bottom (lowest priority). - Personalize each message with whatever color progress timer you want. - Dynamic hint height to hold any length message. - Supports structured text of course. Setup - Define the files found in the example mission into your mission's functions.hpp and create the messages through the function fn_handleMessage.sqf. - You will need to create the rscTitle life_message_hud either through your own system or with the function fn_initMessageHUD.sqf after defining message_hud.hpp in you're description.ext's RscTitles class. Showcase Download https://github.com/NumbNutsJunior/Notification-System Disclaimer The style of hint produced is not completely original as it was inspired from the types of notifications found on GTA V but the system created for them is designed for arma 3 and to be lightweight and portable across missions. I hope you can find some use for it in your missions, feel free to modify and improve the system of course but just ask to leave my initial author credits. ~ NumbNutsJunior aka Pizza Man
  9. NumbNutsJunior

    [RELEASE] Notification System

    Updated 7/18/2019: Added timer conditions Added cleanup for controls Fixed issue related to RemoteExec/RemoteExecCall Use fn_handleMessage with these commands
  10. I am not sure what kinda testing environment you have setup, and from the information given to use it looks like it should work perfectly fine. So rather wasting time playing 20 questions I went ahead and created an example mission for you, recreating exactly what you are trying to do with what you have showed us from your script. My assumption is that your diag_logs are going to a server rpt file and you are just looking in the wrong place because the event handler is assigned to a globally created vehicle and not a player but they would show up in your own rpt files if you ran the mission as the host. Hopefully this helps! https://drive.google.com/open?id=1h4yG0cNClq3MR8-phCTtcA6HHzc_mYnG
  11. The example @Maff gave worked fine for me, the event handler 'fuel' only gets activated when "Triggered when the vehicle's fuel status changes between non-empty and empty or between empty and non-empty." I got your "systemchat 'setfuel 1';" twice, once for when the car ran out of gas and again after the code "(_this select 0) setFuel 1;" ran. Depending on the testing environment you might not get the system chat because the event handler is assigned to the vehicle, not to the player and systemChat has a local effect while setFuel has a global effect. So probably don't base your testing on that alone.
  12. Nothing about this seems to make any sense, I think this is more than just a bracket ... Look at your parameters: this (good) "INIT=" (good) [_proxyThis,]addeventhandler ["Fuel",{(_this select 0) setfuel 1; systemchat "setfuel 1";}]; (bad) addeventhandler takes an object as its first parameter, not an array. "[_proxyThis,]", _proxyThis is undefined (you say its treated as "this" but you still use "this" rather than _proxyThis as the first parameter). "[_proxyThis,]" you have a comma after the first element with no second element of the array Why are you trying to assign an event handler to something as a parameter, unless you are trying to pass the handler id. "addeventhandler ["Fuel",{(_this select 0) setfuel 1; systemchat "setfuel 1";}];" you have a semi colon at the end of the element, that is like saying _array = [1,2,3;]; You should probably do something like what @Maff suggested. Then do some more reading up on the wiki on how to script cause you will get generic error messages for a lot of different problems and will waste your time looking for some missing bracket or semi colon that does not exist.
  13. NumbNutsJunior

    Change Text of an edit box

    Your problem is that in your conditions you are trying to compare text to a number ... // Returns text _am1 = ctrlText _ctrl1; _am2 = ctrlText _ctrl2; _am3 = ctrlText _ctrl3; // Error - checking if text is less than a number if (_am1 < 200) then {_ctrl1 ctrlSetText "200"; player setVariable ["overall_distance",200]}; The very simple fix for this is to parseNumber for those three variables // Returns text _am1 = parseNumber(ctrlText _ctrl1); _am2 = parseNumber(ctrlText _ctrl2); _am3 = parseNumber(ctrlText _ctrl3); // No-error - Checking if a number is less than a number if (_am1 < 200) then {_ctrl1 ctrlSetText "200"; player setVariable ["overall_distance",200]};
  14. NumbNutsJunior

    Drawing on GPS panel

    Update: The control does draw icons as intended. // Wait for display waitUntil {!isNull (uiNamespace getVariable ["RscCustomInfoMiniMap", displayNull])}; private _display = uiNamespace getVariable ["RscCustomInfoMiniMap", displayNull]; // Controls private _miniMapControlGroup = _display displayCtrl 13301; private _miniMap = _miniMapControlGroup controlsGroupCtrl 101; // Event handler _miniMap ctrlAddEventHandler ["Draw", { // Wiki example (_this select 0) drawIcon [ "iconStaticMG", [1,0,0,1], getPos player, 24, 24, getDir player, "Player Vehicle", 1, 0.03, "TahomaB", "right" ] }];
  15. NumbNutsJunior

    Drawing on GPS panel

    Hello HazJ, The mini-map control is held within a controls group and so you need to access it via the command controlsGroupCtrl. I did not go as far as to actually draw icons but I am assuming from the hint of params that the rest should work as you said it already does, hopefully this info helps. For future work on these IGUI displays you can loop through them and use the command ctrlType in order to figure out what controls are what so that you are not just staring at the control ids. // Wait for display waitUntil {!isNull (uiNamespace getVariable ["RscCustomInfoMiniMap", displayNull])}; private _display = uiNamespace getVariable ["RscCustomInfoMiniMap", displayNull]; // Controls private _miniMapControlGroup = _display displayCtrl 13301; private _miniMap = _miniMapControlGroup controlsGroupCtrl 101; // Event handler _miniMap ctrlAddEventHandler ["Draw", {hintSilent (format [":: %1", _this])}];
  16. NumbNutsJunior

    help with returning a value from script

    The command apply takes an array and applies the given code to the element, so when you exitWith true or just exit with false the resulting array will just be [false, true, false, ect] (runs for each member of the crew). The reason it is returning this array is because it is the last line of code in your function, also it does not automatically override the given array unless you assign it again such as _crew = _crew apply {true}.
  17. I am trying to create a type of leaderboard on a dialog menu, where it will display stats such as their overall ranking in the list, name, kills, deaths, ect. The best example of the result i am trying to recreate would be the server browser: I have tried to use the Table Dialog Control but have failed, looking for some help with trying to get this type of dialog to work as it seems to be the best option available. The example they provide seems to only have the base defines from what I saw and when I try to create a row or header row with the commands, I get no result and no error: Add Row - https://community.bistudio.com/wiki/ctAddRow Add Header Row - https://community.bistudio.com/wiki/ctAddHeader With from my "extensive research", literally no online existing help, I've come here ... If you know how to actually use this type of dialog control, please help. Thank You!
  18. NumbNutsJunior

    Creating Table Dialog

    Unfortunately RscListNBox only got me so far in finding something that replicates the server browser. From the looks of it they lined up buttons to match the columns in the list but I am still unsure how the server browser is made because I cannot find any "column" functionality with RscListBox as they use it for the server browser so my guess is that its using the table dialog type but all the defines in config.bin point to using RscListBox. I am aware that RscListNBox can create columns, but with the server browser they are able to add tool tips to certain column items and can click on column cell items such as the favorites icon without selecting the entire row which both RscListBox and RscListNBox cannot do.
  19. There is a setting in the editor that you can check, or that you can add to description.ext: disabledAI = 1; // 0: disabled - 1: enabled. Default: 0 1 (checked) will do what you want, 0 (not checked) will allow AI to be in place of playable units. This does not disable AI units entirely, only units set to player or playable.
  20. I am trying to find the display/controls for the RscTitle that appears when using night vision, I have searched through many displays while nvg was active and not active and have yet to find it. I am just trying to access the control which holds this texture: ""\A3\Weapons_f\Data\nightvisiontl.paa"". All the active textures I could find: If anyone knows the display/control which is used with night vision or if it is even possible that would be really great. I also searched through all of "functions_f.pbo" for anything related to night vision ...
  21. NumbNutsJunior

    Night Vision Display? [SOLVED]

    You saying its possible to change without having a modded mission/server? Iv'e never tried creating "modded" content for arma, so if its related I would not know.
  22. NumbNutsJunior

    Night Vision Display? [SOLVED]

    Thats kinda a shame. Assuming that means there would be no way to alter the vision of NVG in vanilla arma 3? I wanted to alter the "modelOptic" while still animating the night vision to flip and keeping the ppeffect. Edit: Feel kinda dumb not realizing that when the texture is in weapons_f with all the other textures labeled optic lol
  23. NumbNutsJunior

    Dialog math?

    Can anyone explain how arma figures out its math when creating dialog because I can have some precise calculations and it will work out for 3/4 controls but one does not compute the same, or even worse changing interface size just has completely different math Very Large (Interface Size) - Essentially exactly how it should look Large (Interface Size) - Third padding is differnt and total is short Normal (Interface Size) - Center padding is different and total is too long Small (Interface Size) - Padding is decent but total comes short Is there an error in this math or is arma just dogshit, I don't use safezone or anything as such cause it scales bad with text or images in controls and defeats the purpose of interface size // Defines #define buttonPadding 0.0028 #define buttonWidth (0.65 - (buttonPadding * 3)) / 4 class CloseButtonKey: Life_RscButtonMenu { idc = -1; text = "Close"; //--- ToDo: Localize; onButtonClick = "closeDialog 0"; // 14.6375 x = 0.1750; y = 0.75975; w = buttonWidth; h = 0.0400; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; class ButtonSlot1: Life_RscButtonMenu { idc = 2408; x = __EVAL(0.1750 + ((buttonWidth * 1) + (buttonPadding * 1))); y = 0.75975; w = buttonWidth; h = 0.0400; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; class ButtonSlot2: Life_RscButtonMenu { idc = 2409; x = __EVAL(0.1750 + ((buttonWidth * 2) + (buttonPadding * 2))); y = 0.75975; w = buttonWidth; h = 0.0400; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; class ButtonSlot3: Life_RscButtonMenu { idc = 2410; x = __EVAL(0.1750 + ((buttonWidth * 3) + (buttonPadding * 3))); y = 0.75975; w = buttonWidth; h = 0.0400; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; };
  24. Although it may be in the same file, when you used the event handler the code is within its own scope and everything outside of it is non existent unless it is assigned to a global variable
  25. What I am trying to do probably makes no sense, and I really have no idea what i'm doing in this place of algebra but here is my problem ... I am trying to populate a list of values from min (x) to max (y) increasing the values by the step amount (z) easy enough, but I want to have the step value increase in size as the numbers get larger and larger so I don't have a list the size 'max / step', if max is say 5000000. So once the current value reaches another place the step value matches in increase by the same amount: min(0); max(5000000); starting step(2500); + 2500 +25000 +250000 Expected output: [0, 2500, 5000, 7500, 10000, 25000, 50000, 75000, 100000, 125000, ... , 975000, 1000000, 1250000, ... ] Below is probably just a bunch of junk, so maybe cover your eyes from this part, as It likely will lead you no where but I would not really know ... // Limits _min_value = 0; _max_value = 5000000; // Init _values = []; _current_value = _min_value; // Init loop variables _value_step = 2500; _step_power = floor(log _value_step); _base_step = _value_step / (10 ^ _step_power); // Populate values while {_current_value <= _max_value} do { // Push to value list _values pushBack _current_value; // Figure step amount _current_value_power = floor(log _current_value); _value_step = _base_step * (10 ^ _current_value_power); _powers_difference = _current_value_power - _step_power; // ... // Update current value _current_value = _current_value + _value_step; }; I figured this fell into the category of logarithms but I am apparently not very good at learning and using them as I have been stuck on trying to complete this problem all day. Please help 🙂 Note: I would like to figure this problem without a bunch of 'if' or 'switch' statements, just good old reliable math