Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4

Тема: Таксофон

  1. #1
    Аватар для Gressie
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±

    Таксофон

    Доброго времени суток. Наверняка, вы играли в игру Grand Theft Auto Vice City (GTA Vice City), и сталкивались с телефонными миссиями. Собственно вопрос:
    Как реализовано то, что таксофон прыгает? Увидел этот эффект, и удивился. Ни на каком проекте кроме этого который на видеоролике я не видел подобных реализаций.
    Исходя из этого, у меня появились некоторые догадки, что тут применяется как PlayerPlaySound так и MoveObject. Я прав?
    Последний раз редактировалось Gressie; 05.08.2021 в 01:57.

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Да, скорей всего

  3. #3
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Через MoveObject, OnObjectMoved

    1. #include <a_samp>
    2. #include <Pawn.CMD>
    3.  
    4. main()
    5. {
    6.  
    7. }
    8.  
    9. #if !defined MAX_PAYPHONES
    10. const MAX_PAYPHONES = 1;
    11. #endif
    12.  
    13.  
    14. static g_payphone_object_state[MAX_OBJECTS] = { -1, -1, -1, ... };
    15. static g_payphone_object_id[MAX_PAYPHONES] = { INVALID_OBJECT_ID };
    16.  
    17. {
    18. g_payphone_object_id[0] = CreateObject(
    19. 1216,
    20. -1310.75,
    21. 2700.40,
    22. 49.69,
    23. 0.0,
    24. 0.0,
    25. 0.0
    26. );
    27. return 1;
    28. }
    29.  
    30. public OnObjectMoved(objectid)
    31. {
    32. for (new i = 0; i < sizeof(g_payphone_object_id); i++)
    33. {
    34. if (objectid == g_payphone_object_id[i])
    35. {
    36. new
    37. payphone_state = g_payphone_object_state[objectid],
    38. Float: payphone_x_pos,
    39. Float: payphone_y_pos,
    40. Float: payphone_z_pos,
    41. Float: payphone_x_rot,
    42. Float: payphone_y_rot,
    43. Float: payphone_z_rot;
    44.  
    45. objectid,
    46. payphone_x_rot,
    47. payphone_y_rot,
    48. payphone_z_rot
    49. );
    50. objectid,
    51. payphone_x_pos,
    52. payphone_y_pos,
    53. payphone_z_pos
    54. );
    55.  
    56. if ((payphone_state & 1) == 0)
    57. {
    58. objectid,
    59. payphone_x_pos,
    60. payphone_y_pos,
    61. payphone_z_pos - 0.1,
    62. 0.7,
    63. payphone_x_rot,
    64. payphone_y_rot,
    65. payphone_z_rot
    66. );
    67. }
    68. else
    69. {
    70. objectid,
    71. payphone_x_pos,
    72. payphone_y_pos,
    73. payphone_z_pos + 0.1,
    74. 0.7,
    75. payphone_x_rot,
    76. payphone_y_rot,
    77. payphone_z_rot
    78. );
    79. }
    80.  
    81. g_payphone_object_state[objectid] = !g_payphone_object_state[objectid];
    82. break;
    83. }
    84. }
    85. return 1;
    86. }
    87.  
    88.  
    89. CMD:teleportphone(playerid)
    90. {
    91. SetPlayerPos(playerid, -1310.4550, 2694.6719, 50.0625);
    92. SetPlayerFacingAngle(playerid, 1.1488);
    93.  
    94. new
    95. Float: payphone_x_pos,
    96. Float: payphone_y_pos,
    97. Float: payphone_z_pos,
    98. Float: payphone_x_rot,
    99. Float: payphone_y_rot,
    100. Float: payphone_z_rot,
    101. payphone_object_id = g_payphone_object_id[0];
    102.  
    103. payphone_object_id,
    104. payphone_x_pos,
    105. payphone_y_pos,
    106. payphone_z_pos
    107. );
    108. payphone_object_id,
    109. payphone_x_pos,
    110. payphone_y_pos,
    111. payphone_z_pos
    112. );
    113. payphone_object_id,
    114. payphone_x_pos,
    115. payphone_y_pos,
    116. payphone_z_pos + 0.1,
    117. 0.1,
    118. payphone_x_rot,
    119. payphone_y_rot,
    120. payphone_z_rot
    121. );
    122. g_payphone_object_state[payphone_object_id] = 0;
    123. return 1;
    124. }


    Что-то вроде такого

    P.S: это всего лишь пример. Он далек от идеала, нужно настроить прыжки более лучшим способом.
    P.S.S: чтобы Вам не нужно было искать ид звонка: 23000
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Спасибо большое.

 

 

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

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

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

Ваши права

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