sampvoice - عبارة عن مجموعة أدوات تطوير البرامج (SDK) لتنفيذ أنظمة الاتصالات الصوتية بلغة البيدق لخوادم SA:MP.
لكي يعمل البرنامج الإضافي، يجب تثبيته بواسطة اللاعبين وعلى الخادم. هناك جزء العميل والخادم من البرنامج المساعد لهذا الغرض.
يمكن للاعبين الوصول إلى خيارين للتثبيت: تلقائي (عبر المثبت) ودليل (عبر الأرشيف).
releases
واختر الإصدار المطلوب من البرنامج الإضافي.releases
وقم بتنزيل الأرشيف باستخدام إصدار العميل المطلوب.releases
.للبدء في استخدام البرنامج المساعد، اقرأ الوثائق التي تأتي مع جانب الخادم. للقيام بذلك، افتح ملف sampvoice .chm باستخدام مرجع Windows. (إذا لم يتم فتح الوثائق، فانقر بزر الماوس الأيمن على ملف الوثائق، ثم خصائص -> إلغاء الحظر -> موافق)
لبدء استخدام وظيفة البرنامج المساعد، قم بتضمين ملف الرأس:
#include < sampvoice >
عليك أن تعرف أن البرنامج المساعد يستخدم أنواعه الخاصة ونظامه الثابت. على الرغم من أن هذا مجرد غلاف لأنواع البيدق الأساسية، إلا أنه يساعد على التنقل بين أنواع المكون الإضافي نفسه وعدم الخلط بين المؤشرات.
لإعادة توجيه حركة مرور الصوت من المشغل A إلى المشغل B، تحتاج إلى إنشاء دفق صوتي (باستخدام SvCreateStream )، ثم إرفاقه بقناة مكبر الصوت الخاصة بالمشغل A (باستخدام SvAttachStream )، ثم إرفاق المشغل B بالدفق الصوتي (باستخدام SvAttachListener ) . تم، الآن عندما يتم تنشيط ميكروفون اللاعب A (على سبيل المثال، مع وظيفة SvPlay )، سيتم نقل حركة الصوت الخاصة به ثم يستمع إليها اللاعب B.
التدفقات الصوتية مفيدة جدًا. يمكن تصورها باستخدام مثال Discord:
يمكن للاعبين أن يكونوا متحدثين ومستمعين في نفس الوقت. في هذه الحالة، لن تتم إعادة توجيه حركة المرور الصوتية الخاصة بالمشغل إليه.
دعونا نلقي نظرة على بعض ميزات البرنامج المساعد مع مثال عملي. سنقوم أدناه بإنشاء خادم يربط جميع اللاعبين المتصلين بالبث العالمي، كما سنقوم أيضًا بإنشاء بث محلي لكل لاعب. وبالتالي، سيتمكن اللاعبون من التواصل من خلال الدردشات العالمية (التي يتم سماعها بالتساوي في أي نقطة على الخريطة) والمحادثات المحلية (التي يتم سماعها بالقرب من اللاعب فقط).
#include < sampvoice >
# define GLOBAL_CHANNEL 0
# define LOCAL_CHANNEL 1
new SV_UINT: gstream = SV_NONE;
new SV_UINT: lstream[MAX_PLAYERS] = { SV_NONE, ... };
public OnPlayerConnect (playerid)
{
if ( SvGetVersion (playerid) == 0 ) // Checking for plugin availability
{
SendClientMessage (playerid, - 1 , " Failed to find plugin. " );
}
else if ( SvHasMicro (playerid) == SV_FALSE) // Checking for microphone availability
{
SendClientMessage (playerid, - 1 , " Failed to find microphone. " );
}
else
{
if (gstream != SV_NONE)
{
SvSetKey (playerid, 0x 5A , GLOBAL_CHANNEL); // Z key
SvAttachStream (playerid, gstream, GLOBAL_CHANNEL);
SvAttachListener (gstream, playerid);
SvSetIcon (gstream, " speaker " );
SendClientMessage (playerid, - 1 , " Press Z to talk to global chat. " );
}
if ((lstream[playerid] = SvCreateStream ( 40 . 0 )) != SV_NONE)
{
SvSetKey (playerid, 0x 42 , LOCAL_CHANNEL); // B key
SvAttachStream (playerid, lstream[playerid], LOCAL_CHANNEL);
SvSetTarget (lstream[playerid], SvMakePlayer (playerid));
SvSetIcon (lstream[playerid], " speaker " );
SendClientMessage (playerid, - 1 , " Press B to talk to local chat. " );
}
}
}
public OnPlayerDisconnect (playerid, reason)
{
// Removing the player's local stream after disconnecting
if (lstream[playerid] != SV_NONE)
{
SvDeleteStream (lstream[playerid]);
lstream[playerid] = SV_NONE;
}
}
public OnGameModeInit ()
{
// Uncomment the line to enable debug mode
// SvEnableDebug();
gstream = SvCreateStream ();
}
public OnGameModeExit ()
{
if (gstream != SV_NONE)
{
SvDeleteStream (gstream);
gstream = SV_NONE;
}
}
يجمع البرنامج المساعد لمنصات Win32 و Linux x86 . ستكون الملفات المجمعة في دليل sampvoice /binaries .
فيما يلي مزيد من التعليمات:
انسخ المستودع على جهاز الكمبيوتر الخاص بك وانتقل إلى دليل البرنامج المساعد:
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
لتجميع جانب العميل من البرنامج المساعد، تحتاج إلى DirectX 9 SDK . بشكل افتراضي، يتم تجميع جزء العميل للإصدار SA: MP 0.3.7 (R1) ، ولكن يمكنك أيضًا إخبار المترجم بشكل صريح بإصدار البناء باستخدام وحدات الماكرو SAMP_R1 و SAMP_R3 . من أجل إنشاء أجزاء العميل والخادم من البرنامج الإضافي لنظام Win32 ، افتح مشروع sampvoice .sln في Visual Studio 2019 (أو أعلى) وقم بتجميعه:
بناء -> بناء الحل (F7)
تأكد من تثبيت كافة التبعيات:
sudo apt install build-essential gcc-multilib g++-multilib
لإنشاء خادم التحكم لنظام التشغيل Linux x86 ، اتبع الإرشادات التالية:
cd control
make
cd ..
لإنشاء خادم صوتي لنظام التشغيل Linux x86 ، اتبع الإرشادات التالية:
cd voice
make
cd ..