Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .vs/ZwiftPacketMonitor/DesignTimeBuild/.dtbcache.v2
Binary file not shown.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ See the included ZwiftPacketMonitor.Demo project for a complete working example.
monitor.OutgoingPlayerEvent += (s, e) => {
logger.LogInformation($"OUTGOING: {e.PlayerState}");
};
monitor.IncomingChatMessageEvent += (s, e) => {
logger.LogInformation($"CHAT: {e.Message}");
monitor.IncomingSocialPlayerActionEvent += (s, e) => {
logger.LogInformation($"SPA: {e.SocialPlayerAction}");
};
monitor.IncomingPlayerEnteredWorldEvent += (s, e) => {
logger.LogInformation($"WORLD: {e.PlayerUpdate}");
monitor.IncomingSegmentResultWorldEvent += (s, e) => {
logger.LogInformation($"SegmentResult: {e.SegmentResult}");
};
monitor.IncomingRideOnGivenEvent += (s, e) => {
logger.LogInformation($"RIDEON: {e.RideOn}");
Expand Down
62 changes: 55 additions & 7 deletions demo/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,74 @@ static void Main(string[] args)
var logger = serviceProvider.GetService<ILogger<Program>>();
var monitor = serviceProvider.GetService<Monitor>();

monitor.IncomingPlayerEvent += (s, e) =>
/*monitor.IncomingPlayerEvent += (s, e) =>
{
logger.LogInformation($"INCOMING: {e.PlayerState}");
};
monitor.OutgoingPlayerEvent += (s, e) =>
{
logger.LogInformation($"OUTGOING: {e.PlayerState}");
};*/
monitor.IncomingSocialPlayerActionEvent += (s, e) =>
{
logger.LogInformation($"SPA: {e.SocialPlayerAction}");
};
monitor.IncomingChatMessageEvent += (s, e) =>
/*monitor.IncomingSegmentResultEvent += (s, e) =>
{
logger.LogInformation($"SegmentResult: {e.SegmentResult}");
};*/
monitor.IncomingRideOnGivenEvent += (s, e) =>
{
logger.LogInformation($"CHAT: {e.Message}");
logger.LogInformation($"RIDEON: {e.RideOn}, wa: {e.WorldAttribute}");
};
monitor.IncomingPlayerEnteredWorldEvent += (s, e) =>
monitor.IncomingEventProtobufEvent += (s, e) =>
{
logger.LogInformation($"WORLD: {e.PlayerUpdate}");
logger.LogInformation($"EventProtobuf: {e.EventProtobuf}, wa: {e.WorldAttribute}");
};
monitor.IncomingRideOnGivenEvent += (s, e) =>
monitor.IncomingPlayerJoinedEvent += (s, e) =>
{
logger.LogInformation($"PlayerJoinedEvent: {e.PlayerJoinedEvent}, wa: {e.WorldAttribute}");
};
monitor.IncomingPlayerLeftEvent += (s, e) =>
{
logger.LogInformation($"PlayerLeftEvent: {e.PlayerLeftEvent}, wa: {e.WorldAttribute}");
};
/*monitor.IncomingPlayerLeftWorldEvent += (s, e) =>
{
logger.LogInformation($"PlayerLeftWorld: {e.WaType}: {e.PlayerLeftWorld}");
};*/
monitor.IncomingEventInviteEvent += (s, e) =>
{
logger.LogInformation($"EventInvite: {e.EventProtobuf}, wa: {e.WorldAttribute}");
};
/*monitor.IncomingNotableEvent += (s, e) =>
{
logger.LogInformation($"Notable: PlayerId: {e.PlayerId} Hex: {e.NotableHexStr}");
};*/
/*monitor.IncomingGroupEvent += (s, e) =>
{
logger.LogInformation($"GroupEvent {e.GeKindStr}: PlayerId: {e.PlayerId} Hex: {e.GeHexStr}");
};*/
monitor.IncomingBikeActionEvent += (s, e) =>
{
logger.LogInformation($"BikeActionEvent {e.BikeAction}: PlayerId: {e.PlayerId} Hex: {e.BaHexStr}");
};
monitor.IncomingNoPayloadWaEvent += (s, e) =>
{
logger.LogInformation($"RIDEON: {e.RideOn}");
logger.LogInformation($"NoPayloadWa: {e.WaType}");
};
monitor.IncomingMessageWaEvent += (s, e) =>
{
logger.LogInformation($"Message: {e.WaType}: {e.Message}");
};
monitor.IncomingFloatTimeWaEvent += (s, e) =>
{
logger.LogInformation($"FloatTimeWa: {e.WaType}: {e.FloatTime}");
};
/*monitor.IncomingFlagWaEvent += (s, e) =>
{
logger.LogInformation($"FlagWa: {e.FlagWaInfo}");
};*/

// Print SharpPcap version
var ver = Pcap.SharpPcapVersion;
Expand Down
89 changes: 71 additions & 18 deletions src/EventArgs.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,84 @@
using System;

namespace ZwiftPacketMonitor
{ public class PlayerStateEventArgs : EventArgs {
namespace ZwiftPacketMonitor {
public class PlayerStateEventArgs : EventArgs {
public PlayerState PlayerState {get; set;}
}

public class PlayerEnteredWorldEventArgs : EventArgs {
public Payload105 PlayerUpdate {get; set;}
public class WaEventArgs : EventArgs {
public WorldAttribute WorldAttribute { get; set; }
}

public class RideOnGivenEventArgs : EventArgs {
public class SegmentResultEventArgs : WaEventArgs {
public SegmentResult SegmentResult { get; set;}
}
public class RideOnGivenEventArgs : WaEventArgs {
public RideOn RideOn {get; set;}
}

public class ChatMessageEventArgs : EventArgs {
public Chat Message {get; set;}
public class SocialPlayerActionEventArgs : WaEventArgs {
public SocialPlayerAction SocialPlayerAction { get; set;}
}

public class PlayerTimeSyncEventArgs : EventArgs {
public TimeSync TimeSync {get; set;}
public class PlayerLeftWorldEventArgs : WaEventArgs {
public PlayerLeftWorld PlayerLeftWorld { get; set;}
public WA_TYPE WaType { get; set; }
}

public class MeetupEventArgs : EventArgs {
public Meetup Meetup {get; set;}
public class EventProtobufEventArgs : WaEventArgs {
public EventProtobuf EventProtobuf { get; set;}
}

public class EventPositionsEventArgs : EventArgs {
public EventPositions EventPositions {get; set;}
public class PlayerJoinedEventArgs : WaEventArgs {
public PlayerJoinedEvent PlayerJoinedEvent {get; set;}
}
public class PlayerLeftEventArgs : WaEventArgs {
public PlayerLeftEvent PlayerLeftEvent {get; set;}
}
public class NotableEventArgs : WaEventArgs {
public string NotableHexStr { get; set;}
public Int64 PlayerId { get; set; }
}
public class GroupEventArgs : WaEventArgs {
public string GeHexStr { get; set;}
public string GeKindStr { get; set;}
public Int64 PlayerId { get; set; }
}
public enum BikeAction
{
BA_ELBOW = 0, BA_WAVE, BA_2, BA_RIDEON,
BA_HAMMER, BA_NICE, BA_BRING_IT, BA_TOAST, BA_BELL, BA_HOLIDAY_WAVE
}
public class BikeActionEventArgs : WaEventArgs {
public string BaHexStr { get; set;}
public BikeAction BikeAction { get; set;}
public Int64 PlayerId { get; set; }
}
public class NoPayloadWaEventArgs : WaEventArgs {
public WA_TYPE WaType { get; set;}
}
public class EventSubgroupPlacementsEventArgs : WaEventArgs {
public EventSubgroupPlacements EvSubgroupPs { get; set;}
}
public class MessageWaEventArgs : WaEventArgs {
public WA_TYPE WaType { get; set; }
public string Message { get; set; }
}
public class FloatTimeWaEventArgs : WaEventArgs {
public WA_TYPE WaType { get; set; }
public float FloatTime { get; set; }
}
public class FlagWaInfo {
public Int64 networkId, playerId;
public double doubleVal;
public int flag;
public FlagWaInfo(byte[] src) {
networkId = BitConverter.ToInt64(src, 0);
playerId = BitConverter.ToInt64(src, 8);
doubleVal = BitConverter.ToDouble(src, 16);
flag = BitConverter.ToInt32(src, 24);
}
public override string ToString() {
//networkId must be == 1 (also seen 4296802305), flag: 4 -> Sandbagger, otherwise: Cheater. Double looks like world_time/1000.
return $"networkId: {networkId}, playerId: {playerId}, doubleVal: {doubleVal}, flag: {flag}";
}
}
public class FlagWaEventArgs : WaEventArgs {
public FlagWaInfo FlagWaInfo { get; set; }
}
}
Loading