สำหรับไลบรารีเวอร์ชัน .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 ให้รันคำสั่งต่อไปนี้ใน Package Manager Console
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
ให้เป็นจริง
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) นั้นง่ายมาก! ตัวอย่างนี้จะพิมพ์ RPM ของรถที่ดูในปัจจุบันไปยังคอนโซล
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 ) ;
คุณสามารถค้นหาตัวอย่างและข้อมูลเพิ่มเติมเกี่ยวกับการใช้ไลบรารีได้ในวิกิเอกสารประกอบ