//alias exa script function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } var invalidWords = ['the','a','from','of','to']; var zero = 0; var index = zero; var exaDelay = 100; var exaFunc = function(){ gwc.connection.send('exa ' + gwc.userdata.exaWords[index]); index++; }; //clean userdata, so the trigger on non-searchable words will then fill it gwc.userdata.noSearchWords = []; gwc.userdata.exaWords = []; gwc.userdata.stopSearch = false; var delay = exaDelay; for (var i in args) { if (!isNumber(i) || i == zero) { continue; } var word = args[i]; if (word.indexOf('.') != -1 || word.indexOf(',') != -1) { word = word.substr(0, word.length - 1); } if (invalidWords.indexOf(word.toLowerCase()) != -1) { continue; } gwc.userdata.exaWords.push(word); //async calls which execute one after another with increased delay //because they all start at the same time setTimeout(exaFunc, delay); delay += exaDelay; } //==================================== //trigger to add non-searchable words pattern: ^You find no (\D+). script: if (typeof gwc.userdata.noSearchWords != 'undefined') { gwc.userdata.noSearchWords.push(args[1]); } //===================================== //alias search script var searchWords = []; var timeoutRef = []; var zero = 0; var index = zero; var searchDelay = 6000; if (typeof args[1] != 'undefined') { searchDelay = parseInt(args[1], 10) * 1000; } var searchFunc = function(){ if (gwc.userdata.stopSearch) { for (var i = index; i < timeoutRef.length;i++) { clearTimeout(timeoutRef[i]); } delete gwc.userdata.stopSearch; return; } gwc.connection.send('search ' + searchWords[index]); index++; if (index == searchWords.length) { delete gwc.userdata.stopSearch; gwc.output.append('LAST SEARCH'); } }; var delay = zero; var words = gwc.userdata.exaWords; for (var wordsIndex = 0; wordsIndex < words.length;wordsIndex++) { var word = words[wordsIndex]; if (gwc.userdata.noSearchWords.indexOf(word.toLowerCase()) != -1) { continue; } searchWords.push(word); timeoutRef.push(setTimeout(searchFunc, delay)); delay += searchDelay; } //clean up delete gwc.userdata.noSearchWords; delete gwc.userdata.exaWords; //===================================== //alias stop search script gwc.connection.send('stop'); gwc.userdata.stopSearch = true;