Biblioteca para Macros em Lua

.html ››
Parent Previous Next

Biblioteca para Macros em Lua


Variáveis


variável parametro ou variável parameter

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 chat


(Não é uma função) Objeto Chat representando o chat em que a macro foi disparada.



variable elapsedMS


(Not a function) Contains how many milliseconds have passed since the macro started executing



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;



variável inRoom


(Não é uma função) Booleano (true ou false) indicando se a macro está sendo executada em algum chat associado a alguma mesa.



Funções


function await(promise)


Pauses the macro execution until a Promise object is resolved


Arguments:


Return:


Remarks:



function enviar(text[, params])
ou
function send(text[, params])


Sends a standard message to the chat.


Arguments:


Return:



Examples:

send("Hello!");
send("Hello!", {impersonation = {mode="character", name="Turok"}});
send("Hello!", {impersonation = {mode="narrator"}});




function agir(text[, params])
ou
function act(text[, params])


Sends an action message to the chat.


Arguments:


Return:


Examples:

act("wields his long sword");
act("wields his long sword", {impersonation = {mode="character", name="Turok"}});
act("wields his long sword", {impersonation = {mode="narrator"}});




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(expression[, message[, params]])
ou
function roll(expression[, message[, params]])


Executes a dice roll in the chat.


Arguments:


Return:



Example 1:

local r = roll("1d20 + 5"); 

if r >= 15 then
        send("Hit!");
else
        send("Miss!");
end;



Example 2:

local r = roll("1d20 + 5", "Attack", {impersonation = {mode="character", name="Turok"}}); 

if r >= 15 then
        roll("1d8 + 5", "Damage", {impersonation = {mode="character", name="Turok"}}); 
end;


Exemplo 3: Rolar 4d6 e selecionar os 3 maiores números da rolagem.

local resultado, rolagem = roll("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 Log.e(tag, msg)
function Log.w(tag, msg)
function Log.i(tag, msg)
function Log.d(tag, msg)
function Log.v(tag, msg)


Emmit log message to the Firecast's log file and to the Firecast's console window. Use the /console command to reveal the console


Arguments:


Log severity:

Log.e

Error message

A situation that represents an unhandled error that may interrupt some operation

Log.w

Warning message

A situation that can be handled but may cause some unintended behavior


Log.i

Informational/Notice message

A normal but significant condition that may require special handling.


Log.d

Debug message

A developer debug message


Log.v

Verbose message

Algorithm steps message, very low priority messages.


Remarks:

  • Messages of this severity are not emitted in the Firecast’s log files
  • In the Firecast’s console, you need to execute the command “filter add *” to be able to see these messages.



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 toast(message)


Show a quick informative message to the user that does not require user interaction and hides automatically after a short time


Parameters



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 getUserNDB(name[, options])

Open a per-user NodeDatabase that is physically stored in the Firecast server.


Arguments:


Return:


Remarks:




function getUserRoomNDB(name[, options])

Open a per user NodeDatabase in the current room that is physically stored in the Firecast server.


Arguments:


Return:


Remarks:



function getRoomNDB(name[, options])

Open a per room NodeDatabase that is physically stored in the Firecast server.


Arguments:


Return:


Remarks:



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




function playLocal(address[, volume])


Plays an audio file using the user's default audio device.


Arguments:


Return:


Remarks:




function playRoom(address[, volume])


Plays an audio file to all players in the room.


Arguments:


Return:


Remarks:




function waitMessage(timeoutMS)


Waits for the next message received in the current chat.


Arguments:


The function returns two values:


Example 1:

local success, logRec = waitMessage(30000);

 

if success then

   write("Message received from " .. logRec.entity.login);

else

   write("No message received in time");

end;



Example 2 - Waiting for a roll:

TIMEOUT = 60000;

 

while elapsedMS < TIMEOUT do

    local received, logRec = waitMessage(TIMEOUT - elapsedMS);

 

    if received and (logRec.msg.msgType == "dice") then

        write(string.format("%s rolled and the result is %d", 

                            logRec.entity.login, 

                            logRec.msg.roll.resultado));

 

        return;

    end;

end;

 

write("No roll in time");



function write(texto[, quebrarLinha, permitirSmileys])
ou
function escrever(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 writeEx(text[, talemarkOptions])


Write/print a text in the chat. The text is not sent; only the local user can see the text.


Arguments:



Examples:

writeEx("Hello World!");
writeEx("Hello World!", {defaultTextStyle = {color = "red"}});

Created with the Personal Edition of HelpNDoc: Effortlessly Create Encrypted, Password-Protected PDFs