對於該庫的 .NET Core 版本,請前往此處。對於該程式庫的 .NET 6 版本,請造訪此處。
InSim.NET 是一個用於線上賽車模擬器 Live for Speed 的 .NET InSim 庫。它允許您連接到遊戲並共享資料包。這些資料包可用於控制 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 的較舊二進位檔案可在版本部分中找到。
若要使用 NuGet 安裝 InSimDotNet,請在套件管理器控制台中執行下列命令。
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)同樣簡單!此範例將目前檢視的汽車的 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 ) ;
您可以在文件 wiki 中找到更多有關使用該程式庫的範例和資訊。