CounterStrikeSharp eklentisinde NuGet paketleri ve veritabanı
Birçok yararlı eklenti veri saklar: yasaklar, istatistikler, rütbeler. Bunun için projeye bir NuGet paketi eklersiniz ve en önemli kural, veritabanını beklerken oyunu engellememektir. Bu rehber ikisini de Dapper ve MySqlConnector örneğiyle anlatır.
Paketleri ekleyin
NuGet paketleri proje dosyasında listelenir. Dapper sorguları kısaltır, MySqlConnector ise MariaDB ve MySQL ile konuşur. Derleyicimiz derleme sırasında bunları sizin için indirir.
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.*" />
<PackageReference Include="Dapper" Version="2.*" />
<PackageReference Include="MySqlConnector" Version="2.*" />
</ItemGroup>
Derleme sırasında ne olur
Derleme, eklenti DLL’inizi ve yanında eklentinin ihtiyaç duyduğu paketlerin DLL’lerini üretir. CounterStrikeSharp’ın zaten içerdiği dosyalar, iki kez kopyalamayasınız diye başka bir klasöre ayrılır.
Sunucuya neyi kopyalamalı
Eklenti klasörünü, içindeki paket DLL’leriyle birlikte sunucunuzun plugins klasörüne kopyalayın. dependencies klasörünü kopyalamayın; çünkü sunucuda bu dosyalar zaten var ve ikinci bir kopya çakışmalara yol açabilir.
Oyunu dondurmadan sorgu çalıştırın
Oyun tek bir ana iş parçacığında çalışır. Orada veritabanını beklerseniz tüm sunucu takılır. Sorguyu Task.Run içinde çalıştırın; oyuna yeniden dokunmanız gerektiğinde Server.NextFrame ile ana iş parçacığına dönün.
using CounterStrikeSharp.API;
using Dapper;
using Microsoft.Extensions.Logging;
using MySqlConnector;
public void CountPlayers()
{
Task.Run(async () =>
{
await using var connection = new MySqlConnection(Config.ConnectionString); var count = await connection.ExecuteScalarAsync<int>("SELECT COUNT(*) FROM players");
Server.NextFrame(() => {
Logger.LogInformation("Players in the database: {Count}", count);
});
});
}
Bağlantı dizesini yapılandırmada tutun
Adresi, kullanıcıyı ve parolayı koda yazmayın. Yapılandırma rehberimizdeki gibi bağlantı dizesini eklentinin yapılandırmasına koyun; böylece her sunucu sahibi kendi veritabanını kullanır.
Eklentiye ait olmayan paketler
Bazı paketler çok büyüktür ya da bir oyun sunucusunun içinde yaşamak için yapılmamıştır; ASP.NET gibi web framework’leri buna örnektir. Küçük kütüphaneleri tercih edin ve bir paket yüklenmezse eksik yerel dosyalara ihtiyaç duyup duymadığına bakın.
Canlıya almadan önce test edin
Eklentiyi önce bir test veritabanıyla test sunucusunda deneyin. Tabloların oluştuğunu, başarısız bir bağlantının eklentiyi çökertmediğini ve veritabanı kapalıyken günlüğün açık bir mesaj verdiğini kontrol edin.
Bu rehber işinize yaradı mı?
Barlap topluluk için.