Scriptsnx_write
Changelog
Version history for nx_write.
1.5.0 (2026-08-23)
Performance
Writing sessions used to resend the whole page to every nearby player several times a second. They no longer do.
- A session with nobody nearby sends nothing at all. When someone walks up they get one full copy, then only the strokes that follow. Each stroke costs a few hundred bytes instead of a few hundred kilobytes.
- Full pages go out on a page turn, a clear, a tear, or after a few seconds of stillness.
- Stroke data is around 24 times smaller, on disk and over the wire. Existing documents convert on their next save. The database schema does not change.
- Opening a note takes one request instead of five, and the response no longer carries the note's preview image.
- A placed note that fails to render gives up after three attempts and waits before trying again, instead of hammering the same call.
Added
RegisterPaperKind, on client and server. Another resource can add its own writable paper at runtime. A registered kind inherits the post-it's hold pose, pen and hand IK, so it tracks future post-it tuning instead of a frozen copy. See Exports.- Server export
GetDocumentPreview. Read a saved document's preview image and render the ink outside nx_write, on your own prop or in your own UI. Openaccepts abackgroundimage drawn under the writing surface. Registered kinds set the box it fills withbackground.box.
Changed
- Ink width follows pen speed, and strokes taper at both ends.
- Saved previews are rendered at the size a placed note actually draws at, so they read sharper on the wall.
Fixed
- Heavy notepads could fail to save with a serialization error. Preview images are now size-budgeted, and every page of a loaded document is compacted rather than only the pages the writer visited.
- Ink no longer shifts when the pen lifts. What you see while drawing is what gets saved and what everyone else sees.
- The stroke limit is enforced while writing, with a "Notepad full" hint, instead of failing at save time.
1.4.0 (2026-08-06)
Performance
The placed-note renderer was rebuilt. The savings scale with how many notes are around, so note walls and busy offices gain the most.
- Shared note surfaces. Notes of the same paper type now draw from one shared surface instead of one each. Fifteen placed post-its went from fifteen surfaces down to one, a 93% cut. Bringing a note into range swaps an image rather than starting a new surface, so the roughly 1.5 second blank delay on approach is gone.
- Notes you are not looking at are free. Off-screen notes used to draw every frame at full price. They are now skipped entirely, so turning away from a wall of notes drops most of its cost and walking out of range drops all of it.
- Half the draw calls per note. A note's position is also worked out once when it comes into range instead of every frame.
1.3.0 (2026-08-04)
Added
- Page tear. Hold the tear button in freehand mode to rip the current page out. It crumples in the hand and gets flicked away as a paper ball everyone nearby can see. Pages behind shift forward like a real pad.
- Post-its tear too. The pad resets to a blank sheet and the item is not consumed.
- Handwriting size. The "aA" button cycles Normal, Large and Huge. The size sticks to the document and shows on the placed note.
Config.Voice. Push-to-talk now works while writing, in text and freehand mode.typingKeyspicks which keys open the mic while typing.
Changed
- A saved notepad reopens on the page it was left on.
Fixed
- Esc no longer opens the pause menu when you close a note in freehand mode.
- Long words with no spaces used to run off the edge of a saved preview or placed note as one row. They now wrap the way they do on the live page.
1.2.0 (2026-06-14)
Added
- Client export
CreatePlacement: create a placement at explicit coords and rotation, skipping the aim preview. The hook for custom positioning tooling (transform gizmos, snapping, free-rotate). Accepts a live entity, a quaternion, or a GTA-euler rotation for the pose. - Client export
RefreshPlacements: re-pull placements from the server and render any not held locally. Useful after writing tonx_write_placementsout of band. - Server export
CreatePlacement: the trusted, server-authored mirror of the client export. Skips the rate-limit and distance gate, since the server supplies the coords.
1.1.0 (2026-06-10)
Added
- Custom inventory support via
Config.Inventory(auto/ox/custom). - Client exports:
Open,Place,Close,IsBusy. - Server export:
Open. - Server events:
nx_write:documentSaved,nx_write:placementCreated,nx_write:placementPickedUp.
Changed
Config.PostitPickupModeadds'both'(offer Remove and Pick up in one menu).
1.0.1 (2026-06-07)
Fixed an export-related update mismatch; requires downloading the latest version of nx-3d.
1.0.0 (2026-06-06)
Initial documentation.