- 66
- 2
- 4
ИДИОТСделал, по итогу все равно не дает доступа к созданию персонажей и спавн камня
hook.Add("DatabaseInitialized", "DatabaseInitialized", function()
-- Player Data с составными индексами для JOIN оптимизации
MySQLite.query([[
CREATE TABLE IF NOT EXISTS nwt_p_data(
id INT AUTO_INCREMENT NOT NULL,
steam_id VARCHAR(25) NOT NULL,
community_id VARCHAR(255),
player VARCHAR(255),
money INT DEFAULT 0,
vehicles TEXT,
last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY idx_steam (steam_id),
KEY idx_money (money),
KEY idx_last_seen (last_seen)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
]], nil, function(err)
if err then ErrorNoHalt("[TABLE ERROR] nwt_p_data: " .. err .. "\n") end
end)
-- В вайтлисте додик измени ракнигх на ранк
MySQLite.query([[
CREATE TABLE IF NOT EXISTS nwt_characters(
character_id INT AUTO_INCREMENT NOT NULL,
player_id INT NOT NULL,
rpid INT,
rank VARCHAR(255),
name VARCHAR(255),
features TEXT,
team_id VARCHAR(255),
character_name VARCHAR(255),
model VARCHAR(255),
pripiska VARCHAR(255),
haircolorx FLOAT DEFAULT 0.0,
haircolory FLOAT DEFAULT 0.0,
haircolorz FLOAT DEFAULT 0.0,
boroda TINYINT DEFAULT 0,
gen TEXT,
hair TINYINT DEFAULT 0,
activeskills TEXT,
skills TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (character_id),
KEY idx_player (player_id),
KEY idx_rpid (rpid),
KEY idx_name (character_name(50)),
FOREIGN KEY (player_id) REFERENCES nwt_p_data(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
]], nil, function(err)
if err then ErrorNoHalt("[TABLE ERROR] nwt_characters: " .. err .. "\n") end
end)
MySQLite.query([[
CREATE TABLE IF NOT EXISTS nwt_spawnpoints(
spawn_id INT AUTO_INCREMENT NOT NULL,
map VARCHAR(255) NOT NULL,
vector TEXT NOT NULL,
category VARCHAR(255),
PRIMARY KEY (spawn_id),
KEY idx_map_cat (map, category)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
]], nil, function(err)
if err then ErrorNoHalt("[TABLE ERROR] nwt_spawnpoints: " .. err .. "\n") end
end)
MySQLite.query([[
CREATE TABLE IF NOT EXISTS nwt_p_level(
steam_id VARCHAR(25) NOT NULL,
level SMALLINT UNSIGNED DEFAULT 1,
experience INT UNSIGNED DEFAULT 0,
PRIMARY KEY (steam_id),
KEY idx_level (level),
KEY idx_exp (experience)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
]], nil, function(err)
if err then ErrorNoHalt("[TABLE ERROR] nwt_p_level: " .. err .. "\n") end
end)
MySQLite.query([[
CREATE TABLE IF NOT EXISTS nwt_p_metal(
steam_id VARCHAR(25) NOT NULL,
metal INT UNSIGNED DEFAULT 0,
metal_inv INT UNSIGNED DEFAULT 0,
PRIMARY KEY (steam_id),
KEY idx_metal (metal)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
]], nil, function(err)
if err then ErrorNoHalt("[TABLE ERROR] nwt_p_metal: " .. err .. "\n") end
end)
MySQLite.query([[
CREATE OR REPLACE VIEW v_player_full AS
SELECT
p.*,
l.level,
l.experience,
m.metal,
m.metal_inv,
COUNT(c.character_id) as character_count
FROM nwt_p_data p
LEFT JOIN nwt_p_level l ON p.steam_id = l.steam_id
LEFT JOIN nwt_p_metal m ON p.steam_id = m.steam_id
LEFT JOIN nwt_characters c ON p.id = c.player_id
GROUP BY p.id;
]], nil, function(err)
if err then ErrorNoHalt("[VIEW ERROR] v_player_full: " .. err .. "\n") end
end)
end)