You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
Merge remote-tracking branch 'duckie/main' into merge-duckie-main-2026-05-06
# Conflicts: # Database Updates/016_custom_prefixes_setup.sql # Database Updates/custom_nick_icons_setup.sql # Database Updates/remember_login_tokens.sql # Database Updates/wired_message_length_512.sql # Emulator/src/main/java/com/eu/habbo/habbohotel/GameEnvironment.java # Emulator/src/main/java/com/eu/habbo/messages/outgoing/rooms/users/RoomUserDataComposer.java # Emulator/src/main/java/com/eu/habbo/messages/outgoing/users/UserProfileComposer.java # Emulator/src/main/java/com/eu/habbo/networking/gameserver/WebSocketChannelInitializer.java # Emulator/src/main/java/com/eu/habbo/networking/gameserver/auth/AuthHttpHandler.java
This commit is contained in:
@@ -1,37 +1,3 @@
|
||||
-- =============================================================================
|
||||
-- Consolidated Database Updates - All-in-One
|
||||
-- =============================================================================
|
||||
-- This file combines ALL individual update scripts from SQL/Database Updates/
|
||||
-- into a single idempotent migration. Every statement is safe to re-run:
|
||||
-- - ALTER TABLE ADD COLUMN IF NOT EXISTS (MariaDB 10.0+)
|
||||
-- - ALTER TABLE CHANGE/MODIFY COLUMN IF EXISTS
|
||||
-- - CREATE TABLE IF NOT EXISTS
|
||||
-- - INSERT IGNORE / ON DUPLICATE KEY UPDATE for settings
|
||||
-- - TRUNCATE + re-insert for reference data (breeding)
|
||||
--
|
||||
-- Run order: This file FIRST, then 001_optimize_gameserver.sql
|
||||
--
|
||||
-- Source files (in applied order):
|
||||
-- 1. UpdateDatabase_Allow_diagonale.sql
|
||||
-- 2. UpdateDatabase_BOT.sql
|
||||
-- 3. UpdateDatabase_Banners.sql
|
||||
-- 4. UpdateDatabase_DanceCMD.sql
|
||||
-- 5. UpdateDatabase_Happiness.sql
|
||||
-- 6. UpdateDatabase_Websocket.sql
|
||||
-- 7. UpdateDatabase_unignorable.sql
|
||||
-- 8. Default_Camera.sql
|
||||
-- 9. 07012026_UpdateDatabase_to_4-0-1.sql
|
||||
-- 10. 09012026_UpdateDatabase_to_4-0-2.sql
|
||||
-- 11. 12012026_Battle Banzai.sql (same as #10, deduplicated)
|
||||
-- 12. 12012026_Breeding Fixes.sql
|
||||
-- 13. 12012026_ChatBubbles.sql
|
||||
-- 14. 16032026_updateall_command.sql
|
||||
-- 15. 17032026_allow_underpass.sql
|
||||
-- 16. 19032026_hotel_timezone.sql
|
||||
-- 17. 21022026_user_prefixes.sql
|
||||
-- 18. 06042026_builders_club_catalog_offers.sql
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
SET @OLD_SQL_MODE = @@SQL_MODE;
|
||||
@@ -512,8 +478,13 @@ ALTER TABLE `users_settings`
|
||||
ADD COLUMN IF NOT EXISTS `builders_club_bonus_furni` INT(11) NOT NULL DEFAULT 0 AFTER `hc_gifts_claimed`;
|
||||
|
||||
|
||||
INSERT INTO `permission_definitions` (`permission_key`, `max_value`, `comment`)
|
||||
VALUES ( 'acc_staff_chat', 1, 'Grants access to the in-game Staff Chat group buddy: receives broadcasts from other staff and can broadcast to anyone holding this permission.' )
|
||||
ON DUPLICATE KEY UPDATE `max_value` = VALUES(`max_value`), `comment` = VALUES(`comment`);
|
||||
|
||||
-- =============================================================================
|
||||
-- Done
|
||||
-- Done.
|
||||
-- =============================================================================
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
SET SQL_MODE = @OLD_SQL_MODE;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,28 @@
|
||||
-- Make sure that the emulator has write access to the badge_path folder !!!!!
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `users_custom_badge_settings` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`badge_path` varchar(255) NOT NULL DEFAULT '/var/www/gamedata/c_images/album1584',
|
||||
`badge_url` varchar(255) NOT NULL DEFAULT '/gamedata/c_images/album1584',
|
||||
`price_badge` int(11) NOT NULL DEFAULT 0,
|
||||
`currency_type` int(11) NOT NULL DEFAULT -1,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
|
||||
|
||||
INSERT INTO `users_custom_badge_settings` (`id`, `badge_path`, `badge_url`, `price_badge`, `currency_type`)
|
||||
SELECT 1, '/var/www/gamedata/c_images/album1584', '/gamedata/c_images/album1584', 50, 5
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `users_custom_badge_settings` WHERE `id` = 1);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `user_custom_badge` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL,
|
||||
`badge_id` varchar(64) NOT NULL,
|
||||
`badge_name` varchar(64) NOT NULL DEFAULT '',
|
||||
`badge_description` varchar(255) NOT NULL DEFAULT '',
|
||||
`date_created` int(11) NOT NULL DEFAULT 0,
|
||||
`date_edit` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `badge_id` (`badge_id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
CONSTRAINT `fk_user_custom_badge_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE `users` ADD COLUMN IF NOT EXISTS `background_card_id` INT(11) NOT NULL DEFAULT 0 AFTER `background_overlay_id`;
|
||||
@@ -0,0 +1,356 @@
|
||||
-- ============================================================
|
||||
-- Custom Prefix System - Complete Setup (safe upgrade version)
|
||||
-- ============================================================
|
||||
|
||||
-- Questo script è pensato per essere rieseguito senza errori
|
||||
-- anche se le tabelle esistono già con una struttura parziale.
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 1. Main user prefixes table
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `user_prefixes` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` INT(11) NOT NULL,
|
||||
`text` VARCHAR(50) NOT NULL,
|
||||
`color` VARCHAR(255) NOT NULL DEFAULT '#FFFFFF',
|
||||
`icon` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
`effect` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
`font` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
`catalog_prefix_id` INT(11) NOT NULL DEFAULT 0,
|
||||
`display_name` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`points` INT(11) NOT NULL DEFAULT 0,
|
||||
`points_type` INT(11) NOT NULL DEFAULT 0,
|
||||
`is_custom` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`active` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_user_id` (`user_id`),
|
||||
INDEX `idx_user_active` (`user_id`, `active`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 2. Catalog table
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `custom_prefixes_catalog` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`display_name` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`text` VARCHAR(50) NOT NULL,
|
||||
`color` VARCHAR(255) NOT NULL DEFAULT '#FFFFFF',
|
||||
`icon` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
`effect` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
`font` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
`points` INT(11) NOT NULL DEFAULT 0,
|
||||
`points_type` INT(11) NOT NULL DEFAULT 0,
|
||||
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`sort_order` INT(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 3. User visual settings
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `user_visual_settings` (
|
||||
`user_id` INT(11) NOT NULL,
|
||||
`display_order` VARCHAR(50) NOT NULL DEFAULT 'icon-prefix-name',
|
||||
PRIMARY KEY (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 4. Prefix settings table
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `custom_prefix_settings` (
|
||||
`key_name` VARCHAR(100) NOT NULL,
|
||||
`value` VARCHAR(255) NOT NULL,
|
||||
PRIMARY KEY (`key_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 5. Blacklist table
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `custom_prefix_blacklist` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`word` VARCHAR(100) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_word` (`word`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ============================================================
|
||||
-- Schema upgrades for existing installations
|
||||
-- ============================================================
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- user_prefixes: add missing columns safely
|
||||
-- ------------------------------------------------------------
|
||||
|
||||
SET @dbname = DATABASE();
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'user_prefixes'
|
||||
AND COLUMN_NAME = 'font'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `user_prefixes` ADD COLUMN `font` VARCHAR(50) NOT NULL DEFAULT '''' AFTER `effect`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'user_prefixes'
|
||||
AND COLUMN_NAME = 'catalog_prefix_id'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `user_prefixes` ADD COLUMN `catalog_prefix_id` INT(11) NOT NULL DEFAULT 0 AFTER `font`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'user_prefixes'
|
||||
AND COLUMN_NAME = 'display_name'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `user_prefixes` ADD COLUMN `display_name` VARCHAR(100) NOT NULL DEFAULT '''' AFTER `catalog_prefix_id`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'user_prefixes'
|
||||
AND COLUMN_NAME = 'points'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `user_prefixes` ADD COLUMN `points` INT(11) NOT NULL DEFAULT 0 AFTER `display_name`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'user_prefixes'
|
||||
AND COLUMN_NAME = 'points_type'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `user_prefixes` ADD COLUMN `points_type` INT(11) NOT NULL DEFAULT 0 AFTER `points`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'user_prefixes'
|
||||
AND COLUMN_NAME = 'is_custom'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `user_prefixes` ADD COLUMN `is_custom` TINYINT(1) NOT NULL DEFAULT 1 AFTER `points_type`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- custom_prefixes_catalog: add missing columns safely
|
||||
-- ------------------------------------------------------------
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'custom_prefixes_catalog'
|
||||
AND COLUMN_NAME = 'font'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `custom_prefixes_catalog` ADD COLUMN `font` VARCHAR(50) NOT NULL DEFAULT '''' AFTER `effect`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'custom_prefixes_catalog'
|
||||
AND COLUMN_NAME = 'points'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `custom_prefixes_catalog` ADD COLUMN `points` INT(11) NOT NULL DEFAULT 0 AFTER `font`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'custom_prefixes_catalog'
|
||||
AND COLUMN_NAME = 'points_type'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `custom_prefixes_catalog` ADD COLUMN `points_type` INT(11) NOT NULL DEFAULT 0 AFTER `points`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'custom_prefixes_catalog'
|
||||
AND COLUMN_NAME = 'enabled'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `custom_prefixes_catalog` ADD COLUMN `enabled` TINYINT(1) NOT NULL DEFAULT 1 AFTER `points_type`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname
|
||||
AND TABLE_NAME = 'custom_prefixes_catalog'
|
||||
AND COLUMN_NAME = 'sort_order'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `custom_prefixes_catalog` ADD COLUMN `sort_order` INT(11) NOT NULL DEFAULT 0 AFTER `enabled`'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ============================================================
|
||||
-- Default settings
|
||||
-- ============================================================
|
||||
INSERT IGNORE INTO `custom_prefix_settings` (`key_name`, `value`) VALUES
|
||||
('max_length', '15'),
|
||||
('min_rank_to_buy', '1'),
|
||||
('price_credits', '5'),
|
||||
('price_points', '0'),
|
||||
('points_type', '0'),
|
||||
('font_price_credits', '10'),
|
||||
('font_price_points', '0'),
|
||||
('font_points_type', '0');
|
||||
|
||||
-- ============================================================
|
||||
-- Default catalog entries
|
||||
-- ============================================================
|
||||
INSERT IGNORE INTO `custom_prefixes_catalog`
|
||||
(`id`, `display_name`, `text`, `color`, `icon`, `effect`, `font`, `points`, `points_type`, `enabled`, `sort_order`) VALUES
|
||||
(1, 'VIP', 'VIP', '#FFD700', '', 'glow', '', 10, 0, 1, 1),
|
||||
(2, 'Legend', 'Legend', '#8B5CF6', '', 'discord-neon', '', 15, 0, 1, 2),
|
||||
(3, 'Staff Pick', 'Staff', '#3B82F6', '*', 'cartoon', '', 20, 0, 1, 3);
|
||||
|
||||
-- ============================================================
|
||||
-- Example blacklist entries
|
||||
-- ============================================================
|
||||
INSERT IGNORE INTO `custom_prefix_blacklist` (`word`) VALUES
|
||||
('admin'),
|
||||
('staff'),
|
||||
('mod'),
|
||||
('owner');
|
||||
|
||||
-- ============================================================
|
||||
-- Notes
|
||||
-- ============================================================
|
||||
-- Preset prefixes for `:customize` are loaded directly by
|
||||
-- UserNickIconsComposer and displayed inside the `:customize` panel.
|
||||
--
|
||||
-- This setup does not require rows in `catalog_pages`.
|
||||
--
|
||||
-- Command texts / permission inserts are intentionally omitted
|
||||
-- for compatibility with both legacy and normalized permission schemas.
|
||||
|
||||
INSERT IGNORE INTO `emulator_texts` (`key`, `value`) VALUES
|
||||
-- GivePrefix command
|
||||
('commands.keys.cmd_give_prefix', 'giveprefix'),
|
||||
('commands.error.cmd_give_prefix.usage', 'Usage: :giveprefix <username> <text> <color> [icon] [effect]'),
|
||||
('commands.error.cmd_give_prefix.invalid_color', 'Invalid color format. Use hex format (#FF0000).'),
|
||||
('commands.error.cmd_give_prefix.too_long', 'Prefix text is too long (max 15 characters).'),
|
||||
('commands.error.cmd_give_prefix.user_not_found', 'User not found or not online.'),
|
||||
('commands.succes.cmd_give_prefix', 'Prefix {%prefix%} successfully given to %user%!'),
|
||||
-- ListPrefixes command
|
||||
('commands.keys.cmd_list_prefixes', 'listprefixes'),
|
||||
('commands.error.cmd_list_prefixes.usage', 'Usage: :listprefixes <username>'),
|
||||
('commands.error.cmd_list_prefixes.user_not_found', 'User not found or not online.'),
|
||||
('commands.succes.cmd_list_prefixes.header', 'Prefixes of %user%:'),
|
||||
('commands.succes.cmd_list_prefixes.empty', '%user% has no prefixes.'),
|
||||
-- RemovePrefix command
|
||||
('commands.keys.cmd_remove_prefix', 'removeprefix'),
|
||||
('commands.error.cmd_remove_prefix.usage', 'Usage: :removeprefix <username> <id|all>'),
|
||||
('commands.error.cmd_remove_prefix.user_not_found', 'User not found or not online.'),
|
||||
('commands.error.cmd_remove_prefix.invalid_id', 'Invalid prefix ID. Must be a number or "all".'),
|
||||
('commands.error.cmd_remove_prefix.not_found', 'Prefix not found for this user.'),
|
||||
('commands.succes.cmd_remove_prefix', 'Prefix #%id% removed from %user%.'),
|
||||
('commands.succes.cmd_remove_prefix.all', 'All prefixes removed from %user%.'),
|
||||
-- PrefixBlacklist command
|
||||
('commands.keys.cmd_prefix_blacklist', 'prefixblacklist'),
|
||||
('commands.error.cmd_prefix_blacklist.usage', 'Usage: :prefixblacklist <add|remove|list> [word]'),
|
||||
('commands.error.cmd_prefix_blacklist.empty_word', 'Word cannot be empty.'),
|
||||
('commands.succes.cmd_prefix_blacklist.header', 'Blacklisted prefix words:'),
|
||||
('commands.succes.cmd_prefix_blacklist.empty', 'No blacklisted words.'),
|
||||
('commands.succes.cmd_prefix_blacklist.added', 'Word "%word%" added to prefix blacklist.'),
|
||||
('commands.succes.cmd_prefix_blacklist.removed', 'Word "%word%" removed from prefix blacklist.');
|
||||
|
||||
INSERT IGNORE INTO permission_definitions
|
||||
(permission_key, max_value, rank_1, rank_2, rank_3, rank_4, rank_5, rank_6, rank_7)
|
||||
VALUES
|
||||
('cmd_give_prefix', '1', '0', '0', '0', '0', '0', '0', '1'),
|
||||
('cmd_list_prefixes', '1', '0', '0', '0', '0', '0', '0', '1'),
|
||||
('cmd_remove_prefix', '1', '0', '0', '0', '0', '0', '0', '1'),
|
||||
('cmd_prefix_blacklist', '1', '0', '0', '0', '0', '0', '0', '1');
|
||||
@@ -0,0 +1,244 @@
|
||||
CREATE TABLE IF NOT EXISTS `infostand_backgrounds` (
|
||||
`id` int(11) NOT NULL,
|
||||
`category` enum('background','stand','overlay','card') NOT NULL,
|
||||
`min_rank` int(11) NOT NULL DEFAULT 0,
|
||||
`is_hc_only` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`is_ambassador_only` tinyint(1) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`,`category`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
|
||||
|
||||
INSERT INTO `infostand_backgrounds` (`id`, `category`, `min_rank`, `is_hc_only`, `is_ambassador_only`) VALUES
|
||||
(0, 'background', 0, 0, 0),
|
||||
(1, 'background', 0, 0, 0),
|
||||
(2, 'background', 0, 0, 0),
|
||||
(3, 'background', 0, 0, 0),
|
||||
(4, 'background', 0, 0, 0),
|
||||
(5, 'background', 0, 0, 0),
|
||||
(6, 'background', 0, 0, 0),
|
||||
(7, 'background', 0, 0, 0),
|
||||
(8, 'background', 0, 0, 0),
|
||||
(9, 'background', 0, 0, 0),
|
||||
(10, 'background', 0, 0, 0),
|
||||
(11, 'background', 0, 0, 0),
|
||||
(12, 'background', 0, 0, 0),
|
||||
(13, 'background', 0, 0, 0),
|
||||
(14, 'background', 0, 0, 0),
|
||||
(15, 'background', 0, 0, 0),
|
||||
(16, 'background', 0, 0, 0),
|
||||
(17, 'background', 0, 0, 0),
|
||||
(18, 'background', 0, 0, 0),
|
||||
(19, 'background', 0, 0, 0),
|
||||
(20, 'background', 0, 0, 0),
|
||||
(21, 'background', 0, 0, 0),
|
||||
(22, 'background', 0, 0, 0),
|
||||
(23, 'background', 0, 0, 0),
|
||||
(24, 'background', 0, 0, 0),
|
||||
(25, 'background', 0, 0, 0),
|
||||
(26, 'background', 0, 0, 0),
|
||||
(27, 'background', 0, 0, 0),
|
||||
(28, 'background', 0, 0, 0),
|
||||
(29, 'background', 0, 0, 0),
|
||||
(30, 'background', 0, 0, 0),
|
||||
(31, 'background', 0, 0, 0),
|
||||
(32, 'background', 0, 0, 0),
|
||||
(33, 'background', 0, 0, 0),
|
||||
(34, 'background', 0, 0, 0),
|
||||
(35, 'background', 0, 0, 0),
|
||||
(36, 'background', 0, 0, 0),
|
||||
(37, 'background', 0, 0, 0),
|
||||
(38, 'background', 0, 0, 0),
|
||||
(39, 'background', 0, 0, 0),
|
||||
(40, 'background', 0, 0, 0),
|
||||
(41, 'background', 0, 0, 0),
|
||||
(42, 'background', 0, 1, 0),
|
||||
(43, 'background', 0, 1, 0),
|
||||
(44, 'background', 0, 1, 0),
|
||||
(45, 'background', 0, 1, 0),
|
||||
(46, 'background', 0, 1, 0),
|
||||
(47, 'background', 0, 1, 0),
|
||||
(48, 'background', 0, 1, 0),
|
||||
(49, 'background', 0, 1, 0),
|
||||
(50, 'background', 0, 1, 0),
|
||||
(51, 'background', 0, 1, 0),
|
||||
(52, 'background', 0, 1, 0),
|
||||
(53, 'background', 0, 1, 0),
|
||||
(54, 'background', 0, 1, 0),
|
||||
(55, 'background', 0, 1, 0),
|
||||
(56, 'background', 0, 1, 0),
|
||||
(57, 'background', 0, 1, 0),
|
||||
(58, 'background', 0, 1, 0),
|
||||
(59, 'background', 0, 1, 0),
|
||||
(60, 'background', 0, 1, 0),
|
||||
(61, 'background', 0, 1, 0),
|
||||
(62, 'background', 0, 1, 0),
|
||||
(63, 'background', 0, 1, 0),
|
||||
(64, 'background', 0, 1, 0),
|
||||
(65, 'background', 0, 1, 0),
|
||||
(66, 'background', 0, 1, 0),
|
||||
(67, 'background', 0, 1, 0),
|
||||
(68, 'background', 0, 1, 0),
|
||||
(69, 'background', 0, 1, 0),
|
||||
(70, 'background', 0, 1, 0),
|
||||
(71, 'background', 0, 1, 0),
|
||||
(72, 'background', 0, 1, 0),
|
||||
(73, 'background', 0, 1, 0),
|
||||
(74, 'background', 0, 1, 0),
|
||||
(75, 'background', 0, 1, 0),
|
||||
(76, 'background', 0, 1, 0),
|
||||
(77, 'background', 0, 1, 0),
|
||||
(78, 'background', 0, 1, 0),
|
||||
(79, 'background', 0, 1, 0),
|
||||
(80, 'background', 0, 1, 0),
|
||||
(81, 'background', 0, 1, 0),
|
||||
(82, 'background', 0, 1, 0),
|
||||
(83, 'background', 0, 1, 0),
|
||||
(84, 'background', 0, 1, 0),
|
||||
(85, 'background', 0, 1, 0),
|
||||
(86, 'background', 0, 1, 0),
|
||||
(87, 'background', 0, 1, 0),
|
||||
(88, 'background', 0, 1, 0),
|
||||
(89, 'background', 0, 1, 0),
|
||||
(90, 'background', 0, 1, 0),
|
||||
(91, 'background', 0, 1, 0),
|
||||
(92, 'background', 0, 1, 0),
|
||||
(93, 'background', 0, 1, 0),
|
||||
(94, 'background', 0, 1, 0),
|
||||
(95, 'background', 0, 1, 0),
|
||||
(96, 'background', 0, 1, 0),
|
||||
(97, 'background', 0, 1, 0),
|
||||
(98, 'background', 0, 1, 0),
|
||||
(99, 'background', 0, 1, 0),
|
||||
(100, 'background', 0, 1, 0),
|
||||
(101, 'background', 2, 0, 0),
|
||||
(102, 'background', 0, 1, 0),
|
||||
(103, 'background', 0, 1, 0),
|
||||
(104, 'background', 0, 1, 0),
|
||||
(105, 'background', 0, 1, 0),
|
||||
(106, 'background', 0, 1, 0),
|
||||
(107, 'background', 0, 1, 0),
|
||||
(108, 'background', 0, 1, 0),
|
||||
(109, 'background', 0, 1, 0),
|
||||
(110, 'background', 0, 1, 0),
|
||||
(111, 'background', 0, 1, 0),
|
||||
(112, 'background', 0, 1, 0),
|
||||
(113, 'background', 0, 1, 0),
|
||||
(114, 'background', 0, 1, 0),
|
||||
(115, 'background', 0, 1, 0),
|
||||
(116, 'background', 0, 1, 0),
|
||||
(117, 'background', 0, 1, 0),
|
||||
(118, 'background', 0, 1, 0),
|
||||
(119, 'background', 0, 1, 0),
|
||||
(120, 'background', 0, 1, 0),
|
||||
(121, 'background', 0, 1, 0),
|
||||
(122, 'background', 0, 1, 0),
|
||||
(123, 'background', 0, 1, 0),
|
||||
(124, 'background', 0, 1, 0),
|
||||
(125, 'background', 0, 1, 0),
|
||||
(126, 'background', 0, 1, 0),
|
||||
(127, 'background', 0, 1, 0),
|
||||
(128, 'background', 0, 1, 0),
|
||||
(129, 'background', 0, 1, 0),
|
||||
(130, 'background', 0, 1, 0),
|
||||
(131, 'background', 0, 1, 0),
|
||||
(132, 'background', 0, 1, 0),
|
||||
(133, 'background', 0, 1, 0),
|
||||
(134, 'background', 0, 1, 0),
|
||||
(135, 'background', 0, 1, 0),
|
||||
(136, 'background', 0, 1, 0),
|
||||
(137, 'background', 0, 1, 0),
|
||||
(138, 'background', 0, 1, 0),
|
||||
(139, 'background', 0, 1, 0),
|
||||
(140, 'background', 0, 1, 0),
|
||||
(141, 'background', 0, 1, 0),
|
||||
(142, 'background', 0, 1, 0),
|
||||
(143, 'background', 0, 1, 0),
|
||||
(144, 'background', 0, 1, 0),
|
||||
(145, 'background', 0, 1, 0),
|
||||
(146, 'background', 0, 1, 0),
|
||||
(147, 'background', 0, 1, 0),
|
||||
(148, 'background', 0, 1, 0),
|
||||
(149, 'background', 0, 1, 0),
|
||||
(150, 'background', 0, 1, 0),
|
||||
(151, 'background', 0, 1, 0),
|
||||
(152, 'background', 0, 1, 0),
|
||||
(153, 'background', 0, 1, 0),
|
||||
(154, 'background', 0, 1, 0),
|
||||
(155, 'background', 0, 1, 0),
|
||||
(156, 'background', 0, 1, 0),
|
||||
(157, 'background', 0, 1, 0),
|
||||
(158, 'background', 0, 1, 0),
|
||||
(159, 'background', 0, 1, 0),
|
||||
(160, 'background', 0, 1, 0),
|
||||
(161, 'background', 0, 1, 0),
|
||||
(162, 'background', 0, 1, 0),
|
||||
(163, 'background', 0, 1, 0),
|
||||
(164, 'background', 0, 1, 0),
|
||||
(165, 'background', 0, 1, 0),
|
||||
(166, 'background', 0, 1, 0),
|
||||
(167, 'background', 0, 1, 0),
|
||||
(168, 'background', 0, 1, 0),
|
||||
(169, 'background', 0, 1, 0),
|
||||
(170, 'background', 0, 1, 0),
|
||||
(171, 'background', 0, 1, 0),
|
||||
(172, 'background', 0, 1, 0),
|
||||
(173, 'background', 0, 1, 0),
|
||||
(174, 'background', 0, 1, 0),
|
||||
(175, 'background', 0, 1, 0),
|
||||
(176, 'background', 0, 1, 0),
|
||||
(177, 'background', 0, 1, 0),
|
||||
(178, 'background', 0, 1, 0),
|
||||
(179, 'background', 0, 1, 0),
|
||||
(180, 'background', 0, 1, 0),
|
||||
(181, 'background', 0, 1, 0),
|
||||
(182, 'background', 0, 1, 0),
|
||||
(183, 'background', 0, 1, 0),
|
||||
(184, 'background', 0, 1, 0),
|
||||
(185, 'background', 0, 1, 0),
|
||||
(186, 'background', 0, 1, 0),
|
||||
(187, 'background', 0, 1, 0),
|
||||
(0, 'stand', 0, 0, 0),
|
||||
(1, 'stand', 0, 0, 0),
|
||||
(2, 'stand', 0, 0, 0),
|
||||
(3, 'stand', 0, 0, 0),
|
||||
(4, 'stand', 0, 0, 0),
|
||||
(5, 'stand', 0, 0, 0),
|
||||
(6, 'stand', 0, 0, 0),
|
||||
(7, 'stand', 0, 0, 0),
|
||||
(8, 'stand', 0, 0, 0),
|
||||
(9, 'stand', 0, 0, 0),
|
||||
(10, 'stand', 0, 0, 0),
|
||||
(11, 'stand', 0, 0, 0),
|
||||
(12, 'stand', 0, 0, 0),
|
||||
(13, 'stand', 0, 0, 0),
|
||||
(14, 'stand', 0, 0, 0),
|
||||
(15, 'stand', 0, 0, 0),
|
||||
(16, 'stand', 0, 1, 0),
|
||||
(17, 'stand', 0, 1, 0),
|
||||
(18, 'stand', 0, 1, 0),
|
||||
(19, 'stand', 0, 1, 0),
|
||||
(20, 'stand', 0, 1, 0),
|
||||
(21, 'stand', 0, 1, 0),
|
||||
(0, 'overlay', 0, 0, 0),
|
||||
(1, 'overlay', 0, 0, 0),
|
||||
(2, 'overlay', 0, 1, 0),
|
||||
(3, 'overlay', 0, 1, 0),
|
||||
(4, 'overlay', 0, 1, 0),
|
||||
(5, 'overlay', 0, 1, 0),
|
||||
(6, 'overlay', 0, 1, 0),
|
||||
(7, 'overlay', 0, 1, 0),
|
||||
(8, 'overlay', 0, 1, 0),
|
||||
(1, 'card', 0, 0, 0),
|
||||
(2, 'card', 0, 0, 0),
|
||||
(3, 'card', 0, 0, 0),
|
||||
(4, 'card', 0, 0, 0),
|
||||
(5, 'card', 0, 0, 0),
|
||||
(6, 'card', 0, 0, 0),
|
||||
(7, 'card', 0, 0, 0),
|
||||
(8, 'card', 0, 0, 0),
|
||||
(9, 'card', 0, 0, 0),
|
||||
(10, 'card', 0, 0, 0),
|
||||
(11, 'card', 0, 0, 0),
|
||||
(12, 'card', 0, 0, 0),
|
||||
(13, 'card', 0, 0, 0),
|
||||
(14, 'card', 0, 0, 0),
|
||||
(15, 'card', 0, 0, 0);
|
||||
@@ -0,0 +1,36 @@
|
||||
-- ============================================================
|
||||
-- Nick Icon Customization Setup
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `custom_nick_icons_catalog` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`icon_key` VARCHAR(50) NOT NULL,
|
||||
`display_name` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`points` INT(11) NOT NULL DEFAULT 0,
|
||||
`points_type` INT(11) NOT NULL DEFAULT 0,
|
||||
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`sort_order` INT(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_icon_key` (`icon_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `user_nick_icons` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` INT(11) NOT NULL,
|
||||
`icon_key` VARCHAR(50) NOT NULL,
|
||||
`active` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_icon` (`user_id`, `icon_key`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_user_active` (`user_id`, `active`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT IGNORE INTO `custom_nick_icons_catalog` (`icon_key`, `display_name`, `points`, `points_type`, `enabled`, `sort_order`) VALUES
|
||||
('1', 'Icon 1', 10, 0, 1, 1),
|
||||
('2', 'Icon 2', 10, 0, 1, 2),
|
||||
('3', 'Icon 3', 10, 0, 1, 3),
|
||||
('4', 'Icon 4', 10, 0, 1, 4),
|
||||
('5', 'Icon 5', 10, 0, 1, 5),
|
||||
('6', 'Icon 6', 10, 0, 1, 6);
|
||||
ALTER TABLE `custom_nick_icons_catalog`
|
||||
ADD COLUMN IF NOT EXISTS `display_name` VARCHAR(100) NOT NULL DEFAULT '' AFTER `icon_key`;
|
||||
@@ -0,0 +1,8 @@
|
||||
ALTER TABLE `users`
|
||||
ADD COLUMN IF NOT EXISTS `remember_token_hash` VARCHAR(64) NOT NULL DEFAULT '' AFTER `auth_ticket`;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD COLUMN IF NOT EXISTS `remember_token_expires_at` INT(11) UNSIGNED NOT NULL DEFAULT 0 AFTER `remember_token_hash`;
|
||||
|
||||
ALTER TABLE `users`
|
||||
ADD INDEX IF NOT EXISTS `idx_users_remember_token_hash` (`remember_token_hash`);
|
||||
@@ -0,0 +1,3 @@
|
||||
INSERT INTO `wired_emulator_settings` (`key`, `value`, `comment`)
|
||||
VALUES ('hotel.wired.message.max_length', '512', 'Maximum length of text fields used by wired messages and bot text effects.')
|
||||
ON DUPLICATE KEY UPDATE `value` = '512';
|
||||
Reference in New Issue
Block a user