wS_GetLookPos(client, Float:wS_Pos[3]) // Получение позиции прицела
{
decl Float:EyePosition[3], Float:EyeAngles[3], Handle:h_trace;
GetClientEyePosition(client, EyePosition);
GetClientEyeAngles(client, EyeAngles);
h_trace = TR_TraceRayFilterEx(EyePosition, EyeAngles, MASK_SOLID, RayType_Infinite, wS_GetLookPos_Filter, client);
TR_GetEndPosition(wS_Pos, h_trace);
CloseHandle(h_trace);
}
public bool:wS_GetLookPos_Filter(ent, mask, any:client) //Проверка, что игрок не смотрит сам на себя.
{
return client != ent;
}
GetVectorDistance допиши. Ты же так и не получилCloseHandle(h_trace);
А лишь позицию.расстояние до стены
Объясните мне как клиент может смотреть на себя? Или для чего это?
PHP:public bool:wS_GetLookPos_Filter(ent, mask, any:client) { return client != ent; }
Точно - никак. Лишь допусками или диапазонами.Как определить, что смотрим именно на вертикальную поверхность
Странно, я по x углу смещения определял. Если 0.0, то смотрит вперёд. Если < 0.0, то вниз, если > 0.0, то вверх.Вариант 1. По углу смотрящего (z составляющая).
Можно извратиться, "покрыв" нужную стену большой по размерам (подходящей) энтити - если трейсер находит её номер, значит, игрок точно смотрит на стену (установленную энтити). Весьма точно, хотя малостоящее (очень неудобное - ставить на каждой карте то).Точно - никак
Странно, я по x углу смещения определял. Если 0.0, то смотрит вперёд. Если < 0.0, то вниз, если > 0.0, то вверх.
Ну а это уже допущение, что человек на каждой карте расставит эти сущности. Без допущений - это чистый вариант, который работает на любой карте в любом случае, без предварительной обработки.Можно извратиться