MySQL: Online
Load: Low
Sandbox: Ready

Pachete NuGet și bază de date într-un plugin CounterStrikeSharp

Multe pluginuri utile salvează date: banuri, statistici, ranguri. Pentru asta adaugi un pachet NuGet în proiect, iar regula cea mai importantă este să nu blochezi jocul cât aștepți răspunsul bazei de date. Ghidul le acoperă pe amândouă, cu Dapper și MySqlConnector ca exemplu.

1

Adaugă pachetele

Pachetele NuGet se listează în fișierul de proiect. Dapper scurtează interogările, iar MySqlConnector comunică cu MariaDB și MySQL. Compilatorul nostru le descarcă singur la build.

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

Ce se întâmplă la compilare

Build-ul produce DLL-ul pluginului și, lângă el, DLL-urile pachetelor de care are nevoie. Fișierele pe care CounterStrikeSharp le conține deja sunt puse separat, în alt folder, ca să nu le copiezi de două ori.

3

Ce copiezi pe server

Copiază folderul pluginului, cu DLL-urile pachetelor din interior, în folderul plugins al serverului. Nu copia folderul dependencies, pentru că serverul are deja acele fișiere, iar o a doua copie poate cauza conflicte.

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

Rulează o interogare fără să îngheți jocul

Jocul rulează pe un singur fir principal. Dacă aștepți acolo o bază de date, tot serverul se blochează pe moment. Rulează interogarea în Task.Run, iar când ai nevoie să atingi din nou jocul, revino pe firul principal cu 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);
        });
    });
}
5

Păstrează connection string-ul în configurare

Nu scrie adresa, utilizatorul și parola în cod. Pune connection string-ul în configurarea pluginului, ca în ghidul nostru despre configurare, ca fiecare proprietar de server să-și folosească propria bază de date.

6

Pachete care nu au ce căuta într-un plugin

Unele pachete sunt prea mari sau nu sunt făcute să trăiască într-un server de joc, de exemplu framework-urile web precum ASP.NET. Preferă biblioteci mici, iar dacă un pachet nu se încarcă, verifică dacă are nevoie de fișiere native care lipsesc.

Nu folosi un cont de bază de date cu mai multe drepturi decât are nevoie pluginul. Creează un utilizator care poate atinge doar propriile tabele.
7

Testează înainte să pui în producție

Încearcă mai întâi pluginul pe un server de test, cu o bază de date de test. Verifică dacă tabelele se creează, dacă o conexiune eșuată nu blochează pluginul și dacă logul dă un mesaj clar când baza de date nu răspunde.

A fost util acest tutorial?

Pagină generată în 0.010 secunde
CounterStrikeSharp Web Compiler V1.0 - Realizat cu de RomaniaBarlap pentru comunitate.