للحصول على إصدار .NET Core من المكتبة، انتقل هنا. للحصول على إصدار .NET 6 من المكتبة، انتقل هنا.
InSim.NET هي مكتبة .NET InSim لمحاكاة السباق عبر الإنترنت Live for Speed. يسمح لك بالاتصال باللعبة ومشاركة حزم البيانات. يمكن استخدام هذه الحزم للتحكم في Live for Speed، وإرسال الأوامر، والتعامل مع الطلبات، واستقبال بيانات القياس عن بعد للسيارة.
تم تصميم المكتبة لتكون بسيطة وسريعة ومرنة، وتظل قريبة من بروتوكول InSim الأصلي قدر الإمكان، مع توفيرك من التفاصيل الجوهرية لبرمجة المقبس مباشرة.
موقع المشروع هذا مخصص للإصدار 2.0 من المكتبة، والذي يتضمن الدعم الكامل لـ InSim وInSim Relay وOutSim وOutGauge وتحسينات على واجهة برمجة التطبيقات (API) وتحسين كفاءة الشبكة.
بدءًا من InSim.NET 2.1.0 فصاعدًا، تتطلب المكتبة .NET Framework 4.5 . تتوفر الثنائيات الأقدم لـ .NET 4.0 و3.5 في قسم الإصدارات.
لتثبيت InSimDotNet باستخدام NuGet، قم بتشغيل الأمر التالي في وحدة تحكم إدارة الحزم.
PM > Install-Package InSimDotNet
يمكنك الآن التبرع باستخدام PayPal للمساعدة في تمويل تطوير InSim.NET. أي مبلغ هو موضع ترحيب! فقط انقر على الصورة أدناه.
هذا هو أبسط برنامج InSim يمكنك كتابته (يقوم بشيء ما). نقوم بتهيئة InSim ونرسل الرسالة "Hello, InSim!" إلى دردشة اللعبة.
InSim insim = new InSim ( ) ;
// Initialize InSim
insim . Initialize ( new InSimSettings {
Host = " 127.0.0.1 " ,
Port = 29999 ,
Admin = String . Empty ,
} ) ;
// Send message to LFS
insim . Send ( " /msg Hello, InSim! " ) ;
لتلقي حزمة، قم بربط المعالج باستخدام طريقة InSim.Bind()
. في هذا المثال، قمنا بربط معالج لحدث الحزمة IS_MSO
(MeSsage Out).
void RunInSim ( ) {
InSim insim = new InSim ( ) ;
// Bind MSO packet event.
insim . Bind < IS_MSO > ( MessageOut ) ;
// Initialize InSim
insim . Initialize ( new InSimSettings {
Host = " 127.0.0.1 " ,
Port = 29999 ,
Admin = String . Empty ,
} ) ;
}
// Method called when MSO packet is recieved
void MessageOut ( InSim insim , IS_MSO packet ) {
// Print contents of MSO message to the console.
Console . WriteLine ( packet . Msg ) ;
}
لإرسال حزمة استخدم طريقة InSim.Send(ISendable)
.
insim . Send ( new IS_TINY {
SubT = TinyType . TINY_NCN
} ) ;
لحفظ النطاق الترددي، قم بإرسال حزم متعددة في مكالمة واحدة باستخدام أسلوب InSim.Send(params ISendable[])
.
insim . Send (
new IS_TINY {
SubT = TinyType . TINY_NCN
} ,
new IS_SMALL {
SubT = SmallType . SMALL_SSP ,
}
) ;
لإبقاء البرنامج مفتوحًا بينما لا يزال InSim متصلاً.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
وهنا كل ذلك معا.
void RunInSim ( ) {
InSim insim = new InSim ( ) ;
// Bind packet events.
insim . Bind < IS_NCN > ( NewConnection ) ;
insim . Bind < IS_NPL > ( NewPlayer ) ;
// Initialize InSim
insim . Initialize ( new InSimSettings {
Host = " 127.0.0.1 " ,
Port = 29999 ,
Admin = String . Empty ,
} ) ;
// Request all connections and players to be sent.
insim . Send ( new [ ] {
new IS_TINY { SubT = TinyType . TINY_NCN } ,
new IS_TINY { SubT = TinyType . TINY_NPL } ,
} ) ;
// Stop console app from exiting while connection is active.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
}
// Method called when NCN packet is recieved
void NewConnection ( InSim insim , IS_NCN packet ) {
// Handle new connection.
}
// Method called when NPL packet is recieved
void NewPlayer ( InSim insim , IS_NPL packet ) {
// Handle new player.
}
لاستخدام InSim Relay، يتعلق الأمر بتعيين خاصية InSimSettings.IsRelayHost
على القيمة true.
InSim insim = new InSim ( ) ;
// Initialize InSim relay
insim . Initialize ( new InSimSettings {
IsRelayHost = true ,
} ) ;
// Send host select packet
insim . Send ( new IR_SEL { HName = " <insert host name> " } ) ;
يعد استخدام OutGauge (أو OutSim) أمرًا بسيطًا تمامًا! يطبع هذا المثال عدد الدورات في الدقيقة للسيارة المعروضة حاليًا على وحدة التحكم.
OutGauge outgauge = new OutGauge ( ) ;
// Attach OutGauge packet event
outgauge . PacketReceived += ( sender , e ) => {
Console . WriteLine ( e . RPM ) ;
} ;
// Start listening for packets
outgauge . Connect ( " 127.0.0.1 " , 30000 ) ;
يمكنك العثور على المزيد من الأمثلة والمعلومات حول استخدام المكتبة في ويكي الوثائق.