×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Script] Check Box
[Script] Check Box
Jp_darkuss
« Citoyen »
1595815800000
    • Jp_darkuss#4806
    • Profil
    • Derniers messages
#1
  2
  • Introdução
  • Changelog
  • Geral
  • Versão 1.0
  • Versão 1.5
  • ...

A Check Box é uma caixa que serve para gerar um valor booleano, se ela está selecionada (True) ou se não (False). Ela são muito úteis, principalmente para tomar decisões de "Sim" ou "Não".

Lua não disponibiliza graficamente os Check Boxes, mas há como simular usando a lógica de como funcionam. Por isso criei meu próprio modelo, e estou disponibilizando para quem quiser usar. Segue o script nas abas!

  • Check Box Class V1.0
  • Check Box Class V1.5


    Script Linha única V1.0

    Code Lua

    1
    --[[ Check Box Button v1.0 Made by Jp_darkuss#4806 at 27/07, have fun! :) ]] local memory= {} local new= function(player) memory[player]= {} end local check= function(player, callback) if callback:match("check") then local name= callback:match("check%((.-)%)") if not memory[player][name].checked then ui.updateTextArea(memory[player][name].ids[2], "<a href='event:check("..name..")'><font size='12'>✔</font></a>", player) memory[player][name].checked= true else ui.updateTextArea(memory[player][name].ids[2], "<a href='event:check("..name..")'>  <br/>  </a>", player) memory[player][name].checked= false end end end local init= function() for player, _ in next, tfm.get.room.playerList do memory[player]= {} end end local checkBox= { add= function(name, ids, player, x, y, checked, static) local _Checked= function() return (checked== true) and "<a href='event:check("..name..")'><font size='12'>✔</font></a>" or "<a href='event:check("..name..")'><font size='12'>  <br/>  </font></a>" end x= x or 0 y= y or 0 checked= checked or false static= static or false memory[player][name]= { ids= ids, checked= checked } ui.addTextArea(ids[1], " ", player, x, y, 8, 8, nil, nil, 1, static) ui.addTextArea(ids[2], _Checked(), player, x - 5, y - 6, 20, 20, 0, 0, 1, static) end, remove= function(name, player) ui.removeTextArea(memory[player][name].ids[1], player) ui.removeTextArea(memory[player][name].ids[2], player) end } local isChecked= function(name, player) return memory[player][name].checked end


    Script Linha única V1.5

    Code Lua

    1
    --[[ Check Box Button v1.5 Made by Jp_darkuss#4806 at 27/07, have fun! :) ]] local memory= {} local new= function(player) memory[player]= {} end local check= function(player, callback) if callback:match("check") then local name= callback:match("check%((.-)%)") if not memory[player][name].checked then if memory[player][name].color then ui.updateTextArea(memory[player][name].ids[2], "<a href='event:check("..name..")'><font size='12' color='"..memory[player][name].color.."'>✔</font></a>", player) else ui.updateTextArea(memory[player][name].ids[2], "<a href='event:check("..name..")'><font size='12'>✔</font></a>", player) end memory[player][name].checked= true else ui.updateTextArea(memory[player][name].ids[2], "<a href='event:check("..name..")'>  <br/>  </a>", player) memory[player][name].checked= false end end end local init= function() for player, _ in next, tfm.get.room.playerList do memory[player]= {} end end local checkBox= { add= function(name, ids, player, x, y, decoration, checked, static) local _Checked= function() if decoration.color then return (checked== true) and "<a href='event:check("..name..")'><font size='12' color='"..decoration.color.."'>✔</font></a>" or "<a href='event:check("..name..")'><font size='12'>  <br/>  </font></a>" else return (checked== true) and "<a href='event:check("..name..")'><font size='12'>✔</font></a>" or "<a href='event:check("..name..")'><font size='12'>  <br/>  </font></a>" end end x= x or 0 y= y or 0 checked= checked or false static= static or false decoration= decoration or {} if player then memory[player][name]= { ids= ids, checked= checked, color= decoration.color } ui.addTextArea(ids[1], " ", player, x, y, 8, 8, decoration.background, decoration.border, 1, static) ui.addTextArea(ids[2], _Checked(), player, x - 5, y - 6, 20, 20, 0, 0, 1, static) else for _player, _ in next, tfm.get.room.playerList do memory[_player][name]= { ids= ids, checked= checked, color= decoration.color } ui.addTextArea(ids[1], " ", _player, x, y, 8, 8, decoration.background, decoration.border, 1, static) ui.addTextArea(ids[2], _Checked(), _player, x - 5, y - 6, 20, 20, 0, 0, 1, static) end end end, remove= function(name, player) ui.removeTextArea(memory[player][name].ids[1], player) ui.removeTextArea(memory[player][name].ids[2], player) end } local isChecked= function(name, player) return memory[player][name].checked end

  • Atualização 1.5

    - o parâmetro player de checkBox.add, se for nil, será criado uma Check Box para todos os players da sala!

    - agora você pode modificar a aparência do Check Box!

  • Agora vamos começar a entender como ele funciona. Antes de tudo você deve iniciar o script, chamando a função init, recomendado logo depois do script:

    Code Lua

    1
    2
    -- ... script
    init()

    Se você não tiver certeza de que ninguém mais vai entrar na sala, você também deverá chamar outra a função, a função new no evento newPlayer e passando player como parâmetro:

    Code Lua

    1
    2
    3
    eventNewPlayer= function(player)
    new(player)
    end

    Você também deverá chamar a função check dentro de um evento textAreaCallback, e passar como parâmetros o player e callback:

    Code Lua

    1
    2
    3
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end

    Vejamos a criação e o remover de um Check Box...

  • (Method) checkBox.add(name, ids, player [, x, y, checked, static]) => void
    Cria uma checkBox

    Parâmetros:

    - name (string): o nome do sua Check Box
    - ids (table): dois ids em uma tabela, não os repita em outras Check Boxes, nem em textAreas senão vai bugar
    - player (string): o player que deverá ver a Check Box
    - x (int): a posição x da Check Box (valor padrão: 0)
    - y (int): a posição y da Chek Box (valor padrão: 0)
    - checked (boolean): se ela deve ou não já estar selecionada (valor padrão: false)
    - static (boolean): se ela deve ou não ser estática (valor padrão: false)


    Code Lua

    1
    2
    3
    4
    5
    6
    7
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    init()
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end
    checkBox.add("decisao", {0, 1}, adm, 100, 100)

    OBS: não tente inserir player como um jogador não existente na sala.

  • (Method) checkBox.remove(name, player) => void
    Elimina uma checkBox

    Parâmetros:

    - name (string): o nome do sua Check Box
    - player (string): o player que perderá a Check Box


    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    local count= 0
    init()
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end
    eventLoop= function()
    count= count + 500
    if count== 5000 then
    checkBox.remove("decisao", adm)
    end
    end
    checkBox.add("decisao", {0, 1}, adm, 100, 100)

    Você pode verificar se uma Check Box está ou não selecionada com a função isChecked:

  • (Function) isChecked(name, player) => boolean
    Verifica se uma Check Box está ou não selecionada

    Parâmetros:

    - name (string): a qual Check Box se refere
    - player (string): a qual player se refere

    Retorna: um valor booleando indicando se está ou não selecionada


    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    init()
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end
    eventLoop= function()
    if isChecked("decisao", adm) then
    ui.updateTextArea(2, "Está selecionada!", adm)
    else
    ui.updateTextArea(2, "Não está selecionada!", adm)
    end
    end
    ui.addTextArea(2, "Não está selecionada!", adm)
    checkBox.add("decisao", {0, 1}, adm, 100, 100)

    Outro Exemplo

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    if callback=="submit" then
    if isChecked("main", adm) then
    tfm.exec.newGame(0)
    ui.updateTextArea(2, "Você aceitou!")
    else
    ui.updateTextArea(2, "Você não aceitou!")
    end
    checkBox.remove("main", adm)
    end
    end
    do
    init()
    ui.addTextArea(2, "Quer entrar no mapa?<br/><br/><br/> Accept<br/><br/><p align='center'><a href='event:submit'>Enviar</a></p>", adm, 200, 200, 100, 100)
    checkBox.add("main", {0, 1}, adm, 205, 257)
    end



  • Vejamos a criação e o remover de um Check Box...

  • (Method) checkBox.add(name, ids, player [, x, y, decoration, checked, static]) => void
    Cria uma checkBox

    Parâmetros:

    - name (string): o nome do sua Check Box
    - ids (table): dois ids em uma tabela, não os repita em outras Check Boxes, nem em textAreas senão vai bugar
    - player (string): o player que deverá ver a Check Box
    - x (int): a posição x da Check Box (valor padrão: 0)
    - y (int): a posição y da Chek Box (valor padrão: 0)
    - decoration (table): uma tabela para modificar a aparência da Check Boxes, podendo ter as propriedades background (hexadecimal 0xcode), border (hexadecimal 0xcode) e color (hexadecimal code) (valores padrões: aparência básica da textArea)
    - checked (boolean): se ela deve ou não já estar selecionada (valor padrão: false)
    - static (boolean): se ela deve ou não ser estática (valor padrão: false)


    Code Lua

    1
    2
    3
    4
    5
    6
    7
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    init()
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end
    checkBox.add("decisao", {0, 1}, adm, 100, 100)

    OBS: não tente inserir player como um jogador não existente na sala.

  • (Method) checkBox.remove(name, player) => void
    Elimina uma checkBox

    Parâmetros:

    - name (string): o nome do sua Check Box
    - player (string): o player que perderá a Check Box


    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    local count= 0
    init()
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end
    eventLoop= function()
    count= count + 500
    if count== 5000 then
    checkBox.remove("decisao", adm)
    end
    end
    checkBox.add("decisao", {0, 1}, adm, 100, 100)

    Você pode verificar se uma Check Box está ou não selecionada com a função isChecked:

  • (Function) isChecked(name, player) => boolean
    Verifica se uma Check Box está ou não selecionada

    Parâmetros:

    - name (string): a qual Check Box se refere
    - player (string): a qual player se refere

    Retorna: um valor booleando indicando se está ou não selecionada


    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    init()
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    end
    eventLoop= function()
    if isChecked("decisao", adm) then
    ui.updateTextArea(2, "Está selecionada!", adm)
    else
    ui.updateTextArea(2, "Não está selecionada!", adm)
    end
    end
    ui.addTextArea(2, "Não está selecionada!", adm)
    checkBox.add("decisao", {0, 1}, adm, 100, 100)

    Outro Exemplo

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    local _, adm= pcall(nil)
    adm= adm:match(".-#%d+")
    eventTextAreaCallback= function(_, player, callback)
    check(player, callback)
    if callback=="submit" then
    if isChecked("main", adm) then
    tfm.exec.newGame(0)
    ui.updateTextArea(2, "Você aceitou!")
    else
    ui.updateTextArea(2, "Você não aceitou!")
    end
    checkBox.remove("main", adm)
    end
    end
    do
    init()
    ui.addTextArea(2, "Quer entrar no mapa?<br/><br/><br/> Accept<br/><br/><p align='center'><a href='event:submit'>Enviar</a></p>", adm, 200, 200, 100, 100)
    checkBox.add("main", {0, 1}, adm, 205, 257)
    end



  • O script receberá atualizações!

    Obrigado por prestarem atenção a mais uma de minhas criações, see you soon! :)


    Dernière modification le 1595970000000
    Sonialayve
    « Citoyen »
    1595870640000
      • Sonialayve#0000
      • Profil
      • Derniers messages
      • Tribu
    #2
      1
    Vou aderir :)

    Muito bom este script
    Parabéns!
    Jp_darkuss
    « Citoyen »
    1595875680000
      • Jp_darkuss#4806
      • Profil
      • Derniers messages
    #3
      0
    Sonialayve a dit :
    Vou aderir :)

    Muito bom este script
    Parabéns!

    Thx o/
    Jp_darkuss
    « Citoyen »
    1595969940000
      • Jp_darkuss#4806
      • Profil
      • Derniers messages
    #4
      1
    Versão 1.5 disponível!
    Gamedroit
    « Citoyen »
    1596072840000
      • Gamedroit#3347
      • Profil
      • Derniers messages
      • Tribu
    #5
      0
    Gostei, parabéns!
    Normalmente eu sou bastante crítico em alguns pontos e tenho certeza de que deixar funções soltas no script não é a melhor prática, ainda mais com nomes muito usados como init, stop, run, start...., pois pode haver a colisão de variáveis com o mesmo nome.

    Em vez de deixar check, init, e new, soltos tente indexar essas funções dentro de uma tabela, um exemplo:
    Code Lua

    1
    2
    3
    4
    5
    local checkbox = {}
    function checkbox.init()
    -- ... código ...
    end
    checkbox.init()
    Jp_darkuss
    « Citoyen »
    1596111120000
      • Jp_darkuss#4806
      • Profil
      • Derniers messages
    #6
      0
    Contistente3 a dit :
    Gostei, parabéns!
    Normalmente eu sou bastante crítico em alguns pontos e tenho certeza de que deixar funções soltas no script não é a melhor prática, ainda mais com nomes muito usados como init, stop, run, start...., pois pode haver a colisão de variáveis com o mesmo nome.

    Em vez de deixar check, init, e new, soltos tente indexar essas funções dentro de uma tabela, um exemplo:
    Code Lua

    1
    2
    3
    4
    5
    local checkbox = {}
    function checkbox.init()
    -- ... código ...
    end
    checkbox.init()

    Obrigado! <3

    Verdade, na próxima atualização melhoro! :)
    • Forums
    • /
    • Transformice
    • /
    • Modules
    • /
    • [Script] Check Box
    © Atelier801 2018

    Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

    Version 1.27