diff --git a/fs_edit_trade_limit.lua b/fs_edit_trade_limit.lua index 4a8beab..82fe14d 100644 --- a/fs_edit_trade_limit.lua +++ b/fs_edit_trade_limit.lua @@ -18,14 +18,14 @@ yl_speak_up.input_edit_trade_limit = function(player, formname, fields) local anz = tonumber(fields['SellIfMoreThan'] or "0") if( anz and anz > 0 and anz < 10000 ) then - dialog.trades.limits.sell_if_more[ fields["item_name"] ] = anz; + dialog.trades.limits.sell_if_more[ fields["item_name"] ] = anz yl_speak_up.log_change(pname, n_id, "sell_if_more set to "..tostring(anz).. " for "..tostring(fields["item_name"])) end anz = tonumber(fields['BuyIfLessThan'] or "0") if( anz and anz > 0 and anz < 10000 ) then - dialog.trades.limits.buy_if_less[ fields["item_name"] ] = anz; + dialog.trades.limits.buy_if_less[ fields["item_name"] ] = anz yl_speak_up.log_change(pname, n_id, "buy_if_less set to "..tostring(anz).. " for "..tostring(fields["item_name"])) end @@ -34,7 +34,24 @@ yl_speak_up.input_edit_trade_limit = function(player, formname, fields) yl_speak_up.show_fs(player, "trade_limit", {selected = fields.item_name}) return end - -- TODO: implement delete button + + if(fields and fields["delete_limit"]) then + local pname = player:get_player_name() + local n_id = yl_speak_up.speak_to[pname].n_id + local dialog = yl_speak_up.speak_to[pname].dialog + + -- make sure all necessary entries in the trades table exist + yl_speak_up.setup_trade_limits(dialog) + + dialog.trades.limits.sell_if_more[ fields["item_name"] ] = nil + dialog.trades.limits.buy_if_less[ fields["item_name"] ] = nil + + yl_speak_up.log_change(pname, n_id, "trade limits deleted".. + " for "..tostring(fields["item_name"])) + yl_speak_up.save_dialog(n_id, dialog) + yl_speak_up.show_fs(player, "trade_limit") + return + end -- back to the normal trade list yl_speak_up.show_fs(player, "trade_limit", {selected = fields.item_name}) @@ -68,10 +85,10 @@ yl_speak_up.get_fs_edit_trade_limit = function(player, selected_row) 'item_image[-0.25,2.5;2.0,2.0;', selected, ']', 'label[1.0,0.0;Set limits for buy and sell]', 'label[1.5,1.0;Description:]', - 'label[4.0,1.0;', (def.description or '?'), ']', + 'label[4.0,1.0;', minetest.formspec_escape(def.description or '?'), ']', 'label[1.5,2.0;Item name:]', --'label[3.5,1.0;', tostring( selected ), ']', - 'field[4.0,2.0;4,1;item_name;;', tostring( selected ), ']', + 'field[4.0,2.0;4,1;item_name;;', minetest.formspec_escape( selected ), ']', 'label[1.5,3.0;In stock:]', 'label[4.0,3.0;', tostring( item_data[1] ), ']', 'label[1.5,4.0;Sell if more than]', @@ -80,9 +97,9 @@ yl_speak_up.get_fs_edit_trade_limit = function(player, selected_row) 'label[1.5,5.0;Buy if less than]', 'field[4.0,5.0;1.2,1.0;BuyIfLessThan;;', tostring( item_data[3] ), ']', 'label[5.0,5.0;will end up in stock.]', - 'button[1.5,6.0;2,1.0;store_limit;Save]', - 'button[4.5,6.0;2,1.0;back_to_limit_list;Back]' - -- TODO: delete button + 'button[1.0,6.0;2,1.0;store_limit;Save]', + 'button[3.5,6.0;2,1.0;back_to_limit_list;Back]', + 'button[6.0,6.0;2,1.0;delete_limit;Delete]' } return table.concat(formspec, '') end