Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - egor230

Страницы: [1] 2 3 ... 6
1
Общие вопросы / Re: Помощь с CLEO
« : Апрель 07, 2018, 05:51:31 pm »
Здравствуйте, уважаемый Shagg_E.
Да, вы правы дубликат был лишним,  всё прекрасно работает.
Благодаря вашему мудрому совету, нашёл адрес который отвечает за ущерб имуществу.  Кому нужен вот он 0x00975404.
Стоимость машины находится по смещению от  структуры  автомобиля.

2
Общие вопросы / Re: Помощь с CLEO
« : Апрель 03, 2018, 12:36:19 pm »
Здравствуйте уважаемый Shagg_E.  Очень признательны вам за Ваш ответ. Да, действительно проблема была в радиусе. Но я решил  полностью переделать скрипт, на это ушло очень много времени.  Вроде всё работает. Пытался написать не только рабочий код, но и  краткий, красивый, хорошо оптимизированный,  тестил его, всё вроде работает как надо. Дубликат опкода 018E нужен, чтобы точно избежать зависание  звука.  Спасибо большое теперь изменил  звук  на 5,  звучит хорошо.
Вот сам код.
Код: Javascript
  1. {$CLEO}      
  2. const
  3. x = -847.231812 // Координаты внутри гаража  
  4. y = -901.642578 // Координаты внутри гаража  
  5. z = 11.103406  // Координаты внутри гаража  
  6. a = -834.576294 // Координаты гаража
  7. b = -902.218567 // Координаты гаража
  8. c = 11.103406 // Координаты  гаража
  9. end
  10. 0000:      
  11. :1
  12. wait 0        
  13. 0164: disable_marker 13@ // удалить маркер
  14. if 00E0: player $PLAYER_CHAR driving // за рулем
  15. jf @1
  16. gosub @tag // создать маркер
  17. if 00F7: player $player_char sphere 0 near_point_in_car a b c radius 20.0 20.0 3.0 sphere 0 // на авто около гаража
  18. jf @1              
  19. gosub @garage // open        
  20. :2
  21. wait 0      
  22. if 00F7: player $player_char sphere 0 near_point_in_car a b c radius 30.0 30.0 3.0 sphere 0 // на авто около гаража
  23. jf @5          
  24. :3
  25. if 0103: actor $PLAYER_ACTOR in_sphere x y z radius 4.0 4.0 3.0 sphere 0 stopped_in_car //стоп авто внутри гаража
  26. jf @2              
  27. gosub @camera // set camera            
  28. gosub @garage// закрыть                    
  29. gosub @Chec // проверки                            
  30. :6  
  31. wait 0            
  32. if 80E3: not player $player_char in_sphere 0 near_point a b radius 17.0 17.0      
  33. jf @6                  
  34. :5                
  35. gosub @garage// закрыть гараж
  36. if 6@ == 1
  37. jf @1
  38. :7
  39. wait 0
  40. if and            
  41. 02D8: actor $PLAYER_ACTOR current_weapon == 34
  42. 00E1: player 0 pressed_button 17
  43. jf @7      
  44. 020B: explode_car 5@              
  45. 01C3: remove_references_to_car 5@  
  46. jump @1          
  47.  
  48. :Chec
  49. wait 0    
  50. if or
  51. 0495: vehicle 5@ burning
  52. 03CE: car 5@ stuck
  53. 8256: not player $PLAYER_CHAR defined  
  54. 0119: car 5@ wrecked
  55. 80DC: not player $player_char driving 5@
  56. 81C1: not car 5@ stopped
  57. jf @Checkes1    
  58. gosub @garage              
  59. gosub @return_camera        
  60. return
  61.  
  62. :Checkes1
  63. wait 0        
  64. if 0AB0: key_pressed 0x61// 1      
  65. then 0AB1: call_scm_func @opcode_0242 2 5@ 1 6@                
  66. else
  67. if 0AB0: key_pressed 0x62// 2                        
  68. then 0AB1: call_scm_func @opcode_0242 2 5@ 2 6@    
  69. else
  70. if 0AB0: key_pressed 0x63// 3                        
  71. then 0AB1: call_scm_func @opcode_0242 2 5@ 3 6@    
  72. else
  73. if 0AB0: key_pressed 0x64// 4          
  74. then gosub @super_properties            
  75. else
  76. if 0AB0: key_pressed 0x65// 5                        
  77. then 0AB1: call_scm_func @opcode_0242 2 5@ 0 6@  
  78. end  
  79. end  
  80. end  
  81. end
  82. end
  83. jump @Chec
  84.  
  85. :opcode_0242 // Установить тип бомбы 0@ (car handle) 1@ (bomb stage)    
  86. gosub @text
  87. 05E7: 0@ = car 0@ struct
  88. 0@ += 0x1FE  // car bomb offset
  89. 05E0: 2@ = read_memory 0@ size 1 virtual_protect 0  // store previous value
  90. 05F9: 1@ = 1@ AND 7  // keep only the first three bits from input param
  91. 05F9: 2@ = 2@ AND 0xF8  // exclude the first three bits in stored value
  92. 05FA: 2@ = 2@ OR 1@  // replace the first three bits of stored value with input param
  93. 05DF: write_memory 0@ size 1 value 2@ virtual_protect 0  // set to new value
  94. 05F6: ret 1 15@        
  95. :text                                          
  96. if 0039: 1@ == 1 // integer values
  97. then 0acd: show_text_high_priority "Timed detonation" time 1000    
  98. else
  99. if 0039: 1@ == 2                        
  100. then 0acd: show_text_high_priority "Engine ignition detonation" time 1000      
  101. else
  102. if 0039: 1@ == 3                        
  103. then gosub @fun
  104. 0acd: show_text_high_priority "Remote detonation" time 1000  
  105. 15@ = 1  
  106. else
  107. if 0039: 1@ == 0                        
  108. then 0acd: show_text_high_priority "to remove mine with the car" time 1000      
  109. end
  110. end  
  111. end  
  112. end  
  113. return
  114. :super_properties      
  115. 053F: set_car 5@ tires_vulnerable 0
  116. 02AC: set_car 5@ immunities 1 1 1 1 1
  117. 01EC: make_car 5@ very_heavy 1
  118. 0acd: show_text_high_priority "super properties are set" time 1000    
  119. return
  120. :fun
  121. repeat
  122. wait 0
  123. Model.Load(#bomb)                            
  124. 038B: load_requested_models
  125. gosub @delay
  126. until Model.Available(#bomb)
  127. 01B1: give_player $PLAYER_CHAR weapon 34 ammo 1
  128. Model.Destroy(#bomb)
  129. return
  130. gosub @delay
  131. :delay
  132. 16@ = 0
  133. repeat
  134. wait 0                
  135. until 0029: 16@ >= 10 // задержка
  136. return
  137. :return_camera    
  138. 015A: restore_camera
  139. 02EB: restore_camera_with_jumpcut
  140. return    
  141. :tag
  142. 0570: 13@ = create_asset_radar_marker_with_icon 8 at x y z  // Внутри гаража        
  143. 03C1: 5@ = player $PLAYER_CHAR car_no_save // получить хендл авто
  144. return                                      
  145. :garage
  146. 0AE3: 0@ = random_object_near_point -836.77 -901.84 12.05 in_radius 4.0 find_next 0 //IF and SET
  147. jf gosub @Check1                    
  148. 01BB: store_object 0@ position_to 1@ 2@ 3@
  149. 018D: 4@ = create_sound 2 at 1@ 2@ 3@                        
  150. wait 0
  151. if 0043: 3@ == 12.03
  152. then
  153. 0007: 3@ = 15.95              
  154. gosub @Open
  155. else
  156. if 0043: 3@ == 15.95
  157. then
  158. 01BB: store_object 0@ position_to 1@ 2@ 3@
  159. 0007: 3@ = 12.03  
  160. gosub @Open
  161. end
  162. end    
  163. return  
  164. :Open                
  165. while if 84E6: not object 0@ near_point 1@ 2@ 3@ radius 0.01 0.01 0.01 flag 0  
  166. wait 0                                                                  
  167. 034E: move_object 0@ to 1@ 2@ 3@ speed 0.0 0.0 0.05 collision_check 0
  168. end
  169. 018E: stop_sound 4@
  170. 018C: play_sound 5 at 1@ 2@ 3@
  171. 018E: stop_sound 4@  
  172. return  
  173. :Check1
  174. wait 0
  175. return
  176.  
  177.  
  178. :camera                                          
  179. 015F: set_camera_position -817.4 -905.55 13.86 0.0 rotation 0.0 0.0
  180. 0160: point_camera -3982.5 -238.75 63.44 switchstyle 2    
  181. 0164: disable_marker 13@                                                                                
  182. 0ACE: show_formatted_text_box "~h~~t~The press 1 for install timed bomb~t~ ~h~press 2 for install ignition bomb, ~t~ ~y~ press 3 for install detonation bomb~x~ ~t~~h~press 4 to set super properties car~h~~b~~t~ press 5 to remove mine with the car.~b~ "
  183. return    
  184.                
  185. /*
  186. //0 -0  CARBOMB_NONE    Без бомбы
  187. 1       CARBOMB_TIMED   Неактивная бомба, рассчитанная по времени, может быть получена из гаражного типа 2
  188. 2       CARBOMB_ONIGNITION      Неактивная зажигательная бомба может быть получена из гаражного типа 3
  189. 3       CARBOMB_REMOTE  Удаленная детонационная бомба может быть получена из гаражного типа 4
  190. 4       CARBOMB_TIMEDACTIVE     Активная импульсная бомба, активированная из бомбы типа 1
  191. 5       CARBOMB_ONIGNITIONACTIVE        Активная зажигательная бомба, активированная из бомбы типа 2          
  192.  
Тут появилась одна идея. В разделе статистика, есть строка ущерб имуществу. ее значение увеличивается  после  взрыва автомобиля.
Допустим мы заезжаем в гараж. Гаснет экран, игрока перемещаем из авто. Читаем  адрес памяти, которая отвечает за сумму ущерба, сохраняем ее в переменную,  взрываем авто, опять читаем адрес памяти, результат записываем в другую переменную. Находим разность их, чтобы грубо говоря найти стоимость авто. ее  получить  игрок в виде денег, можно называть это  утилизация автомобиля. Всё это можно легко реализовать,  только нужно знать адрес  памяти.  Везде искал его, так и не нашел.

3
Общие вопросы / Re: Помощь с CLEO
« : Март 30, 2018, 01:32:47 pm »
Здравствуйте уважаемый Shagg_E.
 Спасибо большое за ваш скрипт,  Он помог мне понять В каком направлении двигаться.
Он открывает ворота нажатием двое фабрика мороженого. Решил  его переделать,  чтобы ворота  поднимались вверх, Всё работало.  Но  при  замены координат  на  двери  гаража  Кема джонса,  звук  зависал https://www.youtube.com/watch?v=CJ50v0rn_x8&feature=youtu.be

Но я решил не успокаивается, разобраться в чём проблема.  Написал следующий  скрипт, вот  его видео демонстрация https://www.youtube.com/watch?v=cWsmvt61gKY&feature=youtu.be
всё это поместил в gosub. Может кому-то этот gosub  поможет
Вообще cleo здорово освежило игру, выдохнула в неё новую жизнь. Но почему-то в cleo встречаются какие-то баги, ошибки.
Конечно для GTA San Andreas, cleo обладает более широкими функциями. Изучить cleo достаточно легко. Но я надеюсь ему появится достойные альтернативы.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:
  3. :Check
  4. wait 0        
  5. 0AB0: key_pressed 69  
  6. jf @Check      
  7. gosub @garage
  8. jump @Check  
  9.                                      
  10. :garage
  11. 0AE3: 0@ = random_object_near_point -836.77 -901.84 12.05 in_radius 4.0 find_next 0 //IF and SET
  12. jf gosub @Check1                    
  13. 01BB: store_object 0@ position_to 1@ 2@ 3@
  14. 018D: 4@ = create_sound 2 at 1@ 2@ 3@                        
  15. wait 0
  16. if 0043: 3@ == 12.03
  17. then
  18. 0007: 3@ = 15.95              
  19. gosub @Open
  20. else
  21. if 0043: 3@ == 15.95
  22. then
  23. 01BB: store_object 0@ position_to 1@ 2@ 3@
  24. 0007: 3@ = 12.03  
  25. gosub @Open
  26. end
  27. end    
  28. return  
  29. :Open                
  30. while if 84E6: not object 0@ near_point 1@ 2@ 3@ radius 0.01 0.01 0.01 flag 0  
  31. wait 0                                                                  
  32. 034E: move_object 0@ to 1@ 2@ 3@ speed 0.0 0.0 0.05 collision_check 0
  33. end
  34. 018E: stop_sound 4@
  35. 018C: play_sound 3 at 1@ 2@ 3@
  36. 018E: stop_sound 4@  
  37. return  
  38. :Check1
  39. wait 0
  40. return
  41.  

4
Общие вопросы / Re: Помощь с CLEO
« : Март 25, 2018, 05:44:25 pm »
Здравствуйте , уважаемый Shagg_E.  Благодарю вас за ваше сообщение. Эта очень полезные ссылки.  жалко мало информации  по  ida,  по сравнению с cleo, так сказать, чтобы облегчить трудный путь нубов. Ну и чтож будем мы искать, Google в помощь как говорится.
несколько дней пытался, задать Вектор движения объекта через память.  Брал структуру  объекта, добавлял это смещение, вылетало  ко сожалению. Значит, что-то делал не так,  буду копаться.
Уважаемый xanser, чем больше будет информации в доступном виде, тем больше людей,   буду делать моды,  будет больше интересных идей.
раньше  программирование   считалось чем-то очень сложным сложным, теперь благодаря Ютубу и форумам, разобраться становится легче.  Сколько уроков по cleo, благодаря чему бы написано большое количество скриптов. На сайте https://libertycity.ru/  их более 3000 для GTA San Andreas.  А сколько asi  плагинов?  Мало. где писать? как их написать? мало кто знает.  Я и стараюсь тоже помочь начинающим, советом,  они порой, совершают настолько грубые ошибки, но в тот момент,  вспоминаю   какими зелёным  новичкам был, отвечаю на вопрос, чтобы у человека не пропала охота,   когда что-то долго не получается,  желание пропадает.  аудиторию надо расширять, чем больше людей, тем больше идей. одна голова хорошо, а  1000  ещё лучше.  Сам пытаюсь копать,  но иногда на  что-то натыкаешься  и не можешь найти решение проблемы.
Спасибо за ответ по IDA  теперь буду пытаться разобраться в этом.
DK,  с большим удовольствием читаю ваши посты  на разных сайтах. Глубоко поражён  вашим умом, насколько  Вы хорошо разбираетесь  в программировании.  жаль, что еще не дорос писать плагины  на с++, там наверно миссии  можно писать.
 Продолжаю работать с дверями гаража  Кема   Джонса. Хотел написать  scm функцию, в которую передаешь  допустим число 1, и двери   гаража  открываются.  Но в  scm  функциях, нельзя использовать цикл,  чтобы открыть дверь.  Приходится использовать scm  функцию и gosub.  Потом решил добавить звук,  как при открытии  любых гаражей,  хорошо что  нашел  это https://www.gtamodding.com/wiki/018C http://www.gtamodding.com/wiki/018D  тут тоже было много проблем, звуки wav  воспроизводится гораздо легче.  Но звук не удаляется опкодом 018E: stop_sound 6@, решил это немного странно, остаются  какие-то звуки.Также нашел кое-что интересное  если написать 0394: play_music 176// волна 103   то начинает играть Радиостанция  волна  103 когда вы находитесь не в машине.
Может я опять ошибся?
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:
  3. :1
  4. wait 0
  5. if 0AB0: key_pressed 69
  6. jf @1                    
  7. 018D: 6@ = create_sound 4 at -836.77 -901.84 12.05    
  8. 0AB1: call_scm_func @garage 1 1 2@ 3@ 4@ 5@
  9. gosub @door                                                    
  10. wait 20          
  11. 018E: stop_sound 6@
  12. jump @1
  13.  
  14. :door          
  15. 0AE3: 0@ = random_object_near_point 2@ 3@ 4@ in_radius 2.0 find_next 0 //IF and SET
  16. repeat
  17. 034E: move_object 0@ to 2@ 3@ 5@ speed 0.0 0.0 0.05 collision_check 0  
  18. wait 4                    
  19. until 034E: move_object 0@ to 2@ 3@ 5@ speed 0.0 0.0 0.05 collision_check 0                
  20. return  
  21. :garage
  22. if 0039: 0@ == 1
  23. then
  24. 3@ = 12.05
  25. 4@ = 15.95
  26. else
  27. 3@ = 15.95
  28. 4@ = 12.05
  29. end        
  30. 1@ = -836.77
  31. 2@ = -901.84            
  32. 0AB2: ret 4 1@ 2@ 3@ 4@
  33.  
  34.  

5
Общие вопросы / Re: Помощь с CLEO
« : Март 15, 2018, 11:36:15 am »
Здравствуйте уважаемый Shagg. Очень-очень рад вашему ответу, так его ждали и меня от Вас.
Благодарю Вас за такие подробные объяснения, всё становится более понятным, ясным благодаря им.
Да, со звуком надо учиться работать. Думаю, тут  можно много сделать чего интересного. Жаль на всё это не хватает времени. Спасибо вам большое, что объяснили мне как вывести значения переменной на экран, то очень поможет в изучении работы с памятью. Жалко их очень мало, хотелось бы больше уроков по работе ida  базой. Там много чего можно отыскать интересного для будущих модов. Сколько я не бы бился получается выпустить ракету по прямой  по прямой траектории. Может как-то можно задать движения через память? Вы написали очень хороший мод по работе с объектами игры.

6
Общие вопросы / Re: Помощь с CLEO
« : Март 04, 2018, 01:39:09 pm »
Благодарю Вас уважаемый Shagg, за Ваш искренний ответ.
Попробовать эмулировать передвижения ракеты "вручную".
Все получилось, но ракета летит как-то "криво", а не прямо.
Как добавить звук выстрела? Есть таблица звуков?
Видео демонстрация https://www.youtube.com/watch?v=H_FmtrYXBLU&feature=youtu.be
Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1                                                                                              
  4. 01C4: remove_references_to_object 3@ // This object will now disappear when the player looks away    
  5. wait 0        
  6. if 00E0: player $player_char driving
  7. jf @1            
  8. if 00E1:  player 0 pressed_button 17
  9. jf @1    
  10. 03C1: 4@ = player $player_char car_no_save    
  11. 0174: 15@ = car 4@ z_angle
  12. 0407: create_coordinate 0@ 1@ 2@ from_car 4@ offset 0.0 0.0 0.50
  13. 0AB1: call_scm_func @fun 4 273 0@ 1@ 2@ 3@        
  14. 0177: set_object 3@ z_angle_to 15@
  15. 0382: set_object 3@ collision_detection 1
  16. 04D9: object 3@ set_scripted_collision_check 0                          
  17. 0400: create_coordinate 5@ 6@ 7@ from_object 3@ offset 0.0 80.0 0.0  // коор цели    
  18. :2
  19. wait 0                                                            
  20. 034E: move_object 3@ to 5@ 6@ 7@ speed 0.31 0.31 0.0 collision_check 0    
  21. 0392: object 3@ toggle_in_moving_list 0 // отключить физику объекта              
  22. if 04E6: object 3@ near_point 5@ 6@ 7@ radius 7.5 7.5 7.5 flag 1                
  23. jf @3                                              
  24. 0acd: show_text_high_priority "god" time 1000      
  25. jump @boom                                    
  26. :3
  27. if 05EF: 14@ = random_actor_near_point 5@ 6@ 7@ in_radius 0.10 find_next 0 pass_deads 0 //IF and SET      
  28. jf @4    
  29. jump @boom      
  30. :4
  31. if 05F0: 14@ = random_vehicle_near_point 5@ 6@ 7@ in_radius 0.10 find_next 0 pass_wrecked 0 //IF and SET            
  32. jf @5    
  33. if 8039: NOT 3@ == 0@    
  34. jf @5  
  35. jump @boom      
  36. :5
  37. if 05F1: 14@ = random_object_near_point 5@ 6@ 7@ in_radius 0.10 find_next 0 //IF and SET
  38. jf @2
  39. :boom  
  40. 020C: create_explosion_with_radius 6 at 5@ 6@ 7@      
  41. 01BC: put_object 3@ at 0.0 0.0 0.0
  42. jump @1
  43. :fun
  44. repeat
  45. wait 0
  46. Model.Load(0@)                            
  47. 038B: load_requested_models
  48. gosub @delay
  49. until Model.Available(0@)
  50. 0107: 4@ = create_object 0@ at 1@ 2@ 3@    
  51. Model.Destroy(0@)  
  52. 0453: object 4@ set_rotation 180.0 0.0 0.0
  53. 0AB2: ret 1 4@
  54. :delay
  55. 16@ = 0
  56. repeat
  57. wait 0                
  58. until 0029: 16@ >= 10 // задержка      
  59. return                      
  60.  

Хочу научить управлять авто дистанционно через память.

как вывести значение переменной на экран?
Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1
  4. wait 0
  5. if 00E0: player $player_char driving
  6. jf @1
  7. if 00E1: player 0 pressed_button 17
  8. jf @1
  9. 03C0: 0@ = actor $PLAYER_ACTOR car //
  10. 05E7: 0@ = car 0@ struct //
  11. 0@ += 0x1F0 //
  12. 05E0: 11@ = read_memory 0@ size 1 virtual_protect 0
  13. 0acd: show_text_high_priority "11@ %d" time 1000
  14. jump @1
  15.  


Помогите, пожалуйста.

конечно, очень писать плагины для vc, уроков для нубов нет. Прям горю желанием, сделать, что крутое.
 
   

7
Общие вопросы / Re: Помощь с CLEO
« : Февраль 27, 2018, 08:08:08 am »
Спасибо уважаемый Shagg, что оценили мой скромный труд.
Ваш совет о детонаторе помог мне. Пришлось реализовать это через проверку.
if and             
02D8: actor $PLAYER_ACTOR current_weapon == 34
00E1: player 0 pressed_button 17
jf @1
020B: explode_car 0@   
jump @1                 

C установкой ракурса камеры, нужно поработать, тут есть свои нюансы. Спасибо за опкод
Решил обойтись без scm функции :opcode_0228 он работает не корректно.
Оптимизация сложный процесс, движок игры очень старый, изначально не рассчитал на такое.
Спасибо за совет.
Скажите, пожалуйста, адрес памяти дающий возможность стрелять ракетам из любой машины. Ракеты это объект, значит должны иметь свой id.
Хочу сделать самонаводящиеся ракеты на машины. 
Стал пользоваться {$I Garage.func}, чтобы загружать константы, gosub, SCM функций из другого файла, очень удобно, как импорт в языках программирования.
Очень интересна директива $OPCODE понял только, что добавление новых опкодов.
Видео демонстрация https://www.youtube.com/watch?v=xHvTUgfCK4U&feature=youtu.be
     

Код: Javascript
  1. {$CLEO}      
  2. const
  3. x = -847.231812 // Координаты внутри гаража  
  4. y = -901.642578 // Координаты внутри гаража  
  5. z = 11.103406  // Координаты внутри гаража  
  6. a = -834.576294 // Координаты гаража
  7. b = -902.218567 // Координаты гаража
  8. c = 11.103406 // Координаты  гаража
  9. end
  10. 0000:      
  11. :1
  12. wait 0      
  13. 0164: disable_marker 13@ // удалить маркер
  14. if 00E0: player $PLAYER_CHAR driving
  15. jf @4
  16. 0570: 13@ = create_asset_radar_marker_with_icon 8 at x y z  // Внутри гаража        
  17. 03C1: 0@ = player $PLAYER_CHAR car_no_save // получить хендл авто
  18. if 00F7: player $player_char sphere 0 near_point_in_car a b c radius 20.0 20.0 3.0 sphere 0
  19. jf @4                                            
  20. gosub @open // открыть двери гаража              
  21. if 00FA: player $player_char stopped_in_sphere 0 near_point_in_car x y z radius 9.0 9.0 3.0
  22. jf @3    
  23. gosub @camera // установить камеру
  24. :Check // Проверки
  25. if and
  26. 8495: not vehicle 0@ burning
  27. 83CE: not car 0@ stuck
  28. 8119: not car 0@ wrecked
  29. 00DC: player $player_char driving 0@
  30. 0256: player $PLAYER_CHAR defined      
  31. 01C1: car 0@ stopped
  32. jf @3      
  33. wait 0      
  34. if 0AB0: key_pressed 0x61// 1      
  35. then 0AB1: call_scm_func @opcode_0242 2 0@ 1 // бомба с таймером            
  36. else
  37. if 0AB0: key_pressed 0x62// 2                        
  38. then 0AB1: call_scm_func @opcode_0242 2 0@ 2 // бомба взрывается при входе в авто    
  39. else
  40. if 0AB0: key_pressed 0x63// 3                        
  41. then 0AB1: call_scm_func @opcode_0242 2 0@ 3 // бомба с детонатором
  42. else
  43. if 0AB0: key_pressed 0x64// 4          
  44. then gosub @super_properties // пуленепробиваемость, супер масса            
  45. else
  46. if 0AB0: key_pressed 0x65// 5                        
  47. then 0AB1: call_scm_func @opcode_0242 2 0@ 0 // разминировать авто
  48. end  
  49. end  
  50. end  
  51. end
  52. end
  53. jump @Check
  54. :3                                        
  55. gosub @open  
  56. 015A: restore_camera
  57. 02EB: restore_camera_with_jumpcut            
  58. if or
  59. 80F5: not player $player_char in_sphere 0 near_point x y z radius 20.0 20.0 3.0
  60. 00F7: player $player_char sphere 0 near_point_in_car a b c radius 30.0 20.0 3.0 sphere 0
  61. jf @3                                    
  62. 0ACE: show_formatted_text_box "~w~garage doors are closed."    
  63. gosub @cloose  
  64. :4                                          
  65. 01C3: remove_references_to_car 0@  
  66. if and            
  67. 02D8: actor $PLAYER_ACTOR current_weapon == 34
  68. 00E1: player 0 pressed_button 17
  69. jf @1
  70. 020B: explode_car 0@    
  71. jump @1                
  72. :cloose
  73. 0AE3: 3@ = random_object_near_point -836.77 -901.84 15.95 in_radius 5.0 find_next 0 //IF and SET    
  74. for 4@ = 1 to 100
  75. 034E: move_object 3@ to -836.77 -901.84 12.05 speed 0.0 0.0 0.05 collision_check 0
  76. gosub @delay1
  77. end    
  78. return
  79. :open
  80. 0AE3: 3@ = random_object_near_point -836.77 -901.84 12.05 in_radius 5.0 find_next 0 //IF and SET    
  81. for 4@ = 1 to 100
  82. 034E: move_object 3@ to -837.13 -901.67 15.95 speed 0.0 0.0 0.05 collision_check 0
  83. gosub @delay1
  84. end                    
  85. return  
  86. :delay1
  87. 16@ = 0
  88. repeat
  89. wait 0                
  90. until 0029: 16@ >= 4 // задержка
  91. return              
  92. :camera                                          
  93. 015F: set_camera_position -817.4 -905.55 13.86 0.0 rotation 0.0 0.0
  94. 0160: point_camera -3982.5 -238.75 63.44 switchstyle 2    
  95. 0164: disable_marker 13@                          
  96. gosub @cloose                                                                                      
  97. 0ACE: show_formatted_text_box "~h~~t~The press 1 for install timed bomb~t~ ~h~press 2 for install ignition bomb, ~t~ ~y~ press 3 for install detonation bomb~x~ ~t~~h~press 4 to set super properties car~h~~b~~t~ press 5 to remove mine with the car.~b~ "
  98. return    
  99. :opcode_0242 // Установить тип бомбы 0@ (car handle) 1@ (bomb stage)    
  100. gosub @text
  101. 05E7: 0@ = car 0@ struct
  102. 0@ += 0x1FE  // car bomb offset
  103. 05E0: 2@ = read_memory 0@ size 1 virtual_protect 0  // store previous value
  104. 05F9: 1@ = 1@ AND 7  // keep only the first three bits from input param
  105. 05F9: 2@ = 2@ AND 0xF8  // exclude the first three bits in stored value
  106. 05FA: 2@ = 2@ OR 1@  // replace the first three bits of stored value with input param
  107. 05DF: write_memory 0@ size 1 value 2@ virtual_protect 0  // set to new value
  108. 05F6: ret 0        
  109. :text                                          
  110. if 0039: 1@ == 1 // integer values
  111. then 0acd: show_text_high_priority "Timed detonation" time 1000    
  112. else
  113. if 0039: 1@ == 2                        
  114. then 0acd: show_text_high_priority "Engine ignition detonation" time 1000      
  115. else
  116. if 0039: 1@ == 3                        
  117. then gosub @fun
  118. 0acd: show_text_high_priority "Remote detonation" time 1000    
  119. else
  120. if 0039: 1@ == 0                        
  121. then 0acd: show_text_high_priority "to remove mine with the car" time 1000      
  122. end
  123. end  
  124. end  
  125. end  
  126. return
  127. :super_properties      
  128. 053F: set_car 0@ tires_vulnerable 0
  129. 02AC: set_car 0@ immunities 1 1 1 1 1
  130. 01EC: make_car 0@ very_heavy 1
  131. 0acd: show_text_high_priority "super properties are set" time 1000    
  132. return
  133. :fun
  134. repeat
  135. wait 0
  136. Model.Load(#bomb)                            
  137. 038B: load_requested_models
  138. gosub @delay
  139. until Model.Available(#bomb)
  140. 01B1: give_player $PLAYER_CHAR weapon 34 ammo 1
  141. Model.Destroy(#bomb)
  142. return
  143. gosub @delay
  144. :delay
  145. 16@ = 0
  146. repeat
  147. wait 0                
  148. until 0029: 16@ >= 10 // задержка
  149. return
  150.  

8
Общие вопросы / Re: Помощь с CLEO
« : Февраль 26, 2018, 12:41:13 pm »
Спасибо огромное Уважаемый Shagg за такой полный и подробный ответ. Благодаря ему, стал лучше понять принцип работы с памятью.

Отвечу Вам порядку.
Этот адрес и смещение ставит бомбу на машину находящуюся в гараже. Надо с ним поработать.
Жаль, что из gta vice вырезали опкоды, только благодаря scm может их вернуть. Благодарю Вас за написанный код
Да, двери в гараж кэма, открывал, путем перемещение объекта.
У меня именно поэтому и вылетало, неправильно обозначал координаты гаража.
Огромное Вам спасибо, что наглядно объяснили как правило обозначать координаты гаража.
Да если создавать гараж, только при условие, что игрок находится в машине, иначе удалить гараж опкодом, чтобы не засорять память.
Писал эти дни скрипт, много раз тестировал, чтобы отладить его. Конечно неидеален, не спорю.
Записал видеодемострацию. https://www.youtube.com/watch?v=9GV9s4nRsMI&feature=youtu.be
Очень много проблем было с тем, чтобы поставить камеру, а точнее развернуть. Переходилось часами перебирать значения для опкодов
       
015F: set_camera_position -817.4 -905.55 13.86 0.0 rotation 0.0 0.0
0160: point_camera -3982.5 -238.75 63.44 switchstyle 2     

Может есть другой способ поставить камеру в нужным ракурсе?

Вроде все хорошо, но почему бомба с детонатором на машину не ставится. Голова ломаю почему.
Также, хоть и скрипт сам по себе небольшой, но работает он крайне медленно, думаю над его оптимизацией. По идей, все должен летать.
Вы очень помогайте. Очень делать, что-то посложнее. То, что делал еще полгода назад. Кажется смешным, простым. Сейчас бы это все написал не так коряво, а красивый и быстро работающим кодом.
Вот скрипт.
Код: Javascript
  1. {$CLEO}      
  2. const
  3. x = -847.231812 // Координаты внутри гаража  
  4. y = -901.642578 // Координаты внутри гаража  
  5. z = 11.103406  // Координаты внутри гаража  
  6. a = -834.576294 // Координаты гаража
  7. b = -902.218567 // Координаты гаража
  8. c = 11.103406 // Координаты  гаража
  9. end
  10. 0000:
  11. :1
  12. wait 0      
  13. 0164: disable_marker 13@ // удалить маркер
  14. if 00E0: player $PLAYER_CHAR driving
  15. jf @4
  16. 0570: 13@ = create_asset_radar_marker_with_icon 8 at x y z  // Внутри гаража        
  17. 03C1: 0@ = player $PLAYER_CHAR car_no_save // получить хендл авто
  18. if 00F7: player $player_char sphere 0 near_point_in_car a b c radius 20.0 20.0 3.0 sphere 0
  19. jf @4                                            
  20. gosub @open // открыть двери гаража              
  21. if 00FA: player $player_char stopped_in_sphere 0 near_point_in_car x y z radius 9.0 9.0 3.0
  22. jf @3    
  23. gosub @camera // установить камеру
  24. :Check // Проверки
  25. if and
  26. 8495: not vehicle 0@ burning
  27. 83CE: not car 0@ stuck
  28. 8119: not car 0@ wrecked
  29. 00DC: player $player_char driving 0@
  30. 0256: player $PLAYER_CHAR defined      
  31. 01C1: car 0@ stopped
  32. jf @3
  33. wait 0      
  34. if 0AB0: key_pressed 0x61// 1      
  35. then 0AB1: call_scm_func @opcode_0242 2 0@ 1                
  36. else
  37. if 0AB0: key_pressed 0x62// 2                        
  38. then 0AB1: call_scm_func @opcode_0242 2 0@ 2  
  39. else
  40. if 0AB0: key_pressed 0x63// 3                        
  41. then 0AB1: call_scm_func @opcode_0242 2 0@ 3  
  42. else
  43. if 0AB0: key_pressed 0x64// 4          
  44. then gosub @super_properties            
  45. else
  46. if 0AB0: key_pressed 0x65// 5                        
  47. then 0AB1: call_scm_func @opcode_0228 2 0@ 1  
  48. end  
  49. end  
  50. end  
  51. end
  52. end
  53. jump @Check
  54. :3                                        
  55. gosub @open  
  56. 015A: restore_camera
  57. 02EB: restore_camera_with_jumpcut            
  58. if or
  59. 80F5: not player $player_char in_sphere 0 near_point x y z radius 20.0 20.0 3.0
  60. 00F7: player $player_char sphere 0 near_point_in_car a b c radius 30.0 20.0 3.0 sphere 0
  61. jf @3                                    
  62. 0ACE: show_formatted_text_box "~w~garage doors are closed."    
  63. gosub @cloose                                          
  64. :4                                    
  65. 01C3: remove_references_to_car 0@      
  66. jump @1            
  67. //-------------------------------------------------------------------------------------
  68. // SCM FUNCTIONS:
  69. //-------------------------------------------------------------------------------------
  70.                    
  71. :cloose
  72. 0AE3: 3@ = random_object_near_point -836.77 -901.84 15.95 in_radius 5.0 find_next 0 //IF and SET    
  73. for 4@ = 1 to 100
  74. 034E: move_object 3@ to -836.77 -901.84 12.05 speed 0.0 0.0 0.05 collision_check 0
  75. wait 4
  76. end    
  77. return
  78. :open
  79. 0AE3: 3@ = random_object_near_point -836.77 -901.84 12.05 in_radius 5.0 find_next 0 //IF and SET    
  80. for 4@ = 1 to 100
  81. 034E: move_object 3@ to -837.13 -901.67 15.95 speed 0.0 0.0 0.05 collision_check 0
  82. wait 4
  83. end                    
  84. return    
  85. :camera                                          
  86. 015F: set_camera_position -817.4 -905.55 13.86 0.0 rotation 0.0 0.0
  87. 0160: point_camera -3982.5 -238.75 63.44 switchstyle 2    
  88. 0164: disable_marker 13@                          
  89. gosub @cloose                                                                                      
  90. 0ACE: show_formatted_text_box "~h~~t~The press 1 for install timed bomb~t~ ~h~press 2 for install ignition bomb, ~t~ ~y~ press 3 for install detonation bomb~x~ ~t~~h~press 4 to set super properties car~h~~b~~t~ press 5 to remove mine with the car.~b~ "
  91. return    
  92. :opcode_0228// сборс типа бомбы 0@ (хендл автомобиля) 1@ (тип бомбы)
  93. 05E7: 0@ = car 0@ struct
  94. 0@ += 0x1FE  // car bomb offset
  95. 05E0: 0@ = read_memory 0@ size 1 virtual_protect 0
  96. 05F9: 0@ = 0@ AND 7
  97. 003B:   0@ == 1@  // проверить стадию бомбы в автомобиле
  98. 0acd: show_text_high_priority "to remove mine with the car" time 1000      
  99. 05F6: ret 0
  100.  
  101. :opcode_0242 // Установить тип бомбы 0@ (car handle) 1@ (bomb stage)  
  102. gosub @text
  103. 05E7: 0@ = car 0@ struct
  104. 0@ += 0x1FE  // car bomb offset
  105. 05E0: 2@ = read_memory 0@ size 1 virtual_protect 0  // store previous value
  106. 05F9: 1@ = 1@ AND 7  // keep only the first three bits from input param
  107. 05F9: 2@ = 2@ AND 0xF8  // exclude the first three bits in stored value
  108. 05FA: 2@ = 2@ OR 1@  // replace the first three bits of stored value with input param
  109. 05DF: write_memory 0@ size 1 value 2@ virtual_protect 0  // set to new value
  110. 05F6: ret 0            
  111. :text
  112. if 0039: 1@ == 1 // integer values
  113. then 0acd: show_text_high_priority "Timed detonation" time 1000    
  114. else
  115. if 0039: 1@ == 2                        
  116. then 0acd: show_text_high_priority "Engine ignition detonation" time 1000      
  117. else
  118. if 0039: 1@ == 3                        
  119. then 0acd: show_text_high_priority "Remote detonation" time 1000    
  120. end  
  121. end  
  122. end  
  123. return
  124. :super_properties      
  125. 053F: set_car 0@ tires_vulnerable 0
  126. 02AC: set_car 0@ immunities 1 1 1 1 1
  127. 01EC: make_car 0@ very_heavy 1
  128. 0acd: show_text_high_priority "super properties are set" time 1000    
  129. return
  130.  
  131. /*
  132.  
  133. :opcode_02B9// удалить гараж
  134. // 0 @ - входной параметр (дескриптор гаража)
  135. 0@ * = 0xA8   // размер каждой структуры гаража
  136. 0@ + = 0x812668   // базовый адрес для гаражей
  137. 0@ + = 0x5   // смещение активации
  138. 05DF: write_memory 0@ size 1 value 1 virtual_protect 0   // деактивировать гараж
  139. 05F6: ret 0                                        
  140. // car struct + 0x1FE (byte & 7) - car bomb state
  141. //  press 1 for install timed bomb,  press 2 for install ignition bomb, press 2 for install detonation bomb.
  142. //0 -0  CARBOMB_NONE    Без бомбы
  143. 1       CARBOMB_TIMED   Неактивная бомба, рассчитанная по времени, может быть получена из гаражного типа 2
  144. 2       CARBOMB_ONIGNITION      Неактивная зажигательная бомба может быть получена из гаражного типа 3
  145. 3       CARBOMB_REMOTE  Удаленная детонационная бомба может быть получена из гаражного типа 4
  146. 4       CARBOMB_TIMEDACTIVE     Активная импульсная бомба, активированная из бомбы типа 1
  147. 5       CARBOMB_ONIGNITIONACTIVE        Активная зажигательная бомба, активированная из бомбы типа 2  
  148. //0219: 15@ = create_garage_type 5 door -836.738 -915.016 9.8 to -836.738 -898.316 13.4 depth -853.238 -905.016    
  149. //03DA: set_garage 15@ camera_follows_player      
  150. //03CB: set_camera 83.0 -849.8 9.3  
  151.  // "~h~The ~t~press 1 for install timed bomb,."
  152. // 0AB1: call_scm_func @opcode_0228 2 car_handle 0@ bomb_stage 0 // check if car bomb state == 0
  153. // jf @2 press 2 for install ignition bomb, press 2 for install detonation bomb~x~activated
  154. //0AB1: call_scm_func @opcode_0242 2 car_handle 0@ bomb_type 1 // sets car bomb type 1
  155. //0ACE: show_formatted_text_box          
  156.  

9
Общие вопросы / Re: Помощь с CLEO
« : Февраль 22, 2018, 06:12:26 am »
Спасибо за Ваш ответ Уважаемый Shagg.
Данная информация взята с сайта http://www.gtamodding.com/wiki/Memory_Addresses_(VC)
Вот этот кусочек https://prnt.sc/ii3nbj
Может есть еще другой адрес??

Cделал так, зависает. Также не нашел адрес памяти гаража кэма.
Подскажите, пожалуйста.
Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1
  4. wait 0
  5. if 0AB0: key_pressed 0x46 // f
  6. jf @1  
  7. 05E0: 0@ = read_memory 0x7D74B8 size 4 virtual_protect 0
  8. 0@ + = 0x25  
  9. 05DF: write_memory 0@  size 1 value 1 virtual_protect 0
  10. jump @1                    
  11.  
  12.  

Даже чтение адреса, приводит к вылету.

Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1
  4. wait 0
  5. if 0AB0: key_pressed 0x46 // f
  6. jf @1  
  7. 05E0: 0@ = read_memory 0x7D74B8 size 1 virtual_protect 0
  8. 0@ + = 0x25   // сброс бомбы автомобиля
  9. 05E0: 1@ = read_memory 0@ size 1 virtual_protect 0  
  10. jump @1                    
  11.  
  12.  


Попытался сделать гараж, но он не работает в качестве перекраске.
Где я ошибся? 
Код: Javascript
  1. {$CLEO}              
  2. 0000:
  3. :1
  4. wait 0
  5. if 0AB0: key_pressed 0x41 // a
  6. jf @1  
  7. 0219: 0@ = create_garage_type 5 door -837.738 -902.016 11.103 to -852.820 -902.8630 11.103 depth -837.738 -914.941711    
  8. gosub @open
  9. jump @1                    
  10. :open
  11. 0AE3: 3@ = random_object_near_point -836.77 -901.84 12.05 in_radius 5.0 find_next 0 //IF and SET    
  12. for 4@ = 1 to 100
  13. 034E: move_object 3@ to -837.13 -901.67 15.95 speed 0.0 0.0 0.05 collision_check 0
  14. wait 4
  15. end  
  16. return      
  17.  
  18.  




10
Общие вопросы / Re: Помощь с CLEO
« : Февраль 21, 2018, 08:44:29 pm »
Здравствуйте, всем.
Подскажите, пожалуйста, адрес памяти, который устанавливает в машину определенный тип бомбы. Конечно, можно написать скрипт бомбы, но легче сделать это через память.
нашел только это
+ 0x25 - [1 байт] - тип бомбы (3 = дистанционный, 2 = зажигание двигателя, 1 = время, 0 = нет)
но как использовать? не знаю.

11
Общие вопросы / Re: Помощь с CLEO
« : Февраль 18, 2018, 02:11:14 pm »
Уважаемый Shagg благодарю, что общайтесь со мной.
C++ очень интересный и мощный язык программирования. Жаль всегда не хватает времени. Дочь родилась.
Опкод 04D2 при скорости 56 снижается, а при 57 набирает высоту.
Вот бы научиться работать с ida базой и адресами памяти.

12
Общие вопросы / Re: Помощь с CLEO
« : Февраль 14, 2018, 02:52:22 pm »
Спасибо уважаемый Shagg_E за Ваш ответ.
Да cleo изжил себя, надо учится писать плагины, чтобы работать с памятью.
На питоне можно писать плагины или только на с++?
Вот написал скрипт- Томми стоит на летящем самолете не падая. https://www.youtube.com/watch?v=BYLfgRrZCb0&feature=youtu.be
Есть проблема, она постоянно снижается, не удерживая высоту. Подскажите, пожалуйста, как решить  эту проблему?
   
Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1
  4. wait 0  
  5. if 0AB0: key_pressed 0x42 // b                                                
  6. jf @1        
  7. 04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 4.2 0.0
  8. 0AB1: call_scm_func @fun 4 #SKIMMER 1@ 2@ 3@ 0@ 4@    
  9. 00AA: store_car 0@ position_to 1@ 2@ 3@
  10. :4  
  11.  wait 0                        
  12. 00AA: store_car 0@ position_to 1@ 2@ 3@
  13. 000B: 1@ += 0.013357 // floating-point values
  14. 000B: 2@ += 0.627942 // floating-point values
  15. 000B: 3@ += 0.510589
  16. 0055: put_player $player_char at 1@ 2@ 3@
  17. 0171: set_player $player_char z_angle_to 4@
  18. if 0AB0: key_pressed 0x26 // up                              
  19. jf @3                      
  20. 000A: 3@ += 15 // integer values    
  21. car.PutAt(0@, 1@ 2@ 3@)                  
  22. :3
  23. if 0AB0: key_pressed 0x28 // down      
  24. jf @5        
  25. 0acd: show_text_high_priority "time" time 1000  
  26. 04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 90.0 100.0
  27. //|0012: 3@ *= 20
  28. :5
  29. 04D2: set_plane 0@ fly_autopilot_around_point 1@ 2@ 3@ 30  
  30. if 00F8: player $player_char stopped_in_sphere 0 near_point 1@ 2@ 3@  radius 3.0 3.0 1.5
  31. jf @4
  32. :2
  33. if 0AB0: key_pressed 0x4e // b                                                
  34. jf @4                          
  35. jump @1  
  36. :41
  37. wait 0
  38. return
  39. :fun
  40. repeat
  41. wait 0
  42. Model.Load(0@)                    
  43. 038B: load_requested_models        
  44. gosub @delay
  45. until Model.Available(0@)
  46. 00A5: 4@ = create_car 0@ at 1@ 2@ 3@
  47. Model.Destroy(0@)            
  48. 0174: 5@ = car 4@ z_angle
  49. 0AB2: ret 2 4@ 5@
  50. gosub @delay
  51. :delay
  52. 16@ = 0
  53. repeat
  54. wait 0                
  55. until 0029: 16@ >= 100 // задержка
  56. return
  57.  

13
Общие вопросы / Re: Помощь с CLEO
« : Февраль 10, 2018, 12:29:35 pm »
Спасибо за Ваш ответ уважаемый  Shagg_E.
Действительно опкод 035C работает только в цикле.
Делать так.
Теперь можно сбрасывать бомбы  с вертолета.
Введите чит "HUN", чтобы сбросить бомбу, нажмите "B".

Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1
  4. wait 0  
  5. gosub @d
  6. if and
  7. 80E0: not player $player_char driving
  8. 0ADC: test_cheat "hun"
  9. jf @1                      
  10. 04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 10.2 0.0
  11. 0AB1: call_scm_func @fun 4 #HUNTER 1@ 2@ 3@ 4@
  12. :4
  13. wait 0                  
  14. if 00E0:  player $player_char driving
  15. jf @4    
  16. gosub @b
  17. :5
  18. wait 0                  
  19. if 00DC: player $player_char driving 4@
  20. jf @1            
  21. jump @4                      
  22. :b      
  23. gosub @p        
  24. while if 8AB0: not key_pressed 0x42 // b
  25. wait 0                        
  26. 035C: place_object 0@ relative_to_car 4@ offset 0.0 0.9 -2.70
  27. 0453: object 0@ set_rotation -90.0 0.0 0.0      
  28. if 80DC: not player $player_char driving 4@
  29. then jump @1
  30. end    
  31. end                                  
  32. gosub @7                
  33. 01C4: remove_references_to_object 0@
  34. 0108: destroy_object 0@
  35. return                  
  36. :p
  37. 00AA: store_car 4@ position_to 1@ 2@ 3@ offset 0.0 0.0 0.0            
  38. 0AB1: call_scm_func @fun1 1 #RCBOMB 0@                                
  39. 01BC: put_object 0@ at 1@ 2@ 3@              
  40. return
  41. :7
  42. 0382: set_object 0@ collision_detection 1
  43. 04D9: object 0@ set_scripted_collision_check 1          
  44. 0392: object 0@ toggle_in_moving_list 1                        
  45. wait 3600 // таймер взрыва      
  46. 0400: create_coordinate 1@ 2@ 3@ from_object 0@ offset 0.0 0.0 0.0
  47. 020C: create_explosion_with_radius 10 at 1@ 2@ 3@
  48. return    
  49. :d    
  50. 01C3: remove_references_to_car 4@
  51. 01C4: remove_references_to_object 0@
  52. 0108: destroy_object 0@      
  53. return    
  54. :fun
  55. repeat
  56. wait 0
  57. Model.Load(0@)                
  58. 038B: load_requested_models              
  59. gosub @delay
  60. until Model.Available(0@)      
  61. 00A5: 6@ = create_car 0@ at 1@ 2@ 3@
  62. Model.Destroy(0@)
  63. 0AB2: ret 1 6@  
  64. :fun1
  65. repeat
  66. wait 0
  67. Model.Load(0@)                
  68. 038B: load_requested_models              
  69. gosub @delay
  70. until Model.Available(0@)                
  71. 0107: 5@ = create_object 0@ at 0.0 0.0 0.0
  72. Model.Destroy(0@)
  73. 0AB2: ret 1 5@  
  74. :delay
  75. 16@ = 0
  76. repeat
  77. wait 0                
  78. until 0029: 16@ >= 200 // задержка
  79. return        
  80.  
есть вопрос. Как использовать такие адреса памяти?
0x703997
Выбранный индекс меню [байт]. Сообщение GTAForums
•   00 - Статистика
•   01 - Начало игры
•   03 - Настройка звука
•   04 - Дисплей
•   05 - Язык
•   06 - Карта

14
Общие вопросы / Re: Помощь с CLEO
« : Февраль 09, 2018, 04:56:33 pm »
Здравствуйте,  всем.
Захотел, чтобы можно сбрасывать бомбы с вертолета.
Но получается ее прикрепить к вертолету опкодом  035C: place_object 0@ relative_to_car 4@ offset 0.0 0.0 -4.9     то, падает, то зависает в воздухе.
Подскажите, пожалуйста, как реализировать?
Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :1
  4. wait 0                  
  5. if and
  6. 80E0: not player $player_char driving
  7. 0AB0: key_pressed 0x4e // n
  8. jf @1                                      
  9. :2
  10. wait 0                  
  11. if 8AB0: key_pressed 0x4e // n
  12. jf @2                                      
  13. 04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 10.2 0.0
  14. 0AB1: call_scm_func @fun 4 #HUNTER 1@ 2@ 3@  4@
  15. 00AA: store_car 4@ position_to 1@ 2@ 3@ offset 0.0 0.0 -0.4                
  16. 0AB1: call_scm_func @fun1 1 #RCBOMB 0@              
  17. :4
  18. wait 0                  
  19. if and
  20. 00E0:  player $player_char driving
  21. 0AB0: key_pressed 0x4e // n
  22. jf @4        
  23. 00AA: store_car 4@ position_to 1@ 2@ 3@ offset 0.0 0.0 -0.8                  
  24. 01BC: put_object 0@ at 1@ 2@ 3@                            
  25. 035C: place_object 0@ relative_to_car 4@ offset 0.0 0.0 -4.9    
  26. 0392: object 0@ toggle_in_moving_list 1    
  27. wait 3000
  28. :3
  29. wait 0                  
  30. if and
  31. 00E0:  player $player_char driving
  32. 0AB0: key_pressed 0x4e // n
  33. jf @3                          
  34. wait 3000    
  35. 0400: create_coordinate 1@ 2@ 3@ from_object 0@ offset 0.0 0.0 0.0
  36. 020C: create_explosion_with_radius 10 at 1@ 2@ 3@  
  37. 01C4: remove_references_to_object 0@ // This object will now disappear when the player looks away
  38. jump @1                        
  39. :fun
  40. repeat
  41. wait 0
  42. Model.Load(0@)                
  43. 038B: load_requested_models              
  44. gosub @delay
  45. until Model.Available(0@)      
  46. 00A5: 6@ = create_car 0@ at 1@ 2@ 3@
  47. Model.Destroy(0@)
  48. 0AB2: ret 1 6@  
  49. :fun1
  50. repeat
  51. wait 0
  52. Model.Load(0@)                
  53. 038B: load_requested_models              
  54. gosub @delay
  55. until Model.Available(0@)                
  56. 0107: 5@ = create_object #RCBOMB at 0.0 0.0 0.0
  57. Model.Destroy(0@)
  58. 0453: object 5@ set_rotation -90.0 0.0 0.0  
  59. 0382: set_object 5@ collision_detection 1
  60. 04D9: object 5@ set_scripted_collision_check 1
  61. 0AB2: ret 1 5@  
  62. :delay
  63. 16@ = 0
  64. repeat
  65. wait 0                
  66. until 0029: 16@ >= 400 // задержка
  67. return
  68.  

15
Общие вопросы / Re: Помощь с CLEO
« : Февраль 08, 2018, 10:20:45 pm »
Здравствуйте, уважаемый Constantine.
Нужно сначала посмотреть код Вашего скрипта.

Страницы: [1] 2 3 ... 6