diff --git a/api.lua b/api.lua index 6fc1091..8ee7e57 100644 --- a/api.lua +++ b/api.lua @@ -119,8 +119,6 @@ function x_marketplace.find_signs(player_pos, text) local sign_text = sign_meta:get_string("text"):trim() if sign_text == text then - print("sign_text", sign_text) - print("text", text) found = true break end diff --git a/chatcommands.lua b/chatcommands.lua index e62d02b..e8323ad 100644 --- a/chatcommands.lua +++ b/chatcommands.lua @@ -80,7 +80,6 @@ minetest.register_chatcommand("mp", { item_count = itemstack:get_stack_max() end - player:set_wielded_item(ItemStack("")) local sell_price = store_item.sell * item_count local new_balance, msg = x_marketplace.set_player_balance(caller, sell_price) @@ -89,6 +88,8 @@ minetest.register_chatcommand("mp", { return false, minetest.colorize(x_marketplace.colors.yellow, "MARKET PLACE: You will go above the maximum balance if you sell this item. Transaction cancelled.") end + player:set_wielded_item(ItemStack("")) + minetest.sound_play("x_marketplace_gold", { object = player, max_hear_distance = 10, @@ -177,7 +178,7 @@ minetest.register_chatcommand("mp", { if leftover_item:get_count() > 0 then local p = table.copy(player:get_pos()) p.y = p.y + 1.2 - local obj = minetest.add_item(p, itemstack) + local obj = minetest.add_item(p, leftover_item) if obj then local dir = player:get_look_dir() @@ -224,8 +225,8 @@ minetest.register_chatcommand("mp", { local inv = player:get_inventory("main") local itemstack = ItemStack(params[2]) local balance = x_marketplace.get_player_balance(caller) - local new_balance = 0 local amount = 0 + local over_max_balance = false for k, v in ipairs(inv:get_list("main")) do if v:get_name() == params[2] then @@ -237,19 +238,26 @@ minetest.register_chatcommand("mp", { amount = amount + amount_to_remove - if balance + amount * store_item.sell > x_marketplace.max_balance then + if (balance + amount * store_item.sell) > x_marketplace.max_balance then amount = amount - amount_to_remove - minetest.chat_send_player(caller, minetest.colorize(x_marketplace.colors.yellow, "MARKET PLACE: We couldn't buy all your items without going above your maximum balance.")) + over_max_balance = true break else - new_balance = balance + amount * store_item.sell inv:remove_item("main", v) end end end local sell_price = amount * store_item.sell - new_balance, msg = x_marketplace.set_player_balance(caller, sell_price) + local new_balance = x_marketplace.set_player_balance(caller, sell_price) + + if amount == 0 then + return false, minetest.chat_send_player(caller, minetest.colorize(x_marketplace.colors.yellow, "MARKET PLACE: We couldn't buy all your items without going above your maximum balance.")) + end + + if over_max_balance then + minetest.chat_send_player(caller, minetest.colorize(x_marketplace.colors.yellow, "MARKET PLACE: We couldn't buy all your items without going above your maximum balance.")) + end minetest.sound_play("x_marketplace_gold", { object = player, @@ -257,7 +265,7 @@ minetest.register_chatcommand("mp", { gain = 1.0 }) - return true, minetest.colorize(x_marketplace.colors.green, "MARKET PLACE: You sold "..amount.." item(s) of "..params[2].." for "..sell_price.." BitGold. Your new balance is: "..new_balance.." BitGold") + return true, minetest.colorize(x_marketplace.colors.green, "MARKET PLACE: You sold "..amount.." item(s) of "..params[2].." for "..sell_price.." BitGold. Your new balance is: "..x_marketplace.get_player_balance(caller).." BitGold") else -- item does not exists in the store return false, minetest.colorize(x_marketplace.colors.red, "MARKET PLACE: You cannot sell this item. Search in store for items you can sell, example: /mp find stone. See some suggestion from the store: ")..x_marketplace.store_get_random() @@ -392,7 +400,7 @@ minetest.register_chatcommand("mp", { if leftover_item:get_count() > 0 then local p = table.copy(player:get_pos()) p.y = p.y + 1.2 - local obj = minetest.add_item(p, itemstack) + local obj = minetest.add_item(p, leftover_item) if obj then local dir = player:get_look_dir()