[Script] Check Box |
Jp_darkuss « Citoyen » 1595815800000
| 2 | ||
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! 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 - 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 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) 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) Vejamos a criação e o remover de um Check Box... 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) OBS: não tente inserir player como um jogador não existente na sala. 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) Você pode verificar se uma Check Box está ou não selecionada com a função isChecked: 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) 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) Vejamos a criação e o remover de um Check Box... 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) OBS: não tente inserir player como um jogador não existente na sala. 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) Você pode verificar se uma Check Box está ou não selecionada com a função isChecked: 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) 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) 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
| 1 | ||
Vou aderir :) Muito bom este script Parabéns! |
Jp_darkuss « Citoyen » 1595875680000
| 0 | ||
Sonialayve a dit : Thx o/ |
Jp_darkuss « Citoyen » 1595969940000
| 1 | ||
Versão 1.5 disponível! |
Gamedroit « Citoyen » 1596072840000
| 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 = {} |
Jp_darkuss « Citoyen » 1596111120000
| 0 | ||
Contistente3 a dit : Obrigado! <3 Verdade, na próxima atualização melhoro! :) |