12 Commits

Author SHA1 Message Date
Remco Epicnabbo deea1041f7 🆙 add new furnidata en catalog_items 🆙 2026-06-15 17:12:49 +02:00
Remco Epicnabbo c573a8f829 Add catalog_pages SQL for four locales
Add Navicat SQL dumps for catalog_pages in Brazilian, English, Spanish and Italian folders. Creates catalog_pages table (MyISAM, latin1) with schema, disables foreign key checks and sets utf8mb4, and inserts a large set of catalog page records (many INSERTs, auto_increment set). Intended to import full catalog page data for multiple locales.
2026-06-15 11:31:18 +02:00
Remco Epicnabbo 7dced3ec64 Remove localized catalog_pages SQL files
Delete bulk seed SQL files for catalog_pages in four locales. Removed: "sql version 2 ( new)/Brazilian_sqls/catalog_pages.pt.sql", ".../English_sqls/catalog_pages.en.sql", ".../Spain_sqls/catalog_pages.es.sql", and ".../italian_sqls/catalog__pages_it.sql" which contained large INSERT statements. These files were likely deprecated or consolidated elsewhere to avoid storing duplicated localized SQL dumps in the repo.
2026-06-15 10:55:39 +02:00
Remco Epicnabbo 50f54db15c Update readme.md 2026-06-14 21:29:47 +02:00
Remco Epicnabbo d88d10e7e5 Update ProductData.json 2026-06-14 21:23:20 +02:00
Remco Epicnabbo 721e70dd38 🆙 compressed furnidata to speed uploading 🆙 2026-06-14 21:06:32 +02:00
Remco Epicnabbo 28bdc8075f Add 'Frank' bot item and catalog entries
Insert bot_frank (items_base id 19001) into items_base SQL dumps and add a matching catalog_items record (id 2000029897) across locale folders (Brazilian, Dutch, English, Spain, Italian). Bumped catalog AUTO_INCREMENT to 2000029898 and updated file dump timestamps. The new catalog entry includes display name "Frank", motto, figure and gender in the extra_data.
2026-06-14 20:41:06 +02:00
Remco Epicnabbo fac213f96b 🆙 Fix Sit / Lay / Walk in the items_base 🆙 2026-06-14 20:31:36 +02:00
Remco Epicnabbo 948b1294ee 🆙 Add all new nitro v3 ui texts 🆙 2026-06-14 20:24:38 +02:00
Remco Epicnabbo 4b39ed7413 🆙 add nitro v3 render and support for custom pets 🆙 2026-06-14 20:21:15 +02:00
Remco Epicnabbo 2ce8bf397d 🆙 add spain pages 🆙 2026-06-14 20:12:20 +02:00
Remco Epicnabbo 90d1b081da 🆙 Released phase 1 stable enough to use it wil get more furni comming days and updates 🆙 2026-06-14 20:06:25 +02:00
22 changed files with 316626 additions and 63170 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
-37
View File
@@ -1,37 +0,0 @@
{
"friendlist.search": "Zoek vrienden",
"widget.chooser.checkall": "Selecteer meubels",
"widget.chooser.btn.pickall": "pak de geselecteerde items op!",
"gamecenter.players": "Spelers",
"gamecenter.players.2to6": "2 to 6 spelers",
"gamecenter.players.2to8": "2 to 8 spelers",
"gamecenter.players.4to12": "4 to 12 spelers",
"gamecenter.players.single": "Één speler",
"gamecenter.players.score": "Score:",
"gamecenter.players.theme": "Thema:",
"gamecenter.players.winner": "Winnaar!",
"gamecenter.battleball.description": "BattleBall is een kleurrijk spel waarin je meer oppervlakken moet kleuren dan je tegenstander. Items verschijnen willekeurig en geven je unieke krachten om je kansen te vergroten. Tactiek, vaardigheid en snelle beslissingen zijn de sleutel tot de overwinning. Word jij de kampioen van BattleBall?",
"gamecenter.tombrunner.description": "Deze schatzoeker is vastbesloten om zoveel mogelijk oude munten te vinden terwijl hij door eeuwenoude gangen loopt en over enorme scheuren springt. Op je reis door dit eindeloze 3D-hardloopspel kom je ook onstabiele en kwetsbare bruggen tegen. Ontdek hoe lang je kunt overleven.",
"gamecenter.flappybirds.description": "Flappy Bird is een spel in arcadestijl waarin we de Faby-vogel besturen die naar rechts beweegt. Het is jouw taak om Faby door pijpen te loodsen die op willekeurige hoogte gelijke openingen hebben.",
"gamecenter.bargame.description": "Toon uw vaardigheden door in de beste bar van het hotel te werken en de beste drankjes te serveren aan de meest veeleisende klanten. Probeer de ober te zijn met de beste vaardigheden die glazen aflevert om het spel te winnen en demonstreer je vaardigheden bij het werken met cocktails.",
"gamecenter.roombuildergame.description": "Ben jij goed in het bouwen van kamers? Heb je voldoende fantasie? Ga de strijd aan en bouw in minder dan 6 minuten een kamer rond een thema. De mooiste kamer wint!",
"gamecenter.vote.description": "Stem op de kamers",
"gamecenter.vote.room.made.by": "Kamer gemaakt door",
"gamecenter.vote.room.bestihaveseen": "Dit is de mooiste kamer die ik ooit heb gezien!",
"gamecenter.vote.room.nice": "Prima kamer, leuk gedaan.",
"gamecenter.vote.room.normal": "Een OK kamer, niet slecht en niet super cool.",
"gamecenter.vote.room.couldbebetter": "Dit had veel beter gekund",
"gamecenter.vote.room.bad": "Help waar is de uitgang, mijn ogen doen pijn!",
"gamecenter.vote.room.wait": "De andere spelers zijn nu aan het stemmen op jou kamer, even geduld!",
"wiredfurni.params.requireall.2": "Als een van de geselecteerde furni een avatar heeft",
"wiredfurni.params.requireall.3": "Als alle geselecteerde furni avatars op hen hebben",
"widget.settings.general": "Standaard",
"widget.settings.general.title": "Pas de standaard nitro settings aan",
"widget.settings.volume": "Volume",
"widget.settings.interface": "Interface",
"widget.settings.interface.title": "Pas de settings aan voor de interface",
"widget.settings.interface.fps.automatic": "Zet FPS naar unlimited",
"widget.settings.interface.fps.warning": "Het zetten van FPS naar unlimited kan prestatie problemen veroorzaken!",
"widget.settings.interface.secondary": "Verander de window header kleur",
"widget.settings.interface.reset": "Reset header kleur naar default"
}
+807
View File
@@ -0,0 +1,807 @@
{
// ------------------------------------------------------------------------
// Friendlist
// ------------------------------------------------------------------------
'friendlist.search': 'Search friends',
// ------------------------------------------------------------------------
// Purse / Currency
// ------------------------------------------------------------------------
'purse.seasonal.currency.101': 'doekoes',
// ------------------------------------------------------------------------
// Widget: furni chooser
// ------------------------------------------------------------------------
'widget.chooser.checkall': 'Select furni',
'widget.chooser.btn.pickall': 'pick up the selected items!',
// ------------------------------------------------------------------------
// Game center
// ------------------------------------------------------------------------
'gamecenter.players': 'Players',
'gamecenter.players.2to6': '2 to 6 players',
'gamecenter.players.2to8': '2 to 8 players',
'gamecenter.players.4to12': '4 to 12 players',
'gamecenter.players.single': 'Single player',
'gamecenter.players.score': 'Score:',
'gamecenter.players.theme': 'Theme:',
'gamecenter.players.winner': 'Winner!',
// Game descriptions
'gamecenter.battleball.description': 'BattleBall is a colorful game in which you must color more surfaces than your opponent. Items appear randomly and give you unique powers to boost your chances. Tactics, skill and quick decisions are the key to victory. Will you become the champion of BattleBall?',
'gamecenter.tombrunner.description': 'This treasure hunter is determined to find as many old coins as possible while running through ancient corridors and leaping over enormous cracks. On your journey through this endless 3D running game you will also encounter unstable and fragile bridges. Find out how long you can survive.',
'gamecenter.flappybirds.description': 'Flappy Bird is an arcade-style game in which we control the Faby bird, which moves to the right. It is your task to guide Faby through pipes that have equal gaps placed at random heights.',
'gamecenter.bargame.description': 'Show off your skills by working in the best bar of the hotel and serving the best drinks to the most demanding customers. Try to be the waiter with the best skills, delivering glasses to win the game and demonstrate your abilities at working with cocktails.',
'gamecenter.roombuildergame.description': 'Are you good at building rooms? Do you have enough imagination? Take on the challenge and build a themed room in under 6 minutes. The nicest room wins!',
// Game center: voting
'gamecenter.vote.description': 'Vote on the rooms',
'gamecenter.vote.room.made.by': 'Room made by',
'gamecenter.vote.room.bestihaveseen': 'This is the nicest room I have ever seen!',
'gamecenter.vote.room.nice': 'Fine room, nicely done.',
'gamecenter.vote.room.normal': 'An OK room, not bad and not super cool.',
'gamecenter.vote.room.couldbebetter': 'This could have been a lot better',
'gamecenter.vote.room.bad': 'Help, where is the exit, my eyes hurt!',
'gamecenter.vote.room.wait': 'The other players are now voting on your room, please wait!',
// ------------------------------------------------------------------------
// Wired furniture
// ------------------------------------------------------------------------
'wiredfurni.params.requireall.2': 'If one of the selected furni has an avatar',
'wiredfurni.params.requireall.3': 'If all selected furni have avatars on them',
'wiredfurni.tooltip.select.tile': 'Select tile',
'wiredfurni.tooltip.remove.tile': 'Deselect tile',
'wiredfurni.tooltip.remove.5x5_tile': 'select 5x5 tiles',
'wiredfurni.tooltip.remove.clear_tile': 'Remove all selections',
'wiredfurni.params.furni_neighborhood.group.user': 'Players',
'wiredfurni.params.furni_neighborhood.group.furni': 'Furni',
'wiredfurni.params.selector_option.bot': 'No BOTs',
'wiredfurni.params.selector_option.pet': 'No Pets',
// Wired furniture: badge received
'wiredfurni.badgereceived.title': 'Badge received!',
'wiredfurni.badgereceived.body': 'You just received a new badge! Check it out in your inventory!',
// ------------------------------------------------------------------------
// Notifications
// ------------------------------------------------------------------------
'notification.badge.received': 'New badge!',
// ------------------------------------------------------------------------
// Settings widget
// ------------------------------------------------------------------------
'widget.settings.general': 'Default',
'widget.settings.general.title': 'Adjust the default nitro settings',
'widget.settings.volume': 'Volume',
'widget.settings.interface': 'Interface',
'widget.settings.interface.title': 'Adjust the settings for the interface',
'widget.settings.interface.fps.automatic': 'Set FPS to unlimited',
'widget.settings.interface.fps.warning': 'Setting FPS to unlimited can cause performance problems!',
'widget.settings.interface.secondary': 'Change the window header color',
'widget.settings.interface.reset': 'Reset header color to default',
// ------------------------------------------------------------------------
// Room widgets: chat + youtube
// ------------------------------------------------------------------------
'widget.room.chat.hide_pets': 'Hide pets',
'widget.room.chat.hide_avatars': 'Hide avatars',
'widget.room.chat.hide_balloon': 'Hide speech bubble',
'widget.room.chat.show_balloon': 'Speech bubble',
'widget.room.chat.clear_history': 'clear history',
'widget.room.youtube.shared': 'YouTube is being shared',
'widget.room.youtube.open_video': 'Open the video',
// ------------------------------------------------------------------------
// Catalog
// ------------------------------------------------------------------------
// Catalog: general
'catalog.title': 'Catalog',
'catalog.favorites': 'Favorites',
'catalog.favorites.pages': 'Pages',
'catalog.favorites.furni': 'Furni',
'catalog.favorites.empty': 'No favorites',
'catalog.favorites.empty.hint': 'Click the heart on furni or the star on pages to add them.',
// Catalog: admin
'catalog.admin': 'Admin',
'catalog.admin.new': 'New',
'catalog.admin.root': 'Root',
'catalog.admin.new.root.category': 'New root category',
'catalog.admin.edit.root': 'Edit root',
'catalog.admin.edit': 'Edit:',
'catalog.admin.edit.page': 'Edit page',
'catalog.admin.hidden': 'hidden',
'catalog.admin.edit.title': 'Edit "%name%"',
'catalog.admin.show': 'Show',
'catalog.admin.hide': 'Hide',
'catalog.admin.delete': 'Delete',
'catalog.admin.delete.title': 'Delete "%name%"',
'catalog.admin.delete.category.confirm': 'Delete category "%name%" and all its contents?',
'catalog.admin.delete.page': 'Delete page',
'catalog.admin.delete.page.confirm': 'Delete page "%name%"?',
'catalog.admin.delete.offer.confirm': 'Are you sure you want to delete this offer?',
'catalog.admin.create': 'Create',
'catalog.admin.save': 'Save',
'catalog.admin.create.subpage': 'Create subpage',
'catalog.admin.order': 'Order',
'catalog.admin.visible': 'Visible',
'catalog.admin.enabled': 'Enabled',
// Catalog admin: offer editor
'catalog.admin.offer.new': 'New offer',
'catalog.admin.offer.edit': 'Edit offer',
'catalog.admin.offer.name': 'Catalog name',
'catalog.admin.offer.general': 'General',
'catalog.admin.offer.quantity': 'Quantity',
'catalog.admin.offer.prices': 'Prices',
'catalog.admin.offer.credits': 'Credits',
'catalog.admin.offer.points': 'Points',
'catalog.admin.offer.points.type': 'Points type',
'catalog.admin.offer.options': 'Options',
'catalog.admin.offer.club.only': 'Club only',
'catalog.admin.offer.extradata': 'Extra data (optional)....',
'catalog.admin.offer.have.offer': 'Multi-discount (have_offer)',
// Catalog: trophies
'catalog.trophies.title': 'Trophies',
'catalog.trophies.write.hint': 'Write a text for the trophy before buying',
'catalog.trophies.inscription': 'Trophy inscription',
'catalog.trophies.inscription.placeholder': 'Write the text that will appear on the trophy...',
// Catalog: pets
'catalog.pets.show.colors': 'Show colors',
'catalog.pets.choose.color': 'Choose color',
'catalog.pets.choose.breed': 'Choose breed',
'catalog.pets.back.breeds': '← Breeds',
// Catalog: name prefix editor
'catalog.prefix.text': 'Text',
'catalog.prefix.text.placeholder': 'Enter text...',
'catalog.prefix.icon': 'Icon',
'catalog.prefix.icon.remove': 'Remove icon',
'catalog.prefix.effect': 'Effect',
'catalog.prefix.color': 'Color',
'catalog.prefix.color.single': '🎨 Single',
'catalog.prefix.color.per.letter': '🌈 Per letter',
'catalog.prefix.color.hint': 'Select a letter and then choose the color. Advances automatically.',
'catalog.prefix.color.apply.all.title': 'Apply current color to all letters',
'catalog.prefix.color.apply.all': 'Apply to all',
'catalog.prefix.color.selected': 'Selected letter:',
'catalog.prefix.price': 'Price:',
'catalog.prefix.price.amount': '5 Credits',
'catalog.prefix.purchased': '✓ Purchased!',
'catalog.prefix.purchase': 'Buy',
// Catalog: gift wrapping
'catalog.gift_wrapping.gift_sent': 'Done!',
// ------------------------------------------------------------------------
// Group forum
// ------------------------------------------------------------------------
'groupforum.list.tab.most_active': 'Most active topics',
'groupforum.list.tab.my_forums': 'My group forums',
'groupforum.list.no_forums': 'There are no forums',
'groupforum.view.threads': 'Number of topics',
'groupforum.thread.pin': 'Pin topic',
'groupforum.thread.unpin': 'Unpin topic',
'groupforum.thread.lock': 'Lock topic',
'groupforum.thread.unlock': 'Unlock topic',
'groupforum.thread.hide': 'Hide topic',
'groupforum.thread.restore': 'Make topic visible again',
'groupforum.thread.delete': 'Delete topic + posts',
'groupforum.message.hide': 'Hide message',
'group.forum.enable.caption': 'Enable/disable group forum',
'group.forum.enable.help': 'If you disable the group forum, all posts will be deleted too!',
'groupforum.view.no_threads': 'There are currently no active topics',
// ------------------------------------------------------------------------
// Mod tools: window
// ------------------------------------------------------------------------
'modtools.window.title': 'Mod Tools',
'modtools.window.tools.room': 'Room tool',
'modtools.window.tools.chatlog': 'Chatlog tool',
'modtools.window.tools.report': 'Report tool',
'modtools.window.select.user': 'Select a user',
'modtools.window.no.room': 'Enter a room first',
'modtools.window.user.in_room': 'Still in this room',
'modtools.window.user.left_room': 'No longer in this room',
'modtools.window.user.clear': 'Clear selection',
'modtools.window.tickets.open': '%count% open ticket',
'modtools.window.tickets.open.many': '%count% open tickets',
'modtools.window.section.room': 'Room',
'modtools.window.section.user': 'User',
'modtools.window.section.reports': 'Reports',
'modtools.window.user.open_info': 'Open info',
// ------------------------------------------------------------------------
// Mod tools: user info
// ------------------------------------------------------------------------
'modtools.userinfo.title': 'User info: %username%',
'modtools.userinfo.userName': 'Name',
'modtools.userinfo.cfhCount': 'CFHs',
'modtools.userinfo.abusiveCfhCount': 'Abusive CFHs',
'modtools.userinfo.cautionCount': 'Cautions',
'modtools.userinfo.banCount': 'Bans',
'modtools.userinfo.lastSanctionTime': 'Last sanction',
'modtools.userinfo.tradingLockCount': 'Trade locks',
'modtools.userinfo.tradingExpiryDate': 'Lock expires',
'modtools.userinfo.minutesSinceLastLogin': 'Last login',
'modtools.userinfo.lastPurchaseDate': 'Last purchase',
'modtools.userinfo.primaryEmailAddress': 'Email',
'modtools.userinfo.identityRelatedBanCount': 'Banned accounts',
'modtools.userinfo.registrationAgeInMinutes': 'Registered',
'modtools.userinfo.userClassification': 'Rank',
'modtools.userinfo.refresh': 'Refresh user info',
'modtools.userinfo.presence.in_room': 'In room',
'modtools.userinfo.presence.in_room.title': 'In the room you are observing',
'modtools.userinfo.presence.online': 'Online',
'modtools.userinfo.presence.online.title': 'Online in the hotel',
'modtools.userinfo.presence.offline': 'Offline',
'modtools.userinfo.presence.offline.title': 'Offline when panel opened',
'modtools.userinfo.section.account': 'Account',
'modtools.userinfo.section.activity': 'Activity',
'modtools.userinfo.section.sanctions': 'Sanctions',
'modtools.userinfo.section.trading': 'Trading',
'modtools.userinfo.button.room.chat': 'Room chat',
'modtools.userinfo.button.send.message': 'Send message',
'modtools.userinfo.button.room.visits': 'Room visits',
'modtools.userinfo.button.mod.action': 'Mod action',
'modtools.userinfo.stat.cfh': 'CFH',
'modtools.userinfo.stat.cautions': 'Cautions',
'modtools.userinfo.stat.bans': 'Bans',
'modtools.userinfo.stat.trade.locks': 'Trade locks',
// ------------------------------------------------------------------------
// Mod tools: room info
// ------------------------------------------------------------------------
'modtools.roominfo.title': 'Room info',
'modtools.roominfo.refresh': 'Refresh room info',
'modtools.roominfo.loading': 'Loading…',
'modtools.roominfo.owner.here': 'Owner present',
'modtools.roominfo.owner.away': 'Owner away',
'modtools.roominfo.owner.title.here': 'The room owner is currently inside',
'modtools.roominfo.owner.title.away': 'The room owner is NOT inside',
'modtools.roominfo.stat.users': 'Users',
'modtools.roominfo.stat.owner': 'Owner',
'modtools.roominfo.owner.open': 'Open info of %username%',
'modtools.roominfo.button.visit': 'Visit room',
'modtools.roominfo.button.chatlog': 'Chatlog',
'modtools.roominfo.moderate.title': 'Moderate room',
'modtools.roominfo.moderate.kick': 'Kick everyone out',
'modtools.roominfo.moderate.doorbell': 'Enable doorbell',
'modtools.roominfo.moderate.rename': 'Change room name',
'modtools.roominfo.moderate.message.placeholder': 'Required message sent along with the action…',
'modtools.roominfo.moderate.send.caution': 'Send caution',
'modtools.roominfo.moderate.send.alert': 'Send alert',
// ------------------------------------------------------------------------
// Mod tools: user message
// ------------------------------------------------------------------------
'modtools.user.message.title': 'Send message',
'modtools.user.message.recipient': 'Message to',
'modtools.user.message.label': 'Message',
'modtools.user.message.placeholder': 'Write something useful — the user sees it as a moderator message.',
'modtools.user.message.empty': 'Empty',
'modtools.user.message.chars': '%count% characters',
'modtools.user.message.send': 'Send message',
// ------------------------------------------------------------------------
// Mod tools: mod action
// ------------------------------------------------------------------------
'modtools.user.modaction.title': 'Mod action: %username%',
'modtools.user.modaction.sanctioning': 'Sanctioning',
'modtools.user.modaction.step.topic': '1. CFH topic',
'modtools.user.modaction.step.topic.placeholder': 'Select a topic…',
'modtools.user.modaction.step.sanction': '2. Sanction',
'modtools.user.modaction.step.sanction.placeholder': 'Select a sanction…',
'modtools.user.modaction.step.message': '3. Custom message',
'modtools.user.modaction.step.message.optional': '(optional — overrides default)',
'modtools.user.modaction.message.placeholder': 'Leave empty to use the default topic message',
'modtools.user.modaction.preview': 'Preview',
'modtools.user.modaction.button.default': 'Default sanction',
'modtools.user.modaction.button.apply': 'Apply sanction',
'modtools.user.modaction.error.no.topic': 'You must select a CFH topic',
'modtools.user.modaction.error.no.action': 'You must select a CFH topic and sanction',
'modtools.user.modaction.error.no.permission': 'You do not have permission to do this',
'modtools.user.modaction.error.no.message': 'Write a message to the user',
'modtools.user.modaction.error.no.permission.alert': 'You have insufficient rights',
// ------------------------------------------------------------------------
// Mod tools: user visits
// ------------------------------------------------------------------------
'modtools.user.visits.title': 'User visits',
'modtools.user.visits.recent': 'Recently visited rooms',
'modtools.user.visits.entries.one': '%count% entry',
'modtools.user.visits.entries.many': '%count% entries',
'modtools.user.visits.empty': 'No recent visits',
'modtools.user.visits.time': 'Time',
'modtools.user.visits.room': 'Room name',
'modtools.user.visits.action': 'Action',
'modtools.user.visits.visit': 'Visit',
'modtools.user.visits.visit.title': 'Visit room',
// ------------------------------------------------------------------------
// Mod tools: chatlog
// ------------------------------------------------------------------------
'modtools.user.chatlog.title': 'User chatlog',
'modtools.user.chatlog.title.with': 'User chatlog: %username%',
'modtools.user.chatlog.loading': 'Loading chatlog…',
'modtools.room.chatlog.title': 'Room chatlog',
'modtools.chatlog.column.time': 'Time',
'modtools.chatlog.column.user': 'User',
'modtools.chatlog.column.message': 'Message',
'modtools.chatlog.empty': 'No messages',
'modtools.chatlog.visit': 'Visit',
'modtools.chatlog.tools': 'Tools',
// ------------------------------------------------------------------------
// Mod tools: tickets
// ------------------------------------------------------------------------
'modtools.tickets.title': 'Tickets',
'modtools.tickets.tab.open': 'Open',
'modtools.tickets.tab.mine': 'Mine',
'modtools.tickets.tab.picked': 'All picked',
'modtools.tickets.column.type': 'Type',
'modtools.tickets.column.reported': 'Reported',
'modtools.tickets.column.opened': 'Opened',
'modtools.tickets.column.picker': 'Picked up by',
'modtools.tickets.empty.open': 'No open reports',
'modtools.tickets.empty.mine': 'No reports picked up by you',
'modtools.tickets.empty.picked': 'No picked-up reports',
'modtools.tickets.action.pick': 'Pick up',
'modtools.tickets.action.handle': 'Handle',
'modtools.tickets.action.release': 'Release',
'modtools.tickets.issue.title': 'Resolve report #%issueId%',
'modtools.tickets.issue.label': 'Report #%issueId%',
'modtools.tickets.issue.details': 'Details',
'modtools.tickets.issue.field.source': 'Source',
'modtools.tickets.issue.field.category': 'Category',
'modtools.tickets.issue.field.description': 'Description',
'modtools.tickets.issue.field.caller': 'Reporter',
'modtools.tickets.issue.field.reported': 'Reported',
'modtools.tickets.issue.chatlog.view': 'View chatlog',
'modtools.tickets.issue.chatlog.close': 'Close chatlog',
'modtools.tickets.issue.resolve.heading': 'Resolve as',
'modtools.tickets.issue.resolve.resolved': 'Resolved',
'modtools.tickets.issue.resolve.useless': 'Useless',
'modtools.tickets.issue.resolve.abusive': 'Abusive',
'modtools.tickets.issue.release': 'Put back in queue',
'modtools.tickets.cfh.chatlog.title': 'Report #%issueId% chatlog',
// ------------------------------------------------------------------------
// Login
// ------------------------------------------------------------------------
'login.username': 'What is your habbo name',
'login.forgot_password': 'Forgot password?',
// First-time visitors card
'nitro.login.firsttime.title': 'First time here?',
'nitro.login.firsttime.text': 'Don\'t have a habbo account yet?',
'nitro.login.firsttime.link': 'You can create one here',
'nitro.login.card.title': 'Sign in to habbo',
// Server status checks
'nitro.login.server.offline.short': 'The game server is not running right now. Try again in a moment.',
'nitro.login.server.offline.long': 'The game server is not running right now, so no new accounts can be created. Try again in a moment.',
'nitro.login.server.checking': 'Checking…',
'nitro.login.server.retry': 'Try again',
// Registration flow
'nitro.login.register.title': 'habbo details',
'nitro.login.register.next': 'Next',
'nitro.login.register.finish': 'Finish',
'nitro.login.register.creating': 'Creating…',
'nitro.login.register.intro.credentials': 'Let\'s create your account. Enter your email address and choose a password — we\'ll check that this email is not already in use.',
'nitro.login.register.intro.avatar': 'Now it\'s time to create your own habbo character! Start by choosing your habbo name.',
'nitro.login.register.intro.room': 'Last step — choose a starter room, or skip this and make your own room later.',
'nitro.login.register.confirm.label': 'Confirm password',
'nitro.login.register.username.placeholder': 'HabboName',
'nitro.login.register.hotlooks.count': '%count% looks available',
'nitro.login.register.hotlooks.none': 'No looks loaded',
'nitro.login.register.room.skip.title': 'Fine — I\'ll make my own rooms',
'nitro.login.register.room.skip.description': 'Skip this and start with an empty hotel inventory.',
'nitro.login.register.room.loading': 'Loading rooms…',
'nitro.login.register.room.error': 'Could not load room options. You can still skip this step.',
'nitro.login.register.success': 'Welcome aboard, %username%! Your account is ready — log in below with the password you just chose.',
// Forgot password
'nitro.login.forgot.title': 'Reset password',
'nitro.login.forgot.email.label': 'Email address',
'nitro.login.forgot.send': 'Send email',
'nitro.login.forgot.success': 'Email sent! If an account is linked to this address, you\'ll find a reset link in your inbox shortly (check your spam if you see nothing within a minute).',
// Login errors (validation + transport)
'nitro.login.error.missing_credentials': 'Enter both your habbo name and password.',
'nitro.login.error.invalid_credentials': 'Invalid habbo name or password.',
'nitro.login.error.too_many_attempts': 'Too many attempts. Try again in %seconds%s.',
'nitro.login.error.turnstile': 'Complete the security check.',
'nitro.login.error.server_offline': 'The game server is not running. Try again later.',
'nitro.login.error.login_unreachable': 'Cannot reach the login service. Try again.',
'nitro.login.error.register_failed': 'Cannot create your account.',
'nitro.login.error.register_unreachable': 'Cannot reach the registration service.',
'nitro.login.error.forgot_failed': 'Cannot send a reset email right now.',
'nitro.login.error.forgot_unreachable': 'Cannot reach the password reset service.',
'nitro.login.error.missing_fields': 'Fill in all fields.',
'nitro.login.error.invalid_email': 'Enter a valid email address.',
'nitro.login.error.password_too_short': 'Your password must be at least 8 characters long.',
'nitro.login.error.password_mismatch': 'Passwords do not match.',
'nitro.login.error.email_taken': 'This email address is already in use.',
'nitro.login.error.missing_username': 'Choose a habbo name.',
'nitro.login.error.username_length': 'The habbo name must be 316 characters.',
'nitro.login.error.username_taken': 'This habbo name is already in use.',
'nitro.login.error.missing_email': 'Enter your email address.',
// ------------------------------------------------------------------------
// Inventory
// ------------------------------------------------------------------------
'inventory.effects.activate': 'Use effect',
'inventory.effects.remove': 'remove effect',
// ------------------------------------------------------------------------
// Loading screen — boot-stage labels read by App.tsx (taskLabel)
// ------------------------------------------------------------------------
'loading.task.session': 'Verifying session...',
'loading.task.renderer': 'Initializing renderer...',
'loading.task.assets': 'Loading game assets...',
'loading.task.localization': 'Loading translations...',
'loading.task.avatar': 'Loading wardrobe...',
'loading.task.sounds': 'Loading sounds...',
'loading.task.startsession': 'Starting session...',
'loading.task.userdata': 'Loading user data...',
'loading.task.rooms': 'Loading rooms...',
'loading.task.engine': 'Loading graphics engine...',
// ------------------------------------------------------------------------
// Housekeeping
// ------------------------------------------------------------------------
'housekeeping.title': 'Housekeeping',
'housekeeping.mode.light': 'Light',
// Housekeeping: tabs
'housekeeping.tab.dashboard': 'Dashboard',
'housekeeping.tab.users': 'Users',
'housekeeping.tab.rooms': 'Rooms',
'housekeeping.tab.economy': 'Economy',
'housekeeping.tab.audit': 'Audit log',
// Housekeeping: confirm + status
'housekeeping.confirm.title': 'Confirm action',
'housekeeping.confirm.proceed': 'Proceed',
'housekeeping.confirm.cancel': 'Cancel',
'housekeeping.status.dismiss': 'Dismiss',
// Housekeeping: action status
'housekeeping.action.pending': 'Action in progress…',
'housekeeping.action.success': 'Action completed',
'housekeeping.action.error': 'Action failed',
'housekeeping.action.reset_password.done': 'Password reset — new password below.',
// Housekeeping: generated password card
'housekeeping.password.title': '%username% (#%id%) · new password',
'housekeeping.password.value_label': 'Generated password',
'housekeeping.password.copy': 'Copy',
'housekeeping.password.copied': 'Copied',
'housekeeping.password.copy_failed': 'Copy failed',
'housekeeping.password.dismiss': 'Dismiss',
'housekeeping.password.hint': 'Share this with the user outside the hotel. It is shown once — close this card when you\'re done; the password will never be displayed again.',
// Housekeeping: errors
'housekeeping.error.invalid_input': 'Invalid input — check the user ID and the entered value.',
'housekeeping.error.user_not_found': 'User not found.',
'housekeeping.error.user_offline': 'User is offline — this action only works on online users.',
'housekeeping.error.target_unkickable': 'This user cannot be kicked.',
'housekeeping.error.ban_failed': 'Ban could not be applied — the server refused the request.',
'housekeeping.error.no_active_ban': 'No active ban to lift for this user.',
'housekeeping.error.rank_not_found': 'Rank not found — choose a rank that exists in permission_ranks.',
'housekeeping.error.db_failed': 'Database error — see the emulator log for the SQL exception.',
'housekeeping.error.hash_failed': 'Could not hash the new password — SHA-256 not available on this JVM.',
'housekeeping.error.room_not_found': 'Room not found.',
'housekeeping.error.room_action_failed': 'Room action could not be applied.',
'housekeeping.error.new_owner_not_found': 'New owner not found.',
'housekeeping.error.economy_failed': 'Economy action could not be applied — check the user ID and the amount.',
'housekeeping.error.alert_empty': 'Hotel alert may not be empty.',
// Housekeeping: actions
'housekeeping.action.ban_h': 'Ban %h%h',
'housekeeping.action.mute_min': 'Mute %m%m',
'housekeeping.action.trade_lock_h': 'Trade lock %h%h',
'housekeeping.action.kick': 'Kick',
'housekeeping.action.unban': 'Lift ban',
'housekeeping.action.force_disconnect': 'Disconnect',
'housekeeping.action.set_rank': 'Set rank',
'housekeeping.action.reset_password': 'Reset password',
// Housekeeping: user panel
'housekeeping.user.search.placeholder': 'Search by username…',
'housekeeping.user.search.button': 'Search',
'housekeeping.user.clear': 'Clear selection',
'housekeeping.user.none': 'No user selected — search above to pick one.',
'housekeeping.user.not_found': 'User not found.',
'housekeeping.user.credits': 'Credits',
'housekeeping.user.duckets': 'Duckets / pixels',
'housekeeping.user.diamonds': 'Diamonds',
'housekeeping.user.audit_hint': 'All actions are recorded in the audit log tab.',
'housekeeping.user.live.label': 'Live (in current room)',
'housekeeping.user.live.kick': 'Kick',
'housekeeping.user.live.mute_2m': 'Mute 2m',
'housekeeping.user.live.mute_10m': 'Mute 10m',
'housekeeping.user.live.ban_h': 'Ban 1h',
'housekeeping.user.live.ban_d': 'Ban 1d',
// Housekeeping: room panel
'housekeeping.room.search.placeholder': 'Room ID…',
'housekeeping.room.search.button': 'Search',
'housekeeping.room.clear': 'Clear selection',
'housekeeping.room.none': 'No room selected — enter an ID above.',
'housekeeping.room.not_found': 'Room not found.',
'housekeeping.room.open': 'Open',
'housekeeping.room.close': 'Close',
'housekeeping.room.mute_min': 'Mute %m%m',
'housekeeping.room.kick_all': 'Kick everyone',
'housekeeping.room.kick_all.confirm': 'Kick every user currently in the room?',
'housekeeping.room.delete': 'Delete room',
'housekeeping.room.delete.confirm': 'Permanently delete this room and all its furni?',
'housekeeping.room.transfer': 'Transfer',
'housekeeping.room.transfer.label': 'Transfer ownership',
'housekeeping.room.transfer.new_owner': 'New owner ID',
// Housekeeping: economy
'housekeeping.economy.select_user': 'Pick a user in the Users tab first.',
'housekeeping.economy.target': 'Target: %username% (#%id%)',
'housekeeping.economy.give_credits': 'Give credits',
'housekeeping.economy.give_duckets': 'Give duckets',
'housekeeping.economy.give_diamonds': 'Give diamonds',
'housekeeping.economy.grant_item': 'Grant item',
'housekeeping.economy.grant_item.label': 'Grant catalog item',
'housekeeping.economy.item_id': 'Item ID',
'housekeeping.economy.item_quantity': 'Quantity',
'housekeeping.economy.set_hc_days': 'Set HC days',
// Housekeeping: hotel-wide alert
'housekeeping.hotel.alert.label': 'Hotel-wide alert',
'housekeeping.hotel.alert.placeholder': 'Message broadcast to every connected user…',
'housekeeping.hotel.alert.send': 'Send to hotel',
'housekeeping.hotel.alert.confirm': 'Broadcast a %count%-character alert to every connected user?',
// Housekeeping: dashboard
'housekeeping.dashboard.title': 'Overview',
'housekeeping.dashboard.refresh': 'Refresh',
'housekeeping.dashboard.loading': 'Loading dashboard…',
'housekeeping.dashboard.unavailable': 'Dashboard unavailable — check the admin endpoint.',
'housekeeping.dashboard.online': 'Online',
'housekeeping.dashboard.total_users': '%count% total',
'housekeeping.dashboard.rooms_active': 'Active rooms',
'housekeeping.dashboard.total_rooms': '%count% total',
'housekeeping.dashboard.peak_today': 'Peak today',
'housekeeping.dashboard.peak_alltime': 'All-time peak %count%',
'housekeeping.dashboard.pending_tickets': 'Tickets',
'housekeeping.dashboard.sanctions_24h': '%count% sanctions / 24h',
'housekeeping.dashboard.server': 'Server',
'housekeeping.dashboard.recent_sanctions': 'Recent sanctions',
'housekeeping.dashboard.recent_lookups': 'Recent lookups',
// Housekeeping: audit log
'housekeeping.audit.title': 'Audit log',
'housekeeping.audit.refresh': 'Refresh',
'housekeeping.audit.filter.all': 'All',
'housekeeping.audit.filter.users': 'Users',
'housekeeping.audit.filter.rooms': 'Rooms',
'housekeeping.audit.filter.hotel': 'Hotel',
'housekeeping.audit.search.placeholder': 'Search actor / target / action…',
'housekeeping.audit.empty': 'No audit entries yet.',
'housekeeping.audit.no_match': 'No entries match the current filters.',
// Housekeeping: shared fields
'housekeeping.field.reason': 'Reason',
'housekeeping.field.reason.placeholder': 'Free-text reason (optional)',
'housekeeping.field.duration': 'Duration',
'housekeeping.reason.default': 'No reason given.',
// Housekeeping: context menu
'housekeeping.menu.send_to_hk': 'Send to housekeeping',
// Housekeeping: bulk actions
'housekeeping.bulk.done': 'Bulk done',
'housekeeping.bulk.success': 'All bulk actions succeeded.',
'housekeeping.bulk.partial': 'Bulk completed with some failures.',
'housekeeping.bulk.failed': 'Every bulk action failed.',
'housekeeping.bulk.confirm': 'Apply %action% to %count% selected users?',
'housekeeping.bulk.label': '%count% selected',
'housekeeping.bulk.clear': 'Clear selection',
'housekeeping.bulk.apply': 'Apply to selection',
// Housekeeping: telemetry
'housekeeping.telemetry.title': 'Telemetry',
'housekeeping.telemetry.empty': 'No actions observed yet.',
'housekeeping.telemetry.reset': 'Reset statistics',
// Housekeeping: live room session
'housekeeping.live.no_room': 'No active room session.',
'housekeeping.live.kicked': 'Kicked from the room.',
'housekeeping.live.banned': 'Banned from the room.',
'housekeeping.live.muted': 'Muted in the room.',
// Housekeeping: validation
'housekeeping.validation.empty_username': 'Username may not be empty.',
'housekeeping.validation.invalid_user_id': 'Invalid user ID.',
'housekeeping.validation.invalid_room_id': 'Invalid room ID.',
'housekeeping.validation.invalid_amount': 'Invalid amount.',
'housekeeping.validation.amount_too_large': 'Amount exceeds the safety limit.',
'housekeeping.validation.empty_reason': 'Reason may not be empty.',
'housekeeping.validation.invalid_hours': 'Invalid duration in hours.',
'housekeeping.validation.invalid_rank': 'Invalid rank — must be between 1 and 12.',
// ------------------------------------------------------------------------
// Fortune Wheel
// ------------------------------------------------------------------------
'wheel.title': 'Fortune Wheel',
'wheel.free.today': 'You have %count% free spins today!',
'wheel.extra': 'Extra spins: %count%',
'wheel.spin': 'SPIN',
'wheel.buy': 'Buy spin',
'wheel.winners': 'Latest winners',
'wheel.winners.empty': 'No winners yet',
'wheel.win.title': 'You won!',
'wheel.win.jackpot': '★ Jackpot ★',
'wheel.win.nothing': 'Better luck next time!',
// ------------------------------------------------------------------------
// Soundboard
// ------------------------------------------------------------------------
'soundboard.title': 'Soundboard',
'soundboard.empty': 'No sounds available',
'soundboard.lastplayed': 'Played by %user%',
'soundboard.room.setting.desc': 'Let people in this room play sound effects',
// ------------------------------------------------------------------------
// Radio
// ------------------------------------------------------------------------
'radio.title': 'Radio',
'radio.empty': 'No stations',
'radio.error': 'Couldn\'t load stations',
'radio.stop': 'Stop',
// ------------------------------------------------------------------------
// Rare Values
// ------------------------------------------------------------------------
'rarevalues.title': 'Rare Values',
'rarevalues.loading': 'Loading values…',
'rarevalues.empty': 'No rares found',
'rarevalues.infostand.label': 'Value:',
// Rare Values: editor
'rarevalues.editor.tab': 'Edit',
'rarevalues.editor.type': 'Type',
'rarevalues.editor.value': 'Value',
'rarevalues.editor.weight': 'Chance',
'rarevalues.editor.label': 'Label',
'rarevalues.editor.save': 'Save',
'rarevalues.editor.add': '+ Add prize',
'rarevalues.editor.remove': 'Remove prize',
'rarevalues.editor.cat.item': 'Furni (ID)',
'rarevalues.editor.cat.spin': 'Extra spins',
'rarevalues.editor.cat.nothing': 'Nothing',
// ------------------------------------------------------------------------
// Chat commands: client
// ------------------------------------------------------------------------
'chatcmd.client.shake': 'Shake the room',
'chatcmd.client.rotate': 'Rotate the room',
'chatcmd.client.zoom': 'Zoom in/out',
'chatcmd.client.flip': 'Reset zoom',
'chatcmd.client.iddqd': 'Turn the room upside down',
'chatcmd.client.screenshot': 'Screenshot of the room',
'chatcmd.client.togglefps': 'Toggle FPS',
'chatcmd.client.laugh': 'Laugh (VIP)',
'chatcmd.client.kiss': 'Blow a kiss (VIP)',
'chatcmd.client.jump': 'Jump (VIP)',
'chatcmd.client.idle': 'Go idle',
'chatcmd.client.sign': 'Show sign',
'chatcmd.client.furni': 'Furni chooser',
'chatcmd.client.chooser': 'User chooser',
'chatcmd.client.floor': 'Floor editor',
'chatcmd.client.pickall': 'Pick up all furni',
'chatcmd.client.ejectall': 'Eject all furni',
'chatcmd.client.settings': 'Room settings',
'chatcmd.client.info': 'Client info',
// ------------------------------------------------------------------------
// Me-menu settings + User account settings window
// ------------------------------------------------------------------------
'usersettings.tab.general': "General",
'usersettings.tab.themes': "Themes",
'memenu.settings.other.place.multiple.objects': "Place multiple objects",
'memenu.settings.other.skip.purchase.confirmation': "Skip purchase confirmation",
'memenu.settings.other.enable.chat.window': "Enable chat window",
'memenu.settings.other.catalog.classic.style': "New style",
'usersettings.open.title': "User settings",
'usersettings.open.subtitle': "Password & account",
'usersettings.themes.custom': "Custom theme",
'usersettings.themes.default_option': "Default (no theme)",
'usersettings.themes.active_pieces': "Active pieces",
'usersettings.themes.invalid': "Theme invalid or unreachable — using the default.",
'usersettings.themes.none': "No themes available. Add a folder in custom-themes/ on the server.",
'usersettings.title': "User Settings",
'usersettings.account.label': "My account",
'usersettings.guest': "Guest",
'usersettings.subtitle': "Manage your account and security",
'usersettings.menu.section': "Account",
'usersettings.menu.password.title': "Reset password",
'usersettings.menu.password.desc': "Change the password used to log in.",
'usersettings.menu.email.title': "Change email",
'usersettings.menu.email.desc': "Update the email address on your account.",
'usersettings.menu.username.title': "Change username",
'usersettings.menu.username.desc': "Pick a new name. You'll need to log in again.",
'usersettings.menu.soon.title': "More coming soon",
'usersettings.menu.soon.desc': "Two-factor authentication and more.",
'usersettings.password.hint': "Use at least %count% characters. Mix upper & lowercase, numbers and symbols for a stronger password.",
'usersettings.email.hint': "For security we ask you to confirm your current password before changing the email on your account.",
'usersettings.username.hint': "Renaming will log you out and you can only rename again after 30 days. Make sure your friends know your new name!",
'usersettings.field.current_password': "Current password",
'usersettings.field.new_password': "New password",
'usersettings.field.retype_password': "Retype new password",
'usersettings.field.new_email': "New email address",
'usersettings.field.new_username': "New username",
'usersettings.username.rules': "%min%-%max% characters. Letters, numbers, dot, underscore and dash only.",
'usersettings.strength.weak': "Weak",
'usersettings.strength.fair': "Fair",
'usersettings.strength.good': "Good",
'usersettings.strength.strong': "Strong",
'usersettings.aria.show_password': "Show password",
'usersettings.aria.hide_password': "Hide password",
'usersettings.btn.cancel': "Cancel",
'usersettings.btn.saving': "Saving…",
'usersettings.btn.save_password': "Save password",
'usersettings.btn.save_email': "Save email",
'usersettings.btn.renaming': "Renaming…",
'usersettings.btn.rename': "Rename me",
'usersettings.error.fields_required': "All fields are required.",
'usersettings.error.password_min': "Password must be at least %count% characters.",
'usersettings.error.password_long': "Password is too long.",
'usersettings.error.password_mismatch': "New passwords do not match.",
'usersettings.error.password_same': "New password must be different from the current password.",
'usersettings.error.not_authenticated': "You are not authenticated. Please log in again.",
'usersettings.error.network': "Could not reach the server. Please try again.",
'usersettings.error.request_failed': "Request failed (%status%).",
'usersettings.error.email_long': "Email address is too long.",
'usersettings.error.email_invalid': "Please enter a valid email address.",
'usersettings.error.username_length': "Username must be between %min% and %max% characters.",
'usersettings.error.username_invalid': "Username may only contain letters, numbers, dot, underscore and dash.",
'usersettings.error.username_same': "New username must be different from the current one.",
'usersettings.success.password': "Password updated successfully.",
'usersettings.success.email': "Email updated successfully.",
'usersettings.success.username': "Username updated. Please log in again with your new name.",
// ------------------------------------------------------------------------
// @-mention autocomplete (chat input)
// ------------------------------------------------------------------------
'mentions.window.title': "Mentions",
'mentions.window.empty': "No mentions",
'mentions.window.markall': "Mark all as read",
'mentions.tab.title': "Mentions",
'mentions.notification': "%sender% mentioned you in %room%",
'mentions.filter.all': "All",
'mentions.filter.unread': "Unread",
'mentions.filter.direct': "Direct",
'mentions.filter.room': "Room",
'mentions.group.today': "Today",
'mentions.group.yesterday': "Yesterday",
'mentions.group.older': "Earlier",
'mentions.type.direct': "Direct mention",
'mentions.type.room': "Room mention",
'mentions.action.goto': "Go to room",
'mentions.action.remove': "Remove",
'mentions.alias.description.everyone': "Everyone in the hotel",
'mentions.alias.description.friends': "Your online friends",
'mentions.alias.description.room': "Everyone in this room",
// Messenger (offline delivery + typing)
// ------------------------------------------------------------------------
'messenger.offline.delivered': 'Sent while you were offline',
'messenger.typing': '%FRIEND_NAME% is typing...',
// ------------------------------------------------------------------------
// Navigator
// ------------------------------------------------------------------------
'navigator.roomsettings.allow_underpass': 'walking under tall furniture',
}
@@ -0,0 +1,625 @@
{
"socket.url": "wss://nitro.example.com:2096",
"api.url": "https://nitro.example.com:2096",
"crypto.ws.enabled": false,
"crypto.ws.signing.enabled": false,
"crypto.ws.signing.public_key": "",
"asset.url": "https://hotel.example.com/client/nitro/bundled",
"image.library.url": "https://hotel.example.com/client/c_images/",
"hof.furni.url": "https://hotel.example.com/client/c_images/dcr/hof_furni",
"images.url": "https://hotel.example.com/client/nitro/images",
"gamedata.url": "https://nitro.example.com:2096/nitro-sec/file?kind=gamedata&file=",
"sounds.url": "${asset.url}/sounds/%sample%.mp3",
"external.texts.url": [
"${gamedata.url}/ExternalTexts.json?t=%timestamp%",
"${gamedata.url}/UITexts.json5?t=%timestamp%"
],
"external.texts.translation.url": "${gamedata.url}/text_translate/ExternalTexts_%locale%.json?t=%timestamp%",
"external.samples.url": "${hof.furni.url}/mp3/sound_machine_sample_%sample%.mp3",
"furnidata.url": "${gamedata.url}/FurnitureData.json?t=%timestamp%",
"furnidata.translation.url": "${gamedata.url}/furniture_translate/FurnitureData_%locale%.json?t=%timestamp%",
"productdata.url": "${gamedata.url}/ProductData.json?t=%timestamp%",
"avatar.actions.url": "${gamedata.url}/HabboAvatarActions.json?t=%timestamp%",
"avatar.figuredata.url": "${gamedata.url}/FigureData.json?t=%timestamp%",
"avatar.figuremap.url": "${gamedata.url}/FigureMap.json?t=%timestamp%",
"avatar.effectmap.url": "${gamedata.url}/EffectMap.json?t=%timestamp%",
"avatar.asset.url": "${asset.url}/figure/%libname%.nitro",
"avatar.asset.effect.url": "${asset.url}/effect/%libname%.nitro",
"furni.asset.url": "${asset.url}/furniture/%libname%.nitro",
"furni.asset.icon.url": "${hof.furni.url}/icons/%libname%%param%_icon.png",
"pet.asset.url": "${asset.url}/pet/%libname%.nitro",
"generic.asset.url": "${asset.url}/generic/%libname%.nitro",
"badge.asset.url": "${image.library.url}album1584/%badgename%.gif",
"radio.url": "${gamedata.url}/radio-stations.json5?t=%timestamp%",
"soundboard.url": "${gamedata.url}/soundboard-sounds.json5?t=%timestamp%",
"furni.rotation.bounce.steps": 20,
"furni.rotation.bounce.height": 0.0625,
"enable.avatar.arrow": false,
"system.log.debug": true,
"system.log.warn": true,
"system.log.error": true,
"system.log.events": false,
"system.log.packets": false,
"system.fps.animation": 24,
"system.fps.max": 60,
"system.pong.manually": true,
"system.pong.interval.ms": 20000,
"room.color.skip.transition": true,
"room.landscapes.enabled": true,
"room.zoom.enabled": true,
"timezone.settings": "Europe/Amsterdam",
"youtube.publish.disabled": false,
"user.badges.group.slot.enabled": true,
"loading.logo.url": "",
"loading.background": "",
"loading.progress.color": "linear-gradient(90deg,#4f8cff,#2563eb)",
"login.screen.enabled": true,
"login.endpoint": "${api.url}/api/auth/login",
"login.register.endpoint": "${api.url}/api/auth/register",
"login.forgot.endpoint": "${api.url}/api/auth/forgot-password",
"login.logout.endpoint": "${api.url}/api/auth/logout",
"login.health.endpoint": "${api.url}/api/health",
"login.check-email.endpoint": "${api.url}/api/auth/check-email",
"login.check-username.endpoint": "${api.url}/api/auth/check-username",
"login.room_templates.endpoint": "${api.url}/api/auth/room-templates",
"login.remember.endpoint": "${api.url}/api/auth/remember",
"login.server_key.endpoint": "${api.url}/api/auth/server-key",
"login.sso-token.endpoint": "${api.url}/api/auth/sso-token",
"login.refresh.endpoint": "${api.url}/api/auth/refresh",
"login.health.method": "GET",
"login.news.url": "${asset.url}/news/news.json",
"badges.custom.list.endpoint": "${api.url}/api/badges/custom",
"badges.custom.create.endpoint": "${api.url}/api/badges/custom",
"badges.custom.update.endpoint": "${api.url}/api/badges/custom/%badgeId%",
"badges.custom.delete.endpoint": "${api.url}/api/badges/custom/%badgeId%",
"badges.custom.texts.endpoint": "${api.url}/api/badges/custom/texts",
"badges.custom.texts.endpoint": "${api.url}//api/auth/change-password",
"badges.leaderboard.endpoint": "${api.url}/api/badges/leaderboard",
"account.change-password.endpoint": "${api.url}/api/auth/change-password",
"account.change-email.endpoint": "${api.url}/api/auth/change-email",
"account.change-username.endpoint": "${api.url}/api/auth/change-username",
"login.turnstile.enabled": true,
"login.turnstile.sitekey": "1x00000000000000000000AA",
"avatar.mandatory.libraries": [
"bd:1",
"li:0"
],
"avatar.mandatory.effect.libraries": [
"dance.1",
"dance.2",
"dance.3",
"dance.4"
],
"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"
}
]
}
]
}
]
},
"avatar.default.actions": {
"actions": [
{
"id": "Default",
"state": "std",
"precedence": 1000,
"main": true,
"isDefault": true,
"geometryType": "vertical",
"activePartSet": "figure",
"assetPartDefinition": "std"
}
]
},
"pet.types": [
"dog",
"cat",
"croco",
"terrier",
"bear",
"pig",
"lion",
"rhino",
"spider",
"turtle",
"chicken",
"frog",
"dragon",
"monster",
"monkey",
"horse",
"monsterplant",
"bunnyeaster",
"bunnyevil",
"bunnydepressed",
"bunnylove",
"pigeongood",
"pigeonevil",
"demonmonkey",
"bearbaby",
"terrierbaby",
"gnome",
"gnome",
"kittenbaby",
"puppybaby",
"pigletbaby",
"haloompa",
"fools",
"pterosaur",
"velociraptor",
"cow",
"LeetPen",
"bbwibb",
"elephants"
],
"preload.assets.urls": [
"${images.url}/loading_icon.png",
"${images.url}/clear_icon.png",
"${images.url}/big_arrow.png"
]
}
@@ -1,161 +0,0 @@
{
"socket.url": "wss://ws.websocket-url",
"asset.url": "https://website-url/gamedata/",
"image.library.url": "https://website-url/gamedata/c_images/",
"hof.furni.url": "https://website-url/dcr/hof_furni",
"images.url": "${asset.url}/images",
"gamedata.url": "${asset.url}",
"sounds.url": "${asset.url}/sounds/%sample%.mp3",
"external.texts.url": [ "${gamedata.url}/config/ExternalTexts.json?v= + Math.random()", "${gamedata.url}/config/UITexts.json?v= + Math.random()" ],
"external.samples.url": "${gamedata.url}/sounds/sound_machine_sample_%sample%.mp3",
"furnidata.url": "${gamedata.url}/config/FurnitureData.json?v= + revision",
"productdata.url": "${gamedata.url}/config/ProductData.json?v= + revision",
"avatar.actions.url": "${gamedata.url}/config/HabboAvatarActions.json?v= + revision",
"avatar.figuredata.url": "${gamedata.url}/config/FigureData.json?v= + revision",
"avatar.figuremap.url": "${gamedata.url}/config/FigureMap.json?v= + revision",
"avatar.effectmap.url": "${gamedata.url}/config/EffectMap.json?v= + revision",
"avatar.asset.url": "${asset.url}/bundled/figure/%libname%.nitro",
"avatar.asset.effect.url": "${asset.url}/bundled/effect/%libname%.nitro",
"furni.asset.url": "${asset.url}/bundled/furniture/%libname%.nitro",
"furni.asset.icon.url": "https://website-url/gamedata/icons/%libname%%param%_icon.png",
"pet.asset.url": "${asset.url}/bundled/pet/%libname%.nitro",
"generic.asset.url": "${asset.url}/bundled/generic/%libname%.nitro",
"badge.asset.url": "${image.library.url}album1584/%badgename%.gif",
"furni.rotation.bounce.steps": 20,
"furni.rotation.bounce.height": 0.0625,
"enable.avatar.arrow": false,
"system.log.debug": false,
"system.log.warn": false,
"system.log.error": false,
"system.log.events": false,
"system.log.packets": false,
"system.fps.animation": 24,
"system.fps.max": 60,
"system.pong.manually": true,
"system.pong.interval.ms": 20000,
"room.color.skip.transition": true,
"room.landscapes.enabled": true,
"avatar.mandatory.libraries": [
"bd:1",
"li:0"
],
"avatar.mandatory.effect.libraries": [
"dance.1",
"dance.2",
"dance.3",
"dance.4"
],
"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"}]}]}]},
"avatar.default.actions": {
"actions": [
{
"id": "Default",
"state": "std",
"precedence": 1000,
"main": true,
"isDefault": true,
"geometryType": "vertical",
"activePartSet": "figure",
"assetPartDefinition": "std"
}
]
},
"pet.types": [
"dog",
"cat",
"croco",
"terrier",
"bear",
"pig",
"lion",
"rhino",
"spider",
"turtle",
"chicken",
"frog",
"dragon",
"monster",
"monkey",
"horse",
"monsterplant",
"bunnyeaster",
"bunnyevil",
"bunnydepressed",
"bunnylove",
"pigeongood",
"pigeonevil",
"demonmonkey",
"bearbaby",
"terrierbaby",
"gnome",
"leprechaun",
"kittenbaby",
"puppybaby",
"pigletbaby",
"haloompa",
"fools",
"pterosaur",
"velociraptor",
"cow",
"dragondog",
"pkmshaymin2",
"LeetEendjes",
"pkmnentei",
"squirtle",
"LeetBH",
"LeetCaviaaa",
"LeetFantj",
"LeetHotelMario",
"LeetUil",
"LeetWolf",
"pokemon_mewblu",
"bbwibb",
"LeetBB",
"LeetHotelMari1",
"LeetMewtw",
"LeetPikachu",
"LeetYos",
"LeetE",
"LeetMewt1",
"LeetPen",
"slendermn",
"pkmnPAPI0",
"pkmnPAPI1",
"pkmnPAPI2",
"pkmnPAPI3",
"pkmnPAPI4",
"pokmn_mew",
"pkmashhhpet",
"pkmbeautfly",
"pkmcelebipe",
"pkmdarkraip",
"pkmeeveepet",
"pkmjirachip",
"pkmpichupet",
"pkmriolupet",
"pkmshayminp",
"pkmtogepipe",
"pkmvictinip",
"slenderm1",
"LeetEendj16",
"pkmnente1",
"LeetBa",
"babymeisje",
"babyBH",
"bb_hbx",
"LeetUi1"
],
"preload.assets.urls": [
"${asset.url}/bundled/generic/avatar_additions.nitro",
"${asset.url}/bundled/generic/group_badge.nitro",
"${asset.url}/bundled/generic/floor_editor.nitro",
"${images.url}/loading_icon.png",
"${images.url}/clear_icon.png",
"${images.url}/big_arrow.png"
]
}
+21 -105
View File
@@ -1,117 +1,33 @@
Additional tables for special catalog features[cite: 1]:
- `catalog_pages_bc` / `catalog_items_bc` — Builders Club catalog[cite: 1]
- `catalog_items_limited` — tracks limited-edition (RARE) item sales[cite: 1]
- `catalog_club_offers` — HC/VIP/BC subscription offers[cite: 1]
- `catalog_clothing` — wearable clothing items[cite: 1]
- `catalog_featured_pages` — front page featured slots[cite: 1]
- `catalog_target_offers` — targeted promotional offers[cite: 1]
Here is a clear, professional, and comprehensive README.md for EpicNabbo 2.0. It highlights the stability of the release while honestly noting the current limitation with the search functionality.
## Table Schemas
Markdown
# EpicNabbo 2.0 - Catalogue
### `items_base`
Welcome to **EpicNabbo 2.0**, a powerful and highly optimized catalogue system designed for seamless content management and presentation. This release focuses heavily on core stability, performance improvements, and a robust architecture.
Defines the base properties of every furniture item. Referenced by `catalog_items.item_ids`, `items.id`, and many other tables via foreign key[cite: 1].
---
| Column | Type | Description |
|--------|------|-------------|
| `id` | `int(10) unsigned` | Primary key, matches sprite ID in FurnitureData[cite: 1] |
| `sprite_id` | `int(11)` | Sprite identifier (usually same as `id`)[cite: 1] |
| `public_name` | `varchar(56)` | Display name shown in the client[cite: 1] |
| `item_name` | `varchar(70)` | Internal classname (matches FurnitureData classname)[cite: 1] |
| `type` | `varchar(3)` | `s` = floor item, `i` = wall item, `r` = robot/bot, `e` = effect[cite: 1] |
| `width` | `int(11)` | Tile width[cite: 1] |
| `length` | `int(11)` | Tile length[cite: 1] |
| `stack_height` | `double(4,2)` | Stack height (0.00 = flat, 1.00 = normal stack)[cite: 1] |
| `allow_stack` | `tinyint(1)` | Can other items be stacked on top[cite: 1] |
| `allow_sit` | `tinyint(1)` | Can avatars sit on this[cite: 1] |
| `allow_lay` | `tinyint(1)` | Can avatars lay on this[cite: 1] |
| `allow_walk` | `tinyint(1)` | Can avatars walk through this[cite: 1] |
| `allow_gift` | `tinyint(1)` | Can this be wrapped as a gift[cite: 1] |
| `allow_trade` | `tinyint(1)` | Can players trade this[cite: 1] |
| `allow_recycle` | `tinyint(1)` | Can this be recycled[cite: 1] |
| `allow_marketplace_sell` | `tinyint(1)` | Can this be sold on the marketplace[cite: 1] |
| `allow_inventory_stack` | `tinyint(1)` | Does this stack in inventory[cite: 1] |
| `interaction_type` | `varchar(500)` | Behavior type (e.g. `default`, `gate`, `teleport`, `wired_trigger`, `dimmer`, `postit`, `bed`, `chair`, `football_counter`, etc.)[cite: 1] |
| `interaction_modes_count` | `int(11)` | Number of interaction states (e.g. 2 for toggleable items)[cite: 1] |
| `vending_ids` | `varchar(255)` | Vending machine reward item IDs[cite: 1] |
| `multiheight` | `varchar(50)` | Multi-height stack data[cite: 1] |
| `customparams` | `varchar(256)` | Custom parameters (e.g. clothing set IDs)[cite: 1] |
| `effect_id_male` | `int(11)` | Male avatar effect ID[cite: 1] |
| `effect_id_female` | `int(11)` | Female avatar effect ID[cite: 1] |
| `clothing_on_walk` | `varchar(255)` | Clothing effect applied on walk[cite: 1] |
## 🚀 Status: Stable
### `catalog_pages`
EpicNabbo 2.0 has undergone extensive testing to ensure that the core database handling, page rendering, and item structures are completely **stable** for production environments. You can rely on this version for day-to-day operations without worrying about critical crashes or data corruption.
Defines the hierarchical catalog tree structure visible in the Nitro client[cite: 1].
> ⚠️ **Known Issue:** The **Search Functionality** is currently not working as intended. While it will not crash the system, the search results may be inaccurate or incomplete. This is a known priority and is actively being worked on for the next patch.
| Column | Type | Description |
|--------|------|-------------|
| `id` | `int(11)` | Primary key[cite: 1] |
| `parent_id` | `int(11)` | Parent page ID (`-1` = root page)[cite: 1] |
| `caption_save` | `varchar(25)` | Internal caption key[cite: 1] |
| `caption` | `varchar(128)` | Display caption[cite: 1] |
| `page_layout` | `enum` | Layout type (see source for full enum list)[cite: 1] |
| `icon_color` | `int(11)` | Catalog icon color (1-255)[cite: 1] |
| `icon_image` | `int(11)` | Catalog icon image ID[cite: 1] |
| `min_rank` | `int(11)` | Minimum rank to view[cite: 1] |
| `order_num` | `int(11)` | Sort order[cite: 1] |
| `visible` | `enum('0','1')` | Is the page visible[cite: 1] |
| `enabled` | `enum('0','1')` | Is the page enabled[cite: 1] |
| `club_only` | `enum('0','1')` | HC/VIP only[cite: 1] |
| `vip_only` | `enum('1','0')` | VIP only[cite: 1] |
| `page_headline` | `varchar(1024)` | Headline image/text key[cite: 1] |
| `page_teaser` | `varchar(64)` | Teaser image key[cite: 1] |
| `page_special` | `varchar(2048)` | Special layout data[cite: 1] |
| `page_text1` | `text` | Primary page text[cite: 1] |
| `page_text2` | `text` | Secondary page text[cite: 1] |
| `page_text_details` | `text` | Detail text[cite: 1] |
| `page_text_teaser` | `text` | Teaser text[cite: 1] |
| `room_id` | `int(11)` | Room ID (for room bundle pages)[cite: 1] |
| `includes` | `varchar(128)` | Semicolon separated page IDs to include[cite: 1] |
| `catalog_mode` | `enum('NORMAL','BUILDER','BOTH')` | Catalog mode[cite: 1] |
---
### `catalog_items`
## ✨ Features
Links items_base entries to catalog_pages with pricing and availability[cite: 1].
* **Rock-Solid Stability:** Enhanced core architecture ensures maximum uptime.
* **EPIC WEB CONTROL:** Fully compatible with advanced web control structures for effortless management.
* **Optimized Performance:** Fast loading times for large-scale item catalogues.
* **Clean UI/UX:** Designed to be easy on the eyes and lightweight to navigate.
| Column | Type | Description |
|--------|------|-------------|
| `id` | `int(11)` | Primary key[cite: 1] |
| `item_ids` | `varchar(666)` | Comma-separated items_base IDs[cite: 1] |
| `page_id` | `int(11)` | FK → catalog_pages.id[cite: 1] |
| `offer_id` | `int(11)` | Offer ID (`-1` = default)[cite: 1] |
| `song_id` | `int(10) unsigned` | Trax song ID[cite: 1] |
| `order_number` | `int(11)` | Sort order within the page[cite: 1] |
| `catalog_name` | `varchar(100)` | Catalog name / offer identifier[cite: 1] |
| `cost_credits` | `int(11)` | Credit cost[cite: 1] |
| `cost_points` | `int(11)` | Points/currency cost[cite: 1] |
| `points_type` | `int(11)` | 0 = duckets, 5 = diamonds, etc.[cite: 1] |
| `amount` | `int(11)` | Amount received per purchase[cite: 1] |
| `limited_sells` | `int(11)` | Auto-tracked sales count[cite: 1] |
| `limited_stack` | `int(11)` | Total limited quantity (0 = unlimited)[cite: 1] |
| `extradata` | `varchar(500)` | Extra data[cite: 1] |
| `badge` | `varchar(500)` | Badge code (AtomCMS extension)[cite: 1] |
| `have_offer` | `enum('0','1')` | Is the offer active[cite: 1] |
| `club_only` | `enum('0','1')` | HC/VIP only[cite: 1] |
| `rate` | `varchar(255)` | Rate info (AtomCMS extension)[cite: 1] |
---
## Compatibility Matrix
## 🛠️ Installation & Setup
### Emulator (Arcturus Morningstar Extended)
* `items_base`, `catalog_pages`, `catalog_items`: ✅ Full native. The emulator reads these directly via DAO[cite: 1].
### Nitro-V3 (React Client)
* Full native via emulator[cite: 1]. The client consumes data via `CatalogModeComposer` and `CatalogOfferComposer` protocol messages[cite: 1]. No direct DB access required[cite: 1].
### Nitro_Render_V3 (Renderer)
* `items_base` is compatible via client[cite: 1]. Renderer consumes FurnitureData.json[cite: 1].
## Reference Data
The `FullDatabase.sql` shipped with the emulator contains the **SQL Version 2 New** dataset[cite: 1]. It is in the final stages of completion; the structural integrity is verified and stable, with only minor aesthetic asset polish remaining[cite: 1].
## See Also
- `/var/www/emulator/Default Database/FullDatabase.sql` — Reference Database[cite: 1]
- `/var/www/atomcms/database/schema/mysql-schema.sql` — AtomCMS Schema[cite: 1]
- `/var/www/Nitro-V3/src/hooks/furni-editor/useFurniEditor.ts` — Client Furni Editor[cite: 1]
### Prerequisites
Make sure you have the following installed on your environment:
* PHP 8.1 or higher
* MySQL 8.0 or MariaDB equivalent
* A compatible web server (Apache / Nginx)
@@ -11,7 +11,7 @@
Target Server Version : 110808 (11.8.8-MariaDB-ubu2604)
File Encoding : 65001
Date: 14/06/2026 19:43:44
Date: 14/06/2026 20:39:42
*/
SET NAMES utf8mb4;
@@ -45,7 +45,7 @@ CREATE TABLE `catalog_items` (
INDEX `catalog_name`(`catalog_name` ASC) USING BTREE,
INDEX `costs`(`cost_credits` ASC, `cost_points` ASC, `points_type` ASC) USING BTREE,
INDEX `id`(`id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2000029897 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 2000029898 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of catalog_items
@@ -79763,5 +79763,6 @@ INSERT INTO `catalog_items` VALUES (2000029893, '2000029893', 9965912, 189702410
INSERT INTO `catalog_items` VALUES (2000029894, '2000029894', 9965914, 1612790338, 'trophy_fball_c26_wingedbronze', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029895, '2000029895', 9965914, 612652231, 'trophy_fball_c26_wingedgold', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029896, '2000029896', 9965914, 903737713, 'trophy_fball_c26_wingedsilver', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029897, '19001', 8, 19001, 'Frank', 0, 1, 0, 0, 0, 1, 0, 0, 'name:Frank;motto:Welcome to Habbo!;figure:hr-3499-33.sh-290-90.ch-3971-72-73.lg-270-73.hd-205-1-1.fa-1206-67.ha-3409-73-72;gender:m', NULL, '1', '0', NULL);
SET FOREIGN_KEY_CHECKS = 1;
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -11,7 +11,7 @@
Target Server Version : 110808 (11.8.8-MariaDB-ubu2604)
File Encoding : 65001
Date: 14/06/2026 19:43:44
Date: 14/06/2026 20:39:42
*/
SET NAMES utf8mb4;
@@ -45,7 +45,7 @@ CREATE TABLE `catalog_items` (
INDEX `catalog_name`(`catalog_name` ASC) USING BTREE,
INDEX `costs`(`cost_credits` ASC, `cost_points` ASC, `points_type` ASC) USING BTREE,
INDEX `id`(`id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2000029897 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 2000029898 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of catalog_items
@@ -79763,5 +79763,6 @@ INSERT INTO `catalog_items` VALUES (2000029893, '2000029893', 9965912, 189702410
INSERT INTO `catalog_items` VALUES (2000029894, '2000029894', 9965914, 1612790338, 'trophy_fball_c26_wingedbronze', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029895, '2000029895', 9965914, 612652231, 'trophy_fball_c26_wingedgold', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029896, '2000029896', 9965914, 903737713, 'trophy_fball_c26_wingedsilver', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029897, '19001', 8, 19001, 'Frank', 0, 1, 0, 0, 0, 1, 0, 0, 'name:Frank;motto:Welcome to Habbo!;figure:hr-3499-33.sh-290-90.ch-3971-72-73.lg-270-73.hd-205-1-1.fa-1206-67.ha-3409-73-72;gender:m', NULL, '1', '0', NULL);
SET FOREIGN_KEY_CHECKS = 1;
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -11,7 +11,7 @@
Target Server Version : 110808 (11.8.8-MariaDB-ubu2604)
File Encoding : 65001
Date: 14/06/2026 19:43:44
Date: 14/06/2026 20:39:42
*/
SET NAMES utf8mb4;
@@ -45,7 +45,7 @@ CREATE TABLE `catalog_items` (
INDEX `catalog_name`(`catalog_name` ASC) USING BTREE,
INDEX `costs`(`cost_credits` ASC, `cost_points` ASC, `points_type` ASC) USING BTREE,
INDEX `id`(`id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2000029897 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 2000029898 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of catalog_items
@@ -79763,5 +79763,6 @@ INSERT INTO `catalog_items` VALUES (2000029893, '2000029893', 9965912, 189702410
INSERT INTO `catalog_items` VALUES (2000029894, '2000029894', 9965914, 1612790338, 'trophy_fball_c26_wingedbronze', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029895, '2000029895', 9965914, 612652231, 'trophy_fball_c26_wingedgold', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029896, '2000029896', 9965914, 903737713, 'trophy_fball_c26_wingedsilver', 0, 99, 5, 0, 0, 1, 0, 0, '', NULL, '1', '0', NULL);
INSERT INTO `catalog_items` VALUES (2000029897, '19001', 8, 19001, 'Frank', 0, 1, 0, 0, 0, 1, 0, 0, 'name:Frank;motto:Welcome to Habbo!;figure:hr-3499-33.sh-290-90.ch-3971-72-73.lg-270-73.hd-205-1-1.fa-1206-67.ha-3409-73-72;gender:m', NULL, '1', '0', NULL);
SET FOREIGN_KEY_CHECKS = 1;
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff