Просмотр полной версии : Как установить камеру на определённые координаты?
Ya Zaregalsya
30.03.2021, 15:18
Пытался изменить координаты камеры через
SF->getGame()->getCamera()->setMatrix()
, инструкция выполнялась в цикле с задержкой в один кадр. Увы, визуально это ничего не изменило, если выводить координаты камеры на экран, то можно заметить, что иногда там мерцают новые значения, но по всей видимости игра точно так же меняет значения на свои. Как решить эту проблему и есть ли где-то открытый код с примером?
legendabrn
15.04.2021, 21:40
Код:
void getScreenResolution(int& horizontal, int& vertical)
{
RECT desktop;
const HWND hDesktop = GetDesktopWindow();
GetWindowRect(hDesktop, &desktop);
horizontal = desktop.right;
vertical = desktop.bottom;
}
void getCrossHairPos(int& crosshairPosX, int& crosshairPosY)
{
int iHeight, iWidth;
getScreenResolution(iWidth, iHeight);
float chOff1 = *(float*)0xB6EC10, chOff2 = *(float*)0xB6EC14;
crosshairPosX = iWidth * chOff2;
crosshairPosY = iHeight * chOff1;
}
void cameraset(float X, float Y) {
CVector mypos;
CVector enpos;
CVector vector;
int h, v;
enpos.fX = X;
enpos.fY = Y;
getCrossHairPos(h, v);
mypos.fX = h;
mypos.fY = v;
vector = mypos - enpos;
float AngleX = atan2f(vector.fY, -vector.fX) - M_PI / 2;
*(float*)0xB6F258 = -(AngleX - M_PI / 2);
}
Код:
cameraset(500,500);
Ya Zaregalsya
15.04.2021, 21:51
Код:
void getScreenResolution(int& horizontal, int& vertical)
{
RECT desktop;
const HWND hDesktop = GetDesktopWindow();
GetWindowRect(hDesktop, &desktop);
horizontal = desktop.right;
vertical = desktop.bottom;
}
void getCrossHairPos(int& crosshairPosX, int& crosshairPosY)
{
int iHeight, iWidth;
getScreenResolution(iWidth, iHeight);
float chOff1 = *(float*)0xB6EC10, chOff2 = *(float*)0xB6EC14;
crosshairPosX = iWidth * chOff2;
crosshairPosY = iHeight * chOff1;
}
void cameraset(float X, float Y) {
CVector mypos;
CVector enpos;
CVector vector;
int h, v;
enpos.fX = X;
enpos.fY = Y;
getCrossHairPos(h, v);
mypos.fX = h;
mypos.fY = v;
vector = mypos - enpos;
float AngleX = atan2f(vector.fY, -vector.fX) - M_PI / 2;
*(float*)0xB6F258 = -(AngleX - M_PI / 2);
}
Код:
cameraset(500,500);
Это точно установка положения камеры, а не её направления? Не хватает третьей оси координат.
legendabrn
15.04.2021, 21:54
Это точно установка положения камеры, а не её направления? Не хватает третьей оси координат.
направления
Ya Zaregalsya
15.04.2021, 22:05
направления
Есть рабочий код на Lua, (https://www.blast.hk/threads/20243/) там используется функция setFixedCameraPosition(), но в SAMPFUNCS такой нет.
UPD: Такая функция есть, называется SetCamPositionForFixedMode(), сейчас попробую.
UPD: Не работает.
Ya Zaregalsya
16.04.2021, 22:16
@FYP (https://www.blast.hk/members/2/) создал Moonloader и SAMPFUNCS. Может он знает почему одна и та же функция работает в ML и не работает в SF?
Ya Zaregalsya
19.04.2021, 02:00
@sanєk (https://www.blast.hk/members/78378/) , этой функции нет в вики. Как Вы узнали о её существовании?
Ya Zaregalsya
19.04.2021, 02:25
Мдааа. @FYP (https://www.blast.hk/members/2/) удалил все функции для изменения позиции камеры и даже не указал это в истории изменений Муна.
@sanєk (https://www.blast.hk/members/78378/) , этой функции нет в вики. Как Вы узнали о её существовании?
а я тут причем?
Ya Zaregalsya
19.04.2021, 03:21
а я тут причем?
Есть рабочий код на Lua, (https://www.blast.hk/threads/20243/) там используется функция setFixedCameraPosition(), но в SAMPFUNCS такой нет.
UPD: Такая функция есть, называется SetCamPositionForFixedMode(), сейчас попробую.
UPD: Не работает.
Судя по всему, эта функция присутствовала в вики когда Вы писали скрипт, но была удалена позже.
https://forum.antichat.xyz/attachments/27718990/
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot