You know what to do. type !tthelp for a run-down. Change the directory to autosave to with the first line of the OnJoinRoom period.
Add bot-admins to the usergroup "botcontrol".
This script keeps a tally of talkers in your room. It stores all of these talker's names and their message tally in a single string, held in memory.
Every N messages (definable using the !ttcutNUMBER command), the whole string is saved to a text file named savetalkers.txt, in the directory
named within the first command of the OnJoinRoom period.
When users change names, their names within the tally is changed too, but if they leave then return with a different name, they will need to ask
a bot-admin to use the !ttcombine command to add their old message tally to their new name. The other way of handling this would be keeping
a log of talker's ips with their last known name; I decided against this as most of you will have name/ip/hostname logging features in your bots already.
Every visual aspect of this script is configurable; from the ASCII characters used to represent each unit in the graph, to the different colours used to
differentiate between bars representing hundreds and bars representing single units. Make your own end-caps to the graph bars using !ttcapASCIIHERE;
Place ^name^ within the ASCII to place the talker's name there, and ^value^ to place where their number of messages will go. All of these settings
are saved within the same file as the talkers list. If you dont want to wait for it to automatically save, you can manually save with !ttsave.
Enjoy =)
<config>
<OnJoinRoom type="script">
<out type="push"extdata="talkerssavedirectory">C:\</out>
<out type="push"extdata="autosavetick">0</out>
<out type="push"extdata="ttgraphbar">|</out>
<out type="push"extdata="ttgraphbarcap">]^name^ (^value^)</out>
<out type="push"extdata="ttgraphbarcol">#c66#</out>
<out type="push"extdata="ttgraphbarhundredscol">#c6#</out>
<out type="push"extdata="messagesbeforeautosave">200</out>
<out type="push"extdata="occamsrazor">5</out>
</OnJoinRoom>
<OnRename type="script">
<out type="push"extdata="ttoldname">%OLDNAME%</out>
<out type="push"extdata="ttnewname">%NEWNAME%</out>
<out type="push"extdata="ttnewname"><operator type="strrep"lvalue="*"rvalue="+"nvalue="$ttnewname$"/></out>
<out type="push"extdata="toptalkers"><operator type="strrep"lvalue="{{{$ttoldname$^^"rvalue="{{{$ttnewname$^^"nvalue="$toptalkers$"/></out>
</OnRename>
<command type="script">
<in>%PARAMETER%</in>
<out type="goto"extdata="23"condition="!?"lvalue="%PARAMETER%"rvalue=" "></out>
<out type="goto"extdata="22"condition="=="lvalue="%IP%"rvalue="0.0.0.0"></out>
<out type="goto"extdata="21"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="curname">%NAME%</out>
<out type="push"extdata="curname"><operator type="strrep"lvalue="*"rvalue="+"nvalue="$curname$"/></out>
<out type="push"extdata="totalmessages"><operator type="++"lvalue="$totalmessages$"/></out>
<out type="push"extdata="justadded">0</out>
<out type="push"extdata="justadded"condition="!?"lvalue="$toptalkers$"rvalue="{{{$curname$^^">1</out>
<out type="push"extdata="justspoken">$curname$</out>
<out type="push"extdata="toptalkers"condition="=="lvalue="$justadded$"rvalue="1">$toptalkers${{{$justspoken$^^1}}}</out>
<out type="goto"extdata="12"condition="1"lvalue="$justadded$"rvalue="1"></out>
<out type="push"extdata="namepos"><operator type="strfind"lvalue="$toptalkers$"rvalue="$justspoken$"/></out>
<out type="push"extdata="namesize"><operator type="strlen"lvalue="$justspoken$^^"/></out>
<out type="push"extdata="leftofcounter"><operator type="+"lvalue="$namepos$"rvalue="$namesize$"/></out>
<out type="push"extdata="counter"><operator type="strright"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="leftofcounter"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="rightofcounter">$counter$</out>
<out type="push"extdata="roctwo"><operator type="strfind"lvalue="$counter$"rvalue="}}}"/></out>
<out type="push"extdata="rightofcounter"><operator type="strright"lvalue="$rightofcounter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="counter"><operator type="strtrm"lvalue="$counter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="counter"><operator type="++"lvalue="$counter$"/></out>
<out type="push"extdata="toptalkers">$leftofcounter$$counter$$rightofcounter$</out>
<out type="push"extdata="autosavetick"><operator type="++"lvalue="$autosavetick$"/></out>
<out type="self"condition="1"lvalue="$autosavetick$"rvalue="$messagesbeforeautosave$">autosave</out>
<out></out>
</command>
<command type="script">
<in>!rating</in>
<out type="push"extdata="justspoken">%NAME%</out>
<out type="push"extdata="justspoken"><operator type="strrep"lvalue="*"rvalue="+"nvalue="$justspoken$"/></out>
<out condition="!?"lvalue="$toptalkers$"rvalue="{{{$justspoken$^^">You are not on the list! (You havn't entered a full sentence yet..)</out>
<out type="break"condition="!?"lvalue="$toptalkers$"rvalue="{{{$justspoken$^^"></out>
<out type="push"extdata="namepos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$justspoken$"/></out>
<out type="push"extdata="namesize"><operator type="strlen"lvalue="{{{$justspoken$^^"/></out>
<out type="push"extdata="leftofcounter"><operator type="+"lvalue="$namepos$"rvalue="$namesize$"/></out>
<out type="push"extdata="counter"><operator type="strright"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="leftofcounter"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="rightofcounter">$counter$</out>
<out type="push"extdata="roctwo"><operator type="strfind"lvalue="$counter$"rvalue="}}}"/></out>
<out type="push"extdata="rightofcounter"><operator type="strright"lvalue="$rightofcounter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="counter"><operator type="strtrm"lvalue="$counter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="currentscalingvalue">$counter$</out>
<out type="push"extdata="currentgraph"></out>
<out type="push"extdata="cvg">$currentscalingvalue$</out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbarcol$"/></out>
<out type="push"extdata="currentscalingmodulosave">0</out>
<out type="push"extdata="currentscalingmodulosave"condition=">"lvalue="$currentscalingvalue$"rvalue="100">$currentscalingvalue$</out>
<out type="push"extdata="currentgraph"condition=">"lvalue="$currentscalingvalue$"rvalue="100">$ttgraphbarhundredscol$</out>
<out type="push"extdata="currentscalingvalue"condition=">"lvalue="$currentscalingvalue$"rvalue="100"><operator type="/"lvalue="$currentscalingvalue$"rvalue="100"/></out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbar$"/></out>
<out type="push"extdata="currentscalingvalue"><operator type="--"lvalue="$currentscalingvalue$"/></out>
<out type="goto"extdata="-2"condition="!="lvalue="$currentscalingvalue$"rvalue="0"></out>
<out type="push"extdata="currentscalingvalue"condition=">"lvalue="$currentscalingmodulosave$"rvalue="0"><operator type="%"lvalue="$currentscalingmodulosave$"rvalue="100"/></out>
<out type="goto"extdata="-9"condition="!="lvalue="$currentscalingvalue$"rvalue="0"></out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbarcap$"/></out>
<out type="push"extdata="currentgraph"><operator type="strrep"lvalue="^name^"rvalue="$justspoken$"nvalue="$currentgraph$"/></out>
<out type="push"extdata="currentgraph"><operator type="strrep"lvalue="^value^"rvalue="$cvg$"nvalue="$currentgraph$"/></out>
<out>$currentgraph$</out>
</command>
<command type="script">
<in>!tttheme elaborate</in>
<out type="push"extdata="ttgraphbar">|</out>
<out type="push"extdata="ttgraphbarcap">#c63#]Ì#c9#í#c62#(#c1#^name^#c62#)|#c9#Ì#c?#î#c9#Í#c62#|(#c1#^value^#c62#)#c9#Í#c63#º´</out>
<out type="push"extdata="ttgraphbarcol">#c63#</out>
<out type="push"extdata="ttgraphbarhundredscol">#c9#</out>
</command>
<command type="script">
<in>!tttheme angled</in>
<out type="push"extdata="ttgraphbar">\</out>
<out type="push"extdata="ttgraphbarcap">#c54#^value^ #c68#^name^</out>
<out type="push"extdata="ttgraphbarcol">#c68#</out>
<out type="push"extdata="ttgraphbarhundredscol">#c54#</out>
</command>
<command type="script">
<in>!tttheme fireandice</in>
<out type="push"extdata="ttgraphbar">)</out>
<out type="push"extdata="ttgraphbarcap">
)_(#c65#´¯ìÍ)º·#c9#^name^#c63#·º(#c70#Ìí#c71#¸_)#c72#¯(#c8#^value^#c1#)</out>
<out type="push"extdata="ttgraphbarcol">#c51#</out>
<out type="push"extdata="ttgraphbarhundredscol">#c1#</out>
</command>
<command type="script">
<in>!tttheme basic</in>
<out type="push"extdata="ttgraphbar">|</out>
<out type="push"extdata="ttgraphbarcap">
] #c9#(#c62#^value^#c9#) #c1#^name^</out>
<out type="push"extdata="ttgraphbarcol">#c66#</out>
<out type="push"extdata="ttgraphbarhundredscol">#c6#</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttclearall</in>
<out type="pop"extdata="toptalkers"></out>
<out type="push"extdata="totalmessages">0</out>
<out type="push"extdata="autosavetick">0</out>
<out>Toptalkers list cleared.</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttdefault</in>
<out type="push"extdata="ttgraphbar">|</out>
<out type="push"extdata="ttgraphbarcap">]^name^ (^value^)</out>
<out type="push"extdata="ttgraphbarcol">#c66#</out>
<out type="push"extdata="ttgraphbarhundredscol">#c6#</out>
<out type="push"extdata="messagesbeforeautosave">200</out>
<out type="push"extdata="occamsrazor">5</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttsettings</in>
<out type="push"extdata="settingsdisplay">$ttgraphbarhundredscol$$ttgraphbar$$ttgraphbar$$ttgraphbar$$ttgraphbar$$ttgraphbarcol$$ttgraphbar$$ttgraphbar$$ttgraphbar$$ttgraphbar$$ttgraphbar$$ttgraphbar$$ttgraphbarcap$</out>
<out type="push"extdata="settingsdisplay"><operator type="strrep"lvalue="^name^"rvalue="$talkername$"nvalue="Name"/></out>
<out type="push"extdata="settingsdisplay"><operator type="strrep"lvalue="^value^"rvalue="$cvg$"nvalue="406"/></out>
<out>$settingsdisplay$</out>
<out>$messagesbeforeautosave$ messages before autosave, users with less than $occamsrazor$ messages deleted.</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!tthelp</in>
<out>$ttgraphbarhundredscol$--------------Colour and theme settings--------------</out>
<out>$ttgraphbarhundredscol$!ttbarASCII $ttgraphbarcol$Sets the graphic used for each bar of the talkers graph.</out>
<out>$ttgraphbarhundredscol$!ttcapASCII $ttgraphbarcol$Sets the graphic used for each bar cap of the talkers graph. Use ^name^ and ^value^ within the graphic to choose where user's name and number of messages will go..</out>
<out>$ttgraphbarhundredscol$!ttbcolCOLOURCODE $ttgraphbarcol$Sets the colour to be used for the UNITS graph bars.</out>
<out>$ttgraphbarhundredscol$!tthbcolCOLOURCODE $ttgraphbarcol$Sets the colour to be used for the HUNDREDS graph bars.</out>
<out>$ttgraphbarhundredscol$!tttheme elaborate, fireandice, basic or angled $ttgraphbarcol$Four preset themes.</out>
<out>$ttgraphbarhundredscol$--------------Usage and behaviour settings--------------</out>
<out>$ttgraphbarhundredscol$!ttcutNUMBER $ttgraphbarcol$Sets minimum messages a user must have spoken to prevent them being deleted at autosave</out>
<out>$ttgraphbarhundredscol$!ttmbsNUMBER $ttgraphbarcol$Sets amount of messages that must be spoken before talkers list is autosaved.</out>
<out>$ttgraphbarhundredscol$!ttsettings $ttgraphbarcol$Displays current theme and settings.</out>
<out>$ttgraphbarhundredscol$!ttsave $ttgraphbarcol$Saves talkers list and all settings.</out>
<out>$ttgraphbarhundredscol$!ttload $ttgraphbarcol$Loads a saved talkers list and all settings.</out>
<out>$ttgraphbarhundredscol$!ttclearall $ttgraphbarcol$CLEARS toptalkers list.</out>
<out>$ttgraphbarhundredscol$!ttdeletenameNAME $ttgraphbarcol$Deletes a single name from talkers list.</out>
<out>$ttgraphbarhundredscol$!ttcombine NAME1 with NAME2$ttgraphbarcol$ Deletes a single name from talkers list.</out>
<out>$ttgraphbarhundredscol$!ttcrop$ttgraphbarcol$NUMBER Deletes a single name from talkers list.</out>
<out>$ttgraphbarhundredscol$!ttdefault $ttgraphbarcol$Resets theme to default (teal colour and ||||||] graph).</out>
<out>$ttgraphbarhundredscol$!toptalkers $ttgraphbarcol$For botcontrol admins only, shows all talkers message tally.</out>
<out>$ttgraphbarhundredscol$--------------For any user--------------</out>
<out>$ttgraphbarhundredscol$!rating $ttgraphbarcol$Show your current message tally.</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttcut%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="occamsrazor">%PARAMETER%</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttmbs%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="messagesbeforeautosave">%PARAMETER%</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttbar%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="ttgraphbar">%PARAMETER%</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttcap%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="ttgraphbarcap">%PARAMETER%</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttbcol%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="ttgraphbarcol">%PARAMETER%</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!tthbcol%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="ttgraphbarhundredscol">%PARAMETER%</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttsave</in>
<out type="push"extdata="origoccams">$occamsrazor$</out>
<out type="push"extdata="firstloc"><operator type="strfind"lvalue="$toptalkers$"rvalue="^^$occamsrazor$}}}"/></out>
<out type="push"extdata="occamsrazor"condition="1"lvalue="$firstloc$"rvalue="-1"><operator type="--"lvalue="$occamsrazor$"/></out>
<out type="goto"extdata="15"condition="1"lvalue="$firstloc$"rvalue="-1"></out>
<out type="push"extdata="nametodelete"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$firstloc$"/></out>
<out type="push"extdata="firstloc"><operator type="strrfind"lvalue="$nametodelete$"rvalue="{{{"/></out>
<out type="push"extdata="nametodelete"><operator type="strright"lvalue="$nametodelete$"rvalue="$firstloc$"/></out>
<out type="push"extdata="nametodelete"><operator type="strright"lvalue="$nametodelete$"rvalue="1"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$nametodelete$"/></out>
<out type="push"extdata="dnleft"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="$nametodelete$^^"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$dnright$"rvalue="}}}"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="3"/></out>
<out type="push"extdata="newtalkers"><operator type="strcat"lvalue="$dnleft$"rvalue="$dnright$"/></out>
<out type="push"extdata="newtalkers"><operator type="strrep"lvalue="}}}}}}"rvalue="}}}"nvalue="$newtalkers$"/></out>
<out type="push"extdata="toptalkers">$newtalkers$</out>
<out type="goto"extdata="-17"condition=">"lvalue="$occamsrazor$"rvalue="0"></out>
<out type="push"extdata="occamsrazor">$origoccams$</out>
<out type="file" mode="t" extdata="$talkerssavedirectory$savetalkers.txt">$toptalkers$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$totalmessages$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$messagesbeforeautosave$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$occamsrazor$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbar$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbarcap$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbarcol$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbarhundredscol$\n</out>
<out type="push"extdata="autosavetick">0</out>
<out>Saved.</out>
</command>
<command type="script">
<in>autosave</in>
<out type="break"condition="!="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="origoccams">$occamsrazor$</out>
<out type="push"extdata="firstloc"><operator type="strfind"lvalue="$toptalkers$"rvalue="^^$occamsrazor$}}}"/></out>
<out type="push"extdata="occamsrazor"condition="1"lvalue="$firstloc$"rvalue="-1"><operator type="--"lvalue="$occamsrazor$"/></out>
<out type="goto"extdata="15"condition="1"lvalue="$firstloc$"rvalue="-1"></out>
<out type="push"extdata="nametodelete"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$firstloc$"/></out>
<out type="push"extdata="firstloc"><operator type="strrfind"lvalue="$nametodelete$"rvalue="{{{"/></out>
<out type="push"extdata="nametodelete"><operator type="strright"lvalue="$nametodelete$"rvalue="$firstloc$"/></out>
<out type="push"extdata="nametodelete"><operator type="strright"lvalue="$nametodelete$"rvalue="1"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$nametodelete$"/></out>
<out type="push"extdata="dnleft"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="$nametodelete$^^"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$dnright$"rvalue="}}}"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="3"/></out>
<out type="push"extdata="newtalkers"><operator type="strcat"lvalue="$dnleft$"rvalue="$dnright$"/></out>
<out type="push"extdata="newtalkers"><operator type="strrep"lvalue="}}}}}}"rvalue="}}}"nvalue="$newtalkers$"/></out>
<out type="push"extdata="toptalkers">$newtalkers$</out>
<out type="goto"extdata="-17"condition=">"lvalue="$occamsrazor$"rvalue="0"></out>
<out type="push"extdata="occamsrazor">$origoccams$</out>
<out type="file" mode="t" extdata="$talkerssavedirectory$savetalkers.txt">$toptalkers$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$totalmessages$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$messagesbeforeautosave$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$occamsrazor$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbar$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbarcap$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbarcol$\n</out>
<out type="file" mode="a" extdata="$talkerssavedirectory$savetalkers.txt">$ttgraphbarhundredscol$\n</out>
<out type="push"extdata="autosavetick">0</out>
<out>/opmsg Toptalkers list autosaved ($messagesbeforeautosave$ messages)</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttload</in>
<out type="push" extdata="toptalkers"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="1"/></out>
<out type="push" extdata="totalmessages"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="2"/></out>
<out type="push" extdata="messagesbeforeautosave"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="3"/></out>
<out type="push" extdata="occamsrazor"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="4"/></out>
<out type="push" extdata="ttgraphbar"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="5"/></out>
<out type="push" extdata="ttgraphbarcap"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="6"/></out>
<out type="push" extdata="ttgraphbarcol"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="7"/></out>
<out type="push" extdata="ttgraphbarhundredscol"><operator type="readfile" nvalue="$talkerssavedirectory$savetalkers.txt" lvalue="l" rvalue="8"/></out>
<out type="push"extdata="autosavetick">0</out>
<out>Loaded.</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!toptalkers</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out condition="!?"lvalue="$toptalkers$"rvalue="^^">Talker's variable is empty! (nobody has spoken a real sentence yet..)</out>
<out type="break"condition="!?"lvalue="$toptalkers$"rvalue="^^"></out>
<out type="push"extdata="currentgraph"></out>
<out type="push"extdata="currentscalingvalue">$totalmessages$</out>
<out type="push"extdata="cvg">$currentscalingvalue$</out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbarcol$"/></out>
<out type="push"extdata="currentscalingmodulosave">0</out>
<out type="push"extdata="currentscalingmodulosave"condition=">"lvalue="$currentscalingvalue$"rvalue="100">$currentscalingvalue$</out>
<out type="push"extdata="currentgraph"condition=">"lvalue="$currentscalingvalue$"rvalue="100">$ttgraphbarhundredscol$</out>
<out type="push"extdata="currentscalingvalue"condition=">"lvalue="$currentscalingvalue$"rvalue="100"><operator type="/"lvalue="$currentscalingvalue$"rvalue="100"/></out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbar$"/></out>
<out type="push"extdata="currentscalingvalue"><operator type="--"lvalue="$currentscalingvalue$"/></out>
<out type="goto"extdata="-2"condition="!="lvalue="$currentscalingvalue$"rvalue="0"></out>
<out type="push"extdata="currentscalingvalue"condition=">"lvalue="$currentscalingmodulosave$"rvalue="0"><operator type="%"lvalue="$currentscalingmodulosave$"rvalue="100"/></out>
<out type="goto"extdata="-9"condition="!="lvalue="$currentscalingvalue$"rvalue="0"></out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbarcap$"/></out>
<out type="push"extdata="currentgraph"><operator type="strrep"lvalue="^name^"rvalue="Total messages"nvalue="$currentgraph$"/></out>
<out type="push"extdata="currentgraph"><operator type="strrep"lvalue="^value^"rvalue="$cvg$"nvalue="$currentgraph$"/></out>
<out>$currentgraph$</out>
<out type="push"extdata="toptalkersdeobf">$toptalkers$</out>
<out type="self">!toptalkerssub</out>
</command>
<command type="script">
<in>!toptalkerssub</in>
<out type="break"condition="!="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="break"condition="!?"lvalue="$toptalkersdeobf$"rvalue="{{{"></out>
<out type="push"extdata="currentgraph"></out>
<out type="push"extdata="currentscalingname"><operator type="strright"lvalue="$toptalkersdeobf$"rvalue="3"/></out>
<out type="push"extdata="talkerscaling"><operator type="strfind"lvalue="$currentscalingname$"rvalue="^^"/></out>
<out type="push"extdata="currentscalingvalue"><operator type="strright"lvalue="$currentscalingname$"rvalue="$talkerscaling$"/></out>
<out type="push"extdata="currentscalingvalue"><operator type="strright"lvalue="$currentscalingvalue$"rvalue="2"/></out>
<out type="push"extdata="talkerscalingtwo"><operator type="strfind"lvalue="$currentscalingvalue$"rvalue="}}}"/></out>
<out type="push"extdata="currentscalingvalue"><operator type="strtrm"lvalue="$currentscalingvalue$"rvalue="$talkerscalingtwo$"/></out>
<out type="push"extdata="currentscalingname"><operator type="strtrm"lvalue="$currentscalingname$"rvalue="$talkerscaling$"/></out>
<out type="push"extdata="talkerscaling"><operator type="strfind"lvalue="$toptalkersdeobf$"rvalue="}}}"/></out>
<out type="push"extdata="toptalkersdeobf"><operator type="strright"lvalue="$toptalkersdeobf$"rvalue="$talkerscaling$"/></out>
<out type="push"extdata="toptalkersdeobf"><operator type="strright"lvalue="$toptalkersdeobf$"rvalue="3"/></out>
<out type="self">draw graph</out>
</command>
<command type="script">
<in>draw graph</in>
<out type="break"condition="!="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="cvg">$currentscalingvalue$</out>
<out type="push"extdata="talkername">$currentscalingname$</out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbarcol$"/></out>
<out type="push"extdata="currentscalingmodulosave">0</out>
<out type="push"extdata="currentscalingmodulosave"condition=">"lvalue="$currentscalingvalue$"rvalue="100">$currentscalingvalue$</out>
<out type="push"extdata="currentgraph"condition=">"lvalue="$currentscalingvalue$"rvalue="100">$ttgraphbarhundredscol$</out>
<out type="push"extdata="currentscalingvalue"condition=">"lvalue="$currentscalingvalue$"rvalue="100"><operator type="/"lvalue="$currentscalingvalue$"rvalue="100"/></out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbar$"/></out>
<out type="push"extdata="currentscalingvalue"><operator type="--"lvalue="$currentscalingvalue$"/></out>
<out type="goto"extdata="-2"condition="!="lvalue="$currentscalingvalue$"rvalue="0"></out>
<out type="push"extdata="currentscalingvalue"condition=">"lvalue="$currentscalingmodulosave$"rvalue="0"><operator type="%"lvalue="$currentscalingmodulosave$"rvalue="100"/></out>
<out type="goto"extdata="-9"condition="!="lvalue="$currentscalingvalue$"rvalue="0"></out>
<out type="push"extdata="currentgraph"><operator type="strcat"lvalue="$currentgraph$"rvalue="$ttgraphbarcap$"/></out>
<out type="push"extdata="currentgraph"><operator type="strrep"lvalue="^name^"rvalue="$talkername$"nvalue="$currentgraph$"/></out>
<out type="push"extdata="currentgraph"><operator type="strrep"lvalue="^value^"rvalue="$cvg$"nvalue="$currentgraph$"/></out>
<out>$currentgraph$</out>
<out type="self">!toptalkerssub</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttdeletename %PARAMETER%</in>
<out type="push"extdata="nametodelete">%PARAMETER%</out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$nametodelete$"/></out>
<out type="break"condition="1"lvalue="$dnpos$"rvalue="-1"></out>
<out type="push"extdata="dnleft"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="$nametodelete$^^"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$dnright$"rvalue="}}}"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="3"/></out>
<out type="push"extdata="newtalkers"><operator type="strcat"lvalue="$dnleft$"rvalue="$dnright$"/></out>
<out type="push"extdata="newtalkers"><operator type="strrep"lvalue="}}}}}}"rvalue="}}}"nvalue="$newtalkers$"/></out>
<out type="push"extdata="toptalkers">$newtalkers$</out>
</command>
<command type="script"usergroup="botcontrol">
<in>!ttcombine %PARAMETER%</in>
<out type="break"condition="1"lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="combparam">%PARAMETER%</out>
<out type="push"extdata="combsplit"><operator type="strfind"lvalue="$combparam$"rvalue=" with "/></out>
<out condition="1"lvalue="$combsplit$"rvalue="-1">Syntax incorrect. Use !ttcombine OLDNAME with NEWNAME</out>
<out type="break"condition="1"lvalue="$combsplit$"rvalue="-1"></out>
<out type="push"extdata="splitleft"><operator type="strtrm"lvalue="$combparam$"rvalue="$combsplit$"/></out>
<out type="push"extdata="combsplit"><operator type="+"lvalue="$combsplit$"rvalue="6"/></out>
<out type="push"extdata="splitright"><operator type="strright"lvalue="$combparam$"rvalue="$combsplit$"/></out> //
<out type="push"extdata="justspoken">$splitleft$</out>
<out type="push"extdata="namepos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$justspoken$^^"/></out>
<out condition="1"lvalue="$namepos$"rvalue="-1">#c62#The name #c1#$splitleft$ #c62#does not exist in talkers tally.</out>
<out type="break"condition="1"lvalue="$namepos$"rvalue="-1"></out>
<out type="push"extdata="namesize"><operator type="strlen"lvalue="{{{$justspoken$^^"/></out>
<out type="push"extdata="leftofcounter"><operator type="+"lvalue="$namepos$"rvalue="$namesize$"/></out>
<out type="push"extdata="counter"><operator type="strright"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="leftofcounter"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="rightofcounter">$counter$</out>
<out type="push"extdata="roctwo"><operator type="strfind"lvalue="$counter$"rvalue="}}}"/></out>
<out type="push"extdata="rightofcounter"><operator type="strright"lvalue="$rightofcounter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="counter"><operator type="strtrm"lvalue="$counter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="splitleftvalue">$counter$</out>
<out type="push"extdata="justspoken">$splitright$</out>
<out type="push"extdata="namepos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$justspoken$^^"/></out>
<out condition="1"lvalue="$namepos$"rvalue="-1">#c62#The name #c1#$splitright$ #c62#does not exist in talkers tally.</out>
<out type="break"condition="1"lvalue="$namepos$"rvalue="-1"></out>
<out type="push"extdata="namesize"><operator type="strlen"lvalue="{{{$justspoken$^^"/></out>
<out type="push"extdata="leftofcounter"><operator type="+"lvalue="$namepos$"rvalue="$namesize$"/></out>
<out type="push"extdata="counter"><operator type="strright"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="leftofcounter"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$leftofcounter$"/></out>
<out type="push"extdata="rightofcounter">$counter$</out>
<out type="push"extdata="roctwo"><operator type="strfind"lvalue="$counter$"rvalue="}}}"/></out>
<out type="push"extdata="rightofcounter"><operator type="strright"lvalue="$rightofcounter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="counter"><operator type="strtrm"lvalue="$counter$"rvalue="$roctwo$"/></out>
<out type="push"extdata="splitrightvalue">$counter$</out>
<out type="push"extdata="combinedvalue"><operator type="+"lvalue="$splitleftvalue$"rvalue="$splitrightvalue$"/></out>
<out type="push"extdata="toptalkers"><operator type="strrep"lvalue="{{{$splitright$^^$splitrightvalue$}}}"rvalue="{{{$splitright$^^$combinedvalue$}}}"nvalue="$toptalkers$"/></out>
<out type="push"extdata="nametodelete">$splitleft$</out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$nametodelete$^^"/></out>
<out type="push"extdata="dnleft"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$dnright$"rvalue="}}}"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="3"/></out>
<out type="push"extdata="newtalkers"><operator type="strcat"lvalue="$dnleft$"rvalue="$dnright$"/></out>
<out type="push"extdata="newtalkers"><operator type="strrep"lvalue="}}}}}}"rvalue="}}}"nvalue="$newtalkers$"/></out>
<out type="push"extdata="toptalkers">$newtalkers$</out>
<out>#c1#$splitleft$#c62#'s name has been deleted, their message tally#c9#(#c1#$splitleftvalue$#c9#) #c62#is now combined with #c1#$splitright$#c62#'s</out>
</command>
<command type="script">
<in>!ttcrop%PARAMETER%</in>
<out type="break"condition="=="lvalue="%NAME%"rvalue="_BOT_SELF_TRIGGER_"></out>
<out type="push"extdata="origcropvalue">%PARAMETER%</out>
<out type="push"extdata="cropvalue">%PARAMETER%</out>
<out type="push"extdata="firstloc"><operator type="strfind"lvalue="$toptalkers$"rvalue="^^$cropvalue$}}}"/></out>
<out type="push"extdata="cropvalue"condition="1"lvalue="$firstloc$"rvalue="-1"><operator type="--"lvalue="$cropvalue$"/></out>
<out type="goto"extdata="15"condition="1"lvalue="$firstloc$"rvalue="-1"></out>
<out type="push"extdata="nametodelete"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$firstloc$"/></out>
<out type="push"extdata="firstloc"><operator type="strrfind"lvalue="$nametodelete$"rvalue="{{{"/></out>
<out type="push"extdata="nametodelete"><operator type="strright"lvalue="$nametodelete$"rvalue="$firstloc$"/></out>
<out type="push"extdata="nametodelete"><operator type="strright"lvalue="$nametodelete$"rvalue="1"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="{{{$nametodelete$"/></out>
<out type="push"extdata="dnleft"><operator type="strtrm"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$toptalkers$"rvalue="$nametodelete$^^"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$toptalkers$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnpos"><operator type="strfind"lvalue="$dnright$"rvalue="}}}"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="$dnpos$"/></out>
<out type="push"extdata="dnright"><operator type="strright"lvalue="$dnright$"rvalue="3"/></out>
<out type="push"extdata="newtalkers"><operator type="strcat"lvalue="$dnleft$"rvalue="$dnright$"/></out>
<out type="push"extdata="newtalkers"><operator type="strrep"lvalue="}}}}}}"rvalue="}}}"nvalue="$newtalkers$"/></out>
<out type="push"extdata="toptalkers">$newtalkers$</out>
<out type="goto"extdata="-17"condition=">"lvalue="$cropvalue$"rvalue="0"></out>
<out>Names with less than $origcropvalue$ messages have been cropped.</out>
</command>
</config>
Heres a screeny of the basic starting theme (This is the first theme you will see, though you can get it back by typing !tttheme basic);
And heres another of the "elaborate" theme (set it by typing !tttheme elaborate);