CounterStrikeSharp प्लगइन में NuGet पैकेज और डेटाबेस
कई उपयोगी प्लगइन डेटा सहेजते हैं: बैन, आँकड़े, रैंक। इसके लिए आप प्रोजेक्ट में NuGet पैकेज जोड़ते हैं, और सबसे अहम नियम यह है कि डेटाबेस का इंतज़ार करते हुए गेम को ब्लॉक न करें। यह गाइड Dapper और MySqlConnector के उदाहरण से दोनों बातें समझाती है।
पैकेज जोड़ें
NuGet पैकेज प्रोजेक्ट फ़ाइल में सूचीबद्ध होते हैं। Dapper क्वेरी को छोटा करता है और MySqlConnector MariaDB व MySQL से बात करता है। हमारा कंपाइलर बिल्ड के समय इन्हें आपके लिए डाउनलोड कर लेता है।
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.*" />
<PackageReference Include="Dapper" Version="2.*" />
<PackageReference Include="MySqlConnector" Version="2.*" />
</ItemGroup>
कंपाइल करने पर क्या होता है
बिल्ड आपके प्लगइन की DLL और उसके बग़ल में उन पैकेजों की DLL बनाता है जिनकी उसे ज़रूरत है। जो फ़ाइलें CounterStrikeSharp में पहले से हैं, वे अलग फ़ोल्डर में रखी जाती हैं ताकि आप उन्हें दो बार कॉपी न करें।
सर्वर पर क्या कॉपी करें
प्लगइन का फ़ोल्डर, उसके अंदर की पैकेज DLL समेत, अपने सर्वर के plugins फ़ोल्डर में कॉपी करें। dependencies फ़ोल्डर कॉपी न करें, क्योंकि सर्वर के पास वे फ़ाइलें पहले से हैं और दूसरी कॉपी टकराव पैदा कर सकती है।
गेम फ़्रीज़ किए बिना क्वेरी चलाएँ
गेम एक ही मुख्य थ्रेड पर चलता है। वहाँ डेटाबेस का इंतज़ार करेंगे तो पूरा सर्वर अटकने लगेगा। क्वेरी को 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);
});
});
}
कनेक्शन स्ट्रिंग कॉन्फ़िग में रखें
पता, यूज़र और पासवर्ड कोड में न लिखें। कनेक्शन स्ट्रिंग प्लगइन के कॉन्फ़िग में रखें, जैसा हमारी कॉन्फ़िग गाइड में है, ताकि हर सर्वर मालिक अपना डेटाबेस इस्तेमाल करे।
जो पैकेज प्लगइन में नहीं चलते
कुछ पैकेज बहुत बड़े हैं या गेम सर्वर के अंदर चलने के लिए बने ही नहीं, जैसे ASP.NET जैसे वेब framework। छोटी लाइब्रेरी को तरजीह दें, और अगर कोई पैकेज लोड न हो तो देखें कि उसे कोई ऐसी native फ़ाइलें तो नहीं चाहिए जो मौजूद नहीं हैं।
लाइव करने से पहले टेस्ट करें
पहले प्लगइन को टेस्ट डेटाबेस के साथ टेस्ट सर्वर पर आज़माएँ। जाँचें कि तालिकाएँ बन रही हैं, कनेक्शन फ़ेल होने पर प्लगइन क्रैश नहीं होता, और डेटाबेस बंद होने पर लॉग साफ़ संदेश देता है।
क्या यह ट्यूटोरियल उपयोगी था?
Barlap समुदाय के लिए।