Jump to content

  • Curse Sites
Become a Premium Member! Help
Latest News Article

[1.5.2] Macro / Keybind mod 0.9.9 and LiteLoader for 1.5.2

1.5.2

  • Please log in to reply
7702 replies to this topic

#1

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 11 July 2011 - 08:15 PM

*
POPULAR

Posted Image
If you're a server admin, a player on a server with lots of plugins, or just love automating every aspect of your minecraft experience, you will honestly wonder how you lived without this mod...

Posted Image
  • Easy to use GUI. Just activate the mod then just press the key you want to bind. No need to memorize key codes or names!
  • Bind keys which are already used for something else! Want to put a macro on the number keys, mouse buttons or WASD? Using the override function you can use these keys for both their normal function or as macros when you need them.
  • Edit keybinds quickly. Change your binds whenever you want. You can even copy and move macros from key to key with drag 'n drop.
  • Multiple configurations. Different binds in different servers? No problem! It even switches automatically.
  • In-game text editor. Want to make a complex macro? No need to alt-tab to notepad, create and edit text files inside minecraft.
  • Lots of easy-to-use parameters. Lists of friends, automatic responses, warp points, towns, you name it.
  • Scripting! Build custom auto-announcers, time-delay messages, or create your own auto-walk, toggleable-sneak or sprint keys.
  • Custom GUIs! Create your own custom GUI and hook up your macros for instant in-game menus
  • Permissions System Server admins can lock down chosen features of the mod using the easy-to-setup Client Permissions plugin, allowing seamless integration with the server's existing rank system.


Posted Image
LiteLoader is a lightweight mod bootstrap designed to provide very basic loader functionality for mods which don't need to modify game mechanics. It is designed to run alongside ModLoader and Minecraft Forge and LiteLoader mods will not conflict with ModLoader or Forge mods.

Posted Image
  • Download the latest version of LiteLoader by clicking the link below, or choose the version for your version of Minecraft.
  • For Windows follow the steps 3, 4 and 5 below. For Macintosh you can alternatively use Mac LiteLoader Patcher made by chattahippie.
  • Open your minecraft .jar with WinRAR or 7-zip:
    • Click Start -> Run (if you don't see "Run" try holding down your "Windows" key and press the R key)
    • Type %APPDATA% and click OK
    • Open .minecraft and then bin
    • Open minecraft.jar using WinRAR or 7-zip
  • Delete the META-INF folder
  • Drag all the files from the liteloader .zip into your minecraft jar
Posted Image
Posted Image



Posted Image
  • Install LiteLoader
  • Download the .litemod file for your version of minecraft here and save it into your "mods" folder (create the "mods" folder if it does not already exist) NOTE: Some browsers will change the file extension to .zip when downloading, if this happens be sure to change it back to .litemod or LiteLoader will not find the mod!
  • Run the Minecraft client
  • Check the Controls screen in the Minecraft configuration to make sure there are no conflicts with other keys you use. This mod adds pages to the Controls screen for enhanced configuration of any mods which add custom keys
Posted Image

Posted Image
Posted Image

Posted Image
Posted Image

Posted Image

Posted Image
Expand for more images:
Spoiler:

Posted Image



To bind keys:
  • In-game, simply press [SNEAK KEY]+GRAVE (change the key in the options if this doesn't work for you) and you will be prompted to press a key.
  • Press the key you would like to bind or click it on the on-screen keyboard
  • Enter the chat command (including the / at the start), separate multiple commands with pipe "|"
  • Press ENTER to save the keybind, press ESC to cancel it. To edit a keybind repeat the same process.

Posted Image
  • If the key doesn't have any other function (eg. it is not bound to any other built-in command or function) then just press the key
  • If the key is bound to another function (such as the WASD keys or T,I etc) press your [MACRO ACTIVATE] key (as you set in the options) followed by the key.
  • Alternatively if the key is bound to another function press [MACRO OVERRIDE]+[KEY] (again, you can set this in the Controls screen)

Posted Image
You can find out a lot of useful information about the mod via my tutorials on YouTube.

Posted ImagePosted ImagePosted ImagePosted Image

Posted Image
To get started using the mod, you can find an list of commands and keycodes and guide to the other features in the mod in the readme.txt

Posted Image

As of version 0.8.5 language packs are no longer required as the supported languages are directly integrated into the main download and will automatically switch based on the chosen Minecraft language. If you would like to provide a language pack for your language please contact me via PM.

Current language packs in the mod: For historic language pack information expand the spoiler:
Spoiler:

Posted Image

Changes for 0.9.9
  • Updated to Minecraft 1.5.2
  • Added UNSAFE blocks which disable the execution rate limit normally applied to macros
  • Added GUI for assigning custom GUI's to available "slots" such as ingame, inchat, etc.
  • Added "scoreboard" and "indebug" slots for ingame GUI's
  • Added SHOWGUI command for displaying arbitrary custom GUI's: SHOWGUI("somecustomgui");
  • Added BINDGUI command for assigning GUI's to slots via script: BINDGUI("ingame","somecustomgui");
  • Added armour item max damage vars: BOOTSDAMAGE, LEGGINGSDAMAGE, CHESTPLATEDAMAGE, HELMDAMAGE containing the total damage the armour item can take
  • Added armour item name vars: BOOTSNAME, LEGGINGSNAME, CHESTPLATENAME, HELMNAME containing the name of the armour item equipped
  • Added CHATVISIBLE, CHATOPACITY, CHATSCALE, CHATWIDTH, CHATHEIGHT, CHATHEIGHTFOCUSED commands for setting chat options
  • Added vertical style to progress bar control
  • Added support for using expressions in progressbar min and max fields
  • Fixed auto-craft for recipes with wildcard block types in the recipe
  • Modified auto-crafting status GUI to display failure reasons when auto-crafting fails
  • Auto-crafting now returns NORECIPE if a recipe is not found (previously returned NOTSTARTED). NOTSTARTED now indicates a recipe was found but sufficient items to craft the recipe were not.
  • Added SERVERMOTD, SERVERNAME, MAXPLAYERS, ONLINEPLAYERS, HITPROGRESS, DISPLAYWIDTH, DISPLAYHEIGHT, CANFLY and FLYING environment variables
  • Added HITPROGRESS variable (block breaking progress (range 0-9)
  • Added SCREEN environment variable containing currently displayed custom GUI
  • Allowed sorting of parameter lists using CTRL+S
  • API revisions, API version now 10
  • GETSLOT, GETSLOTITEM and SLOTCLICK now act upon the hotbar if no container is currently open using virtual slot ID's 1-9
  • Added command reference screen to in-game text editor
  • Added SETPROPERTY command for setting GUI control properties via script: SETPROPERTY(controlname,propertyname,value)
  • Added "visible" property to all controls, only settable using SETPROPERTY currently
Changes for 0.9.8.2
  • Updated for Minecraft 1.5.1
  • Compatibility with Forge's new runtime deobfuscation
  • More consistent handling of array-type specifiers
  • Scripting API improvements
  • PLAYSOUND now takes a volume value as the second argument (range 0-100)
  • GAMMA/FOV and other settings commands parse variables correctly
  • Nonexistent environment vars no longer return "False" and will return their name, as per previous behaviour
  • Environment vars update more quickly
  • ProgressBar control with dynamic expression parsing
  • Enchantments on enchanted books can be iterated using the enchantments iterator
  • Updated Ukranian translation provided by eXtendedZero and Alexemov
  • Updated Russian translation provided by boroda_ua
  • EXEC doesn't unexpectedly add quotes to string variables any more
  • Changed handling of quotes inside IF and IIF to avoid messing up string comparisons
  • Added BREAK for escaping loops
  • Added DAYTIME and DAYTICKS variables
Changes for 0.9.8
  • Updated to MC 1.4.7 even though I didn't really need to
  • Added VEHICLE variable, which contains the currently ridden entity name
  • Added SATURATION variable containing current food saturation variable (rounded to nearest integer)
  • Fixed the following issues
    • Iterator bug, iterator not removing provider from stack when eval'd inside non-executed conditional blocks
    • CHATCLEAN in incoming chat messages causing inifinite loop
    • Escaped quotes in the text area messing up highlighting/not being recognised
    • Permissions mask not protecting onChat and onJoinedGame
    • Undefined variables cause entire string to be blanked out
    • String variables in conditions not working correctly
    • Crash when using mouse with more than 5 buttons
    • Threading issue when adding text to a TextArea
    • Item pickup event triggering for nearby players as well as the player
    • Bug when assigning strings containing colour codes to a label
    • Issue with configs drop-down not being clickable on events or buttons panel
  • Added iterator for player effects called "effects" which provides the following iterator vars:
    EFFECTID  // Internal effect ID number
    EFFECT  // Bare effect name eg. "SPEED"
    EFFECTNAME  // Effect name eg. "Speed II"
    EFFECTPOWER  // Effect multiplier, eg. 2
    EFFECTTIME  // Remaining effect time in seconds
  • Added new options to GUI command, can now use "macroplayback" and "texteditor" as options
  • Added debounce compatibility setting to help combat key event duplication on slow computerss
  • Added reserved key detection for Rei Minimap, VoxelPlayer and VoxelFlight
  • Added onConfigChange event
  • Added option to tell flood protection to ignore messages starting with /
  • Changed the way that %-expansions are handled inside conditions so that %-expanded variables are consistently treated as strings.
  • Russian language pack supplied by boroda-ua
  • Norwegian language pack supplied by glitchdetector
  • Added $$k parameter which lists available texture packs
  • Updated item enumeration method, should more reliably detect all types of item in the game now, including potions
  • Enchantments iterator now has ENCHANTMENTNAME and ENCHANTMENTPOWER as well
Older version changelogs:
Spoiler:

Posted Image
  • To uninstall the mod, just delete the .liteloader file from your "mods" folder
  • All mod configuration information is stored in a folder macros inside your minecraft mods folder, you can save and restore this folder if you want to copy your macros to another computer
  • This mod shouldn't create conflicts with other mods using modloader or forge, but to be certain it is worth avoiding binding keys used by other mods. If in doubt delete the .macros.txt file and ensure other mods run as normal.
Posted Image

If you would like to show your support for the mod by including a clickable banner in your sig, click the spoiler next to one of the banners below and copy the code into your forum signature:

Posted Image
Spoiler:
Posted Image
Spoiler:
Posted Image
Spoiler:
Posted Image
Spoiler:
Posted Image
Spoiler:

Posted Image
Posted Image

Posted Image
I have spent a lot of time developing this mod and some people have asked if they can donate but I believe in making mods for fun and do not wish to make money from it. However if you really would like to make a donation then I recommend making a donation to Vexx32, who will use it to buy minecraft gift codes for people! This way your good will can go towards helping someone to play the game. :)

Click the donate button to donate to Vexx32's minecraft gift code account:

Posted Image

Posted Image
  • The Macro / Keybind Mod is Copyright © 2011-2013 Mumfrey
  • LiteLoader is Copyright © 2012-2013 Mumfrey
  • You may include this mod in compilation packs or mod collections provided it is unmodified
  • You may redistribute LiteLoader binaries, and/or use the source code to make your own LiteMods
  • You may redistribute the mod, provided it is umodified
  • If you redistribute the mod, I would appreciate it if you provide appropriate attribution where possible and include the above copright message, but this is not a requirement
  • You may decompile the mod for personal use but you may not redistribute modified or recompiled versions

Posted Image

Thanks to the MCP team and everyone who's given suggestions and feedback. Special thanks to AJFire for making the original mod logo and providing the german translation. Thanks also to Chokapix for the french translation, kamild1996 for the Polish translation, Dyon123 for the dutch translation, agubelu for the spanish translation, eXtendZero for the Ukrainian translation, and Gorlem for updating the german translation for 1.4!

Enjoy! Please post feedback, comments, abuse here. Posted Image
Posted Image

Register or log in to remove.

#2

VADemon
    VADemon

    Tree Puncher

  • Members
  • 32 posts

Posted 18 July 2011 - 05:30 AM

Spoiler:

EDIT: 07.08.2012:
Your mod is AWESOME! Posted Image

One year of development and hard work made this mod the best macro extension I have ever seen.
(There isn't anything for any other game that could be compared with this. Good job, Mumfrey!)

Edited by VADemon, 30 August 2012 - 08:47 PM.


#3

Sarkos
    Sarkos

    Zombie Killer

  • Members
  • 232 posts

Posted 18 July 2011 - 05:34 AM

VA, Improved chat hasnt been updated too 1.7.3...

#4

billysprogrammer
  • Location: Canada
  • Minecraft: Ju0z45

Posted 18 July 2011 - 06:35 AM

Really like this mod, very useful for my sever, recommended it to our regulars, thanks so much!

#5

VADemon
    VADemon

    Tree Puncher

  • Members
  • 32 posts

Posted 18 July 2011 - 08:31 AM

View PostSarkos, on 18 July 2011 - 05:34 AM, said:

VA, Improved chat hasnt been updated too 1.7.3...
I got version that works with 1.7.3. Maybe third party update but it works! Try to search the 1.7.3 compatible version with Google.

#6

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 18 July 2011 - 09:02 AM

Indeed, thanks for your comments! Improved Chat does look amazing, maybe he will add the quick-bind function used here to that mod? On my travels I did find Improved Chat but it seems very heavyweight if you just want simple keybind functions. I've tried to keep this as tiny as possible (and use modloader for compatibility) as I think it may still appeal to people who like to keep things minimalist.

The two features which may appeal to users are the ability to quickly edit macros/binds in-game, and the fact that you needn't memorise either the LWJGL key codes nor the key names to bind unusual keys: simply press the key you want to bind.

I'll add a link to Improved Chat to the OP though :)
Posted Image

#7

AJFire
    AJFire

    Carpenter

  • Members
  • 46 posts

Posted 21 July 2011 - 12:05 AM

i really would like to use your mod but it conflicts with improved chat mod (i dont like the binding-system in icm)
When i press tab, it tells me that i should press a button, but nothing happen after that.

#8

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 27 July 2011 - 11:04 AM

Hmm, sorry you're having trouble. It shouldn't conflict with Improved Chat, I have just installed Improved Chat and tested it and I've been unable to replicate the behaviour you describe. Did you install ModLoader before installing Improved Chat (as mentioned in the Improved Chat forum post)?

I tried with a clean install of 1.7.3, installed Modloader and my own mod, then installed Improved Chat and everything worked as expected, so I don't know what else to try.

Sorry I can't help any more but if you're still having trouble it may be worth checking that there aren't other conflicts - are you running any other ModLoader mods?
Posted Image

#9

psgts
    psgts

    Stone Miner

  • Members
  • 93 posts
  • Location: Trapped in the Server Room HALP!
  • Minecraft: Proskillgod

Posted 28 July 2011 - 03:00 AM

I love this mod! I like the idea overall. But is ther way to only issue part of the command so you can enter the last part of the command? If your wondering why it is because i do not like typeing the same command over and over with a diffrence of 1thing.
Posted Image

#10

AJFire
    AJFire

    Carpenter

  • Members
  • 46 posts

Posted 28 July 2011 - 09:05 PM

Ok, works now for me. Fresh minecraft, with Inventory Tweaks, HDPatch, an your mod.
I really love your mod because it's easier to bind keys than in Improved Chat.
I hope you are still in the mood for developing this mod, 'cause i have some requests :D

1. Bind Scripts to a key like "> script(welcome.txt)"

inside welcome.txt:

Quote

/give AJFire 278 1
Hi Everybody
/msg MarinaX \

Where "\" just writes "/msg MarinaX" in the chat without pressing enter.

:D

#11

Job3rt
    Job3rt

    Out of the Water

  • Members
  • 9 posts

Posted 29 July 2011 - 11:36 AM

Great Mod! Its awesome! You should be proud!  :Diamond: :Diamond: :Diamond:

#12

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 29 July 2011 - 08:18 PM

View Postpsgts, on 28 July 2011 - 03:00 AM, said:

...is ther way to only issue part of the command so you can enter the last part of the command?

View PostAJFire, on 28 July 2011 - 09:05 PM, said:

...I hope you are still in the mood for developing this mod, 'cause i have some requests :D

1. Bind Scripts to a key like "> script(welcome.txt)"...

I really like both of these ideas! I'll release an update as soon as I can which supports this, I've coded most of it already but I need to properly test it all to make sure there's nothing I've missed, and make it a little prettier too.

To address the first idea, I've made it so that adding $$? anywhere in a macro will bring up a prompt when the macro is executed and will replace the $$? with whatever is entered. It also remembers what was entered, so entering repeat commands is easy, even across sessions (it stores the params in macros.txt).

For the second point I've added the ability to enter $$<filename.txt> to substitute the contents of the file into the macro at that point, which adds a lot of flexibility. You can even put these macro file includes inside a macro file, just be sure not to include the same file inside itself!

Finally, entering $$! in a macro will stop the macro at that point and put the last command into the chat buffer. This works either in an included file or in a simple macro, so the example above could be written as:
/give AJFire 278 1|Hi Everybody|/msg MarinaX $$!
Obviously anything after $$! is ignored.

You could also use
/give AJFire $$? 1|Hi Everybody|/msg MarinaX $$!
to provide a prompt for what item to give :)

Once I've ironed out the bugs and fully tested it I'll put it up here, the last part may need some fixing to work with Improved Chat or it might not even be possible to coexist, I'll have to do some testing of that too.

Thanks for your suggestions and feedback!
Posted Image

#13

Natethegreat832
  • Location: Portland, Oregon, United States of America
  • Minecraft: Natethegreat832

Posted 06 August 2011 - 12:58 AM

Are you in any relation to Jesus? I LOVE THIS MOD!

Check out 184.164.142.170

Posted Image


#14

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 10 August 2011 - 12:04 AM

Well having tested all the new features I've now uploaded a new version 0.2 (see links in the original post) which supports the parameter codes I mentioned above plus new codes $$i and $$f which prompt for an item or friend respectively (check out the video for a full demo of the new stuff). Half the coding time on this was actually making a ListBox and ScrollBar control to support the new interface features, as I felt it was important to try and keep everything feeling very simple and easy to use!

Posted Image

The testing resulted in the following restrictions on including files: You can include a maximum of 10 files per macro (this includes files included by other files) which stops the processing getting too ludicrous and mitigates accidental recursion! Also, filenames can only include letters, numbers, space, underscore, dash and dot and must end in .txt

Hope you like the new stuff, please feel free to post any other ideas, suggestions or comments and I'll try to implement them if I can.
Posted Image

#15

psgts
    psgts

    Stone Miner

  • Members
  • 93 posts
  • Location: Trapped in the Server Room HALP!
  • Minecraft: Proskillgod

Posted 11 August 2011 - 08:07 AM

im confused what are the friend/item thingys for i dnt quite get it
Posted Image

#16

Awesomer6

Posted 11 August 2011 - 08:35 AM

Will this also work with single player commands?
As that would be the greatest and awesome thing :D


EDIT:
This unfortunately doesn't work with singleplayer commands :(
Please make this work with singleplayer commands.
Please

#17

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 11 August 2011 - 10:35 AM

View Postpsgts, on 11 August 2011 - 08:07 AM, said:

im confused what are the friend/item thingys for i dnt quite get it
Sorry I didn't explain very well, basically they're just specialised parameters which give you a list of stuff rather than just typing things in.

You mentioned above that you'd like to be able to enter "part" of a command when you execute it - with the new version there are two possible ways of doing this:

1) You can use AJFire's method, which basically will pump a macro into the chat buffer allowing you to complete it, so for example making the macro
/give psgts 4 $$!
will put /give psgts 4 into chat and allow you to type the amount on the end then press enter. However this isn't very useful if you want to enter something in the middle of your command, so on to option...

2) You can use the new method, which allows you to put $$? anywhere in the macro and be prompted for it when you execute the macro. For example
/give psgts $$? 64
will prompt you for the item number. However in this scenario you have to remember the item number, or have a cheat sheet handy with the item numbers on it. The "item" option allows you to instead enter $$i and as well as being prompted you now get an on-screen list of items (as pictured). $$f does exactly the same thing but allows you to maintain a list of "friends", essentially for private messaging or other admin functions.

I should mention that you can also combine paramters in a single macro, so you could actually write:

/give $$f $$i $$?
and it will work perfectly fine, prompting for all 3 parameters in turn.

Hopefully that now makes sense, if it's still not clear take a look at the video which shows the stuff in action.

View PostAwesomer6, on 11 August 2011 - 08:35 AM, said:

Will this also work with single player commands?
As that would be the greatest and awesome thing :D


EDIT:
This unfortunately doesn't work with singleplayer commands :(
Please make this work with singleplayer commands.
Please
I'll take a look, I've not used Single Player Commands myself so I'll have a look at the code and check. The mod itself definitely works in single player as that's where I test the stuff, I just manually disable it before release. If I can make it work then I'll certainly release an updated version which supports that.
Posted Image

#18

Awesomer6

Posted 11 August 2011 - 10:55 AM

View PostMumfrey, on 11 August 2011 - 10:35 AM, said:

Sorry I didn't explain very well, basically they're just specialised parameters which give you a list of stuff rather than just typing things in.

You mentioned above that you'd like to be able to enter "part" of a command when you execute it - with the new version there are two possible ways of doing this:

1) You can use AJFire's method, which basically will pump a macro into the chat buffer allowing you to complete it, so for example making the macro
/give psgts 4 $!
will put /give psgts 4 into chat and allow you to type the amount on the end then press enter. However this isn't very useful if you want to enter something in the middle of your command, so on to option...

2) You can use the new method, which allows you to put $? anywhere in the macro and be prompted for it when you execute the macro. For example
/give psgts $? 64
will prompt you for the item number. However in this scenario you have to remember the item number, or have a cheat sheet handy with the item numbers on it. The "item" option allows you to instead enter $i and as well as being prompted you now get an on-screen list of items (as pictured). $f does exactly the same thing but allows you to maintain a list of "friends", essentially for private messaging or other admin functions.

I should mention that you can also combine paramters in a single macro, so you could actually write:

/give $f $i $?
and it will work perfectly fine, prompting for all 3 parameters in turn.

Hopefully that now makes sense, if it's still not clear take a look at the video which shows the stuff in action.


I'll take a look, I've not used Single Player Commands myself so I'll have a look at the code and check. The mod itself definitely works in single player as that's where I test the stuff, I just manually disable it before release. If I can make it work then I'll certainly release an updated version which supports that.


Thank you very much and thank you for replying so quickly



#19

stan-fear

Posted 11 August 2011 - 01:32 PM

this sounds to be an amazing plugin but ...
if you test the stuff on ssp, why do you disable this fonction when you release your mod ?
I'm french so please be indulgent with my english
Posted Image

#20

Mumfrey
    Mumfrey

    Obsidian Miner

  • Curse Premium
  • Curse Premium
  • 1276 posts
  • Location: Birmingham, UK
  • Minecraft: Mumfrey

Posted 11 August 2011 - 03:44 PM

View Poststan-fear, on 11 August 2011 - 01:32 PM, said:

this sounds to be an amazing plugin but ...
if you test the stuff on ssp, why do you disable this fonction when you release your mod ?
I test on SSP for simplicity using a test harness which pipes all of the output to the console so that I can test that macros are outputting what they should. The test harness also checks the issued commands to make sure they don't contain illegal characters and aren't longer than 100 characters in length. Taking the server out of the picture is just easier and quicker for testing purposes basically.

Since you can't issue chat commands in single player I just thought it sensible to disable it because it could cause confusion having the macro capability but not actually sending the messages anywhere!

I didn't realise that Single Player Commands existed, now that I'm aware of it I can look into how it handles commands and adjust my mod so that if Single Player Commands mod is detected it will enable itself in SSP. It would be naïve to just assume that it masquerades as a server, but if that is indeed what it does (specifically, if it hooks into EntityPlayerSP.sendChatMessage()) then making this work in SSP is trivial - if not then I'll engineer it so that it does work :)
Posted Image