Последние сообщения

Страницы: [1] 2 3 ... 10
1
Программирование / Re: GTA SA - опкоды анимации
« Последний ответ от Gunraryux Апрель 26, 2018, 12:59:57 pm »
Я пытаюсь найти людей. Рассказ рассказывается о проблемах, упомянутых в потоке.
2
Моделирование 3D / Re: GFX by DexX
« Последний ответ от Gunraryux Апрель 26, 2018, 12:58:54 pm »
Интересно поговорить об этой интересной истории. Мы поможем найти информацию.
3
Идеи / Re: Оконный режим игры
« Последний ответ от Constanz Апрель 25, 2018, 08:10:46 am »
I think the knowledge gained this time is very important because I am looking for.
4
Общие вопросы / Re: Настоящая вода в бассейнах
« Последний ответ от Constanz Апрель 25, 2018, 08:10:03 am »
To increase my knowledge, I would like to introduce and guide you on the important points to help me.
5
Общие вопросы / Re: Помощь с CLEO
« Последний ответ от egor230 Апрель 07, 2018, 05:51:31 pm »
Здравствуйте, уважаемый Shagg_E.
Да, вы правы дубликат был лишним,  всё прекрасно работает.
Благодаря вашему мудрому совету, нашёл адрес который отвечает за ущерб имуществу.  Кому нужен вот он 0x00975404.
Стоимость машины находится по смещению от  структуры  автомобиля.
6
Общие вопросы / Re: Помощь с CLEO
« Последний ответ от Shagg_E Апрель 04, 2018, 02:30:34 pm »
Дубликат опкода 018E нужен, чтобы точно избежать зависание  звука.

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

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

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

А вообще - стоимость авто прописана в handling.cfg у каждого авто в параметре Z.
7
Общие вопросы / Re: Помощь с CLEO
« Последний ответ от egor230 Апрель 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.  
Тут появилась одна идея. В разделе статистика, есть строка ущерб имуществу. ее значение увеличивается  после  взрыва автомобиля.
Допустим мы заезжаем в гараж. Гаснет экран, игрока перемещаем из авто. Читаем  адрес памяти, которая отвечает за сумму ущерба, сохраняем ее в переменную,  взрываем авто, опять читаем адрес памяти, результат записываем в другую переменную. Находим разность их, чтобы грубо говоря найти стоимость авто. ее  получить  игрок в виде денег, можно называть это  утилизация автомобиля. Всё это можно легко реализовать,  только нужно знать адрес  памяти.  Везде искал его, так и не нашел.
8
Общие вопросы / Re: Помощь с CLEO
« Последний ответ от Shagg_E Март 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(это специальный "гаражный" звук).

А сам код хорошо оптимизирован, лучше чем у меня.
9
Общие вопросы / Re: Помощь с CLEO
« Последний ответ от egor230 Март 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.  
10
Общие вопросы / Re: Помощь с CLEO
« Последний ответ от Shagg_E Март 25, 2018, 09:49:56 pm »
egor230>
Я тут как раз недавно помогал одному челу сделать ворота со звуком - глянь код:
https://pastebin.com/Kgr1niz4
Страницы: [1] 2 3 ... 10