From fefdb62a625e635846635f840cf4023ca2b14cf7 Mon Sep 17 00:00:00 2001 From: Nathaniel Freeman Date: Wed, 13 Oct 2021 14:23:40 +0200 Subject: [PATCH] separando archivos --- bank.lua | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ commands.lua | 82 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 bank.lua create mode 100644 commands.lua diff --git a/bank.lua b/bank.lua new file mode 100644 index 0000000..165f763 --- /dev/null +++ b/bank.lua @@ -0,0 +1,105 @@ + + +-- Copyright (C) 2021 Sandro Del Toro De Ana + +-- This file is part of Emeraldbank Minetest Mod. + +-- Emeraldbank is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. + +-- Emeraldbank is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. + +-- You should have received a copy of the GNU General Public License +-- along with Emeraldbank. If not, see . + + + +local S = core.get_translator(core.get_current_modname()) + +local bankcraft = core.settings:get_bool("emeraldbank.craft") or true + + +function emeraldbank.keep(player, itemstack) + local meta = player:get_meta() + local bankemeralds = meta:get_int("emeraldbank:emerald") -- if nil "get_int()" return 0 Magic! + local name = player:get_player_name() + local itemname = itemstack:get_name() + local itemcount = itemstack:get_count() + if itemname == "mcl_core:emerald" then + itemstack:take_item(itemcount) + meta:set_int("emeraldbank:emerald", bankemeralds+itemcount) + core.chat_send_player(name, S("Emeralds in Bank: @1", bankemeralds+itemcount) ) + return true + end + if itemname == "mcl_core:emeraldblock" then + itemstack:take_item(itemcount*9) + meta:set_int("emeraldbank:emerald", bankemeralds+itemcount*9) + core.chat_send_player(name, S("Emeralds in Bank: @1", bankemeralds+itemcount*9) ) + return true + end + core.chat_send_player(name, S("You need keep emeralds or emeraldblocks in your hand!") ) + return false +end + +function emeraldbank.take(player) + local meta = player:get_meta() + local bankemeralds = meta:get_int("emeraldbank:emerald") + local name = player:get_player_name() + local pos = player:get_pos() + local num = 1 + if bankemeralds >= 1 then + if bankemeralds >= 10 then + num = 10 + end + meta:set_int("emeraldbank:emerald", bankemeralds-num) + core.add_item(pos, "mcl_core:emerald "..num) + core.chat_send_player(name, S("Emeralds in Bank: @1", bankemeralds-num) ) + return true + end + core.chat_send_player(name, S("Not enough Emeralds in your account") ) + return false +end + + +-- register bank node +core.register_node("emeraldbank:bank", { + description = S("Emerald Bank"), + _doc_items_longdesc = S("This block can keep your emeralds."), + is_ground_content = false, + tiles = { + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png^mcl_core_emerald.png" + }, + stack_max = 64, + groups = {pickaxey=1, handy=1, building_block=1, enderman_takable=1}, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 5, + _mcl_hardness = 1, + + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + emeraldbank.keep(clicker, itemstack) + end, + + on_punch = function(pos, node, puncher, pointed_thing) + emeraldbank.take(puncher) + end, +}) + + + +if bankcraft then + core.register_craft({ + output = "emeraldbank:bank", + recipe = { + {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, + {"mcl_core:emerald", "mcl_core:ironblock", "mcl_core:emerald"}, + {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, + } + }) +end diff --git a/commands.lua b/commands.lua new file mode 100644 index 0000000..1d806eb --- /dev/null +++ b/commands.lua @@ -0,0 +1,82 @@ + + +-- Copyright (C) 2021 Sandro Del Toro De Ana + +-- This file is part of Emeraldbank Minetest Mod. + +-- Emeraldbank is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. + +-- Emeraldbank is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. + +-- You should have received a copy of the GNU General Public License +-- along with Emeraldbank. If not, see . + + + + +local S = core.get_translator(core.get_current_modname()) + + +-- user /pay chat command +core.register_chatcommand("pay", { + params = " ", + description = S("Pay money to other player. Transfer your emeralds to another bank account."), + func = function(name, param) + local player1 = core.get_player_by_name(name) + local playername2, stringnum = param:match("([^ ]+) (.+)") + local player2 + local num = tonumber(stringnum) + if playername2 and num then + player2 = core.get_player_by_name(playername2) + end + if player2 and num then + local meta1 = player1:get_meta() + local meta2 = player2:get_meta() + local bankemeralds1 = meta1:get_int("emeraldbank:emerald") + local bankemeralds2 = meta2:get_int("emeraldbank:emerald") + if num > 0 then + if bankemeralds1 >= num then + meta1:set_int("emeraldbank:emerald", bankemeralds1-num) + meta2:set_int("emeraldbank:emerald", bankemeralds2+num) + core.chat_send_player(name, S("Pay Successfully! You have transferred @1 Emeralds. Now you have: @2", num, bankemeralds1-num) ) + core.chat_send_player(playername2, S("Pay Successfully! You've gotten @1 Emeralds. Now you have: @2", num, bankemeralds2+num) ) + else + core.chat_send_player(name, S("Not enough Emeralds in your account") ) + end + else + core.chat_send_player(name, S("Invalid pay") ) + end + return true + end + return false + end +}) + +-- admin chat command +core.register_chatcommand("emeralds", { + params = " ", + description = S("Admin Command! Add player emeralds in bank account, also can use negative numbers"), + privs = {server=true}, + func = function(name, param) + local playername, stringnum = param:match("([^ ]+) (.+)") + local player + local num = tonumber(stringnum) + if playername and num then + player = core.get_player_by_name(playername) + end + if player and num then + local meta = player:get_meta() + local bankemeralds = meta:get_int("emeraldbank:emerald") + meta:set_int("emeraldbank:emerald", bankemeralds+num) + core.chat_send_player(name, S("Emeralds in @1 bank account: @2", playername, bankemeralds+num) ) + return true + end + return false + end +})