-- -------------------------------------------------------- -- Host: 127.0.0.1 -- Server version: 8.0.30 - MySQL Community Server - GPL -- Server OS: Win64 -- HeidiSQL Version: 12.3.0.6589 -- -------------------------------------------------------- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 */; /*!50503 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- Dumping structure for table store.store_categories CREATE TABLE IF NOT EXISTS `store_categories` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, `requiredRank` int DEFAULT NULL, `flags` int unsigned NOT NULL DEFAULT '0', `enabled` int unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- Dumping data for table store.store_categories: ~9 rows (approximately) INSERT INTO `store_categories` (`id`, `name`, `icon`, `requiredRank`, `flags`, `enabled`) VALUES (1, 'Рекомендуем', 'inv_helmet_96', 0, 2, 1), (2, 'Титулы', 'inv_scroll_11', 0, 0, 1), (3, 'Предметы', 'ability_warrior_challange', 0, 0, 1), (4, 'Транспорт и питомцы', 'inv_box_petcarrier_01', 0, 0, 1), (5, 'Усиления', 'spell_holy_surgeoflight', 0, 0, 1), (6, 'Услуги', 'vas_charactertransfer', 0, 0, 1), (7, 'Эффекты', 'spell_holy_holynova', 0, 0, 1), (8, 'Распродажа', 'inv_misc_toy_07', 0, 1, 1), (9, 'VIP', 'inv_misc_note_03', 4, 0, 1); UPDATE `store_categories` SET `name` = CASE `id` WHEN 1 THEN 'Рекомендуем' WHEN 2 THEN 'Титулы' WHEN 3 THEN 'Предметы' WHEN 4 THEN 'Транспорт и питомцы' WHEN 5 THEN 'Усиления' WHEN 6 THEN 'Услуги' WHEN 7 THEN 'Эффекты' WHEN 8 THEN 'Распродажа' WHEN 9 THEN 'VIP' ELSE `name` END WHERE `id` BETWEEN 1 AND 9; -- Dumping structure for table store.store_category_service_link CREATE TABLE IF NOT EXISTS `store_category_service_link` ( `category` int unsigned NOT NULL, `service` int unsigned NOT NULL, PRIMARY KEY (`category`,`service`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- Dumping data for table store.store_category_service_link: ~14 rows (approximately) INSERT INTO `store_category_service_link` (`category`, `service`) VALUES (2, 16), (3, 5), (3, 12), (3, 18), (4, 8), (4, 13), (5, 1), (5, 14), (5, 17), (6, 2), (6, 3), (6, 4), (7, 15); -- Dumping structure for table store.store_currencies CREATE TABLE IF NOT EXISTS `store_currencies` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `type` int unsigned NOT NULL DEFAULT '1', `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', `data` int NOT NULL DEFAULT '0', `tooltip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- Dumping data for table store.store_currencies: ~2 rows (approximately) INSERT INTO `store_currencies` (`id`, `type`, `name`, `icon`, `data`, `tooltip`) VALUES (1, 3, 'Баланс', 'Gold', 0, 'Баланс учётной записи на сайте.'); -- The website account balance is the only in-game store currency. These -- statements also migrate databases bootstrapped by an older Store.sql. UPDATE `store_currencies` SET `type` = 3, `name` = 'Баланс', `icon` = 'Gold', `data` = 0, `tooltip` = 'Баланс учётной записи на сайте.' WHERE `id` = 1; DELETE FROM `store_currencies` WHERE `id` <> 1; -- Dumping structure for table store.store_logs CREATE TABLE IF NOT EXISTS `store_logs` ( `account` int DEFAULT NULL, `guid` int DEFAULT NULL, `serviceId` int DEFAULT NULL, `currencyId` int DEFAULT NULL, `cost` int DEFAULT NULL, `time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- Dumping data for table store.store_logs: ~29 rows (approximately) INSERT INTO `store_logs` (`account`, `guid`, `serviceId`, `currencyId`, `cost`, `time`) VALUES (1, 1, 12, 1, 10, '2023-04-07 03:03:06'), (1, 1, 12, 1, 5, '2023-04-07 03:04:23'), (1, 1, 13, 1, 10, '2023-04-07 03:20:42'), (1, 1, 8, 1, 30, '2023-04-07 03:25:36'), (1, 1, 12, 2, 5, '2023-04-07 20:04:22'), (1, 1, 12, 2, 5, '2023-04-07 20:07:47'), (1, 1, 12, 2, 5, '2023-04-07 20:07:50'), (1, 1, 12, 2, 5, '2023-04-07 20:10:04'), (1, 1, 12, 2, 5, '2023-04-07 20:21:48'), (1, 1, 12, 2, 5, '2023-04-07 20:22:01'), (1, 1, 12, 2, 5, '2023-04-07 20:22:38'), (1, 1, 12, 2, 5, '2023-04-07 20:23:45'), (1, 1, 12, 2, 5, '2023-04-07 20:26:19'), (1, 1, 13, 1, 10, '2023-04-08 01:14:35'), (1, 1, 1, 1, 10, '2023-04-08 01:22:52'), (1, 1, 1, 1, 10, '2023-04-08 01:24:07'), (1, 1, 1, 1, 10, '2023-04-08 01:25:51'), (1, 1, 4, 1, 5, '2023-04-08 01:35:36'), (1, 1, 16, 1, 10, '2023-04-08 01:41:41'), (1, 1, 16, 1, 10, '2023-04-08 01:44:49'), (1, 1, 5, 1, 10, '2023-04-08 04:45:17'), (1, 1, 1, 1, 10, '2023-04-08 19:50:20'), (1, 1, 1, 1, 10, '2023-04-08 19:51:13'), (1, 1, 12, 1, 5, '2023-04-08 19:52:20'), (1, 1, 12, 1, 5, '2023-04-08 19:55:03'), (1, 1, 12, 1, 5, '2023-04-08 22:23:33'), (1, 1, 12, 1, 5, '2023-04-08 23:19:16'), (1, 1, 1, 1, 10, '2023-04-09 02:02:07'), (1, 1, 1, 2, 10, '2023-04-09 02:06:11'), (1, 1, 5, 1, 10, '2023-04-09 02:34:41'), (1, 1, 15, 1, 1, '2023-04-09 03:01:37'), (1, 1, 18, 1, 50, '2023-04-09 03:29:32'); -- Dumping structure for table store.store_services CREATE TABLE IF NOT EXISTS `store_services` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `type` int unsigned DEFAULT NULL, `name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, `tooltipName` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, `tooltipType` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `tooltipText` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, `icon` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `price` int DEFAULT NULL, `currency` int DEFAULT NULL, `hyperlinkId` int DEFAULT NULL, `creatureEntry` int DEFAULT NULL, `discountAmount` int DEFAULT NULL, `flags` int DEFAULT NULL, `reward_1` int unsigned DEFAULT NULL, `reward_2` int unsigned DEFAULT NULL, `reward_3` int unsigned DEFAULT NULL, `reward_4` int unsigned DEFAULT NULL, `reward_5` int unsigned DEFAULT NULL, `reward_6` int unsigned DEFAULT NULL, `reward_7` int unsigned DEFAULT NULL, `reward_8` int unsigned DEFAULT NULL, `rewardcount_1` int unsigned DEFAULT NULL, `rewardcount_2` int unsigned DEFAULT NULL, `rewardcount_3` int unsigned DEFAULT NULL, `rewardcount_4` int unsigned DEFAULT NULL, `rewardcount_5` int unsigned DEFAULT NULL, `rewardcount_6` int unsigned DEFAULT NULL, `rewardcount_7` int unsigned DEFAULT NULL, `rewardcount_8` int unsigned DEFAULT NULL, `new` int unsigned NOT NULL DEFAULT '0', `enabled` int unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- Dumping data for table store.store_services: ~13 rows (approximately) INSERT INTO `store_services` (`id`, `type`, `name`, `tooltipName`, `tooltipType`, `tooltipText`, `icon`, `price`, `currency`, `hyperlinkId`, `creatureEntry`, `discountAmount`, `flags`, `reward_1`, `reward_2`, `reward_3`, `reward_4`, `reward_5`, `reward_6`, `reward_7`, `reward_8`, `rewardcount_1`, `rewardcount_2`, `rewardcount_3`, `rewardcount_4`, `rewardcount_5`, `rewardcount_6`, `rewardcount_7`, `rewardcount_8`, `new`, `enabled`) VALUES (1, 8, 'Повышение уровня\r\n+10 уровней', 'Повышение уровня', '', 'Повышает уровень персонажа на 10.', 'achievement_level_10', 10, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (2, 7, 'Смена фракции', 'Смена фракции', '', 'Позволяет сменить фракцию персонажа. Станет доступно после повторного входа.', 'vas_factionchange', 5, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (3, 7, 'Смена расы', 'Смена расы', '', 'Позволяет сменить расу персонажа. Станет доступно после повторного входа.', 'vas_racechange', 10, 1, 0, 0, 5, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (4, 7, 'Смена имени', 'Смена имени', '', 'Позволяет сменить имя персонажа. Станет доступно после повторного входа.', 'vas_namechange', 5, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (5, 1, 'Игрушечный меч\r\n(двуручный)', '', 'item', '|cff00FFFFНажмите для предпросмотра|r', 'inv_sword_22', 10, 1, 45061, 45061, 0, 1, 45061, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1), (8, 3, 'Стремительный призрачный тигр\r\n(транспорт)', '', 'spell', '|cff00FFFFНажмите для предпросмотра|r', 'ability_mount_spectraltiger', 30, 1, 42777, 24004, 0, 0, 42777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1), (12, 1, 'Эпическая лиловая рубашка', '', 'item', '|cff00FFFFНажмите для предпросмотра|r', 'inv_shirt_purple_01', 10, 1, 45037, 45037, 5, 1, 45037, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1), (13, 4, 'Луговая курица\r\n(питомец)', '', 'spell', '|cff00FFFFНажмите для предпросмотра|r', 'spell_magic_polymorphchicken', 10, 1, 10686, 7392, 0, 0, 10686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (14, 8, 'Повышение уровня\r\n+20 уровней', 'Повышение уровня', '', 'Повышает уровень персонажа на 20.', 'achievement_level_20', 20, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (15, 5, 'Эффект\r\nБлагословение могущества', 'Эффект', '', 'Накладывает Благословение могущества.', 'spell_holy_fistofjustice', 1, 1, 0, 0, 0, 0, 27140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (16, 9, 'Титул\r\nЗащитник Наару', 'Титул', '', 'Открывает титул «Защитник Наару».', 'inv_mace_51', 10, 1, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1), (17, 8, 'Повышение до 60-го уровня', 'Повышение уровня', '', 'Повышает уровень персонажа до 60-го.', 'achievement_level_60', 40, 1, 0, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), (18, 1, 'Комплект смокинга', 'Комплект смокинга', '', 'Стильный комплект смокинга.\r\n\r\nСодержит:\r\n\r\n1x Куртка-смокинг\r\n1x Рубашка под смокинг\r\n1x Брюки под смокинг', 'inv_shirt_black_01', 50, 1, 0, 0, 0, 1, 10036, 10035, 10034, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1); -- Update visible texts in already initialized databases as well. UPDATE `store_services` SET `name` = CASE `id` WHEN 1 THEN 'Повышение уровня\r\n+10 уровней' WHEN 2 THEN 'Смена фракции' WHEN 3 THEN 'Смена расы' WHEN 4 THEN 'Смена имени' WHEN 5 THEN 'Игрушечный меч\r\n(двуручный)' WHEN 8 THEN 'Стремительный призрачный тигр\r\n(транспорт)' WHEN 12 THEN 'Эпическая лиловая рубашка' WHEN 13 THEN 'Луговая курица\r\n(питомец)' WHEN 14 THEN 'Повышение уровня\r\n+20 уровней' WHEN 15 THEN 'Эффект\r\nБлагословение могущества' WHEN 16 THEN 'Титул\r\nЗащитник Наару' WHEN 17 THEN 'Повышение до 60-го уровня' WHEN 18 THEN 'Комплект смокинга' ELSE `name` END, `tooltipName` = CASE `id` WHEN 1 THEN 'Повышение уровня' WHEN 2 THEN 'Смена фракции' WHEN 3 THEN 'Смена расы' WHEN 4 THEN 'Смена имени' WHEN 14 THEN 'Повышение уровня' WHEN 15 THEN 'Эффект' WHEN 16 THEN 'Титул' WHEN 17 THEN 'Повышение уровня' WHEN 18 THEN 'Комплект смокинга' ELSE `tooltipName` END, `tooltipText` = CASE `id` WHEN 1 THEN 'Повышает уровень персонажа на 10.' WHEN 2 THEN 'Позволяет сменить фракцию персонажа. Станет доступно после повторного входа.' WHEN 3 THEN 'Позволяет сменить расу персонажа. Станет доступно после повторного входа.' WHEN 4 THEN 'Позволяет сменить имя персонажа. Станет доступно после повторного входа.' WHEN 5 THEN '|cff00FFFFНажмите для предпросмотра|r' WHEN 8 THEN '|cff00FFFFНажмите для предпросмотра|r' WHEN 12 THEN '|cff00FFFFНажмите для предпросмотра|r' WHEN 13 THEN '|cff00FFFFНажмите для предпросмотра|r' WHEN 14 THEN 'Повышает уровень персонажа на 20.' WHEN 15 THEN 'Накладывает Благословение могущества.' WHEN 16 THEN 'Открывает титул «Защитник Наару».' WHEN 17 THEN 'Повышает уровень персонажа до 60-го.' WHEN 18 THEN 'Стильный комплект смокинга.\r\n\r\nСодержит:\r\n\r\n1x Куртка-смокинг\r\n1x Рубашка под смокинг\r\n1x Брюки под смокинг' ELSE `tooltipText` END WHERE `id` IN (1,2,3,4,5,8,12,13,14,15,16,17,18); UPDATE `store_services` SET `currency` = 1; -- Atomic bridge between the website balance and Eluna. It both reserves the -- funds and writes the website-compatible ledger entry before a reward is sent. DROP FUNCTION IF EXISTS `acore_auth`.`store_deduct_balance`; DELIMITER // CREATE FUNCTION `acore_auth`.`store_deduct_balance`( p_account_id INT UNSIGNED, p_amount DECIMAL(14,2), p_reference VARCHAR(191), p_character_guid INT UNSIGNED, p_service_id INT UNSIGNED ) RETURNS DECIMAL(14,2) DETERMINISTIC MODIFIES SQL DATA BEGIN DECLARE v_balance_after DECIMAL(14,2) DEFAULT -1; UPDATE `acore_auth`.`account_balances` SET `balance` = `balance` - p_amount, `updated_at` = CURRENT_TIMESTAMP WHERE `account_id` = p_account_id AND p_amount >= 0 AND `balance` >= p_amount; IF ROW_COUNT() = 1 THEN SELECT `balance` INTO v_balance_after FROM `acore_auth`.`account_balances` WHERE `account_id` = p_account_id; INSERT INTO `acore_auth`.`balance_transactions` (`account_id`, `type`, `amount`, `balance_after`, `reference`, `metadata`, `created_at`) VALUES (p_account_id, 'store_purchase', -p_amount, v_balance_after, p_reference, JSON_OBJECT('character_guid', p_character_guid, 'service_id', p_service_id), CURRENT_TIMESTAMP); END IF; RETURN v_balance_after; END// DELIMITER ; /*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;