×

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] DataHandler V2
[Script] DataHandler V2
Laagaadoo
« Citoyen »
1531155540000
    • Laagaadoo#0000
    • Profil
    • Derniers messages
    • Tribu
#1
  5
  • Script
  • Como usar
  • Exemplos
Esta classe foi inspirada no data_manager e também no seu antecessor chamado "dataHandler".
Esta classe é indicada para uso em módulos semi-oficiais/oficiais e para devs que ainda não tenham um método para salvar dados, se você já tiver uma forma de salvar dados talvez seja melhor continuar com ela.
Haverá conflitos se você utilizar essa classe juntamente com algum sistema de serializar tabelas

Com o DataHandler você pode gerenciar facilmente os dados de seus jogadores em cada módulo seu.
Também é possível acessar dados de outros módulos seus e assim criar uma conexão entre eles (fazer algo no módulo X para ganhar algo no módulo Y por exemplo).

Vantagens
  • Os dados são gerados de uma forma legível.
  • Permite salvar tabelas de tabelas e carregá-las. (ex: mod={1,{2,{3,{4,5},6},7},8})
  • Pode-se acessar dados de outros módulos seus, se desejado.

Desvantagens
  • O tamanho do texto gerado pode ser maior que o de outras classes semelhantes.
  • Não é possível salvar tabelas que tenham chaves.

Saiba sobre seu funcionamento e como utilizá-la nas outras abas.

Link do script (sugestões e melhorias são bem-vindas): Clique aqui
Funções:

new

Cria uma instância do DataHandler utilizando uma estrutura. Exemplos:
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
-- cria um DataHandler que gerencia apenas o módulo "abc"
local playerData = DataHandler.new('abc', {
{
index = 1, -- índice
type = 'number', -- tipo do dado
default = 0 -- valor padrão
},
{
index = 2, -- índice
type = 'table', -- tipo do dado
default = {} -- valor padrão
}
})
Exemplo 2:
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
-- cria um DataHandler que gerencia o módulo "abc" como principal
-- e também gerencia os módulos "def" e "ghi"
local playerData = DataHandler.new('abc', {
cheese = {
index = 1, -- índice
type = 'number', -- tipo do dado
default = 0 -- valor padrão
},
achievements = {
index = 2, -- índice
type = 'table', -- tipo do dado
default = {} -- valor padrão
}
}, {
-- estrutura de outros módulos
def = {
wins = {
index = 1,
type = 'number',
default = 0
},
lost = {
index = 2,
type = 'number',
default = 0
}
},
ghi = {
weapons = {
index = 1,
type = 'number',
default = 0
},
cars = {
index = 2,
type = 'number',
default = 0
}
}
})

newPlayer

Carrega um jogador. Exemplo (utilizando o DataHandler criado no exemplo anterior):
Code Lua

1
2
3
4
5
6
-- carrega um jogador sem dados providos
-- nesse caso os dados atribuidos a ele serão os
-- valores definidos como padrão para todos os módulos
playerData:newPlayer('Laagaadoo#0000')
-- é o mesmo que fazer:
playerData:newPlayer('Laagaadoo#0000', "")
Exemplo 2:
Code Lua

1
2
-- carrega um jogador com dados providos apenas do módulo "abc"
playerData:newPlayer('Laagaadoo#0000', 'abc={123,{40,20}}')
Exemplo 3:
Code Lua

1
2
-- carrega um jogador com dados do módulo "ghi" e "def"
playerData:newPlayer('Laagaadoo#0000', 'ghi={4,2},def={1,5}')

get

Retorna o valor de um campo
Code Lua

1
2
3
4
-- retorna o valor do campo 'cheese'
playerData:get('Laagaadoo#0000', 'cheese')
-- retorna o valor do campo 'wins' do modulo 'def'
playerData:get('Laagaadoo#0000', 'wins', 'def')

set
Code Lua

1
2
3
4
5
6
7
8
-- altera o campo 'cheese' para 245
playerData:set('Laagaadoo#0000', 'cheese', 245)

-- altera o campo 'wins' para 398 do modulo 'def'
playerData:set('Laagaadoo#0000', 'wins', 398, 'def')

-- altera o campo 'cheese' para 245 e já salva (system.savePlayerData)
playerData:set('Laagaadoo#0000', 'cheese', 245, true)

dumpPlayer
Retorna os dados de um jogador em forma de texto
Code Lua

1
playerData:dumpPlayer('Laagaadoo#0000')

Essas últimas duas servem para converter dados do dataHandler antigo ou do data_manager, caso você utilize algum dos dois

convertFromOld

Converte dados do dataHandler antigo para o novo formato, fornecendo uma estrutura como segundo argumento.
Code Lua

1
2
playerData:convertFromOld('mod=100,200,300,12#23#455', {mod = {'number','number','number','table'})
-- retorna: mod={100,200,300,{12,23,455}}

convertFromDataManager
Converte dados do data_manager para o formato do DataHandler, tem que fornecer uma estrutura como segundo argumento.
Code Lua

1
2
playerData:convertFromDataManager('[mod](1#2#3#test#hey&1&54)§', {mod = {'number','number','number','string','table'}})
-- retorna mod={1,2,3,"test",{"hey",1,54}}

Esses exemplos não funcionarão no cafofo da tribo.
Exemplo 1
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
-- inicializa o DataHandler com 'ptb' como modulo principal
local playerData = DataHandler.new('ptb', {
wins = {
index = 1,
type = 'number',
default = 0
},
lost = {
index = 2,
type = 'number',
default = 0
},
achievements = {
index = 3,
type = 'table',
default = {}
},
tribe = {
index = 4,
type = 'string',
default = ''
},
})

local readyPlayers = {}

function eventPlayerDataLoaded(name, data)
-- carrega o jogador no DataHandler usando os dados carregados
playerData:newPlayer(name, data)

-- agora o jogador está pronto
readyPlayers[name] = true
end

function eventNewPlayer(name)
-- os dados do jogador ainda não foram carregados
readyPlayers[name] = false

-- carrega os dados do jogador
system.loadPlayerData(name)
end

function eventPlayerLeft(name)
-- verifica se o jogador já foi carregado
-- se sim, então salva os dados dele
if readyPlayers[name] then
system.savePlayerData(name, playerData:dumpPlayer(name))
end
end

Exemplo 2
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
-- inicializa o DataHandler com 'ptb' como modulo principal
-- e também carrega o módulo 'btt'
local playerData = DataHandler.new('ptb', {
wins = {
index = 1,
type = 'number',
default = 0
},
lost = {
index = 2,
type = 'number',
default = 0
},
achievements = {
index = 3,
type = 'table',
default = {}
},
tribe = {
index = 4,
type = 'string',
default = ''
},
rounds = {
index = 5,
type = 'number',
default = 0
}
}, {
btt = {
cheese = {
index = 1,
type = 'number',
default = 0
},
lost = {
index = 2,
type = 'number',
default = 0
}
}
})

local readyPlayers = {}

function eventPlayerDataLoaded(name, data)
-- carrega o jogador no DataHandler usando os dados carregados
playerData:newPlayer(name, data)

-- agora o jogador está pronto
readyPlayers[name] = true

-- se o jogador tiver 4000 'rounds' no modulo 'ptb'
if playerData:get(name, 'rounds') == 4000 then
-- entao dá 200 'cheese' para ele no modulo 'btt'
local cheese = playerData:get(name, 'cheese', 'btt')
playerData:set(name, 'cheese', cheese + 200, 'btt')
end
end

function eventNewPlayer(name)
-- os dados do jogador ainda não foram carregados
readyPlayers[name] = false

-- carrega os dados do jogador
system.loadPlayerData(name)
end

function eventPlayerLeft(name)
-- verifica se o jogador já foi carregado
-- se sim, então salva os dados dele
if readyPlayers[name] then
system.savePlayerData(name, playerData:dumpPlayer(name))
end
end


Dernière modification le 1562959560000
Bolodefchoco
« Sénateur »
1531155780000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#2
  1
Deus dos script, vira dev dnv pq o mundo n é o msm sem vossa contribuição
Fofinhoppp
« Consul »
1531155900000
    • Fofinhoppp#0000
    • Profil
    • Derniers messages
    • Tribu
#3
  1
Muito bom! É o fim dos problemas com {1, {0, 0, {'string'}}}!
Hugotitas
« Citoyen »
1531163040000
    • Hugotitas#0000
    • Profil
    • Derniers messages
    • Tribu
#4
  1
Gostei laag, é uma pena que você não esteja mais na equipe do module team ;-;
Gamedroit
« Citoyen »
1531332600000
    • Gamedroit#3347
    • Profil
    • Derniers messages
    • Tribu
#5
  1
LaagGod
Melhor lua developer que já vi, espero que te aceitem novamente na lua team
Hugotitas
« Citoyen »
1531412820000
    • Hugotitas#0000
    • Profil
    • Derniers messages
    • Tribu
#6
  0
Contistente3 a dit :
LaagGod
Melhor lua developer que já vi, espero que te aceitem novamente na lua team

E ala ja VOLTOU ?
Bloom
« Héliaste »
1535319540000
    • Bloom#6766
    • Profil
    • Derniers messages
#7
  0
Parabéns
Bolodefchoco
« Sénateur »
1538534340000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#8
  1
Muito bom
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Script] DataHandler V2
© Atelier801 2018

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

Version 1.27