Go to file
2021-09-09 03:26:16 -04:00
.vscode First commit 2021-09-02 13:31:56 -04:00
src Updates 2021-09-09 03:14:44 -04:00
.editorconfig First commit 2021-09-02 13:31:56 -04:00
.gitignore First commit 2021-09-02 13:31:56 -04:00
config.json Updates 2021-09-09 03:14:44 -04:00
index.ts Updates 2021-09-09 03:14:44 -04:00
package-lock.json Updates 2021-09-09 03:14:44 -04:00
package.json Updates 2021-09-09 03:14:44 -04:00
README.md Update readme 2021-09-09 03:26:16 -04:00
tsconfig.json Updates 2021-09-09 03:14:44 -04:00

Nitro Imager

This tool serves as a server-side habbo-imager using the same avatar generator from nitro-renderer. It will download & cache in memory .nitro assets. Rendered figures will also save to a local folder to prevent re-renders. You will use the same process as your nitro-client to update assets for the imager.

Configuration

You must configure your urls in config.json

Your figuredata, figuremap, effectmap, & HabboAvatarActions can safely point to a remote URL without worrying about performance.

You should set all download urls to local absolute paths on your system, this will allow for faster downloading of figures. However, you may point to remote urls as well.

You must also set an absolute path to a location where rendered figures can save to. This can be a private folder that is not accessible from the web.

Running the server

Make sure you run npm i before first use.

You must compile the server by running npm run build

To start the server you must run npm start

The server will run on the desired host & port as set in the config. You must setup a reverse proxy on your server to make the imager publicly accessible.

NGINX Example

server {
	listen 80;
	listen [::]:80;
	
	listen 443;
	listen [::]:443;
	
	server_name habbo-imaging.website.com;
	
	location / {
		proxy_pass                  http://localhost:1338;
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

URL paramaters

Their are a few different options you may pass as URL parameters to generate figures with different actions. All parameters are optional.

key default description
figure null The figure string to be rendered
action null The actions to render, see actions below
gesture std The gesture to render, see gestures below
direction 2 The direction to render, from 0-7
head_direction 2 The head direction to render, from 0-7
headonly 0 A value of 0 or 1
dance 0 A dance id of 0-4 to render
effect 0 An effect id to render
size n The size to render, see sizes below
frame_num 0 The frame number to render
img_format png A value of png or gif. Gif will render all frames of the figure

Actions

You may render multiple actions with a comma separater

Example: &action=wlk,wav,drk=1

Posture
key description
std Renders the standing posture
wlk,mv Renders the walking posture
sit Renders the sitting posture
lay Renders the laying posture
Expression
key description
wav,wave Renders the waving expression
blow Renders the kissing expression
laugh Renders the laughing expression
respect Renders the respect expression
Carry / Drink

To hold a certain drink, use an equal separator with the hand item id. You can only render one of these options at a time

key description
crr,cri Renders the carry action
drk,usei Renders the drink action

Gestures

key description
std Renders the standard gesture
agr Renders the aggravated gesture
sad Renders the sad gesture
sml Renders the smile gesture
srp Renders the surprised gesture

Sizes

key description
s Renders the small size (0.5)
n Renders the normal size (1)
l Renders the large size (2)

Known Issues

  • GIFs are only able to render 1 bit alpha channels, therefore most effects will not correctly render due to using many different alpha values.
  • The rendered canvas size may not match habbos imager exactly, we will hopefully have this addressed soon.