O Editor de Guiões
Para editar os scripts do seu jogo, clique na ligação «Mod Scripts» na página «Detalhes do Jogo» do seu jogo (no mesmo local onde se encontram opções como o «Registo de Conversas» e «Copiar/Alargar Jogo» ). Ser-lhe-ão apresentadas várias funcionalidades:
- Uma lista de separadores na parte superior. O seu jogo pode ter vários scripts para facilitar a organização. Tenha em atenção que todos os scripts continuarão a ser executados no mesmo contexto, o que significa que não deve ter vários scripts a tentar sobrescrever os mesmos valores ao mesmo tempo, caso contrário poderá obter resultados indesejados.
- Um editor de código de scripts. Pode utilizar este editor ou editar os seus scripts num editor externo à sua escolha e, em seguida, colá-los aqui.
- Uma consola de saída Mod situada na parte inferior (ver abaixo).
Sempre que clicar no botão «Guardar Scripts», a área de teste do seu jogo será reiniciada (perdendo quaisquer dados na memória que não tenham sido guardados no objeto de estado ou nos objetos do Roll20). Isto também se aplica caso adicione um novo script, elimine um script ou altere o estado de um script para o ativar ou desativar.
A Consola de Saída do Mod
A Consola de Saída do Mod é a «janela» para os seus scripts. Uma vez que os scripts de modificação são executados num ambiente isolado, não tem acesso direto aos mesmos enquanto estão a ser executados, para poder visualizar informações sobre os resultados ou erros do script. A Consola de Saída do Mod apresenta esta informação fora do ambiente de teste, para que a possa visualizar enquanto edita os seus scripts. Todos os comandos log() serão apresentados aqui, bem como quaisquer erros que surjam durante a execução dos seus scripts. Para mais informações, consulte o artigo sobre a depuração de scripts.
Apenas para o Mod Script Sandbox v1.5. Sempre que possível, as mensagens de erro incluem um objeto de contexto para que possa ver qual o objeto do Roll20 que esteve envolvido (tipo e ID).
Scripts reativos: escutar eventos, modificar objetos
A primeira (e mais simples) forma de utilizar um Mod Script consiste em reagir a alterações na mesa de jogo e, em seguida, responder com funcionalidades adicionais aos objetos alterados. Este tipo de script é composto por várias funções que monitorizam os eventos que ocorrem durante o jogo. Em seguida, ele modificará os objetos que são passados durante esses eventos, o que alterará o que ocorre na mesa.
on("change:graphic", function(obj) {
obj.set({
left: obj.get("left") + 70
});
});
Como pode ver, criámos uma função «on» simples que será executada sempre que for detetado o evento «change:graphic ». É passado à função o objeto gráfico, obj. Para efetuar uma alteração, basta modificarmos o obj utilizando a função set – quaisquer propriedades que alteremos serão detetadas e alteradas na mesa interativa.
Deve utilizar set e get para definir e obter os valores atuais dos objetos, caso contrário, as suas alterações não serão guardadas. (Consulte os referência sobre para obter uma lista dos tipos de objetos e das suas propriedades, bem como uma lista de todos os eventos e quais os argumentos que são passados a cada evento.)
Scripts proativos: execute tarefas sem a intervenção do utilizador
Para além de reagir a eventos dos utilizadores, também pode realizar ações automaticamente com os Mod Scripts que não estejam associadas a um evento específico dos jogadores. Por exemplo, imaginemos um token que patrulha de um lado para o outro no mapa.
Nota: Embora este tipo de script não dependa da interação do utilizador, os scripts de modificação do seu jogo só serão executados quando houver, pelo menos, uma pessoa ligada ao seu jogo.
on("ready", function() {
// Aguardar até que o evento «ready» seja disparado, para sabermos que o jogo está totalmente carregado.
Obtenha uma referência ao nosso token de patrulhamento.
var patroltoken = findObjs({_type: "graphic", name: "Guarda A"})[0]; //Sabemos que existe um token no jogo chamado "Guarda A".
var direction = -1*70; //Avançar 70 píxeis para a esquerda.
var passosdados = 0; //Quantos passos já percorremos na direção atual?
setInterval(function() {
if (stepstaken > 3) {
//Mudar de direção!
direção = direção * -1; //irá «inverter» a direção em que estamos a caminhar
passos-dados = 0; //redefine os passos para 0.
}
patroltoken.set("left", patroltoken.get("left") + direction); //andar!
stepstaken++;
}, 5000); // executar uma ação a cada 5 segundos
});
Um Tratado sobre Funções Assíncronas
Alguns valores não estão disponíveis de imediato. Os campos relativos a personagens e de distribuição, tais como «bio», «notes», «gmnotes» e «_defaulttoken» da personagem, requerem uma função de retorno de chamada no método get():
character.get("bio", function(bio) {
log(bio);
});
A função `sendChat` pode aceitar uma função de retorno opcional, para que os resultados do lançamento sejam devolvidos ao seu script, em vez de serem publicados no chat. O evento «onSheetWorkerCompleted » é executado após a conclusão da pilha atual de «sheet workers».
Apenas para o Mod Script Sandbox v1.5. O método `character.createToken ` é assíncrono, uma vez que tem de obter o `_defaulttoken` de forma assíncrona. O gráfico criado é transmitido a uma função de retorno de chamada, não é devolvido.
Tenha em atenção que os eventos «prev on change » não contêm o texto desses campos assíncronos. Se precisar do valor anterior do blob, guarde-o na memória cache por sua conta.