Files
Mush-Soundpack/cosmic rage/worlds/plugins/ColourNote.xml
2025-07-01 23:28:00 +03:00

213 lines
5.0 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE muclient>
<!-- Saved on Wednesday, October 23, 2002, 12:48 PM -->
<!-- MuClient version 3.26 -->
<!-- Plugin "ColourNote" generated by Plugin Wizard -->
<!--
You can edit the lookup_colour function to add more colour codes.
-->
<muclient>
<plugin
name="ColourNote"
author="Nick Gammon"
id="8f86e2da6eea3806f1836050"
language="JScript"
purpose="Lets you send a string with colour codes to the world window"
date_written="2002-10-23 12:46:12"
requires="3.23"
version="1.0"
>
<description trim="y">
<![CDATA[
This is designed to be called from a script like this:
world.CallPlugin "8f86e2da6eea3806f1836050", _
"colournote", _
"~R red ~G green ~B blue ~RG red-on-green"
To simplify things, make a "stub" routine in your main script file, like this:
// example in Jscript:
function ColourNote (text)
{
world.CallPlugin ("8f86e2da6eea3806f1836050", "colournote", text);
}
' example in VBscript:
sub ColourNote (text)
world.CallPlugin "8f86e2da6eea3806f1836050", "colournote", text
end sub
Then you can just do colour text like this:
ColourNote ("~R This is red ~G This is green ~B This is blue");
ColourNote:help - this help
]]>
</description>
</plugin>
<!-- Script -->
<script>
<![CDATA[
function lookup_colour (which)
{
var c;
// add more codes below if you want to process different letters
// Reserved characters are: space, and: . # ^ ~
switch (which)
{
case "K": c = "gray"; break;
case "k": c = "black"; break;
case "R": c = "red"; break;
case "r": c = "maroon"; break;
case "G": c = "lime"; break;
case "g": c = "green"; break;
case "Y": c = "yellow"; break;
case "y": c = "olive"; break;
case "B": c = "blue"; break;
case "b": c = "navy"; break;
case "M": c = "magenta"; break;
case "m": c = "purple"; break;
case "C": c = "aqua"; break;
case "c": c = "teal"; break;
case "W": c = "white"; break;
case "w": c = "silver"; break;
default: c = ""; break; // unknown ones are no change
} // end of switch on which colour code
return c;
} // end of lookup_colour
/*
This sends a coloured message to the world window.
Colour codes are like this: ~fb
~ = colour code delimiter
f = foreground colour (eg. R = bright red, g = dull green)
b = background colour (same meanings)
If the background colour is a space, then it is assumed to be
unchanged. eg. ~R red ~G green ~B blue
Otherwise, it is processed as the background colour,
eg. ~RB red-on-blue ~.G red-on-green ~yc dark-yellow on dark-cyan
Special colours:
. = no change (eg. to change background only)
# = save colours (save current foreground/background colour)
^ = restore colours (restore to saved colour)
eg.
colournote ("This will be a ~R red ~G green ~B blue.");
*/
function colournote (msg)
{
var msg_array, // split up line
stext, // what we are sending
fcolour, // foreground colour code
bcolour, // background colour code
foreground, // converted foreground colour
background, // converted background colour
save_foreground, // saved foreground colour
save_background // saved background colour
// save colours for later restore
save_foreground = world.RGBColourToName (world.NoteColourFore ());
save_background = world.RGBColourToName (world.NoteColourBack ());
foreground = save_foreground;
background = save_background;
// convert into an array
msg_array = msg.split ("~");
// first element in array (before tilde) is just shown as is
world.Tell (msg_array [0]);
for (i = 1; i < msg_array.length; i++)
{
fcolour = msg_array [i].substring (0, 1); // foreground colour
bcolour = msg_array [i].substring (1, 2); // background colour
stext = msg_array [i].substring (2); // rest is message
// get foreground colour, handle special cases, lookup others
switch (fcolour)
{
case ".": break; // colour unchanged
case "#": save_foreground = foreground; break;
case "^": foreground = save_foreground; break;
default: foreground = lookup_colour (fcolour); break;
} // end of switch on fcolour
// get background colour, handle special cases, lookup others
switch (bcolour)
{
case " ":
case ".": break; // colour unchanged
case "#": save_background = background; break;
case "^": background = save_background; break;
default: background = lookup_colour (bcolour); break;
} // end of switch on fcolour
//
// now display the text in the appropriate colour
//
world.ColourTell (foreground, background, stext);
} // end of loop on each colour change
world.Note (""); // finish off line
} // end of colournote
]]>
</script>
<!-- Plugin help -->
<aliases>
<alias
script="OnHelp"
match="ColourNote:help"
enabled="y"
>
</alias>
</aliases>
<script>
<![CDATA[
function OnHelp (sName, sLine, wildcards)
{
world.Note (world.GetPluginInfo (world.GetPluginID, 3));
}
]]>
</script>
</muclient>