×

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] Manipulador de páginas (ui.addTextArea)
[Script] Manipulador de páginas (ui.addTextArea)
Jp_darkuss
« Citoyen »
1588346160000
    • Jp_darkuss#4806
    • Profil
    • Derniers messages
#1
  0
Vim hoje trazer um script simples, que não precisa de um site específico para ser postado, então postarei aqui.

Este script é um manipulador de página. Quando uma página é mudada, é alterado somente para quem pediu, sem interferir nos outros. Segue o script:


Script

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
local pagina = {}
local see= {}
do
for i in next, tfm.get.room.playerList do
table.insert(see, {nome= i})
end
end
local _left= function(player)
for pos in ipairs(see) do
if (see[pos].nome== player) then
table.remove(see, pos)
end
end
end
local createTextArea= function(count, pages, id, player, x, y, width, height, background, border, opacity, static)
pagina[id]= {
data= {pages= pages, x= x, y= y, width= width, height= height, background= background, border= border, opacity= opacity, static= static},
min= 1,
max= count
}
for i= 1, count do
pagina[id][i]= pages[i]
end
for pos, _ in next, see do
see[pos][id]= {current= 1}
end
ui.addTextArea(id, pages[1], player, x, y, width, height, background, border, opacity, static)
end
local removeTextArea= function(id)
for i in ipairs(pagina) do
if (id == i) then
table.remove(id)
end
end
ui.removeTextArea(id)
end
local getPlayerSeeing= function(player, document)
for pos, _ in next, see do
if (see[pos].nome== player) then
return see[pos][document].current
end
end
end
local setPlayerSeeing= function(player, document, value)
for pos, _ in next, see do
if (see[pos].nome== player) then
see[pos][document].current= value
end
end
end
local mudar= function(kind, document, value, player)
if (kind == "new") then
ui.updateTextArea(document, pagina[document][value], player)
setPlayerSeeing(player, document, value)
elseif (kind == "pass") then
if (getPlayerSeeing(player, document) + value > pagina[document].max) then
ui.updateTextArea(document, pagina[document][pagina[document].max], player)
setPlayerSeeing(player, document, pagina[document].max)
elseif (getPlayerSeeing(player, document) + value < pagina[document].min) then
ui.updateTextArea(document, pagina[document][pagina[document].min], player)
setPlayerSeeing(player, document, pagina[document].min)
else
ui.updateTextArea(document, pagina[document][getPlayerSeeing(player, document) + value], player)
setPlayerSeeing(player, document, getPlayerSeeing(player, document) + value)
end
end
end
local button = function(callback, document, player)
if (callback == "proximo") then
mudar("pass", document, 1, player)
elseif (callback == "anterior") then
mudar("pass", document, -1, player)
elseif (type(tonumber(callback))=="number") then
mudar("new", document, tonumber(callback), player)
end
end
local _new= function(player)
table.insert(see, {nome= player})
for pos, i in next, pagina do
ui.addTextArea(pos, pagina[pos].data.pages[1], player, pagina[pos].data.x, pagina[pos].data.y, pagina[pos].data.width, pagina[pos].data.height, pagina[pos].data.background, pagina[pos].data.border, pagina[pos].data.opacity, pagina[pos].data.static)
see[#see][pos]= {current= 1}
end
end


O script já usa de padrão as funções ui.addTextArea e ui.removeTextArea, vejamos as funções:

  • addTextArea(count, pages, id, player, x, y, width, height, border, background, opacity, static)
    - Cria um textArea
    Parâmetros:

    count (int): o máximo de páginas de sua textArea
    pages (table): as páginas de seu documento.
    id (int): o id de sua textArea.
    player (int): quem poderá ver sua textArea (nil para todos)
    x (iny): a posição de sua textArea no eixo X
    y (int): a posição de sua textArea no eixo Y
    width (int): a largura de sua textArea
    height (int): a altura de sua textArea
    background (hexadecimal number): a cor de fundo de sua textArea (0xcode)
    border (hexadecimal number): a cor da borda de sua textArea (0xcode)
    opacity (int/float): a opacidade da textArea
    static (boolean): se a textArea deve ficar fixada ou não

  • removeTextArea(id)
    -Remove uma textArea
    Parâmetros:

    id (int): o id de sua textArea

    Mas como iremos usar o script?

    Primeiro devemos chamar dentro do evento eventTextAreaCallback() a função button(), e passar como parâmetros a callback, id e o nome do player que clicou no botão:

    Code Lua

    1
    2
    3
    eventTextAreaCallback= function(id, player, callback)
    button(callback, id, player)
    end

    Dentro do eventPlayerLeft, chame a função _left e passe player como parâmetro:

    Code Lua

    1
    2
    3
    eventPlayerLeft= function(player)
    _left(player)
    end

    E dentro do eventNewPlayer chame a função _new:

    Code Lua

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

    Para passar as páginas, nós usaremos botões, dentro da tag a. Os eventos possíveis são:

  • href="event:proximo": se você quiser avançar de página
  • href="event:anterior": se você quiser retroceder a página
  • href="event:number": no luga de number, um número qualquer, para ir a uma página específica

    Teste o exemplo a seguir:

    Code Lua

    1
    2
    createTextArea(3, {"<p align='center'>Tabela</p>\n\n<a href='event:1'><b><font size='12'>1</font></b></a>\n\n<a href='event:2'>2</a>\n\n<a href='event:3'>3</a>\n\n<p align='center'>Você está vendo o conteúdo da página 1</p>\n\n<p align='center'><a href='event:anterior'>Last</a>          <a href='event:proximo'>Next</a></p>", "<p align='center'>Tabela</p>\n\n<a href='event:1'>1</a>\n\n<a href='event:2'><b><font size='12'>2</font></b></a>\n\n<a href='event:3'>3</a>\n\n<p align='center'>Você está vendo o conteúdo da página 2</p>\n\n<a href='event:anterior'><p align='center'>Last</a>          <a href='event:proximo'>Next</a></p>", "<p align='center'>Tabela</p>\n\n<a href='event:1'>1</a>\n\n<a href='event:2'>2</a>\n\n<a href='event:3'><b><font size='12'>3</font></b></a>\n\n<p align='center'>Você está vendo o conteúdo da página 3</p>\n\n<p align='center'><a href='event:anterior'>Last</a>          <a href='event:proximo'>Next</a></p>"}, 0, nil, 100, 100, 200, 200, nil, nil, 0.8, true)
    createTextArea(3, {"<p>Página 1</p>\n\n<a href='event:anterior'>Anterior</a> <a href='event:1'>1</a> <a href='event:2'>2</a> <a href='event:3'>3</a> <a href='event:proximo'>Próximo</a>", "<p>Página 2</p>\n\n<a href='event:anterior'>Anterior</a> <a href='event:1'>1</a> <a href='event:2'>2</a> <a href='event:3'>3</a> <a href='event:proximo'>Próximo</a>", "<p>Página 3</p>\n\n<a href='event:anterior'>Anterior</a> <a href='event:1'>1</a> <a href='event:2'>2</a> <a href='event:3'>3</a> <a href='event:proximo'>Próximo</a>"}, 1, nil, 100, 30, 200, nil, nil, nil, 0.8, true)

    Se não entendeu como funciona, encontrou um bug, ou tem uma crítica, pode se declarar nos comentários! :3

    Obs
    Além de querer ajudar os outros com meus scripts, tive esta idéia depois que vi o sistema de rolagem de páginas do Module #unotfm. Como nunca fiz um sistema desse, fiz um para me ajudar e ajudar outros caso tenham dificuldade neste quisito.


    Não tente usar o script sem ter criado nenhuma textArea ou sem a função eventTextAreaCallback()

  • Dernière modification le 1596133560000
    Gamedroit
    « Citoyen »
    1588568640000
      • Gamedroit#3347
      • Profil
      • Derniers messages
      • Tribu
    #2
      0
    Eu não sei se entendi bem o propósito deste script, é para ser como um livro?
    Jp_darkuss
    « Citoyen »
    1588633440000
      • Jp_darkuss#4806
      • Profil
      • Derniers messages
    #3
      0
    Bem, pode ser. Mas sabe o inventário do Module #unotfm? É isso. Um sistema de rolagem de páginas, caso, por exemplo, você faz um module e quer por um tutorial. Daí você cria várias páginas com cada subtópico (o que é o jogo, como jogar, itens, criadores, etc), são um dos usos.

    @edit: ainda bem que só viu agora, por que eu tinha postado e depois descobri um monte de erro kkkk

    Dernière modification le 1588633560000
    Jp_darkuss
    « Citoyen »
    1596133560000
      • Jp_darkuss#4806
      • Profil
      • Derniers messages
    #4
      0
    Script modificado para se encaixar melhor em modules. Ainda haverão outros.

    Dernière modification le 1596134040000
    Jp_darkuss
    « Citoyen »
    1596133980000
      • Jp_darkuss#4806
      • Profil
      • Derniers messages
    #5
      0
    Bug, se um sentinela ver favor apagar.

    Dernière modification le 1596134040000
    • Forums
    • /
    • Transformice
    • /
    • Modules
    • /
    • [Script] Manipulador de páginas (ui.addTextArea)
    © Atelier801 2018

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

    Version 1.27