Para obtener una versión .NET Core de la biblioteca, vaya aquí. Para obtener una versión .NET 6 de la biblioteca, vaya aquí.
InSim.NET es una biblioteca .NET InSim para el simulador de carreras en línea Live for Speed. Te permite conectarte al juego y compartir paquetes de datos. Estos paquetes se pueden utilizar para controlar Live for Speed, enviar comandos, gestionar solicitudes y recibir datos de telemetría del vehículo.
La biblioteca ha sido diseñada para ser simple, rápida y flexible, y se mantiene lo más cercana posible al protocolo InSim original, a la vez que le evita el meollo de la programación de sockets directamente.
Este sitio del proyecto es para la versión 2.0 de la biblioteca, que incluye soporte completo para InSim, InSim Relay, OutSim y OutGauge, mejoras en la API y eficiencia de red mejorada.
Desde InSim.NET 2.1.0 en adelante, la biblioteca requiere .NET Framework 4.5 . Los archivos binarios más antiguos para .NET 4.0 y 3.5 están disponibles en la sección de versiones.
Para instalar InSimDotNet usando NuGet, ejecute el siguiente comando en la Consola del Administrador de paquetes.
PM > Install-Package InSimDotNet
Ahora puede donar mediante PayPal para ayudar a financiar el desarrollo de InSim.NET. ¡Cualquier cantidad es bienvenida! Simplemente haga clic en la imagen a continuación.
Este es el programa InSim más simple que puedes escribir (que hace algo). Inicializamos InSim y enviamos el mensaje '¡Hola, InSim!' al chat del juego.
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! " ) ;
Para recibir un paquete, vincule un controlador utilizando el método InSim.Bind()
. En este ejemplo vinculamos un controlador para el evento de paquete 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 ) ;
}
Para enviar un paquete utilice el método InSim.Send(ISendable)
.
insim . Send ( new IS_TINY {
SubT = TinyType . TINY_NCN
} ) ;
Para ahorrar ancho de banda, envíe varios paquetes en una sola llamada utilizando el método InSim.Send(params ISendable[])
.
insim . Send (
new IS_TINY {
SubT = TinyType . TINY_NCN
} ,
new IS_SMALL {
SubT = SmallType . SMALL_SSP ,
}
) ;
Para mantener un programa abierto mientras InSim todavía está conectado.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
Aquí está todo junto.
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.
}
Para utilizar InSim Relay es cuestión de establecer la propiedad InSimSettings.IsRelayHost
en verdadero.
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> " } ) ;
¡Usar OutGauge (o OutSim) es igual de simple! Este ejemplo imprime las RPM del automóvil que se está viendo actualmente en la consola.
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 ) ;
Puede encontrar muchos más ejemplos e información sobre el uso de la biblioteca en la wiki de documentación.