diff options
Diffstat (limited to 'Data/DefaultContent/Libraries/addons/addons/blist/blist.lua')
-rw-r--r-- | Data/DefaultContent/Libraries/addons/addons/blist/blist.lua | 317 |
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) |