if (packetId == ID_BULLET_SYNC) { traceLastFunc("ID_BULLET_SYNC"); stBulletData OutgoingBulletData; bitStream->Read((PCHAR)&OutgoingBulletData, sizeof(stBulletData)); if (set.WeaponCheats.Weapon_Damage > 0) { for (int iHasar = 0; iHasar < set.WeaponCheats.Weapon_Damage; iHasar++) { g_RakClient->SendDamage(OutgoingBulletData.sTargetID, fWeaponDamage[g_Players->pLocalPlayer->byteCurrentWeapon], g_Players->pLocalPlayer->byteCurrentWeapon, 3); g_RakClient->Send(bitStream, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0); } } if (cheat_state->Silent.bSilent) { if (cheat_state->Silent.bSilent) { if (g_NewModSa->iAimPlayerID == INVALID) return true; if (!IsPlayerStreamed(g_NewModSa->iAimPlayerID)) return true; float TargetPos[3], Spread[3]; switch (g_Players->pRemotePlayer[g_NewModSa->iAimPlayerID]->pPlayerData->bytePlayerState) { case PLAYER_STATE_ONFOOT: for (short x = 0; x < 3; x++) TargetPos[x] = g_Players->pRemotePlayer[g_NewModSa->iAimPlayerID]->pPlayerData->fOnFootPos[x]; break; case PLAYER_STATE_DRIVER: for (short x = 0; x < 3; x++) TargetPos[x] = g_Players->pRemotePlayer[g_NewModSa->iAimPlayerID]->pPlayerData->inCarData.fPosition[x]; break; case PLAYER_STATE_PASSENGER: for (short x = 0; x < 3; x++) TargetPos[x] = g_Players->pRemotePlayer[g_NewModSa->iAimPlayerID]->pPlayerData->passengerData.fPosition[x]; break; } int BodyPart = CalculateSpreadOffset(g_NewModSa->iAimPlayerID, TargetPos, Spread); actor_info* player = getGTAPedFromSAMPPlayerID(g_NewModSa->iAimPlayerID); CPed* pPed = pGameInterface->GetPools()->GetPed((DWORD*)player); CVector fBonePos; pPed->GetBonePosition((eBone)cheat_state->Silent.iSilentBone, &fBonePos); OutgoingBulletData.byteType = BULLET_HIT_TYPE_PLAYER; OutgoingBulletData.fTarget[0] = fBonePos.fX; OutgoingBulletData.fTarget[1] = fBonePos.fY; OutgoingBulletData.fTarget[2] = fBonePos.fZ; OutgoingBulletData.fCenter[0] = Spread[0]; OutgoingBulletData.fCenter[1] = Spread[1]; OutgoingBulletData.fCenter[2] = Spread[2]; OutgoingBulletData.sTargetID = g_NewModSa->iAimPlayerID; uint8_t chance = rand() % 100 + 1; // Oranı 0 ile 100 arası RANDOM sayı ürettir. if (chance < set.silentAim.iHitChanceValue) { if (g_Players->pRemotePlayer[g_NewModSa->iAimPlayerID]->pPlayerData->pSAMP_Actor->pGTA_Ped->hitpoints != 0) { bitStream->Reset(); bitStream->Write((BYTE)ID_BULLET_SYNC); bitStream->Write((PCHAR)& OutgoingBulletData, sizeof(stBulletData)); g_RakClient->Send(bitStream, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0); g_RakClient->SendGiveDamage(g_NewModSa->iAimPlayerID, CalculateDamage(), g_Players->pLocalPlayer->byteCurrentWeapon, BodyPart); return false; } } } } bitStream->Reset(); bitStream->Write((BYTE)ID_BULLET_SYNC); bitStream->Write((PCHAR)&OutgoingBulletData, sizeof(stBulletData)); }