Updated form, fixed bugs, added more error/status messages.
parent
d126bd17a4
commit
15a2cdfa53
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
--vendor 1.00
|
--vendor 1.01
|
||||||
--Copyright (C) 2012 Bad_Command
|
--Copyright (C) 2012 Bad_Command
|
||||||
--
|
--
|
||||||
--This library is free software; you can redistribute it and/or
|
--This library is free software; you can redistribute it and/or
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
vendor = {}
|
vendor = {}
|
||||||
vendor.version = 1.00
|
vendor.version = 1.01
|
||||||
|
|
||||||
dofile(minetest.get_modpath("vendor") .. "/vendor.lua")
|
dofile(minetest.get_modpath("vendor") .. "/vendor.lua")
|
||||||
|
|
||||||
|
|
|
@ -26,28 +26,41 @@ vendor.traversable_node_types = {
|
||||||
|
|
||||||
vendor.formspec = function(pos, player)
|
vendor.formspec = function(pos, player)
|
||||||
local meta = minetest.env:get_meta(pos)
|
local meta = minetest.env:get_meta(pos)
|
||||||
local description = minetest.registered_nodes[minetest.env:get_node(pos).name].description;
|
local meta = minetest.env:get_meta(pos)
|
||||||
|
local node = minetest.env:get_node(pos)
|
||||||
|
local description = minetest.registered_nodes[node.name].description;
|
||||||
|
local buysell = "sell"
|
||||||
|
if ( node.name == "vendor:depositor" ) then
|
||||||
|
buysell = "buy"
|
||||||
|
end
|
||||||
|
|
||||||
local number = meta:get_int("number")
|
local number = meta:get_int("number")
|
||||||
local cost = meta:get_int("cost")
|
local cost = meta:get_int("cost")
|
||||||
local limit = meta:get_int("limit")
|
local limit = meta:get_int("limit")
|
||||||
local formspec = "size[8,7;]"
|
local formspec = "size[9,7;]"
|
||||||
.."label[0,0;" .. description .. "]"
|
.."label[0,0;Configure " .. description .. "]"
|
||||||
.."field[2,1.5;2,1;number;Number;" .. number .. "]"
|
.."field[2,1.5;2,1;number;Count:;" .. number .. "]"
|
||||||
.."label[4,1.0;quantity per batch]"
|
.."label[4,1.25;How many to bundle together]"
|
||||||
.."field[2,3.0;2,1;cost;Cost;" .. cost .. "]"
|
.."field[2,3.0;2,1;cost;Price:;" .. cost .. "]"
|
||||||
.."label[4,2.5;cost per batch]"
|
.."label[4,2.75;Price of a bundle]"
|
||||||
.."field[2,4.5;2,1;limit;Limit;" .. limit .. "]"
|
.."field[2,4.5;2,1;limit;Sale Limit:;" .. limit .. "]"
|
||||||
.."label[4,4.0;sale limit]"
|
.."label[4,4.15;Number of bundles to "..buysell.."]"
|
||||||
.."button[1,6;3,0.5;save;Save]"
|
.."label[4,4.45; (0 for no limit)]"
|
||||||
.."button_exit[4.5,6;3,0.5;close;Save & Close]"
|
.."button[1.5,6;3,0.5;save;Save]"
|
||||||
|
.."button_exit[4.5.5,6;3,0.5;close;Save & Close]"
|
||||||
return formspec
|
return formspec
|
||||||
end
|
end
|
||||||
|
|
||||||
vendor.after_place_node = function(pos, placer)
|
vendor.after_place_node = function(pos, placer)
|
||||||
local meta = minetest.env:get_meta(pos)
|
local meta = minetest.env:get_meta(pos)
|
||||||
meta:set_string("formspec", vendor.formspec(pos, placer))
|
meta:set_string("itemtype", "")
|
||||||
|
meta:set_int("number", 0)
|
||||||
|
meta:set_int("cost", 0)
|
||||||
|
meta:set_int("limit", 0)
|
||||||
meta:set_string("owner", placer:get_player_name() or "")
|
meta:set_string("owner", placer:get_player_name() or "")
|
||||||
vendor.disable(pos, "New Machine")
|
meta:set_string("formspec", vendor.formspec(pos, placer))
|
||||||
|
local description = minetest.registered_nodes[minetest.env:get_node(pos).name].description;
|
||||||
|
vendor.disable(pos, "New " .. description)
|
||||||
end
|
end
|
||||||
|
|
||||||
vendor.can_dig = function(pos,player)
|
vendor.can_dig = function(pos,player)
|
||||||
|
@ -61,10 +74,12 @@ vendor.can_dig = function(pos,player)
|
||||||
end
|
end
|
||||||
|
|
||||||
vendor.on_receive_fields = function(pos, formname, fields, sender)
|
vendor.on_receive_fields = function(pos, formname, fields, sender)
|
||||||
local description = minetest.registered_nodes[minetest.env:get_node(pos).name].description;
|
local node = minetest.env:get_node(pos)
|
||||||
|
local description = minetest.registered_nodes[node.name].description;
|
||||||
local meta = minetest.env:get_meta(pos)
|
local meta = minetest.env:get_meta(pos)
|
||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
if sender:get_player_name() ~= owner then
|
if sender:get_player_name() ~= owner then
|
||||||
|
minetest.chat_send_player(sender:get_player_name(), "vendor: Cannot configure machine. The " .. description .. " belongs to " .. owner ..".")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -72,22 +87,26 @@ vendor.on_receive_fields = function(pos, formname, fields, sender)
|
||||||
local cost = tonumber(fields.cost)
|
local cost = tonumber(fields.cost)
|
||||||
local limit = tonumber(fields.limit)
|
local limit = tonumber(fields.limit)
|
||||||
|
|
||||||
if ( number < 1 or number > 99) then
|
if ( number == nil or number < 1 or number > 99) then
|
||||||
vendor.disable(pos, "Number is invalid")
|
minetest.chat_send_player(owner, "vendor: Invalid count. You must enter a count between 1 and 99.")
|
||||||
|
vendor.disable(pos, "Misconfigured")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if ( cost < 0 ) then
|
if ( cost == nil or cost < 0 ) then
|
||||||
vendor.disable(pos, "Cost is invalid")
|
minetest.chat_send_player(owner, "vendor: Invalid price. You must enter a positive number for the price.")
|
||||||
|
vendor.disable(pos, "Misconfigured")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if ( limit < 0 ) then
|
if ( limit == nil or limit < 0 ) then
|
||||||
vendor.disable(pos, "Limit is invalid")
|
minetest.chat_send_player(owner, "vendor: Invalid sales limit. You must enter a positive number (or zero) for the limit.")
|
||||||
|
vendor.disable(pos, "Misconfigured")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local inv = vendor.find_connected_chest_inv(owner, pos, nil, nil, nil)
|
local inv = vendor.find_connected_chest_inv(owner, pos, nil, nil, nil)
|
||||||
|
|
||||||
if ( inv == nil ) then
|
if ( inv == nil ) then
|
||||||
|
minetest.chat_send_player(owner, "vendor: Inventory is misconfigured. It must be connected in a line to a locked chest that has items to sell")
|
||||||
vendor.disable(pos, "No Inventory/Improper Attachments")
|
vendor.disable(pos, "No Inventory/Improper Attachments")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -107,7 +126,12 @@ vendor.on_receive_fields = function(pos, formname, fields, sender)
|
||||||
meta:set_int("limit", limit)
|
meta:set_int("limit", limit)
|
||||||
meta:set_int("enabled", 1)
|
meta:set_int("enabled", 1)
|
||||||
meta:set_string("formspec", vendor.formspec(pos, sender))
|
meta:set_string("formspec", vendor.formspec(pos, sender))
|
||||||
minetest.chat_send_player(owner, "vendor: " .. description .. " is active!")
|
|
||||||
|
local buysell = "selling"
|
||||||
|
if ( node.name == "vendor:depositor" ) then
|
||||||
|
buysell = "buying"
|
||||||
|
end
|
||||||
|
minetest.chat_send_player(owner, "vendor: " .. description .. " is now " .. buysell .. " " .. number .. " " .. vendor.get_item_desc(itemname) .. " for " .. cost .. money.currency_name)
|
||||||
vendor.sound_activate(pos)
|
vendor.sound_activate(pos)
|
||||||
vendor.refresh(pos)
|
vendor.refresh(pos)
|
||||||
end
|
end
|
||||||
|
@ -117,10 +141,10 @@ vendor.disable = function(pos, desc)
|
||||||
vendor.sound_deactivate(pos)
|
vendor.sound_deactivate(pos)
|
||||||
local meta = minetest.env:get_meta(pos)
|
local meta = minetest.env:get_meta(pos)
|
||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
|
local description = minetest.registered_nodes[minetest.env:get_node(pos).name].description;
|
||||||
if ( desc == nil ) then
|
if ( desc == nil ) then
|
||||||
desc = "Disabled Machine"
|
desc = "Disabled " .. description
|
||||||
end
|
end
|
||||||
minetest.chat_send_player(owner, "vendor: " .. desc)
|
|
||||||
meta:set_string("infotext", ""..desc..", Owned By: " .. owner .. "")
|
meta:set_string("infotext", ""..desc..", Owned By: " .. owner .. "")
|
||||||
meta:set_int("enabled", 0)
|
meta:set_int("enabled", 0)
|
||||||
end
|
end
|
||||||
|
@ -161,9 +185,9 @@ vendor.refresh = function(pos, err)
|
||||||
end
|
end
|
||||||
|
|
||||||
if ( node.name == "vendor:vendor" ) then
|
if ( node.name == "vendor:vendor" ) then
|
||||||
infotext = err .. owner .. " sells " .. number .. " " .. vendor.get_item_desc(itemtype) .. " for " .. cost .. money.currency_name .. limit_text .. per_text
|
infotext = err .. owner .. " Sells " .. number .. " " .. vendor.get_item_desc(itemtype) .. " for " .. cost .. money.currency_name .. limit_text .. per_text
|
||||||
else
|
else
|
||||||
infotext = err .. owner .. " buys " .. number .. " " .. vendor.get_item_desc(itemtype) .. " for " .. cost .. money.currency_name .. limit_text .. per_text
|
infotext = err .. owner .. " Buys " .. number .. " " .. vendor.get_item_desc(itemtype) .. " for " .. cost .. money.currency_name .. limit_text .. per_text
|
||||||
end
|
end
|
||||||
|
|
||||||
if ( meta:get_string("infotext") ~= infotext ) then
|
if ( meta:get_string("infotext") ~= infotext ) then
|
||||||
|
|
Loading…
Reference in New Issue