Like CODE, it'll keep things aligned correctly with monospaced characters and preserve whitespace, so you can include ASCII art.
Unlike CODE, LOG won't put things in a box with green text, and BBcodes will work inside of it, allowing the use of colors!
CODE:
Code: Select all
Based on DikuMUD by Hans Staerfeldt, Katja Nyboe,
Tom Madsen, Michael Seifert, and Sebastian Hammer
Based on MERC 2.1 code by Hatchet, Furey and Kahn
Based on ROM 2.4 copyright 1993-1998 Russ Taylor
_ (\ /) _
//\_\\/\ /\//_/\\
(( `>\_) (_/<` ))
\\./` \\, _._ ,// `\.//
The Inquisition MUTT \/ \|\.---` `---./|/ \/
2010-Present Kinaed | _____ |
2004-2008 by Ephera \ ]==o==[ /
inq 2.5 by Tamara Boileau | \_ _/ |
| V |
-_ ---___- ,, \ .V. /
(' || || \ <___> /
(( || ||/\\ _-_ \ /
(( || || || || \\ `. .'
(( // || || ||/ //`:::`\\
-____- \\ |/ \\,/ // ' \\
// \\
(/ \)
_-_, ,
// ' ' || '
|| \\/\\ /'\\ \\ \\ \\ _-_, \\ =||= \\ /'\\ \\/\\
-|| || || || || || || || ||_. || || || || || || ||
|| || || || || || || || - || || || || || || || ||
_-_, \\ \\ \\,|| \\/\\ \\ ,-_- \\ \\, \\ \\,/ \\ \\
||
|/ L E G A C Y
By what name shall history remember ye? [Type your desired character name.]
Based on DikuMUD by Hans Staerfeldt, Katja Nyboe, Tom Madsen, Michael Seifert, and Sebastian Hammer Based on MERC 2.1 code by Hatchet, Furey and Kahn Based on ROM 2.4 copyright 1993-1998 Russ Taylor _ (\ /) _ //\_\\/\ /\//_/\\ (( `>\_) (_/<` )) \\./` \\, _._ ,// `\.// The Inquisition MUTT \/ \|\.---` `---./|/ \/ 2010-Present Kinaed | _____ | 2004-2008 by Ephera \ ]==o==[ / inq 2.5 by Tamara Boileau | \_ _/ | | V | -_ ---___- ,, \ .V. / (' || || \ <___> / (( || ||/\\ _-_ \ / (( || || || || \\ `. .' (( // || || ||/ //`:::`\\ -____- \\ |/ \\,/ // ' \\ // \\ (/ \) _-_, , // ' ' || ' || \\/\\ /'\\ \\ \\ \\ _-_, \\ =||= \\ /'\\ \\/\\ -|| || || || || || || || ||_. || || || || || || || || || || || || || || || - || || || || || || || || _-_, \\ \\ \\,|| \\/\\ \\ ,-_- \\ \\, \\ \\,/ \\ \\ || |/ L E G A C Y By what name shall history remember ye? [Type your desired character name.]
So! How to make pretty logs like this for the forums?
If your client can save raw log files, there's a handy converter called Ansifilter, which can convert raw ANSI codes like muds use to bbcode!
So first, you'll likely want to use a color map with it. Here's mine, but you can adjust the colors to how you like them:
Code: Select all
0 = #666666 -- black
1 = #990000 -- red
2 = #00A600 -- green
3 = #D9A000 -- yellow
4 = #00006F -- blue
5 = #B200B2 -- magenta
6 = #00A6B2 -- cyan
7 = #BFBFBF -- white
8 = #666666 -- grey
9 = #E50000 -- bright red
10 = #00D900 -- bright green
11 = #E5E500 -- bright yellow
12 = #0000FF -- bright blue
13 = #E500E5 -- bright magenta
14 = #00E5E5 -- bright cyan
15 = #FFFFFF -- bright white
For Mac users, here's a script I wrote that allows you to copy a part of the raw log, and it'll convert it and clean it up for immediate pasting into the forums.
Some of its features:
- It deletes all plain white color codes. the LOG bbcode sets the default to white, so they're not needed, and removing them considerably cuts down the characters needed.
It also erases color codes that don't actually color anything.
it filters out OOC and visnet channels, as well as Merchants and Physicians (others can be added)
It filters out things I tend to spam a lot, like score, the rumor list, who list, where list, and others.
To use, paste the following into Script Editor (Found in the Utilities folder), set the colormap variable to the path to your colormap file, open up BBEdit, copy the part of the raw log you'd like to use, then click the "Run" button () in Script Editor. The log should then be ready to be pasted to the forums inside a LOG bbcode.
Code: Select all
set colormap to "/path/to/colormap.txt" -- change this to the path to your colormap.txt file.
tell application "BBEdit"
set the clipboard to (replace "^\\r(.+)" using "\\1" searchingString (the clipboard) options {search mode:grep}) -- Strip leading carraige returns if line isn't empty. May not be needed depending on logfile. If lines clump together, try disabling. If single spaced lines become double-spaced, keep enabled.
set the clipboard to (replace "\\[0;37m(.*)\\[0m$" using ">\\1" searchingString (the clipboard) options {search mode:grep}) -- mark input lines with leading >
do shell script "[[ $__CF_USER_TEXT_ENCODING =~ ^(.*):(.*):(.*)$ ]] && rgn=${BASH_REMATCH[3]} || rgn=0;export LC_CTYPE=UTF-8;pbpaste | perl -CS -0777 -pe 's/\\r\\n|\\r/\\n/g' | pbcopy" -- fix linefeeds - gets current region code, sets text encoding to UTF-8, and converts CR/CRLF to LF UTF code. (May or may not be needed, depending on logfile.)
do shell script "pbpaste | /usr/local/bin/ansifilter -B -m " & colormap & " | pbcopy" -- Convert raw ANSI log in clipboard to BBcode.
set fixedtext to (the clipboard) as text -- Now that the log is converted to BBcode, filter it for content and prettiness.
(*
-- Set bold colors to bright bold colors. If you change the colors in the colormap, set these as well. (Not needed in newer versions of Ansifilter)
set fixedtext to replace "[color=#990000][b]" using "[color=#E50000][b]" searchingString fixedtext -- bold red to bright bold red
set fixedtext to replace "[color=#00A600][b]" using "[color=#00D900][b]" searchingString fixedtext -- bold green to bright bold green
set fixedtext to replace "[color=#d9a000][b]" using "[color=#E5E500][b]" searchingString fixedtext -- bold yellow to bright bold yellow
set fixedtext to replace "[color=#00006F][b]" using "[color=#0000FF][b]" searchingString fixedtext -- bold blue to bright bold blue
set fixedtext to replace "[color=#B200B2][b]" using "[color=#E500E5][b]" searchingString fixedtext -- bold magenta to bright bold magenta
set fixedtext to replace "[color=#00A6B2][b]" using "[color=#00E5E5][b]" searchingString fixedtext -- bold cyan to bright bold cyan
set fixedtext to replace "[color=#BFBFBF][b]" using "[color=#FFFFFF][b]" searchingString fixedtext -- bold white to bright bold white
*)
-- Color cleanup
set fixedtext to replace "\\[color=#bfbfbf\\]((.|\\n)*?)\\[/color\\]" using "\\1" searchingString fixedtext options {search mode:grep} -- strip plain white lines of color codes.
set fixedtext to replace "\\[color=#.{6}\\](\\s*?)\\[/color\\]" using "\\1" searchingString fixedtext options {search mode:grep} --remove colors that don't color anything.
-- Filters: Comment individual lines out with -- if you'd like them left in the log.
-- Channel strippers
set fixedtext to replace "\\[color=#E50000\\]\\[b\\].*tells you,.*|\\[color=#E50000\\]\\[b\\]You tell.*|\\[color=#E50000\\]\\[b\\]You reply to.*|\\[color=#E50000\\]\\[b\\].*replies to you,.*|\\[Multiple tell, sent to:.*" using "" searchingString fixedtext options {search mode:grep} -- tells
set fixedtext to replace "\\(visnet\\) \\[color=#0000FF\\](.*)$" using "" searchingString fixedtext options {search mode:grep} -- Visnet
set fixedtext to replace "\\[color=#00a6b2\\]\\[\\[/color\\]OOC\\[color=#00a6b2\\]]\\[/color\\].*" using "" searchingString fixedtext options {search mode:grep} -- OOC
set fixedtext to replace "\\[color=#FFFFFF\\]\\[b\\]\\[\\[/b\\]\\[/color\\]\\[color=#00E5E5\\]\\[b\\]Physicians\\[/b\\].*" using "" searchingString fixedtext options {search mode:grep} -- Physicians
set fixedtext to replace "\\[color=#FFFFFF\\]\\[b\\]\\[\\[/b\\]\\[/color\\]\\[color=#666666\\]\\[b\\]Merchants\\[/b\\].*" using "" searchingString fixedtext options {search mode:grep} -- Merchants
-- OOC stuff strippers
set fixedtext to replace "\\nGaggable keepalive command." using "" searchingString fixedtext --Keepalive messages
set fixedtext to replace "\\n[color=#00a6b2](This is an OOC room. Nothing counts for rpxp here.)[/color]" using "" searchingString fixedtext --OOC room messages
set fixedtext to replace "\\n\\[color=#E50000\\]\\[b\\]WARNING: Osays exist only to clarify RP and cost 5 RPXP. Please move to tells if possible.\\[/b\\]\\[/color\\]" using "" searchingString fixedtext -- osay Warnings
set fixedtext to replace "\\[color=#00a6b2\\] Name \\[/color\\]\\[color=#990000\\]: \\[/color\\]((.|\\n)*?)(character status.\\[/color\\]|affected by anything.\\[/color\\])" using "" searchingString fixedtext options {search mode:grep} -- Score
set fixedtext to replace "\\[color=#00a6b2\\]------------------------------------------------------------------------\\n\\[/color\\]\\[color=#00E5E5\\]\\[b\\] Combat((.|\\n)*?)Backstab.*$" using "" searchingString fixedtext options {search mode:grep} -- ab com
set fixedtext to replace "Rooms with players who have toggled WHERERP on:((.|\\n)*?)to toggle it (on|off).\\[/color\\]" using "" searchingString fixedtext options {search mode:grep} -- whererp
set fixedtext to replace "^These are the rumors((.|\\n)*?)(\\[color=#00a6b2\\]\\[RPxp: .*)" using "\\1" searchingString fixedtext options {search mode:grep} -- Rumors- relies on prompt for Ending.
set fixedtext to replace "^ \\S((.|\\n)*?)Please VOTE for TI on the links at https://ti-legacy.com\\[/b\\]\\[/color\\]" using "" searchingString fixedtext options {search mode:grep} -- Who list
set fixedtext to replace "^>(look|l) (.*)$" using " >look \\2" searchingString fixedtext options {search mode:grep} -- Keep looks
set fixedtext to replace "\\n>(.*)$" using "" searchingString fixedtext options {search mode:grep} -- Input lines
set fixedtext to replace "\\[color=#00a6b2\\]\\[RPxp: .*" using "" searchingString fixedtext options {search mode:grep} -- Prompt
set fixedtext to replace "\\n\\n\\n*" using "\\n\\n" searchingString fixedtext options {search mode:grep} -- Line normalizer. More than double lines reduced to double.
set the clipboard to fixedtext -- Copy filtered BBcode log to clipboard for pasting.
end tell
To install, paste the script below into Notepad and save it to MUSHclient\worlds\plugins\Copy_BBcode.xml
It can be loaded from File:Plugins --> Add
It will look for ansifilter at MUSHclient\ansifilter\ansifilter.exe, and the colormap at MUSHclient\colormap.txt
Be sure to grab the latest ansifilter from http://www.andre-simon.de/zip/download.php and unzip it to MUSHclient\ansifilter
and copy/paste the colormap above into notepad and save it to MUSHclient\colormap.txt
Code: Select all
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- MuClient version 4.94 -->
<!-- Plugin "Copy_BBCode" generated by Plugin Wizard -->
<muclient>
<plugin
name="Copy_BBCode"
author="Taunya"
id="56d2afae8c02325fcc5c191a"
language="Lua"
purpose="Copys output with BBcode"
date_written="2018-05-19 10:08:09"
requires="4.00"
version="1.0"
>
<description trim="y">
Copies text from the output window to the clipboard, with BBcode codes.
Based on TI Colour Copy by Nick Gammon.
To use: highlight text and then:
Ctrl+B copy (like Ctrl+C but different)
or: Ctrl + Left-click and select "Copy BBCode"
</description>
</plugin>
<aliases>
<alias
match="Copy_BBCode:56d2afae8c02325fcc5c191a"
enabled="y"
omit_from_output="y"
sequence="100"
script="CopyScript"
name="Copy_BBCode"
menu="y"
>
</alias>
</aliases>
<!-- Get our standard constants -->
<include name="constants.lua"/>
<!-- Script -->
<script>
<![CDATA[
-- Thank you, Shaun Biggs, for taking your time to write the CopyScript
-- (formerly Copy2) function below. It was slightly altered by me to suit
-- my usage (wordwrapped lines and no \r\n at start of selection).
local BLACK = 1
local RED = 2
local GREEN = 3
local YELLOW = 4
local BLUE = 5
local MAGENTA = 6
local CYAN = 7
local WHITE = 8
-- how each colour is to appear (black is not supported on Aardwolf)
local conversion = {
[GetNormalColour (RED)] = ANSI (0, 31),
[GetNormalColour (GREEN)] = ANSI (0, 32),
[GetNormalColour (YELLOW)] = ANSI (0, 33),
[GetNormalColour (BLUE)] = ANSI (0, 34),
[GetNormalColour (MAGENTA)] = ANSI (0, 35),
[GetNormalColour (CYAN)] = ANSI (0, 36),
[GetNormalColour (WHITE)] = ANSI (0, 37),
[GetNormalColour (BLACK)] = ANSI (1, 30),
[GetBoldColour (RED)] = ANSI (1, 31),
[GetBoldColour (GREEN)] = ANSI (1, 32),
[GetBoldColour (YELLOW)] = ANSI (1, 33),
[GetBoldColour (BLUE)] = ANSI (1, 34),
[GetBoldColour (MAGENTA)] = ANSI (1, 35),
[GetBoldColour (CYAN)] = ANSI (1, 36),
[GetBoldColour (WHITE)] = ANSI (1, 37),
[GetBoldColour (BLACK)] = ANSI (1, 30),
} -- end conversion table
function getbbcode ()
f = assert (io.open ("bbcode.txt", "r"))
local bbcode = f:read ("*all")
SetClipboard (bbcode)
f:close ()
end -- getbbcode
function DoOneLine (styles, startcol, endcol)
-- remove unneeded style runs at the start
while next (styles) and startcol > styles [1].length do
startcol = startcol - styles [1].length
endcol = endcol - styles [1].length
table.remove (styles, 1)
end -- do
-- nothing left? uh oh
if not next (styles) then return end
-- discard unwanted part of first good style
if startcol > 1 then
styles [1].length = styles [1].length - startcol
endcol = endcol - startcol + 1
styles [1].text = styles [1].text:sub (startcol)
startcol = 1
end -- if
-- copy appropriate styles and codes into the output
while next (styles) do
local len = endcol - startcol + 1
if len < 0 or endcol < 1 then
return
end -- done
-- last style?
if len < styles [1].length then
styles [1].length = len
styles [1].text = styles [1].text:sub (1, len)
end -- if last style
-- fixup string first - change { to {{ and ~ to {-
local text = string.gsub (styles [1].text, "{", "{{")
text = string.gsub (styles [1].text, "~", "{-")
-- put code in front, if we can find one
local code = conversion [styles [1].textcolour]
if code then
copystring = copystring .. code
end -- if code found
-- now the text
copystring = copystring .. text
-- less to go now
endcol = endcol - styles [1].length
-- done this style
table.remove (styles, 1)
end -- while
end -- DoOneLine
function CopyScript(name, line, wildcs)
-- find selection in output window, if any
local first_line, last_line = GetSelectionStartLine(),
math.min (GetSelectionEndLine(), GetLinesInBufferCount ())
local first_column, last_column = GetSelectionStartColumn(), GetSelectionEndColumn()
-- nothing selected, do normal copy
if first_line <= 0 then
DoCommand("copy")
return
end -- if nothing to copy from output window
copystring = ""
-- iterate to build up copy text
for line = first_line, last_line do
if line < last_line then
DoOneLine (GetStyleInfo(line), first_column, GetLineInfo(line).length)
first_column = 1
-- Is this a new line or merely the continuation of a paragraph?
if GetLineInfo (line, 3) then
copystring = copystring .. "\r\n"
end -- new line
else
DoOneLine (GetStyleInfo(line), first_column, last_column)
end -- if
end -- for loop
-- Get rid of a spurious extra new line at the start.
if copystring:sub (1, 2) == "\r\n" then
copystring = copystring:sub (3)
end -- if newline at start
if copystring:sub (-2) ~= ANSI (0, 37) then
copystring = copystring .. ANSI (0, 37)
end -- if newline at start
-- finally can set clipboard contents
-- SetClipboard(copystring)
f = assert (io.open ("ansi.txt", "w")) -- open file to export code
f:write (copystring) -- write to file
f:close () -- close it
os.execute('ansifilter\\ansifilter.exe -B -m colormap.txt -i ansi.txt -o bbcode.txt') -- run ansifilter to convert ANSI to BBcode
DoAfterSpecial (2, 'getbbcode()', sendto.script)
end -- function CopyScript
AcceleratorTo ("Ctrl+B", "CallPlugin ('56d2afae8c02325fcc5c191a', 'CopyScript', '')", sendto.script)
]]>
</script>
</muclient>
It seems the output will be a bit messier than from a logfile, but it should be fine for quick snipplets!
Disclaimer: I don't use MUSHclient, so I can't guarantee it'll work perfectly.