MySQL: Online
Load: Low
Sandbox: Running

NuGet-csomagok és adatbázis egy CounterStrikeSharp-bővítményben

Sok hasznos bővítmény adatokat tárol: tiltásokat, statisztikákat, rangokat. Ehhez egy NuGet-csomagot adsz a projekthez, a legfontosabb szabály pedig az, hogy ne blokkold a játékot, miközben az adatbázisra vársz. Ez az útmutató mindkettőt tárgyalja a Dapper és a MySqlConnector példáján.

1

Add hozzá a csomagokat

A NuGet-csomagok a projektfájlban vannak felsorolva. A Dapper rövidebbé teszi a lekérdezéseket, a MySqlConnector pedig a MariaDB-vel és a MySQL-lel kommunikál. A fordítónk a build során letölti őket helyetted.

<ItemGroup>
  <PackageReference Include="CounterStrikeSharp.API" Version="1.0.*" />
  <PackageReference Include="Dapper" Version="2.*" />
  <PackageReference Include="MySqlConnector" Version="2.*" />
</ItemGroup>
2

Mi történik fordításkor

A build létrehozza a bővítményed DLL-jét, mellette pedig a szükséges csomagok DLL-jeit. A CounterStrikeSharp által már tartalmazott fájlok külön mappába kerülnek, hogy ne másold őket kétszer.

3

Mit másolj a szerverre

Másold a bővítmény mappáját a benne lévő csomag-DLL-ekkel együtt a szervered plugins mappájába. A dependencies mappát ne másold, mert a szerveren már megvannak ezek a fájlok, és egy második másolat ütközést okozhat.

YourPlugin-Release.zip
YourPlugin
YourPlugin.dll
Dapper.dll
MySqlConnector.dll
dependencies
Files already provided by CounterStrikeSharp
4

Futtass lekérdezést a játék lefagyasztása nélkül

A játék egyetlen fő szálon fut. Ha ott adatbázisra vársz, az egész szerver akadozik. Futtasd a lekérdezést a Task.Run-ban, és amikor újra hozzá kell nyúlnod a játékhoz, térj vissza a fő szálra a Server.NextFrame-mel.

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);
        });
    });
}
5

A kapcsolati karakterláncot a konfigurációban tartsd

Ne írd a címet, a felhasználót és a jelszót a kódba. Tedd a kapcsolati karakterláncot a bővítmény konfigurációjába, ahogy a konfigurációs útmutatónkban, hogy minden szerver üzemeltetője a saját adatbázisát használja.

6

Csomagok, amelyek nem valók egy bővítménybe

Egyes csomagok túl nagyok, vagy nem arra valók, hogy egy játékszerveren belül éljenek, ilyenek például az ASP.NET-hez hasonló webes keretrendszerek. Részesítsd előnyben a kis könyvtárakat, és ha egy csomag nem töltődik be, ellenőrizd, nem hiányzó natív fájlokra van-e szüksége.

Ne használj a bővítménynek szükségesnél több joggal rendelkező adatbázisfiókot. Hozz létre olyan felhasználót, amely csak a saját táblákhoz fér hozzá.
7

Éles használat előtt tesztelj

Először teszteld a bővítményt tesztszerveren, tesztadatbázissal. Ellenőrizd, hogy létrejönnek-e a táblák, hogy egy sikertelen kapcsolat nem omlasztja-e össze a bővítményt, és hogy a napló érthető üzenetet ad-e, ha az adatbázis nem elérhető.

Hasznos volt ez az útmutató?

Az oldal 0.011 másodperc alatt generálódott
CounterStrikeSharp Web Compiler V1.0 - Készült által RomaniaBarlap a közösségért.