Eine .NET Core-Version der Bibliothek finden Sie hier. Eine .NET 6-Version der Bibliothek finden Sie hier.
InSim.NET ist eine .NET InSim-Bibliothek für den Online-Rennsimulator Live for Speed. Es ermöglicht Ihnen, eine Verbindung zum Spiel herzustellen und Datenpakete auszutauschen. Diese Pakete können verwendet werden, um Live for Speed zu steuern, Befehle zu senden, Anfragen zu bearbeiten und Fahrzeugtelemetriedaten zu empfangen.
Die Bibliothek wurde so konzipiert, dass sie einfach, schnell und flexibel ist und so nah wie möglich am ursprünglichen InSim-Protokoll bleibt, während Sie sich die Feinheiten der direkten Socket-Programmierung ersparen.
Diese Projektseite ist für Version 2.0 der Bibliothek gedacht, die vollständige InSim-, InSim Relay-, OutSim- und OutGauge-Unterstützung, Verbesserungen der API und eine verbesserte Netzwerkeffizienz umfasst.
Ab InSim.NET 2.1.0 erfordert die Bibliothek .NET Framework 4.5 . Ältere Binärdateien für .NET 4.0 und 3.5 sind im Abschnitt „Releases“ verfügbar.
Um InSimDotNet mit NuGet zu installieren, führen Sie den folgenden Befehl in der Paket-Manager-Konsole aus.
PM > Install-Package InSimDotNet
Sie können jetzt über PayPal spenden, um die Entwicklung von InSim.NET zu finanzieren. Jeder Betrag ist willkommen! Klicken Sie einfach auf das Bild unten.
Dies ist das einfachste InSim-Programm, das Sie schreiben können (das etwas bewirkt). Wir initialisieren InSim und senden die Nachricht „Hallo, InSim!“ zum Chat des Spiels.
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! " ) ;
Um ein Paket zu empfangen, binden Sie einen Handler mit der Methode InSim.Bind()
. In diesem Beispiel binden wir einen Handler für das Paketereignis 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 ) ;
}
Um ein Paket zu senden, verwenden Sie die Methode InSim.Send(ISendable)
.
insim . Send ( new IS_TINY {
SubT = TinyType . TINY_NCN
} ) ;
Um Bandbreite zu sparen, senden Sie mehrere Pakete in einem einzigen Aufruf mit der Methode InSim.Send(params ISendable[])
.
insim . Send (
new IS_TINY {
SubT = TinyType . TINY_NCN
} ,
new IS_SMALL {
SubT = SmallType . SMALL_SSP ,
}
) ;
Um ein Programm geöffnet zu halten, während InSim noch verbunden ist.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
Hier ist alles zusammen.
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.
}
Um InSim Relay zu verwenden, müssen Sie die Eigenschaft InSimSettings.IsRelayHost
auf „true“ setzen.
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> " } ) ;
Die Verwendung von OutGauge (oder OutSim) ist genauso einfach! In diesem Beispiel wird die Drehzahl des aktuell angezeigten Autos auf der Konsole gedruckt.
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 ) ;
Viele weitere Beispiele und Informationen zur Nutzung der Bibliothek finden Sie im Dokumentations-Wiki.