MySQL: Online
Load: Low
Sandbox: Ready

Pacchetti NuGet e database in un plugin CounterStrikeSharp

Molti plugin utili salvano dati: ban, statistiche, ranghi. Per farlo aggiungi un pacchetto NuGet al progetto, e la regola più importante è non bloccare il gioco mentre aspetti il database. Questa guida tratta entrambe le cose, con Dapper e MySqlConnector come esempio.

1

Aggiungi i pacchetti

I pacchetti NuGet si elencano nel file di progetto. Dapper rende le query più brevi e MySqlConnector dialoga con MariaDB e MySQL. Il nostro compilatore li scarica per te durante la compilazione.

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

Cosa succede durante la compilazione

La compilazione produce la DLL del plugin e, accanto, le DLL dei pacchetti di cui ha bisogno. I file che CounterStrikeSharp contiene già vengono separati in un’altra cartella, così non li copi due volte.

3

Cosa copiare sul server

Copia la cartella del plugin, con le DLL dei pacchetti al suo interno, nella cartella plugins del tuo server. Non copiare la cartella dependencies, perché il server ha già quei file e una seconda copia può causare conflitti.

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

Esegui una query senza bloccare il gioco

Il gioco gira su un solo thread principale. Se lì aspetti un database, l’intero server scatta. Esegui la query in Task.Run e, quando devi toccare di nuovo il gioco, torna al thread principale con 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

Tieni la stringa di connessione nella configurazione

Non scrivere indirizzo, utente e password nel codice. Metti la stringa di connessione nella configurazione del plugin, come nella nostra guida alla configurazione, così ogni proprietario di server usa il proprio database.

6

Pacchetti che non c’entrano con un plugin

Alcuni pacchetti sono troppo grandi o non sono fatti per vivere dentro un server di gioco, per esempio i framework web come ASP.NET. Preferisci librerie piccole e, se un pacchetto non si carica, controlla se richiede file nativi che mancano.

Non usare un account del database con più diritti di quelli che servono al plugin. Crea un utente che possa toccare solo le proprie tabelle.
7

Prova prima di andare in produzione

Prova prima il plugin su un server di test con un database di test. Verifica che le tabelle vengano create, che una connessione fallita non mandi in crash il plugin e che il log dia un messaggio chiaro quando il database non risponde.

Questo tutorial ti è stato utile?

Pagina generata in 0.011 secondi
CounterStrikeSharp Web Compiler V1.0 - Realizzato con da RomaniaBarlap per la comunità.