Functions Compatability with MC versions

Posted by Terry on Mon 30 Jun 2008 02:51 PM — 8 posts, 29,727 views.

USA #0
This is the first time I've ever had a problem with this, so I've never asked in the past. Is there a way of checking the plugin that has been written to see what the earliest version of MUSHclient the plugin is compatible with?
Netherlands #1
The author can specify the earliest version that a plugin should be compatible with in the plugin itself (the <plugin> tag at the top has a version attribute). The author should know what functions he used, and the changelog/helpfiles tend to give good information on when things were added/removed.

Other than that, your only alternative is to load older versions, and try your plugin with those.
Australia Forum Administrator #2
Yes, the problem is that authors often make the required version the current version, which is safe in the sense that if it works for them, it should work for that version, and future ones. It is harder to know which earlier versions it will also work with.

In the next post I will show a table of all of the functions recently added to the MUSHclient script engine, in reverse order by version.

The idea here is that if you have, say, version 4.20, then you can see that only a handful of functions were added since then. You could open the plugin in any text editor and do a quick scan to see if any of those functions were used. If not, it is probably safe to use the plugin.

Alternatively, there is no really good reason to not simply upgrade MUSHclient to the latest version.

Some plugins also use Lua script functions not documented here (like in the utils table). To be certain you would really need to browse through the release notes.

However again, why not just get the latest version?
Amended on Tue 01 Jul 2008 06:26 AM by Nick Gammon
Australia Forum Administrator #3

MUSHclient functions added in the last couple of years, by version, in version number order, descending:

name version
NotepadReadOnly 4.3
ShiftTabCompleteItem 4.3
SetToolBarPosition 4.29
GetSoundStatus 4.28
PlaySound 4.28
SetCommandWindowHeight 4.28
StopSound 4.28
AcceleratorTo 4.27
GetPluginAliasOption 4.21
GetPluginTimerOption 4.21
GetPluginTriggerOption 4.21
GetGlobalOption 4.18
GetGlobalOptionList 4.18
SendSpecial 4.14
TranslateDebug 4.12
GetNotepadList 4.08
GetCustomColourName 4.03
SetCustomColourName 4.03
SetWorldWindowStatus 3.85
SpellCheckDlg 3.85
Transparency 3.83
EditDistance 3.82
FlushLog 3.82
Metaphone 3.81
SendPkt 3.81
ChangeDir 3.8
DeleteLines 3.76
NotepadSaveMethod 3.76
AddSpellCheckWord 3.74
OpenBrowser 3.74
ResetIP 3.73
Simulate 3.73
Help 3.7
PasteCommand 3.69
ErrorDesc 3.68
TraceOut 3.68
BroadcastPlugin 3.67
GetUdpPort 3.66
GetWorldWindowPositionX 3.66
GetXMLEntity 3.66
MoveWorldWindowX 3.66
NoteHr 3.66
SetClipboard 3.66
SetEntity 3.66
GetWorldWindowPosition 3.6
SetChanged 3.6
UdpPortList 3.6
MtRand 3.57
MtSrand 3.57
NotepadColour 3.57
NotepadFont 3.57
GetMainWindowPosition 3.56
GetNotepadWindowPosition 3.56
GetSysColor 3.56
GetSystemMetrics 3.56
UdpListen 3.56
UdpSend 3.56
GetMapColour 3.54
MakeRegularExpression 3.54
MapColour 3.54
MapColourList 3.54
MoveMainWindow 3.54
MoveNotepadWindow 3.54
MoveWorldWindow 3.54
SpellCheck 3.54
SpellCheckCommand 3.54
Accelerator 3.53
AcceleratorList 3.53
GetWorldID 3.52
ReloadPlugin 3.5
TranslateGerman 3.5
ActivateClient 3.48
GetAliasWildcard 3.48
GetRecentLines 3.48
GetTriggerWildcard 3.48
RemoveBacktracks 3.48
EnableMapping 3.47
ArrayClear 3.46
ArrayCount 3.46
ArrayCreate 3.46
ArrayDelete 3.46
ArrayDeleteKey 3.46
ArrayExists 3.46
ArrayExport 3.46
ArrayExportKeys 3.46
ArrayGet 3.46
ArrayGetFirstKey 3.46
ArrayGetLastKey 3.46
ArrayImport 3.46
ArrayKeyExists 3.46
ArrayListAll 3.46
ArrayListKeys 3.46
ArrayListValues 3.46
ArraySet 3.46
ArraySize 3.46
ResetStatusTime 3.46
GetNoteStyle 3.42
NoteStyle 3.42
AdjustColour 3.41
ExportXML 3.41
Hyperlink 3.41
SendImmediate 3.41
SendNoEcho 3.41
GetNotepadLength 3.4
GetNotepadText 3.4
ChatCallzChat 3.39
DoCommand 3.39
GetClipboard 3.39
GetHostAddress 3.39
GetHostName 3.39
GetInternalCommandsList 3.39
GetWorldById 3.39
GetWorldIdList 3.39
ImportXML 3.39
ANSI 3.37
AnsiNote 3.37
ChatAcceptCalls 3.37
ChatCall 3.37
ChatDisconnect 3.37
ChatDisconnectAll 3.37
ChatEverybody 3.37
ChatGetID 3.37
ChatGroup 3.37
ChatID 3.37
ChatMessage 3.37
ChatNameChange 3.37
ChatNote 3.37
ChatPasteEverybody 3.37
ChatPasteText 3.37
ChatPeekConnections 3.37
ChatPersonal 3.37
ChatPing 3.37
ChatRequestConnections 3.37
ChatSendFile 3.37
ChatStopAcceptingCalls 3.37
ChatStopFileTransfer 3.37
GetChatInfo 3.37
GetChatList 3.37
GetChatOption 3.37
SetChatOption 3.37
StripANSI 3.37
DoAfterSpecial 3.35
Execute 3.35
GetEntity 3.3
CloseNotepad 3.29
DeleteAliasGroup 3.29
DeleteGroup 3.29
DeleteTimerGroup 3.29
DeleteTriggerGroup 3.29
GetAliasOption 3.29
GetTimerOption 3.29
GetTriggerOption 3.29
Info 3.29
InfoBackground 3.29
InfoClear 3.29
InfoColour 3.29
InfoFont 3.29
SaveNotepad 3.29
SetAliasOption 3.29
SetTimerOption 3.29
SetTriggerOption 3.29
ShowInfoBar 3.29
EnableAliasGroup 3.27
EnableGroup 3.27
EnableTimerGroup 3.27
EnableTriggerGroup 3.27
SendPush 3.27
LogSend 3.25
CallPlugin 3.23
ColourNote 3.23
ColourTell 3.23
CreateGUID 3.23
GetCurrentValue 3.23
GetDefaultValue 3.23
GetLoadedValue 3.23
GetPluginAliasInfo 3.23
GetPluginAliasList 3.23
GetPluginID 3.23
GetPluginInfo 3.23
GetPluginList 3.23
GetPluginName 3.23
GetPluginTimerInfo 3.23
GetPluginTimerList 3.23
GetPluginTriggerInfo 3.23
GetPluginTriggerList 3.23
GetPluginVariable 3.23
GetPluginVariableList 3.23
GetUniqueID 3.23
Hash 3.23
IsPluginInstalled 3.23
LoadPlugin 3.23
PluginSupports 3.23
Base64Decode 3.22
Base64Encode 3.22
ColourNameToRGB 3.22
GetAlphaOption 3.22
GetAlphaOptionList 3.22
PickColour 3.22
RGBColourToName 3.22
SetAlphaOption 3.22
AddTriggerEx 3.18
DeleteTemporaryAliases 3.18
DeleteTemporaryTimers 3.18
DeleteTemporaryTriggers 3.18
DoAfter 3.18
DoAfterNote 3.18
DoAfterSpeedWalk 3.18
GetCommand 3.18
GetCommandList 3.18
GetInfo 3.18
GetLineInfo 3.18
GetLinesInBufferCount 3.18
GetQueue 3.18
GetSelectionEndColumn 3.18
GetSelectionEndLine 3.18
GetSelectionStartColumn 3.18
GetSelectionStartLine 3.18
GetStyleInfo 3.18
PushCommand 3.18
SelectCommand 3.18
Amended on Tue 01 Jul 2008 06:27 AM by Nick Gammon
USA #4
It isn't for me that I'm worried about. It's the people that might use my plugins. I pretty much check the forums every day for the latest release. (By the way, I noticed there are release notes for v4.32 but the latest release is still v4.31! Is this a mistake?) My problem was more concerning people who apparently are stubborn about sticking with their version even though it makes no sense to you or me. The chart certainly helps! But is there any way of having a scan feature in the plugin wizard that scans for functions and automatically picks the earliest version? :P If not, I'll stick with the chart! Thanks for the help :D
Amended on Mon 07 Jul 2008 05:05 AM by Terry
Australia Forum Administrator #5
I thought about the scan function, but it would be hard to get right. For example, some functions like GetInfo are enhanced, but their basic release version number stays the same.

Quote:

By the way, I noticed there are release notes for v4.32 but the latest release is still v4.31! Is this a mistake?


No mistake. I document changes as I make them to the source code, but the released version may be a week or two off. If there is no release date shown, then they are pending changes.
USA #6
Quote:
some functions like GetInfo are enhanced, but their basic release version number stays the same

Hmm, since you've already made a chart with all the functions and their release dates, couldn't that be plopped into a .dat file or something? (I'm assuming this is just discussion now, so please don't think I'm pushing you :)) I was just thinking that it could highlight the syntax, and check functions against the chart to see which version it was, instead of checking to see the last update of that function. Whenever a new function is added, you could just add the func and version to the .dat manually, so you wouldn't have to worry about the file automatically changing or something. Just a thought.
Australia Forum Administrator #7
This web page now shows the first released version for a function:

http://www.gammon.com.au/scripts/function.php

Also if you want it in Lua-readable form, try this:

http://www.gammon.com.au/scripts/function.php?raw=1

That gives you my raw database data, which you can use to evaluate which function appeared in which version.

Based on that information, and with a bit of searching the plugin script, you should be able to work out which was the lowest version that supported each script function.