SCRIPT DE TIME SPELL SIMPLES
local xtela, ytela = 680, 440 -- Posição na Telalocal widget = setupUI([[Panelheight: 400 -- altura da sua telawidth: 900 -- largura da sua tela]], g_ui.getRootWidget())local timespell = g_ui.loadUIFromString([[Labelcolor: whitebackground-color: lightblueopacity: 0.85text-horizontal-auto-resize: true]], widget)local function updateTimespell()if not storage.iwjdijwx.t or storage.iwjdijwx.t < now thentimespell:setText('Dai Prision: OK! ')timespell:setColor('green')elseif storage.iwjdijwx.a >= now thentimespell:setColor('blue')timespell:setText("Dai Prision: ".. string.format("%.0f",(storage.iwjdijwx.a-now)/1000).. "s ")elsetimespell:setColor('red')timespell:setText("Dai Prision: ".. string.format("%.0f",(storage.iwjdijwx.t-now)/1000).. "s ")endendmacro(1, function()updateTimespell()end)onTalk(function(name, level, mode, text, channelId, pos)if name ~= player:getName() then return endif text:lower() == 'mokuton moku douka' thenif storage.iwjdijwx.useCount == nil thenstorage.iwjdijwx.useCount = 0storage.iwjdijwx.cooldown = 0endif storage.iwjdijwx.useCount == 0 and storage.iwjdijwx.cooldown < now thenstorage.iwjdijwx.t = now + 5000 -- 5 seconds cooldown after first usestorage.iwjdijwx.a = now + 10000 -- 10 seconds cooldown for the spellstorage.iwjdijwx.useCount = 1elseif storage.iwjdijwx.useCount == 1 and storage.iwjdijwx.t < now thenstorage.iwjdijwx.t = now + 45000 -- 45 seconds cooldown after two usesstorage.iwjdijwx.useCount = 0storage.iwjdijwx.a = now + 10000 -- 10 seconds cooldown for the spellendendend)if type(storage.iwjdijwx) ~= 'table' or (storage.iwjdijwx.t - now) > 50000 thenstorage.iwjdijwx = {t = 0, a = 0, useCount = 0, cooldown = 0}endtimespell:setPosition({y = ytela+40, x = xtela+10})
IMAGEM DE EXEMPLO :
EXPLICAÇÃO DE AJUSTES :
Definição de variáveis de posição e widgets
Posição na tela:
Define a posição na tela onde o widget será exibido.
xtelaeytelasão coordenadas X e Y.Criação da Interface Gráfica:
A função
setupUIcria um painel que servirá como contêiner para outros widgets. Esse painel tem uma altura de 400 e uma largura de 900, conforme os parâmetros definidos.g_ui.getRootWidget()retorna o widget raiz onde a interface será inserida.Criação de um label (texto):
Aqui, a função
g_ui.loadUIFromStringcria um widget do tipoLabel(uma área de texto) que será exibido no painel criado anteriormente (widget). O label tem:- Cor de texto: Branco
- Cor de fundo: Azul claro
- Opacidade: 85%
- Redimensionamento horizontal automático do texto, para que o texto ajuste automaticamente ao tamanho da área disponível.
Função de atualização do tempo do feitiço
- Função
updateTimespell():Esta função atualiza o texto dotimespellde acordo com o tempo de cooldown de uma habilidade chamada "Dai Prision". O comportamento muda dependendo dos tempos armazenados emstorage.iwjdijwx:- Se o feitiço estiver pronto (
storage.iwjdijwx.té menor que o tempo atual):- Exibe "Dai Prision: OK!" com cor verde.
- Se a habilidade estiver em cooldown, mas disponível:
- Exibe o tempo restante até o feitiço estar disponível, em segundos, com a cor azul.
- Se a habilidade estiver em cooldown completo:
- Exibe o tempo restante até o próximo uso, também em segundos, mas com a cor vermelha.
- Se o feitiço estiver pronto (
Ações quando o jogador fala um comando
- Comando "mokuton moku douka":
Quando o jogador (ou alguém) fala algo no jogo, o script verifica se o texto é "mokuton moku douka". Se for o caso, ele executa o código abaixo:- Se for a primeira vez que o feitiço é usado (controle de uso com
storage.iwjdijwx.useCount):- Cooldown de 5 segundos após o primeiro uso.
- Cooldown do feitiço de 10 segundos.
- Após o segundo uso, o cooldown aumenta para 45 segundos, e a contagem de usos (
useCount) volta a 0.
- Se for a primeira vez que o feitiço é usado (controle de uso com
Garantia de inicialização correta de dados
- Verificação e inicialização de
storage.iwjdijwx:Aqui, o script verifica se a tabelastorage.iwjdijwxexiste e se os valores de cooldown são razoáveis. Caso contrário, ele a inicializa com valores padrões (t,a,useCount, ecooldown).
Posição do widget
- Posicionando o widget na tela:
Define a posição exata do widget (timespell) na tela, com uma pequena margem adicional em relação às variáveisxtelaeytela.
Resumo do que o código faz:
- Ele cria um painel e um texto na interface do jogo que exibe o status do feitiço "Dai Prision".
- Quando o jogador usa o comando "mokuton moku douka", ele controla o cooldown do feitiço, alternando entre 5, 45 segundos e 10 segundos de espera entre os usos.
- O texto na tela é atualizado constantemente para refletir o estado atual do feitiço (pronto, em cooldown, ou aguardando).

Comentários
Postar um comentário