~gpcf/misc-patches

[PATCH 3/4] add offer set feature

Details
Message ID
<CAHieSD5sxGQYxKPWceS0nuyEPRogUFfLrBzzSiEyB-DEusJnJQ@mail.gmail.com>
DKIM signature
missing
Download raw message
From: jingkaimori <jingkaimori@gmail.com>

---
 init.lua | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/init.lua b/init.lua
index f97e7bd..fef198c 100644
--- a/init.lua
+++ b/init.lua
@@ -453,7 +453,7 @@ minetest.register_node("smartshop:shop", {
                                ---@param position_of_message table
                                ---@param nodedef table
                                ---@param channel string
-                               ---@param message {type:string}
+                               ---@param message
{type:'get'|'set',offer:{give:string, give_count:number, pay:string,
pay_count:number}[]}
                                action = function(position_of_message,
nodedef, channel, message)

                                        local meta =
minetest.get_meta(position_of_message)
@@ -461,8 +461,8 @@ minetest.register_node("smartshop:shop", {
                                        if setchan ~= channel then return end

                                        if type(message) == 'table'
and type(message.type) =='string' then
+                                               local inventory =
meta:get_inventory();
                                                if message.type == 'get' then
-                                                       local
inventory = meta:get_inventory();
                                                        local mainlist
= inventory:get_list('main')
                                                        local sendmessage = {
                                                                offer
= smartshop.get_offer(position_of_message),
@@ -473,7 +473,25 @@ minetest.register_node("smartshop:shop", {
                                                        end

minetest.chat_send_all( minetest.pos_to_string(position_of_message))

digiline:receptor_send(position_of_message, digiline.rules.default,
setchan, sendmessage)
-                                               elseif message.type ==
'set' then
+                                               elseif message.type ==
'set' and message.offer then
+                                                       for i = 1, 4, 1 do
+                                                               local
current_offer = message.offer[i]
+                                                               if
type(current_offer)=='table' and current_offer.give and
current_offer.pay then
+
 local give_item = ItemStack(current_offer.give);
+
 local pay_item = ItemStack(current_offer.pay);
+
 print(give_item:get_name())
+
 if minetest.registered_items[give_item:get_name()] and
minetest.registered_items[pay_item:get_name()]  then
+
         if type(current_offer.give_count) == "number"  then
+

give_item:set_count(math.floor(current_offer.give_count))
+
         end
+
         inventory:set_stack('give'..i, 1, give_item)
+
         if type(current_offer.pay_count) == "number"  then
+

pay_item:set_count(math.floor(current_offer.pay_count))
+
         end
+
         inventory:set_stack('pay'..i, 1, pay_item)
+                                                                       end
+                                                               end
+                                                       end
                                                end
                                        end

--
2.33.1.windows.1
Reply to thread Export thread (mbox)