Advertisement
Guest User

Untitled

a guest
Sep 19th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. {$CLEO .cs}
  2.  
  3. //-------------MAIN---------------
  4. thread 'MINE'
  5.  
  6. :Initial
  7. wait 0
  8. Player.Defined($PLAYER_CHAR) // Если условие одно - if можно не ставить, а вот jf(else_goto, else_jump) ставить после каждого условия обязательно!
  9. jf @Initial
  10.  
  11. :Load_Stuff_1
  12. Model.Load(582)
  13. 038B: load_requested_models
  14.  
  15. :Load_Stuff_2
  16. wait 0
  17. Model.Available(582)
  18. jf @Load_Stuff_2
  19.  
  20. :Main_Cycle
  21. wait 0
  22. Player.Defined($PLAYER_CHAR)
  23. jf @Main_Cycle // Нужно выполнять эту проверку отдельно, т.к. если игрок не существует, дальнейшие проверки и действия с игроком(типа Actor.Driving($PLAYER_ACTOR)) будут вызывать краш
  24. Model.Available(582)
  25. jf @Load_Stuff_1 // В дальнейших повторениях цикла желательно перепроверять, доступна ли модель(на случай, если её выгрузили другим скриптом)
  26. if and
  27. Actor.Driving($PLAYER_ACTOR)
  28. 0AB0: key_pressed 49 // 1
  29. jf @Main_Cycle
  30.  
  31. :Mine_Drop_1
  32. wait 0
  33. 8AB0: not key_pressed 49
  34. jf @Mine_Drop_1 // Проверка, что клавишу отпустили
  35. Player.Defined($PLAYER_CHAR)
  36. jf @Main_Cycle // Игрок мог перестать существовать, пока была зажата кнопка, так что нужно перепроверить, т.к. если игрок не существует, дальнейшие проверки и действия с игроком(типа Actor.Driving($PLAYER_ACTOR)) будут вызывать краш
  37. Actor.Driving($PLAYER_ACTOR)
  38. jf @Main_Cycle // Игрок мог перестать водить авто, пока была зажата кнопка, так что нужно перепроверить
  39. 0@ = Actor.CurrentCar($PLAYER_ACTOR)
  40. 04C4: store_coords_to 1@ 2@ 4@ from_actor $PLAYER_ACTOR with_offset 0.0 -3.5 1.0
  41. 02CE: 3@ = ground_z 1@ 2@ 4@ // Z координата земли в данной точке, чтобы поместить мину прямо на землю
  42. 0063: 4@ -= 3@
  43. 0023: 10.0 > 4@
  44. jf @Main_Cycle // Если мина сбрасывается с высоты более 10 метров - отмена сброса
  45. 4@ = Object.Create(582, 1@, 2@, 3@)
  46. Object.CollisionDetection(4@) = False
  47. Object.ToggleInMovingList(4@) = False
  48.  
  49. :Mine_Drop_2
  50. wait 0
  51. Player.Defined($PLAYER_CHAR)
  52. jf @Delete_Mine_2
  53. 8039: NOT 0@ == -1 // Проверка, что тачка 0@ еще существует
  54. jf @Mine_Drop_3 // Если нет - ничто нам не мешает активировать мину
  55. 00AA: store_car 0@ position_to 5@ 6@ 7@
  56. 050A: 7@ = distance_between_XYZ 5@ 6@ 7@ and_XYZ 1@ 2@ 3@
  57. 0021: 7@ > 5.0
  58. jf @Mine_Drop_2 // Мина становится активной, когда транспорт, из которого она была выброшена, отъехал/отлетел от нее на 5 метров
  59.  
  60. :Mine_Drop_3
  61. Object.CollisionDetection(4@) = True
  62. Object.ToggleInMovingList(4@) = True
  63. 0167: 15@ = create_marker_at 1@ 2@ 3@ color 1 flag 2
  64. 16@ = 0 // запускаем таймер "жизни" мины
  65.  
  66. :Mine_Checks
  67. wait 0
  68. if and
  69. Player.Defined($PLAYER_CHAR)
  70. 03CA: object 4@ exists
  71. 001B: 60000 > 16@
  72. jf @Delete_Mine // Если игрок перестал существовать ИЛИ объект исчез ИЛИ прошло больше минуты(60000мс) - мина удаляется
  73. 8AB0: not key_pressed 50
  74. jf @Delete_Mine // Если игрок нажал кнопку "2" - мина удаляется
  75. 8366: NOT object 4@ damaged
  76. jf @Mine_Explode
  77. 0AB0: key_pressed 49
  78. jf @Mine_Checks
  79.  
  80. :Mine_Explode
  81. wait 0
  82. 03CA: object 4@ exists
  83. jf @Delete_Mine // Если объект за этовремя исчез - мина удаляется
  84. 01BB: store_object 4@ position_to 1@ 2@ 3@
  85. 020C: create_explosion_with_radius 1 at 1@ 2@ 3@
  86. 020C: create_explosion_with_radius 6 at 1@ 2@ 3@
  87. 020C: create_explosion_with_radius 7 at 1@ 2@ 3@
  88. 0AE2: 7@ = random_vehicle_near_point 1@ 2@ 3@ in_radius 10.0 find_next 0 pass_wrecked 1 // find_next 0 означает старт поиска, pass_wrecked 1 - пропуск взорванных транспортных средств
  89. jf @Delete_Mine // Если не найдено ни одно авто - мина удаляется
  90. jump @Rhino_Check
  91.  
  92. :Next_Vehicle_Check
  93. 0AE2: 7@ = random_vehicle_near_point 1@ 2@ 3@ in_radius 10.0 find_next 1 pass_wrecked 1 // find_next 1 означает продолжение поиска, pass_wrecked 1 - пропуск взорванных транспортных средств
  94. jf @Delete_Mine // Если больше не найдено ни одного авто - мина удаляется
  95.  
  96. :Rhino_Check
  97. 0137: car 7@ model == #RHINO
  98. jf @Next_Vehicle_Check
  99. Actor.Driving($PLAYER_ACTOR)
  100. jf @Rhino_Check_2
  101. 0@ = Actor.CurrentCar($PLAYER_ACTOR)
  102. 803B: NOT 7@ == 0@
  103. jf @Delete_Mine // Если найденное авто и транспорт игрока - одно и то же - поиск останавливается, мина удаляется
  104.  
  105. :Rhino_Check_2
  106. 02AC: set_car 7@ immunities BP 0 FP 0 EP 0 CP 0 MP 0
  107. 02AA: set_car 7@ immune_to_nonplayer 0
  108. 01EC: make_car 7@ very_heavy 0
  109. 03AB: set_car 7@ strong 0
  110. 0224: set_car 7@ health_to -5000
  111. jump @Next_Vehicle_Check // продолжаем поиск других танков в радиусе
  112.  
  113. :Delete_Mine
  114. Marker.Disable(15@)
  115.  
  116. :Delete_Mine_2
  117. Object.Destroy(4@)
  118.  
  119. :Delete_Mine_3
  120. wait 0
  121. if and
  122. 8AB0: not key_pressed 49
  123. 8AB0: not key_pressed 50
  124. jf @Delete_Mine_3 // Пока игрок не отпустит кнопки "1" и "2" - ничего не произойдет
  125. jump @Main_Cycle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement