summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/lua-addons/addons/porter
diff options
context:
space:
mode:
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/porter')
-rw-r--r--Data/BuiltIn/Libraries/lua-addons/addons/porter/README.md39
-rw-r--r--Data/BuiltIn/Libraries/lua-addons/addons/porter/porter.lua159
2 files changed, 198 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/porter/README.md b/Data/BuiltIn/Libraries/lua-addons/addons/porter/README.md
new file mode 100644
index 0000000..4efb5ce
--- /dev/null
+++ b/Data/BuiltIn/Libraries/lua-addons/addons/porter/README.md
@@ -0,0 +1,39 @@
+**Author:** Giuliano Riccio
+**Version:** v 1.20130529
+
+# Porter #
+This addon shows the slips' items highlighting those that are stored.
+
+## Commands ##
+### porter ###
+Shows the specified slip or slip's page. if "owned" is specified, only the owned items will be shown. if no parameter is specified, all the owned slips will be shown.
+
+```
+porter [<slip> [<page>]] [owned]
+```
+* **_slip_:** the number of the slip you want to show.
+* **_page_:** the page of the slip you want to show.
+* **owned:** shows only the items you own.
+```
+porter find
+```
+Shows storable items found in all inventory bags.
+----
+
+##changelog##
+### v1.20200419
+* **add**: New command, porter find.
+* **change**: Adjusted resource handling.
+
+### v1.20130529
+* **fix**: Fixed parameters validation.
+* **change**: Aligned to Windower's addon development guidelines.
+
+### v1.20130525.1
+* **add**: Added the "owned" param. if present, only the owned items will be shown.
+
+### v1.20130525
+* **change**: If no parameter is specified all the owned slips will be shown.
+
+### v1.20130524
+* First release. \ No newline at end of file
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/porter/porter.lua b/Data/BuiltIn/Libraries/lua-addons/addons/porter/porter.lua
new file mode 100644
index 0000000..74e12e9
--- /dev/null
+++ b/Data/BuiltIn/Libraries/lua-addons/addons/porter/porter.lua
@@ -0,0 +1,159 @@
+--[[
+porter v1.20130529
+
+Copyright (c) 2013, Giuliano Riccio
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+* Neither the name of porter nor the
+names of its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Giuliano Riccio BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+require 'chat'
+require 'logger'
+require 'sets'
+require 'strings'
+res = require 'resources'
+slips = require 'slips'
+
+_addon.name = 'porter'
+_addon.version = '1.20210302'
+_addon.command = 'porter'
+_addon.author = 'Zohno'
+
+function show_slip(slip_number, slip_page, owned_only)
+
+ owned_only = owned_only or false
+
+ local player_items = slips.get_player_items()
+
+ if slip_number ~= nil then
+ if slip_number < 1 or slip_number > slips.storages:length() then
+ error('That slip doesn\'t exist, kupo!')
+
+ return
+ end
+
+ slips_storage = L{slips.get_slip_id(slip_number)}
+ else
+ slips_storage = slips.storages
+ end
+
+ for _, slip_id in ipairs(slips_storage) do
+ local slip = slips.get_slip_by_id(slip_id)
+ local player_slip_items = S(player_items[slip_id])
+ local printable_slip_number = tostring(slips.get_slip_number_by_id(slip_id)):lpad('0', 2)
+
+ if slip_number ~= nil
+ or slip_number == nil and player_slip_items:length() > 0
+ then
+ local slip_items
+
+ if slip_number == nil or slip_page == nil then
+ slip_items = slip
+ else
+ local offset = (slip_page - 1) * 16 + 1
+
+ if offset < 1 or offset > slip:length() then
+ error('Slip '..tostring(slip_number):lpad('0', 2)..' has no page '..slip_page..', kupo.')
+
+ return
+ end
+
+ slip_items = slip:slice(offset, offset + 15)
+ end
+
+ for item_position, item_id in ipairs(slip_items) do
+ if item_id ~= 0 then
+ local is_contained = player_slip_items:contains(item_id)
+
+ if owned_only == false or owned_only == true and is_contained == true then
+ windower.add_to_chat(
+ 55,
+ ('slip '..printable_slip_number..'/page '..tostring(slip_page and slip_page or math.ceil(item_position / 16)):lpad('0', 2)..':'):color(259)..' '..
+ res.items[item_id].name:color(is_contained and 258 or 261)
+ )
+ end
+ end
+ end
+ end
+ end
+end
+
+function show_bags()
+
+ local n = 0
+
+ for _, bag in ipairs(slips.default_storages) do
+ for _, item in ipairs(windower.ffxi.get_items(bag)) do
+ local slip_id = slips.get_slip_id_by_item_id(item.id)
+
+ if slip_id and item.id ~= 0 then
+ n = n + 1
+ windower.add_to_chat(207, 'slip %02d: %s %s':format(slips.get_slip_number_by_id(slip_id), bag, res.items[item.id].name:color(258)))
+ end
+ end
+ end
+
+ windower.add_to_chat(207, 'Found %s storable items in all bags':format(n))
+end
+
+windower.register_event('addon command',function (slip_number, slip_page, owned_only)
+ if tonumber(slip_number) == nil then
+ slip_page = nil
+
+ if slip_number == 'owned' then
+ slip_number = nil
+ owned_only = true
+ elseif slip_number == 'find' then
+ show_bags()
+ return
+ elseif slip_number ~= nil then
+ error('That\'s not a valid slip number, kupo!')
+
+ return
+ end
+ else
+ slip_number = tonumber(slip_number, 10)
+
+ if tonumber(slip_page) == nil then
+ if slip_page == 'owned' then
+ slip_page = nil
+ owned_only = true
+ elseif slip_page ~= nil then
+ error('That\'s not a valid page number, kupo!')
+
+ return
+ end
+ else
+ slip_page = tonumber(slip_page, 10)
+
+ if owned_only == 'owned' then
+ owned_only = true
+ else
+ owned_only = nil
+ end
+ end
+ end
+
+ show_slip(slip_number, slip_page, owned_only)
+end)