UOSAGAS Scripting

VScript

VScript is visual scripting. Instead of typing commands you place nodes on a canvas and wire them together: white flow lines decide what happens in which order, coloured data lines carry values between nodes. If you have used Blueprints in Unreal Engine, you already know the idea.

What it is

A VScript is a graph: a set of nodes connected by links. There are 192 node types across 9 categories, from small building blocks (add two numbers, compare, branch) to full game actions (cast a spell, find mobiles, move items between containers). The node reference is generated from the assistant itself, so everything listed there exists in your editor.

The same graphs run in two places: the editor built into the game client and the node editor in the Razor assistant. Both read and write the same files, so you can build a graph in one and continue in the other.

Anatomy of a graph

Every graph starts at the red Start node. Execution follows the white flow pins from left to right, one node at a time. Most action nodes have one flow input and one flow output; flow control nodes like Branch, Sequence, For Loop and While Loop have several outputs and decide which path runs.

Everything that is not flow is data. Data pins are typed and colour coded: green numbers, purple strings, red booleans, blue object references. A data pin can either hold a value you typed directly into the node, or be fed by a link from another node's output. Data nodes (math, logic, string operations, getters) have no flow pins at all; they are evaluated automatically whenever a connected node needs their result.

Using the editor

In Razor, open the VScripts tab and double-click a script (or press New). In the game client the editor lives in the assistant under VScripts. The canvas works the same way in both:

  • Right-click on empty space opens the node palette with a search box.
  • Drag a node by its header to move it.
  • Drag from an output pin to an input pin to create a link. Each input takes one link; dragging from a connected input picks the link up so you can re-attach it.
  • Double-click a pin to type a value (numbers accept 0x hex for serials). Double-click a node to edit its settings, like the spell of a Cast Spell node.
  • Delete removes the selected node or link (destructive removals ask for confirmation first). B toggles a breakpoint: execution pauses there so you can inspect what is happening.
  • Right or middle mouse pans, the wheel zooms.

Press Run to execute. The currently running node is highlighted, and a node that fails is marked red with the error shown in game. A waiting Delay node glows orange for the whole wait and shows a live millisecond countdown beneath it, so you always see why a graph is "stuck" — and Stop takes effect immediately even mid-delay. Every script also gets an entry under Hot Keys → Scripts so you can bind it to a key.

Variables

Graphs can define named variables (number, string, boolean, object, or lists of these) in the Variables panel. Reading and writing happens through Get Variable and Set Variable nodes, which are created from that panel so they always carry the right type.

A variable's scope controls how it behaves: Local lives for one run of the graph, Parameter becomes an input pin when another script calls this one, and Output becomes a return value. Global variables, shared between all scripts, are managed by the assistant and survive between runs.

Scripts calling scripts

The Execute Script node runs another VScript by name. Parameters of the called script show up as input pins, its outputs as output pins, so you can build a library of small reusable graphs and compose them.

Files & sharing

Each graph is one .vscript file (JSON) in the Data\VScripts folder next to the client. The format is identical everywhere: the in-game editor, the Razor editor and the script library all read the same files. Download a shared graph into that folder and it appears in your script list; upload yours from the library page to share it.

Where to go next

Browse the node reference to see every node with its pins, grouped by category. If a task feels awkward as a graph, the same automation is usually a few lines of Razor Script instead; both can run side by side.