Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Полет Камерой

    Вообщем суть такая, как сделать полет камерой при нажатии на Текстдрйав, допустим, заходим в Пицерию, встаем на маркер и камера полетела к первому выбору, Нажимаешь на Тестдрайв камера полетела к следующему, или в аммо, выбор оружия, думаю понятно. Подскажите пожалуйста.

  2. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Команда для сохранения координат камеры ( координаты сохраняются в папке scriptfiles под названием CamCoords.ini ):
    PHP код:
    CMD:savecam(playeridparams[]) // if(strcmp(cmdtext, "/savecam", true, 8) == 0)
    {
        static const
            
    fmt_str0[] = "SetPlayerCameraPos(playerid, %f, %f, %f);\n",
            
    fmt_str1[] = "SetPlayerCameraLookAt(playerid, %f, %f, %f);\n";

        const
            
    fmt_size0 sizeof(fmt_str0) + (-11) * 3,
            
    fmt_size1 sizeof(fmt_str1) + (-11) * 3;

        
    #if fmt_size0 > fmt_size1
            #define final_size fmt_size0
        #else
            #define final_size fmt_size1
        #endif

        
    new
            
    str[final_size],
            
    Filecam_file fopen("CamCoords.ini"io_append),
            
    Floatcam_pos_axis_x,
            
    Floatcam_pos_axis_y,
            
    Floatcam_pos_axis_z,
            
    Floatcam_pos_vec_axis_x,
            
    Floatcam_pos_vec_axis_y,
            
    Floatcam_pos_vec_axis_z;

        
    #undef final_size

        
    GetPlayerCameraPos(playeridcam_pos_axis_xcam_pos_axis_ycam_pos_axis_z);
        
    GetPlayerCameraFrontVector(playeridcam_pos_vec_axis_xcam_pos_vec_axis_ycam_pos_vec_axis_z);

        
    format(strsizeof(str), fmt_str0cam_pos_axis_xcam_pos_axis_ycam_pos_axis_z);
        
    fwrite(cam_filestr);

        
    format(strsizeof(str), fmt_str1cam_pos_axis_x 5.0 cam_pos_vec_axis_xcam_pos_axis_y 5.0 cam_pos_vec_axis_ycam_pos_axis_z 5.0 cam_pos_vec_axis_z);
        
    fwrite(cam_filestr);

        return 
    fclose(cam_file);

    Как сделать из этих координат передвижение камеры?
    Допустим мы сохранили 2 координаты в файл: Первая координата - откуда, вторая - куда, код:
    PHP код:
    SetPlayerCameraPos(playerid1647.3437501718.68395911.734600); // Откуда ( первая функция )
    SetPlayerCameraLookAt(playerid1647.3674311723.64819311.138239); // Откуда // ( первая функция )
    SetPlayerCameraPos(playerid1644.8741451863.82678211.175399); // Куда ( вторая функция )
    SetPlayerCameraLookAt(playerid1641.9504391859.77673311.397855); // Куда // вторая функция ) 
    Теперь используем функции InterpolateCameraPos и InterpolateCameraLookAt.

    Берём координаты из первой функции SetPlayerCameraPos и совмещаем со второй функцией. И заключаем её в функцию InterpolateCameraPos. Должно получиться как-то так ( остальные параметры не относятся к положению камеры ):
    PHP код:
    InterpolateCameraPos(playerid1647.3437501718.68395911.7346001644.8741451863.82678211.17539910000); 
    Положение перемещения камеры готово, но при перемещении камеры, она будет смотреть не туда, куда мы хотели. Для это есть функция InterpolateCameraLookAt. Совмещать координаты мы будем так же как и с первой функцией.

    Берём координаты из второй функции. Смещаем координаты из функции SetPlayerCameraPos с SetPlayerCameraLookAt.

    В итоге должно получиться это:
    PHP код:
    InterpolateCameraLookAt(playerid1647.3674311723.64819311.1382391641.9504391859.77673311.39785510000); 

  3. Пользователь сказал cпасибо:
    $continue$ (10.01.2015)
  4. #3
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Расписываешь ты офигенно все. Спасибо буду пытаться делать)

  5. #4
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Такой вопрос, Почему при нажатии на ТекстДрайв, у меня первый и последний не нажимаются.

    PHP код:
                    Textdraw0 TextDrawCreate(315.666656311.111145"9 mm");
                    
    TextDrawLetterSize(Textdraw00.4499991.600000);
                    
    TextDrawTextSize(Textdraw048.666664113.659286);
                    
    TextDrawAlignment(Textdraw02);
                    
    TextDrawColor(Textdraw0, -1);
                    
    TextDrawUseBox(Textdraw0true);
                    
    TextDrawBoxColor(Textdraw0595);
                    
    TextDrawSetShadow(Textdraw00);
                    
    TextDrawSetOutline(Textdraw00);
                    
    TextDrawBackgroundColor(Textdraw051);
                    
    TextDrawFont(Textdraw01);
                    
    TextDrawSetProportional(Textdraw01);
                    
                    
    Textdraw1 TextDrawCreate(275.333282331.851501"x50 $1250");
                    
    TextDrawLetterSize(Textdraw10.3073321.064888);
                    
    TextDrawTextSize(Textdraw1305.666717, -38.162948);
                    
    TextDrawAlignment(Textdraw12);
                    
    TextDrawColor(Textdraw1, -1);
                    
    TextDrawUseBox(Textdraw1true);
                    
    TextDrawBoxColor(Textdraw1595);
                    
    TextDrawSetSelectable(Textdraw1true);
                    
    TextDrawSetShadow(Textdraw10);
                    
    TextDrawSetOutline(Textdraw10);
                    
    TextDrawBackgroundColor(Textdraw151);
                    
    TextDrawFont(Textdraw10);
                    
    TextDrawSetProportional(Textdraw11);

                    
    Textdraw2 TextDrawCreate(298.999725331.851501"x100 $2500");
                    
    TextDrawLetterSize(Textdraw20.3093321.064888);
                    
    TextDrawTextSize(Textdraw2332.66659511.199995);
                    
    TextDrawAlignment(Textdraw21);
                    
    TextDrawColor(Textdraw2, -1);
                    
    TextDrawUseBox(Textdraw2true);
                    
    TextDrawBoxColor(Textdraw2595);
                    
    TextDrawSetShadow(Textdraw20);
                    
    TextDrawSetOutline(Textdraw20);
                    
    TextDrawBackgroundColor(Textdraw2255);
                    
    TextDrawFont(Textdraw21);
                    
    TextDrawSetProportional(Textdraw21);
                    
    TextDrawSetSelectable(Textdraw2true);

                    
    Textdraw3 TextDrawCreate(339.667022331.851501"x200 $5000");
                    
    TextDrawLetterSize(Textdraw30.3093321.064888);
                    
    TextDrawTextSize(Textdraw3372.66674821.570369);
                    
    TextDrawAlignment(Textdraw31);
                    
    TextDrawColor(Textdraw3, -1);
                    
    TextDrawUseBox(Textdraw3true);
                    
    TextDrawBoxColor(Textdraw3595);
                    
    TextDrawSetShadow(Textdraw30);
                    
    TextDrawSetOutline(Textdraw30);
                    
    TextDrawBackgroundColor(Textdraw351);
                    
    TextDrawFont(Textdraw31);
                    
    TextDrawSetProportional(Textdraw31);
                    
    TextDrawSetSelectable(Textdraw3true);

                    
    Textdraw4 TextDrawCreate(258.999938356.740722"< Back");
                    
    TextDrawLetterSize(Textdraw40.2456651.006816);
                    
    TextDrawTextSize(Textdraw4292.00003013.688893);
                    
    TextDrawAlignment(Textdraw41);
                    
    TextDrawColor(Textdraw4, -1);
                    
    TextDrawUseBox(Textdraw4true);
                    
    TextDrawBoxColor(Textdraw4595);
                    
    TextDrawSetShadow(Textdraw40);
                    
    TextDrawSetOutline(Textdraw40);
                    
    TextDrawBackgroundColor(Textdraw451);
                    
    TextDrawFont(Textdraw41);
                    
    TextDrawSetProportional(Textdraw41);
                    
    TextDrawSetSelectable(Textdraw4true);

                    
    Textdraw5 TextDrawCreate(298.999908356.740722"exit");
                    
    TextDrawLetterSize(Textdraw50.2456651.006816);
                    
    TextDrawTextSize(Textdraw5333.00003012.029629);
                    
    TextDrawAlignment(Textdraw51);
                    
    TextDrawColor(Textdraw5, -1);
                    
    TextDrawUseBox(Textdraw5true);
                    
    TextDrawBoxColor(Textdraw5595);
                    
    TextDrawSetShadow(Textdraw50);
                    
    TextDrawSetOutline(Textdraw50);
                    
    TextDrawBackgroundColor(Textdraw551);
                    
    TextDrawFont(Textdraw51);
                    
    TextDrawSetProportional(Textdraw51);
                    
    TextDrawSetSelectable(Textdraw5true);

                    
    Textdraw6 TextDrawCreate(339.666717356.740722"next >");
                    
    TextDrawLetterSize(Textdraw60.2456651.006816);
                    
    TextDrawTextSize(Textdraw6372.666564, -19.496294);
                    
    TextDrawAlignment(Textdraw61);
                    
    TextDrawColor(Textdraw6, -1);
                    
    TextDrawUseBox(Textdraw6true);
                    
    TextDrawBoxColor(Textdraw6595);
                    
    TextDrawSetShadow(Textdraw60);
                    
    TextDrawSetOutline(Textdraw60);
                    
    TextDrawBackgroundColor(Textdraw651);
                    
    TextDrawFont(Textdraw61);
                    
    TextDrawSetProportional(Textdraw61);
                    
    TextDrawSetSelectable(Textdraw6true); 
    1 и 6 не нажимаются, не понимаю почему.

    И еще, как вернуться в прежнее положение игрока.
    Кроме функции SetCameraBehindPlayer(playerid);
    Нужна еще, а то приходится постоянно ESC нажимать чтобы выйти из меню камеры.
    Последний раз редактировалось Skyline; 10.01.2015 в 06:51.

  6. #5
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Подниму

  7. #6
    Аватар для Spectrum
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.04.2014
    Адрес
    Omsk, Russia
    Сообщений
    349
    Репутация:
    49 ±
    на первом текстдраве ты не включил селектабельность (TextDrawSetSelectable)
    И еще, как вернуться в прежнее положение игрока.
    Записывай текущие координаты игрока в переменную и в нужный момент спавни его на них
    Skype: sp3ctrum_attack

  8. #7
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Мне на первом и не нужен т.е. 0
    Я написал на каких не работает

  9. #8
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Кто может помочь? Уже раз 15 пытался перерисовывать эти Текстдрайвы и всегда один, да работать не будет(

  10. #9
    Аватар для MΛRŠ
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.11.2014
    Сообщений
    7
    Репутация:
    0 ±
    можно использовать FS Cameditor, он по легче высшего поста.

  11. #10
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Да полет камерой я могу сделать и при помощи функций, вопрос в другом, почему некоторые текстдрайвы не нажимаются, хотя функции присвоены, многие говорили что я не правильно рисую их, но извините, после 15 раз, когда я их перерисовывал по разному - реультат один и тот же, какая то кнопка, да не будет работать...

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •