Biblioteca para Macros em Lua
Variáveis
variável parametro ou variável parameter e variável arg[indice]
|
(Não é uma função) Possui os parâmetros passado para a macro, onde a variável "parametro" contém a cadeia de caracteres completa e a variável "arg" contém um arranjo, onde cada item representa um argumento separado por espaço.
Se o usuário digitar "/minhaMacro Texto de Teste":
- A variável "parametro" conterá "Texto de Teste"
- A variável arg[1] conterá "Texto", arg[2] conterá "de", arg[3] conterá "Teste" e #arg contém a quantidade de argumentos.
Exemplo: Fazer um teste de resistência parametrizado.
local dificuldade = tonumber(parametro);
if dificuldade == nil then escrever("Utilize: /macro <NÚMERO>"); return; end;
local resultado = rolar("1d20 + 5", "Dificuldade " .. dificuldade);
if resultado >= dificuldade then enviar("Passou no teste!"); else enviar("Não passou no teste"); end;
|
variável meuJogador ou variável myPlayer
|
(Não é uma função) objeto Jogador representando o usuário da macro naquela mesa.
Exemplo 1: Escrever na tela o seu próprio login.
escrever(meuJogador.login);
|
(Não é uma função) Objeto Personagem representando o personagem principal do usuário naquela mesa.
Observações:
- Se o jogador não possuir nenhum personagem, acessar esta variável irá causar um erro com uma mensagem informativa de que "o jogador não possui nenhum personagem" e a macro pára de executar.
Exemplo 1: Escrever na tela o nome do seu personagem.
(Não é uma função) O Objeto Nodo raiz representando o NodeDatabase/Sheet do personagem principal do usuário logado.
Observações:
- Se o jogador não possuir nenhum personagem, acessar esta variável irá causar um erro com uma mensagem informativa de que "o jogador não possui nenhum personagem" e a macro pára de executar.
- A execução da macro pode ser pausada até que o NodeDatabase/Ficha seja carregada pela internet.
- O Objeto Nodo retornado é o mesmo daquela variável "sheet" usada para programar as fichas/lua forms.
- As alterações feitas no objeto nodo retornado são sincronizadas normalmente, confome as regras de permissões do Node Database.
- Se houver algum erro ao carregar o NodeDatabase, a macro pára de executar.
Exemplo:
-- Escrever no chat a estrutura dos dados armazenados da ficha
write(utils.tableToStr(sheet, true));
-- Se for a ficha D&D 5, a linha abaixo aumenta a CA em 1
sheet.CA = (tonumber(sheet.CA) or 0) + 1;
-- Se for a ficha D&D 5, a linha abaixo esreve no chat Quantos PV o personagem tem
write(sheet.PV)
|
variável mesa ou variável room
|
(Não é uma função) objeto Mesa representando a mesa em que a macro está sendo executada.
Exemplo 1: Escrever algumas informações da mesa na tela.
escrever(mesa.nome);
escrever(mesa.sistema);
escrever(mesa.msgStatus);
|
variável jogadores ou variável players
|
(Não é uma função) Arranjo de objeto Jogador, representando os usuários que estão na mesa no momento.
Forma de uso: jogadores[1] contém o primeiro jogador, jogadores[2] contém o segundo jogador, jogadores[3] contém o terceiro, jogadores[#jogadores] possui o último jogador.
Exemplo 1: Escrever na tela o login de todos os jogadores da mesa.
for i = 1, #jogadores, 1 do escrever(jogadores[i].login); end;
|
Exemplo 2: Dar +voz para todos os espectadores da mesa.
for i = 1, #jogadores, 1 do if jogadores[i].isEspectador then jogadores[i]:requestSetVoz(true); end; end;
|
Funções
function escrever(texto[, quebrarLinha, permitirSmileys]) ou function write(texto[, quebrarLinha, permitirSmileys])
|
Escreve um texto na tela do chat. Este texto não é enviado para ninguém e aparecerá somente no chat do próprio usuário.
Parâmetros:
- texto - Cadeia de caracteres contendo o texto que deseja escrever.
- (OPCIONAL) quebrarLinha - Booleano (true ou false) indicando se o RRPG deve adicionar uma quebra de linha no chat antes de escrever o texto. Se omitido, o valor padrão true é assumido.
- (OPCIONAL) permitirSmileys - Booleano (true ou false) indicando se o RRPG deve interpretar smileys/memes neste texto. Se omitido, o valor padrão true é assumido.
Exemplo:
escrever("Olá mundo!!!");
|
function enviar(mensagem) ou function send(mensagem)
|
Envia uma mensagem comum para o chat, como se o usuário a tivesse digitado.
Parâmetros:
- mensagem - Cadeia de caracteres contendo o texto que deseja enviar.
Exemplo:
enviar("Olá, tudo bem?!");
|
function agir(acao) ou function act(acao)
|
Envia uma mensagem como ação para o chat.
Parâmetros:
- acao - Cadeia de caracteres contendo a acao que deseja enviar.
Exemplo:
agir("saca sua espada longa");
|
function narrar(narracao) ou function narrate(narracao)
|
Envia uma mensagem de narração para o chat.
Parâmetros:
- narracao - Cadeia de caracteres contendo a narração que deseja enviar.
Observação: Apenas o mestre consegue enviar mensagens de narração.
Exemplo:
narrar("Após uma péssima noite de descanso, Gruumsh acorda com as mãos algemadas");
|
function enviarNPC(npc, mensagem) ou function sendNPC(npc, mensagem)
|
Envia uma mensagem para o chat como se um NPC estivesse falando
Parâmetros:
- npc - Cadeia de caracteres contendo o nome do NPC.
- mensagem - Cadeia de caracteres contendo a mensagem que deseja enviar.
Observação: Apenas o mestre consegue enviar mensagens como NPC.
Exemplo:
enviarNPC("Rei Darik", "Guardas, prendam estes infelizes!");
|
function rolar(rolagem[, mensagemAdicional]) ou function roll(rolagem[, mensagemAdicional])
|
Executa uma rolagem de dados no chat.
Parâmetros:
- rolagem - Cadeia de caracteres contendo a rolagem a ser feita. Exemplo: "1d20 + 5"
- (OPCIONAL) mensagemAdicional - Uma cadeia de caracteres opcional que acompanhará a rolagem na interface.
Retorno:
- Esta função retorna um número contendo o resultado e um objeto rolagem com informações detalhadas do resultado.
Importante:
- Esta função espera a rolagem ser feita na interface para continuar a execução da Macro. Se, por algum motivo, a rolagem não puder ser feita, a macro pára de executar. Uma possível situação de exemplo é quando a mesa está moderada e o usuário não possui o modo +voz para enviar mensagens.
Exemplo 1:
local resultado = rolar("1d20 + 5");
if resultado >= 15 then enviar("Acertou!"); else enviar("Errou!"); end;
|
Exemplo 2:
local resultado = rolar("1d20 + 5", "Rolagem de ataque");
if resultado >= 15 then rolar("1d8 + 5", "Rolagem de dano"); end;
|
Exemplo 3: Rolar 4d6 e selecionar os 3 maiores números da rolagem.
local resultado, rolagem = rolar("4d6"); local dados = {};
-- coletar os resultados individuais de cada dado for i = 1, #rolagem.ops, 1 do local op = rolagem.ops[i];
if op.tipo == "dado" then for j = 1, #op.resultados, 1 do dados[#dados + 1] = op.resultados[j]; end; end; end;
-- Ordenar os resultados, menores primeiro table.sort(dados);
local texto = "";
-- Pegar os ultimos 3, isto é, os 3 maiores.. de traz para frente
for i = #dados, #dados - 2, -1 do texto = texto .. " " .. dados[i]; end;
enviar("Os 3 maiores números foram:" .. texto);
|
function rolarLocal(rolagem) ou function rollLocal(rolagem)
|
Executa uma rolagem de dados local, isto é, uma rolagem que não será exibida em lugar nenhum.
Parâmetros:
- rolagem - Cadeia de caracteres contendo a rolagem a ser feita. Exemplo: "1d20 + 5"
Retorno:
- Esta função retorna um número contendo o resultado e um objeto rolagem com informações detalhadas do resultado.
Exemplos:
O comportamento da função "rolarLocal" é igual a da função "rolar", portanto, consulte os exemplos de "rolar".
function esperar(milisegundos) ou function wait(milisegundos)
|
Realiza uma pausa cronometrada na execução da Macro.
Parâmetros:
- milisegundos - Um número em milisegundos representando o intervalo de tempo que a execução da Macro ficará pausada. 1000 = 1 segundo, 500 = 0,5 segundos.
Interpreta um código de macro escrita na linguagem LUA
Parâmetros:
- luaCode - Cadeia de caracteres contendo um código na linguagem LUA (seguindo o mesmo padrão de uma macro).
Retorno:
- Se luaCode possui um código Lua válido, retorna uma função que poderá ser invocada
- Se lucaCode não possui um código Lua válido, retorna dois valores: nil e uma mensagem de erro.
Exemplo:
local func, errorMsg = load("write(1 + 5 + 9 + 10)");
if func ~= nil then
-- O codigo foi carregado. Vamos invocá-lo agora
func();
else
write("could not load lua code: " .. errorMsg);
end
|
function showMessage(msg)
|
Exibe uma janela para o usuário contendo uma mensagem.
Parâmetros:
- msg - Cadeia de caracteres contendo a mensagem que deverá ser exibida para o usuário.
Observação:
- A execução da macro é pausada até que o usuário pressione OK na janela.
Exibe uma janela para o usuário contendo uma mensagem de alerta.
Parâmetros:
- msg - Cadeia de caracteres contendo a mensagem que deverá ser exibida para o usuário.
Observação:
- A execução da macro é pausada até que o usuário pressione OK na janela.
function confirmOkCancel(question)
|
Exibe uma janela para o usuário onde ele deve escolher responder ou "Ok" ou "Cancelar"
Parâmetros:
- question - Cadeia de caracteres contendo a mensagem que deverá ser exibida para o usuário.
Retorno:
- true se o usuário responder "Ok" ou false se o usuário responder "Cancelar"
Observação:
- A execução da macro é pausada até que o usuário responda a janela.
Exemplo:
if confirmOkCancel("Será adicionado 6 à rolagem") then
write("O usuario respondeu OK");
else
write("O usuario respondeu Cancelar");
end
|
function confirmYesNo(question)
|
Exibe uma janela para o usuário onde ele deve escolher responder ou "Sim" ou "Não"
Parâmetros:
- question - Cadeia de caracteres contendo a pergunta que deverá ser exibida para o usuário.
Retorno:
- true se o usuário responder "Sim" ou false se o usuário responder "Não"
Observação:
- A execução da macro é pausada até que o usuário responda a janela.
Exemplo:
if confirmYesNo("Deseja continuar?") then
write("O usuario respondeu Sim");
else
write("O usuario respondeu Não");
end
|
function inputQuery(prompt[, initialValue, allowEmptyString])
|
Exibe uma janela para o usuário onde ele deve digitar um valor.
Parâmetros:
- prompt - Cadeia de caracteres orientando o usuário o que ele deve preencher.
- (OPCIONAL) initialValue - Cadeia de caracteres contendo uma sugestão de valor inicial para o usuário.
- (OPCIONAL) allowEmptyString - true se o usuário pode informar um texto em branco. O padrão é false.
Retorno:
- Se o usuário confirmar o valor, esta função retorna o valor escrito pelo usuário
- Se o usuário escolher cancelar na janela exibida, a macro pára de executar.
Observação:
- A execução da macro é pausada até que o usuário responda a janela.
Exemplo:
local bonus = inputQuery("Bônus de Ataque");
local defesa = inputQuery("Defesa", "10");
if roll("1d20 + " .. bonus) >= tonumber(defesa) then
write("Acertou");
else
write("Errou");
end;
|
function selectImageURL([defaultURL])
|
Esta função exibe uma janela para o usuário escolher uma URL de uma imagem.
Parâmetros:
- (OPCIONAL) defaultURL - Texto contendo uma URL sugerida para o usuário
Retorno:
- Retorna a URL de uma imagem escolhida pelo usuário
Observação:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
Exemplo:
local url = selectImageURL();
write("Imagem escolhida: " .. url);
|
function choose(prompt, options, [defaultOptionIndex, shortCircuit])
|
Exibe um diálogo para que o usuário possa escolher uma opção dentre uma lista de opções.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
- options - Um array/arranjo/lista de cadeias de caracteres/textos, contendo as opções que devem ser apresentadas ao usuário.
- (OPCIONAL) defaultOptionIndex - Um número contendo um índice informado qual dos itens de "options" deve ser apresentado como a escolha padrão. Se não informado, nenhuma opção será mostrada como padrão.
- (OPCIONAL) shortCircuit - Avaliação Curto-Circuito: Se for "true" e se houver apenas uma opção a ser mostrada ao usuario, a interface não é exibida e esta opçao é automaticamente selecionada. Se não informado, este parâmetro assume o valor false.
Retorno:
Esta função retorna dois valores na seguinte ordem:
- index - Um número, o índice de "options" que foi escolhido pelo usuário
- text - O texto equivalente ao índice escolhido pelo usuário, conforme "options"
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
- Lembre-se que indices de arrays em lua começa do número 1 ao invés de 0
- Se "options" não for válido ou se for um arranjo com 0 itens, a macro pára de executar como se o usuário tivesse cancelado a janela.
Exemplo:
local indice, texto = choose("O que deseja fazer?", {"Atacar", "Defender"}, 1);
escrever("O usuário escolheu o índice: " .. indice);
escrever("O usuário escolheu: " .. texto);
|
function chooseMultiple(prompt, options)
|
Exibe um diálogo para que o usuário possa escolher uma ou mais opções dentre uma lista de opções.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
- options - Um array/lista/arranjo de textos/cadeias de caracteres, contendo as opções que devem ser apresentadas ao usuário.
Retorno:
Esta função retorna dois valores na seguinte ordem:
- indexes - Um array/arranjo/lista de números, contendo os índices de "options" que foram escolhidos pelo usuário
- texts - Um array/arranjo/lista de textos equivalentes aos índices escolhidos pelo usuário, conforme "options"
Observação:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
- Lembre-se que indices de arrays em lua começa do número 1 ao invés de 0
- Se "options" não for válido ou se for um arranjo com 0 itens, a macro pára de executar como se o usuário tivesse cancelado a janela.
Exemplo:
local indices, textos = chooseMultiple("Bônus ativos", {"Cobertura", "Defesa Total", "Escondido"});
for i = 1, #indices, 1 do
escrever("O usuário escolheu o índice: " .. indices[i]);
escrever("O usuário escolheu: " .. textos[i]);
end;
|
function chooseCharacter(prompt[, filter, shortCircuit])
|
Exibe um diálogo para que o usuário possa escolher um personagem da lista de personagens que estão na biblioteca da mesa.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
- (OPCIONAL) filter - Uma cadeia de caracteres informando quais persnagens devem ser apresentados na interface de seleção e pode ser um dos seguintes valores:
- "all" - Todos os personagens da mesa deverão ser apresentados na janela (Opção padrão caso não seja informado filter)
- "pc" - Apenas os personagens de jogadores deverão ser apresentados na janela.
- "pcOnline" - Apenas os personagens de jogadores que estão online deverão ser apresentados na janela.
- "npc" - Apenas os personagens do mestre deverão ser apresentados.
- "mine" - Apenas os personagens do jogador que executar a macro deverão ser apresentados.
- (OPCIONAL) shortCircuit - Avaliação Curto-Circuito: Se for "true" e se houver apenas um personagem a ser mostrado ao usuario, a interface não é exibida e este personagem é automaticamente selecionado. Se não informado, este parâmetro assume o valor false .
Retorno:
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
- Se o filtro especificado por "filter" não for capaz de apresentar nenhum personagem para escolha, um erro será exibido para o usuário.
Exemplo:
local personagem = chooseCharacter("Qual personagem deseja testar a força?", "pc");
escrever("Você selecionou: " .. personagem.nome);
|
function chooseCharacterOfPlayer(prompt, player [, shortCircuit])
|
Exibe um diálogo para que o usuário possa escolher um personagens da lista de personagens de um jogador na mesa.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
- player - Uma cadeia de caracteres contendo o login do usuário ou um Objeto Jogador representando de qual jogador os personagens deverão ser apresentados na tela.
- (OPCIONAL) shortCircuit - Avaliação Curto-Circuito: Se for "true" e se houver apenas um personagem a ser mostrado ao usuario, a interface não é exibida e este personagem é automaticamente selecionado. Se não informado, este parâmetro assume o valor false .
Retorno:
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
- Se o jogador não possuir nenhum personagem, um erro é lançado.
Exemplo:
local player = choosePlayer("Selecione um jogador");
local personagem = chooseCharacterOfPlayer("Selecione um personagem", player);
escrever(personagem.nome);
local personagem2 = chooseCharacterOfPlayer("Selecione um personagem", "AlyssonRPG");
escrever(personagem2.nome);
|
function chooseCharacters(prompt[, filter])
|
Exibe um diálogo para que o usuário possa escolher um ou mais personagens da lista de personagens que estão na biblioteca da mesa.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
- (OPCIONAL) filter - Uma cadeia de caracteres informando quais persnagens devem ser apresentados na interface de seleção e pode ser um dos seguintes valores:
- "all" - Todos os personagens da mesa deverão ser apresentados na janela (Opção padrão caso não seja informado filter)
- "pc" - Apenas os personagens de jogadores deverão ser apresentados na janela.
- "pcOnline" - Apenas os personagens de jogadores que estão online deverão ser apresentados na janela.
- "npc" - Apenas os personagens do mestre deverão ser apresentados.
- "mine" - Apenas os personagens do jogador que executar a macro deverão ser apresentados.
Retorno:
- Um array/arranjo/lista de Objeto Personagem representando os personagens que o usuário escolheu.
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
- Se o filtro especificado por "filter" não for capaz de apresentar nenhum personagem para escolha, um erro será exibido para o usuário.
Exemplo:
local personagens = chooseCharacters("Quais personagens deseja testar a força?", "pcOnline");
for i = 1, #personagens, 1 do
escrever("Você selecionou: " .. personagens[i].nome);
end;
|
function choosePlayer(prompt[, shortCircuit])
|
Exibe um diálogo para que o usuário possa escolher um jogador da lista de jogadores que estão na mesa.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
- (OPCIONAL) shortCircuit - Avaliação Curto-Circuito: Se for "true" e se houver apenas um jogador a ser mostrado ao usuario, a interface não é exibida e este jogador é automaticamente selecionado. Se não informado, este parâmetro assume o valor false .
Retorno:
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
Exemplo:
local jogador = choosePlayer("De qual jogador voce quer obter informações?")
escrever("Você selecionou: " .. jogador.login);
if jogador.isMestre then
escrever("O jogador é mestre na mesa");
end;
|
function choosePlayers(prompt)
|
Exibe um diálogo para que o usuário possa escolher um ou mais jogadores da lista de jogadores que estão na mesa.
Parâmetros
- prompt - Uma cadeia de caracteres contendo uma orientação ao usuário sobre o que ele deve selecionar.
Retorno:
- Um array/lista de Objeto Jogador representando os jogadores que o usuário escolheu.
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
Exemplo:
local jogadores = choosePlayers("Selecione quais jogadores devem rolar iniciativa");
for i = 1, #jogadores, 1 do
escrever("Rolar iniciativa de " .. jogadores[i].login);
end;
|
function getCharacterOfPlayer(player)
|
Retorna o personagem principal de um jogador da mesa.
Parâmetros
- player - Uma cadeia de caracteres contendo o login do usuário ou um Objeto Jogador representando de qual jogador se deve obter o personagem principal.
Retorno:
Observações:
- A execução da macro é pausada até que o usuário responda a janela.
- Se o usuário cancelar a janela, a macro pára de executar.
- Se o jogador não possuir nenhum personagem, um erro é lançado.
- Se o jogador possuir dois ou mais personagens, o personagem principal dele será retornado.
Exemplo:
local player = choosePlayer("Escolha um jogador");
local personagemPrincipal = getCharacterOfPlayer(player);
escrever(personagemPrincipal.nome);
|
function getCharacterSheet(character)
|
Retorna o Node Database/sheet de um personagem.
Parâmetros
- character - Um Objeto Personagem representando o personagem de qual se deve obter o NodeDatabase/sheet
Retorno:
- O Objeto Nodo raiz representando o NodeDatabase/Sheet do personagem
Observações:
- A execução da macro pode ser pausada até que o NodeDatabase/Ficha seja carregada pela internet.
- O Objeto Nodo retornado é o mesmo daquela variável "sheet" usada para programar as fichas/lua forms.
- As alterações feitas no objeto nodo retornado são sincronizadas normalmente, confome as regras de permissões do Node Database.
- Se houver algum erro ao carregar o NodeDatabase, a macro pára de executar.
Exemplo:
local personagem = chooseCharacter("Escolha um personagem", "pc")
local node = getCharacterSheet(personagem);
-- Escrever no chat a estrutura dos dados armazenados da ficha
write(utils.tableToStr(node, true));
-- Se for a ficha D&D 5, a linha abaixo aumenta a CA em 1
node.CA = (tonumber(node.CA) or 0) + 1;
|
function invoke(macroName [, parameter])
|
Esta função invoca outra macro e aguarda sua execução.
Parâmetros:
- macroName - Cadeia de caracteres identificando qual macro deve ser invocada.
- Exemplo: Se deseja invocar a macro /obterBonusAtaque, o valor "obterBonusAtaque" deverá se passado aqui, sem a barra.
- (OPCIONAL) parameter - Cadeia de caracteres contendo os parâmetros que devem ser passados para a macro quando ela for invocada.
Retorno:
- Se a macro invocada tiver sido executada sem erros, o retorno desta função é idêntico ao "return" da macro invocada (nil se ela não especificou valor de return).
Observação:
- A execução desta macro é pausada até a outra macro seja executada.
- Se a macro invocada parar de executar (exemplo: Pois o usuário cancelou um inputQuery), esta macro também pára de executar.
Exemplo (duas macros, uma invocando a outra):
Macro: ObterBonusAtaque
local attack = inputQuery("Informe o Bônus de Ataque");
local damageBonus = inputQuery("Informe o Bônus de Dano");
return attack, tonumber(damageBonus);
|
Macro que invoca outra macro
local bonusAttack, damage = invoke("ObterBonusAtaque")
write("Ataque informado: " .. bonusAttack)
write("Dano informado: " .. damage);
|
Created with the Personal Edition of HelpNDoc: Free HTML Help documentation generator