Jump to content

7erra

Member
  • Content Count

    646
  • Joined

  • Last visited

  • Medals

Community Reputation

534 Excellent

About 7erra

  • Rank
    Master Sergeant

Profile Information

  • Gender
    Male
  • Location
    Germany

Contact Methods

  • Biography
    - 2012: ArmA2; Public domination, DayZ mod
    - 01.12.2013: Start of ArmA3
    - 06.01.2014: Joined the [IPT] ArmA3 clan, start of milsim "career"
    - March 2014: End of the IPT ArmA3 clan
    - End of 2014: Joined the 23. Luftlandekompanie [23LLK]
    - Middle 2015: Left the 23LLK for the 401PzGrenKp [401]
    - 01.04.1016: 401 joins the virtuelle Lehrbrigade 16 [L16] as PzGrenBtl 402 [402]

    Scripting for 5 years now. Learned by doing, didn't read one single scripting introduction. Not recommended - takes longer I guess.

Recent Profile Visitors

3205 profile views
  1. Yes for debugging it is possible to use allowFunctionsRecompile in the description.ext: https://community.bistudio.com/wiki/Description.ext#allowFunctionsRecompile
  2. If you are using ctrlCreate you don't need to have base classes defined. Also instead of BIS_fnc_exportGUIBaseClasses use the new import directive. For simple UIs: Go for it. Keep in mind though that some control attributes are not editable via script, like the rows of a CT_TOOLBOX.
  3. Bohemia Interactive Community Wiki (BIKI) Tools https://github.com/7erra/BikiTools What is it? This tool should help with bringing sqf code to the BIKI. It automatically formats the input to be used in the Mediawiki syntax used by the BIKI. Normally this would be tedious work where you have to write you code, test it and then add formatting which in turn renders the formatted code unusable in the game. In case you would have to make changes to the code you would now have to remove the Mediawiki formatting, change your code and reformat it. With this tool you can just write your code and copy-paste it into the UI without making changes to the sqf script. The full list of features (currently rather short) can be found in the Readme on GitHub. Who is it for? It was created to help BIKI contributors and those that want to become one (wink wink nudge nudge 😉 ). How can I get it? You can download an installer from the GitHub Releases page. Where can I use it? This tool is a WPF project written in C#. This means that it is only available to Windows users. How do I use it? You copy-paste your code in the left window. The formatted code is displayed in the right window. You can choose which codehighlighting should be applied by making a selection in the bottom right corner. Now you can copy the output and paste it to the BIKI.
  4. Huh you are right. I changed the Biki entry.
  5. 7erra

    What exactly do savegames save?

    Why guess when you can debinarize the save file with https://community.bistudio.com/wiki/CfgConvert😉
  6. You can remove the default behavior by removing all events from the button and then making your own event: #include "\a3\ui_f\hpp\defineResincl.inc" [missionNamespace, "OnGameInterrupt", { params ["_display"]; private _btnSave = _display displayCtrl IDC_INT_SAVE; _btnSave ctrlRemoveAllEventHandlers "ButtonClick"; _btnSave ctrlAddEventHandler ["ButtonClick",{ params ["_btnSave"]; // Do stuff }]; }] call BIS_fnc_addScriptedEventHandler; IDC_INT_SAVE is 119 btw. I am not sure if it is possible to create manual save games though. According to the BIKI https://community.bistudio.com/wiki/saveGame saves are auto saves.
  7. EDIT: Just now noticed that it doesn't matter if it is manual or automatic, so you can use the OnSaveGame scripted EH https://community.bistudio.com/wiki/Arma_3:_Scripted_Event_Handlers Old answer (only detects manual saving): since the game is saved via a button click you could add an eventhandler to the button, so something like: #include "\a3\ui_f\hpp\defineResincl.inc" [missionNamespace, "OnGameInterrupt", { params ["_display"]; private _btnSave = _display displayCtrl IDC_INT_SAVE; _btnSave ctrlAddEventHandler ["ButtonClick",{ params ["_btnSave"]; // Do stuff }]; }] call BIS_fnc_addScriptedEventHandler;
  8. Can't confirm, works for me. Maybe you are not allowing suspension? Safest bet is to always spawn the function.
  9. 7erra

    Get Handle on Ctrl

    https://community.bistudio.com/wiki/GUI_Tutorial#UI_Scripts There it is
  10. 7erra

    Get Handle on Ctrl

    the first syntax is not entirely safe. if you have multiple dialogs open it might not change the text of the control you are aiming for. the other syntax with "_ctrl ctrlSetText "text"; " is the better option. yes. config and sqf are two very different worlds. unfortunately, getting control handles is tedious. the usual concept would be: Use _display = findDisplay IDD; to get the display (or use the params from the onLoad UIEH*) Then use _ctrl = _display displayCtrl IDC; to get your control Always use the syntax with _ctrl COMMAND rightArguments instead of relying on the idc *Using the onLoad UIEH and params is the most elegant way. i am going to add some info to https://community.bistudio.com/wiki/GUI_Tutorial on how BI structures their UI scripts.
  11. Interesting since you can't actually use it
  12. Looked throught the config.cpp of \a3\ui_f for a class containing the string "hint". I knew that the hint command only works with string and structured text so the control that displays the text can only be a RscStructuredText control. When I found some possible candidates I copied their config into a description.ext of a test mission and created the display to see what it looks like and the RscHint was the right one.
  13. The idd is 301. Though it seems weird that infistart is able to block that as it is not a display but rather a subclass of RscInGameUI which sqf has no control over...
  14. You can create your own respawn behavior by using onPlayerRespawn.sqf and onPlayerKilled.sqf. You can keep a player in the spectator mode by setting his respawn timer to a high value, 1e+6 (10^6) for example. If you want him to respawn you can set his respawn time to a lower value again, for example 0 for instant respawn. For example: description.ext respawn = 3; respawnDelay = 1e+6; respawnTemplates[] = { "Base" }; respawnOnStart = -1; onPlayerKilled.sqf sleep 5; ["Initialize", [ _unit, // spectator [west], // allowed sides false, // allow AI false, // allow free camera false, // allow 3rd person camera true, // show focus info false, // show camera buttons false, // show controls helper true, // show header true // show lists ]] call BIS_fnc_EGSpectator; onPlayerRespawn.sqf: params ["_player", "", "", "_delay"]; if (alive _player) then { //--- Player is not spectating, do nothing if !(["IsSpectating"] call BIS_fnc_EGSpectator) exitWith {false}; //--- Player can be respawned from spectator // You might want to move the player to a specified position here, eg // [_player, /*position*/, false] call BIS_fnc_moveToRespawnPosition; ["Terminate"] call BIS_fnc_EGSpectator; setPlayerRespawnTime _delay; true } else { //--- Player is dead // Do stuff here before player respawns //--- Respawn player setPlayerRespawnTime 3; false }; Not sure if this does work. I copied it from one of my missions and removed unnecessary bits,
×