Jump to content

Search the Community

Showing results for tags 'curator'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • BOHEMIA INTERACTIVE
    • BOHEMIA INTERACTIVE - NEWS
    • BOHEMIA INTERACTIVE - JOBS
    • BOHEMIA INTERACTIVE - GENERAL
  • FEATURED GAMES
    • Vigor
    • DAYZ
    • ARMA 3
    • ARMA 2
    • YLANDS
  • MOBILE GAMES
    • ARMA MOBILE OPS
    • MINIDAYZ
    • ARMA TACTICS
    • ARMA 2 FIRING RANGE
  • BI MILITARY GAMES FORUMS
  • BOHEMIA INCUBATOR
    • PROJECT LUCIE
  • OTHER BOHEMIA GAMES
    • ARGO
    • TAKE ON MARS
    • TAKE ON HELICOPTERS
    • CARRIER COMMAND: GAEA MISSION
    • ARMA: ARMED ASSAULT / COMBAT OPERATIONS
    • ARMA: COLD WAR ASSAULT / OPERATION FLASHPOINT
    • IRON FRONT: LIBERATION 1944
    • BACK CATALOGUE
  • OFFTOPIC
    • OFFTOPIC
  • ArmA Toolmakers's Releases
  • ArmA Toolmakers's General
  • Die Hard OFP Lovers' Club's Topics
  • 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

XBOX Live


PlayStation PSN


Origin


PlayFire


SoundCloud


Pinterest


Reddit


Twitch.Tv


Ustream.Tv


Duxter


Instagram


Location


Interests


Interests


Occupation

Found 7 results

  1. Achilles

    Achilles Achilles is a gameplay modification for Arma 3. It expands the Zeus real-time editor with many new additions as well as provides bug fixes. Achilles started as an expansion to Ares mod, which was created by Anton Struyk. Achilles became the de facto successor to Ares at the point the latter was no longer updated. Achilles has already grown into a splendid project, but new additions are still to come! Table of Contents Features Language Localization Getting Started Installing Required Addons Incompatible Addons Optional Addons Other Zeus Addons Documentation Reporting Issues, Requesting Features and Changes How to Contribute Basic Steps Setting up Your Local Development Environment Add a New Module Add a Translation Authors Contact License Features Visual changes to the Zeus interface Tons of new modules: ACE Medical (e.g. heal, injury; also work in vanilla!) AI Behaviour (e.g. animations, garrison buildings, surrender) Arsenal (e.g. add/modify) Buildings (e.g. destruction, breachable doors) Development Tools (e.g. execute code, config/function viewer) Environment (e.g. advanced weather, earthquakes) Equipment (e.g. toggle tac light) Fire Support (e.g. artillery, suppressive fire) Objects (e.g. attach to, toggle simulation, IEDs) Reinforcements (e.g. spawn reinforcements on the fly) Scenario Flow (e.g. advanced intel, side relations) Spawn (e.g. custom compositions, smoke pillar, USS Freedom) Zeus (e.g. add/remove objects) Extended attribute window: Groups (e.g. careless, hold fire) Vehicles (e.g. cargo, pylons, garage, damage wheels) etc. New waypoint types: e.g. seek and destroy, paradrop, sling load Hotkeys: Copy/past units including the full loadouts Remote control etc. Customizations: Settings (e.g. faction filter) Language Localization Achilles is available for the following languages: English French German Japanese Russian Simplified Chinese Traditional Chinese If your language is not on the list, the English localization will be used. We welcome any new translations (check out How to Contribute). Getting Started Below is what you need to know to get Achilles up and running: Installing Required Addons Incompatible Addons Optional Addons Other Zeus Addons Installing You can download Achilles from: GitHub Steam Workshop Armaholic If you are not familiar with installing ArmA 3 addons, check out the Armaholic installation guide. Required Addons Achilles requires: Arma 3 Community Based Addons A3 (CBA_A3) Incompatible Addons Addons that you should not run when you use Achilles: Ares Optional Addons These mods below are required for certain features (e.g. fast-roping): Advanced Combat Environment 3 (ACE3) Advanced Rappeling (AR) Task Force Arrowhead Radio (TFAR) Other Zeus Addons A list of other Zeus mods that are not required, but nice additions: Zeus/Eden Compositions (ZEC) Zeus/Eden Compositions for CUP (ZECCUP) Zeus/Eden Interiors (ZEI) Documentation Check out the Achilles Wiki and the Achilles Tutorial Series on YouTube. The documentation is rather limited at the time and thus, you will certainly have questions. We will gladly answer them on our Discord server. Reporting Issues, Requesting Features and Changes Please use our Issue Tracker for these kinds of purposes. In the case of a bug report, please only use a minimal set of mods (i.e. only use other mods than the required ones if they are clearly related to the issue). How to Contribute We always welcome contribution to the repository and thank you for your work! We will update the list of contributors. What you need to know: Basic Steps Setting up Your Local Development Environment Add a New Module Add a Translation Basic Steps Fork the Achilles repository Set up your local development environment Do your stuff Create your pull request And then we will have a look at your work! Setting up Your Local Development Environment Clone your forked repository Set up your addon builder (either get Hephaestus or use the AchillesAddonBuilder.bat in the repository) Add a New Module A good starting point for your new module is the custom module framework. We will gladly help you to port your custom module to Achilles (message us on our Discord server). Add a Translation You have to edit the stringtable.xml. The basics about string tables can be found on the Bohemia Interactive Wiki. If you don't want to edit the file with a text editor, you can use a dedicated tool such as Tabler. Authors Check out the list of contributors. Contact Find us on our Discord server. License Achilles is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.
  2. Hello, I am modifying curator interface, and I've run into a problem with AI following waypoints. The curator interface has only friendly units editable. Enemy units are rendered through my script separatedly so they can't be manipulated. To reinvent the functionality of "right-pressing" the enemy units with mouse to attack them, I am using CuratorWaypointPlaced event handler. I tried to modify waypoint passed from event handler, I tried to create new one and set it to waypointType "DESTROY" and delete the passed one. And I tried to set the one event handler gave me. AI just refuses to behave correctly as in vanilla zeus interface What am I trying to do: - Recreate the RMB behaviour in curator interface - Make AI move to and attack units at "DESTROY" waypoint What is actually happening: [when waypoint is attached to enemy] AI just stands on place nothing is happening, except the AI seems to guard more the direction to it's waypoint attached waypoints are offset to units they are attached to even several meters. (the position is different) sometimes attachWaypointVehicle attaches waypoint to nearby objects instead to enemy unit (but waypointAttachedVehicle still returns enemy unit) [when waypoint is spatial on ground] AI moves to position, sometimes attacking the enemy usually doing weird sh** on the way. when friendly units are too close to waypoint, unit may start killing nearby friendly units (nearby to waypoint) instead of enemy sometimes the waypoint survives for about 5 seconds before disappearing (maybe false completion?) when forced waypoint position by setWaypointPosition to position identical to enemy unit, sometimes the waypoint refuses and jumps to a nearby position What vanilla zeus does when creating a waypoint: Type: "DESTROY" Behaviour: "COMBAT" Position: under interface cursor it doesn't attach the waypoint to units, only sets position, type and behaviour. When I do the exact same, my AI's refuses to work properly (identical to vanilla zeus) //Event Hadler: When zeus places a waypoint (context: added when pressed RMB while hovering over an enemy unit - attack order) eh_waypointModifier = zeusModule addEventHandler ["CuratorWaypointPlaced", { params ["","_group","_waypointID"]; //Waypoint created by curator interface _wp = [_group,_waypointID]; //Waypoint array _group reveal cw_var_unitToAttack; //Revealing the enemy to ordered group (not helping) _wp setWaypointType "DESTROY"; //Sets the waypoint as "DESTROY" so AI would know it is going to attack something (Curator interface does the same) //AI usually moves towards the target, sometimes it does nothing. But it won't attack the enemy. //** Method 1 ** _wp setWaypointBehaviour "COMBAT"; //Makes the AI move towards the waypoint more reliably (Curator interface does the same) //AI moves towards the target tacticaly, it sometimes even engages against the enemy. //** Method 2 ** _wp setWaypointPosition [(position cw_var_unitToAttack),0]; //Sets the position of the waypoint so spatial DESTROY can find it's actual target more easily - does quite the opposite //AI usually stays on position //** Method 3 ** //Variable 'sys_unitToAttack' set by logic calling this EH _wp waypointAttachVehicle sys_unitToAttack; //Attaches the waypoint to the enemy unit - actually attaches the waypoint several meters away from unit, sometimes to different object (waypointAttachedVehicle still returns sys_unitToAttack) //AI usually moves towards the target, but won't attack //** Method 4 ** deleteWaypoint _wp; //Removes the waypoint created by curator interface _wp = _group addWaypoint [position sys_unitToAttack, 0]; //Creates a whole new waypoint on enemy's position _group setCurrentWaypoint _wp; //Sets the new waypoint as current so AI can't be confused which waypoint to use //AI just stands on place doing nothing. zeusModule removeEventHandler ["CuratorWaypointPlaced",eh_waypointModifier]; //Not needed anymore sys_unitToAttack = nil; //Not needed anymore }]; I've spend at least 7 hours figuring this nonsense out and trying several AI hacks. I want to have my scenario addon-free, just working with vanilla, so any mods are not usable to me. Only scripting hacks. This is not really a request for help. It is a request for someone from dev-team to give me some insight on how zeus waypoints works so I can successfuly and reliably replicate. Thx.
  3. Script Version This mod enables Curators to see the Frames-per-second of each individual client when playing in multiplayer. Allowing the Zeus to identify if there is a widespread framerate problem, or if a few select users are experiencing issues. Comments in the code explain how to modify it if you want to change the 'Warning text' threshold which by default is 20fps.Given Arma 3 is now in 64 bit it's the perfect opportunity for players to test their performance in multiplayer coop games with large scale combat. Find out who's computer is the beefiest when playing with your unit, or be able to identify which player's computers are having trouble keeping up with all the action. A great tool for mission makers looking to maintain an optimized experience for their players when monitoring their progress in Zeus. Workshop Google Drive Armaholic
  4. A bit ago I begun working on my own little project to introduce simulated Fog of War to the Zeus commander to allow for a true Zeus vs. Player experience. The idea is simply unrendering objects that the zeus's AI are not aware of. Unfortunately I had to put that project on hold because I ran into a bug that seems unavoidable. That bug being that zeus is completely capable of editing supposedly non-editable objects and even if you remove all editable attributes one-by-one, the fact still stands that the zeus player can simply scan his mouse across the map and find the names/locations of any unit on the map (Ultimately destroying the idea of FOW). Zooming out on the map makes it even easier to discover "hidden" units as the clickable area for all units is increased with the zoom. Original discovery thread here and cobwebbed bug report here I've decided to come back and see if I can work around this problem with the idea of simply hiding the map when the zeus player is in the zeus interface. My hacky idea is this: When the zeus player is in the curator display (IDD 312), recognize when the map is opened (keydown on "M") and black out their screen. Possibly with the text "No map available" or what ever. The prototyping code is: if (player == ZeusCommander) then { fnc_blackScreen = { _blackScreened = _this getVariable "blackScreen"; //Screen isn't black if !_blackScreened then { cutText ["","BLACK",0,true]; //black it //screen is black } else { cutText ["","BLACK IN",1,true]; //remove black }; //flip boolean _this setvariable ["blackScreen",!_blackScreened]; }; ZeusCommander setvariable ["blackScreen",false]; waituntil {!(IsNull (findDisplay 312))}; _keyDown = (findDisplay 312) displayAddEventHandler ["KeyDown","if (_this select 1 == 50) then {ZeusCommander call fnc_blackScreen;}"]; }; In the curator display, recognize "M" (50), check if screen already black. If not, black it, If is, un black it. Simple stuff. To much of my frustration however it seems like no matter what the Zeus map and zeus map unit icons are always ontop. I'm clueless with arma's UI and display infrastructure but it feels like the curator interface is just top priority. I have tried simply covering the map up for the zeus player with a giant area maker but it does not cover up unit icons (Only covers terrain) and now I have tried to black out the screen with cutText which which works perfectly on the normal map (display IDD 46) but not on zeus. It is clear the cutText is running but just behind the zeus map as I can see the BLACK IN fade when I close the zeus map. At this point I'm looking for any recommendation, fix, hacky hack, or what ever to just get rid of this damned broken zeus map. The player's normal map is fine. No unit icons, no ability to hover over the map to discover units, nothin. It's the zeus map that is the problem. If I can discover a way to, in any form, stop the use of the zeus map, then I will have my Fog of War functioning without any extremely obvious exploits.
  5. Latest V1.3: MOD THREAD MOD VERSION WORKSHOP ARMAHOLIC This script enables Curators to see the Frames-per-second of each individual client when playing in multiplayer, or yourself when in SP. Allowing the Zeus to identify if there is a widespread framerate problem, or if a few select users are experiencing issues. Comments in the code explain how to modify it if you want to change the 'Warning text' threshold which by default is 20fps. Pasting this code into the initPlayerLocal.sqf of any mission should work without a problem.Given Arma 3 is now in 64 bit it's the perfect opportunity for players to test their performance in multiplayer coop games with large scale combat. Find out who's computer is the beefiest when playing with your unit, or be able to identify which player's computers are having trouble keeping up with all the action on screen. A great tool for mission makers looking to maintain an optimized experience for their players when monitoring their progress in Zeus. DISCLAIMER: The script version is out of date and does not have all the features of the mod. The mod only needs to be downloaded client side and I recommend you use it instead. If you still wish to use the script, or simply see how it runs, it is here at your disposal. ///////////////////////////////////////////////////////// //Paste the following into the initPlayerLocal.sqf file// ///////////////////////////////////////////////////////// ////////////Script Written by DriftingNitro////////////// //////////Help from Commy2, Dedmen, and Dscha//////////// ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //Spawns a thread that will loop for each player and // //output their FPS to the server to be read by the zeus// ///////////////////////////////////////////////////////// [] spawn { while {true} do { player setVariable ["DNI_PlayerFPS", floor diag_fps, true]; sleep 0.1; }; }; ///////////////////////////////////////////////////////// //Waits until curators are initalized in order to check// //if player is zeus to run the fps scripts // ///////////////////////////////////////////////////////// waitUntil { private _hasCurators = (count allcurators) > 0; private _hasInitializedCurators = (count (call BIS_fnc_listCuratorPlayers)) > 0; private _curatorsInitialized = !_hasCurators || _hasInitializedCurators; ((time > 2) || _curatorsInitialized) }; ///////////////////////////////////////////////////////// //If player is a curator it will run the script and each/ //player will have their FPS appear beneath them // ///////////////////////////////////////////////////////// if (player in (call bis_fnc_listcuratorplayers)) then { addMissionEventHandler ["Draw3D", { { _distance = position curatorCamera distance _x; //if zeus camera is farther than 1200 meters away from the targets the text will not display if (_distance < 1200) then { _playerFPS = _x getVariable ["DNI_PlayerFPS",50]; //if the FPS is below 20 it turns red and becomes more visible for zeus to see so they are aware if (_playerFPS <20) then { drawIcon3D [ "",//Path to image displayed near text [1,0,0,0.7],//color of the text using RGBA position _x,//position of the text _x referring to the player in 'allPlayers' 1,//Width 2,//height from position, below 0,//angle format["%1 FPS: %2", name _x, str _playerFPS],//text to be displayed 0,//shadow on text, 0=none,1=shadow,2=outline 0.05,//text size "PuristaMedium",//text font "center"//align text left, right, or center ]; } //if the FPS is above 20 text is smaller and less visible as to not conern zeus as much else { drawIcon3D [ "",//Path to image displayed near text [1,1,1,0.3],//color of the text using RGBA position _x,//position of the text _x referring to the player in 'allPlayers' 1,//Width 2,//height from position, below 0,//angle format["%1 FPS: %2", name _x, str _playerFPS],//text to be displayed 0,//shadow on text, 0=none,1=shadow,2=outline 0.03,//text size "PuristaMedium",//text font "center"//align text left, right, or center ]; }; }; } forEach allPlayers; //Here is the array of units you wish to display the FPS text for, it can be //changed to be an array of specific units or players if you wish }]; }; ///////////////////////////////////////////////////////// /////////////////////End FPS Script////////////////////// /////////////////////////////////////////////////////////
  6. Hello there Arma community (and developers)! Is there any way to assign costs directly to groups (of units) such as OIA_InfSquad and so on? Well heh, actually I know that it is possible: you just declare the costs of individual classes in the cost table and then call it with bis_fnc_curatorObjectRegisteredTable; That does work so long that when I place a vanilla infantry squad for example the CSAT one, the individual costs I've set will get summed up and then subtracted from the total amount of available Curator (Zeus) points. Why is it then that when I declare individual class costs for a game modification such as Iron Front lite placing individual soldiers works as intended (the set points get subtracted) but when placing a group that consists of those same individual soldiers no curator points get subracted Shouldn't the game handle modifications the same way as it does with vanilla game's groups? That is, when placing a group of units -> sum up all the individual costs and then subtract the total amount. So what gives? Might this be an issue with the base game or the modification I'm using.. or maybe I should declare some additional stuff somewhere that I just currently don't know what to declare and where. I even tried to declare cost (0.9) for LIB_GER_infantry_squad in the very same list where I have set costs for the individual soldiers but that didn't help much. By using the module Set Costs - Soldiers & Vehicles it is possible to circumvent the behavior I'm struggling with here. In that module there's an empty field Men where you can set a cost for every class type "Man". By setting a cost (eg. 0.5) in that field every class type "Man" gets the same cost and then the cost for placing a group from game modifications (such as Iron Front in this case) will be subtracted from the available Curator points. But if I set the cost like that I lose all the control over setting individual costs for every single soldier and then every grunt, marksman, officer and so on will cost the same amount to place and that's a thing I'd like to avert as much as possible.
  7. A little bit of background first. I am an amateur scripter with a decent amount of mission making under my belt. Because of my amateur status I've had to rely on awesome people in my community and the arma 3 community in general to do what I wanted to do for my missions and templates. This was my very first step into what I consider really trying to create something that is a little different. I'm sure there are better ways to do what I've done, and I would love to hear them! But I just wanted to share this to hopefully help anyone who has also started the journey into arma 3 scripting. To really get into things I'll start by saying that with the way my unit works in Arma 3 I make all of the mission templates for our operations. Which averages around 3-4 per week depending on mod updates, errors (on my part mostly!) module tweaks, etc. None of that really bothers me, what did bother me is when I got all of that out of the way and the mission works fine, and there is no need to update the template except for the fact that the unit has changed starting locations for a few players. ARGH! lol So with that in mind I went to youtube to try and figure something out and I cam across this nifty video: I thought cool that would work. I could place the initial spawn right inside of a teleport zone and immediately have the players that load in move to that zone. Zeus can move whatever object it is to the new starting point for the week and I'll be able to perhaps make a few less templates on average. (Still need have updates and stuff right? yep, no worries.) Well then I came up with a few more ideas to make it "better" which is certainly my own fault. So about a week and a half later, and lots of help from a few different people and a lot of browsing the wiki led me to this finally: The Features: - JIP Functional - Enable or Disable the Teleport Manually - Automatically Disable the Teleport if the Teleport Flag is deleted - Automatically Renable the Teleport if the Teleport Flag is rebuilt - Rebuild the Teleport Flag - Delete the Teleport Flag - Only Accessible by Zeus - Automatically Add the Teleport Flag to Zeus at map start, and if rebuilt - Spawn the players randomly around the flag (within 16 meters) How it works: 1. Placed on the Map: Player: controller Player: s3ops Player x 50: other names/players ModuleCurator_F, name: zeusmod, owner: #adminLogged ModuleCurator_F, name: zeusmod_1, owner: controller ModuleCurator_F, name: zeusmod_2, owner: s3ops flag named "s3_tf_spawn" marker named "s3_tf_spawn_marker" marker named "s3_tp_zone", size 16x16 "s3_tf_spawn" synced to ModuleCuratorAddEditableObjects ModuleCuratorAddEditableObjects synced to 3 x ModuleCurator_F trigger, size 0x0, activated repeatedly, blufor not present, condition "this && !alive s3_tf_spawn;", on act "s3_tf_spawn = nil;" object (Laptop), name: s3_spawn 2. In the init.sqf: s3_spawn addAction ["Enable Teleport to Flag", "scripts\s3_tp_enable.sqf"]; s3_spawn addAction ["Disable Teleport to Flag", "scripts\s3_tp_disable.sqf"]; s3_spawn addAction ["-----------",""]; s3_spawn addAction ["Rebuild Teleport Flag", "scripts\s3_spawn_s3_tf_spawn.sqf"]; s3_spawn addAction ["Delete Teleport Flag", "scripts\s3_delete_s3_tf_spawn.sqf"]; s3_spawn addAction ["-----------",""]; 3. in the initplayerlocal.sqf: waituntil {! isnull player}; if (player == player) then { null = execVM "scripts\s3_tp_init.sqf"; } else {}; Now the Scripts: 4. s3_tp_init.sqf: _run = true; while {_run} do { if(isNil "s3_tf_spawn") then { stopTeleporter = "yes"; publicVariable "stopTeleporter"; } else { if(isNil "stopTeleporter") then { stopTeleporter = "no"; publicVariable "stopTeleporter"; }; if(stopTeleporter == "yes") then { _run = false; }; if(player distance (getMarkerpos "s3_tp_zone") < 15) then { player setPos [(getPos s3_tf_spawn select 0)+((random 16)-8), (getPos s3_tf_spawn select 1)+((random 16)-8)]; }; }; sleep 2; }; 5. s3_tp_enable.sqf: _s3curators = allCurators; _s3logic = getAssignedCuratorLogic player; if(_s3logic in _s3curators) then { if(isNil "s3_tf_spawn") then { Hint "The Flag Does Not Exist, Please Rebuild it." } else { stopTeleporter = "no"; publicVariable "stopTeleporter"; ["scripts\s3_tp_init.sqf","BIS_fnc_execVM",true,true] call BIS_fnc_MP; Hint "Teleport Enabled"; sleep 2; }; } else { Hint "You are not in the Zeus Slot, Access Denied." }; 6. s3_tp_disable.sqf: _s3curators = allCurators; _s3logic = getAssignedCuratorLogic player; if(_s3logic in _s3curators) then { stopTeleporter = "yes"; publicVariable "stopTeleporter"; Hint "Teleport Stopped"; sleep 2; } else { Hint "You are not in the Zeus Slot, Access Denied." }; 7. s3_spawn_s3_tf_spawn.sqf: _s3curators = allCurators; _s3logic = getAssignedCuratorLogic player; if(_s3logic in _s3curators) then { if(isNil "s3_tf_spawn") then { s3_tf_spawn = "FlagCarrierWest" createVehicle markerPos "s3_tf_spawn_marker"; zeusmod addCuratorEditableObjects [[s3_tf_spawn],true]; zeusmod_1 addCuratorEditableObjects [[s3_tf_spawn],true]; zeusmod_2 addCuratorEditableObjects [[s3_tf_spawn],true]; publicVariable "s3_tf_spawn"; Hint "Teleport Flag Rebuilt"; } else { zeusmod addCuratorEditableObjects [[s3_tf_spawn],true]; zeusmod_1 addCuratorEditableObjects [[s3_tf_spawn],true]; zeusmod_2 addCuratorEditableObjects [[s3_tf_spawn],true]; Hint "The Flag Already Exists, Added to Zeus." }; } else { Hint "You are not in the Zeus Slot, Access Denied." }; 8. s3_delete_s3_tf_spawn.sqf: _s3curators = allCurators; _s3logic = getAssignedCuratorLogic player; if(_s3logic in _s3curators) then { deleteVehicle s3_tf_spawn; s3_tf_spawn = nil; publicVariable "s3_tf_spawn"; Hint "Teleport Flag Deleted"; } else { Hint "You are not in the Zeus Slot, Access Denied." }; If you have any questions on why, or how things worked feel free to ask and I shall answer to the best of my abilities.Good luck and have a great one!
×