对于该库的 .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 中找到更多有关使用该库的示例和信息。