×

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] Window
[Script] Window
Ninguem
« Consul »
1492983960000
    • Ninguem#0095
    • Profil
    • Derniers messages
    • Tribu
#1
  0
Pra facilitar no gerenciamento de janelas, eu fiz uma biblioteca que tenta simplificar a forma de abrir, fechar e atualizar o conteúdo de uma janela, individualmente para cada jogador. Uma janela aqui se refere a um conjunto de textAreas e imagens que formam uma janela específica importante como: ajuda, ranking, perfil, etc. Vale avisar que essa biblioteca não faz nenhum tipo de design de janela, é você quem deve fornecer o modelo dela na criação de cada estrutura.

window.create(id, open, update)

Cria uma estrutura de janela que pode ser aberta, atualizada e fechada individualmente para cada jogador. Aqui está apenas indicando para a biblioteca como que a janela deve ser construída.

Valores:

  • String/Int id - Define um identificador que será utilizado no restante das funções da biblioteca. Este identificador não é o mesmo das textAreas.
  • Function open - Uma função que será chamada sempre que esta janela for aberta. É aqui que você fornece a criação da janela com textAreas e imagens (se for permitido). A função recebe os seguintes parâmetros: nome do jogador, identificador da janela e outros parâmetros quaisquer que for enviado para window.open. Esta função deve retornar uma tabela que pode conter outras duas tabelas dentro: 'txt' (que deve conter ids de textAreas criadas) e 'img' (que deve conter ids de imagens criadas, opcional caso não utilize imagens).
  • Function update - Uma função opcional que será chamada em window.update e também após window.open. Ela deve conter os elementos dinâmicos da janela, como dados que podem ser atualizados ou elementos específicos de alguma página (como em um ranking ou loja). A função recebe os mesmos parâmetros da função 'open' e também deve retornar uma tabela no mesmo formato.

window.open(player, id, ...)

Uma janela específica declarada em window.create será aberta para o jogador fornecido.

Valores:

  • String player - Nome do jogador
  • String/Int id - Identificador da janela que foi fornecido em window.create
  • ... - Demais dados que você quiser passar para a função 'open' e 'update' fornecida em window.create.

window.update(player, id, ...)

Atualiza o conteúdo de uma janela que já foi aberta antes para um jogador. Caso a função 'update' tenha sido fornecida em window.open, a função irá remover os elementos que foram colocados na tabela de retorno e executará ela novamente, caso contrário serão chamados as funções window.close e window.open em ordem.

Valores

  • String player - Nome do jogador
  • String/Int id - Identificador da janela que foi fornecido em window.create
  • ... - Demais dados que você quiser passar para a função 'open' e 'update' fornecida em window.create

window.close(player, id)

Fecha uma janela já aberta para um jogador. A função utiliza as tabelas retornadas pelas funções 'open' e 'update' fornecidas em window.create para saber o que deve ser removido.

Valores:

  • String player - Nome do jogador
  • String/Int id - Identificador da janela que foi fornecido em window.create

window.isOpened(player, id)

Retorna true se a janela correspondente está aberta para o jogador.

Valores:

  • String player - Nome do jogador
  • String/Int id - Identificador da janela que foi fornecido em window.create


Exemplo de uso:

Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
window.create("contador",
function(p, id, numero) -- função chamada em window.open
ui.addTextArea(1, "", p, 300, 100, 200, 200)
ui.addTextArea(2, "<p align='center'>Clique no número</p>", p, 300, 120, 200, 20, 0, 0, 0)
return {txt={1, 2}}
end,
function(p, id, numero) -- função chamada em window.update e também após window.open
ui.addTextArea(3, string.format("<p align='center'><font size='70px'><a href='event:%d'>%d</font></p>", numero+1, numero), p, 350, 150, 100, 100)
return {txt={3}}
end)

function eventTextAreaCallback(id, p, cmd)
if cmd == "open" then
if window.isOpened(p, "contador") then
window.close(p, "contador")
else
window.open(p, "contador", 1)
end
else
window.update(p, "contador", tonumber(cmd))
end
end

ui.addTextArea(0, "<p align='center'><a href='event:open'>Abrir/Fechar</a></p>", nil, 300, 50, 200, 20)

Link para a biblioteca: https://pastebin.com/2FX15SeP

Dernière modification le 1493001480000
Lcemt
« Citoyen »
1492984440000
    • Lcemt#0000
    • Profil
    • Derniers messages
    • Tribu
#2
  0
Testei aqui e achei bem legal
parabéns pelo trabalho
Contistente2
« Citoyen »
1493040120000
    • Contistente2#0000
    • Profil
    • Derniers messages
    • Tribu
#3
  0
Não vou usar, mas gostei, vai ajudar muitos, parabéns Ninguem.
Jellymichey
« Censeur »
1493054340000
    • Jellymichey#0000
    • Profil
    • Derniers messages
    • Tribu
#4
  0
kkkk parabéns Ninguem

isso vai ajudar muitos a fazer Janelas mais elaboradas em vez de um simples UI com setinhas e texto
Impressorahp
« Citoyen »
1493066460000
    • Impressorahp#2775
    • Profil
    • Derniers messages
    • Tribu
#5
  0
Não entendi muito bem como funciona, mas parabéns está bem elaborado.
Tattyfore
« Censeur »
1493067360000
    • Tattyfore#0000
    • Profil
    • Derniers messages
#6
  0
EU AINDA QUERO A MIINHA CADEIRAAAAAAAAAAA
Jellymichey
« Censeur »
1493068860000
    • Jellymichey#0000
    • Profil
    • Derniers messages
    • Tribu
#7
  0
Tattyfore a dit :
EU AINDA QUERO A MIINHA CADEIRAAAAAAAAAAA

isso não é UNO .-.
Hydroper
« Citoyen »
1496592480000
    • Hydroper#0528
    • Profil
    • Derniers messages
    • Tribu
#8
  0
Você criou essa biblioteca para tentar copiar a ideia da minha biblioteca anterior (que já tem mais possibilidades do que essa)? Se sim, então poderia dizer o que está errado com minha biblioteca anterior? Eu gastei tempo elaborando nela, inclusivemente em alguns desses dias para tentar fazer uma nova biblioteca que não estou mais continuando à fazer.

E outra, não sei se é seu estilo de código, mas:

Code Lua

1
    return w[id] and w[id].player[p] and true or false

isso não dá para ser

Code Lua

1
2
    return w[id] and w[id].player[p]
-- Ou: return not not ( ... )

?
Ninguem
« Consul »
1496595420000
    • Ninguem#0095
    • Profil
    • Derniers messages
    • Tribu
#9
  0
Profiver a dit :
...

Minha intenção não foi de copiar, mas apenas de criar uma solução simples de que eu precisava no momento. Eu ainda estou escrevendo o uno, e nele tem uma série de janelas de diferentes formatos e tipos, então eu precisava de uma forma de descrever cada janela individualmente sem perder o controle de saber quando fechar, abrir ou saber se tá aberto. Eu não cheguei a trabalhar com tua biblioteca, mas eu fazendo a minha ficou mais fácil de trabalhar. Não acredito que os jogadores vão sair usando a biblioteca, afinal ela é apenas funcional, ela só faz o gerenciamento e não o design das janelas, que é o que eles mais querem.

Nessa parte do código que você citou, eu queria entregar os valores true ou false, realmente o not not faria todo sentido neste caso.

Você pode continuar fazendo a sua biblioteca, acredito que ela faça muito mais mesmo. A minha eu não pretendo aumentar, ela faz o que está ali e pronto, nada mais.
Bloom
« Héliaste »
1535320380000
    • Bloom#6766
    • Profil
    • Derniers messages
#11
  0
Parabéns
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Script] Window
© Atelier801 2018

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

Version 1.27