Для версии библиотеки .NET Core перейдите сюда. Для версии библиотеки .NET 6 перейдите сюда.
InSim.NET — это библиотека .NET InSim для онлайн-симулятора гонок Live for Speed. Он позволяет вам подключаться к игре и обмениваться пакетами данных. Эти пакеты можно использовать для управления 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 доступны в разделе выпусков.
Чтобы установить InSimDotNet с помощью NuGet, выполните следующую команду в консоли диспетчера пакетов.
PM > Install-Package InSimDotNet
Теперь вы можете сделать пожертвование через PayPal для финансирования разработки InSim.NET. Любая сумма приветствуется! Просто нажмите на изображение ниже.
Это самая простая программа InSim, которую вы можете написать (которая что-то делает). Мы инициализируем InSim и отправляем сообщение «Привет, 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) так же просто! В этом примере на консоль выводятся текущие просматриваемые обороты автомобиля.
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 ) ;
Вы можете найти еще много примеров и информацию об использовании библиотеки в вики-документации.