Biblioteca para Macros em Lua

Macros ››
Parent Previous Next

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":


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);



variável myCharacter


(Não é uma função) Objeto Personagem representando o personagem principal do usuário naquela mesa.


Observações:


Exemplo 1: Escrever na tela o nome do seu personagem.

write(myCharacter.nome)



variável sheet


(Não é uma função) O Objeto Nodo raiz representando o NodeDatabase/Sheet do personagem principal do usuário logado.


Observações:



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:



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:



Exemplo:

enviar("Olá, tudo bem?!");




function agir(acao)
ou
function act(acao)


Envia uma mensagem como ação para o chat.


Parâmetros:



Exemplo:

agir("saca sua espada longa");




function narrar(narracao)
ou
function narrate(narracao)


Envia uma mensagem de narração para o chat.


Parâmetros:


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:


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:


Retorno:


Importante:



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:


Retorno:


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:




function load(luaCode)


Interpreta um código de macro escrita na linguagem LUA


Parâmetros:


Retorno:



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:


Observação:



function alert(msg)


Exibe uma janela para o usuário contendo uma mensagem de alerta.


Parâmetros:


Observação:




function confirmOkCancel(question)


Exibe uma janela para o usuário onde ele deve escolher responder ou "Ok" ou "Cancelar"


Parâmetros:


Retorno:


Observação:



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:


Retorno:


Observação:



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:


Retorno:


Observação:



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:


Retorno:


Observação:



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


Retorno:

       Esta função retorna dois valores na seguinte ordem:



Observações:



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


Retorno:

Esta função retorna dois valores na seguinte ordem:


Observação:



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


Retorno:


Observações:



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


Retorno:


Observações:



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


Retorno:


Observações:



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


Retorno:


Observações:



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


Retorno:


Observações:



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


Retorno:


Observações:



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


Retorno:


Observações:



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:


Retorno:


Observação:



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