diff options
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/chatPorter/chatPorter.lua')
-rw-r--r-- | Data/BuiltIn/Libraries/lua-addons/addons/chatPorter/chatPorter.lua | 644 |
1 files changed, 644 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/chatPorter/chatPorter.lua b/Data/BuiltIn/Libraries/lua-addons/addons/chatPorter/chatPorter.lua new file mode 100644 index 0000000..744b659 --- /dev/null +++ b/Data/BuiltIn/Libraries/lua-addons/addons/chatPorter/chatPorter.lua @@ -0,0 +1,644 @@ +--[[ +Copyright (c) 2013, 2015, 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 ChatPorter 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 = 'ChatPorter' +_addon.version = '1.39' +_addon.author = 'Ikonic' +_addon.commands = {'ChatPorter','cp'} + +require('tables') +require('strings') +require('chat') +config = require('config') +require('logger') + +defaults = T{} +defaults.usechatporter = true + +defaults.linkshell = T{} +defaults.linkshell.displaychat = true +defaults.linkshell.color = 41 -- 41, 70, 158, 204 +defaults.linkshell.show = true +defaults.linkshell.lines = 8 +defaults.linkshell.alpha = 255 +defaults.linkshell.red = 152 +defaults.linkshell.green = 251 +defaults.linkshell.blue = 152 +defaults.linkshell.fontname = "Arial" +defaults.linkshell.fontsize = 8 +defaults.linkshell.x = 150 +defaults.linkshell.y = 505 + +defaults.party = T{} +defaults.party.displaychat = true +defaults.party.color = 207 -- 207 +defaults.party.show = true +defaults.party.lines = 8 +defaults.party.alpha = 255 +defaults.party.red = 0 +defaults.party.green = 191 +defaults.party.blue = 255 +defaults.party.fontname = "Arial" +defaults.party.fontsize = 8 +defaults.party.x = 150 +defaults.party.y = 390 + +defaults.tell = T{} +defaults.tell.displaychat = true +defaults.tell.color = 200 -- 208 +defaults.tell.show = true +defaults.tell.lines = 8 +defaults.tell.alpha = 255 +defaults.tell.red = 255 +defaults.tell.green = 0 +defaults.tell.blue = 255 +defaults.tell.fontname = "Arial" +defaults.tell.fontsize = 8 +defaults.tell.x = 150 +defaults.tell.y = 100 + +defaults.ffochat = T{} +defaults.ffochat.displaychat = false +defaults.ffochat.color = 167 +defaults.ffochat.show = false +defaults.ffochat.lines = 8 +defaults.ffochat.alpha = 255 +defaults.ffochat.red = 255 +defaults.ffochat.green = 0 +defaults.ffochat.blue = 0 +defaults.ffochat.fontname = "Arial" +defaults.ffochat.fontsize = 4 +defaults.ffochat.x = 380 +defaults.ffochat.y = 300 + +settings = config.load(defaults) + +showlinkshell = T{} +showparty = T{} +showtell = T{} +showffochat = T{} + +specialChar = "|" +lastTellFrom = "" + +playerResolution = T{} +playerResolution.x = windower.get_windower_settings().x_res +playerResolution.y = windower.get_windower_settings().y_res + +windower.register_event('load',function () + windower.text.create("showlinkshell") + windower.text.create("showparty") + windower.text.create("showtell") + windower.text.create("showffochat") + windower.send_command('alias l2 lua command ChatPorter l2') + windower.send_command('alias p2 lua command ChatPorter p2') + windower.send_command('alias t2 lua command ChatPorter t2') + windower.send_command('alias r2 lua command ChatPorter r2') + windower.send_command('alias f1 lua command ChatPorter f1') + windower.send_command('alias f2 lua command ChatPorter f2') + windower.send_command('alias f3 lua command ChatPorter f3') + windower.send_command('alias f4 lua command ChatPorter f4') + windower.send_command('alias f5 lua command ChatPorter f5') + windower.add_to_chat(160,' Type '..string.color('//cp help',204,160)..' for a list of possible commands.') +end) + +windower.register_event('load', 'login', 'linkshell change', function() + local player = windower.ffxi.get_player() + if player then + playerName = player.name + LSname = player.linkshell + end +end) + +windower.register_event('unload',function () + windower.text.delete("showlinkshell") + windower.text.delete("showparty") + windower.text.delete("showtell") + windower.text.delete("showffochat") + windower.send_command('unalias l2') + windower.send_command('unalias p2') + windower.send_command('unalias t2') + windower.send_command('unalias r2') + windower.send_command('unalias f1') + windower.send_command('unalias f2') + windower.send_command('unalias f3') + windower.send_command('unalias f4') + windower.send_command('unalias f5') +end) + +windower.register_event('login',function (name) + settings = config.load(defaults) + show("linkshell") + show("party") + show("tell") + show("ffochat") + LSname = windower.ffxi.get_player().linkshell; + playerName = 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 + if args[2] == nil or (args[2] ~= "detail" and args[2] ~= "textbox") then + windower.add_to_chat(55,_addon.name.." v".._addon.version..' possible commands:') + windower.add_to_chat(160,' '..string.color('//ChatPorter',204,160)..' and '..string.color('//cp',204,160)..' are both valid commands.') + windower.add_to_chat(160,' '..string.color('//cp help',204,160)..' : Lists this menu.') + windower.add_to_chat(160,' '..string.color('//cp status',204,160)..' : Shows current configuration.') + windower.add_to_chat(160,' '..string.color('//cp textbox',204,160)..' : Shows current textbox configurations.') + windower.add_to_chat(160,' '..string.color('//cp colors',204,160)..' : Shows possible color codes.') + windower.add_to_chat(160,' '..string.color('//cp toggle',204,160)..' : Toggles ChatPorter on/off.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t] [toggle|displaychat]',204,160)..' : Toggles linkshell|party|tell messages from showing or not.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t] color #',204,160)..' : Sets color of l|p|t text (acceptable values of 1-255).') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] show',204,160)..' : Toggles l|p|t textboxes from showing.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [fontname|fn, lines, fontsize|fs, x, y, alpha|a, red|r, green|g, blue|b] #',204,160)..' : Sets l|p|t textbox specifics.') + windower.add_to_chat(160,' '..string.color('//[l2|p2|t2 name|r2] message',204,160)..' : Sends message from second character to linkshell|party|tell|reply.') + windower.add_to_chat(160,' '..string.color('//[f#|cp f#] message',204,160)..' : Sends message from second character to ffochat channel.') + windower.add_to_chat(160,' '..string.color('//cp help detail',204,160)..' : Shows detailed ChatPorter commands.') + windower.add_to_chat(160,' '..string.color('//cp help textbox',204,160)..' : Shows detailed textbox commands.') + elseif args[2] == "detail" then + windower.add_to_chat(55,' ChatPorter detailed commands:') + windower.add_to_chat(160,' '..string.color('//l2 message',204,160)..' : Sends message from second character to linkshell.') + windower.add_to_chat(160,' '..string.color('//p2 message',204,160)..' : Sends message from second character to party.') + windower.add_to_chat(160,' '..string.color('//t2 name message',204,160)..' : Sends message from second character to name in tell.') + windower.add_to_chat(160,' '..string.color('//r2 message',204,160)..' : Sends reply message from second character.') + windower.add_to_chat(160,' '..string.color('//f# message',204,160)..' : Sends message from second character to FFOChat channel #. Works for 1-5.') + windower.add_to_chat(160,' '..string.color('//cp f# message',204,160)..' : Same as f#, but for any #.') + elseif args[2] == "textbox" then + windower.add_to_chat(55,'ChatPorter textbox commands:') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [toggle|displaychat]',204,160)..' : Toggles linkshell|party|tell|ffochat messages from showing or not.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t] color #',204,160)..' : Sets color of l|p|t text (acceptable values of 1-255).') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] show',204,160)..' : Toggles l|p|t|f textboxes from showing.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] clear',204,160)..' : Clears l|p|t|f textbox.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] lines #',204,160)..' : Sets # of lines to show in textbox.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [fontname|fn] *',204,160)..' : Sets fontname for textbox.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [fontsize|fs] #',204,160)..' : Sets fontsize for textbox.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] x #',204,160)..' : Sets x coordinate for textbox (acceptable values: 10-'.. playerResolution.x-10 ..').') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] y #',204,160)..' : Sets y coordinate for textbox (acceptable values: 10-'.. playerResolution.y-10 ..').') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [alpha|a] #',204,160)..' : Sets alpha (transparency) for textbox (acceptable values: 1-255; 0=fully transparent, 255=fully visible).') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [red|r] #',204,160)..' : Sets red value for RGB color of text in textbox.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [green|g] #',204,160)..' : Sets green value for RGB color of text in textbox.') + windower.add_to_chat(160,' '..string.color('//cp [l|p|t|f] [blue|b] #',204,160)..' : Sets blue value for RGB color of text in textbox.') + end + elseif comm == 'status' then + showStatus() + elseif comm == 'textbox' then + showStatus('textbox') + elseif comm == 'colors' then + showColors() + elseif comm == 'toggle' then + settings.usechatporter = not settings.usechatporter + showStatus('usechatporter') + elseif S({'l2','p2','t2','r2'}):contains(comm) or comm:match('^f%d%d?$') then + com2 = table.remove(args,1) + com2mess = table.sconcat(args) + com2mess = string.gsub(com2mess,"\n","\\\92\110") + if comm == 'l2' then + windower.send_ipc_message(specialChar.."l2:"..LSname..specialChar..playerName..specialChar..com2mess) + elseif comm == 'p2' then + windower.send_ipc_message(specialChar.."p2:"..""..specialChar..playerName..specialChar..com2mess) + elseif comm == 't2' then + windower.send_ipc_message(specialChar.."t2:"..playerName..specialChar..playerName..specialChar..com2mess) + elseif comm == 'r2' then + windower.send_ipc_message(specialChar.."r2:"..playerName..specialChar..playerName..specialChar..com2mess) + elseif string.first(comm, 1) == 'f' then + windower.send_ipc_message(specialChar.."f:"..string.at(comm,2)..specialChar..playerName..specialChar..com2mess) + end + elseif comm == "l" or comm == "p" or comm == "t" or comm == "f" then + com2 = args[2] + if com2 == nil then + com2 = "toggle" + end + if comm == "l" then + comm = "linkshell" + elseif comm == "p" then + comm = "party" + elseif comm == "t" then + comm = "tell" + elseif comm == "f" then + comm = "ffochat" + end + com3 = args[3] + com3num = tonumber(args[3]) + + if com2 == "toggle" or com2 == "displaychat" then + settings[comm].displaychat = not settings[comm].displaychat + showStatus('display'..comm..'chat') + elseif com2 == "show" then + settings[comm][com2] = not settings[comm][com2] + windower.add_to_chat(160," Setting "..comm.." textbox to display: "..string.color(onOffPrint(settings[comm][com2]),204,160)) + elseif com2 == "clear" then + _G['show'..comm] = {} + elseif com2 == "fontname" or com2 == "fn" then + if com3 ~= nil then + com3 = table.slice(args,3) + com3 = tostring(table.sconcat(com3)) + settings[comm].fontname = com3 + windower.add_to_chat(160," Setting fontname: "..string.color(com3,204,160)) + else + settings[comm].fontname = defaults[comm].fontname + windower.add_to_chat(160," No fontname specified; setting default fontname.") + end + elseif com2 == "lines" then + if com3num > 8 or com3num < 1 then + settings[comm][com2] = 8 + windower.add_to_chat(160," Invalid setting. Lines must be a value from 1-8. Setting max value.") + else + settings[comm][com2] = com3num + windower.add_to_chat(160," Setting lines for "..comm.." textbox: "..string.color(tostring(com3num),204,160)) + end + elseif com2 == "fontsize" or com2 == "fs" then + if com3num ~= nil and com3num >= 4 and com3num <= 144 then + settings[comm].fontsize = com3num + windower.add_to_chat(160," Setting fontsize for "..comm.." textbox: "..string.color(tostring(com3num),204,160)) + else + settings[comm].fontsize = defaults[comm].fontsize + windower.add_to_chat(160," Invalid fontsize; acceptable values: 4-144. Setting to default.") + end + elseif com2 == "x" or com2 == "y" then + if com3num ~= nil and com3num >= 10 and com3num <= playerResolution[com2] - 10 then + settings[comm][com2] = com3num + windower.add_to_chat(160," Setting "..com2.." value for "..comm.." textbox: "..string.color(tostring(com3num),204,160)) + else + settings[comm][com2] = defaults[comm][com2] + windower.add_to_chat(160," Invalid "..com2.." value; acceptable values: 10-".. playerResolution[com2]-10 ..". Setting to default.") + end + elseif S({'color','alpha','a','red','r','green','g','blue','b'}):contains(com2) then + if com2 == "a" then + com2 = "alpha" + elseif com2 == "r" then + com2 = "red" + elseif com2 == "g" then + com2 = "green" + elseif com2 == "b" then + com2 = "blue" + end + if (com3num ~= nil) and (com3num >= 1 and com3num <= 255) then + settings[comm][com2] = com3num + if com2 == "color" then + windower.add_to_chat(160," Setting "..com2.." for "..comm..": "..string.color(tostring(com3num),204,160)) + else + windower.add_to_chat(160," Setting "..com2.." value for "..comm.." textbox: "..string.color(tostring(com3num),204,160)) + end + else + settings[comm][com2] = defaults[comm][com2] + windower.add_to_chat(160," Invalid "..com2.." value; acceptable values: 1-255. Setting default.") + end +-- showStatus(_G['settings['..comm..']['..com2..']']) +-- _G['show'..tbName] + end + if comm == "linkshell" or comm == "party" or comm == "tell" or comm == "ffochat" then + show(comm) + if com3 ~= nil and tostring(com3) ~= tostring(dummysettings[comm][com2]) then +-- settings:save('all') -- all characters + settings:save() -- current character only + windower.add_to_chat(55,"Saving "..string.color('ChatPorter',204,55).." settings.") + elseif com2 == "show" or com2 == "toggle" or com2 == "displaychat" then + settings:save() -- current character only + windower.add_to_chat(55,"Saving "..string.color('ChatPorter',204,55).." settings.") + end + end + elseif comm:lower() == 'vprint' then + settings:vprint() + elseif comm:lower() == 'print' then + for key, value in pairs(settings) do + log(key, value) + end + elseif comm:lower() == 'dummy' then + dummysettings:vprint() + elseif comm:lower() == 'pt' then + showparty:vprint() + elseif comm:lower() == 'test' then + windower.add_to_chat(160, "") + windower.send_command("input /p party 1") + coroutine.sleep(1) + windower.send_command("input /p party 2") + coroutine.sleep(1) + windower.send_command("input /p party 3") + coroutine.sleep(1) + windower.send_command("input /p party 4") + coroutine.sleep(1) + windower.send_command("input /p party 5") + coroutine.sleep(1) + windower.send_command("input /p party 6") + coroutine.sleep(1) + windower.send_command("input /p party 7") + coroutine.sleep(1) + windower.send_command("input /p party 8") + coroutine.sleep(1) + windower.send_command("input /t <me> tell 1") + coroutine.sleep(1) + windower.send_command("input /t <me> tell 2") + coroutine.sleep(1) + windower.send_command("input /t <me> tell 3") + coroutine.sleep(1) + windower.send_command("input /t <me> tell 4") + else + windower.add_to_chat(160, " Not a valid ".._addon.name.." v".._addon.version.." command. "..string.color('//cp help',204,160).." for a list of valid commands.") + return + end + else + addon_command('help') + end +end + +windower.register_event('addon command',addon_command) + +windower.register_event('linkshell change',function (linkshell) + LSname = windower.ffxi.get_player().linkshell; +end) + +function showStatus(var) + if (var ~= nul) and var ~= "textbox" then + if var == "usechatporter" then + windower.add_to_chat(160," UseChatPorter: " .. string.color(onOffPrint(settings.usechatporter),204,160)) + elseif var == "displaylinkshellchat" then + windower.add_to_chat(160," DisplayLinkshellChat: " .. string.color(onOffPrint(settings.linkshell.displaychat),204,160)) + elseif var == "displaypartychat" then + windower.add_to_chat(160," DisplayPartyChat: " .. string.color(onOffPrint(settings.party.displaychat),204,160)) + elseif var == "displaytellchat" then + windower.add_to_chat(160," DisplayTellChat: " .. string.color(onOffPrint(settings.tell.displaychat),204,160)) + elseif var == "linkshellcolor" then + windower.add_to_chat(160," LinkshellColor: " .. string.color(tostring(settings.linkshell.color),204,160)) + elseif var == "partycolor" then + windower.add_to_chat(160," PartyColor: " .. string.color(tostring(settings.party.color),204,160)) + elseif var == "tellcolor" then + windower.add_to_chat(160," TellColor: " .. string.color(tostring(settings.tell.color),204,160)) + end + elseif var == "textbox" then + windower.add_to_chat(55, "ChatPorter textbox settings: "..string.color('linkshell',settings.linkshell.color,160).." | "..string.color('party',settings.party.color,160).." | "..string.color('tell',settings.tell.color,160).." | "..string.color('ffochat',settings.ffochat.color,160)) +-- windower.add_to_chat(160, " displaychat: "..string.color(onOffPrint(settings.linkshell.displaychat),settings.linkshell.color,160).." | "..string.color(onOffPrint(settings.party.displaychat),settings.party.color,160).." | "..string.color(onOffPrint(settings.tell.displaychat),settings.tell.color,160).." | "..string.color(onOffPrint(settings.ffochat.displaychat),settings.ffochat.color,160)) +-- windower.add_to_chat(160, " color: "..string.color(tostring(settings.linkshell.color),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.color),settings.party.color,160).." | "..string.color(tostring(settings.tell.color),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.color),settings.ffochat.color,160)) + windower.add_to_chat(160, " show: "..string.color(onOffPrint(settings.linkshell.show),settings.linkshell.color,160).." | "..string.color(onOffPrint(settings.party.show),settings.party.color,160).." | "..string.color(onOffPrint(settings.tell.show),settings.tell.color,160).." | "..string.color(onOffPrint(settings.ffochat.show),settings.ffochat.color,160)) + windower.add_to_chat(160, " lines: "..string.color(tostring(settings.linkshell.lines),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.lines),settings.party.color,160).." | "..string.color(tostring(settings.tell.lines),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.lines),settings.ffochat.color,160)) + windower.add_to_chat(160, " fontname: "..string.color(settings.linkshell.fontname,settings.linkshell.color,160).." | "..string.color(settings.party.fontname,settings.party.color,160).." | "..string.color(settings.tell.fontname,settings.tell.color,160).." | "..string.color(settings.ffochat.fontname,settings.ffochat.color,160)) + windower.add_to_chat(160, " fontsize: "..string.color(tostring(settings.linkshell.fontsize),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.fontsize),settings.party.color,160).." | "..string.color(tostring(settings.tell.fontsize),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.fontsize),settings.ffochat.color,160)) + windower.add_to_chat(160, " x: "..string.color(tostring(settings.linkshell.x),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.x),settings.party.color,160).." | "..string.color(tostring(settings.tell.x),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.x),settings.ffochat.color,160)) + windower.add_to_chat(160, " y: "..string.color(tostring(settings.linkshell.y),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.y),settings.party.color,160).." | "..string.color(tostring(settings.tell.y),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.y),settings.ffochat.color,160)) + windower.add_to_chat(160, " alpha: "..string.color(tostring(settings.linkshell.alpha),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.alpha),settings.party.color,160).." | "..string.color(tostring(settings.tell.alpha),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.alpha),settings.ffochat.color,160)) + windower.add_to_chat(160, " red: "..string.color(tostring(settings.linkshell.red),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.red),settings.party.color,160).." | "..string.color(tostring(settings.tell.red),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.red),settings.ffochat.color,160)) + windower.add_to_chat(160, " green: "..string.color(tostring(settings.linkshell.green),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.green),settings.party.color,160).." | "..string.color(tostring(settings.tell.green),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.green),settings.ffochat.color,160)) + windower.add_to_chat(160, " blue: "..string.color(tostring(settings.linkshell.blue),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.blue),settings.party.color,160).." | "..string.color(tostring(settings.tell.blue),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.blue),settings.ffochat.color,160)) + else +-- windower.add_to_chat(160," UseChatPorter: " .. string.color(onOffPrint(settings.usechatporter),204,160)) +-- windower.add_to_chat(160," DisplayLinkshellChat: " .. string.color(onOffPrint(settings.linkshell.displaychat),204,160)) +-- windower.add_to_chat(160," DisplayPartyChat: " .. string.color(onOffPrint(settings.party.displaychat),204,160)) +-- windower.add_to_chat(160," DisplayTellChat: " .. string.color(onOffPrint(settings.tell.displaychat),204,160)) +-- windower.add_to_chat(160," DisplayFFOChat: " .. string.color(onOffPrint(settings.ffochat.displaychat),204,160)) +-- windower.add_to_chat(160," LinkshellColor: " .. string.color(tostring(settings.linkshell.color),204,160)) +-- windower.add_to_chat(160," PartyColor: " .. string.color(tostring(settings.party.color),204,160)) +-- windower.add_to_chat(160," TellColor: " .. string.color(tostring(settings.tell.color),204,160)) +-- windower.add_to_chat(160," TellColor: " .. string.color(tostring(settings.ffochat.color),204,160)) + windower.add_to_chat(55, "ChatPorter status: "..string.color('linkshell',settings.linkshell.color,160).." | "..string.color('party',settings.party.color,160).." | "..string.color('tell',settings.tell.color,160).." | "..string.color('ffochat',settings.ffochat.color,160)) + windower.add_to_chat(160, " DisplayChat: "..string.color(onOffPrint(settings.linkshell.displaychat),settings.linkshell.color,160).." | "..string.color(onOffPrint(settings.party.displaychat),settings.party.color,160).." | "..string.color(onOffPrint(settings.tell.displaychat),settings.tell.color,160).." | "..string.color(onOffPrint(settings.ffochat.displaychat),settings.ffochat.color,160)) + windower.add_to_chat(160, " Color: "..string.color(tostring(settings.linkshell.color),settings.linkshell.color,160).." | "..string.color(tostring(settings.party.color),settings.party.color,160).." | "..string.color(tostring(settings.tell.color),settings.tell.color,160).." | "..string.color(tostring(settings.ffochat.color),settings.ffochat.color,160)) + windower.add_to_chat(160, " UseChatPorter: " .. string.color(onOffPrint(settings.usechatporter),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 + +function showColors() + colors = {} + colors[1] = 'Menu > Font Colors > Chat > Immediate vicinity ("Say")' + colors[2] = 'Menu > Font Colors > Chat > Wide area ("Shout")' + colors[3] = 'Menu > Font Colors > Chat > Extremely wide area ("Yell")' + colors[4] = 'Menu > Font Colors > Chat > Tell target only ("Tell")' + colors[5] = 'Menu > Font Colors > Chat > All party members ("Party")' + colors[6] = 'Menu > Font Colors > Chat > Linkshell group ("Linkshell")' + colors[7] = 'Menu > Font Colors > Chat > Emotes' + colors[8] = 'Menu > Font Colors > System > Calls for help' + colors[17] = 'Menu > Font Colors > Chat > Messages ("Message")' + colors[142] = 'Menu > Font Colors > Chat > NPC Conversations' -- 143? + colors[20] = 'Menu > Font Colors > For Others > HP/MP others loose' + colors[21] = 'Menu > Font Colors > For Others > Actions others evade' + colors[22] = 'Menu > Font Colors > For Others > HP/MP others recover' + colors[60] = 'Menu > Font Colors > For Others > Beneficial effects others are granted' + colors[61] = 'Menu > Font Colors > For Others > Detrimental effects others receive' + colors[63] = 'Menu > Font Colors > For Others > Effects others resist' + colors[28] = 'Menu > Font Colors > For Self > HP/MP you loose' + colors[29] = 'Menu > Font Colors > For Self > Actions you evade' + colors[30] = 'Menu > Font Colors > For Self > HP/MP you recover' + colors[56] = 'Menu > Font Colors > For Self > Beneficial effects you are granted' + colors[57] = 'Menu > Font Colors > For Self > Detrimental effects you receive' + colors[59] = 'Menu > Font Colors > For Self > Effects you resist' + colors[8] = 'Menu > Font Colors > System > Calls for help' + colors[50] = 'Menu > Font Colors > System > Standard battle messages' + colors[121] = 'Menu > Font Colors > System > Basic system messages' + + UsedColors = {9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,31,32,33,34,35,40,41,42,43,51,52,55,58,62,64,65,66,67,68,69,70,71,72,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,122,127,128,129,130,131,132,133,134,135,136,137,138,139,140,144,145,146,147,148,149,150,151,152,153,162,163,164,165,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,205,208,253,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,284,285,286,287,292,293,294,295,300,301,302,303,308,309,310,311,316,317,318,319,324,325,326,327,332,333,334,335,340,341,342,343,344,345,346,347,348,349,350,351,355,357,358,360,361,363,366,369,372,374,375,378,381,384,395,406,409,412,415,416,418,421,424,437,450,453,456,458,459,462,479,490,493,496,499,500,502,505,507,508} + makeArray = T{} + for v = 1, 255, 1 do + if colors[v] ~= nil then + windower.add_to_chat(v, string.rep(0,3-#tostring(v))..v.." - "..colors[v]) + else + if table.contains(UsedColors,v) ~= true then +-- makeArray[#makeArray+1] = "\x1F"..string.char(v)..string.rep(0,3-#tostring(v))..v.."\x1F"..string.char(160) + makeArray[#makeArray+1] = string.char(0x1F,v)..string.rep(0,3-#tostring(v))..v..string.char(0x1F,v)..string.char(160) + end + end + end + windower.add_to_chat(160,table.sconcat(makeArray)) +-- makeArray:vprint() +end + +function show(tbName) + if #_G['show'..tbName] > 8 then + table.remove(_G["show"..tbName],1) + end + windower.text.set_bg_color("show"..tbName, 200, 30, 30, 30) + if #_G['show'..tbName] == 0 then + windower.text.set_bg_visibility("show"..tbName, false) + else + windower.text.set_bg_visibility("show"..tbName, true) + end + windower.text.set_color("show"..tbName, settings[tbName].alpha, settings[tbName].red, settings[tbName].green, settings[tbName].blue) + windower.text.set_font("show"..tbName, settings[tbName].fontname) + windower.text.set_font_size("show"..tbName, settings[tbName].fontsize) + windower.text.set_location("show"..tbName, settings[tbName].x, settings[tbName].y) + windower.text.set_visibility("show"..tbName, settings[tbName].show) + if #_G['show'..tbName] <= settings[tbName].lines then + start = 1 + else + start = #_G['show'..tbName]-settings[tbName].lines+1 + end + windower.text.set_text("show"..tbName, " " ..table.concat(table.slice(_G['show'..tbName], start, #_G['show'..tbName]), '\n ')) + +-- windower.text.set_bg_border_size("show"..tbName, 1) +-- windower.text.set_bold("show"..tbName, false) +-- windower.text.set_italic("show"..tbName, false) +-- windower.text.set_right_justified("show"..tbName, false) +-- windower.text.set_stroke_color("show"..tbName, 255, 100, 100, 100) +-- windower.text.set_stroke_width("show"..tbName, 1) +end + +windower.register_event('ipc message',function (msg) + if (settings.usechatporter == true) then + if (string.find(msg, "|(%w+):(%w*)|(%a+)|(.+)")) then + a,b,chatMode,senderLSname,senderName,message = string.find(msg, "|(%w+):(%w*)|(%a+)|(.+)") + if (chatMode == "l") and (settings.linkshell.displaychat == true) then + if (senderLSname ~= LSname) then + windower.add_to_chat(settings.linkshell.color,"["..senderLSname.."] <"..senderName.."> "..message) + showlinkshell[#showlinkshell +1] = " ["..senderLSname.."] <"..senderName.."> "..message:strip_format().." " + show("linkshell") + end + elseif (chatMode == "t") and (settings.tell.displaychat == true) then + if (playerName ~= senderLSname) and (playerName ~= senderName) then + windower.add_to_chat(settings.tell.color,"[t] "..senderName..">>"..senderLSname.." "..message) + end + elseif (chatMode == "p") and (settings.party.displaychat == true) then + if (T(windower.ffxi.get_party()):with('name', senderName) == nil) then + windower.add_to_chat(settings.party.color," ("..senderName..") "..message) + showparty[#showparty +1] = " ("..senderName..") "..message:strip_format():trim().." " + show("party") + end + elseif (chatMode == "l2") then + windower.send_command("input /l "..message) + elseif (chatMode == "p2") then + windower.send_command("input /p "..message) + elseif (chatMode == "t2") then + windower.send_command("input /t "..message) + elseif (chatMode == "r2") then + windower.send_command("input /t "..lastTellFrom.." "..message) + elseif (chatMode == "f") then + windower.send_command("input /"..senderLSname.." "..message) + end + end + end +end) + +windower.register_event('incoming text',function (original, modified, mode) + if (playerName == nil) then + playerName = windower.ffxi.get_player().name + end + if (LSname == nil) then + LSname = windower.ffxi.get_player().linkshell + end + +--[[ + function inTable(tbl, item) + for key, value in pairs(tbl) do + if value == item then return key end + end + return false + end + + tbl = {12, 4, 13, 5, 14, 6, 214, 213, 212, 9, 1, 10, 2, 11, 3, 15, 7, 208, 121, 123, 204, 206, 90, 91, 127, 161, 138, 0, 207, 136, 160} + + if (mode ~= 206) then + if inTable(tbl, mode) then + else + windower.send_command("input /echo mode: " .. mode .. " message: " .. original) + print(' cp mode: '..mode..' message: '..original) + end + end +]]-- + + if (mode == 6) or (mode == 14) or (mode == 213) or (mode == 214) then -- linkshell + if (string.find(original:strip_format(), "%[(%d+)%]<(%a+)> (.+)")) then + a,b,lsnum,player,message = string.find(original:strip_format(), "%[(%d+)%]<(%a+)> (.+)") + windower.send_ipc_message(specialChar.."l:"..LSname..specialChar..player..specialChar..message) + showlinkshell[#showlinkshell +1] = " ["..lsnum.."]<"..player.."> "..message:strip_format():trim().." " + show("linkshell") + end + elseif (mode == 5) or (mode == 13) then -- party + if (string.find(original:strip_format(), "%((%a+)%) (.+)")) then + a,b,player,message = string.find(original:strip_format(), "%((%a+)%) (.+)") + windower.send_ipc_message(specialChar.."p:"..""..specialChar..player..specialChar..message) + showparty[#showparty +1] = " ("..player..") "..message:strip_format():trim().." " + show("party") + end + elseif (mode == 4) or (mode == 12) then -- tell + if (string.find(original:strip_format(), ">>(%a+) : (.+)")) then -- incoming + a,b,player,message = string.find(original:strip_format(), ">>(%a+) : (.+)") + lastTellFrom = player; + windower.send_ipc_message(specialChar.."t:"..player..specialChar..playerName..specialChar..message) + showtell[#showtell +1] = " >>"..player.." : "..message:strip_format():trim().." " + show("tell") + elseif (string.find(original:strip_format(), "(%a+)>> (.+)")) then -- outgoing + a,b,player,message = string.find(original:strip_format(), "(%a+)>> (.+)") + windower.send_ipc_message(specialChar.."t:"..playerName..specialChar..player..specialChar..message) + showtell[#showtell +1] = " "..player..">> "..message:strip_format():trim().." " + show("tell") + end + end + + if (string.find(original:strip_format(), "%[(%d+):#(%a+)%](.+): (.+)")) then + a,b,channum,chanchan,player,message = string.find(original:strip_format(), "%[(%d+):#(%a+)%](.+): (.+)") +-- windower.send_ipc_message(specialChar.."f:"..player..specialChar..playerName..specialChar..message) + showffochat[#showffochat +1] = " "..original:strip_format():trim().." " + show("ffochat") + end + +--[[ +tell: in 12, out 4 +party: in 13, out 5 +linkshell: in 14, out 6 +linkshell2: in 214, out 213 +unity: in 212, out 212 + +say: in 9, out 1 +shout: in 10, out 2 +yell: in 11, out 3 +emote: in 15, out 7 + +3: ffochat channel +208: examines +121: browse and leaving bazaar +123: no party members message +204: player comments (seacom) +206: echo +90, 91, 127: uses an item +110: synergy overload +52: starts casting warp +64: casts warp +161: conquest results +138: bought from bazaar +0: player title +136: logout message +200: server welcome message +217: ls2 message +205: ls message +157: command error + +--]] +end) |