A simple web-based tool that helps to find, plan, and map quests.
Supports .npc, .lua, and extracts books from .otbm files (sectioned).
I probably won't support it here, so if you can make it work for your files, have fun!
Basic setup:
Requirements
- Node.js 18+ and npm.
- Python 3.10+ for sync_storynode_data.py.
- Optional: PHP CLI with the gd extension if you want pre-rendered outfit sprites.
The sync script expects an Open Tibia-style server tree:
LUA:
your-server/
data/
npc/
*.xml
scripts/*.lua
*.npc or *.ndb optional legacy transcript formats
items/
items.xml
world/
sectioned/parts/*.otbm preferred when available
world.zip optional zip containing .otbm files
Quick start
Code:
npm install
npm run build:graph
npm run dev
Open http://127.0.0.1:5177/.
Generate data from your server
Run the sync script against your own server root:
Code:
python sync_storynode_data.py --engine-root "C:/path/to/your-server" --project-name "My Server" --uri-scheme "myserver"
npm run build:graph
npm run dev
To rebuild automatically while editing source files:
Code:
python sync_storynode_data.py --engine-root "D:/path/to/your-server" --watch
Then run npm run build:graph when you want to refresh the frontend payload.
Optional Sprites
The graph works without sprites. If you have item PNGs and outfit renderer assets, put them in any folder shaped like this:
Code:
public-img-source/
items/
2816.png
...
outfits/
libs/outfitter.php
outfits_anim/
...
Copy those assets and render NPC outfit combinations:
Code:
$env:STORYNODE_PUBLIC_IMG = "D:/path/to/public-img-source"
npm run sync:assets
npm run render:sprites
npm run build:graph
More screens: