NuGet paketi i baza podataka u CounterStrikeSharp plaginu
Mnogi korisni plagini čuvaju podatke: banove, statistiku, rangove. Za to u projekat dodajete NuGet paket, a najvažnije pravilo je da ne blokirate igru dok čekate bazu podataka. Ovaj vodič pokriva oba, na primeru Dapper-a i MySqlConnector-a.
Dodajte pakete
NuGet paketi se navode u projektnom fajlu. Dapper skraćuje upite, a MySqlConnector komunicira sa MariaDB-om i MySQL-om. Naš kompajler ih preuzima umesto vas prilikom kompajliranja.
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.*" />
<PackageReference Include="Dapper" Version="2.*" />
<PackageReference Include="MySqlConnector" Version="2.*" />
</ItemGroup>
Šta se dešava pri kompajliranju
Kompajliranje pravi DLL vašeg plagina i pored njega DLL-ove paketa koji su mu potrebni. Fajlovi koje CounterStrikeSharp već sadrži odvojeni su u drugi folder, da ih ne biste kopirali dvaput.
Šta kopirati na server
Kopirajte folder plagina, sa DLL-ovima paketa unutra, u folder plugins na serveru. Ne kopirajte folder dependencies, jer server već ima te fajlove, a druga kopija može da izazove sukobe.
Izvršite upit bez zamrzavanja igre
Igra radi na jednoj glavnoj niti. Ako tamo čekate bazu podataka, ceo server zastaje. Izvršite upit u Task.Run, a kada ponovo treba da dodirnete igru, vratite se na glavnu nit pomoću Server.NextFrame.
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);
});
});
}
Čuvajte connection string u konfiguraciji
Ne upisujte adresu, korisnika i lozinku u kod. Stavite connection string u konfiguraciju plagina, kao u našem vodiču o konfiguraciji, da bi svaki vlasnik servera koristio svoju bazu.
Paketi koji ne pripadaju plaginu
Neki paketi su preveliki ili nisu napravljeni da žive unutar igračkog servera, na primer veb framework-ovi poput ASP.NET-a. Birajte male biblioteke, a ako se paket ne učita, proverite da li mu trebaju izvorni (native) fajlovi koji nedostaju.
Testirajte pre puštanja u rad
Prvo isprobajte plagin na probnom serveru sa probnom bazom. Proverite da li se tabele prave, da li neuspela veza ne ruši plagin i da li log daje jasnu poruku kad baza nije dostupna.
Da li vam je ovaj vodič bio koristan?
Barlap za zajednicu.