Script Editor Plugin – Arma Reforger
Jump to navigation
Jump to search
This tutorial teaches how to create a Script Editor-specific plugin.
Setup
- Open Script Editor
- In an addon, create a new script in WorkbenchGame
/ScriptEditor - name it TAG_TutorialPlugin.c (must end with Plugin by convention) - Double-click the file to open it
- Press Ctrl + T to use the Script Template plugin
- In its window, select "Class Type: WorkbenchPlugin", leave the other fields blank/default
- A Workbench plugin skeleton is inserted.
- In the WorkbenchPluginAttribute, replace wbModules: { "ResourceManager" } by wbModules: { "ScriptEditor" }
- In the Run() method, write Print("It works!"); and save the file
- Press Ctrl + ⇧ Shift + R to reload scripts
- The TAG_TutorialPlugin plugin should appear in the Script Editor's Plugins list, available in the top bar - click on the plugin entry
- "It works!" gets printed in the output console.
ScriptEditor Module API
In the below code, the GetCurrentLine method is used to get the cursor location's line number. The GetLineText/SetLineText methods is used to obtain and change the line's value by adding an inline comment indicating the current line number ("hardcoded" into the comment).
[WorkbenchPluginAttribute(name: "Tutorial Plugin", description: "This tutorial plugin does something.", shortcut: "Ctrl+Shift+H", wbModules: { "ScriptEditor" }, awesomeFontCode: 0xF188)]
class TAG_TutorialPlugin : WorkbenchPlugin
{
override void Run()
{
ScriptEditor scriptEditor = Workbench.GetModule(ScriptEditor);
int lineNumber = scriptEditor.GetCurrentLine();
string lineContent;
scriptEditor.GetLineText(lineContent);
lineContent += " // current line is " + (lineNumber + 1);
scriptEditor.SetLineText(lineContent);
}
}
Dialog
Displayed parameters are declared values decorated with an Attribute; a full setup is done as follow:
[WorkbenchPluginAttribute(name: "Tutorial Plugin", description: "This tutorial plugin does something.", shortcut: "Ctrl+Shift+H", wbModules: { "ScriptEditor" }, awesomeFontCode: 0xF188)]
class TAG_TutorialPlugin : WorkbenchPlugin
{
[Attribute(desc: "Only display the line number without any other text")]
protected bool m_bOnlyLineNumber;
override void Run()
{
ScriptEditor scriptEditor = Workbench.GetModule(ScriptEditor);
int lineNumber = scriptEditor.GetCurrentLine();
string lineContent;
scriptEditor.GetLineText(lineContent);
if (lineContent.IsEmpty())
{
Workbench.Dialog("Empty line", "You cannot add a comment to a completely empty line.");
return;
}
if (m_bOnlyLineNumber)
lineContent += " // " + (lineNumber + 1).ToString();
else
lineContent += " // current line is " + (lineNumber + 1).ToString();
scriptEditor.SetLineText(lineContent);
}
override void Configure()
{
Workbench.ScriptDialog("Tutorial Plugin Configuration", "Usage:\nTick the checkbox or not, depending on if the line number should be written or not", this);
}
}