Русское сообщество по скриптингу

Найти точку камеры

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Найти точку камеры

Сообщение deadkid56 » 10 авг 2021, 02:41

Доброго времени суток. Мне необходимо установить камеру игрока так, чтобы она всегда находилась чуть правее от него. Сейчас "правильное" положение камеры устанавливается только при определенном повороте мышью. В векторах я не разбираюсь, поэтому прошу объяснить - как правильно найти точку?

Код: Выделить всё


public OnCamThink
(iCameraEnt)
{
    new iIndex = get_entvar(iCameraEnt, var_owner);

    if(!is_user_alive(iIndex) || !is_entity(iCameraEnt))
        return;
    new Float:flPlayerOrigin[XYZ], Float:flCamOrigin[XYZ], Float:flVecPlayerAngles[XYZ], Float:flVecCamAngles[XYZ];
    
    get_entvar
(iIndex, var_origin, flPlayerOrigin);
    get_entvar(iIndex, var_view_ofs, flVecPlayerAngles);
    
    flPlayerOrigin
[X] += flVecPlayerAngles[X] + 15.0;
    flPlayerOrigin[Z] += flVecPlayerAngles[Z];
    
    get_entvar
(iIndex, var_v_angle, flVecPlayerAngles);

    angle_vector(flVecPlayerAngles, ANGLEVECTOR_FORWARD, flVecCamAngles);
    
    xs_vec_sub_scaled
(flPlayerOrigin, flVecCamAngles, 45.0, flCamOrigin);
    
    engfunc
(EngFunc_TraceLine, flPlayerOrigin, flCamOrigin, IGNORE_MONSTERS, iIndex, 0);
    
    new Float
:flFraction;
    get_tr2(0, TR_flFraction, flFraction);
    
    xs_vec_sub_scaled
(flPlayerOrigin, flVecCamAngles, flFraction * 45.0, flCamOrigin);
    
    set_entvar
(iCameraEnt, var_origin, flCamOrigin);
    set_entvar(iCameraEnt, var_angles, flVecPlayerAngles);
    
    set_entvar
(iCameraEnt, var_nextthink, get_gametime() + 0.01);
    
    return
;
}


Аватара пользователя
deadkid56
 
Сообщения: 42
Зарегистрирован: 09 авг 2018, 10:41
Благодарил (а): 8 раз.
Поблагодарили: 4 раз.
Языки программирования: Я ничего не знаю

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18