HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 30.03.2021, 15:18
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Пытался изменить координаты камеры через
Код:
SF->getGame()->getCamera()->setMatrix()
, инструкция выполнялась в цикле с задержкой в один кадр. Увы, визуально это ничего не изменило, если выводить координаты камеры на экран, то можно заметить, что иногда там мерцают новые значения, но по всей видимости игра точно так же меняет значения на свои. Как решить эту проблему и есть ли где-то открытый код с примером?
 
Ответить с цитированием

  #2  
Старый 15.04.2021, 21:40
legendabrn
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами: 3781678

Репутация: 113
По умолчанию

Код:





Код:
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);
 
Ответить с цитированием

  #3  
Старый 15.04.2021, 21:51
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от anticoder  

Код:





Код:
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);

Это точно установка положения камеры, а не её направления? Не хватает третьей оси координат.
 
Ответить с цитированием

  #4  
Старый 15.04.2021, 21:54
legendabrn
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами: 3781678

Репутация: 113
По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

Это точно установка положения камеры, а не её направления? Не хватает третьей оси координат.
направления
 
Ответить с цитированием

  #5  
Старый 15.04.2021, 22:05
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от anticoder  

направления
Есть рабочий код на Lua, там используется функция setFixedCameraPosition(), но в SAMPFUNCS такой нет.

UPD: Такая функция есть, называется SetCamPositionForFixedMode(), сейчас попробую.

UPD: Не работает.
 
Ответить с цитированием

  #6  
Старый 16.04.2021, 22:16
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

@FYP создал Moonloader и SAMPFUNCS. Может он знает почему одна и та же функция работает в ML и не работает в SF?
 
Ответить с цитированием

  #7  
Старый 19.04.2021, 02:00
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

@sanєk , этой функции нет в вики. Как Вы узнали о её существовании?
 
Ответить с цитированием

  #8  
Старый 19.04.2021, 02:25
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Мдааа. @FYP удалил все функции для изменения позиции камеры и даже не указал это в истории изменений Муна.
 
Ответить с цитированием

  #9  
Старый 19.04.2021, 03:20
sаnеk
Флудер
Регистрация: 22.11.2015
Сообщений: 2,128
С нами: 5512984

Репутация: 183


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

@sanєk , этой функции нет в вики. Как Вы узнали о её существовании?
а я тут причем?
 
Ответить с цитированием

  #10  
Старый 19.04.2021, 03:21
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от sanєk  

а я тут причем?
Цитата:
Сообщение от Ya Zaregalsya  

Есть рабочий код на Lua, там используется функция setFixedCameraPosition(), но в SAMPFUNCS такой нет.

UPD: Такая функция есть, называется SetCamPositionForFixedMode(), сейчас попробую.
UPD: Не работает.
Судя по всему, эта функция присутствовала в вики когда Вы писали скрипт, но была удалена позже.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.