Lançamento

master
BrunoMine 2017-06-17 22:27:41 -03:00
parent 8d7a29763a
commit f99399f92d
27 changed files with 974 additions and 1 deletions

View File

@ -1 +1,54 @@
macromoney
# Macromoney v1.0.0
[![Baixar](https://img.shields.io/badge/Baixar-v1.0.0-green.svg)](https://github.com/BrunoMine/macromoney/archive/v1.0.0.zip)
[![Projeto](https://img.shields.io/badge/Git-Projeto-green.svg)](https://github.com/BrunoMine/macromoney)
[![!Bower](https://img.shields.io/badge/Bower-Projeto-green.svg)](https://minetest-bower.herokuapp.com/mods/macromoney)
[![Licença](https://img.shields.io/badge/Licença-LGPL_v3.0-blue.svg)](https://github.com/BrunoMine/macromoney/blob/master/LICENSE)
## Descrição
Cria sistema contas de dinheiro e medalhas
* Sistema dinheiro
* Sistema de medalhas
* Vinculação de contas no fórum
## Recursos do projeto
* [Baixar](https://github.com/BrunoMine/macromoney/archive/v1.0.0.zip)
* [Projeto](https://github.com/BrunoMine/macromoney)
* [Bower](https://minetest-bower.herokuapp.com/mods/macromoney)
## Requisitos
* Minetest 0.4.15 ou superior
* Mod default
* Mod dye
## Comandos
* `/forum <NickForum>` : Vincula a conta ao nick de um forum
* `/macomoney <operação>` : Manipula contas
## Banco de dados
Todos os dados do mod ficam salvos na pasta `macromoney` na pasta do mundo
## Privilégios
* `macromoney` : Administrador de contas
## Licença
Veja LICENSE.txt para informações detalhadas da licença LGPL 3.0
### Autores do código fonte
Originalmente por kotolegokot, (GPL v2)
Modificado por BrunoMine, Bruno Borges <borgesdossantosbruno@gmail.com> (LGPL 3.0)
### Autores de mídias (texturas, modelos and sons)
Todos que não estao listados aqui:
BrunoMine, Bruno Borges <borgesdossantosbruno@gmail.com> (CC BY-SA 3.0)
Desconhecido (C00)
macromoney_erro.ogg
macromoney_maquina_shop.ogg

225
banco_de_dados.lua Normal file
View File

@ -0,0 +1,225 @@
--[[
Mod Macromoney para Minetest
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/>.
Banco de Dados
]]
-- Variavel de metodos
macromoney = {}
-- Variavel de Contas
local contas = {}
-- Diretorio do banco de dados
local pathbd = minetest.get_worldpath() .. "/macromoney"
-- Cria o diretorio caso nao exista ainda
local function mkdir(pathbd)
if minetest.mkdir then
minetest.mkdir(pathbd)
else
os.execute('mkdir "' .. pathbd .. '"')
end
end
mkdir(pathbd)
-- Carregar uma conta na memoria
local carregar_conta = function(name)
local input = io.open(pathbd .. "/conta_de_"..name, "r")
if input then
contas[name] = minetest.deserialize(input:read("*l"))
io.close(input)
return true
else
return false
end
end
-- Remover uma conta da memoria
local descarregar_conta = function(name)
contas[name] = nil
end
-- Salvar uma conta
local salvar_conta = function(name)
if not contas[name] then return false end
local output = io.open(pathbd .. "/conta_de_"..name, "w")
output:write(minetest.serialize(contas[name]))
io.close(output)
return true
end
-- Forçar carregamento temporario
local carregar_temporario = function(name)
minetest.after(TEMPO_CARREGAMENTO_TEMPORARIO, descarregar_conta, name)
return carregar_conta(name)
end
--
-----
--------
-- Metodos globais
--
-- Definir valores na conta
function macromoney.definir(name, tipo_v, valor)
if not contas[name] then
if carregar_temporario(name) == false then
return false
end
end
if not tipo_v or not valor then return false end
if tipo_v == "macros" then -- Macros
if tonumber(valor) then
contas[name].macros = tonumber(valor)
return salvar_conta(name)
end
elseif tipo_v == "medalhas" then -- Medalhas
if tonumber(valor) then
contas[name].medalhas = tonumber(valor)
return salvar_conta(name)
end
elseif tipo_v == "forum" then -- Nick no forum
if tostring(valor) then
contas[name].forum = tostring(valor)
return salvar_conta(name)
end
else
return false
end
end
-- Somar valores na conta
function macromoney.somar(name, tipo_v, valor)
if not contas[name] then
if carregar_temporario(name) == false then
return false
end
end
if not tipo_v or not valor then return false end
if tipo_v == "macros" then -- Macros
if tonumber(valor) then
contas[name].macros = contas[name].macros + tonumber(valor)
return salvar_conta(name)
end
elseif tipo_v == "medalhas" then -- Medalhas
if tonumber(valor) then
contas[name].medalhas = contas[name].medalhas + tonumber(valor)
return salvar_conta(name)
end
else
return false
end
end
-- Subtrair valores na conta
function macromoney.subtrair(name, tipo_v, valor, confisco)
if not contas[name] then
if carregar_temporario(name) == false then
return false
end
end
if not tipo_v or not valor then return false end
if tipo_v == "macros" then -- Macros
if contas[name].macros < tonumber(valor) then
if confisco then
contas[name].macros = 0
else
return false
end
else
contas[name].macros = contas[name].macros - tonumber(valor)
end
return salvar_conta(name)
elseif tipo_v == "medalhas" then -- Medalhas
if tonumber(valor) then
if contas[name].macros < tonumber(valor) then
if confisco then
contas[name].medalhas = 0
else
return false
end
else
contas[name].medalhas = contas[name].medalhas - tonumber(valor)
end
return salvar_conta(name)
end
else
return false
end
end
-- Consultar valores de conta
function macromoney.consultar(name, tipo_v)
if not contas[name] then
if carregar_temporario(name) == false then
return false
end
end
if not tipo_v then return false end
if tipo_v == "macros" then -- Macros
return contas[name].macros
elseif tipo_v == "medalhas" then
return contas[name].medalhas
elseif tipo_v == "forum" then
return contas[name].forum
else
return false
end
end
-- Verificar se uma conta existe
function macromoney.existe(name)
local input = io.open(pathbd .. "/conta_de_"..name, "r")
if input then
return true
else
return false
end
end
--
-- Fim dos metodos globais
--------
-----
--
-- Registrar novos jogadores
minetest.register_on_newplayer(function(player)
local name = player:get_player_name()
contas[name] = {
macros = 0,
medalhas = 0,
forum = ""
}
salvar_conta(name)
end)
-- Carregar dados quando o jogador conecta no servidor
minetest.register_on_joinplayer(function(player)
if macromoney.existe(player:get_player_name()) then
carregar_conta(player:get_player_name())
else
contas[player:get_player_name()] = {
macros = 0,
medalhas = 0,
forum = ""
}
salvar_conta(player:get_player_name())
end
end)
-- Remover dados da memoria quando o jogador desconecta do servidor
minetest.register_on_leaveplayer(function(player)
descarregar_conta(player:get_player_name())
end)

85
caixa_de_banco.lua Normal file
View File

@ -0,0 +1,85 @@
--[[
Mod Macromoney para Minetest
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/>.
Nodes
]]
-- Caixa de Banco
minetest.register_node("macromoney:caixa_de_banco", {
description = "Caixa de Banco (Depositos e Saques)",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
light_source = 3,
sunlight_propagates = true,
light_source = LIGHT_MAX,
tiles = {
"default_wood.png", -- Cima
"default_wood.png", -- Baixo
"default_wood.png", -- Lado direito
"default_wood.png", -- Lado esquerda
"default_wood.png", -- Fundo
"macromoney_caixa_frente.png" -- Frente
},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}, -- NodeBox1
{-0.5, -0.5, -0.5, -0.3125, 0.5, 0.5}, -- NodeBox2
{-0.5, 0.3125, -0.5, 0.5, 0.5, 0.5}, -- NodeBox3
{0.3125, -0.5, -0.5, 0.5, 0.5, 0.5}, -- NodeBox4
{-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, -- NodeBox5
{-0.0625, -0.25, -0.375, 0.25, 0, 0.125}, -- NodeBox6
},
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
drop = "",
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local formspec = "size[8,5.5;]"
..default.gui_bg
..default.gui_bg_img
.."label[0.256,0;Voce pode Depositar ou Sacar 100 Macros]"
.."button[1,0.5;2,1;sacar;Sacar]"
.."button[5,0.5;2,1;depositar;Depositar]"
.."list[current_player;main;0,1.5;8,4;]"
minetest.show_formspec(player:get_player_name(), "macromoney:caixa_de_banco", formspec)
end,
})
-- Receber campos
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "macromoney:caixa_de_banco" then
if fields.sacar then
local player_name = player:get_player_name()
local player_inv = player:get_inventory()
if not player_inv:room_for_item("main", "macromoney:macro 100") then
minetest.chat_send_player(player_name, "Inventario Lotado")
return true
elseif macromoney.subtrair(player_name, "macros", 100) == false then
minetest.chat_send_player(player_name, "Voce nao tem Macros suficientes na conta.")
return true
end
player_inv:add_item("main", "macromoney:macro 100")
elseif fields.depositar then
local player_name = player:get_player_name()
local player_inv = player:get_inventory()
if not player_inv:contains_item("main", "macromoney:macro 100") then
minetest.chat_send_player(player_name, "Macros insuficientes para Depositar (tenha ao menos 100 Macros)")
return true
end
macromoney.somar(player_name, "macros", 100)
player_inv:remove_item("main", "macromoney:macro 100")
end
end
end)

124
cofre.lua Normal file
View File

@ -0,0 +1,124 @@
--[[
Mod Macromoney para Minetest
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/>.
Cofre
]]
function default.get_safe_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec =
"size[8,9]"..
"list[nodemeta:".. spos .. ";main;1,1;6,2;]"..
"list[current_player;main;0,5;8,4;]"
return formspec
end
local function has_safe_privilege(meta, player)
if player:get_player_name() ~= meta:get_string("owner") then
return false
end
return true
end
minetest.register_node("macromoney:cofre", {
description = "Cofre",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"safe_side.png",
"macromoney_cofre_side.png",
"macromoney_cofre_side.png",
"macromoney_cofre_side.png",
"macromoney_cofre_side.png",
"macromoney_cofre_front.png",},
is_ground_content = false,
groups = {cracky=1},
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Cofre (Trancado por "..
meta:get_string("owner")..")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", "Cofre")
meta:set_string("owner", "")
local inv = meta:get_inventory()
inv:set_size("main", 6*2)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main") and has_safe_privilege(meta, player)
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_safe_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tentou acessar um cofre pertencente a "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_safe_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tentou acessar um cofre pertencente a "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_safe_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tentou acessar um cofre pertencente a "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moveu algo no cofre em "..minetest.pos_to_string(pos))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moveu algo no cofre em "..minetest.pos_to_string(pos))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moveu algo no cofre em "..minetest.pos_to_string(pos))
end,
on_rightclick = function(pos, node, clicker)
local meta = minetest.get_meta(pos)
if has_safe_privilege(meta, clicker) then
minetest.show_formspec(
clicker:get_player_name(),
"macromoney:cofre",
default.get_safe_formspec(pos)
)
end
end,
})
-- Cofre
minetest.register_craft({
output = 'macromoney:cofre',
recipe = {
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
{'default:steel_ingot', '', 'default:steel_ingot'},
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
}
})

176
comandos.lua Normal file
View File

@ -0,0 +1,176 @@
--[[
Mod Macromoney para Minetest
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/>.
Comandos
]]
minetest.register_privilege("macromoney", "Manipular contas")
-- Definir o nick no forum
minetest.register_chatcommand("forum", {
privs = {},
params = "<nick_no_forum>",
description = "Informa seu nickname no forum da comunidade minetest brasil",
func = function(name, param)
if param then
if macromoney.definir(name, "forum", param) then
minetest.chat_send_player(name, "Obrigado por nos informar sua conta no forum")
else
minetest.chat_send_player(name, "Falha ao registrar nick. (Erro interno. Avise um administrador)")
end
else
minetest.chat_send_player(name, "Nenhuma conta especificada")
end
end
})
-- Registration "macromoney" command.
minetest.register_chatcommand("macromoney", {
privs = {macromoney=true},
params = "[<conta> | tirar/somar/definir <quantia> macros/medalhas <conta>]",
description = "Operar contas",
func = function(name, param)
-- Consultar propria conta
if param == "" then --/macromoney
if macromoney.existe(name) then
minetest.chat_send_player(name, "Sua conta Conta")
minetest.chat_send_player(name, "Macros: " .. macromoney.consultar(name, "macros"))
minetest.chat_send_player(name, "Medalhas: " .. macromoney.consultar(name, "medalhas"))
minetest.chat_send_player(name, "Registro no forum: " .. macromoney.consultar(name, "forum"))
return true
else
minetest.chat_send_player(name, "Sua conta nao existe (Erro interno)")
end
end
local m = string.split(param, " ")
local param1, param2, param3, param4 = m[1], m[2], m[3], m[4]
-- Consultar conta de outro
if param1 and not param2 then --/macromoney <conta>
-- Verificar se existe
if macromoney.existe(param1) then
minetest.chat_send_player(name, "Conta " .. param1)
minetest.chat_send_player(name, "Macros: " .. macromoney.consultar(param1, "macros"))
minetest.chat_send_player(name, "Medalhas: " .. macromoney.consultar(param1, "medalhas"))
minetest.chat_send_player(name, "Registro no forum: " .. macromoney.consultar(param1, "forum"))
else
minetest.chat_send_player(name, "Conta inexistente")
end
return true
end
if param1 and param2 and param3 and param4 then
-- Comando de tirar
if param1 == "tirar" then
if macromoney.existe(param4) then
if param3 == "macros" then -- Tirar macros
if tonumber(param2) then
if macromoney.subtrair(param4, param3, param2) then
minetest.chat_send_player(name, "Macros tiradas com sucesso.")
else
minetest.chat_send_player(name, "O jogador nao tem macros suficientes para tirar tudo isso.")
end
else
minetest.chat_send_player(name, "Voce tem que digitar um valor numerico")
end
elseif param3 == "medalhas" then -- Tirar medalhas
if tonumber(param2) then
if macromoney.subtrair(param4, param3, param2) then
minetest.chat_send_player(name, "Medalhas tiradas com sucesso.")
else
minetest.chat_send_player(name, "O jogador nao tem medalhas suficientes para tirar tudo isso.")
end
else
minetest.chat_send_player(name, "Voce tem que digitar um valor numerico")
end
else
minetest.chat_send_player(name, "Pode tirar apenas macros ou medalhas")
end
else
minetest.chat_send_player(name, "Jogador inexistente")
end
return true
-- Comando de somar
elseif param1 == "somar" then
if macromoney.existe(param4) then
if param3 == "macros" then -- Somar macros
if tonumber(param2) then
if macromoney.somar(param4, param3, param2) then
minetest.chat_send_player(name, "Macros somados com sucesso.")
else
minetest.chat_send_player(name, "Falha ao somar macros. (Erro interno)")
end
else
minetest.chat_send_player(name, "Voce tem que digitar um valor numerico")
end
elseif param3 == "medalhas" then -- Tirar medalhas
if tonumber(param2) then
if macromoney.somar(param4, param3, param2) then
minetest.chat_send_player(name, "Medalhas somados com sucesso.")
else
minetest.chat_send_player(name, "Falha ao somar medalhas. (Erro interno)")
end
else
minetest.chat_send_player(name, "Voce tem que digitar um valor numerico")
end
else
minetest.chat_send_player(name, "Pode tirar apenas macros ou medalhas")
end
else
minetest.chat_send_player(name, "Jogador inexistente")
end
return true
-- Comando de definir
elseif param1 == "definir" then
if macromoney.existe(param4) then
if param3 == "macros" then -- Definir macros
if tonumber(param2) then
if macromoney.definir(param4, param3, param2) then
minetest.chat_send_player(name, "Macros definidos com sucesso.")
else
minetest.chat_send_player(name, "Falha ao definir macros. (Erro interno)")
end
else
minetest.chat_send_player(name, "Voce tem que digitar um valor numerico")
end
elseif param3 == "medalhas" then -- definir medalhas
if tonumber(param2) then
if macromoney.definir(param4, param3, param2) then
minetest.chat_send_player(name, "Medalhas definidas com sucesso.")
else
minetest.chat_send_player(name, "Falha ao definir medalhas. (Erro interno)")
end
else
minetest.chat_send_player(name, "Voce tem que digitar um valor numerico")
end
else
minetest.chat_send_player(name, "Pode tirar apenas macros ou medalhas (veja /help macromoney)")
end
else
minetest.chat_send_player(name, "Jogador inexistente")
end
return true
else
minetest.chat_send_player(name, "Pode apenas tirar, subtrar ou definir (veja /help macromoney)")
end
end
minetest.chat_send_player(name, "Parametros invalidos (veja /help macromoney)")
end,
})

104
contador.lua Normal file
View File

@ -0,0 +1,104 @@
--[[
Mod Macromoney para Minetest
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/>.
Contador de Macros
]]
-- Formulario
local contador_form = "size[8,5]"..
"label[0,0;Contador de Macros]"..
"item_image_button[0,1;2,2;macromoney:maleta_de_macros;maleta_de_macros;]"..
"label[2.1,1;Maleta de Macros\nPrecisa de 100 Macros]"..
"item_image_button[0,3;2,2;macromoney:pacote_pagamento;pacote_de_pagamento;]"..
"label[2.1,3;Pacote de Pagamento\nPrecisa de 10 Macros]"
-- Contador de Macros
minetest.register_node("macromoney:contador_de_macros", {
description = "Contador de Macros",
tiles = {
"macromoney_contador_de_macros_cima.png", -- Cima
"macromoney_contador_de_macros.png", -- Baixo
"macromoney_contador_de_macros.png", -- Lado Direito
"macromoney_contador_de_macros.png", -- Lado Esquerdo
"macromoney_contador_de_macros.png", -- Fundo
"macromoney_contador_de_macros_frente.png" -- Frente
},
drawtype = "nodebox",
paramtype = "light",
groups = {attached_node=1, oddly_breakable_by_hand=3,flammable=1},
legacy_facedir_simple = true,
is_ground_content = false,
paramtype2 = "facedir",
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.4375, 0.4375, 0.3375, 0.4375}
}
},
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.1875, 0.4375, 0.125, 0.4375}, -- Caixa
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox4
{-0.4375, -0.5, -0.4375, 0.4375, -0.375, -0.375}, -- NodeBox5
{0.375, -0.5, -0.4375, 0.4375, -0.375, 0.4375}, -- NodeBox6
{-0.4375, -0.5, -0.4375, -0.375, -0.375, 0.4375}, -- NodeBox7
{-0.3125, -0.125, -0.25, 0.3125, 0, -0.1875}, -- NodeBox8
{-0.375, -0.375, 0.3125, 0.375, 0.3125, 0.375}, -- NodeBox9
{-0.375, -0.375, 0.1875, 0.375, 0.1875, 0.25}, -- NodeBox10
{-0.375, -0.5, 0.25, -0.3125, 0.1875, 0.3125}, -- NodeBox11
{0.3125, -0.5, 0.25, 0.375, 0.1875, 0.3125}, -- NodeBox12
}
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", contador_form)
meta:set_string("infotext", "Contador de Macros")
end,
on_receive_fields = function(pos, formname, fields, sender)
-- Botao de Maleta de Macros
if fields.maleta_de_macros then
local player_inv = sender:get_inventory()
if not player_inv:room_for_item("main", "macromoney:maleta_de_macros") then
return minetest.chat_send_player(sender:get_player_name(), "[Contador de Macros] Inventario Lotado. Tire alguns itens do seu inventario para poder pegar a Maleta de Macros")
elseif player_inv:contains_item("main", 'macromoney:macro 100') == false then
return minetest.chat_send_player(sender:get_player_name(), "[Contador de Macros] Macros Insuficientes. Tenha ao menos 100 Macros em seu inventario")
else
minetest.chat_send_player(sender:get_player_name(), "[Contador de Macros] Maleta de Macros montada")
player_inv:remove_item("main", 'macromoney:macro 100')
player_inv:add_item("main", "macromoney:maleta_de_macros")
end
end
-- Botao de Pacote de Pagamento
if fields.pacote_de_pagamento then
local player_inv = sender:get_inventory()
if not player_inv:room_for_item("main", "macronodes:pacote_pagamento") then
return minetest.chat_send_player(sender:get_player_name(), "[Contador de Macros] Inventario Lotado. Tire alguns itens do seu inventario para poder pegar o Pacote de Pagamento")
elseif player_inv:contains_item("main", 'macromoney:macro 25') == false then
return minetest.chat_send_player(sender:get_player_name(), "[Contador de Macros] Macros Insuficientes. Tenha ao menos 25 Macros em seu inventario")
else
minetest.chat_send_player(sender:get_player_name(), "[Contador de Macros] Pacote de Pagamento montado")
player_inv:remove_item("main", 'macromoney:macro 25')
player_inv:add_item("main", "macromoney:pacote_pagamento")
end
end
end,
})
minetest.register_craft({
output = 'macromoney:contador_de_macros',
recipe = {
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
{'default:paper', 'default:paper', 'default:paper'},
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
}
})

2
depends.txt Normal file
View File

@ -0,0 +1,2 @@
default
dye

28
diretrizes.lua Normal file
View File

@ -0,0 +1,28 @@
--[[
Mod Macromoney para Minetest
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/>.
Diretrizes
]]
-- Nickname administrativo
ADMIN = "BrunoMine"
-- Link do website
LINK_DO_FORUM = "www.minemacro.tk"
-- Definir o spawn para teleportar o jogador
SPAWNTP = {x = -2666, y = 23, z = -7131}
-- Tempo que dados temporarios ficam na memoria (en segundos)
--[[
Esse dados sao carregados quando uma funcao
exige aqueles dados mesmo o jogador estando
offline
]]
TEMPO_CARREGAMENTO_TEMPORARIO = 300 -- (5 Minutos)

40
init.lua Normal file
View File

@ -0,0 +1,40 @@
--[[
Mod Macromoney para Minetest
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/>.
Inicialização de scripts
]]
dofile(minetest.get_modpath("macromoney") .. "/diretrizes.lua") -- Carregar Diretrizes.
dofile(minetest.get_modpath("macromoney") .. "/banco_de_dados.lua")
dofile(minetest.get_modpath("macromoney") .. "/macro.lua")
dofile(minetest.get_modpath("macromoney") .. "/pacote_pagamento.lua")
dofile(minetest.get_modpath("macromoney") .. "/caixa_de_banco.lua")
dofile(minetest.get_modpath("macromoney") .. "/painel_de_medalhas.lua")
dofile(minetest.get_modpath("macromoney") .. "/contador.lua")
dofile(minetest.get_modpath("macromoney") .. "/comandos.lua")
-- Verificar dono do Bau de Venda
local function has_shop_privilege(meta, player)
return player:get_player_name() == meta:get_string("owner") or minetest.get_player_privs(player:get_player_name())["server"]
end
-- Tira uma medalhas quando morre
minetest.register_on_dieplayer(function(player)
if player then
local name = player:get_player_name()
if macromoney.subtrair(name, "medalhas", 3) then
minetest.chat_send_player(name, "Perdeste 3 medalhas por morrer")
end
else
minetest.log("error", "[macromoney] Dados inacessivel (player) (em register_on_dieplayer)")
end
end)

33
macro.lua Normal file
View File

@ -0,0 +1,33 @@
--[[
Mod Macromoney para Minetest
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/>.
Macros
]]
-- Macro
minetest.register_craftitem("macromoney:macro", {
description = "Macro",
inventory_image = "macromoney_macro.png",
stack_max = 100,
})
-- Maleta de Macros
minetest.register_craftitem("macromoney:maleta_de_macros", {
description = "Maleta de Macros",
inventory_image = "macromoney_maleta_de_macros.png",
stack_max = 5,
})
-- Maleta de Macros
minetest.register_craft({
output = "macromoney:macro 100",
recipe = {
{"macromoney:maleta_de_macros"},
}
})

34
pacote_pagamento.lua Normal file
View File

@ -0,0 +1,34 @@
--[[
Mod Macromoney para Minetest
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/>.
Itens extras
]]
minetest.register_node("macromoney:pacote_pagamento", {
description = "Pacote de Pagamento",
tiles = {
"macromoney_pacote_pagamento_cima.png", -- Cima
"macromoney_pacote_pagamento_lado.png", -- Baixo
"macromoney_pacote_pagamento_lado.png", -- Lado direito
"macromoney_pacote_pagamento_lado.png", -- Lado esquerda
"macromoney_pacote_pagamento_lado.png", -- Fundo
"macromoney_pacote_pagamento_lado.png" -- Frente
},
stack_max = 1,
groups = {oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(),
})
-- Pacote de Pagamento
minetest.register_craft({
output = "macromoney:macro 25",
recipe = {
{"macromoney:pacote_pagamento"},
}
})

69
painel_de_medalhas.lua Normal file
View File

@ -0,0 +1,69 @@
--
-- Mod Macromoney
--
-- Painel de Medalhas
-- Painel de Medalhas
local formspec_medalhas_off = "size[8,3]"..
"bgcolor[#080808BB;true]"..
"background[5,5;1,1;gui_formbg.png;true]"..
"image[0,0;3,3;macromoney_painel_medalhas.png]"..
"label[3,0;Quadro de Medalhas\n\nTroque medalhas por algo\nna Loja de Premios.\nVeja em www.minemacro.tk\n(Apenas contas vinculadas)]"
minetest.register_node("macromoney:painel_medalhas", {
description = "Quadro de Medalhas",
drawtype = "nodebox",
tiles = {"macromoney_painel_medalhas.png"},
inventory_image = "macromoney_painel_medalhas.png",
wield_image = "macromoney_painel_medalhas.png",
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
is_ground_content = false,
walkable = false,
node_box = {
type = "wallmounted",
wall_top = {-0.45, 0.45, -0.45, 0.45, 0.55, 0.45},
wall_bottom = {-0.45, -0.5, -0.45, 0.45, -0.45, 0.45},
wall_side = {-0.5, -0.45, -0.45, -0.45, 0.45, 0.45},
},
groups = {choppy=2,dig_immediate=2,attached_node=1},
legacy_wallmounted = true,
sounds = default.node_sound_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("owner", "")
end,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
end,
on_rightclick = function(pos, node, player)
local meta = minetest.get_meta(pos)
if meta:get_string("owner") == player:get_player_name() then
local name = player:get_player_name()
if macromoney.existe(name) == false then
minetest.show_formspec(name, "", formspec_medalhas_off)
else
minetest.show_formspec(name, "",
"size[8,3]"..
"bgcolor[#080808BB;true]"..
"background[5,5;1,1;gui_formbg.png;true]"..
"image[0,0;3,3;macromoney_painel_medalhas.png]"..
"label[3,0;Seu Quadro de Medalhas\n\nAtualmente possui " .. macromoney.consultar(name, "medalhas") .. "\n\nTroque na Loja de Premios.\nVeja em www.minemacro.tk]"
)
end
else
minetest.chat_send_player(player:get_player_name(), "Esse Quadro de Medalhas pertence a " .. meta:get_string("owner"))
end
end
})
minetest.register_craft({
output = 'macromoney:painel_medalhas',
recipe = {
{'macronodes:pregos', 'default:jungletree', 'macronodes:pregos'},
{'default:gold_ingot', 'dye:dark_green', 'default:gold_ingot'},
{'macronodes:pregos', 'default:jungletree', 'macronodes:pregos'},
}
})

BIN
sounds/macromoney_erro.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB