Автор Тема: Помощь с CLEO  (Прочитано 8739 раз)

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #105 : Март 15, 2018, 12:46:32 pm »
хотелось бы больше уроков по работе ida  базой.

Для вопросов по IDA можно использовать форум. Вот тема, например. Или вот еще.


Может как-то можно задать движения через память?

Через память можно. Для Physical Entity(машин, педов и объектов с физикой) есть подкласс CPhysical, где:
0x070 - вектор движения Entity, т.е.
0x070 - (float) x movement speed
0x074 - (float) y movement speed
0x078 - (float) z movement speed

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 498
  • Репутация: +43/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #106 : Март 16, 2018, 07:58:55 am »
Вклинюсь тоже, тема должна быть полезна и другим участникам форума, а она звучит как "я придумываю все подряд, а shaggy ищет решение", и получается по сути тема одного человека непонятно какой направленности. Особой пользы от темы нет, можно общаться напрямую другими способами.

Согласен с тем, что на сайте мало интересных уроков, то, что есть, дает стартовый толчок, дальше по идее только самому копать и копать. Те, кто как-то разобрались, уходят в тень делать свои моды (к коим и себя причисляю), аудитория катастрофически мала.

По IDA в рамках данного форума особо сказать нечего. Есть базы, в них есть закладка Structures, где можно посмотреть, что разобрано. Есть Alt-X на любой переменной или функции, где можно посмотреть все вызовы. Есть псевдокод на F5, который не всегда верно, но понятнее показывает происходящее, чем ассемблерный. Этого должно хватить, чтобы начать разбираться.

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 222
  • Репутация: +313/-0
    • dk22pac
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #107 : Март 16, 2018, 10:24:16 am »
У нас в англоязычном чате plugin-sdk больше 100 человек, я бы не сказал что это мало.
Люди есть, и интерес есть, и информация есть. Надо просто искать и найти.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #108 : Март 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.  
« Последнее редактирование: Март 25, 2018, 06:07:42 pm от egor230 »

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #109 : Март 25, 2018, 09:49:56 pm »
egor230>
Я тут как раз недавно помогал одному челу сделать ворота со звуком - глянь код:
https://pastebin.com/Kgr1niz4

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #110 : Март 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.  
« Последнее редактирование: Март 30, 2018, 02:13:24 pm от egor230 »

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #111 : Март 30, 2018, 02:49:04 pm »
В варианте, где у тебя зависал звук, нежно было увеличить радиус проверки опкода 04E6. Видимо, ворота не могли "остановиться" из-за маленького радиуса.

А вот здесь:
Цитировать
018E: stop_sound 4@
018C: play_sound 3 at 1@ 2@ 3@
018E: stop_sound 4@
Последнюю строчку можно удалить(зачем дубликат?), а в опкоде 018C звук 3 изменить на 5. Звук был 3 хорош для ворот фабрики мороженого, а для гаража лучше 5(это специальный "гаражный" звук).

А сам код хорошо оптимизирован, лучше чем у меня.
« Последнее редактирование: Март 30, 2018, 02:56:42 pm от Shagg_E »

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #112 : Апрель 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.  
Тут появилась одна идея. В разделе статистика, есть строка ущерб имуществу. ее значение увеличивается  после  взрыва автомобиля.
Допустим мы заезжаем в гараж. Гаснет экран, игрока перемещаем из авто. Читаем  адрес памяти, которая отвечает за сумму ущерба, сохраняем ее в переменную,  взрываем авто, опять читаем адрес памяти, результат записываем в другую переменную. Находим разность их, чтобы грубо говоря найти стоимость авто. ее  получить  игрок в виде денег, можно называть это  утилизация автомобиля. Всё это можно легко реализовать,  только нужно знать адрес  памяти.  Везде искал его, так и не нашел.
« Последнее редактирование: Апрель 03, 2018, 12:38:26 pm от egor230 »

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #113 : Апрель 04, 2018, 02:30:34 pm »
Дубликат опкода 018E нужен, чтобы точно избежать зависание  звука.

Дубликат - не решение. Если зависание происходит - это значит, что код написан с ошибками.

только нужно знать адрес  памяти.  Везде искал его, так и не нашел.

Адреса ищутся так. Но лучше конечно изучать уроки по реверсивной инженерии и IDA.

А вообще - стоимость авто прописана в handling.cfg у каждого авто в параметре Z.

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #114 : Апрель 07, 2018, 05:51:31 pm »
Здравствуйте, уважаемый Shagg_E.
Да, вы правы дубликат был лишним,  всё прекрасно работает.
Благодаря вашему мудрому совету, нашёл адрес который отвечает за ущерб имуществу.  Кому нужен вот он 0x00975404.
Стоимость машины находится по смещению от  структуры  автомобиля.

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #115 : Май 05, 2018, 01:56:12 pm »
Здравствуйте всем. Скажите пожалуйста, можно ли  через cleo двигать объекты?  дело в том, что у промзоны  есть  ворота, их я пытаюсь закрыть через cleo, но они даже не находятся через поиск объектов.  Может кто-то их двигать. стало интересно, почему не получается?
https://www.youtube.com/watch?v=sQGHC1DLG7k&feature=youtu.be

Код: Javascript
  1. {$CLEO .cs}
  2. 0000:  
  3. :1
  4. wait 0      
  5. 80E0: not player $player_char driving // íå â àòâî
  6. jf @1
  7. if 0AB0: key_pressed 0x46 // f
  8. jf @1
  9. :2
  10. 05F1: 3@ = random_object_near_point -719.3805 -1279.2191 11.075 in_radius 5.0 find_next 0 //IF and SET
  11. jf @1                                    
  12. 01BB: store_object 3@ position_to 0@ 1@ 2@      
  13. 0acd: show_text_high_priority "god" time 1000    
  14. gosub @Open
  15.  
  16. jump @1        
  17. :Open                
  18. while if 84E6: not object 0@ near_point -749.4312 -1279.8885 11.0874 radius 0.01 0.01 0.01 flag 0  
  19. wait 0                                                                  
  20. 034E: move_object 0@ to -749.4312 -1279.8885 11.0874 speed 0.09 0.07 0.05 collision_check 0
  21. end
  22. 018E: stop_sound 4@
  23. 018C: play_sound 5 at 1@ 2@ 3@
  24. return  
  25.  

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #116 : Май 09, 2018, 11:54:02 am »
Здравствуйте всем. Скажите пожалуйста, можно ли  через cleo двигать объекты?
Можно, но лишь те, что прописаны в data/object.dat

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #117 : Май 10, 2018, 02:37:28 pm »
Спасибо большое за ваш ответ уважаемый Shagg_E. Как жалко, что не все объекты можно двигать. Продолжаю писать cleo скрипты. Сталкиваюсь с новым проблемами, например, пишу скрипт, выбор миссий, вроде  всё хорошо,  тут вдруг  при выборе 8 миссии,  бах вылет.  Сидишь, ломаешь голову,  почему вылетает?  Если у вас будет время,  подскажите, пожалуйста, будьте так  добрее.
Сама идея кажется не такой плохой. Вот демонстрация https://www.youtube.com/watch?v=DkYeYo0m9b0&feature=youtu.be
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:  
  3. :1
  4. wait 0          
  5. if and    
  6. 80E0:  player $player_char driving // не в атво    
  7. 0038: $onmission == 0 // integer values  
  8. jf @1
  9. 0AB0: key_pressed 0x46 // f
  10. jf @1  
  11. 05E0: 0@ = read_memory 0x978810 size 4 virtual_protect 0 // читать текущий интерьер      
  12. jf @1    
  13. 0@ == 0  
  14. jf @1
  15. 1@ = 2
  16. :2
  17. wait 0
  18. 0AB0: key_pressed 0x6b // +            
  19. jf @3    
  20. :21
  21. wait 0
  22. 8AB0: not key_pressed 0x6b // +
  23. jf @21      
  24. 1@ +=1  
  25. gosub @select_missions    
  26. :3
  27. 0AB0: key_pressed 0x6d // -
  28. jf @4  
  29. :31
  30. wait 0
  31. 8AB0: not key_pressed 0x6d // -
  32. jf @31  
  33. 1@ -=1                  
  34. gosub @select_missions    
  35. :4
  36. 0AB0: key_pressed 0x47 // j
  37. jf @2        
  38. :41
  39. wait 0
  40. if 8AB0: not key_pressed 0x47 // j
  41. jf @41                        
  42. 0417: start_mission 1@  // Initial
  43. jump @1  
  44.  
  45. :select_missions        
  46. wait 0        
  47. if 1@ == 3
  48. then  00BC: show_text_highpriority GXT 'LAW_1' time 2700 flag 1  // Text
  49. else if 1@ == 4
  50. then 00BC: show_text_highpriority GXT 'LAW_2' time 2700 flag 1    
  51. else if 1@ == 5
  52. then 00BC: show_text_highpriority GXT 'LAW_3' time 2700 flag 1      
  53. else if 1@ == 6
  54. then 00BC: show_text_highpriority GXT 'LAW_4' time 2700 flag 1  
  55. else if 1@ == 7
  56. then 00BC: show_text_highpriority GXT 'COL_1' time 2700 flag 1  
  57. else if 1@ == 8
  58. then 00BC: show_text_highpriority GXT 'COL_2' time 2700 flag 1          
  59. end                                
  60. end                        
  61. end              
  62. end        
  63. end
  64. end
  65. return
  66.  
  67.  

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #118 : Май 12, 2018, 01:25:17 pm »
У меня вылетает, если пробовать в сохранении, в котором пройдены все основные миссии. Если пробовать запустить где-нибудь на середине сюжета(когда пройдена где-то половина миссий), либо пробовать запустить после начала новой игры - всё работает.
Быть может, в миссии есть какой-то триггер, который приводит к крашу, если запустить его после прохождения какой-нибудь миссии ближе к концу сюжета.

Попробуй глянуть другие загрузчики миссий(1, 2 или 3, например), может там эту проблему решили...

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #119 : Май 12, 2018, 02:03:04 pm »
Спасибо вам большое уважаемый Shagg_E за решения моей проблемы.   Вся проблема  в  значениях глобальных перемен.  Теперь благодаря скрипту,  всё стало ясно. Теперь понял в каком направлении двигаться.  Вы мне очень помогли.