MySQL: Online
Load: Medium
Sandbox: Running

حزم 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

حزم لا مكان لها في إضافة

بعض الحزم كبيرة جدًا أو لم تُصمَّم لتعمل داخل خادم لعبة، مثل أطر الويب كـ ASP.NET. فضّل المكتبات الصغيرة، وإذا لم تُحمَّل حزمة فتحقق مما إذا كانت تحتاج إلى ملفات أصلية (native) مفقودة.

لا تستخدم حساب قاعدة بيانات بصلاحيات أكبر مما تحتاجه الإضافة. أنشئ مستخدمًا لا يستطيع لمس سوى جداوله الخاصة.
7

اختبر قبل الإطلاق

جرّب الإضافة أولًا على خادم اختبار بقاعدة بيانات اختبار. تحقق من إنشاء الجداول، ومن أن فشل الاتصال لا يُسقط الإضافة، ومن أن السجل يعطي رسالة واضحة عندما تكون قاعدة البيانات متوقفة.

هل كان هذا الدليل مفيدًا؟

تم إنشاء الصفحة في 0.018 ثانية
CounterStrikeSharp Web Compiler V1.0 - صُنع بواسطة بواسطة RomaniaBarlap من أجل المجتمع.