Difference between revisions of "Script:Store Commands"
From Roll20 Wiki
m (→Syntax) |
(info on commands) |
||
Line 20: | Line 20: | ||
| A command to store for later use. This can be anything you could normally enter in chat, as well as the [[API:Chat#Chat Functions|/direct]] command. | | A command to store for later use. This can be anything you could normally enter in chat, as well as the [[API:Chat#Chat Functions|/direct]] command. | ||
|} | |} | ||
+ | |||
+ | ==== Using the commands ==== | ||
+ | |||
+ | Use <code>!delay</code> to set a default delay between commands. Alternatively, the optional argument of <code>!store</code> can be used to set the delay for one command. If no delay is set, 500ms will be used. | ||
+ | |||
+ | Use <code>!store</code> to store commands to be executed later. Any command can be stored, from regular chat to whispers to API commands to the [[API:Chat#Chat Functions|/direct]] command that is normally accessible only from the API. | ||
+ | |||
+ | <code>!clearstore</code> will clear your current store of commands. <code>!echostore</code> will tell you exactly what you have stored at the moment, and what the delay values are. | ||
+ | |||
+ | When you call <code>!run</code> all of the store commands will be used in order, with their delay between each one. Any messages to the chat will be sent as though you (the player) sent the message. The <code>!run</code> command does '''not''' clear your store, so you can run it again several times in a row. | ||
+ | |||
+ | Stores are not maintained between sessions, and each player has his or her own store. | ||
==== Code ==== | ==== Code ==== |
Revision as of 06:50, 2 September 2013
The following script creates the API commands !delay
, !store
, !clearstore
, !echostore
, and !run
.
Syntax
!delay time
!store [!time] command
!clearstore
!echostore
!run
Parameter | Values |
---|---|
time | A time delay in milliseconds. The !delay command will set the default delay for the !store command. A delay set using the !store command will override that default, but only for that command. Using !delay will not change the delays of already stored commands. 500ms will be used if no delay is ever specified.
|
command | A command to store for later use. This can be anything you could normally enter in chat, as well as the /direct command. |
Using the commands
Use !delay
to set a default delay between commands. Alternatively, the optional argument of !store
can be used to set the delay for one command. If no delay is set, 500ms will be used.
Use !store
to store commands to be executed later. Any command can be stored, from regular chat to whispers to API commands to the /direct command that is normally accessible only from the API.
!clearstore
will clear your current store of commands. !echostore
will tell you exactly what you have stored at the moment, and what the delay values are.
When you call !run
all of the store commands will be used in order, with their delay between each one. Any messages to the chat will be sent as though you (the player) sent the message. The !run
command does not clear your store, so you can run it again several times in a row.
Stores are not maintained between sessions, and each player has his or her own store.
Code
var store_commands = store_commands || {}; store_commands.list = {}; on('chat:message', function(msg) { if(msg.type != 'api') return; var parts = msg.content.split(' '); var command = parts.shift().substring(1); var id = msg.playerid; if(!store_commands.list[id]) store_commands.list[id] = { cmds: [], delay: 500 }; switch(command) { case 'delay': store_commands.list[id].delay = parseInt(parts[0], 10); break; case 'store': var delay = 500; if(parts[0].indexOf('!') == 0) delay = parseInt(parts.shift().substring(1), 10); else if(store_commands.list[id].delay) delay = store_commands.list[id].delay; var obj = { text: parts.join(' '), delay: delay }; store_commands.list[id].cmds.push(obj); break; case 'clearstore': store_commands.list[id].cmds = []; break; case 'echostore': for(var i = 0; i < store_commands.list[id].cmds.length; i++) { var obj = store_commands.list[id].cmds[i]; sendChat('Store Commands.js', '/w ' + msg.who + ' {' + obj.delay + 'ms, ' + obj.text + '}'); } break; case 'run': var count = 0; for(var i = 0; i < store_commands.list[id].cmds.length; i++) { var obj = store_commands.list[id].cmds[i]; store_commands.echo(id, obj.text, count + obj.delay); count += obj.delay; } break; default: break; } }); store_commands.echo = function(id, text, delay) { setTimeout(function(){ sendChat('player|'+id, text); }, delay); };