summaryrefslogtreecommitdiff
path: root/Data/DefaultContent/Libraries/addons/addons/blist/blist.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Data/DefaultContent/Libraries/addons/addons/blist/blist.lua')
-rw-r--r--Data/DefaultContent/Libraries/addons/addons/blist/blist.lua317
1 files changed, 0 insertions, 317 deletions
diff --git a/Data/DefaultContent/Libraries/addons/addons/blist/blist.lua b/Data/DefaultContent/Libraries/addons/addons/blist/blist.lua
deleted file mode 100644
index 509d6c1..0000000
--- a/Data/DefaultContent/Libraries/addons/addons/blist/blist.lua
+++ /dev/null
@@ -1,317 +0,0 @@
---[[
-Copyright (c) 2013, Ikonic
-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 Blist 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 IKONIC 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 = 'Blist'
-_addon.author = 'Ragnarok.Ikonic'
-_addon.version = '1.2.0.1'
-
-require 'tables'
-require 'strings'
-require 'chat/colors'
-local config = require 'config'
-require 'logger'
-
-local defaults = T{}
-defaults.useblist = true
-defaults.linkshell = true
-defaults.party = true
-defaults.tell = true
-defaults.emote = true
-defaults.say = true
-defaults.shout = true
-defaults.bazaar = true
-defaults.examine = true
-defaults.mutedcolor = 57
-
-settings = T{}
-members = T{}
-
-windower.register_event('load',function()
- settings = config.load(defaults)
- members = config.load("data/members.xml",members)
- windower.send_command('alias blist lua command blist')
- windower.send_command('alias bl lua command blist')
- windower.add_to_chat(55, "Loading ".._addon.name.." v".._addon.version.." (written by ".._addon.author..")")
- windower.add_to_chat(160,' Type '..string.color('//blist help',204,160)..' for a list of possible commands.')
-end)
-
-windower.register_event('unload',function()
- windower.send_command('unalias blist')
- windower.send_command('unalias bl')
- windower.add_to_chat(55, "Unloading ".._addon.name.." v".._addon.version..".")
-end)
-
-windower.register_event('login',function (name)
- settings = config.load(defaults)
- windower.add_to_chat(160,"Loading "..string.color(_addon.name,55,160).." settings for "..windower.ffxi.get_player().name..".")
-end)
-
-function addon_command(...)
- local args = {...}
- local dummysettings = table.copy(settings)
- if args[1] ~= nil then
- comm = args[1]:lower()
- if comm == 'help' then
- windower.add_to_chat(55,_addon.name.." v".._addon.version..' possible commands:')
- windower.add_to_chat(160,' '..string.color('//Blist',204,160)..' and '..string.color('//bl',204,160)..' are both valid commands.')
- windower.add_to_chat(160,' '..string.color('//bl help',204,160)..' : Lists this menu.')
- windower.add_to_chat(160,' '..string.color('//bl status',204,160)..' : Shows current configuration.')
- windower.add_to_chat(160,' '..string.color('//bl list',204,160)..' : Displays blacklist.')
- windower.add_to_chat(160,' '..string.color('//bl useblist|linkshell|party|tell|emote|say|shout|bazaar|examine',204,160)..' : Toggles using '.._addon.name..' for said chat mode.')
- windower.add_to_chat(160,' '..string.color('//bl mutedcolor #',204,160)..' : Sets color for muted communication. Valid values 1-255.')
- windower.add_to_chat(160,' '..string.color('//bl add|update name # hidetype reason',204,160)..' : Adds to or updates a user on your blist.')
- windower.add_to_chat(160,' '..string.color(' name',204,160)..' = name of person you want to blist')
- windower.add_to_chat(160,' '..string.color(' #',204,160)..' = number of days to blist said person; 0 = forever')
- windower.add_to_chat(160,' '..string.color(' hidetype',204,160)..' = how blacklisted you want said person to be; valid options: hard, soft, muted')
- windower.add_to_chat(160,' '..string.color(' hard',204,160)..' = full blist, nothing gets through')
- windower.add_to_chat(160,' '..string.color(' soft',204,160)..' = message saying conversation from name was blocked')
- windower.add_to_chat(160,' '..string.color(' muted',204,160)..' = message comes through, but in a different color')
- windower.add_to_chat(160,' '..string.color(' reason',204,160)..' = reason why you are adding said person to blist')
- windower.add_to_chat(160,' '..string.color('//bl delete|remove name',204,160)..' : Removes a user from your blist.')
- windower.add_to_chat(160,' '..string.color('//bl qa name [reason]',204,160)..' : Adds a user to your blist w/o requiring extra details (reason is optional).')
- elseif comm == 'status' then
- showStatus()
- elseif comm == 'list' then
- windower.add_to_chat(160,string.color("Name",56).." | "..
- string.color("TempTime",3).." | "..
- string.color("HideType",settings.mutedcolor).." | "..
- string.color("Reason",59).." | "..
- string.color("Date Added",29))
- for i,v in pairs(members) do
- if members[i].hidetype ~= "delete" then
- windower.add_to_chat(160,string.color(tostring(i),56) .. " | " ..
- string.color(tostring(members[i].temptime),3) .. " | " ..
- string.color(tostring(members[i].hidetype),settings.mutedcolor) .. " | " ..
- string.color(tostring(members[i].reason),59) .. " | " ..
- string.color(tostring(members[i].date),29)
- )
- end
- end
- elseif comm == "add" or comm == "update" then
- if type(args[2]:match("(%a+)")) ~= "string"
- or type(tonumber(args[3]:match("(%d+)"))) ~= "number"
- or S({'hard','soft','muted'}):contains(args[4]:lower()) ~= true
- then
- windower.add_to_chat(160,"Invalid format; use the following: "..string.color("//bl "..comm.." name temptime hidetype reason",204,160))
- else
- com2 = args[2] -- name
- com3 = tonumber(args[3]) -- temptime
- com4 = args[4]:lower() -- hidetype
- if args[5] ~= nil then
- com5 = table.slice(args,5)
- com5mess = tostring(table.sconcat(com5))
- else
- com5mess = nil
- end
-
- local addTemp = T{}
- addTemp[com2] = {}
- addTemp[com2].reason = com5mess
- addTemp[com2].date = os.date("%x", date)
- addTemp[com2].temptime = com3
- addTemp[com2].hidetype = com4
-
- members = members:update(addTemp)
- members:save('all')
- windower.send_ipc_message("blist reload members")
- windower.add_to_chat(160,"Updating "..string.color(args[2],56,160).." entry on "..string.color(_addon.name,55,160)..".")
- end
- elseif comm == "qa" then
- if type(args[2]:match("(%a+)")) ~= "string" then
- windower.add_to_chat(160,"Invalid format; use the following: "..string.color("//bl qa <name> %[reason%]",204,160))
- else
- com2 = args[2] -- name
- if args[3] ~= nil then
- com3 = table.slice(args,3)
- com3mess = tostring(table.sconcat(com3))
- else
- com3mess = nil
- end
-
- local addTemp = T{}
- addTemp[com2] = {}
- addTemp[com2].reason = com3mess
- addTemp[com2].date = os.date("%x", date)
- addTemp[com2].temptime = 0
- addTemp[com2].hidetype = "hard"
-
- members = members:update(addTemp)
- members:save('all')
- windower.send_ipc_message("blist reload members")
- windower.add_to_chat(160,"Updating "..string.color(string.ucfirst(args[2]),56,160).." entry on "..string.color(_addon.name,55,160)..".")
- end
- elseif comm == "remove" or comm == "delete" then
- if members[args[2]] ~= nil then
- windower.add_to_chat(160,"Removing "..string.color(args[2],56,160).." from "..string.color(_addon.name,55,160)..".")
- members[args[2]].hidetype = "delete"
- members:save('all')
- windower.send_ipc_message("blist reload members")
- else
- windower.add_to_chat(160,"User "..string.color(args[2],56,160).." not in "..string.color(_addon.name,55,160).." database; cannot remove.")
- end
- elseif comm == "mutedcolor" or comm == "color" then
- com2num = tonumber(args[2])
- if (com2num ~= nil) and (com2num >= 1 and com2num <= 255) then
- settings[comm] = com2num
- else
- settings[comm] = defaults[comm]
- windower.add_to_chat(160," Invalid "..string.color(comm,settings.mutedcolor,160).." value; acceptable values: 1-255. Setting default.")
- end
- showStatus(comm)
- if tostring(com2num) ~= tostring(dummysettings[comm]) then
- settings:save() -- current character only
- windower.add_to_chat(55,"Saving "..string.color(_addon.name,204,55).." settings.")
- end
- elseif S({'useblist','linkshell','party','tell','emote','say','shout','bazaar','examine'}):contains(comm) then
- settings[comm] = not settings[comm]
- showStatus(comm)
- if tostring(com2) ~= tostring(dummysettings[comm]) then
- settings:save() -- current character only
- windower.add_to_chat(55,"Saving "..string.color(_addon.name,204,55).." settings.")
- end
-
- elseif comm == "settings" then
- settings:vprint()
-
- else
- windower.add_to_chat(160, " Not a valid ".._addon.name.." v".._addon.version.." command. "..string.color('//bl help',204,160).." for a list of valid commands.")
- return
- end
- else
- addon_command('help')
- end
-end
-
-windower.register_event('addon command',addon_command)
-
-function showStatus(var)
- if var == "mutedcolor" then
- windower.add_to_chat(160," Muted"..string.color("Color",settings.mutedcolor,160)..": " .. string.color(tostring(settings.mutedcolor),204,160))
- elseif var == "useblist" then
- windower.add_to_chat(160," UseBlist: " .. string.color(onOffPrint(settings[var]),204,160))
- elseif var ~= nul then
- windower.add_to_chat(160," UseBlistOn"..var:ucfirst()..": " .. string.color(onOffPrint(settings[var]),204,160))
- else
- windower.add_to_chat(160," UseBlist: " .. string.color(onOffPrint(settings.useblist),204,160))
- windower.add_to_chat(160," UseBlistOnLinkshell: " .. string.color(onOffPrint(settings.linkshell),204,160))
- windower.add_to_chat(160," UseBlistOnParty: " .. string.color(onOffPrint(settings.party),204,160))
- windower.add_to_chat(160," UseBlistOnTell: " .. string.color(onOffPrint(settings.tell),204,160))
- windower.add_to_chat(160," UseBlistOnEmote: " .. string.color(onOffPrint(settings.emote),204,160))
- windower.add_to_chat(160," UseBlistOnSay: " .. string.color(onOffPrint(settings.say),204,160))
- windower.add_to_chat(160," UseBlistOnShout: " .. string.color(onOffPrint(settings.shout),204,160))
- windower.add_to_chat(160," UseBlistOnBazaar: " .. string.color(onOffPrint(settings.bazaar),204,160))
- windower.add_to_chat(160," UseBlistOnExamine: " .. string.color(onOffPrint(settings.examine),204,160))
- windower.add_to_chat(160," Muted"..string.color("Color",settings.mutedcolor,160)..": " .. string.color(tostring(settings.mutedcolor),204,160))
- end
-end
-
-function onOffPrint(bleh)
- if (bleh ~= nul) then
- if (bleh == 1) or (bleh == true) then
- bleh = "ON";
- else
- bleh = "OFF";
- end
- else
- bleh = "OFF";
- end
- return bleh;
-end
-
-windower.register_event('ipc message',function (msg)
- if msg == "blist reload members" then
- members = config.load("data/members.xml",members)
--- windower.add_to_chat(160, "Reloading members database.")
- end
-end)
-
-windower.register_event('incoming text',function (original, modified, mode)
- if settings.useblist == true then
- name = "blist"
- if mode == 14 and settings.linkshell == true then -- linkshell (others)
- a,z,name = string.find(original,'<(%a+)> ')
- elseif mode == 13 and settings.party == true then -- party (others)
- a,z,name = string.find(original,'%((%a+)%) ')
- elseif mode == 12 and settings.tell == true then -- tell (in)
- a,z,name = string.find(original,'(%a+)>> ')
- elseif (mode == 15 or mode == 7) and settings.emote == true then -- emote
- a,z,name = string.find(original,'(%a+) ')
- elseif mode == 1 and settings.say == true then -- say
- a,z,name = string.find(original,'(%a+) ')
- elseif mode == 2 and settings.shout == true then -- shout
- a,z,name = string.find(original,'(%a+) ')
- elseif mode == 121 and settings.bazaar == true then -- bazaar
- a,z,name,filler = string.find(original,'(%a+) (.*) bazaar%.')
- elseif mode == 208 and settings.examine == true then -- examine
- a,z,name = string.find(original,'(%a+) examines you%.')
- else
- name = "blist"
- end
- if name ~= nil then
- name = name:lower()
- else
- name = "blist"
- end
-
- if name ~= "blist" and
- name ~= nil and
- members[name] ~= nil and
- members[name].hidetype ~= "delete" then
- local pattern = "(%d+)%/(%d+)%/(%d+)"
- local xmonth, xday, xyear = members[name].date:match(pattern)
- local blah = tonumber(members[name].temptime)
- if #xyear < 4 then
- xyear = tonumber("20"..tostring(xyear))
- end
- local convertedT = os.time({year = xyear, month = xmonth, day = xday+blah})
- local nowTime = os.time()
- if nowTime > convertedT and members[name].temptime ~= 0 then
- members[name].hidetype = "delete"
- members:save('all')
- windower.send_ipc_message("blist reload members")
- end
-
- if members[name].hidetype == "delete" then
- modified = original
- elseif members[name].hidetype == "hard" or #members[name].hidetype == 0 then
- modified = ''
- elseif members[name].hidetype == "soft" then
- modified = _addon.name.." blocked message from "..string.ucfirst(name).."."
- elseif members[name].hidetype == "muted" then
- modified = string.color(original:trim(),settings.mutedcolor)
- else
- members[name].hidetype = "hard"
- members:save('all')
- windower.send_ipc_message("blist reload members")
- modified = ''
- end
- end
- return modified
- end
-end)