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 * `xpro.registrar_premio(name, Definições do Prêmio)`: Registra um premio para ser trocado por cash xp * `name` é o nome de exibição do item na lista de prêmios * Definições de Prêmio { item=, -- Item string do item a ser dado ao jogador qtd=, -- Quantidade de itens a ser dado ao jogador custo=, -- Custo da troca em cash xp que o jogador vai ter que pagar } * `xpro.register_on_craft(name, xp)`: Registra um item para alterar xp ao craftar um item * `xpro.register_on_dignode(name, xp)`: Registra um item para alterar xp ao cavar um node * `xpro.register_on_placenode(name, xp)`: Registra um item para alterar xp ao colocar um node - - - 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_ |--aventura_ (ultima tarefa realizada) |--tarefa_ (dados de processamento da tarefa) --livro_de_aventuras (dados do livro de aventuras do jogador)