Jump to content

thy_

Member
  • Content Count

    271
  • Joined

  • Last visited

  • Medals

Everything posted by thy_

  1. @pierremgi, I will check this out. Just a comment: this looked a bit confusing for me. First part you're saying to keep (?) the loop check, and in the second one it's not the way to do it? 😅 fn_THY_clientSide.sqf is being called through onPlayerRespawn.sqf (and other cases via initPlayerLocal.sqf already. I will take some tests and keep you all posted. Thanks for investing time here, boys.
  2. Right... At night I'll check it on a dedicated server: // vehicle inside the protected zone: _obj allowDamage false; // Getting the current crew: private _crew = (crew _obj) select { isPlayer _x && alive _x }; // Checking if some player in veh: if ( count _crew > 0 ) then { // Broadcast the settings for the players' machines: { (group _x) addEventHandler["VehicleAdded", { params ["_group", "_newVehicle"]; _newVehicle allowDamage false}] } forEach _crew; }; Should I broadcast also the EH vehicleRemoved when the player leaves the vehicle or the vehicle is destroyed? (I'm at work, so I'm not thinking deeply about whether makes sense).
  3. Nov, 12th 2023 | v6.0.1 Hotfix > Fixed a typo in "fn_CSWR_globalFunctions.sqf" (line 3587) that was printing out an error specific if only sectorized spawns were dropped on the map, without any non-sectorized ones (Thanks to reporting, VR_NotKilled);
  4. One more basic script for your PvP or TvT missions. 🙃 SD is an Arma 3 script that's a smart protection against damage for players, vehicles, and AI units when they are within pre-defined zones. The protected zones have automatic removal of wrecks and rolled-over vehicles, in addition to small automation relating to the protected zone's integrity. Super-Dome script works both at the server layer and on each player's machine, allowing the editor to turn resources ON and OFF. Creation concept: turn specific game zones into safe places for players, areas proof against their enemies and themselves. How to install / Documentation: https://github.com/aldolammel/Arma-3-Super-Dome-Script/blob/main/_SD_Script_Documentation.pdf What to expect from SD script: No dependencies from mods or other scripts; SD works with two layers: player protection is managed by client-side, meanwhile vehicles and AI units by server-side; NEW! No need to set variables on Eden or anywhere else; Set up to 10 protected zones easily with drag-and-drop Eden markers; Turn ON/OFF the protected zones to cover all vehicles and static-weapons (turrets) inside; Turn ON/OFF the protected zones to cover all AI units inside; Turn ON/OFF the protected zones to cover all players by side; NEW! Support to Eden Respawn Vehicle Module; Auto-removal for wrecks and rolled over vehicles in the zone; IMPROVED! Smart speed limit (to disable the protection and accept hard collisions) and wreck delete when inside the zone; IMPROVED! Debugging: friendly feedback messages; Debugging: automatic errors handling; IMPROVED! Full documentation available. Check the file above on GitHub. Dependencies: None. Download: From Github: https://github.com/aldolammel/Arma-3-Super-Dome-Script From Steam Workshop (missions with no respawn): https://steamcommunity.com/sharedfiles/filedetails/?id=3068011817 From Steam Workshop (missions with respawn): https://steamcommunity.com/sharedfiles/filedetails/?id=3078633743 Missions running it: Tanks & Helicopters Light; - - - - - - - - - - - Changelog: Nov, 11th 2023, v1.5.1: changelog. Known issues: Bug > At dedicated-servers running maps with Eden Vehicle Respawn module working sometimes protected vehicles are not really protected. (WIP) Bug > when Eden Vehicle Respawn Module is working with lot of vehicles, Super-Dome nor that module works fine; Not support vehicle respawn: after the original vehicle blows up, the new copy won't be protected anymore; When a vehicle rolls over 2 or more times inside the protected zone, the anti-rollover system stops working properly (Hot fix soon).
  5. The main post has been updated! Nov, 10th 2023 | v1.5: - Added > Support to missions with respawn-points for players, vehicles and static weapons (turrets); - Added > New layer of protection called "Additional Protection" (turn ON/OFF) where the server checks separately unknown stuck vehicles or its wrecks, and remove them; - Fixed > Massive QA tests performed, addressing a few bugs already fixed; - Fixed > Non-protected vehicles, when destroyed inside the protected zone, their wrecks weren't deleted; - Improved > Protected vehicles, even when empty, must respect the speed limit (horizontal and vertical) inside the protected zone to maintain their protection; - Improved > Players under the water with no diving gears, won't be immortal even in protected zones; - Improved > Better support to Zeus module; - Improved > Important debug improvements; - Documentation has been updated. Nov, 11th 2023 | v1.5.1: Hotfix > When Eden Vehicle Respawn module is configured with lot of vehicles, and SD delete automatically the respawned vehicle wrecks, the module got lost; Documentation has been updated.
  6. Issue: When the mission got started, we got one vehicle connected to the Respawn Vehicle Module from Eden Editor. That said, when the vehicle is destroyed, after a while, the vehicle respawns as expected, but it loses the original varName attributed from a script. P.S.1: I don't want to set a varName through the Eden Editor UI. Script scope reasons. P.S.2: The vehicle will spawn at an unpredictable position on the map. What I need: Figure out how to identify this new vehicle that just spawned and set the same varName as the old one. All of this raises these questions: 1) Exclusively looking for the example I brought up, is this the advised way to set a varName by script? _obj setVehicleVarName "MyCar1"; 2) Exclusively looking for the example I brought up, is this the advised way to bring an object varName? (considering the varName is needed only for the mission timeframe) _obj = missionNamespace getVariable "MyCar1"; Wiki stuff: setVehicleVarName getVariable Namespace Respawn Vehicle Module (I guess this is the module I'm using through Eden UI).
  7. I'm performing some tests here and only this below already returned positively 100% of tests here: // By recursion from events: if ( !( _veh getVariable["BIS_fnc_moduleRespawnVehicle_first", false]) && !isNil {_veh getVariable "BIS_fnc_moduleRespawnVehicle_mpKilled"} ) then { true } else { false }; ... so, I do not see the need to check this below (originally inside the IF above): //By initial sync: { _veh in synchronizedObjects MyModuleDroppedOnEden }
  8. 1) Yes. 2) Yes. In addition, I'm running no mods, nothing! Only vanilla Arma 3. For me in the future: find all Respawn Vehicle Modules on the mission with no set varnames: private _modulesFound = []; private _searchForModules = entities "Logic"; // probably there's a way to filter better and make it even faster. { if (typeOf _x isEqualTo "ModuleRespawnVehicle_F") then { // Adding to the module list: GLOBAL_moduleList pushBack _x; }; } forEach _searchForModules; systemChat str GLOBAL_moduleList; // Returned: [MyModuleDroppedOnEden1, MyModuleDroppedOnEden2]
  9. Here's some goes: synchronizedObjects MyModuleDroppedOnEden; // Returned: [car1, car2]; synchronizedObjects car1; // returned: [] But this is curious: private _synced = synchronizedObjects MyModuleDroppedOnEden; systemChat str _synced; // Returned: [car1, car2] // Two ways, first is faster than the second one: if ( _synced findIf { car1 isEqualTo _x } != -1 ) then { systemChat "TRUE" } else { systemChat "FALSE" }; // Returned: FALSE; if ( car1 in _synced ) then { systemChat "TRUE" } else { systemChat "FALSE" }; // Returned: FALSE; 🤨 Commands used on wiki: synchronizedObjects in findIf
  10. All day long working on it, I realized something. A question actually: via code only, how do we know if a vehicle/object is SYNCED with Respawn Vehicle Module?
  11. But how could I call the new _veh on it? Edited: works fine here... params ["_veh"]; private ["_var"]; // Declaration: _var = vehicleVarName _veh; while { true } do { // Updating: _veh = missionNamespace getVariable _var; // If the vehicle exist: if ( !isNull _veh ) then { // Message: systemChat format [">> %1 still available!", vehicleVarName _veh]; }; // Breath: sleep 30; };
  12. 😮😅 It's a script that protects zones on the map, zones defined by marker positions. This "protection" is against any nature of damage in vehicles. Vehicles protected are defined when the mission get started. All vehicles (from a type) inside the zone range will be protected by an "invisible dome". Out of this zone, there's no protection anymore. In all my scripts I try all "mission editor" interferences in Eden Editor, so I'm always looking for ways to avoid, e.g., making the mission editor input varNames in Eden objects, etc. That's why the vehicles aren't receiving "hard" varNames via Eden. Awesome, @Larrow All hands on deck and in a few hours I'm back with something to share...
  13. First, thanks @mrcurry! Now setVariable/getVariable are almost clarified on my end. Not sure if I really got it. So what you saying is for me to take already existent parameters provided for the Arma Respawn Vehicle function that will bring the new and old vehicle references. Can I ask you to bring an example of how to call them from a .sqf? How I'm searching for vehicles that should be available for respawning too: I am scanning vehicles inside a range and then setting a varName dynamically to - in theory - the Respawn Vehicle Module to get to know what vehicle should be targeting with further codes... private [..., ..., ...]; _counter = 0; { _counter = _counter + 1; _var = "veh" + (str _counter); _x setVehicleVarName _var; missionNamespace setVariable [_var, _x]; _allVehicles pushBack _x; } forEach (nearestObjects [_zonePos, ["Car", "Tank"], _zoneRange]); How I'm checking each vehicle (all of them using Respawn): I have no clue how to say to my script that it shouldn't stop the while-loop if the vehicle is destroyed 'cause it would respawn in a while... params ["_veh"]; while { !isNull _veh } do { // Message: systemChat format [">> %1 still available!", vehicleVarName _veh]; // Breath: sleep 30; }; Testing through Module UI on Eden: Just for testing purposes (I wouldn't like to work with this hard code), I've tried the snippet below and it doesn't work... params ["_newVehicle","_oldVehicle"]; _newVehicle setVehicleVarName (vehicleVarName _oldVehicle); missionNamespace setVariable [vehicleVarName _oldVehicle, _newVehicle];
  14. Nov, 5th 2023 | v1.2.1: Fixed > When a vehicle rolled over 2 or more times inside the protected zone, the anti-rollover system stoped working properly. Improved > Optimised the way the script checks each protected thing; Documentation has been updated.
  15. Just thinking... Which one is faster, generally? Of course, considering the same code into the loopings. TAG_fnc_functionName = { // Doc string... // Returns nothing. params ["_something"]; private ["_varPrivate1"]; // code that's need to be checked many, many times... // CPU breath: sleep 1; // Restart the function in a new branch: [_something] spawn TAG_fnc_functionName; // Return: true; }; true; Or while { _someCondTrue } do { // code that's need to be checked many, many times... // CPU breath: sleep 1; }; 🧐
  16. The script and its information in the main post have been updated! 💪 Nov, 3rd 2023 | v1.2: Added > When a protected vehicle (unbreakable) rolls over within the protected zone, it will be deleted after a countdown if the vehicle doesn't return a functional position; Added > When a vehicle and player approach the protected zone too fast, the protection for them is disabled; Improved > Option to turn ON/OFF the markers of protected zones and their action ranges on the map; Fixed > AI protection was conflicting with Player protection when the player went to another protected zone from the same side; Improved > Debugging > bunch of small improvements; Improved > Debugging > Protected units, vehicles, and turrets are editable by Zeus when debug is ON; Documentation has been updated.
  17. The solution was proposed by a respected user in the forum (+3000) so this is why I am using that: to manipulate many different units (including vehicles) working together and executing the same type of movements in the field forever until death. When the function call itself, some small tasks are finished mandatorily in the "old" thread like "cancel a position booking" meanwhile the unit executes the basic movements through the new function thread. You can check this (file on GitHub) function line 4744 where it calls itself in certain specific situations: I got total control over what is been done with each new thread to simulate a loop. My question was about performance.
  18. The PAC actions logic is here: https://docs.google.com/spreadsheets/d/1Z4jw8JdhHcWa0fmUkFGDEoOVuT_dzLkfXVEgRr7VNlI/edit?usp=sharing
  19. 🙂 PAC is a script for ARMA 3 that provides a full solution to control the map limits for players in multiplayer (Coop, PvP, TvT), preventing players from leaving the mission area. Creation concept: to be super easy to implement and customize, compatible with any mainstream mod, and functional for all types of servers: coop missions, PvP, and TvT. How to install / Documentation: https://github.com/aldolammel/Arma-3-Playable-Area-Control-Script/blob/main/_PAC_Script_Documentation.pdf What to expect from PAC script: No dependencies from other mods or scripts; PAC functions are in server's side (run once), but the checking (looping) is on the client's side; Easy installation: the playable area is defined by one named trigger added on the Eden Editor; The editor has the option to allow or not air vehicles (including drones and parachuters) to be tolerated when outside the playable area and on air; The editor has the option to allow or not minimum speed restriction if there's air-tolerance out of the playable area; The editor has the option to allow or not to notify the player about rules if they break some; Full documentation available. Video demo (old): Check the file above on GitHub. Check this data frame. Dependencies: None 🙃 Download: From Github: https://github.com/aldolammel/Arma-3-Playable-Area-Control-Script From Steam Workshop (no respawn): https://steamcommunity.com/sharedfiles/filedetails/?id=2835758829 From Steam Workshop (with respawn): https://steamcommunity.com/sharedfiles/filedetails/?id=2835759780 Missions running it: All my missions - - - - - - - - - - - Changelog: Nov, 30th 2023, v1.7: changelog Known issues: None. Feel free to bring some.
  20. The script and its information in the main post have been updated! 😎 **Oct, 30th 2023 | v1.7** - Added > Air tolerance ON > Parachuters fly out of playable area; - Added > Air tolerance ON > Jet pilots can eject out of playable area; - Added > A list of vehicle types that can be enterally ignored by PAC rules; - Improved > If player has an AI unit under their command and player order it to leave the playable area, the AI will be under the PAC rules if player leaves the area too; - Improved > Lots of improvements regarding performance; - Documentation updated.
  21. Hey there, tudo bem com você? 😄 Just sharing with you all my configs for Visual Studio Code (VS Code), a simple and feasible coding tool for Arma 3, even in 2023 where, if you already tried to use some available extensions, may be frustrating. If you got some smart stuff to VS Code, please, be kind and share it here 😉 VS Code here on my end: VS Code > tool download (free): https://code.visualstudio.com/download (Win/Linux/Mac) VS Code > Essential extensions for Arma 3: SQF-VM Language Server by SQF-VM https://marketplace.visualstudio.com/items?itemName=SQF-VM.sqf-vm-language-server SQF Language Updated by blackfisch https://marketplace.visualstudio.com/items?itemName=blackfisch.sqf-language SQFLint by SkaceKachna https://marketplace.visualstudio.com/items?itemName=skacekachna.sqflint SQF Wiki by Eelis Lynne https://marketplace.visualstudio.com/items?itemName=EelisLynne.sqf-wiki VS Code > extensions recommended: Theme: Atom One Dark Theme https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onedark VS Code > My customs to help for ARMA: Ctrl + Shift + P (Not working for you? Troubleshooting down below) Type "settings.json" (no quotes) and select "Open USER settings (json)"; Adapt the code below for your like: { "workbench.colorCustomizations": { "editor.selectionBackground": "#E5FFE6", "editor.selectionHighlightBackground": "#E5FFE6", "editor.findMatchBackground": "#818181", //Current SEARCH MATCH "editor.findMatchHighlightBackground": "#818181" //Other SEARCH MATCHES }, "sqf.enableCBA": true, "sqf.enableACE3": true, "workbench.iconTheme": null, "workbench.colorTheme": "Atom One Dark", "editor.minimap.enabled": false, "breadcrumbs.enabled": false, "editor.renderWhitespace": "all", "workbench.activityBar.visible": false, "zenMode.hideLineNumbers": false, "security.workspace.trust.untrustedFiles": "open", "editor.wordWrap": "on", "diffEditor.wordWrap": "on", "files.autoSaveDelay": 5000, "editor.tokenColorCustomizations": { "[Atom One Dark]": { "variables": "#eb54de", "functions": "#ff9b58", "numbers": "#49f5b3", "strings": "#70fa20", "keywords": "#fc6620", "comments": "#505050", "types": "#0004ff", "textMateRules": [ { "scope": ["constant.other"], "settings": { "foreground": "#1400c4" } }, { "scope": ["support.function"], "settings": { "foreground": "#fff5cb", "fontStyle": "italic" } }, { "scope": ["keyword.operator"], "settings": { "foreground": "#7ee9fc", "fontStyle": "bold" } }, { "scope": ["variable.language"], "settings": { "foreground": "#a13140" } }, { "scope": ["meta.function-call"], "settings": { "foreground": "#fc6620" } }, { "scope": ["punctuation.terminator"], "settings": { "foreground": "#ffffff" } }, ] } }, "editor.semanticHighlighting.enabled": true, "editor.semanticTokenColorCustomizations": { "[Atom One Dark]": { "enabled": true, "rules": { "*.declaration": { "bold": true } } } }, "files.associations": { "*.json": "jsonc", "*.sqf": "sqf" }, "C_Cpp.autocompleteAddParentheses": true, "sqflint.checkPaths": true, "files.autoSave": "afterDelay", "settingsSync.ignoredSettings": [ ], "workbench.startupEditor": "none", "explorer.confirmDelete": false, "explorer.confirmDragAndDrop": false, "sqflint.warnings": false, "cmake.parseBuildDiagnostics": false, "editor.inlayHints.enabled": false, //"window.menuBarVisibility": "toggle", "editor.hover.delay": 2500 } Share your thoughts and exp 😉 - - - - - - - - - - - Troubleshooting > Can't find out the settings.json? Go to Preferences, pressing Ctrl + , (control + comma) Scroll to "Files: Associations" Add both items down below: Try again the Ctrl+Shift+P. If not working yet, let's try this: Go to Preferences again, pressing Ctrl + , (control + comma) Type "Theme"; In the result list, find out "Edit in settings.json". Now you are ready to customize the VSC colors.
  22. Included in the main post the line below that prevents the VS Code from showing annoying label hints with each variable: "editor.inlayHints.enabled": false,
  23. Just to remind you Arma 3 is a f#### awesome platform and all of the things that I have learned about programming in these last 2 years come from Arma SQF stuff and what you all share with me, guys. Thanks, folks.
×