first commit

This commit is contained in:
Colin-Joel Scupin
2026-08-05 01:29:39 +02:00
commit 86d4bcdc37
85 changed files with 7706 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
ALTER TABLE `devx_characters`
ADD COLUMN IF NOT EXISTS `phone_number` VARCHAR(16) NULL AFTER `model`;
CREATE UNIQUE INDEX IF NOT EXISTS `uq_devx_character_phone`
ON `devx_characters` (`phone_number`);
CREATE TABLE IF NOT EXISTS `devx_bans` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`license` VARCHAR(80) NOT NULL,
`player_name` VARCHAR(96) NULL,
`reason` VARCHAR(255) NOT NULL,
`banned_by` VARCHAR(96) NOT NULL,
`expires_at` DATETIME NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`revoked_at` DATETIME NULL,
PRIMARY KEY (`id`),
KEY `idx_devx_bans_license` (`license`),
KEY `idx_devx_bans_active` (`license`, `revoked_at`, `expires_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `devx_heist_progress` (
`character_id` BIGINT UNSIGNED NOT NULL,
`drill_done` TINYINT(1) NOT NULL DEFAULT 0,
`card_done` TINYINT(1) NOT NULL DEFAULT 0,
`vehicle_done` TINYINT(1) NOT NULL DEFAULT 0,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`character_id`),
CONSTRAINT `fk_devx_heist_character`
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `devx_casino_daily` (
`character_id` BIGINT UNSIGNED NOT NULL,
`last_spin` DATETIME NULL,
`total_spins` INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`character_id`),
CONSTRAINT `fk_devx_casino_character`
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+3
View File
@@ -0,0 +1,3 @@
-- DevX RP v0.4.0
-- Keine neue Tabelle erforderlich.
-- devx_housing synchronisiert die zusätzlichen Apartmentdatensätze beim Start.
+38
View File
@@ -0,0 +1,38 @@
-- DevX RP v0.4.1 migration. Resources also create these structures at runtime.
SET @has_contact_type := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'devx_phone_contacts' AND COLUMN_NAME = 'contact_type'
);
SET @sql_contact_type := IF(@has_contact_type = 0,
"ALTER TABLE devx_phone_contacts ADD COLUMN contact_type VARCHAR(32) NOT NULL DEFAULT 'player' AFTER phone_number",
'SELECT 1');
PREPARE stmt_contact_type FROM @sql_contact_type; EXECUTE stmt_contact_type; DEALLOCATE PREPARE stmt_contact_type;
SET @has_metadata := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'devx_phone_contacts' AND COLUMN_NAME = 'metadata'
);
SET @sql_metadata := IF(@has_metadata = 0,
'ALTER TABLE devx_phone_contacts ADD COLUMN metadata LONGTEXT NULL AFTER contact_type',
'SELECT 1');
PREPARE stmt_metadata FROM @sql_metadata; EXECUTE stmt_metadata; DEALLOCATE PREPARE stmt_metadata;
CREATE TABLE IF NOT EXISTS devx_casino_wallets (
character_id BIGINT UNSIGNED NOT NULL,
chips BIGINT UNSIGNED NOT NULL DEFAULT 0,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (character_id),
CONSTRAINT fk_devx_casino_wallet_character FOREIGN KEY (character_id)
REFERENCES devx_characters (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS devx_club_relations (
character_id BIGINT UNSIGNED NOT NULL,
relation_key VARCHAR(32) NOT NULL,
satisfaction TINYINT UNSIGNED NOT NULL DEFAULT 0,
contact_unlocked TINYINT(1) NOT NULL DEFAULT 0,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (character_id, relation_key),
CONSTRAINT fk_devx_club_character FOREIGN KEY (character_id)
REFERENCES devx_characters (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+7
View File
@@ -0,0 +1,7 @@
-- DevX RP v0.4.3
-- Entfernt ausschließlich Apartment-Eigentümer, deren Charakter fehlt oder
-- bereits gelöscht wurde. Aktive Charaktere und deren Apartments bleiben erhalten.
DELETE po
FROM devx_property_owners po
LEFT JOIN devx_characters c ON c.id = po.character_id
WHERE c.id IS NULL OR c.deleted_at IS NOT NULL;