You disappointed me you never posted your try. Here is what I came up with for you.
/* =================================================================================
Cycling Forward and Backward through Sets of Tool Presets
=====================================================================================
2017 John J. McAssey (JJMack)
=====================================================================================
Naming Your Script so that it identify the tool and Presets Set will helpful.
Copy this script to a new Name for each set of presets you want to cycle through.
Run that script via shortcut keys. Set two Shortcuts keys
F(n) Forward Modifier+F(n) Backward
There are three required parameters for the cycling function:
1.) Correct Photoshop Tools Name
2.) Presets Set file name the * part of the *.tpl file
The *.tpl file must reside in the scripts folder
3.) Array of preset names in your desired cycling order
=====================================================================================
Note: This script only deals with Tool Preset files .tpl for tools preset are easily
reset back to Adobe's defaults using the Preset manager. Tool presets may require
other Photoshop add-ons like brush .abr, patterns .pat, swatch .aco, etc files to
also be loaded this script will not load them this script will only load .tpl
files if there is a need too. You must add what your presets require to Photoshop
================================================================================== */
#target photoshop;
app.bringToFront();
// Required three parameters tool,Set,list
var tool = 'paintbrushTool'; // Photoshop Tool name your Presets set is for. Only one tool's presets
// For this sample script the presets set can be from DeviantArt "The Sketch Arsenal" that's "the_sketch_arsenal_by_thatld.tpl"
// http://thatld.deviantart.com/art/The-Sketch-Arsenal-161678023 Download link on Top Right of the Page not the one on the bottom
var presetSet = 'the_sketch_arsenal_by_thatld'; // Presets set name *.tpl file need to be same folder as this Photoshop script.
var presetNames = [ // Preset names list start. Presets you want to cycle through. Set can have more.
'Color Brush - Flat',
'Color Brush - Magic Edge',
'Color Pencil - Hard',
'Color Pencil - Soft',
'Drawing Pencil - B Lead',
'Drawing Pencil - Blue Line',
'Drawing Pencil - H Lead',
'Linework Pen - Fine',
'Marker - Lower the Flow to Dry',
'Shading Brush - Pressure Hold',
'Shading Brush - Soft Texture',
'Shading Pencil - General',
'Shading Pencil - Hard',
'Shading Pencil - Soft',
'Sketch Pencil - H Lead',
'Sketch Pencil - The Ultimate!',
'Watercolor Brush - General'
]; // Presets names list end. Order the way you want to cycle through them
// End Required Parameters
cycle(tool,presetSet,presetNames); // Cycle Forward and Backward through tool presets set names
// End of Script
// =================================================== Main function ======================================================== //
function cycle(toolName,toolPresetSet,toolPresetNames){
try {selectTool(toolName);} // Insure the tool is select so preset can be selected
catch(e) {alert("Unable to Select the Tool "+toolName); return;}// Tool name wrong or unavailable
var desc = new ActionDescriptor(); // Set up Photoshop to remember variables
try{var desc = app.getCustomOptions ('Cycle' + toolPresetSet);} // Try to get CustomOption for cycling this tool presets set
catch(e){ // Each Photoshop session this should fail first time reset
try {selectToolPreset(toolPresetNames[0]);} // Insure Tool Presets Set has been loaded
catch(e) { // Will fail if tools presets set is not loaded
if (loadToolPresetSet(toolPresetSet)) { // Load Tool presets set
try {selectToolPreset(toolPresetNames[0]);} // Load sets first preset
catch(e) {alert("Was unable to Select the Tools Preset "+toolPresetNames[0]); return;} // Failed to select preset
}
else {alert("Was unable to load Tools Presets Set " + toolPresetSet); return;} // Failed to load tools presets set
}
desc.putInteger (0,0); // This line save the variable while Photoshop is open,
app.putCustomOptions('Cycle'+toolPresetSet , desc, false ); // Initialize presets set CustomOption for cycling
desc = app.getCustomOptions ('Cycle'+toolPresetSet); // Get CustomOption Cycle starting point
}
var presetNumber = desc.getInteger(0); // Get the preset index
if(ScriptUI.environment.keyboardState.ctrlKey||ScriptUI.environment.keyboardState.altKey||
ScriptUI.environment.keyboardState.shiftKey) { // Previous preset if Ctrl or Shift key is down
presetNumber = presetNumber-2; // Back up two preset for it will be bumped one
if (presetNumber<0){presetNumber = toolPresetNames.length-1;} // Set preset index to the end of the list
}
if (presetNumber < toolPresetNames.length){desc.putInteger(0,presetNumber+1);} // Update preset index number
else{presetNumber=0; desc.putInteger(0,1);} // Reset preset index pointer to the begging of the list
app.putCustomOptions('Cycle'+toolPresetSet,desc,false); // Put Update the Custom option
try {selectToolPreset(toolPresetNames[presetNumber]);} // Set tool with preset
catch(e) {alert("Was unable to Select the Tools Preset " + toolPresetNames[presetNumber]);} // Failed to select preset
};
// =================================================== Helper functions ===================================================== //
function selectTool(tool) {
var desc9 = new ActionDescriptor();
var ref7 = new ActionReference();
ref7.putClass( app.stringIDToTypeID(tool) );
desc9.putReference( app.charIDToTypeID('null'), ref7 );
executeAction( app.charIDToTypeID('slct'), desc9, DialogModes.NO );
};
function selectToolPreset(PresetName) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putName( stringIDToTypeID( "toolPreset" ), PresetName );
desc.putReference( charIDToTypeID( "null" ), ref );
executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
}
function loadToolPresetSet(SetName) {
returncode = true;
var scriptLocation = String(findScript());
var path = scriptLocation.substr(0, scriptLocation.lastIndexOf("/") + 1 ) ;
var SetFile = new File(path + SetName + ".tpl"); // Requited to be in the script's folder
if (!SetFile.exists) { returncode = false; }
else {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putProperty( charIDToTypeID( "Prpr" ), stringIDToTypeID( "toolPreset" ));
ref.putEnumerated( charIDToTypeID( "capp" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
desc.putReference( charIDToTypeID( "null" ), ref );
desc.putPath( charIDToTypeID( "T " ), new File( SetFile ) );
desc.putBoolean( charIDToTypeID( "Appe" ), true );
try {executeAction( charIDToTypeID( "setd" ), desc, DialogModes.NO );}
catch(e) { returncode = false; }
}
return returncode ;
}
function findScript() {// Find the location where this script resides
var where = "";
try { FORCEERROR = FORCERRROR;}
catch(err) { where = File(err.fileName);}
return where ;
}
/* Photoshop tool names
'moveTool' 'cloneStampTool' 'typeCreateOrEditTool'
'marqueeRectTool' 'patternStampTool' 'typeVerticalCreateOrEditTool'
'marqueeEllipTool' 'historyBrushTool' 'typeCreateMaskTool'
'marqueeSingleRowTool' 'artBrushTool' 'typeVerticalCreateMaskTool'
'marqueeSingleColumnTool' 'eraserTool' 'pathComponentSelectTool'
'lassoTool' 'backgroundEraserTool' 'directSelectTool'
'polySelTool' 'magicEraserTool' 'rectangleTool'
'magneticLassoTool' 'gradientTool' 'roundedRectangleTool'
'quickSelectTool' 'bucketTool' 'ellipseTool'
'magicWandTool' 'blurTool' 'polygonTool'
'cropTool' 'sharpenTool' 'lineTool'
'sliceTool' 'smudgeTool' 'customShapeTool'
'sliceSelectTool' 'dodgeTool' 'textAnnotTool'
'spotHealingBrushTool' 'burnInTool' 'soundAnnotTool'
'magicStampTool' 'saturationTool' 'eyedropperTool'
'patchSelection' 'penTool' 'colorSamplerTool'
'redEyeTool' 'freeformPenTool' 'rulerTool'
'paintbrushTool' 'addKnotTool' 'handTool'
'pencilTool' 'deleteKnotTool' 'zoomTool'
'colorReplacementBrushTool' 'convertKnotTool'
*/