Исходник TurnCamTo - поворачиваем камеру на указ. координаты

SuSmer4Coder

Активный
Автор темы
386
44
TurnCamToX - Функция в дополнение к samp udf-у которая поворачивает камеру на указанные координаты, но только по оси X.
TurnCamToX:
global CAM_X := 0xB6F258

atan2(x, y) {
   return DllCall("msvcrt\atan2", "Double", y, "Double", x, "CDECL Double")
}

TurnCamToX(X,Y,Z)
{
    Cam := getCameraCoordinates()
    VectorX := X - Cam[1]
    VectorY := Y - Cam[2]
    VectorZ := Z - Cam[3]
    Angle := atan2(VectorY, -VectorX) - 3.14 / 2
    WriteFloat(hGTA, CAM_X, Angle + 0.04)
}
Cпасибо @CleanLegend у которого я успешно почти все просто переписал на другой ЯП.

Upd - TurnCamToY

TurnCamToY - Функция в дополнение к samp udf-у которая поворачивает камеру на указанные координаты, но только по оси Y, в силу моей криворукости угол рассчитывается немного криво так указывайте поправку в функции WriteFloat.
TurnCamToY:
global CAM_Y := 0xB6F248 ; Спасибо CleanLegend за аддрес

atan2(x, y) {
   return DllCall("msvcrt\atan2", "Double", y, "Double", x, "CDECL Double")
}

TurnCamToY(X,Y,Z)
{
    Cam := getCameraCoordinates()
    VectorX := X - Cam[1]
    VectorY := Y - Cam[2]
    VectorZ := Z - Cam[3]
    dist := Sqrt(VectorX * VectorX + VectorY * VectorY)
    AngleZ := Atan2(dist, VectorZ)
    WriteFloat(hGTA, CAM_Y, AngleZ - 0.103)
}
Кста, кто знает почему угол рассчитывается неправильно и нужна поправка?

Upd - TurnCamTo

TurnCamTo - Функция в дополнение к samp udf-у которая поворачивает камеру на указанные координаты, но в силу моей криворукости углы рассчитываются немного не правильно и нужно делать поправки, аргументы EX и EZ за это отвечают,оптимальные значения которые я подобрал это:
EX = 0.04
EZ = 0.103
TurnCamTo:
global CAM_Y := 0xB6F248
global CAM_X := 0xB6F258

atan2(x, y) {
   return DllCall("msvcrt\atan2", "Double", y, "Double", x, "CDECL Double")
}
EZ := 0.103 ; Поправка для оси Y, ибо угол в силу моей криворукости рассчитывается не правильно
EX := 0.04  ; Поправка для оси X

TurnCamToCoord(X,Y,Z,EX, EZ)
{
    Cam := getCameraCoordinates()
    VectorX := X - Cam[1]
    VectorY := Y - Cam[2]
    VectorZ := Z - Cam[3]
    dist := Sqrt(VectorX * VectorX + VectorY * VectorY)
    AngleX := atan2(VectorY, -VectorX) - 3.14 / 2 + EX
    AngleZ := atan2(dist, VectorZ) - EZ
    WriteFloat(hGTA, CAM_X, AngleX) ; Меняем угол X
    WriteFloat(hGTA, CAM_Y, AngleZ) ; Меняем угол Y
 
}
 
Последнее редактирование:

nakolyeni

Участник
28
15
Можно объяснения для личинок, как я, как это должно работать
Upd Как и где?)
 

SuSmer4Coder

Активный
Автор темы
386
44
Можно объяснения для личинок, как я, как это должно работать
Upd Как и где?)
В аргументах функции указываешь координаты куда повернуть камеру. Сначала по оси X, затем Y, затем Z координаты.
Можешь какого нибудь бота сделать с поворотом камеры, можешь сделать аимбот. Я изначально эту функцию сделал когда делал(пытался сделать) аимбот.