summaryrefslogtreecommitdiff
path: root/Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-15 11:54:17 +0800
committerchai <chaifix@163.com>2021-11-15 11:54:17 +0800
commit30f2f46474bf4eda5f10d4c64a07cde01d469f66 (patch)
tree6ff2ed3262037b3c9bae2d2b9059a1d65773f31c /Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua
parent4c36bed53fe63ae6056730b3ecad2573f03d88f8 (diff)
*rename DefaultContent -> BuiltIn
Diffstat (limited to 'Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua')
-rw-r--r--Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua163
1 files changed, 0 insertions, 163 deletions
diff --git a/Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua b/Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua
deleted file mode 100644
index 65529ad..0000000
--- a/Data/DefaultContent/Libraries/addons/addons/TreasurePool/TreasurePool.lua
+++ /dev/null
@@ -1,163 +0,0 @@
---[[Copyright © 2019, Kenshi
-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 TreasurePool 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 KENSHI 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.]]
-
-_addon.name = 'TreasurePool'
-_addon.author = 'Kenshi'
-_addon.version = '2.0'
-
-require('luau')
-texts = require('texts')
-packets = require('packets')
-
--- Config
-
-defaults = {}
-defaults.display = {}
-defaults.display.pos = {}
-defaults.display.pos.x = 0
-defaults.display.pos.y = 0
-defaults.display.bg = {}
-defaults.display.bg.red = 0
-defaults.display.bg.green = 0
-defaults.display.bg.blue = 0
-defaults.display.bg.alpha = 102
-defaults.display.bg.visible = true
-defaults.display.text = {}
-defaults.display.text.font = 'Consolas'
-defaults.display.text.red = 255
-defaults.display.text.green = 255
-defaults.display.text.blue = 255
-defaults.display.text.alpha = 255
-defaults.display.text.size = 12
-
-settings = config.load(defaults)
-box = texts.new('${current_string}', settings)
-
-local items = T{}
-
-windower.register_event('load', function()
- local treasure = windower.ffxi.get_items().treasure
- for i = 0, 9 do
- if treasure[i] and treasure[i].item_id then
- local item = res.items[treasure[i].item_id] and res.items[treasure[i].item_id].en or treasure[i].item_id
- local pos = treasure[i].timestamp + i
- table.insert(items, {position = pos, index = i, name = item, timestamp = treasure[i].timestamp,
- temp = treasure[i].timestamp + 300, lotter = nil, lot = nil})
- end
- end
- table.sort(items, function(a,b) return a and b and a.position < b.position end)
-end)
-
-windower.register_event('incoming chunk', function(id, data)
- if id == 0x0D2 then
- local packet = packets.parse('incoming', data)
- -- Ignore gil drop
- if packet.Item == 0xFFFF then
- return
- end
- -- Double packet and leaving pt fix
- for key, value in pairs(items) do
- if value and value.index == packet.Index then
- if value.timestamp == packet.Timestamp then
- return
- else
- table.remove(items, key)
- end
- end
- end
- -- Ignore item 0 packets
- if packet.Item == 0 then
- return
- end
- -- Create table
- local time_check = packet.Timestamp + 300
- local diff = os.difftime(time_check, os.time())
- local item = res.items[packet.Item] and res.items[packet.Item].en or packet.Item
- local pos = packet.Timestamp + packet.Index
- if diff <= 300 then
- table.insert(items, {position = pos, index = packet.Index, name = item, timestamp = packet.Timestamp,
- temp = packet.Timestamp + 300, lotter = nil, lot = nil})
- else
- table.insert(items, {position = pos, index = packet.Index, name = item, timestamp = packet.Timestamp,
- temp = os.time() + 300, lotter = nil, lot = nil})
- end
- -- Sort table
- table.sort(items, function(a,b) return a and b and a.position < b.position end)
- end
- if id == 0x0D3 then
- local packet = packets.parse('incoming', data)
- for key, value in pairs(items) do
- if value.index == packet.Index then
- if packet.Drop ~= 0 then
- table.remove(items, key)
- table.sort(items, function(a,b) return a and b and a.position < b.position end)
- else
- value.lotter = packet['Highest Lotter Name']
- value.lot = packet['Highest Lot']
- end
- end
- end
- end
- if id == 0xB then
- items = T{}
- end
-end)
-
-windower.register_event('prerender', function()
- if items:empty() then
- box:hide()
- return
- end
- local current_string = 'Treasure Pool:'
- for key, value in pairs(items) do
- if value and value.temp then
- local diff = os.difftime(value.temp, os.time())
- local timer = os.date('!%M:%S', diff)
- if diff >= 0 then
- current_string = current_string..'\n['..key..']'
- current_string = (
- diff < 60 and
- current_string..'\\cs(255,0,0) '..value.name..' → '..timer
- or diff > 180 and
- current_string..'\\cs(0,255,0) '..value.name..' → '..timer
- or
- current_string..'\\cs(255,128,0) '..value.name..' → '..timer)..'\\cr'
- if value.lotter and value.lot and value.lot > 0 then
- current_string = current_string..' | '
- current_string = (current_string..'\\cs(0,255,255)'..value.lotter..': '..value.lot)..'\\cr'
- end
- else
- table.remove(items, key)
- end
- box:show()
- end
- end
- box.current_string = current_string
-end)
-
-windower.register_event('logout', function()
- items = T{}
-end)