【分享】CS2 Trace相关数据结构 代码鉴赏 CS2

Ambr0se 一级用户组 6天前 96

本来是想给CSSharp PR提交 TraceSharp等方法的,但是其实这些方法不需要在C++层实现(CSSharp将TraceSharp等分类到了NativeAPI)

我就懒得弄了。用到的数据结构如下,大家自己研究吧。

	[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x39)]
	public unsafe struct CTraceFilter {
		public nint pVtable;				// <- 0x0
		public ulong nTraceMask;			// <- 0x8
		public fixed byte pad_01[16];		// <- 0x10
		public fixed uint arrSkipHandles[4];// <- 0x20
		public fixed short arrCollisions[2];// <- 0x30
		// public short nUnknown_01;			// <- 0x34
		// public byte nUnknown_02;			// <- 0x36
		// public byte nUnknown_03;			// <- 0x37
		// public byte nUnknown_04;			// <- 0x38
		public uint nUnknown_01;			// <- 0x34
		public byte nUnknown_02;			// <- 0x38
	}

	[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x104)]
	public unsafe struct CGameTrace {
		public nint pSurface;				// <- 0x0
		public nint pHitEntity;				// <- 0x8
		public nint pHitboxData;			// <- 0x10
		public fixed byte pad_01[56];		// <- 0x18
		public uint nContents;				// <- 0x50
		public fixed byte pad_02[36];		// <- 0x54
		public Vector3 vecStart;			// <- 0x78
		public Vector3 vecEnd;				// <- 0x84
		public Vector3 vecNormal;			// <- 0x90
		public Vector3 vecPosition;			// <- 0x9c
		public fixed byte pad_03[4];		// <- 0xa8
		public float flFraction;			// <- 0xac
		public fixed byte pad_04[4];		// <- 0xb2
		public bool bStartSolid;			// <- 0xb6
		public fixed byte pad_05[77];		// <- 0xb7

		public bool DidHit() => this.flFraction < 1.0f || this.bStartSolid;
		public bool IsVisible() => this.flFraction > 0.9f;
	}

	[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x35)]
	public unsafe struct CTraceRay {
		public Vector3 vecStart;			// <- 0x0
		public Vector3 vecEnd;				// <- 0xc
		public Vector3 vecMins;				// <- 0x18
		public Vector3 vecMaxs;				// <- 0x24
		public fixed byte pad_01[4];		// <- 0x30
		public byte nUnknown_01;			// <- 0x34
	}

 

PS. 我之前发在论坛的代码片段,有的部分莫名被吞了。如果上文片段报错,参考下图。


CSGO插件分享-申明 1、本网站名称:CSGO插件分享-中文站  网址:https://bbs.csgocn.net
2、本站的宗旨在于为CSGO玩家提供一个插件分享的中文资源平台,多数插件来源于SourceMod论坛,并配以中文介绍和安装教程。
3、欢迎有能力的朋友共享有趣的CSGO插件资源。
4、本站资源大多为百度网盘,如发现链接失效,可以点: 这里进行反馈,我们会第一时间更新。
最新回复 (3)
返回