MySQL: Online
Load: High
Sandbox: Ready

NuGet пакети и база данни в плъгин за CounterStrikeSharp

Много полезни плъгини съхраняват данни: банове, статистики, рангове. За целта добавяте NuGet пакет към проекта, а най-важното правило е да не блокирате играта, докато чакате базата данни. Ръководството разглежда и двете с примера на Dapper и MySqlConnector.

1

Добавете пакетите

NuGet пакетите се изброяват в проектния файл. Dapper скъсява заявките, а MySqlConnector общува с MariaDB и MySQL. Нашият компилатор ги изтегля вместо вас при компилацията.

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

Какво се случва при компилация

Компилацията създава DLL файла на плъгина и до него DLL файловете на пакетите, от които се нуждае. Файловете, които CounterStrikeSharp вече съдържа, са отделени в друга папка, за да не ги копирате два пъти.

3

Какво да копирате на сървъра

Копирайте папката на плъгина с DLL файловете на пакетите вътре в папката plugins на сървъра. Не копирайте папката dependencies, защото сървърът вече има тези файлове, а второ копие може да причини конфликти.

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

Изпълнявайте заявка, без да замразявате играта

Играта работи в една основна нишка. Ако там чакате база данни, целият сървър започва да лагва. Изпълнете заявката в Task.Run, а когато трябва отново да пипнете играта, върнете се в основната нишка със 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

Пазете низа за връзка в конфигурацията

Не пишете адреса, потребителя и паролата в кода. Сложете низа за връзка в конфигурацията на плъгина, както в нашето ръководство за конфигурация, за да ползва всеки собственик на сървър своя база.

6

Пакети, които не са за плъгин

Някои пакети са твърде големи или не са направени да живеят в игрови сървър, например уеб framework-ове като ASP.NET. Предпочитайте малки библиотеки, а ако пакет не се зарежда, проверете дали не му трябват липсващи нативни файлове.

Не ползвайте акаунт в базата с повече права, отколкото плъгинът има нужда. Създайте потребител, който може да пипа само собствените си таблици.
7

Тествайте преди пускане в реална работа

Първо изпробвайте плъгина на тестов сървър с тестова база. Проверете дали таблиците се създават, дали неуспешна връзка не срива плъгина и дали логът дава ясно съобщение, когато базата е недостъпна.

Беше ли полезно това ръководство?

Страницата е генерирана за 0.014 секунди
CounterStrikeSharp Web Compiler V1.0 - Направено с от RomaniaBarlap за общността.