Jump to content

7erra

Member
  • Content Count

    753
  • Joined

  • Last visited

  • Medals

Everything posted by 7erra

  1. So, it has been around 19785600 seconds since my last update and I think it's time to release a new version. Well not really a new version but an entirely new system. From the creator of the Arsenal Shop: VASS - Virtual Arsenal Shop System The main post will contain all information regarding the new system. The old Arsenal Shop will remain as a seperate branch on GitHub but will not be maintained anymore. I am not going to list all the changes and improvements compared to the Arsenal Shop as this would be way too much. Most importantly though is the way that changes in the Arsenal are handled. The code should now be reliable and is also easier to maintain. Another great addition is the accompanying mod: https://steamcommunity.com/sharedfiles/filedetails/?id=1760193128. This addon will remove the hassle of creating a cost table. The system as of now remains untested in MP environment and may contain bugs and other problems. This is why the current release is a prerelease version until I am sure that there are no major bugs around. If you have the opportunity to test it in MP then please do so and report back the result . I think I forgot something... Have fun! 7erra Also having ASS in the name is going to make it ten times better :S EDIT: Perfect! New page!
  2. 7erra

    Get all mission displays

    _allDisplays = "isNumber(_x >> 'idd')" configClasses configFile; _allDisplays apply {configName _x} Should do the trick. Here's the return:
  3. Yes, there is: addCuratorEditingArea addCuratorCameraArea When looking for certain commands you can either go to THIS page or use a text editor with the autocompletion enabled for sqf and type in words that match what you want to do (zeus is called curator in sqf). There are also pages for the whole zeus system: https://community.bistudio.com/wiki/Arma_3_Curator Can't provide more links atm, the BIS server hamster seems to have died.
  4. I've done some more research and testing and it seems that the 3den display is special in this regard. Another example for "displays" being created on top of each other would be the save and load "dialog" in the arsenal which is opened by clicking the SAVE or LOAD button. The new "dialog" is created and all the controls from the arsenal stay visible. Here's the catch though: These "dialogs" are in fact controls groups and therefore not displays. So instead of using createDisplay to create a new dialog you can make a controls group as part of your dialog with the attribute fade = 1; and show it when needed with _ctrl ctrlSetFade 0 and ctrlCommit. Keep in mind that the other controls will remain interactable. To prevent this make the controls group fill the entire screen: x = safeZoneX; y = safeZoneY; w = safeZoneW; h = safeZoneH;
  5. Can you upload your test mission? Might be faster than taking guesses.
  6. createDisplay is used when you want to create a GUI on top of another one. createDialog is used when creating a new GUI on its own. Therefore the parent display has to be opened with createDialog while all child displays should be created with createDisplay. The STATUS_ACCESS_VIOLATION can happen when executing certain commands the wrong way, eg while in 3den preview: findDisplay 313 createDisplay "anyDisplayInTheGame"; // goodbye, you cruel game world You are saying that you are using the same attributes on the parent and child display. Does that also include the idd? If so it is always better to use a new and unique IDD for each of your displays. When and how are you creating the new display? It might be possible that the parent dialog isn't opened at the time.
  7. 7erra

    Arsenal question

    That and some smaller tricks. Here are the steps: Add an scripted EH to eh arsenalOpened event Inside of this EH find the arsenal display and the control which changes the weapon (primary, launcher, handgun) use ctrlSetEventhandler to remove default one and add your own Copy the code from the default EH into your own EH and modfiy the lines where BIS_fnc_addWeapon is called Watch out for all the defines and includes used in the default EH that you have them as well As I said it is a small change but you have to create a new script with around 400 lines of code of which you change 3. But it is indeed possible!
  8. v2.1 - "Custom Commands and More Watch Fields updated" Update The problem from the last update where the Live Debug could mess up should now be fixed as I have rewritten the code for it again. While I was at it I found out how to use the CT_CONTROLS_TABLE so I've rewritten the code for Custom Commands and More Watch Fields as well. The Live Debug is now part of the More Watch Fields page. Checking the left checkbox will add the entry to the live display. Another change to the Custom Commands is the option to select a specific player as command target from the drop down menu. Happy live debugging! 7erra
  9. Change the 313 to the idd of your display. The example was for 3den which idd is 313. If the parent display is not open it crashes the game.
  10. 7erra

    Arsenal question

    It is quite a hassle to change such a small thing. I've done it before. The arsenal works with it's own function to handle all user input and loadout changes. To disable the loading of the extra magazines you'd have to replace the EH with setEventHandler and a modified version of the default EH everytime the arsenal is opened (There is a scripted EH to detect that). The default EH can be found in "\a3\functions_f_bootcamp\inventory\fn_arsenal.sqf" and is "SelectItem", line 1766 to 2176. The weapon and magazines are added with BIS_fnc_addweapon. Replace the third parameter with 0.
  11. findDisplay 313 createDisplay "YourNewDialog";
  12. The money is only stored as a variable on the the player. Some sqf knowledge would be neccessary to adjust it for your needs. I actually expected that there would be a simple money system somewhere but a quick google search didnt yield any formidable results... If you want to reward the player for killing enemies you can take a look at the onEntityKilled mission eventhandler. There should be some threads on the forum already explaining it in detail.
  13. Just so you know I am reading all of the comments but development has been laid off cause I've been working on another project and been busy. Getting back into the code will take some time so thanks for the kind words and sorry for the lack of support 😉 This is meant for the init field of a unit which is going to be killed. The system doesn't support a complete money system as of now. There are other systems which can be used in conjunction with VASS. Have thought about it but first comes fixing bugs and making the code cleaner 🙂 Using the Virtual Garage for that purpose might be viable 🤔 Thanks!
  14. 7erra

    Creating Table Dialog

    I've figured out how the CT_CONTROLS_TABLE is used. First of all you have to add a new line to the defines you already got (where all the control types (CT_) are defined). #define CT_CONTROLS_TABLE 0x13 //19 There is no base class for this control type so create either a new one by copying the example from the BIKI page or copy the BIKI entry to your dialog's controls and adjust the position. All important attributes are explained well on the BIKI by a BI dev. When the control is created it doesn't show as long as there are no entries. Here is a piece of code that shows the basic functionality of (kind of reproduces the BIKI example, but in bad): params ["_display"]; _table = _display displayCtrl 107; _header = ctAddHeader _table; _header#1 params ["_txtBack","_picCol1","_txtCol2"]; _picCol1 ctrlSetText "\a3\ui_f\data\igui\cfg\revive\overlayiconsgroup\u100_ca.paa"; _txtCol2 ctrlSetText "Test Table"; _txtBack ctrlSetBackgroundColor [0,0,1,1]; for "_i" from 0 to 2 do { _newRow = ctAddRow _table; _newRow#1 params ["_txtBack","_picCol1","_txtCol2","_btnCol3"]; _picCol1 ctrlSetText "\a3\ui_f\data\igui\cfg\revive\overlayicons\d100_ca.paa"; _txtCol2 ctrlSetText "Some long text"; _btnCol3 ctrlSetText "CLICK ME!"; }; It seems that this control type hasn't (yet) been used in A3 but in Argo. Sorting the colums is probably not such a great idea as there are no commands for it.
  15. 7erra

    Creating Table Dialog

    Gonna split this post in two because different topics. So about the Server Browser and ListNBox. It consists of one top line of buttons which, when clicked on, sort the ListNBox below. This also means that they are not part of the listbox and can be handled (tooltip, selected) seperatly. Aligning them is not that intuitive though. I made a mission to show how I would do it: GitHub mission description.ext defines.hpp is way too long to post here. The basic defines should do. dialog.hpp loadTest.sqf As you will see I am keeping the buttons together inside of a controlsGroup and use the relative width of the listbox to get the horizontal position. The magic of sorting happens in the loadTest.sqf script where I fille the listNbox with random vehicle configs, assign an EH to the buttons and then find the correct column to sort by the idc of the button. The command lnbSort(ByValue) does the rest. Because the third column contains numbers they have to be set as values on the column. Otherwise they will be sorted by their string which would put "100" before "2". To keep track of if the order should be ascending or descending I set a boolean variable which gets inverted after each click. Yeah sometimes BIS is hiding things from us. Might be handled by the engine. But I don't know ¯\_(ツ)_/¯. Next post: RscControlsTable
  16. I have rewritten the code for the live debug console so I might have messed something up. Will try to reproduce it. Thanks for the heads-up!
  17. v2 - "Next Level" Update Better late than never, eh? Skipping version v1.9 because it is in fact a major update. Maybe not so much on the content side of things but there are some important changes under the hood. Most noteably: Performance. The escape menu should now load faster because only one page gets loaded at a time. Also: New page. KK Debug is a small extension that enables logging of values to a console outside of the game which is a cleaner alternative to the rpt log. I will try to work on an extensive documentation over at GitHub to showcase all features, some are a bit hidden. Changelog for now is on Steam. ! IMPORTANT ! If you have security concerns regarding the debug_console_x64.dll then you are free to delete it. It will have no effect on the mod whatsoever but will make the whole KK Debug page non-functional. Bugs and bad design for free, 7erra
  18. 7erra

    Help with custom notification

    There is a new command which will set only one paramter of ctrlSetPosition (ctrlSetPositionX, Y, W, H). Also, changed the initial control creation because after setting the width of the control for the first time it has to be validated with ctrlCommit to give the correct height. Lastly, I've reintroduced the counter which updates with each iteration through the already existing controls array. Just copying it as is should work. Tested with the following function from debug console: []spawn { for "_i" from 0 to 5 do { sleep 0.5; _msg = []; _msg resize _i*5; _msg = _msg apply {" test"}; _msg = _msg joinString ""; [_msg] execVM "note.sqf"; }; }; This will print 6 messages with increasing length.
  19. 7erra

    Help with custom notification

    Yeah if you are going to have controls with different heights it's not gonna work anymore. Going back to using a variable which adds the control's height and margin between notifications should work.
  20. 7erra

    Help with custom notification

    replace the whole if statement with what i posted. btw updated the other post.
  21. 7erra

    Help with custom notification

    here is the modified part: if (count open_notifications > 0) then { { private _ctrlBorder = _x select 0; private _ctrlText = _x select 1; if (!isNull _ctrlBorder && !isNull _ctrlText) then { _offsetY = (_foreachindex + 1) * (_margin + ((ctrlPosition _ctrlText) select 3)); _ctrlBorder ctrlSetPosition [_posX, _posY + _offsetY]; _ctrlText ctrlSetPosition [_posX + _borderWidth, _posY + _offsetY]; _ctrlBorder ctrlCommit 0.25; _ctrlText ctrlCommit 0.25; if (_foreachindex > 3) then { _ctrlText ctrlSetFade 1; _ctrlText ctrlCommit 0.2; _ctrlBorder ctrlSetFade 1; _ctrlBorder ctrlCommit 0.2; }; }; } forEach open_notifications; }; The magic variable _foreachindex is the current index of the array which is cycled through: https://community.bistudio.com/wiki/Magic_Variables. This saves you the declaring and maintaining of a new variable (_activeNotifications). It has to be incremented by one bc it starts at 0.
  22. 7erra

    Dialog controls documentation?

    I was doing the same thing. I'll send you a PN. controlsBackground will always be in the background. Normally the controls which are listed last are the ones which are in the foreground. This order can change if you select a control which accepts input. Therefore it is good practice to put the non-interactable controls under controlsBackground so they don't block the interaction from the user. a3\ui_f\config.bin Again, needs to be depboed and debinarized. Then it is line 55045 to 56145. Search for "RscDisplayEGSpectator". Depending on how often you want to explore the game files and how much storage you got left on your drive you can extract all of the game's data unpboed and debinarzied. Just run the ArmA3 Tools from Steam and select "Project Drive Management".
  23. 7erra

    Help with custom notification

    Just this one line should do the trick.
  24. 7erra

    Help with custom notification

    Before calling the ctrlTextHeight command you have to adjust the width of the control to what you want afterwards. Just add another ctrlCommit before declaring _adjustedHeigth.
×