Как узнать нету ли между двух координат каких-либо объектов?
---------------------------
Нашёл.
---------------------------
Скоро напишу пример, если кому то понадобится
---------------------------
(Я в C++ не очень, так что простите за мои косяки в коде, если они есть. Но всё вроде исправно работает)
Получается, если между камерой и нужным игроком есть какой либо объект/здание (НЕ машины, просвечивающие объекты (решётка и т.д), игроки), то выражение "okay" будет равно true, если нет false.
Грубо говоря если ты видишь игрока то false, нет значит true.
int iPlayer = 1;
if (SF->getSAMP()->getPlayers()->IsPlayerDefined(iPlayer, true)) {
stRemotePlayer* pl = SF->getSAMP()->getPlayers()->pRemotePlayer[iPlayer]; // нужный игрок
CVector* plPos = &CVector(pl->pPlayerData->fOnFootPos[0], pl->pPlayerData->fOnFootPos[1], pl->pPlayerData->fOnFootPos[2]); // создание вектора позиции игрока
CVector* camPos = GAME->GetCamera()->GetCam(GAME->GetCamera()->GetActiveCam())->GetSource(); // получения вектора позиции камеры
CColPoint** colPoint = NULL; // точка соприкосновения с объектом (если условие равно true)
CEntity** entity = NULL; // Указатель на энтити в месте соприкосновения (если условие равно true)
SLineOfSightFlags flags = SLineOfSightFlags(); // условия просчёта
// Если столкновение c:
flags.bCheckBuildings = true; // Строениями (гташные пол, дома и т.д)
flags.bCheckCarTires = false; // Хз что это
flags.bCheckDummies = false; // тоже хз
flags.bCheckObjects = true; // Объектами (я так понял самповскими)
flags.bCheckPeds = false; // Педами (Игроками. Лучше false если проверка идёт между игроками, иначе "okay" всегда будет true, из-за того что "луч" будет врезаться в самого игрока)
flags.bCheckVehicles = false; // Машинами
flags.bIgnoreSomeObjectsForCamera = false; // Так и не понял что это
flags.bSeeThroughStuff = false; // C "просвечивающимися" объектами (решётками и т.д)
flags.bShootThroughStuff = true; // С объектами которые можно прострелить
bool okay = GAME->GetWorld()->ProcessLineOfSight(plPos, camPos, colPoint, entity, flags); // Сама проверка
if (okay) {
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 255, 0), "+");
} else {
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 0, 0), "-");
}
}