├── .gitignore ├── emulator ├── Dockerfile ├── scripts │ └── build.sh ├── config.ini └── supervisor │ └── supervisord.conf ├── nitro ├── Dockerfile ├── scripts │ └── build.sh ├── configuration │ ├── nitro-converter │ │ └── configuration.json │ └── nitro-react │ │ └── public │ │ ├── renderer-config.json │ │ └── ui-config.json └── supervisor │ └── supervisord.conf ├── mysql ├── conf.d │ └── my.cnf └── dumps │ └── arcturus_migration_3.0.0_to_3.5.0.sql ├── .gitmodules ├── docker-compose.yaml ├── README.md └── justfile /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | **/*.pid 3 | emulator/logging 4 | nitro/nitro-assets/* -------------------------------------------------------------------------------- /emulator/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jdk-alpine 2 | 3 | WORKDIR /app 4 | 5 | RUN apk update 6 | RUN apk add openjdk8 7 | RUN apk add bash 8 | RUN apk add maven 9 | RUN apk add mysql-client 10 | RUN apk add supervisor 11 | -------------------------------------------------------------------------------- /nitro/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20.2.0-alpine3.18 2 | 3 | WORKDIR /app 4 | 5 | RUN apk update 6 | RUN apk add bash 7 | RUN apk add mysql-client 8 | RUN apk add supervisor 9 | RUN apk add rsync 10 | 11 | RUN yarn global add http-server 12 | 13 | RUN yarn install -------------------------------------------------------------------------------- /mysql/conf.d/my.cnf: -------------------------------------------------------------------------------- 1 | [mysqld] 2 | bind-address=0.0.0.0 3 | general_log = 0 4 | general_log_file = /var/log/mysql/query.log 5 | 6 | slow_query_log = 0 7 | long_query_time = 1 # seconds 8 | slow_query_log_file = /var/log/mysql/slow.log 9 | log_queries_not_using_indexes = 0 10 | skip-name-resolve=1 11 | -------------------------------------------------------------------------------- /emulator/scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | supervisord -c /app/supervisor/supervisord.conf 4 | 5 | cd /app/arcturus 6 | mvn package 7 | cp /app/config.ini /app/arcturus/target/config.ini 8 | mkdir /app/arcturus/target/plugins 9 | cd /app/arcturus/target/plugins 10 | wget https://git.krews.org/morningstar/nitrowebsockets-for-ms/-/raw/aff34551b54527199401b343a35f16076d1befd5/target/NitroWebsockets-3.1.jar 11 | 12 | supervisorctl start arcturus-emulator 13 | 14 | tail -f /dev/null -------------------------------------------------------------------------------- /nitro/scripts/build.sh: -------------------------------------------------------------------------------- 1 | supervisord -c /app/supervisor/supervisord.conf 2 | 3 | cp /app/configuration/nitro-converter/configuration.json /app/nitro-converter/src/configuration.json 4 | cd /app/nitro-converter; yarn install; 5 | 6 | cp /app/configuration/nitro-react/public/* /app/nitro-react/public/ 7 | cd /app/nitro-react; yarn install; 8 | 9 | supervisorctl start swf-http-server 10 | supervisorctl start assets-http-server 11 | supervisorctl start nitro-dev-server 12 | 13 | tail -f /dev/null -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "emulator/arcturus"] 2 | path = emulator/arcturus 3 | url = https://git.krews.org/morningstar/Arcturus-Community.git 4 | [submodule "nitro/nitro-react"] 5 | path = nitro/nitro-react 6 | url = https://github.com/billsonnn/nitro-react.git 7 | [submodule "nitro/nitro-converter"] 8 | path = nitro/nitro-converter 9 | url = https://github.com/billsonnn/nitro-converter.git 10 | [submodule "nitro/nitro-swf"] 11 | path = nitro/nitro-swf 12 | url = https://git.krews.org/morningstar/arcturus-morningstar-default-swf-pack.git 13 | [submodule "nitro/nitro-assets"] 14 | path = nitro/nitro-assets 15 | url = https://git.krews.org/nitro/default-assets.git 16 | -------------------------------------------------------------------------------- /nitro/configuration/nitro-converter/configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "flash.client.url": "http://127.0.0.1:8081/gordon/PRODUCTION/", 3 | "furnidata.load.url": "http://127.0.0.1:8081/gamedata/furnidata.xml", 4 | "productdata.load.url": "http://127.0.0.1:8081/gamedata/productdata.txt", 5 | "figuredata.load.url": "https://www.habbo.com/gamedata/figuredata/1", 6 | "figuremap.load.url": "http://127.0.0.1:8081/gamedata/figuremap.xml", 7 | "effectmap.load.url": "http://127.0.0.1:8081/gamedata/effectmap.xml", 8 | "dynamic.download.pet.url": "${flash.client.url}%className%.swf", 9 | "dynamic.download.figure.url": "${flash.client.url}%className%.swf", 10 | "dynamic.download.effect.url": "${flash.client.url}%className%.swf", 11 | "flash.dynamic.download.url": "http://127.0.0.1:8081/dcr/hof_furni", 12 | "dynamic.download.furniture.url": "${flash.dynamic.download.url}/%className%.swf", 13 | "external.variables.url": "http://127.0.0.1:8081/gamedata/external_variables.txt", 14 | "external.texts.url": "http://127.0.0.1:8081/gamedata/external_flash_texts.txt", 15 | "convert.figure": "1", 16 | "convert.effect": "1", 17 | "convert.furniture": "1", 18 | "convert.furniture.floor.only": "0", 19 | "convert.furniture.wall.only": "0", 20 | "convert.pet": "1" 21 | } 22 | -------------------------------------------------------------------------------- /emulator/config.ini: -------------------------------------------------------------------------------- 1 | 2 | #To get the camera working visit git.krews.org and download Apollyon from official-plugins! 3 | 4 | #Database Configuration. 5 | db.hostname=mysql 6 | db.port=3306 7 | db.database=arcturus 8 | db.username=arcturus_user 9 | db.password=arcturus_pw 10 | db.params= 11 | db.pool.minsize=25 12 | db.pool.maxsize=100 13 | 14 | #Game Configuration. 15 | 16 | #Host IP. Most likely just 0.0.0.0 Use 127.0.0.1 if you want to play on LAN. 17 | game.host=0.0.0.0 18 | game.port=3000 19 | 20 | #RCON Configuration. 21 | 22 | #RCON Host IP. Leave this at 127.0.0.1 if you're running your website on the same server as the emulator. 23 | rcon.host=127.0.0.1 24 | rcon.port=3001 25 | rcon.allowed=127.0.0.1;127.0.0.2 26 | 27 | enc.enabled=false 28 | enc.e=3 29 | enc.n=86851dd364d5c5cece3c883171cc6ddc5760779b992482bd1e20dd296888df91b33b936a7b93f06d29e8870f703a216257dec7c81de0058fea4cc5116f75e6efc4e9113513e45357dc3fd43d4efab5963ef178b78bd61e81a14c603b24c8bcce0a12230b320045498edc29282ff0603bc7b7dae8fc1b05b52b2f301a9dc783b7 30 | enc.d=59ae13e243392e89ded305764bdd9e92e4eafa67bb6dac7e1415e8c645b0950bccd26246fd0d4af37145af5fa026c0ec3a94853013eaae5ff1888360f4f9449ee023762ec195dff3f30ca0b08b8c947e3859877b5d7dced5c8715c58b53740b84e11fbc71349a27c31745fcefeeea57cff291099205e230e0c7c27e8e1c0512b 31 | 32 | 33 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | volumes: 4 | volume-mysql: 5 | volume-arcturus-maven-repo: 6 | volume-arcturus-target: 7 | volume-nitro-converter-node-modules: 8 | volume-nitro-react-node-modules: 9 | 10 | services: 11 | arcturus: 12 | container_name: arcturus 13 | build: 14 | context: emulator 15 | entrypoint: ["/bin/sh","/app/scripts/build.sh"] 16 | volumes: 17 | - ./emulator/:/app/ 18 | - volume-arcturus-target:/app/arcturus/target 19 | - volume-arcturus-maven-repo:/root/.m2 20 | ports: 21 | - 3000:3000 22 | - 3001:3001 23 | - 2096:2096 24 | depends_on: 25 | - mysql 26 | networks: 27 | nitro: 28 | 29 | nitro: 30 | container_name: nitro 31 | build: 32 | context: nitro 33 | entrypoint: ["/bin/sh","/app/scripts/build.sh"] 34 | volumes: 35 | - ./nitro/:/app/ 36 | - volume-nitro-converter-node-modules:/app/nitro-converter/node_modules 37 | - volume-nitro-react-node-modules:/app/nitro-react/node_modules 38 | ports: 39 | - 1080:5154 40 | - 8080:8080 41 | - 8081:8081 42 | networks: 43 | nitro: 44 | 45 | mysql: 46 | container_name: mysql 47 | image: mariadb:10.6 48 | command: --default-authentication-plugin=mysql_native_password 49 | environment: 50 | - MYSQL_ROOT_PASSWORD=arcturus_root_pw 51 | - MYSQL_USER=arcturus_user 52 | - MYSQL_PASSWORD=arcturus_pw 53 | - MYSQL_DATABASE=arcturus 54 | volumes: 55 | - volume-mysql:/var/lib/mysql 56 | - ./mysql/conf.d:/etc/mysql/conf.d 57 | - ./mysql/dumps:/docker-entrypoint-initdb.d 58 | ports: 59 | - 13306:3306 60 | networks: 61 | nitro: 62 | 63 | networks: 64 | nitro: 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nitro Docker 2 | Nitro docker is a quick-to-setup docker dev environment. It can be run on Windows, Linux or OSX just with a few commands 3 | 4 | # Installation 5 | - Install ``just`` from here: https://github.com/casey/just#installation 6 | - Install docker desktop (and for windows, enable WSL support) from here: https://www.docker.com/get-started/ 7 | - Clone this repository 8 | - Execute the following commands inside cloned repository 9 | - `just install` 10 | - `just start-all` 11 | - Wait 5/10 minutes (it's important) 12 | - Once nitro accessible on [http://127.0.0.1:1080?sso=123](http://127.0.0.1:1080?sso=123) 13 | - you can extract all assets easily with the command `just extract-nitro-assets` 14 | 15 | ## More commands 16 | - `just restart-arcturus`: restart arcturus emulator 17 | - `just restart-nitro`: restart nitro dev server (Craco in nitro-react) 18 | - `just watch-arcturus`: watch the emulator output 19 | - `just watch-nitro`: watch the nitro dev server output 20 | - `just --list`: display all usefull commands <3 21 | 22 | ## More informations 23 | ### Mysql 24 | Mysql server use these credentials: 25 | ``` 26 | - MYSQL_ROOT_PASSWORD=arcturus_root_pw 27 | - MYSQL_USER=arcturus_user 28 | - MYSQL_PASSWORD=arcturus_pw 29 | - MYSQL_DATABASE=arcturus 30 | ``` 31 | The first database come from mysql/dumps, it's the base Arcturus database for 3.0.X with just a default SSO ticket (123). 32 | 33 | ### Arcturus 34 | - Arcturus is stored in emulator/arcturus, it's just a submodule from krews.git. Each time you run the nitro-arcturus image, each time the emulator is recompiled. You can recompile manualy with the command `just recompile-arcturus`. 35 | - The NitroWebSocket plugin is already added 36 | - All the configuration can be found in `emulator/config.ini` 37 | 38 | ### Nitro 39 | - Nitro is the folder for nitro dev server, assets, swf, converters... 40 | - The nitro-image contains 3 server: assets server (for all *.nitro files), swf server from morningstar (who contain all current useful SWF) and nitro-dev server on nitro-react. 41 | - All extracted assets come from nitro-swf and will be extracted in nitro-assets (the nitro converter use the swf server) 42 | - All the configurations for nitro-react are in `nitro/configuration`. If you make some change, just make `just restart-nitro` 43 | 44 | ### Have fun <3 45 | -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- 1 | set windows-powershell := true 2 | 3 | default: 4 | @just --list 5 | 6 | # Install all easily 7 | install: 8 | git submodule init 9 | git submodule update 10 | 11 | # Start Mysql, Arcturus Emulator & Nitro (not in daemon mod) 12 | start-all: 13 | docker-compose up 14 | 15 | # Close docker containers, remove images and clean volumes 16 | clean-docker: 17 | docker-compose down 18 | docker image rm nitro-docker_arcturus -f 19 | docker image rm nitro-docker_nitro -f 20 | docker volume rm nitro-docker_volume-arcturus-maven-repo 21 | docker volume rm nitro-docker_volume-arcturus-target 22 | docker volume rm nitro-docker_volume-mysql 23 | docker volume rm nitro-docker_volume-nitro-converter-node-modules 24 | docker volume rm nitro-docker_volume-nitro-react-node-modules 25 | 26 | # Open the MySQL console 27 | mysql: 28 | docker exec -it arcturus bash -c "mysql -h mysql -u arcturus_user -parcturus_pw arcturus" 29 | 30 | # Restart Arcturus Emulator 31 | restart-arcturus: 32 | docker exec arcturus supervisorctl restart arcturus-emulator 33 | 34 | # Stop Arcturus Emulator 35 | stop-arcturus: 36 | docker exec arcturus supervisorctl stop arcturus-emulator 37 | 38 | # Start Arcturus Emulator 39 | start-arcturus: 40 | docker exec arcturus supervisorctl start arcturus-emulator 41 | 42 | # Recompile Arcturus Emulator 43 | recompile-arcturus: 44 | docker exec arcturus supervisorctl stop arcturus-emulator 45 | docker exec -it arcturus bash -c "cd /app/arcturus; mvn package; cp /app/config.ini /app/arcturus/target/config.ini;" 46 | docker exec arcturus supervisorctl start arcturus-emulator 47 | 48 | # Watch Arcturus's output 49 | watch-arcturus: 50 | docker exec arcturus supervisorctl tail -f arcturus-emulator 51 | 52 | # Enter in the Arcturus's shell: 53 | shell-arcturus: 54 | docker exec -it arcturus bash 55 | 56 | # Restart Nitro dev server 57 | restart-nitro: 58 | docker exec nitro supervisorctl stop nitro-dev-server 59 | docker exec nitro bash -c "cp /app/configuration/nitro-react/public/* /app/nitro-react/public/" 60 | docker exec nitro supervisorctl start nitro-dev-server 61 | 62 | # Stop Nitro Dev Server 63 | stop-nitro: 64 | docker exec nitro supervisorctl stop nitro-dev-server 65 | 66 | # Start Nitro Dev Server 67 | start-nitro: 68 | docker exec nitro supervisorctl start nitro-dev-server 69 | 70 | # Enter in the Nitro's shell 71 | shell-nitro: 72 | docker exec -it nitro bash 73 | 74 | # Watch Nitro dev server's output 75 | watch-nitro: 76 | docker exec nitro supervisorctl tail -f nitro-dev-server 77 | 78 | 79 | # Extract nitro assets from SWF 80 | extract-nitro-assets: 81 | docker exec -it nitro bash -c "cp /app/configuration/nitro-converter/configuration.json /app/nitro-converter/configuration.json" 82 | docker exec -it nitro bash -c "cd /app/nitro-converter; yarn ts-node-dev --transpile-only src/Main.ts" 83 | docker exec -it nitro bash -c "echo 'Moving assets...'" 84 | docker exec -it nitro bash -c "rsync -r /app/nitro-converter/assets/* /app/nitro-assets/" 85 | docker exec -it nitro bash -c "echo 'Done !'" 86 | -------------------------------------------------------------------------------- /emulator/supervisor/supervisord.conf: -------------------------------------------------------------------------------- 1 | ; Sample supervisor config file. 2 | 3 | [unix_http_server] 4 | file=/run/supervisord.sock ; (the path to the socket file) 5 | ;chmod=0700 ; socked file mode (default 0700) 6 | ;chown=nobody:nogroup ; socket file uid:gid owner 7 | ;username=user ; (default is no username (open server)) 8 | ;password=123 ; (default is no password (open server)) 9 | 10 | ;[inet_http_server] ; inet (TCP) server disabled by default 11 | ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) 12 | ;username=user ; (default is no username (open server)) 13 | ;password=123 ; (default is no password (open server)) 14 | 15 | [supervisord] 16 | logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log) 17 | ;logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) 18 | ;logfile_backups=10 ; (num of main logfile rotation backups;default 10) 19 | loglevel=info ; (log level;default info; others: debug,warn,trace) 20 | ;pidfile=/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) 21 | ;nodaemon=false ; (start in foreground if true;default false) 22 | ;minfds=1024 ; (min. avail startup file descriptors;default 1024) 23 | ;minprocs=200 ; (min. avail process descriptors;default 200) 24 | ;umask=022 ; (process file creation umask;default 022) 25 | ;user=chrism ; (default is current user, required if root) 26 | ;identifier=supervisor ; (supervisord identifier, default is 'supervisor') 27 | ;directory=/tmp ; (default is not to cd during start) 28 | ;nocleanup=true ; (don't clean up tempfiles at start;default false) 29 | ;childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) 30 | ;environment=KEY=value ; (key value pairs to add to environment) 31 | ;strip_ansi=false ; (strip ansi escape codes in logs; def. false) 32 | 33 | ; the below section must remain in the config file for RPC 34 | ; (supervisorctl/web interface) to work, additional interfaces may be 35 | ; added by defining them in separate rpcinterface: sections 36 | [rpcinterface:supervisor] 37 | supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 38 | 39 | [supervisorctl] 40 | serverurl=unix:///run/supervisord.sock ; use a unix:// URL for a unix socket 41 | ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket 42 | ;username=chris ; should be same as http_username if set 43 | ;password=123 ; should be same as http_password if set 44 | ;prompt=mysupervisor ; cmd line prompt (default "supervisor") 45 | ;history_file=~/.sc_history ; use readline history if available 46 | 47 | ; The below sample program section shows all possible program subsection values, 48 | ; create one or more 'real' program: sections to be able to control them under 49 | ; supervisor. 50 | 51 | [program:arcturus-emulator] 52 | command=/usr/bin/java -jar Habbo-3.5.0-jar-with-dependencies.jar -Dfile.encoding=UTF-8 -Duser.country=EN -Duser.language=en 53 | process_name=arcturus-emulator 54 | directory=/app/arcturus/target 55 | priority=999 56 | autostart=false 57 | autorestart=unexpected 58 | -------------------------------------------------------------------------------- /nitro/supervisor/supervisord.conf: -------------------------------------------------------------------------------- 1 | ; Sample supervisor config file. 2 | 3 | [unix_http_server] 4 | file=/run/supervisord.sock ; (the path to the socket file) 5 | ;chmod=0700 ; socked file mode (default 0700) 6 | ;chown=nobody:nogroup ; socket file uid:gid owner 7 | ;username=user ; (default is no username (open server)) 8 | ;password=123 ; (default is no password (open server)) 9 | 10 | ;[inet_http_server] ; inet (TCP) server disabled by default 11 | ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) 12 | ;username=user ; (default is no username (open server)) 13 | ;password=123 ; (default is no password (open server)) 14 | 15 | [supervisord] 16 | logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log) 17 | ;logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) 18 | ;logfile_backups=10 ; (num of main logfile rotation backups;default 10) 19 | loglevel=info ; (log level;default info; others: debug,warn,trace) 20 | ;pidfile=/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) 21 | ;nodaemon=false ; (start in foreground if true;default false) 22 | ;minfds=1024 ; (min. avail startup file descriptors;default 1024) 23 | ;minprocs=200 ; (min. avail process descriptors;default 200) 24 | ;umask=022 ; (process file creation umask;default 022) 25 | ;user=chrism ; (default is current user, required if root) 26 | ;identifier=supervisor ; (supervisord identifier, default is 'supervisor') 27 | ;directory=/tmp ; (default is not to cd during start) 28 | ;nocleanup=true ; (don't clean up tempfiles at start;default false) 29 | ;childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) 30 | ;environment=KEY=value ; (key value pairs to add to environment) 31 | ;strip_ansi=false ; (strip ansi escape codes in logs; def. false) 32 | 33 | ; the below section must remain in the config file for RPC 34 | ; (supervisorctl/web interface) to work, additional interfaces may be 35 | ; added by defining them in separate rpcinterface: sections 36 | [rpcinterface:supervisor] 37 | supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 38 | 39 | [supervisorctl] 40 | serverurl=unix:///run/supervisord.sock ; use a unix:// URL for a unix socket 41 | ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket 42 | ;username=chris ; should be same as http_username if set 43 | ;password=123 ; should be same as http_password if set 44 | ;prompt=mysupervisor ; cmd line prompt (default "supervisor") 45 | ;history_file=~/.sc_history ; use readline history if available 46 | 47 | ; The below sample program section shows all possible program subsection values, 48 | ; create one or more 'real' program: sections to be able to control them under 49 | ; supervisor. 50 | 51 | [program:assets-http-server] 52 | command=/usr/local/bin/http-server ./ -p 8080 -i --cors 53 | process_name=assets-http-server 54 | directory=/app/nitro-assets 55 | priority=999 56 | autostart=false 57 | autorestart=unexpected 58 | 59 | [program:swf-http-server] 60 | command=/usr/local/bin/http-server ./ -p 8081 -i --cors 61 | process_name=swf-http-server 62 | directory=/app/nitro-swf 63 | priority=999 64 | autostart=false 65 | autorestart=unexpected 66 | 67 | [program:nitro-dev-server] 68 | command=/usr/local/bin/yarn vite --host --port 5154 69 | process_name=nitro-dev-server 70 | directory=/app/nitro-react 71 | priority=999 72 | autostart=false 73 | autorestart=unexpected 74 | -------------------------------------------------------------------------------- /mysql/dumps/arcturus_migration_3.0.0_to_3.5.0.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('wired.place.under', '0'); 2 | INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('wired.custom.enabled', '0'); 3 | 4 | INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.error.cmd_stalk.forgot_username', 'Specify the username of the Habbo you want to follow!'); 5 | 6 | -- Enable or Disable TTY in console (Default is enabled) 7 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('console.mode', '1'); 8 | 9 | -- Youtube Api v3 key to YoutubeManager 10 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('youtube.apikey', ''); 11 | 12 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('hotel.gifts.length.max', '300'); 13 | 14 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('hotel.trophies.length.max', '300'); 15 | 16 | -- Add friendship categories table 17 | CREATE TABLE `messenger_categories` ( 18 | `id` int NOT NULL AUTO_INCREMENT, 19 | `name` varchar(25) NOT NULL, 20 | `user_id` int NOT NULL, 21 | UNIQUE KEY `identifier` (`id`) 22 | ); 23 | 24 | -- Set an ID (int) from category list items 25 | ALTER TABLE messenger_friendships ADD category int NOT NULL DEFAULT '0' AFTER friends_since; 26 | 27 | 28 | -- ---------------------------- 29 | -- Table structure for calendar_campaigns 30 | -- ---------------------------- 31 | DROP TABLE IF EXISTS `calendar_campaigns`; 32 | CREATE TABLE `calendar_campaigns` ( 33 | `id` int NOT NULL AUTO_INCREMENT, 34 | `name` varchar(255) NOT NULL DEFAULT '', 35 | `image` varchar(255) NOT NULL DEFAULT '', 36 | `start_timestamp` int NOT NULL DEFAULT '0', 37 | `total_days` int NOT NULL DEFAULT '30', 38 | `lock_expired` enum('1','0') NOT NULL DEFAULT '1', 39 | `enabled` enum('1','0') NOT NULL DEFAULT '1', 40 | UNIQUE KEY `id` (`id`) 41 | ); 42 | 43 | -- ---------------------------- 44 | -- Table structure for calendar_rewards 45 | -- ---------------------------- 46 | DROP TABLE IF EXISTS `calendar_rewards`; 47 | CREATE TABLE `calendar_rewards` ( 48 | `id` int NOT NULL AUTO_INCREMENT, 49 | `campaign_id` int NOT NULL DEFAULT '0', 50 | `product_name` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '', 51 | `custom_image` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '', 52 | `credits` int NOT NULL DEFAULT '0', 53 | `pixels` int NOT NULL DEFAULT '0', 54 | `points` int NOT NULL DEFAULT '0', 55 | `points_type` int NOT NULL DEFAULT '0', 56 | `badge` varchar(25) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '', 57 | `item_id` int NOT NULL DEFAULT '0', 58 | `subscription_type` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT '', 59 | `subscription_days` int NOT NULL DEFAULT '0', 60 | PRIMARY KEY (`id`) USING BTREE 61 | ); 62 | 63 | -- ---------------------------- 64 | -- Table structure for calendar_rewards_claimed 65 | -- ---------------------------- 66 | DROP TABLE IF EXISTS `calendar_rewards_claimed`; 67 | CREATE TABLE `calendar_rewards_claimed` ( 68 | `user_id` int NOT NULL, 69 | `campaign_id` int NOT NULL DEFAULT '0', 70 | `day` int NOT NULL, 71 | `reward_id` int NOT NULL, 72 | `timestamp` int NOT NULL 73 | ); 74 | 75 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('hotel.calendar.default', 'test'); 76 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('hotel.calendar.pixels.hc_modifier', '2.0'); 77 | 78 | -- Calendar force open 79 | ALTER TABLE `permissions` ADD COLUMN `acc_calendar_force` enum('0','1') NULL DEFAULT '0'; 80 | 81 | -- UpdateCalendar command. 82 | ALTER TABLE `permissions` ADD `cmd_update_calendar` ENUM('0', '1') NOT NULL DEFAULT '0'; 83 | INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.description.cmd_update_calendar', ':update_calendar'), ('commands.keys.cmd_update_calendar', 'update_calendar'); 84 | INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.success.cmd_update_calendar', 'Calendar updated successfully!'); 85 | 86 | -- add moodlight configuration 87 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('moodlight.color_check.enabled', '1'); 88 | 89 | -- Mannequin name 90 | INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('hotel.mannequin.name.default', 'My look'); 91 | 92 | -- RCON: Change Username 93 | INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('rcon.alert.user.change_username', 'You can change your username. Click on yourself to change it.'); 94 | 95 | -- Custom Stacking Setting 96 | INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('custom.stacking.enabled', '0'); 97 | -------------------------------------------------------------------------------- /nitro/configuration/nitro-react/public/renderer-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "socket.url": "ws://127.0.0.1:2096", 3 | "asset.url": "http://127.0.0.1:8080", 4 | "image.library.url": "http://127.0.0.1:8081/c_images/", 5 | "hof.furni.url": "http://127.0.0.1:8081/dcr/hof_furni", 6 | "images.url": "${asset.url}/images", 7 | "gamedata.url": "${asset.url}/gamedata", 8 | "sounds.url": "${asset.url}/sounds/%sample%.mp3", 9 | "external.texts.url": [ "${gamedata.url}/ExternalTexts.json", "${gamedata.url}/UITexts.json" ], 10 | "external.samples.url": "${hof.furni.url}/mp3/sound_machine_sample_%sample%.mp3", 11 | "furnidata.url": "${gamedata.url}/FurnitureData.json", 12 | "productdata.url": "${gamedata.url}/ProductData.json", 13 | "avatar.actions.url": "${gamedata.url}/HabboAvatarActions.json", 14 | "avatar.figuredata.url": "${gamedata.url}/FigureData.json", 15 | "avatar.figuremap.url": "${gamedata.url}/FigureMap.json", 16 | "avatar.effectmap.url": "${gamedata.url}/EffectMap.json", 17 | "avatar.asset.url": "${asset.url}/bundled/figure/%libname%.nitro", 18 | "avatar.asset.effect.url": "${asset.url}/bundled/effect/%libname%.nitro", 19 | "furni.asset.url": "${asset.url}/bundled/furniture/%libname%.nitro", 20 | "furni.asset.icon.url": "${hof.furni.url}/icons/%libname%%param%_icon.png", 21 | "pet.asset.url": "${asset.url}/bundled/pet/%libname%.nitro", 22 | "generic.asset.url": "${asset.url}/bundled/generic/%libname%.nitro", 23 | "badge.asset.url": "${image.library.url}album1584/%badgename%.gif", 24 | "furni.rotation.bounce.steps": 20, 25 | "furni.rotation.bounce.height": 0.0625, 26 | "enable.avatar.arrow": false, 27 | "system.log.debug": false, 28 | "system.log.warn": false, 29 | "system.log.error": false, 30 | "system.log.events": false, 31 | "system.log.packets": false, 32 | "system.fps.animation": 24, 33 | "system.fps.max": 60, 34 | "system.pong.manually": true, 35 | "system.pong.interval.ms": 20000, 36 | "room.color.skip.transition": true, 37 | "room.landscapes.enabled": true, 38 | "avatar.mandatory.libraries": [ 39 | "bd:1", 40 | "li:0" 41 | ], 42 | "avatar.mandatory.effect.libraries": [ 43 | "dance.1", 44 | "dance.2", 45 | "dance.3", 46 | "dance.4" 47 | ], 48 | "avatar.default.figuredata": {"palettes":[{"id":1,"colors":[{"id":99999,"index":1001,"club":0,"selectable":false,"hexCode":"DDDDDD"},{"id":99998,"index":1001,"club":0,"selectable":false,"hexCode":"FAFAFA"}]},{"id":3,"colors":[{"id":10001,"index":1001,"club":0,"selectable":false,"hexCode":"EEEEEE"},{"id":10002,"index":1002,"club":0,"selectable":false,"hexCode":"FA3831"},{"id":10003,"index":1003,"club":0,"selectable":false,"hexCode":"FD92A0"},{"id":10004,"index":1004,"club":0,"selectable":false,"hexCode":"2AC7D2"},{"id":10005,"index":1005,"club":0,"selectable":false,"hexCode":"35332C"},{"id":10006,"index":1006,"club":0,"selectable":false,"hexCode":"EFFF92"},{"id":10007,"index":1007,"club":0,"selectable":false,"hexCode":"C6FF98"},{"id":10008,"index":1008,"club":0,"selectable":false,"hexCode":"FF925A"},{"id":10009,"index":1009,"club":0,"selectable":false,"hexCode":"9D597E"},{"id":10010,"index":1010,"club":0,"selectable":false,"hexCode":"B6F3FF"},{"id":10011,"index":1011,"club":0,"selectable":false,"hexCode":"6DFF33"},{"id":10012,"index":1012,"club":0,"selectable":false,"hexCode":"3378C9"},{"id":10013,"index":1013,"club":0,"selectable":false,"hexCode":"FFB631"},{"id":10014,"index":1014,"club":0,"selectable":false,"hexCode":"DFA1E9"},{"id":10015,"index":1015,"club":0,"selectable":false,"hexCode":"F9FB32"},{"id":10016,"index":1016,"club":0,"selectable":false,"hexCode":"CAAF8F"},{"id":10017,"index":1017,"club":0,"selectable":false,"hexCode":"C5C6C5"},{"id":10018,"index":1018,"club":0,"selectable":false,"hexCode":"47623D"},{"id":10019,"index":1019,"club":0,"selectable":false,"hexCode":"8A8361"},{"id":10020,"index":1020,"club":0,"selectable":false,"hexCode":"FF8C33"},{"id":10021,"index":1021,"club":0,"selectable":false,"hexCode":"54C627"},{"id":10022,"index":1022,"club":0,"selectable":false,"hexCode":"1E6C99"},{"id":10023,"index":1023,"club":0,"selectable":false,"hexCode":"984F88"},{"id":10024,"index":1024,"club":0,"selectable":false,"hexCode":"77C8FF"},{"id":10025,"index":1025,"club":0,"selectable":false,"hexCode":"FFC08E"},{"id":10026,"index":1026,"club":0,"selectable":false,"hexCode":"3C4B87"},{"id":10027,"index":1027,"club":0,"selectable":false,"hexCode":"7C2C47"},{"id":10028,"index":1028,"club":0,"selectable":false,"hexCode":"D7FFE3"},{"id":10029,"index":1029,"club":0,"selectable":false,"hexCode":"8F3F1C"},{"id":10030,"index":1030,"club":0,"selectable":false,"hexCode":"FF6393"},{"id":10031,"index":1031,"club":0,"selectable":false,"hexCode":"1F9B79"},{"id":10032,"index":1032,"club":0,"selectable":false,"hexCode":"FDFF33"}]}],"setTypes":[{"type":"hd","paletteId":1,"mandatory_f_0":true,"mandatory_f_1":true,"mandatory_m_0":true,"mandatory_m_1":true,"sets":[{"id":99999,"gender":"U","club":0,"colorable":true,"selectable":false,"preselectable":false,"sellable":false,"parts":[{"id":1,"type":"bd","colorable":true,"index":0,"colorindex":1},{"id":1,"type":"hd","colorable":true,"index":0,"colorindex":1},{"id":1,"type":"lh","colorable":true,"index":0,"colorindex":1},{"id":1,"type":"rh","colorable":true,"index":0,"colorindex":1}]}]},{"type":"bds","paletteId":1,"mandatory_f_0":false,"mandatory_f_1":false,"mandatory_m_0":false,"mandatory_m_1":false,"sets":[{"id":10001,"gender":"U","club":0,"colorable":true,"selectable":false,"preselectable":false,"sellable":false,"parts":[{"id":10001,"type":"bds","colorable":true,"index":0,"colorindex":1},{"id":10001,"type":"lhs","colorable":true,"index":0,"colorindex":1},{"id":10001,"type":"rhs","colorable":true,"index":0,"colorindex":1}],"hiddenLayers":[{"partType":"bd"},{"partType":"rh"},{"partType":"lh"}]}]},{"type":"ss","paletteId":3,"mandatory_f_0":false,"mandatory_f_1":false,"mandatory_m_0":false,"mandatory_m_1":false,"sets":[{"id":10010,"gender":"F","club":0,"colorable":true,"selectable":false,"preselectable":false,"sellable":false,"parts":[{"id":10001,"type":"ss","colorable":true,"index":0,"colorindex":1}],"hiddenLayers":[{"partType":"ch"},{"partType":"lg"},{"partType":"ca"},{"partType":"wa"},{"partType":"sh"},{"partType":"ls"},{"partType":"rs"},{"partType":"lc"},{"partType":"rc"},{"partType":"cc"},{"partType":"cp"}]},{"id":10011,"gender":"M","club":0,"colorable":true,"selectable":false,"preselectable":false,"sellable":false,"parts":[{"id":10002,"type":"ss","colorable":true,"index":0,"colorindex":1}],"hiddenLayers":[{"partType":"ch"},{"partType":"lg"},{"partType":"ca"},{"partType":"wa"},{"partType":"sh"},{"partType":"ls"},{"partType":"rs"},{"partType":"lc"},{"partType":"rc"},{"partType":"cc"},{"partType":"cp"}]}]}]}, 49 | "avatar.default.actions": { 50 | "actions": [ 51 | { 52 | "id": "Default", 53 | "state": "std", 54 | "precedence": 1000, 55 | "main": true, 56 | "isDefault": true, 57 | "geometryType": "vertical", 58 | "activePartSet": "figure", 59 | "assetPartDefinition": "std" 60 | } 61 | ] 62 | }, 63 | "pet.types": [ 64 | "dog", 65 | "cat", 66 | "croco", 67 | "terrier", 68 | "bear", 69 | "pig", 70 | "lion", 71 | "rhino", 72 | "spider", 73 | "turtle", 74 | "chicken", 75 | "frog", 76 | "dragon", 77 | "monster", 78 | "monkey", 79 | "horse", 80 | "monsterplant", 81 | "bunnyeaster", 82 | "bunnyevil", 83 | "bunnydepressed", 84 | "bunnylove", 85 | "pigeongood", 86 | "pigeonevil", 87 | "demonmonkey", 88 | "bearbaby", 89 | "terrierbaby", 90 | "gnome", 91 | "gnome", 92 | "kittenbaby", 93 | "puppybaby", 94 | "pigletbaby", 95 | "haloompa", 96 | "fools", 97 | "pterosaur", 98 | "velociraptor", 99 | "cow", 100 | "LeetPen", 101 | "bbwibb", 102 | "elephants" 103 | ], 104 | "preload.assets.urls": [ 105 | "${asset.url}/bundled/generic/avatar_additions.nitro", 106 | "${asset.url}/bundled/generic/group_badge.nitro", 107 | "${asset.url}/bundled/generic/floor_editor.nitro", 108 | "${images.url}/loading_icon.png", 109 | "${images.url}/clear_icon.png", 110 | "${images.url}/big_arrow.png" 111 | ] 112 | } -------------------------------------------------------------------------------- /nitro/configuration/nitro-react/public/ui-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "image.library.notifications.url": "${image.library.url}notifications/%image%.png", 3 | "achievements.images.url": "${image.library.url}Quests/%image%.png", 4 | "camera.url": "https://camera.url", 5 | "thumbnails.url": "https://camera.url/thumbnail/%thumbnail%.png", 6 | "url.prefix": "https://website.com", 7 | "habbopages.url": "${url.prefix}/", 8 | "group.homepage.url": "${url.prefix}/groups/%groupid%/id", 9 | "guide.help.alpha.groupid": 0, 10 | "chat.viewer.height.percentage": 0.40, 11 | "widget.dimmer.colorwheel": false, 12 | "avatar.wardrobe.max.slots": 10, 13 | "user.badges.max.slots": 5, 14 | "user.tags.enabled": false, 15 | "camera.publish.disabled": false, 16 | "hc.disabled": false, 17 | "badge.descriptions.enabled": true, 18 | "motto.max.length": 38, 19 | "bot.name.max.length": 15, 20 | "pet.package.name.max.length": 15, 21 | "wired.action.bot.talk.to.avatar.max.length": 64, 22 | "wired.action.bot.talk.max.length": 64, 23 | "wired.action.chat.max.length": 100, 24 | "wired.action.kick.from.room.max.length": 100, 25 | "wired.action.mute.user.max.length": 100, 26 | "game.center.enabled": false, 27 | "guides.enabled": true, 28 | "toolbar.hide.quests": true, 29 | "navigator.room.models": [ 30 | { "clubLevel": 0, "tileSize": 104, "name": "a" }, 31 | { "clubLevel": 0, "tileSize": 94, "name": "b" }, 32 | { "clubLevel": 0, "tileSize": 36, "name": "c" }, 33 | { "clubLevel": 0, "tileSize": 84, "name": "d" }, 34 | { "clubLevel": 0, "tileSize": 80, "name": "e" }, 35 | { "clubLevel": 0, "tileSize": 80, "name": "f" }, 36 | { "clubLevel": 0, "tileSize": 416, "name": "i" }, 37 | { "clubLevel": 0, "tileSize": 320, "name": "j" }, 38 | { "clubLevel": 0, "tileSize": 448, "name": "k" }, 39 | { "clubLevel": 0, "tileSize": 352, "name": "l" }, 40 | { "clubLevel": 0, "tileSize": 384, "name": "m" }, 41 | { "clubLevel": 0, "tileSize": 372, "name": "n" }, 42 | { "clubLevel": 1, "tileSize": 80, "name": "g" }, 43 | { "clubLevel": 1, "tileSize": 74, "name": "h" }, 44 | { "clubLevel": 1, "tileSize": 416, "name": "o" }, 45 | { "clubLevel": 1, "tileSize": 352, "name": "p" }, 46 | { "clubLevel": 1, "tileSize": 304, "name": "q" }, 47 | { "clubLevel": 1, "tileSize": 336, "name": "r" }, 48 | { "clubLevel": 1, "tileSize": 748, "name": "u" }, 49 | { "clubLevel": 1, "tileSize": 438, "name": "v" }, 50 | { "clubLevel": 2, "tileSize": 540, "name": "t" }, 51 | { "clubLevel": 2, "tileSize": 512, "name": "w" }, 52 | { "clubLevel": 2, "tileSize": 396, "name": "x" }, 53 | { "clubLevel": 2, "tileSize": 440, "name": "y" }, 54 | { "clubLevel": 2, "tileSize": 456, "name": "z" }, 55 | { "clubLevel": 2, "tileSize": 208, "name": "0" }, 56 | { "clubLevel": 2, "tileSize": 1009, "name": "1" }, 57 | { "clubLevel": 2, "tileSize": 1044, "name": "2" }, 58 | { "clubLevel": 2, "tileSize": 183, "name": "3" }, 59 | { "clubLevel": 2, "tileSize": 254, "name": "4" }, 60 | { "clubLevel": 2, "tileSize": 1024, "name": "5" }, 61 | { "clubLevel": 2, "tileSize": 801, "name": "6" }, 62 | { "clubLevel": 2, "tileSize": 354, "name": "7" }, 63 | { "clubLevel": 2, "tileSize": 888, "name": "8" }, 64 | { "clubLevel": 2, "tileSize": 926, "name": "9" } 65 | ], 66 | "hotelview": { 67 | "show.avatar": true, 68 | "widgets": { 69 | "slot.1.widget": "promoarticle", 70 | "slot.1.conf": {}, 71 | "slot.2.widget": "widgetcontainer", 72 | "slot.2.conf": { 73 | "image": "${image.library.url}web_promo_small/spromo_Canal_Bundle.png", 74 | "texts": "2021NitroPromo", 75 | "btnLink": "https://google.com" 76 | }, 77 | "slot.3.widget": "promoarticle", 78 | "slot.3.conf": {}, 79 | "slot.4.widget": "", 80 | "slot.4.conf": {}, 81 | "slot.5.widget": "", 82 | "slot.5.conf": {}, 83 | "slot.6.widget": "achievementcompetition_hall_of_fame", 84 | "slot.6.conf": { 85 | "campaign": "habboFameComp" 86 | }, 87 | "slot.7.widget": "", 88 | "slot.7.conf": {} 89 | }, 90 | "images": { 91 | "background": "${asset.url}/images/reception/stretch_blue.png", 92 | "background.colour": "#6eadc8", 93 | "sun": "${asset.url}/images/reception/sun.png", 94 | "drape": "${asset.url}/images/reception/drape.png", 95 | "left": "${asset.url}/images/reception/ts.png", 96 | "right": "${asset.url}/images/reception/US_right.png", 97 | "right.repeat": "${asset.url}/images/reception/US_top_right.png" 98 | } 99 | }, 100 | "achievements.unseen.ignored": [ 101 | "ACH_AllTimeHotelPresence" 102 | ], 103 | "avatareditor.show.clubitems.dimmed": true, 104 | "avatareditor.show.clubitems.first": true, 105 | "chat.history.max.items": 100, 106 | "system.currency.types": [ 107 | -1, 108 | 0, 109 | 5 110 | ], 111 | "catalog.links": { 112 | "hc.buy_hc": "habbo_club", 113 | "hc.hc_gifts": "club_gifts", 114 | "pets.buy_food": "pet_food", 115 | "pets.buy_saddle": "saddles" 116 | }, 117 | "hc.center": { 118 | "benefits.info": true, 119 | "payday.info": true, 120 | "gift.info": true, 121 | "benefits.habbopage": "habboclub", 122 | "payday.habbopage": "hcpayday" 123 | }, 124 | "respect.options": { 125 | "enabled": false, 126 | "sound": "sound_respect_received" 127 | }, 128 | "currency.display.number.short": false, 129 | "currency.asset.icon.url": "${images.url}/wallet/%type%.png", 130 | "catalog.asset.url": "${image.library.url}catalogue", 131 | "catalog.asset.image.url": "${catalog.asset.url}/%name%.gif", 132 | "catalog.asset.icon.url": "${catalog.asset.url}/icon_%name%.png", 133 | "catalog.tab.icons": false, 134 | "catalog.headers": false, 135 | "chat.input.maxlength": 100, 136 | "chat.styles.disabled": [], 137 | "chat.styles": [ 138 | { 139 | "styleId": 0, 140 | "minRank": 0, 141 | "isSystemStyle": false, 142 | "isHcOnly": false, 143 | "isAmbassadorOnly": false 144 | }, 145 | { 146 | "styleId": 1, 147 | "minRank": 5, 148 | "isSystemStyle": true, 149 | "isHcOnly": false, 150 | "isAmbassadorOnly": false 151 | }, 152 | { 153 | "styleId": 2, 154 | "minRank": 5, 155 | "isSystemStyle": true, 156 | "isHcOnly": false, 157 | "isAmbassadorOnly": false 158 | }, 159 | { 160 | "styleId": 3, 161 | "minRank": 0, 162 | "isSystemStyle": false, 163 | "isHcOnly": false, 164 | "isAmbassadorOnly": false 165 | }, 166 | { 167 | "styleId": 4, 168 | "minRank": 0, 169 | "isSystemStyle": false, 170 | "isHcOnly": false, 171 | "isAmbassadorOnly": false 172 | }, 173 | { 174 | "styleId": 5, 175 | "minRank": 0, 176 | "isSystemStyle": false, 177 | "isHcOnly": false, 178 | "isAmbassadorOnly": false 179 | }, 180 | { 181 | "styleId": 6, 182 | "minRank": 0, 183 | "isSystemStyle": false, 184 | "isHcOnly": false, 185 | "isAmbassadorOnly": false 186 | }, 187 | { 188 | "styleId": 7, 189 | "minRank": 0, 190 | "isSystemStyle": false, 191 | "isHcOnly": false, 192 | "isAmbassadorOnly": false 193 | }, 194 | { 195 | "styleId": 8, 196 | "minRank": 5, 197 | "isSystemStyle": true, 198 | "isHcOnly": false, 199 | "isAmbassadorOnly": false 200 | }, 201 | { 202 | "styleId": 9, 203 | "minRank": 0, 204 | "isSystemStyle": false, 205 | "isHcOnly": true, 206 | "isAmbassadorOnly": false 207 | }, 208 | { 209 | "styleId": 10, 210 | "minRank": 0, 211 | "isSystemStyle": false, 212 | "isHcOnly": true, 213 | "isAmbassadorOnly": false 214 | }, 215 | { 216 | "styleId": 11, 217 | "minRank": 0, 218 | "isSystemStyle": false, 219 | "isHcOnly": true, 220 | "isAmbassadorOnly": false 221 | }, 222 | { 223 | "styleId": 12, 224 | "minRank": 0, 225 | "isSystemStyle": false, 226 | "isHcOnly": true, 227 | "isAmbassadorOnly": false 228 | }, 229 | { 230 | "styleId": 13, 231 | "minRank": 0, 232 | "isSystemStyle": false, 233 | "isHcOnly": true, 234 | "isAmbassadorOnly": false 235 | }, 236 | { 237 | "styleId": 14, 238 | "minRank": 0, 239 | "isSystemStyle": false, 240 | "isHcOnly": true, 241 | "isAmbassadorOnly": false 242 | }, 243 | { 244 | "styleId": 15, 245 | "minRank": 0, 246 | "isSystemStyle": false, 247 | "isHcOnly": true, 248 | "isAmbassadorOnly": false 249 | }, 250 | { 251 | "styleId": 16, 252 | "minRank": 0, 253 | "isSystemStyle": false, 254 | "isHcOnly": true, 255 | "isAmbassadorOnly": false 256 | }, 257 | { 258 | "styleId": 17, 259 | "minRank": 0, 260 | "isSystemStyle": false, 261 | "isHcOnly": true, 262 | "isAmbassadorOnly": false 263 | }, 264 | { 265 | "styleId": 18, 266 | "minRank": 0, 267 | "isSystemStyle": false, 268 | "isHcOnly": true, 269 | "isAmbassadorOnly": false 270 | }, 271 | { 272 | "styleId": 19, 273 | "minRank": 0, 274 | "isSystemStyle": false, 275 | "isHcOnly": true, 276 | "isAmbassadorOnly": false 277 | }, 278 | { 279 | "styleId": 20, 280 | "minRank": 0, 281 | "isSystemStyle": false, 282 | "isHcOnly": true, 283 | "isAmbassadorOnly": false 284 | }, 285 | { 286 | "styleId": 21, 287 | "minRank": 0, 288 | "isSystemStyle": false, 289 | "isHcOnly": true, 290 | "isAmbassadorOnly": false 291 | }, 292 | { 293 | "styleId": 22, 294 | "minRank": 0, 295 | "isSystemStyle": false, 296 | "isHcOnly": true, 297 | "isAmbassadorOnly": false 298 | }, 299 | { 300 | "styleId": 23, 301 | "minRank": 5, 302 | "isSystemStyle": false, 303 | "isHcOnly": false, 304 | "isAmbassadorOnly": false 305 | }, 306 | { 307 | "styleId": 24, 308 | "minRank": 0, 309 | "isSystemStyle": false, 310 | "isHcOnly": true, 311 | "isAmbassadorOnly": false 312 | }, 313 | { 314 | "styleId": 25, 315 | "minRank": 0, 316 | "isSystemStyle": false, 317 | "isHcOnly": true, 318 | "isAmbassadorOnly": false 319 | }, 320 | { 321 | "styleId": 26, 322 | "minRank": 0, 323 | "isSystemStyle": false, 324 | "isHcOnly": true, 325 | "isAmbassadorOnly": false 326 | }, 327 | { 328 | "styleId": 27, 329 | "minRank": 0, 330 | "isSystemStyle": false, 331 | "isHcOnly": true, 332 | "isAmbassadorOnly": false 333 | }, 334 | { 335 | "styleId": 28, 336 | "minRank": 0, 337 | "isSystemStyle": false, 338 | "isHcOnly": true, 339 | "isAmbassadorOnly": false 340 | }, 341 | { 342 | "styleId": 29, 343 | "minRank": 0, 344 | "isSystemStyle": false, 345 | "isHcOnly": true, 346 | "isAmbassadorOnly": false 347 | }, 348 | { 349 | "styleId": 30, 350 | "minRank": 5, 351 | "isSystemStyle": true, 352 | "isHcOnly": false, 353 | "isAmbassadorOnly": false 354 | }, 355 | { 356 | "styleId": 31, 357 | "minRank": 5, 358 | "isSystemStyle": true, 359 | "isHcOnly": false, 360 | "isAmbassadorOnly": false 361 | }, 362 | { 363 | "styleId": 32, 364 | "minRank": 0, 365 | "isSystemStyle": false, 366 | "isHcOnly": true, 367 | "isAmbassadorOnly": false 368 | }, 369 | { 370 | "styleId": 33, 371 | "minRank": 5, 372 | "isSystemStyle": true, 373 | "isHcOnly": false, 374 | "isAmbassadorOnly": false 375 | }, 376 | { 377 | "styleId": 34, 378 | "minRank": 5, 379 | "isSystemStyle": true, 380 | "isHcOnly": false, 381 | "isAmbassadorOnly": false 382 | }, 383 | { 384 | "styleId": 35, 385 | "minRank": 0, 386 | "isSystemStyle": false, 387 | "isHcOnly": true, 388 | "isAmbassadorOnly": false 389 | }, 390 | { 391 | "styleId": 36, 392 | "minRank": 0, 393 | "isSystemStyle": false, 394 | "isHcOnly": true, 395 | "isAmbassadorOnly": false 396 | }, 397 | { 398 | "styleId": 37, 399 | "minRank": 5, 400 | "isSystemStyle": false, 401 | "isHcOnly": false, 402 | "isAmbassadorOnly": true 403 | }, 404 | { 405 | "styleId": 38, 406 | "minRank": 0, 407 | "isSystemStyle": false, 408 | "isHcOnly": true, 409 | "isAmbassadorOnly": false 410 | } 411 | ], 412 | "camera.available.effects": [ 413 | { 414 | "name": "dark_sepia", 415 | "colorMatrix": [ 416 | 0.4, 417 | 0.4, 418 | 0.1, 419 | 0, 420 | 110, 421 | 0.3, 422 | 0.4, 423 | 0.1, 424 | 0, 425 | 30, 426 | 0.3, 427 | 0.2, 428 | 0.1, 429 | 0, 430 | 0, 431 | 0, 432 | 0, 433 | 0, 434 | 1, 435 | 0 436 | ], 437 | "minLevel": 0, 438 | "enabled": true 439 | }, 440 | { 441 | "name": "increase_saturation", 442 | "colorMatrix": [ 443 | 2, 444 | -0.5, 445 | -0.5, 446 | 0, 447 | 0, 448 | -0.5, 449 | 2, 450 | -0.5, 451 | 0, 452 | 0, 453 | -0.5, 454 | -0.5, 455 | 2, 456 | 0, 457 | 0, 458 | 0, 459 | 0, 460 | 0, 461 | 1, 462 | 0 463 | ], 464 | "minLevel": 0, 465 | "enabled": true 466 | }, 467 | { 468 | "name": "increase_contrast", 469 | "colorMatrix": [ 470 | 1.5, 471 | 0, 472 | 0, 473 | 0, 474 | -50, 475 | 0, 476 | 1.5, 477 | 0, 478 | 0, 479 | -50, 480 | 0, 481 | 0, 482 | 1.5, 483 | 0, 484 | -50, 485 | 0, 486 | 0, 487 | 0, 488 | 1.5, 489 | 0 490 | ], 491 | "minLevel": 0, 492 | "enabled": true 493 | }, 494 | { 495 | "name": "shadow_multiply_02", 496 | "colorMatrix": [], 497 | "minLevel": 0, 498 | "blendMode": 2, 499 | "enabled": true 500 | }, 501 | { 502 | "name": "color_1", 503 | "colorMatrix": [ 504 | 0.393, 505 | 0.769, 506 | 0.189, 507 | 0, 508 | 0, 509 | 0.349, 510 | 0.686, 511 | 0.168, 512 | 0, 513 | 0, 514 | 0.272, 515 | 0.534, 516 | 0.131, 517 | 0, 518 | 0, 519 | 0, 520 | 0, 521 | 0, 522 | 1, 523 | 0 524 | ], 525 | "minLevel": 1, 526 | "enabled": true 527 | }, 528 | { 529 | "name": "hue_bright_sat", 530 | "colorMatrix": [ 531 | 1, 532 | 0.6, 533 | 0.2, 534 | 0, 535 | -50, 536 | 0.2, 537 | 1, 538 | 0.6, 539 | 0, 540 | -50, 541 | 0.6, 542 | 0.2, 543 | 1, 544 | 0, 545 | -50, 546 | 0, 547 | 0, 548 | 0, 549 | 1, 550 | 0 551 | ], 552 | "minLevel": 1, 553 | "enabled": true 554 | }, 555 | { 556 | "name": "hearts_hardlight_02", 557 | "colorMatrix": [], 558 | "minLevel": 1, 559 | "blendMode": 9, 560 | "enabled": true 561 | }, 562 | { 563 | "name": "texture_overlay", 564 | "colorMatrix": [], 565 | "minLevel": 1, 566 | "blendMode": 4, 567 | "enabled": true 568 | }, 569 | { 570 | "name": "pinky_nrm", 571 | "colorMatrix": [], 572 | "minLevel": 1, 573 | "blendMode": 0, 574 | "enabled": true 575 | }, 576 | { 577 | "name": "color_2", 578 | "colorMatrix": [ 579 | 0.333, 580 | 0.333, 581 | 0.333, 582 | 0, 583 | 0, 584 | 0.333, 585 | 0.333, 586 | 0.333, 587 | 0, 588 | 0, 589 | 0.333, 590 | 0.333, 591 | 0.333, 592 | 0, 593 | 0, 594 | 0, 595 | 0, 596 | 0, 597 | 1, 598 | 0 599 | ], 600 | "minLevel": 2, 601 | "enabled": true 602 | }, 603 | { 604 | "name": "night_vision", 605 | "colorMatrix": [ 606 | 0, 607 | 0, 608 | 0, 609 | 0, 610 | 0, 611 | 0, 612 | 1.1, 613 | 0, 614 | 0, 615 | -50, 616 | 0, 617 | 0, 618 | 0, 619 | 0, 620 | 0, 621 | 0, 622 | 0, 623 | 0, 624 | 1, 625 | 0 626 | ], 627 | "minLevel": 2, 628 | "enabled": true 629 | }, 630 | { 631 | "name": "stars_hardlight_02", 632 | "colorMatrix": [], 633 | "minLevel": 2, 634 | "blendMode": 9, 635 | "enabled": true 636 | }, 637 | { 638 | "name": "coffee_mpl", 639 | "colorMatrix": [], 640 | "minLevel": 2, 641 | "blendMode": 2, 642 | "enabled": true 643 | }, 644 | { 645 | "name": "security_hardlight", 646 | "colorMatrix": [], 647 | "minLevel": 3, 648 | "blendMode": 9, 649 | "enabled": true 650 | }, 651 | { 652 | "name": "bluemood_mpl", 653 | "colorMatrix": [], 654 | "minLevel": 3, 655 | "blendMode": 2, 656 | "enabled": true 657 | }, 658 | { 659 | "name": "rusty_mpl", 660 | "colorMatrix": [], 661 | "minLevel": 3, 662 | "blendMode": 2, 663 | "enabled": true 664 | }, 665 | { 666 | "name": "decr_conrast", 667 | "colorMatrix": [ 668 | 0.5, 669 | 0, 670 | 0, 671 | 0, 672 | 50, 673 | 0, 674 | 0.5, 675 | 0, 676 | 0, 677 | 50, 678 | 0, 679 | 0, 680 | 0.5, 681 | 0, 682 | 50, 683 | 0, 684 | 0, 685 | 0, 686 | 1, 687 | 0 688 | ], 689 | "minLevel": 4, 690 | "enabled": true 691 | }, 692 | { 693 | "name": "green_2", 694 | "colorMatrix": [ 695 | 0.5, 696 | 0.5, 697 | 0.5, 698 | 0, 699 | 0, 700 | 0.5, 701 | 0.5, 702 | 0.5, 703 | 0, 704 | 90, 705 | 0.5, 706 | 0.5, 707 | 0.5, 708 | 0, 709 | 0, 710 | 0, 711 | 0, 712 | 0, 713 | 1, 714 | 0 715 | ], 716 | "minLevel": 4, 717 | "enabled": true 718 | }, 719 | { 720 | "name": "alien_hrd", 721 | "colorMatrix": [], 722 | "minLevel": 4, 723 | "blendMode": 9, 724 | "enabled": true 725 | }, 726 | { 727 | "name": "color_3", 728 | "colorMatrix": [ 729 | 0.609, 730 | 0.609, 731 | 0.082, 732 | 0, 733 | 0, 734 | 0.309, 735 | 0.609, 736 | 0.082, 737 | 0, 738 | 0, 739 | 0.309, 740 | 0.609, 741 | 0.082, 742 | 0, 743 | 0, 744 | 0, 745 | 0, 746 | 0, 747 | 1, 748 | 0 749 | ], 750 | "minLevel": 5, 751 | "enabled": true 752 | }, 753 | { 754 | "name": "color_4", 755 | "colorMatrix": [ 756 | 0.8, 757 | -0.8, 758 | 1, 759 | 0, 760 | 70, 761 | 0.8, 762 | -0.8, 763 | 1, 764 | 0, 765 | 70, 766 | 0.8, 767 | -0.8, 768 | 1, 769 | 0, 770 | 70, 771 | 0, 772 | 0, 773 | 0, 774 | 1, 775 | 0 776 | ], 777 | "minLevel": 5, 778 | "enabled": true 779 | }, 780 | { 781 | "name": "toxic_hrd", 782 | "colorMatrix": [], 783 | "minLevel": 5, 784 | "blendMode": 9, 785 | "enabled": true 786 | }, 787 | { 788 | "name": "hypersaturated", 789 | "colorMatrix": [ 790 | 2, 791 | -1, 792 | 0, 793 | 0, 794 | 0, 795 | -1, 796 | 2, 797 | 0, 798 | 0, 799 | 0, 800 | 0, 801 | -1, 802 | 2, 803 | 0, 804 | 0, 805 | 0, 806 | 0, 807 | 0, 808 | 1, 809 | 0 810 | ], 811 | "minLevel": 6, 812 | "enabled": true 813 | }, 814 | { 815 | "name": "Yellow", 816 | "colorMatrix": [ 817 | 1, 818 | 0, 819 | 0, 820 | 0, 821 | 0, 822 | 0, 823 | 1, 824 | 0, 825 | 0, 826 | 0, 827 | 0, 828 | 0, 829 | 0, 830 | 0, 831 | 0, 832 | 0, 833 | 0, 834 | 0, 835 | 1, 836 | 0 837 | ], 838 | "minLevel": 6, 839 | "enabled": true 840 | }, 841 | { 842 | "name": "misty_hrd", 843 | "colorMatrix": [], 844 | "minLevel": 6, 845 | "blendMode": 9, 846 | "enabled": true 847 | }, 848 | { 849 | "name": "x_ray", 850 | "colorMatrix": [ 851 | 0, 852 | 1.2, 853 | 0, 854 | 0, 855 | -100, 856 | 0, 857 | 2, 858 | 0, 859 | 0, 860 | -120, 861 | 0, 862 | 2, 863 | 0, 864 | 0, 865 | -120, 866 | 0, 867 | 0, 868 | 0, 869 | 1, 870 | 0 871 | ], 872 | "minLevel": 7, 873 | "enabled": true 874 | }, 875 | { 876 | "name": "decrease_saturation", 877 | "colorMatrix": [ 878 | 0.7, 879 | 0.2, 880 | 0.2, 881 | 0, 882 | 0, 883 | 0.2, 884 | 0.7, 885 | 0.2, 886 | 0, 887 | 0, 888 | 0.2, 889 | 0.2, 890 | 0.7, 891 | 0, 892 | 0, 893 | 0, 894 | 0, 895 | 0, 896 | 1, 897 | 0 898 | ], 899 | "minLevel": 7, 900 | "enabled": true 901 | }, 902 | { 903 | "name": "drops_mpl", 904 | "colorMatrix": [], 905 | "minLevel": 8, 906 | "blendMode": 2, 907 | "enabled": true 908 | }, 909 | { 910 | "name": "shiny_hrd", 911 | "colorMatrix": [], 912 | "minLevel": 9, 913 | "blendMode": 9, 914 | "enabled": true 915 | }, 916 | { 917 | "name": "glitter_hrd", 918 | "colorMatrix": [], 919 | "minLevel": 10, 920 | "blendMode": 9, 921 | "enabled": true 922 | }, 923 | { 924 | "name": "frame_gold", 925 | "colorMatrix": [], 926 | "minLevel": 10, 927 | "blendMode": 0, 928 | "enabled": true 929 | }, 930 | { 931 | "name": "frame_gray_4", 932 | "colorMatrix": [], 933 | "minLevel": 10, 934 | "blendMode": 0, 935 | "enabled": true 936 | }, 937 | { 938 | "name": "frame_black_2", 939 | "colorMatrix": [], 940 | "minLevel": 10, 941 | "blendMode": 0, 942 | "enabled": true 943 | }, 944 | { 945 | "name": "frame_wood_2", 946 | "colorMatrix": [], 947 | "minLevel": 10, 948 | "blendMode": 0, 949 | "enabled": true 950 | }, 951 | { 952 | "name": "finger_nrm", 953 | "colorMatrix": [], 954 | "minLevel": 10, 955 | "blendMode": 0, 956 | "enabled": true 957 | }, 958 | { 959 | "name": "color_5", 960 | "colorMatrix": [ 961 | 3.309, 962 | 0.609, 963 | 1.082, 964 | 0.2, 965 | 0, 966 | 0.309, 967 | 0.609, 968 | 0.082, 969 | 0, 970 | 0, 971 | 1.309, 972 | 0.609, 973 | 0.082, 974 | 0, 975 | 0, 976 | 0, 977 | 0, 978 | 0, 979 | 1, 980 | 0 981 | ], 982 | "minLevel": 10, 983 | "enabled": true 984 | }, 985 | { 986 | "name": "black_white_negative", 987 | "colorMatrix": [ 988 | -0.5, 989 | -0.5, 990 | -0.5, 991 | 0, 992 | 0, 993 | -0.5, 994 | -0.5, 995 | -0.5, 996 | 0, 997 | 0, 998 | -0.5, 999 | -0.5, 1000 | -0.5, 1001 | 0, 1002 | 0, 1003 | 0, 1004 | 0, 1005 | 0, 1006 | 1, 1007 | 0 1008 | ], 1009 | "minLevel": 10, 1010 | "enabled": true 1011 | }, 1012 | { 1013 | "name": "blue", 1014 | "colorMatrix": [ 1015 | 0.5, 1016 | 0.5, 1017 | 0.5, 1018 | 0, 1019 | -255, 1020 | 0.5, 1021 | 0.5, 1022 | 0.5, 1023 | 0, 1024 | -170, 1025 | 0.5, 1026 | 0.5, 1027 | 0.5, 1028 | 0, 1029 | 0, 1030 | 0, 1031 | 0, 1032 | 0, 1033 | 1, 1034 | 0 1035 | ], 1036 | "minLevel": 10, 1037 | "enabled": true 1038 | }, 1039 | { 1040 | "name": "red", 1041 | "colorMatrix": [ 1042 | 0.5, 1043 | 0.5, 1044 | 0.5, 1045 | 0, 1046 | 0, 1047 | 0.5, 1048 | 0.5, 1049 | 0.5, 1050 | 0, 1051 | -170, 1052 | 0.5, 1053 | 0.5, 1054 | 0.5, 1055 | 0, 1056 | -170, 1057 | 0, 1058 | 0, 1059 | 0, 1060 | 1, 1061 | 0 1062 | ], 1063 | "minLevel": 10, 1064 | "enabled": true 1065 | }, 1066 | { 1067 | "name": "green", 1068 | "colorMatrix": [ 1069 | 0.5, 1070 | 0.5, 1071 | 0.5, 1072 | 0, 1073 | -170, 1074 | 0.5, 1075 | 0.5, 1076 | 0.5, 1077 | 0, 1078 | 0, 1079 | 0.5, 1080 | 0.5, 1081 | 0.5, 1082 | 0, 1083 | -170, 1084 | 0, 1085 | 0, 1086 | 0, 1087 | 1, 1088 | 0 1089 | ], 1090 | "minLevel": 10, 1091 | "enabled": true 1092 | } 1093 | ], 1094 | "notification": { 1095 | "notification.admin.transient": { 1096 | "display": "POP_UP", 1097 | "image": "${image.library.url}/album1358/frank_wave_001.gif" 1098 | }, 1099 | "notification.builders_club.membership_expired": { 1100 | "display": "POP_UP" 1101 | }, 1102 | "notification.builders_club.membership_expires": { 1103 | "display": "POP_UP", 1104 | "image": "${image.library.url}/notifications/builders_club_room_locked_small.png" 1105 | }, 1106 | "notification.builders_club.membership_extended": { 1107 | "delivery": "PERSISTENT", 1108 | "display": "POP_UP" 1109 | }, 1110 | "notification.builders_club.membership_made": { 1111 | "delivery": "PERSISTENT", 1112 | "display": "POP_UP", 1113 | "image": "${image.library.url}/notifications/builders_club_membership_extended.png" 1114 | }, 1115 | "notification.builders_club.membership_renewed": { 1116 | "delivery": "PERSISTENT", 1117 | "display": "POP_UP", 1118 | "image": "${image.library.url}/notifications/builders_club_membership_extended.png" 1119 | }, 1120 | "notification.builders_club.room_locked": { 1121 | "display": "BUBBLE", 1122 | "image": "${image.library.url}/notifications/builders_club_room_locked_small.png" 1123 | }, 1124 | "notification.builders_club.room_unlocked": { 1125 | "display": "BUBBLE" 1126 | }, 1127 | "notification.builders_club.visit_denied_for_owner": { 1128 | "display": "BUBBLE", 1129 | "image": "${image.library.url}/notifications/builders_club_room_locked_small.png" 1130 | }, 1131 | "notification.builders_club.visit_denied_for_visitor": { 1132 | "display": "POP_UP", 1133 | "image": "${image.library.url}/notifications/builders_club_room_locked.png" 1134 | }, 1135 | "notification.campaign.credit.donation": { 1136 | "display": "BUBBLE" 1137 | }, 1138 | "notification.campaign.product.donation": { 1139 | "display": "BUBBLE" 1140 | }, 1141 | "notification.casino.too_many_dice.placement": { 1142 | "display": "POP_UP" 1143 | }, 1144 | "notification.casino.too_many_dice": { 1145 | "display": "POP_UP" 1146 | }, 1147 | "notification.cfh.created": { 1148 | "display": "POP_UP", 1149 | "title": "" 1150 | }, 1151 | "notification.feed.enabled": false, 1152 | "notification.floorplan_editor.error": { 1153 | "display": "POP_UP" 1154 | }, 1155 | "notification.forums.delivered": { 1156 | "delivery": "PERSISTENT", 1157 | "display": "POP_UP" 1158 | }, 1159 | "notification.forums.forum_settings_updated": { 1160 | "display": "BUBBLE" 1161 | }, 1162 | "notification.forums.message.hidden": { 1163 | "display": "BUBBLE" 1164 | }, 1165 | "notification.forums.message.restored": { 1166 | "display": "BUBBLE" 1167 | }, 1168 | "notification.forums.thread.hidden": { 1169 | "display": "BUBBLE" 1170 | }, 1171 | "notification.forums.thread.locked": { 1172 | "display": "BUBBLE" 1173 | }, 1174 | "notification.forums.thread.pinned": { 1175 | "display": "BUBBLE" 1176 | }, 1177 | "notification.forums.thread.restored": { 1178 | "display": "BUBBLE" 1179 | }, 1180 | "notification.forums.thread.unlocked": { 1181 | "display": "BUBBLE" 1182 | }, 1183 | "notification.forums.thread.unpinned": { 1184 | "display": "BUBBLE" 1185 | }, 1186 | "notification.furni_placement_error": { 1187 | "display": "BUBBLE" 1188 | }, 1189 | "notification.gifting.valentine": { 1190 | "delivery": "PERSISTENT", 1191 | "display": "BUBBLE", 1192 | "image": "${image.library.url}/notifications/polaroid_photo.png" 1193 | }, 1194 | "notification.items.enabled": true, 1195 | "notification.mute.forbidden.time": { 1196 | "display": "BUBBLE" 1197 | }, 1198 | "notification.npc.gift.received": { 1199 | "display": "BUBBLE", 1200 | "image": "${image.library.url}/album1584/X1517.gif" 1201 | } 1202 | } 1203 | } 1204 | --------------------------------------------------------------------------------