Since It's Apparently Some Secret:

Apparently people feel some secrecy surrounding gmcp chat capture (or genuinely don't know how it's done), so I'll just post how to do it here.
Note, this'll work with virtually every form of chat capturing out there, it simply requires you to change the function line (which I'll detail what one to change)

Firstly: Add this to your login trigger.[spoiler]
sendGMCP([[Core.Supports.Add ["Comm.Channel 1"] ]])

[/spoiler]

Secondly: Make a new script, specifically called chat_capture, with the registered event handler of gmcp.Comm.Channel.Start
[spoiler]
function chat_capture()
local ch = gmcp.Comm.Channel.Start if not chat_channels then check_channels() end
chat_channels.last = "Misc" for c, t in pairs(chat_channels.types) do if ch:find(c) then
chat_channels.last = t break
end end
enableTrigger("Chat Processor") end

function check_channels()
chat_channels = chat_channels or {}
chat_channels.last = chat_channels.last or ""
chat_channels.types = {
["newbie"] = "Misc", ["market"] = "Misc",
["ct"] = "Orgs", ["ht"] = "Orgs",
["hts"] = "Orgs", ["hnt"] = "Orgs",
["clt"] = "Tells", ["Party"] = "Tells",
["tell"] = "Tells", ["says"] = "Says",
["ot"] = "Misc" }
end

   The above table here should be reflected to how you want the messages to be processed. Change the values between the quotation marks to match your needs. (The names should be the same that appear on your chat capture)

[/spoiler]

Thirdly: Make another script specifically called chat_processed, with the registered event handler of: chat prompt processed
[spoiler]
function chat_processed()
disableTrigger("Chat Processor")
end

[/spoiler]

Finally: Download and import the trigger which is included in this post. The function you need to change will be located within the 'Chat Parser' trigger.

     agui_process_chat(chat_channels.last)
The above is the line specifically, that you'll have to change. For those who use demonnic (the original tabbed chat), change the line to
     demonnic.chat:append(chat_channels.last)



You're welcome.

«1

Comments

  • Forgot to note. Within the same Chat Parser trigger, is the
    local ignore = {"halfling" ,"cyclops","gnoll", "mingruk", "tsol'aa ", "Talus, the caveman", "e glubber", "arcadian", "Adalgar"}


    You can add whatever you want to this, and it'll simply not process any line that has the above things within the first match (The part which captures WHO is saying the line, not the words which are spoken)

  • edited May 2015
    Any idea why I'm capturing room inventory in my chat console after doing this?
    whut.jpg 514.7K
  • edited May 2015
    No clue! Make sure the Chat Processor folder is 'locked' when you install it. If it's not, it'll keep doing that until you do lock it.

    In hindsight, I probably should've mentioned that.

  • edited May 2015
    Okay so, I'm an idiot, sorry...

    function Geyser.MiniConsole:append()
    appendBuffer(self.name) end

    You'll also need to add the above function into scripts, for it to work properly (demonnic SHOULD have this by default, but the thing I'm going to post below won't have it)

    Since I've been asked, and because I'm nice... Those of you using @Zulah's D3 GUI will need an additional function, since he uses a different way of copying.

    Firstly, you'll have to adjust the table to reflect the actual miniconsoles themselves. For instance

       ["ct"] = "d3citychat",
    ["tells"] = "d3tellschat",

    etcetera.

    Following that, where I said to change:

    agui_process_chat(chat_channels.last
    You'll want to instead make the trigger as follows.
    if not ignoret then
    selectString(line,1)
    copy()
    chat_channels.last:append()
    d3allchat:append()
     end


    Aaaaaand, for those using his other free GUI. You'll have to edit the tables as follows
       ["ct"] = "cityChat_1",
    ["ht"] = "houseChat_1",

    etcetera.

    As for the trigger:
    if not ignoret then
    selectString(line,1)
    copy()
    chat_channels.last:append()
    allChat_1:append()
     end




  • Also as a final note, you'll want to remove all the other previous chat triggers. Or at the very least, turn them off, to prevent double capturing or cock-ups with it.

  • KasyaKasya Tennessee
    @Cynlael - as I'm working to build off both your and Zulah's GUIs to get mine set up the way I want, I love you for this. :)
  • @Zulah - If at all possible, care to package it as an external plugin for those of us who have already heavily tweaked your GUi and just want to add the chat?

    image
  • This seriously was a secret. Only been looking for this for the past 2-3 years...Thanks!
  • AustereAustere Tennessee
    Okay, I added this last night after a raid and I just want to say: you're awesome. Now if only it worked for deathsight.  
  • just use a colour trigger for deathsight, that's not linked to any other channel. (Have to use base 15 colours, though)

  • Is it possible to capture the GMCP message without using says/sing/whatever triggers to capture it?
    If you need me, you can find me sporadically on the Achaea Discord as Yae. 
    Do not DM on forums unless you're ok with waiting a couple months!
  • TharvisTharvis The Land of Beer and Chocolate!
    Yae said:
    Is it possible to capture the GMCP message without using says/sing/whatever triggers to capture it?

    gmcp.Comm.Channel.Text.text 

    Says/sings etc show up on there, too. Basically anything that isn't an illusion/membrane/event denizen shouts (like tharos, his shouts don't show up in there)/some denizen yells

    Aurora says, "Tharvis, why are you always breaking things?!"
    Artemis says, "You are so high maintenance, Tharvis, gosh."
    Tecton says, "It's still your fault, Tharvis."

  • edited June 2015
    Shouts aren't tracked via GMCP, is why they don't. Otherwise they'd default to the 'misc' tab. Same with yells.

  • KasyaKasya Tennessee
    I've messed up at some stage somewhere. Will need to give this another go soon.
  • KasyaKasya Tennessee
    Alright, I've done everything in this thing, left Zulah's Free GUI scripts alone other than to disable triggers. Made sure I had the right labels in the chat_capture script. And it captures nothing. Any ideas?
  • Make sure to read my other posts in the thread. I missed some things. If no dice, then show errors log.

  • KasyaKasya Tennessee
    it may have something to do with the fact that the GUI doesn't load on startup?

    *** starting new session ***
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:2: attempt to index field 'Char' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:2: attempt to index field 'Char' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<event handler function> function:<keneanung.bashing.roomItemCallback>
             <...ara\.config\mudlet\profiles\Kasya\Bashing\script.lua:590: attempt to index field 
    'Room' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function Trigger2890()..."]:21: attempt to index global 'hpbar' (a nil value)>
    [ERROR:] object:<Prompt Detect & Update> function:<Trigger2890>
             <[string "function mapswap()..."]:2: attempt to index field 'Room' (a nil value)>
    [ERROR:] object:<event handler function> function:<keneanung.bashing.roomItemCallback>
             <...ara\.config\mudlet\profiles\Kasya\Bashing\script.lua:590: attempt to index field 
    'Room' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger2924>
             <[string "function Trigger2924()..."]:14: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger2924>
             <[string "function Trigger2924()..."]:14: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger2924>
             <[string "function Trigger2924()..."]:14: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger3583>
             <[string "function Trigger3583()..."]:12: attempt to call global 'agui_process_chat' (a 
    nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger3583>
             <[string "function Trigger3583()..."]:12: attempt to call global 'agui_process_chat' (a 
    nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger3583>
             <[string "function Trigger3583()..."]:12: attempt to call global 'agui_process_chat' (a 
    nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger3583>
             <[string "function Trigger3583()..."]:14: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger3583>
             <[string "function Trigger3583()..."]:14: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger3583>
             <[string "function Trigger3583()..."]:14: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Target gone> function:<Trigger159>
             <[string "function Trigger159()..."]:2: attempt to index field 'Modes' (a nil value)>
    [ERROR:] object:<Target gone> function:<Trigger159>
             <[string "function Trigger159()..."]:2: attempt to index field 'Modes' (a nil value)>
    [ERROR:] object:<shielded> function:<Trigger173>
             <...ara\.config\mudlet\profiles\Kasya\Bashing\script.lua:421: attempt to index field '?' 
    (a nil value)>
    [ERROR:] object:<shielded> function:<Trigger173>
             <...ara\.config\mudlet\profiles\Kasya\Bashing\script.lua:421: attempt to index field '?' 
    (a nil value)>
    [ERROR:] object:<shielded> function:<Trigger173>
             <...ara\.config\mudlet\profiles\Kasya\Bashing\script.lua:421: attempt to index field '?' 
    (a nil value)>
    [ERROR:] object:<shielded> function:<Trigger173>
             <...ara\.config\mudlet\profiles\Kasya\Bashing\script.lua:421: attempt to index field '?' 
    (a nil value)>
    [ERROR:] object:<shielded> function:<Trigger173>


  • KasyaKasya Tennessee
    okay where does this get added?

    function Geyser.MiniConsole:append()
    appendBuffer(self.name) end
  • In a blank script will be fine.

  • KasyaKasya Tennessee
    edited June 2015
    Ahh. Okay! Trying that.


    And... still getting this:

    [ERROR:] object:<Chat Parser> function:<Trigger2928>
             <[string "function Trigger2928()..."]:15: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger2928>
             <[string "function Trigger2928()..."]:15: attempt to call method 'append' (a nil value)>
    [ERROR:] object:<Chat Parser> function:<Trigger2928>
             <[string "function Trigger2928()..."]:15: attempt to call method 'append' (a nil value)>

  • KasyaKasya Tennessee
    This is going to get worse when I try and add your crit hit tracker in, isn't it? :(
  • Possibly. No promises. :3

  • KasyaKasya Tennessee
    Okay, going to leave everything I've done and start from scratch. Maybe I typed something wrong in there...
  • KasyaKasya Tennessee
    The other method wouldn't work, but this did:

    if not ignoret then
       selectString(line,1)
       copy()
        _G[chat_channels.last]:appendBuffer()
       allChat_1:appendBuffer()
     end
  • Kasya said:
    The other method wouldn't work, but this did:

    if not ignoret then
       selectString(line,1)
       copy()
        _G[chat_channels.last]:appendBuffer()
       allChat_1:appendBuffer()
     end
    You fixed my issues, but party doesn't work though :(

    image
  • edited June 2015
    Deleted, bad code.

    image
  • KasyaKasya Tennessee
    @Siduri make the P in Party a p, and restart. That worked for me.
  • KasyaKasya Tennessee
    So what I have, cause I use party and group at times:

    ["party"] = "partyChat_1",
    ["gt"] = "partyChat_1",
  • KasyaKasya Tennessee
    And if anyone has the other channels, feel free to add them here. I checked the GMCP documentation and couldn't find them.
Sign In or Register to comment.