OuchBot
Давайте сделаем простого бота, который пишет в чат Ouch!!!, когда его бьют.
Для этого нам нужно узнать идентификатор сущности бота из пакета Login (он еще называется Join Game):
if (packet is CPlay.LoginPacket login)
{
_myEntityId = login.EntityId;
}
Затем нужно прочитать пакет EntityVelocity, который передаёт скорость сущности. Мы должны сравнить переданный идентификатор в пакете со своим, и затем отправить пакет чата:
if (packet is CPlay.EntityVelocityPacket velocityPacket)
{
if (velocityPacket.EntityId == _myEntityId)
{
await SendChat("Ouch!!!");
}
}
К сожалению, из-за автогенерации пакетов, пакет чата разделён на два. Поэтому для удобства был создан метод:
private async ValueTask SendChat(string message)
{
if (_client.TrySend<SPlay.ChatPacket>(out var sender1))
{
sender1.Packet.Message = message;
await sender1.Send();
}
else if (_client.
TrySend<SPlay.ChatMessagePacket>(out var sender2))
{
sender2.Packet.Message = message;
await sender2.Send();
}
}
Результат
Last modified: 14 March 2025