Para obter uma versão .NET Core da biblioteca, clique aqui. Para obter uma versão .NET 6 da biblioteca, clique aqui.
InSim.NET é uma biblioteca .NET InSim para o simulador de corrida online Live for Speed. Ele permite que você se conecte ao jogo e compartilhe pacotes de dados. Esses pacotes podem ser usados para controlar o Live for Speed, enviar comandos, lidar com solicitações e receber dados de telemetria do carro.
A biblioteca foi projetada para ser simples, rápida e flexível, e permanece o mais próximo possível do protocolo InSim original, ao mesmo tempo que evita os detalhes da programação de soquetes diretamente.
Este site do projeto é para a versão 2.0 da biblioteca, que inclui suporte completo para InSim, InSim Relay, OutSim e OutGauge, melhorias na API e maior eficiência de rede.
Do InSim.NET 2.1.0 em diante a biblioteca requer o .NET Framework 4.5 . Binários mais antigos para .NET 4.0 e 3.5 estão disponíveis na seção de lançamentos.
Para instalar o InSimDotNet usando NuGet, execute o seguinte comando no Package Manager Console.
PM > Install-Package InSimDotNet
Agora você pode doar usando o PayPal para ajudar a financiar o desenvolvimento do InSim.NET. Qualquer quantia é bem-vinda! Basta clicar na imagem abaixo.
Este é o programa InSim mais simples que você pode escrever (que faz alguma coisa). Inicializamos o InSim e enviamos a mensagem 'Hello, InSim!' para o chat do jogo.
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 receber um pacote, vincule um manipulador usando o método InSim.Bind()
. Neste exemplo, vinculamos um manipulador para o evento de pacote 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 um pacote use o método InSim.Send(ISendable)
.
insim . Send ( new IS_TINY {
SubT = TinyType . TINY_NCN
} ) ;
Para economizar largura de banda, envie vários pacotes em uma única chamada usando o método InSim.Send(params ISendable[])
.
insim . Send (
new IS_TINY {
SubT = TinyType . TINY_NCN
} ,
new IS_SMALL {
SubT = SmallType . SMALL_SSP ,
}
) ;
Para manter um programa aberto enquanto o InSim ainda está conectado.
while ( insim . IsConnected ) {
Thread . Sleep ( 200 ) ;
}
Aqui está tudo 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 usar o InSim Relay é uma questão de definir a propriedade InSimSettings.IsRelayHost
como 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> " } ) ;
Usar OutGauge (ou OutSim) é igualmente simples! Este exemplo imprime o RPM do carro atualmente visualizado no console.
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 ) ;
Você pode encontrar muitos outros exemplos e informações sobre como usar a biblioteca no wiki de documentação.