Auto Kill AI Mgr

Posts 1–2 of 2 · Page 1 of 1
Auto Kill AI Mgr
since the anticheat devs already know how the feature works, i don't really care about posting more about it.

the question is, what would be the message ID for the autokill AI?
i don't get anything with MSG_CS_AI_DAMAGE

Code:
	oSendToServer(CLTClient, pMsg, flag);

	CAutoMessage msg;

	uint8 iPacketSeqIndex = GetS2SCounter();
	GetS2SCounter() = iPacketSeqIndex + 1;

	msg.WriteBits(MSG_CS_AI_DAMAGE, 16);
	iPacketSeqIndex = (16 * iPacketSeqIndex) | ((iPacketSeqIndex >> 4) & 0xF);

	uint32 u32DummyData = 0xB27AD5F7;
	uint32 damageAICount = 99;
	uint8  tWeaponClass = 1;
	uint16 tWeaponType = 1;
	int16  damageValue = 999;

	auto tAttackerIndex = ReadMemory<BYTE>(LTShell + OFFSET_PlayerID);

	msg.WriteBits(u32DummyData, 5);
	msg.WriteBits(iPacketSeqIndex, 8);
	msg.WriteBits(tAttackerIndex, 8);
	msg.WriteBits((uint8)damageAICount, 8);

	int countSent = 0;

	for (int index = 0; index < SFXObjMax && countSent < (int)damageAICount; index++)
	{
		auto ObjectList = ReadMemory<ModelInstance*>(SFXObjects + 0x18C0 + index * 0x8C);
		if (!ObjectList)
			continue;

		auto enemyBone = ObjectList->pBone()->BoneMatrix(6);
		auto enemyBody = ObjectList->pBone()->BoneMatrix(4);

		Vector3 enemyPos(enemyBone._14, enemyBone._24, enemyBone._34);
		Vector3 enemyBod(enemyBody._14, enemyBody._24, enemyBody._34);

		if (enemyPos.x == 0.0f || enemyPos.y == 0.0f || enemyPos.z == 0.0f)
			continue;
		if (enemyBod.x == 0.0f || enemyBod.y == 0.0f || enemyBod.z == 0.0f)
			continue;

		msg.WriteObject((HOBJECT)ObjectList);
		msg.WriteBits(damageValue, 16);

		msg.WriteBits(tWeaponClass, 8);
		msg.WriteBits(tWeaponType, 16);

		LTVector damagePos = { enemyPos.x, enemyPos.y, enemyPos.z };
		msg.WriteCompLTVector(damagePos);

		countSent++;
	}

	auto v19 = msg.Size();
	msg.Writeuint8((uint8)(v19 * iPacketSeqIndex));

	return oSendToServer(CLTClient, msg.Read(), MESSAGE_GUARANTEED);
Quote Originally Posted by CaiozinhoL View Post
since the anticheat devs already know how the feature works, i don't really care about posting more about it.

the question is, what would be the message ID for the autokill AI?
i don't get anything with MSG_CS_AI_DAMAGE

Code:
	oSendToServer(CLTClient, pMsg, flag);

	CAutoMessage msg;

	uint8 iPacketSeqIndex = GetS2SCounter();
	GetS2SCounter() = iPacketSeqIndex + 1;

	msg.WriteBits(MSG_CS_AI_DAMAGE, 16);
	iPacketSeqIndex = (16 * iPacketSeqIndex) | ((iPacketSeqIndex >> 4) & 0xF);

	uint32 u32DummyData = 0xB27AD5F7;
	uint32 damageAICount = 99;
	uint8  tWeaponClass = 1;
	uint16 tWeaponType = 1;
	int16  damageValue = 999;

	auto tAttackerIndex = ReadMemory<BYTE>(LTShell + OFFSET_PlayerID);

	msg.WriteBits(u32DummyData, 5);
	msg.WriteBits(iPacketSeqIndex, 8);
	msg.WriteBits(tAttackerIndex, 8);
	msg.WriteBits((uint8)damageAICount, 8);

	int countSent = 0;

	for (int index = 0; index < SFXObjMax && countSent < (int)damageAICount; index++)
	{
		auto ObjectList = ReadMemory<ModelInstance*>(SFXObjects + 0x18C0 + index * 0x8C);
		if (!ObjectList)
			continue;

		auto enemyBone = ObjectList->pBone()->BoneMatrix(6);
		auto enemyBody = ObjectList->pBone()->BoneMatrix(4);

		Vector3 enemyPos(enemyBone._14, enemyBone._24, enemyBone._34);
		Vector3 enemyBod(enemyBody._14, enemyBody._24, enemyBody._34);

		if (enemyPos.x == 0.0f || enemyPos.y == 0.0f || enemyPos.z == 0.0f)
			continue;
		if (enemyBod.x == 0.0f || enemyBod.y == 0.0f || enemyBod.z == 0.0f)
			continue;

		msg.WriteObject((HOBJECT)ObjectList);
		msg.WriteBits(damageValue, 16);

		msg.WriteBits(tWeaponClass, 8);
		msg.WriteBits(tWeaponType, 16);

		LTVector damagePos = { enemyPos.x, enemyPos.y, enemyPos.z };
		msg.WriteCompLTVector(damagePos);

		countSent++;
	}

	auto v19 = msg.Size();
	msg.Writeuint8((uint8)(v19 * iPacketSeqIndex));

	return oSendToServer(CLTClient, msg.Read(), MESSAGE_GUARANTEED);
there are 3 msgs you need to send at the same time to make it work. I think yes this is one of them.
Posts 1–2 of 2 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?