Pular para conteúdo

Objeto Rolagem

Objeto Rolagem

Este objeto contém informações sobre uma rolagem de dados que ocorreu ou que poderá ocorrer.

 

Você pode criar um objeto rolagem utilizando a função rrpg.interpretarRolagem

Características

Propriedades e atributos

Propriedade Tipo Descrição
tipo Enumerado: "direta" "storyteller" Somente leitura, contém o tipo da rolagem.  "direta" - Rolagem de dados padrão.  "storyteller" - Rolagem de dados storyteller. Quantidade de dados cuja face seja maior ou igual a algum numero e que um resultado natural 1 anula um sucesso 
possuiAlgumDado Boolean Somente leitura, contém true se a rolagem possuir pelo menos um dado de qualquer face.  Exemplo: Na rolagem "+5" a propriedade conteria false, enquanto na rolagem "d6 + 5" conteria true. 
asString String Somente leitura, contém a rolagem como uma cadeia de caracteres. 
isRolado Boolean Somente leitura, contém true se a rolagem já foi executada e possui o resultado, ou false se ainda não. 
resultado Integer Somente leitura, contém o valor resultado da rolagem se ela já tiver sido feita. Se a rolagem ainda não tiver executada, contém 0. 
ops Arranjo de Objetos OperacaoRolagem Contém a lista de operações "aritméticas" da rolagem.  É um arranjo de tabelas/objetos, isto é, uma tabela lua indexada de 1 a N, onde cada posição possui uma tabela conforme a operação...  Veja Lista de Operações de Rolagens

 

Métodos

Método Descrição
rolagem:interpretarString(str) Dado uma cadeia de caracteres representando uma rolagem de dados (Exemplos: "1d20 + 5", "1d20 + 1d10 - 5", etc..), atualiza as informações da rolagem de dados.  Observação: Se "str" não contiver um texto de uma rolagem válida, o objeto rolagem é resetado. 
rolagem:concatenar(outraRolagem) Adiciona ao final desta rolagem de dados as operações "aritméticas" de outra rolagem, juntando-as.  Parâmetros: outraRolagem - uma cadeia de caracteres ou um outro objeto rolagem que será concatenada.  Retorno: Retorna o próprio objeto rolagem. 
rolagem:rolarLocalmente()  Executa a rolagem localmente. Esta função realiza os sorteios e demais operações sem haver necessidade do usuário estar em uma mesa.   Observações: Após a chamada desta função, o resultado pode ser acessado através das propriedades "resultado" e "ops". Este resultado não será exibido em lugar algum automaticamente e depende de você tratá-lo conforme desejar. Se você executar este método em uma rolagem que já foi rolada, o resultado anterior será sobrescrito com novos resultados. 

 

 

Operações de Rolagem (Cada item do arranjo Rolagem.ops)

 

Cada operação de rolagem é uma tabela lua com as seguintes propriedades:

 

Propriedade Tipo Descrição
tipo Enumerado: "dado" "imediato" "soma" "subtracao" "comparacao" "ordenacao" "desconhecido" Determina qual é a operação.  "dado" - Um grupo de dados a serem rolados  "imediato" - Um número constante especificado pelo usuário.  "comparacao" - Uma comparação entre números/dados.  "ordenacao" - Pedido para ordenar o resultado de forma decrescente.  Os demais valores são autoexplicativos. 
quantidade Integer Quando o tipo == "dado", determina quantos dados da face informada serão rolados. 
face Integer ou String Quando tipo == "dado", contém qual é face dos dados..  Exemplos: 4 6 8 10 "F"  (dado fudge) 
resultados Arranjo de Integer Quando tipo == "dado" e se a rolagem já tiver sido feita, contém um arranjo de números representando o resultado individual de cada dado na operação. 
comparacao String Quando tipo == "comparacao", contém qual é o comparador. 
valor Integer Quando tipo == "imediato" contém o valor do número constante literal informado.  

 

 

Exemplos

Exemplo 1 - Uma ficha que rola dados na mesa

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<button>                 \<event name="onClick">                         local rolagem = rrpg.interpretarRolagem(sheet.ataqueDoPersonagem);                          if not rolagem.possuiAlgumDado then                                 -- se o usuario não tiver preenchido qual dado rolar,                                 -- vamos adicionar um 1d20 + na "fórmula da rolagem"                                 rolagem = rrpg.interpretarRolagem("1d20"):concatenar(rolagem);                         end;                          local mesaDoPersonagem = rrpg.getMesaDe(sheet);                         mesaDoPersonagem.chat:rolarDados(rolagem, "Ataque do personagem");                 \</event>         \</button> \</form>

 

    \ Exemplo 2 - Rolar localmente e exibir uma mensagem personalizada.

local msg = "";  -- Interpretar uma rolagem, digamos: 4d6 + 2d4 + d20 + 5 local rolagem = rrpg.interpretarRolagem("4d6 + 2d4 + d20 + 5");  -- Executar a rolagem localmente rolagem:rolarLocalmente(); -- Loop para navegar em cada uma das operações da rolagem for i = 1, #rolagem.ops, 1 do           local operacao = rolagem.ops[i];               -- Vamos verificar que tipo de operação é esta.               if operacao.tipo == "dado" then                         -- Adicionar à mensagem informações sobre este conjunto de dados.                 msg = msg .. operacao.quantidade .. "d" .. operacao.face .. ": \n  ";                                 -- Loop percorrendo cada um dos resultados individuais deste conjunto de dados.                 for j = 1, #operacao.resultados, 1 do                         msg = msg .. "  " .. operacao.resultados[j];                 end;                                msg = msg .. "\n";         elseif operacao.tipo == "imediato" then                 msg = msg .. "Valor imediato: " .. operacao.valor .. "\n";         end; end-- Concatenar à mensagem o resultado final da rolagem msg = msg .. "------------------- **\n**Resultado Final: " .. rolagem.resultado;  -- Exibir a mensagem que montamos. showMessage(msg);

 

 

Image    Image  Image

 

 

 

Exemplo 3 - Uma ficha fazendo um teste (de resistência, por exemplo) e postando o resultado na mesa.

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFTeste">         \<script>                 local function realizarTesteDeResistencia()                                     -- obter a mesa do personagem                         local mesaDoPersonagem = rrpg.getMesaDe(sheet);                                                 -- se o usuário não preencheu modificador, vamos usar o valor 0                         sheet.modificador = sheet.modificador or 0;                                                 mesaDoPersonagem.chat:rolarDados("1d20 + " .. sheet.modificador, "Teste de Resistência",                                 function (rolado)                                         -- A dificuldade do teste é 15                                                                         if rolado.resultado >= 15 then                                                 mesaDoPersonagem.chat:enviarMensagem("SUCESSO =) você tirou " .. rolado.resultado);                                         else                                                 mesaDoPersonagem.chat:enviarMensagem("FALHA =/ você tirou " .. rolado.resultado);                                         end;                                                                          end);                           end;                        \</script>          \<button onClick="realizarTesteDeResistencia()"/> \</form>

Created with the Personal Edition of HelpNDoc: Powerful and User-Friendly Help Authoring Tool for Markdown Documents