Codigos iniciais
parent
de6d6f4a93
commit
35d66cf155
|
@ -0,0 +1,312 @@
|
||||||
|
API para mod Xpro v1.0.0
|
||||||
|
|
||||||
|
### Métodos
|
||||||
|
|
||||||
|
* `xpro.add_xp(name, xp_add)`
|
||||||
|
* Adiciona xp a um jogador
|
||||||
|
* `xpro.register_on_add_xp(func(name, xp_added, lvl_changed))`
|
||||||
|
* Registra uma função a ser executada apos ser adicionado xp a um jogador
|
||||||
|
* `xpro.rem_xp(name, xp_rem)`
|
||||||
|
* Remove xp a um jogador
|
||||||
|
* `xpro.register_on_rem_xp(func(name, xp_removed, lvl_changed))`
|
||||||
|
* Registra uma função a ser executada apos ser removido xp de um jogador
|
||||||
|
* `xpro.get_player_xp(name)`
|
||||||
|
* Retorna o numero de pontos de xp do jogador
|
||||||
|
* `xpro.get_player_lvl(name)`
|
||||||
|
* Retorna o numero do nivel do jogador
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- exemplos (apagar depois)
|
||||||
|
-
|
||||||
|
-
|
||||||
|
|
||||||
|
### Métodos
|
||||||
|
|
||||||
|
* `aventuras.registrar_personagem(IdPersonagem, Definições de personagem)`
|
||||||
|
* Registra um personagem
|
||||||
|
* `IdPersonagem` é ID que representa o personagem
|
||||||
|
(exemplo, se for npc esse será o nome da entidade registrada)
|
||||||
|
|
||||||
|
* `aventuras.registrar_aventura(Aventura, Definições de aventura)`
|
||||||
|
* Registrar uma aventura
|
||||||
|
* `Aventura` é o nome da aventura (exemplo: "nome_mod:grande_desbravador")
|
||||||
|
|
||||||
|
* `aventuras.adicionar_tarefa(Aventura, Definições de tarefa)`
|
||||||
|
* Adicionar uma tarefa em uma aventura
|
||||||
|
|
||||||
|
* `aventuras.pegar_tarefa(NomeJogador, Aventura)`
|
||||||
|
* Retorna o número da última tarefa realizada
|
||||||
|
* Retorna `0` caso não tenha feito nenhuma
|
||||||
|
|
||||||
|
* `aventuras.salvar_tarefa(NomeJogador, Aventura, Tarefa)`
|
||||||
|
* Salva a ultima tarefa realizada por um jogador
|
||||||
|
* `Tarefa` é o numero da tarefa
|
||||||
|
|
||||||
|
* `aventuras.registrar_item_bau_noob(ItemString, Definições do item noob)`
|
||||||
|
* Registra um item para ser comprado por jogadores quando estiverem numa tarefa especifica
|
||||||
|
* O nome Item Noob é defido ao fato do item ser destinado aos jogadores que perderam o item
|
||||||
|
que seria usado na proxima etapa da tarefa.
|
||||||
|
* `ItemString` é o itemstring do item (exemplo: "mymod:bilhete_1")
|
||||||
|
|
||||||
|
* `aventuras.comum.verif_tarefa(Aventura, Tarefa)`
|
||||||
|
* Verifica se uma tarefa existe
|
||||||
|
|
||||||
|
* `avesturas.registrar_estrutura(Estrutura, Definições de estrutura)`
|
||||||
|
* Registra uma estrutura para ser construida no mundo
|
||||||
|
* `Estrutura` é o nome da estrutura (exemplo: "modname:castelo")
|
||||||
|
|
||||||
|
* `aventuras.registrar_lugar(Lugar, Definições de lugar)`
|
||||||
|
* Isso é usado pelo balao de aventureiro para que jogadores acessem lugares relacionados a aventuras
|
||||||
|
|
||||||
|
### Funções de registo de chamada global (callbacks)
|
||||||
|
|
||||||
|
* `aventuras.callbacks.registrar_ao_concluir(function(NomeJogador, Aventura, Tarefa))`
|
||||||
|
* Chamada quando um jogador conclui uma tarefa
|
||||||
|
|
||||||
|
## Definições de estrutura
|
||||||
|
{
|
||||||
|
titulo = "Castelo Real", -- Titulo exibido ao jogador
|
||||||
|
|
||||||
|
versao = "1", --[[
|
||||||
|
^ Versao da estrutura
|
||||||
|
^ Quando uma estrutura é montada no mundo, a versao é gravada
|
||||||
|
^ Isso é usado apenas como string
|
||||||
|
^ Quando for diferente da versao gravada a estrutura é remontada no mesmo local ]]
|
||||||
|
|
||||||
|
altura = 10, -- Altura da estrutura
|
||||||
|
|
||||||
|
largura = 21, -- Largura da estrutura
|
||||||
|
|
||||||
|
filepath = minetest.get_modpath(minetest.get_current_modname()).."/schems/castelo.mts", --[[
|
||||||
|
^ Caminho do arquivo no formato schematic de minetest onde a estrutura está armazenada ]]
|
||||||
|
|
||||||
|
mapgen = { -- Dados para definir como a estrutura será gerada no mundo
|
||||||
|
|
||||||
|
tipo = "tipo", --[[
|
||||||
|
^ Tipo de posicionamento da estrutura no mapa gerado
|
||||||
|
^ No tipo "suspenso" a estrutura será colocada 3 blocos acima do bloco mais
|
||||||
|
alto numa area gerada aleatoriamente no mapa
|
||||||
|
^ em bioma "floresta" a estrutura aparece acima de arvores comuns
|
||||||
|
^ em bioma "campo" a estrutura aparece acima de uma area plana de terra com grama ]]
|
||||||
|
|
||||||
|
bioma = "bioma", --[[
|
||||||
|
^ Bioma da area onde a estrutura é montada
|
||||||
|
^ Para detalhes dos biomas, verifique o `tipo` utilizado na mapgen da estrutura utilizado ]]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
### Definições do item noob (`registrar_item_bau_noob`)
|
||||||
|
{
|
||||||
|
aventura = "mymod:aventura_exemplo", -- Aventura relacionada
|
||||||
|
|
||||||
|
tarefa = 10, -- Tarefa que o jogador deve ter realizado por ultimo (onde o mesmo recebe o item)
|
||||||
|
|
||||||
|
desc_item = "Apple", -- Descrição do item no menu
|
||||||
|
|
||||||
|
custo = 1, --[[ OPCIONAL
|
||||||
|
^ Custo da compra
|
||||||
|
^ O item é definido com a definição aventuras_moeda_bau_noob
|
||||||
|
^ Se nulo, é definido como 1 ]]
|
||||||
|
|
||||||
|
give_item = func(player), --[[ OPCIONAL
|
||||||
|
^ Função que da o item ao jogador
|
||||||
|
^ Se nulo, uma unidade é dada ao jogador ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
### Definições de personagem (`registrar_personagem`)
|
||||||
|
{
|
||||||
|
type = "npc", --[[
|
||||||
|
^ Tipo do personagem
|
||||||
|
^ "npc" para NPCs (entidades Lua)]]
|
||||||
|
|
||||||
|
npc_preset = "human", --[[
|
||||||
|
^ Predefinição da entidade a ser criada
|
||||||
|
^ "human" para ser predefinido como um humano]]
|
||||||
|
|
||||||
|
npc = { -- Caracteristicas da entidade Lua
|
||||||
|
|
||||||
|
textures = { --[[
|
||||||
|
^ Texturas da entidade
|
||||||
|
^ Se voce deseja que a entidade use texturas alternativas
|
||||||
|
precisa lista-las como abaixo]]
|
||||||
|
{"texture.png"},
|
||||||
|
{"texture.1.png"},
|
||||||
|
{"texture.2.png"},
|
||||||
|
},
|
||||||
|
|
||||||
|
sounds = { --[[
|
||||||
|
^ Sons da entidade
|
||||||
|
^ Não precisa listar todos os sons alternativos]]
|
||||||
|
random = "sound", -- Som emitido aleatoriamente pela entidade
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
arte_npc = Definições de arte de NPC, -- Arte do NPC
|
||||||
|
|
||||||
|
spawner_node = { --[[
|
||||||
|
^ Nodes que spawnadores do npc
|
||||||
|
^ Os NPCs surgem proximos aos nodes
|
||||||
|
["aventuras_tomas:bau"] = {
|
||||||
|
spawn_mode = "front", --[[
|
||||||
|
^ Maneira como o NPC spawna pelo node
|
||||||
|
^ "front" spawna em frente ao node (um bloco de distancia)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
random_spawn = { --[[
|
||||||
|
^ Spawn aleatorio
|
||||||
|
^ NPCs que spawnam aleatoriamente duram um tempo limitado no mapa e desaparecem]]
|
||||||
|
|
||||||
|
nodes = {"nodename1", "nodename2"}, -- Tabela de nodes
|
||||||
|
min_light = 10, -- OPCIONAL | Luminosidade minima do local (se omitido, sera 10)
|
||||||
|
chance = 15000, -- OPCIONAL | Chance de spawn ocorrer (se omitido, sera 15000)
|
||||||
|
active_object_count = 1, -- OPCIONAL | Limite de mobs por blocos de mapa (se omitido, sera 1)
|
||||||
|
min_height = 0, -- OPCIONAL | Altura minima para spawn ocorrer (se omitido, sera 0)
|
||||||
|
day_toggle = true, --[[ OPCIONAL | Define se deve estar de dia ou de noite
|
||||||
|
^ `true` para spawn apenas de dia
|
||||||
|
^ `false` para spawn apenas de noite
|
||||||
|
^ `nil` para qualquer momento]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
### Definições de aventura
|
||||||
|
{
|
||||||
|
titulo = "Grande Desbravador", -- Titulo da aventura
|
||||||
|
desc = "Uma aventura legal", -- Pequena descrição da aventura
|
||||||
|
img = "default_apple.png", -- [OPCIONAL] Imagem (quadrada) que representa a aventura
|
||||||
|
}
|
||||||
|
|
||||||
|
### Definições de tarefa
|
||||||
|
{
|
||||||
|
titulo = "Descobrindo o mundo", -- Titulo da tarefa
|
||||||
|
|
||||||
|
tipo = "info_npc" --[[
|
||||||
|
^ "npc_info" o jogador deve falar com um NPC
|
||||||
|
^ "npc_troca" o jogador deve trocar itens com um NPC
|
||||||
|
^ "npc_place_node" o jogador deve colocar um node após falar com um NPC
|
||||||
|
^ "npc_dig_node" o jogador deve quebrar um node após falar com um NPC
|
||||||
|
^ "npc_comida" o jogador deve comer algo apos falar com um NPC
|
||||||
|
^ "npc_craft" o jogador deve craftar algo apos falar com um NPC ]]
|
||||||
|
|
||||||
|
dados = { -- Tabela de dados que o referido tipo de tarefa designar
|
||||||
|
|
||||||
|
aven_req = {["uma_aventura"]=2,["outra_aventura"]=10}, --[[
|
||||||
|
^ Exige que o jogador tenha concluido algumas tarefas de outras aventuras ]]
|
||||||
|
|
||||||
|
npcs = {"mobs_npc:igor", "mobs_npc:trader"}, --[[
|
||||||
|
^ Tabela de entidades que possibilitam a realização da tarefa ]]
|
||||||
|
|
||||||
|
item_rem = Tabela de Itens, --[[
|
||||||
|
^ Usado para tarefas do tipo "npc_troca"
|
||||||
|
^ Tabela de itens exigidos para a troca (limite de 5 itens na tabela) ]]
|
||||||
|
|
||||||
|
item_add = Tabela de Itens, --[[
|
||||||
|
^ Usado para tarefas do tipo "npc_troca"
|
||||||
|
^ Tabela de itens recebidos pela troca (limite de 5 itens na tabela) ]]
|
||||||
|
|
||||||
|
item = "", --[[
|
||||||
|
^ Itemstring de um item
|
||||||
|
^ Na tarefa do tipo "npc_place" o jogador deve colocar o node informado aqui
|
||||||
|
^ Na tarefa do tipo "npc_dig" o jogador deve quebrar o node informado aqui
|
||||||
|
^ Na tarefa do tipo "npc_craft" o jogador deve craftar o item informado aqui
|
||||||
|
^ Na tarefa do tipo "npc_comida" o jogador deve comer o alimento informado aqui ]]
|
||||||
|
|
||||||
|
img_item = "aventuras_tarefa_duvida.png" --[[
|
||||||
|
^ OPCIONAL
|
||||||
|
^ Nome de um arquivo de imagem
|
||||||
|
^ Quando informado, essa imagem fica no lugar da imagem do `item` informado acima ]]
|
||||||
|
|
||||||
|
msg = "", -- Mensagem apresentada pelo NPC quando o jogador acessa inicialmente
|
||||||
|
|
||||||
|
msg_fim = "", --[[
|
||||||
|
^ Mensagem apresentada quando o jogador conclui a tarefa
|
||||||
|
^ Caso o jogador esteja em uma interação com o NPC, essa mensagem será a fala do NPC
|
||||||
|
^ Caso o jogador não esteja interagindo com o NPC no momento da conclusão,
|
||||||
|
a mensagem é exibida do console do chat (como nas tarefas do tipo "npc_craft" e "npc_food")
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Tabela de Itens
|
||||||
|
{
|
||||||
|
{name="default:dirt", count=50, wear=0, metadata=""},
|
||||||
|
{name="default:sand", count=5, wear=0, metadata=""},
|
||||||
|
{name="default:cobble", count=1, wear=0, metadata=""},
|
||||||
|
}
|
||||||
|
|
||||||
|
Recursos
|
||||||
|
--------
|
||||||
|
|
||||||
|
### NPCs
|
||||||
|
* `aventuras.recursos.npc.registrar(nome, aventura)` : Registrar o uso de um NPC na engine
|
||||||
|
* `nome` é o nome da entidade-NPC (exemplo: "mobs_npc:igor")
|
||||||
|
* `aventura` é o nome da aventura (exemplo: "nome_mod:grande_desbravador")
|
||||||
|
* Executa a chamada `aventuras.tarefas["tipo de tarefa"].npcs.on_rightclick(npc_name, clicker, aventura, tarefa)` quando o npc é acessado e o jogador está na tarefa cujo registro possui `npcs.on_rightclick["nome da entidade"]`
|
||||||
|
|
||||||
|
* `aventuras.recursos.npc.on_rightclick(self, clicker)` : Coordena o chamada 'on_rightclick' no NPC
|
||||||
|
* São os mesmo argumentos da chamada 'on_rightclick'
|
||||||
|
|
||||||
|
* `aventuras.recursos.npc.registrar_arte(nome, Definições de arte de NPC)` : Registra dados de arte do npc
|
||||||
|
* `nome` é o nome da entidade-NPC (exemplo: "mobs_npc:igor")
|
||||||
|
|
||||||
|
### Definições de arte de NPC
|
||||||
|
{
|
||||||
|
face = "default_dirt.png",
|
||||||
|
^ Imagem da face do NPC para as formspecs de apresentação (recomenda-se largura e altura iguais)
|
||||||
|
bgcolor = "bgcolor[#080808BB;true]",
|
||||||
|
^ Valor RGB-Hexadecimal da cor de fundo para as formspecs de apresentação
|
||||||
|
bg_img1x1 = "background[5,5;1,1;gui_formbg.png;true]",
|
||||||
|
^ Imagem de fundo para as formspecs no formato quadrado
|
||||||
|
bg_img10x3 = "background[5,5;1,1;gui_formbg.png;true]",
|
||||||
|
^ Imagem de fundo para as formspecs no formato 10x3
|
||||||
|
sounds = Sons de NPC,
|
||||||
|
^ Opcional. Tabela de sons do NPC
|
||||||
|
}
|
||||||
|
|
||||||
|
### Definições de lugar
|
||||||
|
{
|
||||||
|
titulo = "Castelo Real", -- Titulo exibido ao jogador
|
||||||
|
pos = {x=0,y=0,z=0}, -- Coordenada para onde o jogador é teleportado quando for ao lugar
|
||||||
|
aven_req = {["uma_aventura"]=2,["outra_aventura"]=10}, -- OPICIONAL | Tarefas de aventuras exigidas para teleportar para o lugar
|
||||||
|
}
|
||||||
|
|
||||||
|
### Sons de NPC
|
||||||
|
{
|
||||||
|
concluir = {name="aventuras_concluir",gain=1.0},
|
||||||
|
^ Nome do arquivo de audio de quando o jogador conclui uma tarefa no NPC
|
||||||
|
}
|
||||||
|
|
||||||
|
Banco de Dados
|
||||||
|
--------------
|
||||||
|
O banco de dados utilizado pela API é o Memor. Veja a documentação especifica para este.
|
||||||
|
|
||||||
|
A estrutura dos dados é feita da seguinte forma:
|
||||||
|
|
||||||
|
mundo
|
||||||
|
--aventuras
|
||||||
|
|--editor_schem
|
||||||
|
| --acessos (dados de acessos)
|
||||||
|
|
|
||||||
|
--player_<NomeJogador>
|
||||||
|
|--aventura_<Aventura> (ultima tarefa realizada)
|
||||||
|
|--tarefa_<TipoTarefa> (dados de processamento da tarefa)
|
||||||
|
--livro_de_aventuras (dados do livro de aventuras do jogador)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
27
README.md
27
README.md
|
@ -1 +1,26 @@
|
||||||
xpro
|
# Xpro v1.1.0
|
||||||
|
[![download](https://img.shields.io/github/tag/BrunoMine/xpro.svg?style=flat-square&label=release)](https://github.com/BrunoMine/xpro/archive/v1.1.0.zip)
|
||||||
|
[![git](https://img.shields.io/badge/git-project-green.svg?style=flat-square)](https://github.com/BrunoMine/xpro)
|
||||||
|
[![forum](https://img.shields.io/badge/minetest-mod-green.svg?style=flat-square)](https://forum.minetest.net)
|
||||||
|
[![bower](https://img.shields.io/badge/bower-mod-green.svg?style=flat-square)](https://minetest-bower.herokuapp.com/mods/xpro)
|
||||||
|
|
||||||
|
## Descrição _Description_
|
||||||
|
Sistema de niveis e experiencia
|
||||||
|
|
||||||
|
## Requisitos _(Requirements)_
|
||||||
|
* Minetest 0.4.17 ou superior
|
||||||
|
* Mod default
|
||||||
|
* Mod sfinv
|
||||||
|
* Mod intllib (opicional)
|
||||||
|
|
||||||
|
## Licença _(License)_
|
||||||
|
Veja LICENSE.txt para informações detalhadas da licença LGPL 3.0
|
||||||
|
|
||||||
|
### Autores do código fonte
|
||||||
|
Originalmente por BrunoMine, Bruno Borges <borgesdossantosbruno@gmail.com> (LGPL 3.0)
|
||||||
|
|
||||||
|
### Autores de mídias (texturas, modelos and sons)
|
||||||
|
|
||||||
|
Todas que não estão descritas aqui são de autoria de
|
||||||
|
BrunoMine, Bruno Borges <borgesdossantosbruno@gmail.com> (CC BY-SA 3.0)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,152 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
API
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Niveis de acoordo com XP
|
||||||
|
local tb_niveis = {
|
||||||
|
0, -- Nivel 1
|
||||||
|
150, -- Nivel 2
|
||||||
|
300, -- Nivel 3
|
||||||
|
600, -- Nivel 4
|
||||||
|
900, -- Nivel 5
|
||||||
|
1200, -- Nivel 6
|
||||||
|
1500, -- Nivel 7
|
||||||
|
2000, -- Nivel 8
|
||||||
|
2500, -- Nivel 9
|
||||||
|
3000, -- Nivel 10
|
||||||
|
3500, -- Nivel 11
|
||||||
|
4000, -- Nivel 12
|
||||||
|
4600, -- Nivel 13
|
||||||
|
5200, -- Nivel 14
|
||||||
|
6000, -- Nivel 15
|
||||||
|
6900, -- Nivel 16
|
||||||
|
8000, -- Nivel 17
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Pegar nivel de acordo com XP
|
||||||
|
local get_lvl = function(my_xp)
|
||||||
|
local my_lvl = 1
|
||||||
|
for lvl,xp in ipairs(tb_niveis) do
|
||||||
|
if xp > my_xp then
|
||||||
|
return my_lvl -- Retorna o nivel anterior
|
||||||
|
end
|
||||||
|
-- Tem o xp necessario para esse nivel
|
||||||
|
my_lvl = lvl
|
||||||
|
end
|
||||||
|
return my_lvl
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Pegar xp de um jogador (informar)
|
||||||
|
xpro.get_player_xp = function(name)
|
||||||
|
return xpro.bd.pegar("jogador_"..name, "xp")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Pegar nivel de um jogador (informar)
|
||||||
|
xpro.get_player_lvl = function(name)
|
||||||
|
return xpro.bd.pegar("jogador_"..name, "lvl")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Registro basico
|
||||||
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
|
||||||
|
-- Verifica se jogador ja possui registro no BD
|
||||||
|
if xpro.bd.verif("jogador_"..player:get_player_name(), "xp") ~= true then
|
||||||
|
|
||||||
|
-- Criar registro
|
||||||
|
local tb_name = "jogador_"..player:get_player_name()
|
||||||
|
|
||||||
|
-- XP
|
||||||
|
xpro.bd.salvar(tb_name, "xp", 0)
|
||||||
|
|
||||||
|
-- Nivel
|
||||||
|
xpro.bd.salvar(tb_name, "lvl", 1)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
-- Callback ao adicionar XP
|
||||||
|
local callbacks_add_xp = {}
|
||||||
|
xpro.register_on_add_xp = function(func)
|
||||||
|
table.insert(callbacks_add_xp, func)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Adicionar XP
|
||||||
|
xpro.add_xp = function(name, xp_add)
|
||||||
|
|
||||||
|
-- Nome da tabela referente ao jogador no banco de dados
|
||||||
|
local tb_name = "jogador_"..name
|
||||||
|
|
||||||
|
local xp_atual = xpro.get_player_xp(name)
|
||||||
|
|
||||||
|
-- Evita salvar xp negativo
|
||||||
|
local new_xp = xp_atual+xp_add
|
||||||
|
if new_xp < 0 then
|
||||||
|
xpro.bd.salvar(tb_name, "xp", 0)
|
||||||
|
else
|
||||||
|
xpro.bd.salvar(tb_name, "xp", new_xp)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Atualiza nivel
|
||||||
|
local old_lvl = xpro.get_player_lvl(name)
|
||||||
|
local new_level = get_lvl(new_xp)
|
||||||
|
xpro.bd.salvar(tb_name, "lvl", new_level)
|
||||||
|
|
||||||
|
-- Executa callback registradas
|
||||||
|
for _,func in ipairs(callbacks_add_xp) do
|
||||||
|
func(name, xp_add, old_lvl ~= new_level)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Callback ao remover XP
|
||||||
|
local callbacks_rem_xp = {}
|
||||||
|
xpro.register_on_rem_xp = function(func)
|
||||||
|
table.insert(callbacks_rem_xp, func)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Remover XP
|
||||||
|
xpro.rem_xp = function(name, xp_rem)
|
||||||
|
|
||||||
|
-- Nome da tabela referente ao jogador no banco de dados
|
||||||
|
local tb_name = "jogador_"..name
|
||||||
|
|
||||||
|
local xp_atual = xpro.get_player_xp(name)
|
||||||
|
|
||||||
|
-- Evita salvar xp negativo
|
||||||
|
local new_xp = xp_atual-xp_rem
|
||||||
|
if new_xp < 0 then
|
||||||
|
xpro.bd.salvar(tb_name, "xp", 0)
|
||||||
|
else
|
||||||
|
xpro.bd.salvar(tb_name, "xp", new_xp)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Atualiza nivel
|
||||||
|
local old_lvl = xpro.get_player_lvl(name)
|
||||||
|
local new_level = get_lvl(new_xp)
|
||||||
|
xpro.bd.salvar(tb_name, "lvl", new_level)
|
||||||
|
|
||||||
|
-- Executa callback registradas
|
||||||
|
for _,func in ipairs(callbacks_rem_xp) do
|
||||||
|
func(name, xp_rem, old_lvl ~= new_level)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
default
|
||||||
|
intllib?
|
||||||
|
sfinv?
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
Experiencia para jogadores | Experience for players
|
|
@ -0,0 +1,44 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Inicializador de variaveis e scripts
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Notificador de Inicializador
|
||||||
|
local notificar = function(msg)
|
||||||
|
if minetest.setting_get("log_mods") then
|
||||||
|
minetest.debug("[Xpro]"..msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local modpath = minetest.get_modpath("xpro")
|
||||||
|
|
||||||
|
-- Variavel global
|
||||||
|
xpro = {}
|
||||||
|
|
||||||
|
-- Carregar scripts
|
||||||
|
notificar("Carregando scripts...")
|
||||||
|
|
||||||
|
-- Criação do banco de dados
|
||||||
|
xpro.bd = dofile(modpath.."/lib/memor.lua")
|
||||||
|
|
||||||
|
-- Variaveis personalizaveis
|
||||||
|
xpro.var = {}
|
||||||
|
|
||||||
|
-- API
|
||||||
|
dofile(modpath.."/api.lua")
|
||||||
|
dofile(modpath.."/sfinv.lua")
|
||||||
|
dofile(modpath.."/progresso.lua")
|
||||||
|
dofile(modpath.."/ranking.lua")
|
||||||
|
|
||||||
|
-- Metodos para evoluir
|
||||||
|
dofile(modpath.."/metodos/dig_node.lua")
|
||||||
|
dofile(modpath.."/metodos/place_node.lua")
|
||||||
|
|
||||||
|
notificar("OK")
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
|
||||||
|
-- Fallback functions for when `intllib` is not installed.
|
||||||
|
-- Code released under Unlicense <http://unlicense.org>.
|
||||||
|
|
||||||
|
-- Get the latest version of this file at:
|
||||||
|
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
||||||
|
|
||||||
|
local function format(str, ...)
|
||||||
|
local args = { ... }
|
||||||
|
local function repl(escape, open, num, close)
|
||||||
|
if escape == "" then
|
||||||
|
local replacement = tostring(args[tonumber(num)])
|
||||||
|
if open == "" then
|
||||||
|
replacement = replacement..close
|
||||||
|
end
|
||||||
|
return replacement
|
||||||
|
else
|
||||||
|
return "@"..open..num..close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
||||||
|
end
|
||||||
|
|
||||||
|
local gettext, ngettext
|
||||||
|
if minetest.get_modpath("intllib") then
|
||||||
|
if intllib.make_gettext_pair then
|
||||||
|
-- New method using gettext.
|
||||||
|
gettext, ngettext = intllib.make_gettext_pair()
|
||||||
|
else
|
||||||
|
-- Old method using text files.
|
||||||
|
gettext = intllib.Getter()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fill in missing functions.
|
||||||
|
|
||||||
|
gettext = gettext or function(msgid, ...)
|
||||||
|
return format(msgid, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
||||||
|
return format(n==1 and msgid or msgid_plural, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
return gettext, ngettext
|
|
@ -0,0 +1,302 @@
|
||||||
|
--[[
|
||||||
|
Lib Memor para Minetest
|
||||||
|
Memor v1.3 Copyright (C) 2017 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Inicializador de scripts
|
||||||
|
]]
|
||||||
|
|
||||||
|
local modname = minetest.get_current_modname()
|
||||||
|
|
||||||
|
local modpath = minetest.get_modpath(modname)
|
||||||
|
|
||||||
|
-- Variavel global
|
||||||
|
local memor = {}
|
||||||
|
|
||||||
|
-- Rotinas de interação com arquivos
|
||||||
|
|
||||||
|
-- Diretorio do mundo
|
||||||
|
local wpath = minetest.get_worldpath()
|
||||||
|
|
||||||
|
-- Cria um diretório na pasta do mundo
|
||||||
|
function memor.mkdir(dir)
|
||||||
|
if not dir then
|
||||||
|
minetest.log("error", "[Memor] Nenhum diretorio especificado (em memor.mkdir)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
dir = wpath.."/"..dir
|
||||||
|
|
||||||
|
if minetest.mkdir then
|
||||||
|
minetest.mkdir(dir)
|
||||||
|
else
|
||||||
|
os.execute('mkdir "' .. dir .. '"')
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Criar um arquivo com os dados serializados (Salvar)
|
||||||
|
function memor.escrever(dir, arquivo, dados, is_text)
|
||||||
|
|
||||||
|
if dir == nil or arquivo == nil or dados == nil then
|
||||||
|
minetest.log("error", "[Memor] Faltou dados (em memor.escrever)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if is_text ~= true then
|
||||||
|
dados = minetest.serialize(dados)
|
||||||
|
else
|
||||||
|
dados = string.format(dados)
|
||||||
|
end
|
||||||
|
if dados == "" then
|
||||||
|
minetest.log("error", "[Memor] Dado fornecido invalido (em memor.escrever)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local saida = io.open(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo, "w")
|
||||||
|
if saida then
|
||||||
|
saida:write(dados)
|
||||||
|
io.close(saida)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
-- Cria diretorio (tabela) caso nao exista
|
||||||
|
memor.mkdir(modname.."/"..dir)
|
||||||
|
saida = io.open(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo, "w")
|
||||||
|
if saida then
|
||||||
|
saida:write(dados)
|
||||||
|
io.close(saida)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.log("error", "[Memor] Impossivel escrever dados em "..modname.."/"..dir.."/"..arquivo.." (em memor.escrever)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Ler dados de um arquivo de memória (Carregar)
|
||||||
|
function memor.ler(dir, arquivo, is_text)
|
||||||
|
|
||||||
|
if dir == nil or arquivo == nil then
|
||||||
|
minetest.log("error", "[Memor] Faltou dados (em memor.ler)")
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local entrada = io.open(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo, "r")
|
||||||
|
if entrada ~= nil then
|
||||||
|
local dados
|
||||||
|
if is_text ~= true then
|
||||||
|
dados = entrada:read("*l")
|
||||||
|
dados = minetest.deserialize(dados)
|
||||||
|
else
|
||||||
|
dados = entrada:read("*a")
|
||||||
|
dados = dados
|
||||||
|
end
|
||||||
|
io.close(entrada)
|
||||||
|
return dados
|
||||||
|
else
|
||||||
|
minetest.log("error", "[Memor] pasta e/ou arquivo inexiste(s) (em memor.ler)")
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Deletar um arquivo
|
||||||
|
function memor.deletar(dir, arquivo)
|
||||||
|
|
||||||
|
if not dir or not arquivo then
|
||||||
|
minetest.log("error", "[Memor] Faltou dados (em memor.deletar)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
os.remove(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Deletar um diretório
|
||||||
|
function memor.deletar_dir(dir)
|
||||||
|
|
||||||
|
if not dir then
|
||||||
|
minetest.log("error", "[Memor] Faltou dados (em memor.deletar_dir)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local list = minetest.get_dir_list(wpath .. "/" .. modname .. "/" .. dir)
|
||||||
|
|
||||||
|
for n, arquivo in ipairs(list) do
|
||||||
|
os.remove(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo)
|
||||||
|
end
|
||||||
|
|
||||||
|
os.remove(wpath .. "/" .. modname .. "/" .. dir)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fim
|
||||||
|
|
||||||
|
-- Rotinas de consutas a arquivos
|
||||||
|
|
||||||
|
-- Verifica diretorios e corrige
|
||||||
|
verificar = function(subdir)
|
||||||
|
|
||||||
|
|
||||||
|
-- Verifica e corrige diretorio
|
||||||
|
local list = minetest.get_dir_list(minetest.get_worldpath(), true)
|
||||||
|
local r = false
|
||||||
|
for n, ndir in ipairs(list) do
|
||||||
|
if ndir == modname then
|
||||||
|
r = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Diretorio inexistente
|
||||||
|
if r == false then
|
||||||
|
memor.mkdir(modname)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Verifica e corrige subdiretorio
|
||||||
|
local list = minetest.get_dir_list(minetest.get_worldpath().."/"..modname, true)
|
||||||
|
local r = false
|
||||||
|
for n, ndir in ipairs(list) do
|
||||||
|
if ndir == subdir then
|
||||||
|
r = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Subdiretorio inexistente
|
||||||
|
if r == false then
|
||||||
|
memor.mkdir(modname.."/"..subdir)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Inserir dados
|
||||||
|
memor.inserir = function(tb, index, valor, is_text)
|
||||||
|
|
||||||
|
-- Tenta inserir direto
|
||||||
|
if memor.escrever(tb, index, valor, is_text) == true then return true end
|
||||||
|
|
||||||
|
verificar(tb)
|
||||||
|
|
||||||
|
if memor.escrever(tb, index, valor, is_text) then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
minetest.log("error", "[Memor] Impossivel salvar dados (em memor.inserir)")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Ler dados
|
||||||
|
memor.consultar = function(tb, index, is_text)
|
||||||
|
|
||||||
|
local r = memor.ler(tb, index, is_text)
|
||||||
|
if r == nil then
|
||||||
|
local mod = modname
|
||||||
|
minetest.log("error", "[Memor] Registro acessado inexistente ("..dump(mod).."/"..dump(tb).."/"..dump(index)..") (em memor.consultar)")
|
||||||
|
end
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Verificar dados
|
||||||
|
memor.verificar = function(subdir, arquivo)
|
||||||
|
|
||||||
|
local dir = modname
|
||||||
|
|
||||||
|
local list = minetest.get_dir_list(wpath .. "/" .. dir .. "/" .. subdir)
|
||||||
|
local r = false
|
||||||
|
for n, arq in ipairs(list) do
|
||||||
|
if arq == arquivo then
|
||||||
|
r = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if r then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Listar
|
||||||
|
memor.listar = function(subdir)
|
||||||
|
|
||||||
|
local dir = modname
|
||||||
|
|
||||||
|
if subdir then
|
||||||
|
|
||||||
|
local list = minetest.get_dir_list(wpath .. "/" .. dir .. "/" .. subdir)
|
||||||
|
|
||||||
|
if list == nil then
|
||||||
|
minetest.log("error", "[Memor] Impossivel listar diretorio (em memor.listar)")
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
local list = minetest.get_dir_list(wpath .. "/" .. dir)
|
||||||
|
|
||||||
|
if list == nil then
|
||||||
|
minetest.log("error", "[Memor] Impossivel listar diretorio (em memor.listar)")
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fim
|
||||||
|
|
||||||
|
-- Montagem de banco de dados
|
||||||
|
|
||||||
|
bd = {}
|
||||||
|
|
||||||
|
-- Inserir dados comuns
|
||||||
|
bd.salvar = function(tb, index, valor)
|
||||||
|
return memor.inserir(tb, index, valor)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Inserir textos complexos
|
||||||
|
bd.salvar_texto = function(tb, index, valor)
|
||||||
|
return memor.inserir(tb, index, valor, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Consultar dados
|
||||||
|
bd.pegar = function(tb, index)
|
||||||
|
return memor.consultar(tb, index)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Inserir dados
|
||||||
|
bd.pegar_texto = function(tb, index, valor)
|
||||||
|
return memor.consultar(tb, index, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Verificar dados
|
||||||
|
bd.verif = function(tb, index)
|
||||||
|
return memor.verificar(tb, index)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Remover dados
|
||||||
|
bd.remover = function(tb, index)
|
||||||
|
return memor.deletar(tb, index)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Remover tabela
|
||||||
|
bd.drop_tb = function(tb)
|
||||||
|
return memor.deletar_dir(tb)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Listar dados
|
||||||
|
bd.listar = function(tb)
|
||||||
|
return memor.listar(tb)
|
||||||
|
end
|
||||||
|
|
||||||
|
return bd
|
||||||
|
|
||||||
|
-- Fim
|
|
@ -0,0 +1 @@
|
||||||
|
autogen.lua balao.lua balao_decor.lua bau.lua bau_spawn.lua check_balao_proprio.lua comandos.lua compatibilidade.lua comum.lua corda.lua gerar_balao_aleatorio.lua interface_bau.lua interface_jogador.lua ir_balao.lua online.lua reivindicar.lua reparar_balao.lua visitas.lua mensagens.lua
|
|
@ -0,0 +1,238 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2018-07-13 00:49-0300\n"
|
||||||
|
"PO-Revision-Date: 2018-07-13 00:59-0300\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: en\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 2.0.6\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: balao.lua balao_decor.lua
|
||||||
|
msgid "Balao Decorativo"
|
||||||
|
msgstr "Decorative Balloon"
|
||||||
|
|
||||||
|
#: balao_decor.lua
|
||||||
|
msgid "Node de Balao Decorativo"
|
||||||
|
msgstr "Decorative Balloon Node"
|
||||||
|
|
||||||
|
#: bau.lua
|
||||||
|
msgid "Bau do Balao"
|
||||||
|
msgstr "Balloon Box"
|
||||||
|
|
||||||
|
#: bau.lua
|
||||||
|
msgid "Esse Balao nao lhe pertence"
|
||||||
|
msgstr "This Balloon is not yours"
|
||||||
|
|
||||||
|
#: bau_spawn.lua
|
||||||
|
msgid "Bau do Balao do Centro"
|
||||||
|
msgstr "Balloon Box of Center Spawn"
|
||||||
|
|
||||||
|
#: bau_spawn.lua
|
||||||
|
msgid "Novo centro definido"
|
||||||
|
msgstr "New spawn center defined"
|
||||||
|
|
||||||
|
#: bau_spawn.lua
|
||||||
|
msgid "Precisa do privilegio 'server' para colocar esse bau"
|
||||||
|
msgstr "Need the 'server' privilege to put this Balloon Box"
|
||||||
|
|
||||||
|
#: corda.lua
|
||||||
|
msgid "Corda de Balao"
|
||||||
|
msgstr "Balloon Rope"
|
||||||
|
|
||||||
|
#: gerar_balao_aleatorio.lua
|
||||||
|
msgid "Novo local encontrado"
|
||||||
|
msgstr "New place found"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Muito distante do seu Bau de Balao"
|
||||||
|
msgstr "Far away from your Balloon Box"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Ir para Centro"
|
||||||
|
msgstr "Go to Center"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Reparar Balao"
|
||||||
|
msgstr "Repair Balloon"
|
||||||
|
|
||||||
|
#: interface_bau.lua visitas.lua
|
||||||
|
msgid "Receber seguidor"
|
||||||
|
msgstr "Receive follower"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Ir para seu Balao"
|
||||||
|
msgstr "Go to your balloon"
|
||||||
|
|
||||||
|
#: interface_bau.lua visitas.lua
|
||||||
|
msgid "Seguir jogador"
|
||||||
|
msgstr "Follow a player"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Precisas ter um balao ativo"
|
||||||
|
msgstr "You need to have an active balloon"
|
||||||
|
|
||||||
|
#: interface_bau.lua mensagens.lua
|
||||||
|
msgid "Viagem ao Centro realizada"
|
||||||
|
msgstr "Journey to the Center held"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Balao ativo"
|
||||||
|
msgstr "Balloon is active"
|
||||||
|
|
||||||
|
#: interface_jogador.lua
|
||||||
|
msgid "Gerar Balao"
|
||||||
|
msgstr "Generate a Balloon"
|
||||||
|
|
||||||
|
#: interface_jogador.lua
|
||||||
|
msgid "Por Balao Aqui"
|
||||||
|
msgstr "Place Balloon here"
|
||||||
|
|
||||||
|
#: ir_balao.lua
|
||||||
|
msgid "Sem nenhum balao ainda"
|
||||||
|
msgstr "No balloon yet"
|
||||||
|
|
||||||
|
#: ir_balao.lua
|
||||||
|
msgid "Seu balao foi destruido"
|
||||||
|
msgstr "Your balloon has been destroyed"
|
||||||
|
|
||||||
|
#: ir_balao.lua
|
||||||
|
msgid "Viagem para o posto de seu balao realizada"
|
||||||
|
msgstr "Trip to the post of your balloon was held"
|
||||||
|
|
||||||
|
#: reivindicar.lua
|
||||||
|
msgid "Balao reivindicado com sucesso"
|
||||||
|
msgstr "Balloon successfully claimed"
|
||||||
|
|
||||||
|
#: reparar_balao.lua
|
||||||
|
msgid "O caminho para cima esta obstruido (corda) portanto abra mais o local"
|
||||||
|
msgstr "The way up is obstructed (rope) so open the place further"
|
||||||
|
|
||||||
|
#: reparar_balao.lua
|
||||||
|
msgid ""
|
||||||
|
"Parte de cima obstruida (onde fica o balao) portanto libere o local ou suba"
|
||||||
|
msgstr ""
|
||||||
|
"Top is obstructed (where the balloon is) so wipe the top or go to a highest "
|
||||||
|
"location"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Pedidos recebidos"
|
||||||
|
msgstr "Requests received"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Voltar"
|
||||||
|
msgstr "Return"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Enviar pedido"
|
||||||
|
msgstr "Send request"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Nao podes seguir a si mesmo"
|
||||||
|
msgstr "You can not follow yourself"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 offline ou inexistente"
|
||||||
|
msgstr "@1 offline or nonexistent"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Pedido enviado a @1 ... Agora precisa pedir para aceitar seu pedido"
|
||||||
|
msgstr ""
|
||||||
|
"Request sent to @1 ... Now you need to advise him to accept your request"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Pedido invalido"
|
||||||
|
msgstr "Invalid request"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 offline"
|
||||||
|
msgstr "@1 offline"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 saiu de perto do balao do centro"
|
||||||
|
msgstr "@1 left close to the center balloon"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Seu pedido para seguir @1 foi aceito mas voce se afastou do balao"
|
||||||
|
msgstr ""
|
||||||
|
"Your request to follow @1 was accepted but you walked away from the balloon"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 te seguiu"
|
||||||
|
msgstr "@1 followed you"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Voce seguiu @1"
|
||||||
|
msgstr "You followed @1"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid ""
|
||||||
|
"Nao pode gerar um novo balao ainda (sao necessarias 24 horas desde a ultima "
|
||||||
|
"vez que gerou)"
|
||||||
|
msgstr ""
|
||||||
|
"It can not generate a new balloon yet (it is necessary 24 hours since the "
|
||||||
|
"last time it generated)"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Aguarde alguns segundos enquanto o balao esta endo preparado"
|
||||||
|
msgstr "Wait a few seconds while the balloon is being prepared"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "O Seu Balao ficou inoperante"
|
||||||
|
msgstr "Your Balloon was inoperative"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Muito distante do Bau de Balao do Centro"
|
||||||
|
msgstr "Far away from the Balloon Box of Spawn Center."
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Muito distante do seu proprio Bau de Balao"
|
||||||
|
msgstr "Far away from the your Balloon Box"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid ""
|
||||||
|
"Mantenha o local limpo e aberto para levantar que o balao seja levantado "
|
||||||
|
"automaticamente"
|
||||||
|
msgstr ""
|
||||||
|
"Keep the place clean and open to raise the balloon to be lifted automatically"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Viagem para seu proprio balao realizada"
|
||||||
|
msgstr "Travel to your own balloon held"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Precisa subir para um local mais alto"
|
||||||
|
msgstr "You need to climb to a higher location"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Precisa estar num lugar mais aberto"
|
||||||
|
msgstr "You need to be in a cleaner and more open place"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Objetos obstruem a parte de cima portanto libere o local ou suba"
|
||||||
|
msgstr "Objects obstruct the top so remove the objects and try again"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Objetos obstruem a parte de cima portanto remova os objetos e tente "
|
||||||
|
#~ "novamente"
|
||||||
|
#~ msgstr "Objects obstruct the top so remove the objects and try again"
|
||||||
|
|
||||||
|
#~ msgid "Precisa estar em local aberto"
|
||||||
|
#~ msgstr "It needs to be in a clean and open place"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Nao pode gerar um novo balao ainda. (sao necessarias 24 horas desde a "
|
||||||
|
#~ "ultima vez que gerou)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Can not generate a new balloon yet. (it is necessary 24 hours since the "
|
||||||
|
#~ "last time it generated)"
|
|
@ -0,0 +1,269 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2018-07-13 00:49-0300\n"
|
||||||
|
"PO-Revision-Date: 2018-07-13 00:45-0300\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: pt\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 2.0.6\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: balao.lua balao_decor.lua
|
||||||
|
msgid "Balao Decorativo"
|
||||||
|
msgstr "Balao Decorativo"
|
||||||
|
|
||||||
|
#: balao_decor.lua
|
||||||
|
msgid "Node de Balao Decorativo"
|
||||||
|
msgstr "Node de Balao Decorativo"
|
||||||
|
|
||||||
|
#: bau.lua
|
||||||
|
msgid "Bau do Balao"
|
||||||
|
msgstr "Bau do Balao"
|
||||||
|
|
||||||
|
#: bau.lua
|
||||||
|
msgid "Esse Balao nao lhe pertence"
|
||||||
|
msgstr "Esse Balao nao lhe pertence"
|
||||||
|
|
||||||
|
#: bau_spawn.lua
|
||||||
|
msgid "Bau do Balao do Centro"
|
||||||
|
msgstr "Bau do Balao do Centro"
|
||||||
|
|
||||||
|
#: bau_spawn.lua
|
||||||
|
msgid "Novo centro definido"
|
||||||
|
msgstr "Novo centro definido"
|
||||||
|
|
||||||
|
#: bau_spawn.lua
|
||||||
|
msgid "Precisa do privilegio 'server' para colocar esse bau"
|
||||||
|
msgstr "Precisa do privilegio 'server' para colocar esse bau"
|
||||||
|
|
||||||
|
#: corda.lua
|
||||||
|
msgid "Corda de Balao"
|
||||||
|
msgstr "Corda de Balao"
|
||||||
|
|
||||||
|
#: gerar_balao_aleatorio.lua
|
||||||
|
msgid "Novo local encontrado"
|
||||||
|
msgstr "Novo local encontrado"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Muito distante do seu Bau de Balao"
|
||||||
|
msgstr "Muito distante do seu Bau de Balao"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Ir para Centro"
|
||||||
|
msgstr "Ir para Centro"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Reparar Balao"
|
||||||
|
msgstr "Reparar Balao"
|
||||||
|
|
||||||
|
#: interface_bau.lua visitas.lua
|
||||||
|
msgid "Receber seguidor"
|
||||||
|
msgstr "Receber seguidor"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Ir para seu Balao"
|
||||||
|
msgstr "Ir para seu Balao"
|
||||||
|
|
||||||
|
#: interface_bau.lua visitas.lua
|
||||||
|
msgid "Seguir jogador"
|
||||||
|
msgstr "Seguir jogador"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Precisas ter um balao ativo"
|
||||||
|
msgstr "Precisas ter um balao ativo"
|
||||||
|
|
||||||
|
#: interface_bau.lua mensagens.lua
|
||||||
|
msgid "Viagem ao Centro realizada"
|
||||||
|
msgstr "Viagem ao Centro realizada"
|
||||||
|
|
||||||
|
#: interface_bau.lua
|
||||||
|
msgid "Balao ativo"
|
||||||
|
msgstr "Balao ativo"
|
||||||
|
|
||||||
|
#: interface_jogador.lua
|
||||||
|
msgid "Gerar Balao"
|
||||||
|
msgstr "Gerar Balao"
|
||||||
|
|
||||||
|
#: interface_jogador.lua
|
||||||
|
msgid "Por Balao Aqui"
|
||||||
|
msgstr "Por Balao Aqui"
|
||||||
|
|
||||||
|
#: ir_balao.lua
|
||||||
|
msgid "Sem nenhum balao ainda"
|
||||||
|
msgstr "Sem nenhum balao ainda"
|
||||||
|
|
||||||
|
#: ir_balao.lua
|
||||||
|
msgid "Seu balao foi destruido"
|
||||||
|
msgstr "Seu balao foi destruido"
|
||||||
|
|
||||||
|
#: ir_balao.lua
|
||||||
|
msgid "Viagem para o posto de seu balao realizada"
|
||||||
|
msgstr "Viagem para o posto de seu balao realizada"
|
||||||
|
|
||||||
|
#: reivindicar.lua
|
||||||
|
msgid "Balao reivindicado com sucesso"
|
||||||
|
msgstr "Balao reivindicado com sucesso"
|
||||||
|
|
||||||
|
#: reparar_balao.lua
|
||||||
|
msgid "O caminho para cima esta obstruido (corda) portanto abra mais o local"
|
||||||
|
msgstr "O caminho para cima esta obstruido (corda) portanto abra mais o local"
|
||||||
|
|
||||||
|
#: reparar_balao.lua
|
||||||
|
msgid ""
|
||||||
|
"Parte de cima obstruida (onde fica o balao) portanto libere o local ou suba"
|
||||||
|
msgstr ""
|
||||||
|
"Parte de cima obstruida (onde fica o balao) portanto libere o local ou suba"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Pedidos recebidos"
|
||||||
|
msgstr "Pedidos recebidos"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Voltar"
|
||||||
|
msgstr "Voltar"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Enviar pedido"
|
||||||
|
msgstr "Enviar pedido"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Nao podes seguir a si mesmo"
|
||||||
|
msgstr "Nao podes seguir a si mesmo"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 offline ou inexistente"
|
||||||
|
msgstr "@1 offline ou inexistente"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Pedido enviado a @1 ... Agora precisa pedir para aceitar seu pedido"
|
||||||
|
msgstr "Pedido enviado a @1 ... Agora precisa pedir para aceitar seu pedido"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Pedido invalido"
|
||||||
|
msgstr "Pedido invalido"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 offline"
|
||||||
|
msgstr "@1 offline"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 saiu de perto do balao do centro"
|
||||||
|
msgstr "@1 saiu de perto do balao do centro"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Seu pedido para seguir @1 foi aceito mas voce se afastou do balao"
|
||||||
|
msgstr "Seu pedido para seguir @1 foi aceito mas voce se afastou do balao"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "@1 te seguiu"
|
||||||
|
msgstr "@1 te seguiu"
|
||||||
|
|
||||||
|
#: visitas.lua
|
||||||
|
msgid "Voce seguiu @1"
|
||||||
|
msgstr "Voce seguiu @1"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid ""
|
||||||
|
"Nao pode gerar um novo balao ainda (sao necessarias 24 horas desde a ultima "
|
||||||
|
"vez que gerou)"
|
||||||
|
msgstr ""
|
||||||
|
"Nao pode gerar um novo balao ainda (sao necessarias 24 horas desde a ultima "
|
||||||
|
"vez que gerou)"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Aguarde alguns segundos enquanto o balao esta endo preparado"
|
||||||
|
msgstr "Aguarde alguns segundos enquanto o balao esta endo preparado"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "O Seu Balao ficou inoperante"
|
||||||
|
msgstr "O Seu Balao ficou inoperante"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Muito distante do Bau de Balao do Centro"
|
||||||
|
msgstr "Muito distante do Bau de Balao do Centro"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Muito distante do seu proprio Bau de Balao"
|
||||||
|
msgstr "Muito distante do seu proprio Bau de Balao"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid ""
|
||||||
|
"Mantenha o local limpo e aberto para levantar que o balao seja levantado "
|
||||||
|
"automaticamente"
|
||||||
|
msgstr ""
|
||||||
|
"Mantenha o local limpo e aberto para levantar que o balao seja levantado "
|
||||||
|
"automaticamente"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Viagem para seu proprio balao realizada"
|
||||||
|
msgstr "Viagem para seu proprio balao realizada"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Precisa subir para um local mais alto"
|
||||||
|
msgstr "Precisa subir para um local mais alto"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Precisa estar num lugar mais aberto"
|
||||||
|
msgstr "Precisa estar num lugar mais aberto"
|
||||||
|
|
||||||
|
#: mensagens.lua
|
||||||
|
msgid "Objetos obstruem a parte de cima portanto libere o local ou suba"
|
||||||
|
msgstr "Objetos obstruem a parte de cima portanto libere o local ou suba"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Objetos obstruem a parte de cima portanto remova os objetos e tente "
|
||||||
|
#~ "novamente"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Objetos obstruem a parte de cima portanto remova os objetos e tente "
|
||||||
|
#~ "novamente"
|
||||||
|
|
||||||
|
#~ msgid "Precisa estar em local aberto"
|
||||||
|
#~ msgstr "Precisa estar em local aberto"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Nao pode gerar um novo balao ainda. (sao necessarias 24 horas desde a "
|
||||||
|
#~ "ultima vez que gerou)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Nao pode gerar um novo balao ainda. (sao necessarias 24 horas desde a "
|
||||||
|
#~ "ultima vez que gerou)"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "O caminho para cima esta obstruido. Encontre um lugar onde de para o "
|
||||||
|
#~ "balao descer"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "O caminho para cima esta obstruido. Encontre um lugar onde de para o "
|
||||||
|
#~ "balao descer"
|
||||||
|
|
||||||
|
#~ msgid "Parte de cima obstruida. Libere o local ou suba"
|
||||||
|
#~ msgstr "Parte de cima obstruida. Libere o local ou suba"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Balao inoperante. Aguarde mantenha o local limpo e aberto e aguarde ele "
|
||||||
|
#~ "ficar pronto"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Balao inoperante. Aguarde mantenha o local limpo e aberto e aguarde ele "
|
||||||
|
#~ "ficar pronto"
|
||||||
|
|
||||||
|
#~ msgid "O Balao ja esta ativo. Nao precisa reparar"
|
||||||
|
#~ msgstr "O Balao ja esta ativo. Nao precisa reparar"
|
||||||
|
|
||||||
|
#~ msgid "O Seu Balao nao esta funcionando. O local foi destruido ou obstruido"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "O Seu Balao nao esta funcionando. O local foi destruido ou obstruido"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Nao pode colocar um novo balao ainda. (sao necessarias 24 horas desde a "
|
||||||
|
#~ "ultima vez que gerou ou colocou)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Nao pode colocar um novo balao ainda. (sao necessarias 24 horas desde a "
|
||||||
|
#~ "ultima vez que gerou ou colocou)"
|
|
@ -0,0 +1,28 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Evoluir ao cavar um node
|
||||||
|
]]
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||||
|
|
||||||
|
xpro.add_xp(digger:get_player_name(), 30)
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Evoluir ao colocar um node
|
||||||
|
]]
|
||||||
|
|
||||||
|
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
|
||||||
|
|
||||||
|
xpro.rem_xp(placer:get_player_name(), 30)
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ao evoluir ou regradir niveis
|
||||||
|
]]
|
||||||
|
|
||||||
|
|
||||||
|
xpro.register_on_add_xp(function(name, xp_added, lvl_changed)
|
||||||
|
if lvl_changed == true then
|
||||||
|
minetest.chat_send_player(name, "Atingiu Nivel "..xpro.get_player_lvl(name))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
xpro.register_on_rem_xp(function(name, xp_removed, lvl_changed)
|
||||||
|
if lvl_changed == true then
|
||||||
|
minetest.chat_send_player(name, "Regrediu ao Nivel "..xpro.get_player_lvl(name))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Gerenciamento do Ranking
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Pegar ranking
|
||||||
|
xpro.get_rank = function()
|
||||||
|
return xpro.bd.pegar("ranking", "pontos")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Tabela de acesso rapido ao ranking global
|
||||||
|
xpro.ranking = {}
|
||||||
|
|
||||||
|
-- Atualizar ranking
|
||||||
|
xpro.update_rank = function(name)
|
||||||
|
local rank = xpro.get_rank()
|
||||||
|
local pontos = xpro.bd.pegar("jogador_"..name, "xp")
|
||||||
|
local m1 = {name=name,pontos=pontos}
|
||||||
|
local m2 = {}
|
||||||
|
for x=1, 10 do
|
||||||
|
-- Se o objeto atual for o novo colocado
|
||||||
|
if m1.name == name then
|
||||||
|
-- Verifica se fica no lugar
|
||||||
|
if rank[tostring(x)].pontos < m1.pontos then
|
||||||
|
|
||||||
|
--Substitui posicao
|
||||||
|
m2.name = rank[tostring(x)].name
|
||||||
|
m2.pontos = rank[tostring(x)].pontos
|
||||||
|
rank[tostring(x)].name = m1.name
|
||||||
|
rank[tostring(x)].pontos = m1.pontos
|
||||||
|
|
||||||
|
-- Verifica se o que foi tirado é ele mesmo
|
||||||
|
if name == m2.name then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
-- m2 para a ser m1 para a proxima comparacao
|
||||||
|
m1.name = m2.name
|
||||||
|
m1.pontos = m2.pontos
|
||||||
|
|
||||||
|
-- Nao é maior mas é o mesmo jogador
|
||||||
|
elseif m1.name == rank[tostring(x)].name then
|
||||||
|
-- atualiza os pontos e encerra
|
||||||
|
rank[tostring(x)].pontos = m1.pontos
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Se o objeto atual for um recolocado
|
||||||
|
else
|
||||||
|
-- Se for o objeto novo que ja foi colocado
|
||||||
|
if rank[tostring(x)].name == name then
|
||||||
|
rank[tostring(x)].name = m1.name
|
||||||
|
rank[tostring(x)].pontos = m1.pontos
|
||||||
|
break
|
||||||
|
|
||||||
|
-- Se nao for compara normalmente
|
||||||
|
else
|
||||||
|
if rank[tostring(x)].pontos < m1.pontos then
|
||||||
|
-- Substitui posicao
|
||||||
|
m2.name = rank[tostring(x)].name
|
||||||
|
m2.pontos = rank[tostring(x)].pontos
|
||||||
|
rank[tostring(x)].name = m1.name
|
||||||
|
rank[tostring(x)].pontos = m1.pontos
|
||||||
|
|
||||||
|
-- m2 para a ser m1 para a proxima comparacao
|
||||||
|
m1.name = m2.name
|
||||||
|
m1.pontos = m2.pontos
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
xpro.bd.salvar("ranking", "pontos", rank)
|
||||||
|
xpro.ranking = minetest.deserialize(minetest.serialize(rank))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Certifica de que rank existe
|
||||||
|
if xpro.bd.verif("ranking", "pontos") == false then
|
||||||
|
rank = {
|
||||||
|
["1"] = {name="-1-",pontos=0},
|
||||||
|
["2"] = {name="-2-",pontos=0},
|
||||||
|
["3"] = {name="-3-",pontos=0},
|
||||||
|
["4"] = {name="-4-",pontos=0},
|
||||||
|
["5"] = {name="-5-",pontos=0},
|
||||||
|
["6"] = {name="-6-",pontos=0},
|
||||||
|
["7"] = {name="-7-",pontos=0},
|
||||||
|
["8"] = {name="-8-",pontos=0},
|
||||||
|
["9"] = {name="-9-",pontos=0},
|
||||||
|
["10"] = {name="-10-",pontos=0},
|
||||||
|
}
|
||||||
|
xpro.bd.salvar("ranking", "pontos", rank)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Formspec do ranking
|
||||||
|
xpro.ranking_formspec = ""
|
||||||
|
|
||||||
|
local update_formspec = function()
|
||||||
|
|
||||||
|
xpro.ranking_formspec = "size[7,6]"
|
||||||
|
..default.gui_bg
|
||||||
|
..default.gui_bg_img
|
||||||
|
.."label[0.6,0.4;Pontos]"
|
||||||
|
.."label[2.1,0.4;Jogador]"
|
||||||
|
|
||||||
|
-- Monta Ranking
|
||||||
|
local rank = xpro.get_rank()
|
||||||
|
for x=1, 10 do
|
||||||
|
local w = (0.4+(0.5*x))
|
||||||
|
xpro.ranking_formspec = xpro.ranking_formspec .."label[0.6,"..w..";"..rank[tostring(x)].pontos.."]"
|
||||||
|
.."label[2.1,"..w..";"..rank[tostring(x)].name.."]"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
update_formspec()
|
||||||
|
|
||||||
|
xpro.register_on_add_xp(function(name, xp_added)
|
||||||
|
--if xpro.ranking
|
||||||
|
xpro.update_rank(name)
|
||||||
|
update_formspec()
|
||||||
|
end)
|
||||||
|
xpro.register_on_rem_xp(function(name, xp_removed)
|
||||||
|
xpro.update_rank(name)
|
||||||
|
update_formspec(name)
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 97 KiB |
|
@ -0,0 +1,22 @@
|
||||||
|
# Configurações aplicaveis para o menu gráfico
|
||||||
|
|
||||||
|
#Gera automaticamente um balao proprio para jogadores
|
||||||
|
#que ainda nunca geraram
|
||||||
|
#Automatically generates a balloon for players who
|
||||||
|
#have never yet generated it
|
||||||
|
telepro_autogen (Autogerar Balao proprio) bool true
|
||||||
|
|
||||||
|
#Limita a geração de balões proprios em lugares aleatorios do mapa
|
||||||
|
#Limite de 1 a cada 24 horas
|
||||||
|
#Limits the generation of own balloons in random places on the map
|
||||||
|
#Limit of 24 hours for a new generation
|
||||||
|
telepro_daily_limit (Limite diario para gerar) bool true
|
||||||
|
|
||||||
|
#Tempo entre cada vez que o balão do jogador é verificado
|
||||||
|
#Time step which balloon is verified
|
||||||
|
telepro_time_check_balloon (Tempo do iterador de checagem do balao) int 15 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
--[[
|
||||||
|
Mod Xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Inventario sfinv
|
||||||
|
]]
|
||||||
|
|
||||||
|
if sfinv == nil then return end
|
||||||
|
|
||||||
|
local S = xpro.S
|
||||||
|
|
||||||
|
sfinv.register_page("xpro:info", {
|
||||||
|
title = "Nivel",
|
||||||
|
|
||||||
|
get = function(self, player, context)
|
||||||
|
|
||||||
|
local name = player:get_player_name()
|
||||||
|
|
||||||
|
local my_xp = xpro.get_player_xp(name)
|
||||||
|
local my_lvl = xpro.get_player_lvl(name)
|
||||||
|
|
||||||
|
local formspec = "label[0,0;Nivel "..my_lvl.."]"
|
||||||
|
.."label[0,0.5;Pontos: "..my_xp.."]"
|
||||||
|
.."button[4,0;4,1;ranking;Ranking Global]"
|
||||||
|
|
||||||
|
return sfinv.make_formspec(player, context, formspec, true)
|
||||||
|
end,
|
||||||
|
on_player_receive_fields = function(self, player, context, fields)
|
||||||
|
if fields.ranking then
|
||||||
|
minetest.show_formspec(player:get_player_name(), "xpro:ranking", xpro.ranking_formspec)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Atualização do painel ao adicionar ou remover pontos
|
||||||
|
xpro.register_on_add_xp(function(name, xp_added)
|
||||||
|
sfinv.set_player_inventory_formspec(minetest.get_player_by_name(name))
|
||||||
|
end)
|
||||||
|
xpro.register_on_rem_xp(function(name, xp_removed)
|
||||||
|
sfinv.set_player_inventory_formspec(minetest.get_player_by_name(name))
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set me=%~n0
|
||||||
|
|
||||||
|
rem # Uncomment the following line if gettext is not in your PATH.
|
||||||
|
rem # Value must be absolute and end in a backslash.
|
||||||
|
rem set gtprefix=C:\path\to\gettext\bin\
|
||||||
|
|
||||||
|
if "%1" == "" (
|
||||||
|
echo Usage: %me% FILE... 1>&2
|
||||||
|
exit 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set xgettext=%gtprefix%xgettext.exe
|
||||||
|
set msgmerge=%gtprefix%msgmerge.exe
|
||||||
|
|
||||||
|
md locale > nul 2>&1
|
||||||
|
echo Generating template... 1>&2
|
||||||
|
echo %xgettext% --from-code=UTF-8 -kS -kNS:1,2 -k_ -o locale/template.pot %*
|
||||||
|
%xgettext% --from-code=UTF-8 -kS -kNS:1,2 -k_ -o locale/template.pot %*
|
||||||
|
if %ERRORLEVEL% neq 0 goto done
|
||||||
|
|
||||||
|
cd locale
|
||||||
|
|
||||||
|
for %%f in (*.po) do (
|
||||||
|
echo Updating %%f... 1>&2
|
||||||
|
%msgmerge% --update %%f template.pot
|
||||||
|
)
|
||||||
|
|
||||||
|
echo DONE! 1>&2
|
||||||
|
|
||||||
|
:done
|
|
@ -0,0 +1,27 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
me=$(basename "${BASH_SOURCE[0]}");
|
||||||
|
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Usage: $me FILE..." >&2;
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p locale;
|
||||||
|
echo "Generating template..." >&2;
|
||||||
|
xgettext --from-code=UTF-8 \
|
||||||
|
--keyword=S \
|
||||||
|
--keyword=NS:1,2 \
|
||||||
|
--keyword=N_ \
|
||||||
|
--add-comments='Translators:' \
|
||||||
|
--add-location=file \
|
||||||
|
-o locale/template.pot \
|
||||||
|
"$@" \
|
||||||
|
|| exit;
|
||||||
|
|
||||||
|
find locale -name '*.po' -type f | while read -r file; do
|
||||||
|
echo "Updating $file..." >&2;
|
||||||
|
msgmerge --update "$file" locale/template.pot;
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "DONE!" >&2;
|
|
@ -0,0 +1,183 @@
|
||||||
|
--[[
|
||||||
|
Mod xpro para Minetest
|
||||||
|
Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
|
||||||
|
|
||||||
|
Recebeste uma cópia da GNU Lesser General
|
||||||
|
Public License junto com esse software,
|
||||||
|
se não, veja em <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Sistema de tradução
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Modpath
|
||||||
|
local modpath = minetest.get_modpath("xpro")
|
||||||
|
|
||||||
|
-- Tradução intllib
|
||||||
|
xpro.intllib = {}
|
||||||
|
xpro.intllib.S, xpro.intllib.NS = dofile(modpath.."/lib/intllib.lua")
|
||||||
|
|
||||||
|
-- Configura tradutor opicional
|
||||||
|
xpro.S = xpro.intllib.S
|
||||||
|
xpro.NS = xpro.intllib.NS
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Ajustes devido ao bug de tradutor ler apenas traduzir do ingles
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Strings para repassar textos em ingles
|
||||||
|
local pt_to_en = {}
|
||||||
|
|
||||||
|
-- Gera arquivos de tradução xpro.*.tr
|
||||||
|
do
|
||||||
|
local file_to_tb = function(file)
|
||||||
|
local msgid = nil
|
||||||
|
local msgstr = nil
|
||||||
|
local tb = {}
|
||||||
|
for line in io.lines(file) do
|
||||||
|
|
||||||
|
-- Iniciando 'msgid'
|
||||||
|
if string.sub(line, 1, 5) == "msgid" then
|
||||||
|
|
||||||
|
-- Escrever no catalogo a anterior
|
||||||
|
if msgid ~= nil and msgstr ~= nil then
|
||||||
|
if msgid ~= "" then
|
||||||
|
tb[msgid] = msgstr
|
||||||
|
end
|
||||||
|
msgid = nil
|
||||||
|
msgstr = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if line == "msgid \"\"" then
|
||||||
|
msgid = ""
|
||||||
|
else
|
||||||
|
msgid = string.sub(line, 8, (string.len(line)-1))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Continuando 'msgid'
|
||||||
|
elseif string.sub(line, 1, 1) == "\"" and msgstr == nil and msgid ~= nil then
|
||||||
|
msgid = msgid .. string.sub(line, 2, (string.len(line)-1))
|
||||||
|
|
||||||
|
-- Iniciando 'msgstr'
|
||||||
|
elseif string.sub(line, 1, 6) == "msgstr" then
|
||||||
|
|
||||||
|
if line == "msgstr \"\"" then
|
||||||
|
msgstr = ""
|
||||||
|
else
|
||||||
|
msgstr = string.sub(line, 9, (string.len(line)-1))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Continuando 'msgstr'
|
||||||
|
elseif string.sub(line, 1, 1) == "\"" and msgstr ~= nil then
|
||||||
|
msgstr = msgstr .. string.sub(line, 2, (string.len(line)-1))
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Escrever ultima
|
||||||
|
if msgid ~= nil and msgstr ~= nil then
|
||||||
|
if msgid ~= "" then
|
||||||
|
tb[msgid] = msgstr
|
||||||
|
end
|
||||||
|
msgid = nil
|
||||||
|
msgstr = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return tb
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Pegar strings principais en-pt para realizar as trocas
|
||||||
|
pt_to_en = file_to_tb(modpath.."/locale/en.po")
|
||||||
|
|
||||||
|
--minetest.log("error", "pt_to_en = "..dump(pt_to_en))
|
||||||
|
|
||||||
|
local list = minetest.get_dir_list(modpath.."/locale")
|
||||||
|
for _,file in ipairs(list) do
|
||||||
|
|
||||||
|
if string.match(file, "~") == nil then
|
||||||
|
|
||||||
|
-- Traduções ".po"
|
||||||
|
if string.match(file, ".pot") == nil and string.match(file, ".po") then
|
||||||
|
|
||||||
|
local lang_code = string.gsub(file, ".po", "")
|
||||||
|
|
||||||
|
local pt_to_lang = file_to_tb(modpath.."/locale/"..file)
|
||||||
|
|
||||||
|
-- tabela desejada
|
||||||
|
local en_to_lang = {}
|
||||||
|
for pt,en in pairs(pt_to_en) do
|
||||||
|
en_to_lang[en] = pt_to_lang[pt]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Novo arquivo
|
||||||
|
local new_file = "### Arquivo gerado por xpro apartir de "..file.."\n# textdomain: xpro\n"
|
||||||
|
for en,lang in pairs(en_to_lang) do
|
||||||
|
new_file = new_file .. en .. "=" .. lang .. "\n"
|
||||||
|
end
|
||||||
|
local saida = io.open(modpath.."/locale/xpro."..lang_code..".tr", "w")
|
||||||
|
saida:write(new_file)
|
||||||
|
io.close(saida)
|
||||||
|
|
||||||
|
-- Gera arquivo com lang_code nulo para evitar mensagens de erro (bug do minetest)
|
||||||
|
if lang_code == "en" then
|
||||||
|
local saida2 = io.open(modpath.."/locale/xpro..tr", "w")
|
||||||
|
saida2:write(new_file)
|
||||||
|
io.close(saida2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Ajuste para repassar termos em ingles
|
||||||
|
local s
|
||||||
|
if minetest.get_translator ~= nil then
|
||||||
|
s = minetest.get_translator("xpro")
|
||||||
|
else
|
||||||
|
s = xpro.intllib.S
|
||||||
|
end
|
||||||
|
|
||||||
|
xpro.s = function(...)
|
||||||
|
local args = { ... }
|
||||||
|
if pt_to_en[args[1]] ~= nil then
|
||||||
|
return s(pt_to_en[args[1]], unpack(args, 2))
|
||||||
|
end
|
||||||
|
minetest.log("error", "[xpro] String "..dump(args[1]).." nao catalogada")
|
||||||
|
return s(...)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Não troca string caso esteja trabalhando com intllib
|
||||||
|
if minetest.get_modpath("intllib") ~= nil
|
||||||
|
and minetest.get_translator == nil
|
||||||
|
then
|
||||||
|
xpro.s = s
|
||||||
|
end
|
||||||
|
|
||||||
|
xpro.S = function(...)
|
||||||
|
local args = { ... }
|
||||||
|
if type(args[1]) == "table" then
|
||||||
|
local r = {}
|
||||||
|
for n,a in ipairs(args[1]) do
|
||||||
|
if n ~= 1 then -- Não traduz o primeiro
|
||||||
|
table.insert(r, xpro.S(a))
|
||||||
|
else
|
||||||
|
table.insert(r, a)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return xpro.s(unpack(r))
|
||||||
|
|
||||||
|
elseif type(args[1]) == "string" then
|
||||||
|
-- Não traduz caso faltem argumentos (devido strings ilustrativas)
|
||||||
|
return xpro.s(...)
|
||||||
|
|
||||||
|
else
|
||||||
|
return args[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Função que retorna a string inalterada para passar pela checagem
|
||||||
|
xpro.Sfake = function(s) return s end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue