Jump to content

Search the Community

Showing results for tags 'remove'.



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
    • Arma Reforger
    • 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
  • Die Hard OFP Lovers' Club's Topics
  • ArmA Toolmakers's Releases
  • ArmA Toolmakers's General
  • 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
  • BI Forum Ravage Club's Forum Topics
  • Exilemod (Unofficial)'s General Discussion
  • Exilemod (Unofficial)'s Scripts
  • Exilemod (Unofficial)'s Addons
  • Exilemod (Unofficial)'s Problems & Bugs
  • Exilemod (Unofficial)'s Exilemod Tweaks
  • Exilemod (Unofficial)'s Promotion
  • Exilemod (Unofficial)'s Maps - Mission Files
  • TKO's Weferlingen
  • TKO's Green Sea
  • TKO's Rules
  • TKO's Changelog
  • TKO's Help
  • TKO's What we Need
  • TKO's Cam Lao Nam
  • MSOF A3 Wasteland's Server Game Play Features
  • MSOF A3 Wasteland's Problems & Bugs
  • MSOF A3 Wasteland's Maps in Rotation
  • SOS GAMING's Server
  • SOS GAMING's News on Server
  • SOS GAMING's Regeln / Rules
  • SOS GAMING's Ghost-Town-Team
  • SOS GAMING's Steuerung / Keys
  • SOS GAMING's Div. Infos
  • SOS GAMING's Small Talk
  • NAMC's Topics
  • NTC's New Members
  • NTC's Enlisted Members
  • The STATE's Topics
  • CREATEANDGENERATION's Intoduction
  • CREATEANDGENERATION's HAVEN EMPIRE (NEW CREATORS COMMUNITY)
  • HavenEmpire Gaming community's HavenEmpire Gaming community
  • Polska_Rodzina's Polska_Rodzina-ARGO
  • Carrier command tips and tricks's Tips and tricks
  • Carrier command tips and tricks's Talk about carrier command
  • ItzChaos's Community's Socials
  • Photography club of Arma 3's Epic photos
  • Photography club of Arma 3's Team pics
  • Photography club of Arma 3's Vehicle pics
  • Photography club of Arma 3's Other
  • Spartan Gamers DayZ's Baneados del Servidor
  • Warriors Waging War's Vigor
  • Tales of the Republic's Republic News
  • Operazioni Arma Italia's CHI SIAMO
  • [GER] HUSKY-GAMING.CC / Roleplay at its best!'s Starte deine Reise noch heute!
  • empire brotherhood occult +2349082603448's empire money +2349082603448
  • NET88's Twitter
  • DayZ Italia's Lista Server
  • DayZ Italia's Forum Generale

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Yahoo


Jabber (xmpp)


Skype


Biography


Twitter


Google+


Youtube


Vimeo


Xfire


Steam url id


Raptr


MySpace


Linkedin


Tumblr


Flickr


XBOX Live


PlayStation PSN


Origin


PlayFire


SoundCloud


Pinterest


Reddit


Twitch.Tv


Ustream.Tv


Duxter


Instagram


Location


Interests


Interests


Occupation

Found 16 results

  1. Overview Clean up all dead, dropped stuff, ruins, craters around desired point or entire map and remove empty groups. You need to define at least one parameter position, marker or object. Parameter(s): 0 (Required): STRING - marker name, or ARRAY - position in format [x,y,z] or OBJECT - trigger or any object 1 (Optional): NUMMBER - Radius for dead stuff search around param 0, if not supplied, 500m will be automatically selected. 2 (Optional): NUMMBER - Min distance from object to any player. Preventing player to see disappearing of the object, if not supplied, 300m will be automatically selected. 3 (Optional): NUMMBER - Vehicle damage above which almost wrecked vehicles without crew will be selected to remove it. If not supplied such vehicles stays in game. Value between 0.1 and 0.9 4 (Optional): BOOLEAN - Ability to handle with empty groups - true/false. If not supplied false will be selected (disabled) 5 (Optional): NUMMBER - Sleep time in sec between search if not defined 5 min will be automatically selected. Returns: Nothing To prevent remove some object you need to set an "dnt_remove_me" variable on it using: this setVariable ["dnt_remove_me",true,false] You can adjust default functionality by passing desired parameters. Can be called for one area, many areas using multiple instances, or for entire map at once. Download Google Drive Armaholic Usage Place the script in mission root/scripts directory. Best method is to compile it into a function specially if more instances needed. Usage is also commented at the top of the file. init.sqf : /*Example for whole map: Constantly search entire map with 10min interval. Objects in player range (100m) will be skipped. Almost wrecked vehicles without crew stays in game. */ if (isServer) then { fnc_cleanup = compileFinal preprocessFileLineNumbers "scripts\cleanup.sqf"; null = [ [worldSize/2,worldSize/2,0], worldSize/2, 100, 1200 ] spawn fnc_cleanup; }; init.sqf : /*Example for marker: Constantly search entire marker area with 5min interval. Objects in player range (300m) will be skipped. */ if (isServer) then { fnc_cleanup = compileFinal preprocessFileLineNumbers "scripts\cleanup.sqf"; null = [ "marker0", ((getMarkerSize "marker0") call BIS_fnc_greatestNum) ] spawn fnc_cleanup; }; init.sqf : /*Example for object: Constantly search entire trigger area with 10min interval. Almost wrecked empty vehicles with damage > 0.8 will be removed. Objects in player range (500m) will be skipped. Empty groups will be removed. */ if (isServer) then { fnc_cleanup = compileFinal preprocessFileLineNumbers "scripts\cleanup.sqf"; null = [ _myTrigger, ((triggerArea _myTrigger) call BIS_fnc_greatestNum), 500, 0.8, true, 1200 ] spawn fnc_cleanup; }; cleanup.sqf Changelog 12/25/15 First release. 01/04/16 Version 1.0 * Possibility to adjust functionality. * You can now define objects to delete and define damage threshold for vehicles. * removing empty groups 02/17/16 Version 1.1 Added : * Set persistence for certain object. 13/01/17 Version 1.2 *Changed usage of BIS_fnc_inTrigger to inAreaArray command *Set lazy evaluation for conditions 03.01.2018 Version 1.3 Changed usage to more user friendly way. Added player in area check Known Issues None knew for now. Legal You are allowed to change what you want in this script.
  2. What I began on my current AR project is to create a tool class with methods that make me some things easier. In this case I show how to create an easy to use CreateVehicle and a DeleteVehicle method with overloaded argument lists. Which just means that you can have different parameter syntaxes as known from various Arma 3 commands. I created a new script file in the newly created folder MyProject/scripts/GameCode/Tools according to the AR directory structure as I understand it^^. I named the file SaRo_Tools.c - this file will contain the class with my tools methods. What do I have to do when spawning a vehicle without that tools class? Something like this: Now instead of doing this we create our tools class which does most of this automatically: Now you have 2 easy methods to spawn a vehicle: IEntity vehicle1, vehicle2; //1st method using resource name and spawn position vehicle1 = SaRo_Tools.CreateVehicle("{DD774A8FD0989A78}Prefabs/Vehicles/Wheeled/M998/M1025_armed_M2HB_MERDC.et", Vector(1288.93, 0, 766.7)); //2nd method using resource name, an existing entity and a position vector relative to that entity vehicle2 = SaRo_Tools.CreateVehicle("{DD774A8FD0989A78}Prefabs/Vehicles/Wheeled/M998/M1025_armed_M2HB_MERDC.et", someEntity, Vector (0, 0, -15)); //spawns 15m behind someEntity Maybe I did some mistakes in this post because I did write it out of my mind partially. But I ll validate, expand and edit it if Im at home... Deletion methods will be done then as well EDIT: to get this done, I also added 2 entity deletion methods to the tools class. I just post those 2 methods and not the CreateVehicle methods from above again although they are in that class: Now you have 2 easy methods to delete an entity: //1st method delete using the entity ID SaRo_Tools.DeleteVehicle ( SaRo_BMHQ01MenuBaseClass.camoNetID ); //2nd method delete using the entity itself SaRo_Tools.DeleteVehicle ( someEntity ); Now YOU know how to build an own tools library class and you also know how to overload class methods. Its your turn to create more methods that way to get things a bit easier for you...
  3. i have tried this Code for a SP i'm making for a friend, he normally use crossair but i want him to try it without it this time. My problem is that it also removes the Task Icon in game when i use it. it also removes the option to use the scroll menu if i want to put down a satchel in game, but what i can understand by reading on the Wiki https://community.bistudio.com/wiki/showHUD it is normal that it disappears, BUT is there a way i can keep the Menu and the Task Icon and remove the Crosshair with a script, i do know that my friend does not remove it by himself. Does anyone have a idea how to make a workaround? This is the Script from the Wiki showHUD[] = { true, // Scripted HUD (same as showHUD command) let it to true true, // Vehicle + soldier info false, // Vehicle radar [HIDDEN] false, // Vehicle compass [HIDDEN] true, // Tank direction indicator true, // Commanding menu true, // Group Bar false, // HUD Weapon Cursors <---- here false // HUD Squad Radar (not yet) };
  4. Hello, Guys, please help me, i need remove my hold action but i dont know how to use BIS_fnc_holdActionRemove, could you give an example? How to remove it with using BIS_fnc_holdActionRemove? [ _myLaptop, // Object the action is attached to "Hack Laptop", // Title of the action "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa", // Idle icon shown on screen "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa", // Progress icon shown on screen "_this distance _target < 3", // Condition for the action to be shown "_caller distance _target < 3", // Condition for the action to progress {}, // Code executed when action starts {}, // Code executed on every progress tick { _this call MY_fnc_hackingCompleted }, // Code executed on completion {}, // Code executed on interrupted [], // Arguments passed to the scripts as _this select 3 12, // Action duration [s] 0, // Priority true, // Remove on completion false // Show in unconscious state ] remoteExec ["BIS_fnc_holdActionAdd", 0, _myLaptop]; // MP compatible implementation [ player,10 ] call BIS_fnc_holdActionRemove;
  5. Preamble: From the wiki, we can use splitstring and joinstring to remove white space from code. So if we have a function like this one (from the wiki): fnc_deleteTestObj = { _this addMPEventHandler ["MPKilled", { _this = _this select 0; { deleteVehicle _x; } forEach (_this getVariable ["effects", []]); if (isServer) then { deleteVehicle _this; }; }]; _this setDamage 1; }; We can do: copyToClipboard(([fnc_deleteTestObj] joinString "") splitString toString [9,13,10] joinString "") and it returns: { _this addMPEventHandler ["MPKilled", { _this = _this select 0; { deleteVehicle _x; } forEach (_this getVariable ["effects", []]); if (isServer) then { deleteVehicle _this; }; }]; _this setDamage 1; } Which is quite nice. But I wanted a way to remove as much white space as I can (for sending code/variables over the network etc), plus I just fancied playing about with recursion. So with this function, we can use our "fnc_deleteTestObj" function again and plug it in: copyToClipboard(([fnc_deleteTestObj] joinString "") call fnc_whitespace) This returns: {_this addMPEventHandler["MPKilled",{_this=_this select 0;{deleteVehicle _x;}forEach(_this getVariable["effects",[]]);if(isServer)then{deleteVehicle _this;};}];_this setDamage 1;} I'm using joinstring in these examples as opposed to format as it doesn't have the 8k limit. Apparently formatText isn't limited and I'm not sure about str. But you could do this I suppose - just be aware it might have a limit: (str fnc_deleteTestObj) call fnc_whitespace Uses As mentioned, you could shorten variables prior to sending them over the network (then compileFinal at other end). I'm aware that programs like these exist already, but I wanted to do it in sqf (like within the engine). It should be ok but will have a problem if you do silly things like putting spaces into variables ex: player setVariable ["there are spaces in this",true]; which is a bit of a no-no imo and bad practice. You could probably obfuscate your code with this if you want but there are already good online obfuscators available anyway, and also good online de-obfuscators, like this one: http://unminify.com/ I think Dwarden said he used to do this to his mission files to make them smaller so they wouldn't suck up as much bandwidth, so theres a use for it there I suppose. Obv, I haven't tested this much but it seems ok so far - ymmv. Be aware if you use it on very large functions, then it is recursive so it might freeze your game for a few seconds. If you rename it, make sure you rename the call to it in the code as well or you will break it. Function: Here it is for any interested: fnc_whitespace = { private _noWhitespace = toArray(_this); private _anyWS = false; { if (0 isEqualType _x) then { if ([9,13,10] find _x > -1) then { _noWhitespace set [_forEachIndex,objNull]; _anyWS = true; } else { if ([34,39,94,42,40,41,123,125,91,93,59,58,62,47,43,45,61,46] find _x > -1) then { if (_forEachIndex - 1 > -1) then { if ([32,9,13,10] find (_noWhitespace select (_forEachIndex - 1)) > -1) then { _noWhitespace set [_forEachIndex - 1,objNull]; _anyWS = true; } }; if (_forEachIndex + 1 < count _noWhitespace) then { if ([32,9,13,10] find (_noWhitespace select (_forEachIndex + 1)) > -1) then { _noWhitespace set [_forEachIndex + 1,objNull]; _anyWS = true; } }; } } }; } forEach _noWhitespace; _noWhitespace = _noWhitespace - [objNull]; if (_anyWS) then { _noWhitespace = (toString _noWhitespace) call fnc_whitespace; _noWhitespace = toArray _noWhitespace; }; toString(_noWhitespace) }; And here it is compacted (ho ho ho): fnc_whitespace={private _noWhitespace=toArray(_this);private _anyWS=false;{if(0 isEqualType _x)then{if([9,13,10]find _x>-1)then{_noWhitespace set[_forEachIndex,objNull];_anyWS=true;}else{if([34,39,94,42,40,41,123,125,91,93,59,58,62,47,43,45,61,46]find _x>-1)then{if(_forEachIndex-1>-1)then{if([32,9,13,10]find(_noWhitespace select(_forEachIndex-1))>-1)then{_noWhitespace set[_forEachIndex-1,objNull];_anyWS=true;}};if(_forEachIndex+1 < count _noWhitespace)then{if([32,9,13,10]find(_noWhitespace select(_forEachIndex+1))>-1)then{_noWhitespace set[_forEachIndex+1,objNull];_anyWS=true;}};}}};}forEach _noWhitespace;_noWhitespace=_noWhitespace-[objNull];if(_anyWS)then{_noWhitespace=(toString _noWhitespace)call fnc_whitespace;_noWhitespace=toArray _noWhitespace;};toString(_noWhitespace)} Credit to @dreadedentity for his initial code HERE Enjoy!
  6. Hi! I want to create a function that allows me to remove trees in entire maps in a balanced way, basically reducing the ammount of trees on heavily crowded forests. I want to do this as quick as possible, so my take on this was to run a function to iterate over hundred thousands trees, choose randomly 50% of all trees (for example), and store the resulting array in a file, that I could call straight away to remove those objects on mission load. And when I run my function to delete those objects, I receive " Error Missing ] " at this point: (#) _remove = [299376: t_piceaabies_3f#.p3d,122775: t_piceaabies_3f.p3d,507279: t_piceaabies_3f.p3d, ... , ... ]; It is asking me to close brackets before .p3d on first element. I'm grabbing all data with copyToClipboard str This problem only happens when I'm trying to store data in an array, but if I run this inside the game, same logic, I can delete everything I want without problem. Any idea what I'm missing here?
  7. Looking for a script to remove all AI smokes from OPFOR at the Init level. I've been digging for ages and have only found failed scripts and not much else to go off of. I'd like to remove all smokes from all OPFOR AI at mission start. They are very smoke happy and it causes FPS issues, Lag, and it's just annoying to stop a firefight for 2 or 3 minutes for enemy smoke to clear. I was happy removing them all by hand via the edit load-out option in the right click menu when we were working with a smaller squad with smaller missions. But we have grown enough for there to be 60-100 enemy's at a time and doing it by hand just isn't an option anymore. I've given it a whack, but I'm not sure what the smokes ID is for each one. Or how to find them. There must be a better way to remove all than to name each smoke ID and remove it. If there isn't, if one of you wonderful people over here would like to set me up with a basic script with 2 or 3 vanilla names, and the knowledge on how to find all the other IDs, I'll gladly add the rest of them myself. Thanks in advance!
  8. Description: This is a GUI that allows the person who executed the script to add/assign or remove/unassign Zeus to any specified player(s). Downloads & More Information: GitHub: Pastebin: Video: Steam Guide: Curator Creator Version 1.0: * New version is coming out soon. The script was broken so I am going to re-make it myself. *
  9. I use this to add an IFF light to units, IRLight= "NVG_TargetC" createVehicle [0,0,0]; _unit removeMagazine "B_IR_Grenade"; IRLight attachTo [_unit, [0,-0.03,0.07], "LeftShoulder"]; Which is great because removeMagazine deletes the IR light object (the grenade) but not the light effect. I also use, light = "Land_PortableLight_single_F" createVehicle [0,0,0]; light attachTo [cockpit, [0,2,-1.35], "vez"]; To create a cabin light for vehicles. This is a hilarious solution though because it's like duct-taping a construction lamp to the vehicle. How can I delete the world model for the lamp but leave the light source, like removeMagazine does for the IR grenade? note: I know how to make lots of different kinds of lights but only lights attached to models seem to be able to keep up with attachTo on a vehicle (especially a jet). This is the whole block, cockpit = playerJET; CPlight = "Land_PortableLight_single_F" createVehicle [0,0,0]; CPlight attachTo [cockpit, [0,2,-1.35], "vez"]; addMissionEventHandler ["Draw3D", { CPlight setVectorDirAndUp [ (cockpit selectionPosition "pohon") vectorFromTo (cockpit selectionPosition "vez"),[0,0,0] ];
  10. Hi, I know how to add a custom ace 3 interaction by script, but is it possible to remove this action after use? And how?
  11. Im having abit of trouble getting my addactions to remove from list. What I have tried in greeting.sqf //Not the hole sqf file Guard1 addAction ["What do you do here", "Dialog\Guard1\JobDisc.sqf","((_target distance _this) <2"]; in JobDisc.sqf hint "I guard the entrance to Camp Bravo"; Guard1 addaction ["Anything happen lately?", "Dialog\Guard1\EnemyLoitering.sqf"]; Guard1 removeaction "What do you do here"; //this action is added by a different script file. I got a hole convo working with a few scripts like this. Everything works perfectly except for the remove action. I need the previous actions to be removed because if you ask again they add more. this is on a coop/single player mission where you respawn as a squad mate when you die until everyone is dead.
  12. Hello, I've been playing with Put and Take event handlers to try and achieve functionality that's stated in the topic. For starters Put EH seems to only fire when you drop your weapon on the ground (groundWeaponHolder) or put the weapon into a container (box, vehicle) directly from your inventory. It doesn't fire when switching to a weapon that is on the ground even though (at least how I see it) you are still dropping your current weapon into a "groundWeaponHolder". Does anyone have an idea why this EH doesn't fire in that case? I used this shortie to test Put EH: player addEventHandler ["Put", {_unit = _this select 0; _content = _this select 1; _weapon = _this select 2; hint "This EH seems to be working";}]; Take EH on the other hand seems to work just fine for detecting the weapon pick up operation. But other than testing with simple hint that the EH fires when needed I haven't been able to come up with anything I'm looking to achieve. Now the ultimate question is: by using either of the aforementioned EHs how to delete the weapon that gets put on the ground during weapon switching operation?
  13. Hi all, I'm trying to remove a specific weapon (known by classname) from the cargo. The issue currently is that this seems only to be possible by clearing the complete weapon cargo and adding everything back but the weapon I want to remove. This however leads to issues as all attachements are lost. I found on the wiki the command "removeWeaponCargo", which possible could be used to delete only the weapon in question: https://community.bistudio.com/wiki/removeWeaponCargo. This uses weaponID and creatorID as arguments. Does anyone know what those are, and where I can find them for the given weapon I want to delete?
  14. Hi, I am just wondering on how to remove map objects in the Eden editor when not loaded in as a player, but in the editor screen when you can place objects. I have seen screen shots where when they are placing objects there is clear spaces where they have done something to remove them map placed objects. I'm just wondering how this is possible? Cheers!
  15. When a jet crashes on a runway for example, it creates this weird dirt/crater which makes landing impossible. I know how to remove the jet but how can i prevent that dirt from appearing? Sa-matra figured out how to do it appearently as such dirt does not create in king of the hill.
  16. fn_arrayValues.sqf - v1.2 What? This script gives you the possibility to get, set, add and remove elements from and in an array by using unique IDs (strings) for each array element without having to worry about indexes. The logic behind it is totally simple. Why? TL;DR: I don't know if some people already created and use something like this, but either way, it's useful and took less than an hour to write. Slightly longer version: While developing some multiplayer missions now and then, I was moving data back and forth between client and server, sometimes using relatively large arrays. At some point, I found it annoying having to be careful about what value is at which index and when I somehow change the array, I had to double check again if the correct indexes are read and written. Coming from object-oriented programming languages, I always found it not satisfactory being unable to create custom objects in SQF. I know there is a „pseudo OO“ framework by code34, but that's just too heavy for my needs. All I wanted was being able to have one thing where I can get, set, add and remove values without having to care about anything but identifiers, just like the getters and setters in an object. And that's the idea of this script. How? This script MUST NOT be spawned, because it's got return values (no shit! ;)). Be aware of that when using remote execution. Every ID has to be a string and can only exist once throughout the whole array. Parameters and which are optional (or not) is described in the top of the script so I'll leave that out here. Examples: All examples are assuming “someId†exists, except if mentioned differently. //Creating a new array of this kind: _array = [[], []]; //Getting a value: _value = [_array, "someId"] call fnc_arrayValue; //Setting a value: _array = [_array, "someId", 123] call fnc_arrayValue; //Adding a value (assuming “someId†does not exist): _array = [_array, "someId", 123, true] call fnc_arrayValue; //Removing a value: _array = [_array, "someId", nil, false] call fnc_arrayValue; //Removing a value, only if it is 3: _array = [_array, "someId", 3, false] call fnc_arrayValue; //Setting a value explicitly to nil, instead of removing it from the array: _array = [_array, "someId", nil, true] call fnc_arrayValue; Kudos to Killzone_Kid for his SQF to BBCode Converter. It doesn't matter how much the array changes. You'll always get the desired value behind the same ID, independent from which index it currently has got. Unfortunately, last time I checked, SQF does not allow arrays like this: [123, , true] which is why there has to be a value (e.g. nil) even if you want to delete something from the array. If you did not pass the “isAdd†parameter, hence accidently try to set a value for an ID which does not exist, for instance due to a typo, the value won't be set. Some might consider it a feature if it would, some might not. I personally like my scripts in a way that only very few things happen implicitly, but I'd like to know what you think about that. Download the file here (SpiderOak)
×