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?
Functions Compatability with MC versions
Posted by Terry on Mon 30 Jun 2008 02:51 PM — 8 posts, 29,727 views.
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.
Other than that, your only alternative is to load older versions, and try your plugin with those.
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?
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?
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 |
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
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.
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.
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?
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.
Quote:
some functions like GetInfo are enhanced, but their basic release version number stays the same
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.
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.
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.