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

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


Сообщения - egor230

Страницы: [1] 2 3 ... 5
1
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 29, 2017, 07:25:41 pm »
Здравствуйте, всем.
Поздравлю всех с наступающим Новым годом.
Благодарю Вашим ответами изучил основы cleo.
Хочется дальше расти и развиваться.
Хотел у Вас спросить, есть опкод 0AD9: write_formatted_text "XYZ: %f %f %f" in_file 0@ 1@ 2@ 3@ а как использовать опкод  0A9E
Скрипт с этим опкодом вылетает.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:
  3. :1
  4. wait 0                      
  5. if 00E0:   player $player_char driving
  6. jf @1                    
  7. if 0AB0: key_pressed 0x4e // n
  8. jf @1                          
  9. 03C0: 0@ = actor $player_char car
  10. 00AA: store_car 0@ position_to 1@ 2@ 3@  
  11. 0AAB: file_exists "CLEO\he.ini"  
  12. 0A9A: 4@ = openfile "CLEO\he.ini" mode 0x77    // Открыть ini файл в режиме записи        
  13. 0A9E: writefile 4@ size 64 from 1@        
  14. 0A9B: closefile 4@
  15. jump @1
  16.  
Скажите, пожалуйста, как правильно использовать  опкод  0A9E

2
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 09, 2017, 10:39:25 am »
Благодарю Вас уважаемый mfisto за Ваш ответ. Теперь адреса памяти работаю.
Хочу научится с ними работать. Не совсем до конца это понимаю.
Например, искал уроки по вызову функций, их к сожалению нет.
Для каких адресов памяти, можно вызывать функцию и как?
Вот переделал один скрипт, теперь правая дверь авто сама открывается при входе.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:
  3. :1
  4. wait 0
  5. if and
  6. 80E0: not player $player_char driving
  7. 00E1: player 0 pressed_button 15
  8. jf @1                                    
  9. actor.storepos($PLAYER_ACTOR, 1@ 2@ 3@)
  10. :2
  11. 0AE2: 10@ = random_vehicle_near_point 1@ 2@ 3@ in_radius 20.0 find_next 0 pass_wrecked 1 //IF and SET
  12. 0AB1: call_scm_func @left_front_door 1 10@ ret 0  
  13. jump @1
  14. :left_front_door        
  15. 05E7: 10@ = car 0@ struct
  16. 05E4: call_function_method 0x59D1D0 struct 10@ num_params 1 pop 0 15 {1..19} 2@ // IsComponentPresent
  17. if 2@ == 1
  18. then
  19. 0085: 3@ = 10@
  20. 3@ += 0x2A0 // CDamageManager
  21. 05E4: call_function_method 0x5A9810 struct 3@ num_params 1 pop 0 2 {0..5} 4@ // GetComponnetStatus
  22. if 4@ <> 3
  23. then
  24. for 12@ = 0.0 TO 1.0 step 0.1
  25. 05E3: call_function_method 0x59CF50 struct 10@ num_params 3 pop 0 12@ 2 15 {1..19} // CAutomobile__OpenDoor ???
  26. wait 0
  27. end
  28. 05E3: call_function_method 0x59CF50 struct 10@ num_params 3 pop 0 1.0 2 15 {1..19} // CAutomobile__OpenDoor ???
  29. end
  30. end
  31. 0AB2: ret 0
  32.  

3
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 06, 2017, 02:14:26 pm »
Mfisto благодарю Вас за очень объяснение.
Ваш способ намного проще и лучше.
Вот как работать с памятью, чтобы сравнивать с id объекта, не знал.
Работа с памятью открывает новые возможности.
Изучаю ее, пока на SA.
Подскажите, пожалуйста, почему не получается отключить радар и интерфейс?
Не понимаю, должно работать.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:
  3. :NONAME_10
  4. 0001: wait 0 ms
  5. 00D6: if
  6. 0ADC: test_cheat "CV"
  7. 004D: jump_if_false @NONAME_10
  8. 0A8D: 1@ = read_memory 0xBA676C size 1 virtual_protect 1
  9. 0acd: show_text_high_priority "~p~ Kill the enemy, take the case!!!" time 7000 // Надпись на экрана
  10. 05DF: write_memory 1@ size 1 value 2 virtual_protect 0
  11. //05DF: write_memory 0xBA6769 size 1 value 0 virtual_protect 1
  12. 0002: jump @NONAME_10
  13. //0A93: end_custom_thread // Завершение потока
  14. 0xBA676C - [байт] Радарный режим
  15. 0 = карты и блики
  16. 1 = блики
  17. 2 = выкл.
  18. 0xBA6769 - [байт] Режим Hud
  19. 0 = выкл.
  20. 1 = on
  21.  


4
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 01, 2017, 10:36:57 am »
Здравствуйте, всем.
Нашел интересный cleo скрипт для sa. Он открывает дверь фабрике.
Код: Javascript
  1. {$CLEO .cs}
  2.  
  3. //-------------MAIN---------------
  4. 0662: printstring "SCRIPT_BY_[_KRASH_]"
  5. 03A4: name_thread "OTRKOYMNEETYXYNTY"
  6.  
  7. :OTRKOYMNEETYXYNTY_44
  8. 0001: wait 0 ms
  9. 00D6: if and
  10. 056D:   actor $PLAYER_ACTOR defined
  11. 0038:   $ONMISSION == 0
  12. 03CA:   object 0@ exists
  13. 00FE:   actor $PLAYER_ACTOR sphere 0 in_sphere 1055.53 2087.596 10.8203 radius 10.0 10.0 10.0
  14. 004D: jump_if_false @OTRKOYMNEETYXYNTY_44
  15. 034E: move_object 0@ to 1055.629 2087.67 15.469 speed 0.0 0.0 0.05 collision_check 0
  16.  
  17. :OTRKOYMNEETYXYNTY_150
  18. 0001: wait 0 ms
  19. 00D6: if
  20. 00FE:   actor $PLAYER_ACTOR sphere 0 in_sphere 1055.53 2087.596 10.8203 radius 10.0 10.0 10.0
  21. 004D: jump_if_false @OTRKOYMNEETYXYNTY_209
  22. 0002: jump @OTRKOYMNEETYXYNTY_44
  23.  
  24. :OTRKOYMNEETYXYNTY_209
  25. 0001: wait 0 ms
  26. 034E: move_object 0@ to 1055.629 2087.67 12.469 speed 0.0 0.0 0.05 collision_check 0
  27. 0002: jump @OTRKOYMNEETYXYNTY_150
  28.  

Решил сделать, что-то подобное в vc с гаражом Кема Джонса.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:  
  3. const
  4. t = 25 // Скорость дверей
  5. end
  6. 0006: 0@ = 0 // integer values      
  7. :Noname_2
  8. wait 0    
  9. if 056D: actor $PLAYER_ACTOR defined  
  10. jf @Noname_2  
  11. if 00F6: player $player_char in_sphere 0 near_point_on_foot -836.77 -901.84 12.05 radius 9.8 4.8 8.5
  12. jf @Noname_2          
  13. :Noname_1  
  14. wait 0      
  15. if and    
  16. 0AB0: key_pressed 69
  17. 0039: 0@ == 0 // integer values      
  18. jf @Noname_3  
  19. 0AE3: 3@ = random_object_near_point -836.77 -901.84 12.05 in_radius 5.0 find_next 0 //IF and SET    
  20. for 4@ = 1 to 100
  21. 034E: move_object 3@ to -837.13 -901.67 15.95 speed 0.0 0.0 0.05 collision_check 0
  22. wait t
  23. end
  24. 000A: 0@ += 1  // integer values  
  25. :Noname_3        
  26. wait 0  
  27. if and    
  28. 0AB0: key_pressed 69  
  29. 0039: 0@ == 1 // integer values      
  30. jf @Noname_4
  31. 0AE3: 3@ = random_object_near_point -836.77 -901.84 15.95 in_radius 5.0 find_next 0 //IF and SET    
  32. for 4@ = 1 to 100
  33. 034E: move_object 3@ to -836.77 -901.84 12.05 speed 0.0 0.0 0.05 collision_check 0
  34. wait t
  35. end
  36. 000E: 0@ -= 1  // integer values  
  37. :Noname_4        
  38. wait 0  
  39. if and    
  40. 80F6: not player $player_char in_sphere 0 near_point_on_foot -836.77 -901.84 12.05 radius 9.8 4.8 8.5
  41. 0039: 0@ == 1 // integer values      
  42. jf @Noname_1  
  43. 0AE3: 3@ = random_object_near_point -836.77 -901.84 15.95 in_radius 5.0 find_next 0 //IF and SET    
  44. for 4@ = 1 to 100
  45. 034E: move_object 3@ to -836.77 -901.84 12.05 speed 0.0 0.0 0.05 collision_check 0
  46. wait t
  47. end
  48. 000E: 0@ -= 1  // integer values  
  49. jump @Noname_2
  50.  
  51.  

Возник вопрос. Есть опкод 05F1: 3@ = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 //IF and SET
Он ищет случайные объекты в радиусе. Как проверить соответствует модель номеру,  например 3@ == 826?.
Как лучше двигать объект, через цикл for? Нужно высчитывать много.

5
Общие вопросы / Re: Помощь с CLEO
« : Ноябрь 21, 2017, 07:50:32 am »
Спасибо огромное уважаемый Shagg_E за Ваш информативный ответ, очень рад нашему общению на форуме в таком формате.
Прошу прощение за долгий ответ, дел куча, а времени мало.
Хорошо, буду выкладывать, жаль по lua не так много уроков как по c++.
Скрипты  с расширением ".s", толкнули к интересной мысли. Их можно использовать как вспомогательные инструменты для обхода ограничений в 16.
Врагов создаю в BOMB.s, если враги убиты в ini файл пишет 1. А в основном поток идет проверка записан в ini файл 1. 
Не совсем понятно про 00D7 это поток можно вызвать опкодом.
Спасибо огромное за подробное объяснение про потоки.
C++ пока это для меня темным лес. Пока по cleo еще много вопросов.
Высокоуровневый скриптинг, можно использовать, если работает идеально на низкоуровневом.
Благодарю Вас за понятного объяснение про запись в ini файл, теперь лимит в перемен можно обойти.
cleo миссии имеют ряд особенности, мы не можем писать cm миссии как для sa.
Почему опкод 004E: end_thread помогает избежать вылетов, тут надо еще разбираться. Благодарю за верное замечание, переместил его.
Да, нехватка времени эта главная проблема нашего времени.
Прекрасно понимаю, что мой код миссии кривой, его можно улучшать, по мере накопление опыта.
Из-за свободы в написание скриптов, трудно разобраться в чужом скрипте, хорошо в этом помогают комментарии.
Спасибо за подсказку насчет опкода 0A93.
Есть еще один вопрос.
Существуют опкоды.
0297: clear_rampage_kills очистить все убийства
0298: 0@ = rampage_kills 83 получить сколько игрок убил педов.
Пытался сделать счетчик убийств.
Код: Javascript
  1. {$CLEO}
  2. 0000:
  3. :k_1
  4. wait 0
  5. if 05EE: key_pressed 72
  6. jf @k_1
  7. 0297: clear_rampage_kills
  8. 0298: 0@ = rampage_kills 83          
  9. :k_2          
  10. wait 0
  11. if 0039: 0@ == 1 // integer values
  12. jf @k_2
  13. 0acd: show_text_high_priority "da" time 1000 // убил одного вывел сообщение "da"
  14. jump @k_1
  15.  
думал использовать в миссиях.
Вот миссия.
 
Код: Javascript
  1. {$CLEO}
  2. 0000:        
  3. const
  4. x = -1150.94 // Координаты значка миссии
  5. y = -1418.94 // Координаты значка миссии
  6. z = 11.5395 // Координаты значка миссии
  7. a = -1101.47 // Координаты пикапа
  8. b = -1330.97 // Координаты пикапа
  9. c = 11.3695 // Координаты пикапа  
  10. d = -1064.83 // Координаты педа
  11. e = -1445.94 // Координаты педа
  12. f = 11.7444 // Координаты педа    
  13. m = 1000 // Кол-во денег педа  
  14. h = 200 // Количество жизни актера  
  15. g = 169.2093 // Задать угол актеру  
  16. end
  17. :MISSION_1    
  18. wait 0                                    
  19. if 0256: player $player_char defined
  20. jf @MISSION_1                                                    
  21. Thread 'TEST'  
  22. if and
  23. 0038: $onmission == 0 // integer values
  24. 0ADC: test_cheat "BLK" // включить миссию  
  25. jf @MISSION_1    
  26. :MISSION_START // Старт миссии          
  27. 03CB: load_scene d e f // быстрая прогрузка местности, чтобы не видеть мерзкие LODы
  28. fade 0 300 // Затемнение экрана      
  29. gosub @begin // Начало      
  30. gosub @pickup // Запрос модели кейса    
  31. 0AB1: call_scm_func @fun 3 #VICE4 4 #flame 1@                
  32. 0213: 14@ = create_pickup 335 type 1 at a b c // Создать пикап кейса  
  33. 03DC: 15@ = create_marker_above_pickup 14@ // Создать маркер над пикапом кейса  
  34. 0055: put_player $player_char at x y z // Поставить игрока на точку    
  35. gosub @delay // Задержка        
  36. fade 1 300 // Убрать затемение экрана  
  37. 0acd: show_text_high_priority "~p~ Kill the enemy, take the case!!!" time 7000 // Надпись на экрана          
  38. 0A92: create_custom_thread "BOMB.s" // Запустить скрипт с врагами  
  39. :player  // Условия провал миссии  
  40. wait 0
  41. if 8256: not player $player_char defined
  42. jf @actor
  43. gosub @MISSION_FAILED // Провал миссии    
  44. :actor // Условия прохождение миссии
  45. if and
  46. 0118: actor 1@ dead
  47. pickup.Picked_up(14@)    
  48. jf @player            
  49. 0A9A: 13@ = openfile "CLEO\Set.ini" mode "rt" // Открыть ini файл в режиме чтение      
  50. 0ADA: 12@ = scan_file 13@ format "%d" 11@ //IF and SET
  51. if
  52. 0039: 11@ == 1 // integer values
  53. jf @player                          
  54. 0A9B: closefile 13@  
  55. 0A9A: 13@ = openfile "CLEO\Set.ini" mode 0x77  // Открыть ini файл в режиме записи    
  56. 0006: 11@ = 0 // integer values            
  57. 0AD9: write_formatted_text "%d" in_file 13@ 11@
  58. 0A9B: closefile 13@  
  59. gosub @MISSION_COMPLETED // Миссия выполнена  
  60. :MISSION_COMPLETED // Миссия выполнена
  61. 01E3: text_1number_styled 'M_PASS' number 1000 time 3000 style 1  // ˜© ?po¦?? ?ty m?cc?«! $~1~    
  62. 0394: play_music 1                        
  63. Player.Money($PLAYER_CHAR) += 1000            
  64. gosub @MISSION_END // Завершение миссии  
  65. return  
  66. :MISSION_FAILED // Провал миссии
  67. 00BA: text_styled 'M_FAIL' 3000 ms 1 // Надпись провал миссии    
  68. gosub @MISSION_END // Завершение миссии
  69. return  
  70. :MISSION_END // Завершение миссии  
  71. 0249: release_model #VICE4
  72. 01C2: remove_references_to_actor 1@              
  73. 0164: disable_marker 15@                
  74. 0215: destroy_pickup 14@        
  75. 0249: release_model 355            
  76. 0395: clear_area 1 at x y range z 100.0 // Очистка местностти  
  77. 0395: clear_area 0 at x y range z 100.0  
  78. 0004: $onmission = 0 // integer values
  79. 00D8: mission_cleanup    
  80. 0ABA: end_custom_thread_named "BOMB.s"      
  81. jump @MISSION_1 // Чтобы можно пройти заново
  82. return                                          
  83. 0A93: end_custom_thread // Завершение потока  
  84. :begin          
  85. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1  
  86. 0004: $onmission = 1 // мисия запущена                                                        
  87. wait 0        
  88. return                  
  89. :pickup
  90. wait 0
  91. 0247: request_model 335  
  92. 038B: load_requested_models          
  93. if 0248: model 335 available
  94. jf @pickup
  95. return                    
  96. :delay
  97. 16@ = 0
  98. repeat
  99. wait 0                
  100. until 0029: 16@ >= 900 // задержка  
  101. return
  102. :fun
  103. repeat
  104. wait 0
  105. 0247: request_model 0@ // Запрос модели таксиста
  106. 0247: request_model 2@ // Запрос модели минигана
  107. 038B: load_requested_models
  108. gosub @delay
  109. until gosub @load
  110. 5@ = actor.Create(1@, 0@, d, e, f)
  111. 000E: 2@ -= 257 // Установить номер оружие
  112. 01B2: give_actor 5@ weapon 2@ ammo 9999
  113. 02E2: set_actor 5@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  114. 000A: 2@ += 257 // Установить модель оружие
  115. actor.Angle(5@) = g // Задать угол актеру
  116. actor.Health(5@) = h // Установить кол-во здоровье педа
  117. 03FE: set actor 5@ money m // Кол-во денег педа
  118. 01CA: actor 5@ kill_player $player_char // Актер хочет убить игрока
  119. Model.Destroy(2@)
  120. Model.Destroy(0@)
  121. 0AB2: ret 1 5@
  122. :load
  123. if and
  124. Model.Available(0@)
  125. Model.Available(2@)
  126. jf @load
  127. return
  128.  

Скрипт врагов

Код: Javascript
  1. {$CLEO .s}                
  2. 0000:    
  3. const
  4. x = -1150.94 // Координаты значка миссии
  5. y = -1418.94 // Координаты значка миссии
  6. z = 11.5395 // Координаты значка миссии
  7. a = -1101.47 // Координаты пикапа
  8. b = -1330.97 // Координаты пикапа
  9. c = 11.3695 // Координаты пикапа  
  10. d = -1064.83 // Координаты педа
  11. e = -1445.94 // Координаты педа
  12. f = 11.7444 // Координаты педа
  13. m = 1000 // Кол-во денег педа  
  14. h = 200 // Количество жизни актера  
  15. g = 169.2093 // Задать угол актеру  
  16. end                                      
  17. thread 'BOMB'      
  18. :1
  19. wait 0                                        
  20. 0AB1: call_scm_func @fun 3 #VICE4 4 #flame 1@ 2@ 3@ 4@    
  21. :2                            
  22. wait 0
  23. if and                              
  24. 0118: actor 1@ dead            
  25. 0118: actor 2@ dead            
  26. jf @3                                          
  27. 0AAB: file_exists "CLEO\Set.ini"    
  28. 0A9A: 13@ = openfile "CLEO\Set.ini" mode 0x77  // IF and SET        
  29. 0006: 11@ = 1 // integer values            
  30. 0AD9: write_formatted_text "%d" in_file 13@ 11@
  31. 0A9B: closefile 13@  
  32. jump @4
  33. :3      
  34. if 8256: not player $player_char defined
  35. jf @2
  36. :4
  37. 0164: disable_marker 3@    
  38. 0164: disable_marker 4@    
  39. 01C2: remove_references_to_actor 1@        
  40. 01C2: remove_references_to_actor 2@        
  41. 0249: release_model #VICE4
  42. 004E: end_thread // Завершение потока                            
  43. :fun
  44. repeat
  45. wait 0
  46. 0247: request_model 0@ // Запрос модели таксиста
  47. 0247: request_model 2@ // Запрос модели минигана    
  48. 038B: load_requested_models          
  49. gosub @delay              
  50. until gosub @load      
  51. 3@ = actor.Create(1@, 0@, d, e, f)    
  52. 000E: 2@ -= 257 // Установить номер оружие
  53. 01B2: give_actor 3@ weapon 2@ ammo 9999    
  54. 02E2: set_actor 3@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  55. 000A: 2@ += 257 // Установить модель оружие
  56. actor.Angle(3@) = g // Задать угол актеру  
  57. actor.Health(3@) = h // Установить кол-во здоровье педа                
  58. 03FE: set actor 3@ money m // Кол-во денег педа  
  59. 01CA: actor 3@ kill_player $player_char // Актер хочет убить игрока      
  60. 0187: 5@ = create_marker_above_actor 3@        
  61. 4@ = actor.Create(1@, 0@, d, e, f)    
  62. 000E: 2@ -= 257 // Установить номер оружие
  63. 01B2: give_actor 4@ weapon 2@ ammo 9999    
  64. 02E2: set_actor 4@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  65. 000A: 2@ += 257 // Установить модель оружие
  66. actor.Angle(4@) = g // Задать угол актеру  
  67. actor.Health(4@) = h // Установить кол-во здоровье педа                
  68. 03FE: set actor 4@ money m // Кол-во денег педа  
  69. 01CA: actor 4@ kill_player $player_char // Актер хочет убить игрока      
  70. 0187: 6@ = create_marker_above_actor 4@    
  71. 0249: release_model 0@
  72. 0249: release_model 2@
  73. 0AB2: ret 4 3@ 4@ 5@ 6@  
  74. :delay
  75. 16@ = 0
  76. repeat
  77. wait 0                
  78. until 0029: 16@ >= 900 // задержка  
  79. return
  80. :load
  81. if and
  82. Model.Available(0@)
  83. Model.Available(2@)
  84. jf @load
  85. return
  86.  

6
Общие вопросы. / Re: Справка по движку.
« : Ноябрь 06, 2017, 02:42:03 pm »
Здравствуйте, всем.
Учусь писать миссии на lua, путем изменение шаблонных миссии.
В cleo есть scm функция с возвратом, модель и тип педа, модель оружие и тип. Вернули хенлд врага со оружием.
Код: Javascript
  1. 0AB1: call_scm_func @fun 3 #VICE4 4 #M60 1@      
  2.  
Код: Javascript
  1.                          
  2. :fun
  3. repeat
  4. wait 0
  5. 0247: request_model 0@ // Запрос модели таксиста
  6. 0247: request_model 2@ // Запрос модели минигана    
  7. 038B: load_requested_models          
  8. gosub @delay              
  9. until gosub @load
  10. 5@ = actor.Create(1@, 0@, d, e, f)    
  11. 000E: 2@ -= 257 // Установить номер оружие
  12. 01B2: give_actor 5@ weapon 2@ ammo 9999    
  13. 02E2: set_actor 5@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  14. 000A: 2@ += 257 // Установить модель оружие
  15. actor.Angle(5@) = g // Задать угол актеру  
  16. actor.Health(5@) = h // Установить кол-во здоровье педа                
  17. 03FE: set actor 5@ money m // Кол-во денег педа  
  18. 01CA: actor 5@ kill_player $player_char // Актер хочет убить игрока    
  19. Model.Destroy(0@)      
  20. Model.Destroy(2@)      
  21. 0AB2: ret  1 5@  
  22. :delay
  23. 16@ = 0
  24. repeat
  25. wait 0                
  26. until 0029: 16@ >= 900 // задержка  
  27. return
  28. :load
  29. if and
  30. Model.Available(0@)
  31. Model.Available(2@)
  32. jf @load
  33. return
  34.  

как это сделать в lua vice?

Вот это кусок кода, нужно передать модель оружия и педа, получить врага.
Код: Javascript
  1.  
  2.   RequestModel(m); -- Army
  3.  LoadRequestedModels();
  4.   soldier = CreateActor(20, m, d, e, f);-- Создание актера    
  5.   SetActorObjectiveTarget(soldier, PLAYER_CHAR, 8, 0) -- задача у актера    
  6.   Market = SetBlipTieToActor(soldier, flag, 2) -- маркер над актером
  7.   SetActorWalkStyle(soldier , 50) -- походка актера
  8.   SetActorPedStats(soldier , 3) -- Устанавливаем поведение актеру. чем выше, тем пугливлее.
  9.   SetActorMoney(soldier, 50000) -- Установить кол-во денег врагу
  10.  
Помогите, пожалуйста, умные люди.

Весь код.
Код: Javascript
  1.  
  2. local soldier = -1;
  3. local x = -1150.94 -- Координаты значка миссии
  4. local y = -1418.94 -- Координаты значка миссии
  5. local z = 11.5395 -- Координаты значка миссии
  6. local a = -1101.47 -- Координаты пикапа
  7. local b = -1330.97 -- Координаты пикапа
  8. local c = 11.3695 -- Координаты пикапа  
  9. local d = -1064.83 -- Координаты педа
  10. local e = -1445.94 -- Координаты педа
  11. local f = 11.7444 -- Координаты педа
  12. local m = 4 -- Модель педа
  13. local function mission_end() -- завершение миссии
  14.  ON_MISSION = 0
  15.  CleanUpThisPed(soldier)
  16.  ReleaseModel(m) -- RELEASE ARMY
  17.  ClearBlip(Market)
  18. end
  19. local function mission_failed() -- провал миссии
  20.  GXT_AddBigMessageWithNumber("M_FAIL", 5000, 0)  
  21.  ICON_MISSION_1 = CreateBlip(4, 77.3075, -879.1083, 10.4481, 2, 3)
  22.  SetBlipSprite(ICON_MISSION_1, 5)
  23.  mission_end()
  24. end
  25. local function mission_complete() -- миссия пройдена
  26.  GXT_AddBigMessageWithNumber("M_PASS", 5000, 0, 100)  
  27.  PlayMusic(1)
  28.  SetPlayerMoney(PLAYER_CHAR, GetPlayerMoney(PLAYER_CHAR) + 100)
  29.  MISSION_COMPLETE = 1
  30.  ICON_MISSION_1 = nil
  31.  ICON_MISSION_2 = CreateBlip(4, 77.3075, -879.1083, 10.4481, 2, 3)
  32.  SetBlipSprite(ICON_MISSION_2, 6)
  33.  mission_end()
  34. end
  35. function MISSION_1()
  36.   ON_MISSION = 1
  37.   MakePlayerSafe(PLAYER_CHAR, true)-- замораживает игрока, при этом он становится не доступным для управления
  38.   PutPlayerAt(PLAYER_CHAR, x, y, z)
  39.   MakePlayerSafe(PLAYER_CHAR, false)  
  40.   if IsDeadActor(PLAYER_ACTOR) then
  41.        mission_failed()  -- Если плеер был убит, то миссия провалена!   
  42.           return
  43.     end
  44.   RequestModel(m); -- Army
  45.  LoadRequestedModels();
  46.   soldier = CreateActor(20, m, d, e, f);-- Создание актера    
  47.   SetActorObjectiveTarget(soldier, PLAYER_CHAR, 8, 0) -- задача у актера    
  48.   Market = SetBlipTieToActor(soldier, flag, 2) -- маркер над актером
  49.   SetActorWalkStyle(soldier , 50) -- похода актера
  50.   SetActorPedStats(soldier , 3) -- Устанавливаем поведение актеру. чем выше, тем пугливлее.
  51.   SetActorMoney(soldier, 50000) -- Установить кол-во денег врагу
  52.   while true do-- Цикл миссии
  53.   if IsDeadActor(soldier) then
  54.           PutPlayerAt(PLAYER_CHAR, 77.3075, -879.1083, 10.4481)
  55.       Wait(2000)
  56.       mission_complete()
  57.           return
  58.     end
  59.   if IsDeadActor(PLAYER_ACTOR) then
  60.       mission_failed()
  61.           return
  62.     end
  63.   Wait(0)
  64. end              
  65. end
  66.  

7
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 30, 2017, 09:23:04 pm »
Уважаемый Shagg благодарю за Вашу отзывчивость и терпение. Всегда хотел стать программистом. Вы столько много мне помогайте.
Есть Вы не против, буду выкладывать свои поделки по lua.
С опытом приходит перфекционизм в деле написании скриптов, стремление сделать код кратким, понятным и легко изменяемым.
На помощь приходят scm-функций, например, 0AB1: call_scm_func @fun 3 #HMOCA 4 #MINIGUN 1@ . передаем модель, а ее id функция находит сама- очень удобно.
Вы правы, большую часть времени уходит на тестирования, скрипт перезагрузки скрипта сильно. Всегда убираю построение скрипты, чтобы не мешались.         
благодарю Вас за объяснение об этих двух опкодах.
Очень интересна разница между опкодами создающими и завершающими поток.
Нюансы их применение.
Код: Javascript
  1. 0A92: create_custom_thread "ShowTextBox.s"
  2. 00D7: create_thread @HJ without_parameters
  3. 05DE: create_custom_thread 'ct.s'
  4. 03A4: name_thread 'MAIN'
  5.  
  6. 004E: end_thread
  7. 0A93: end_custom_thread
  8. 0459: end_thread_named 'mythread'
  9. 0ABA: end_custom_thread_named 'BENZIN'
  10.  

Хотел бы научиться писать плагины на C++, жаль пока нет инструкции в видео формате…..
Декомпиляцией поможет отсечь элементарные ошибки в коде.

С бесконечными циклами, пока работаю хуже, чем с метками.
Увидел у Vital на канале, что он использовал.
Код: Javascript
  1. 0000:                    
  2. while player.Defined($PLAYER_CHAR)
  3. вместо
  4.  
  5. 0000:                    
  6. while true
  7.     wait 0
  8.     if  player.Defined($PLAYER_CHAR)
  9.  
так короче на один end.
Думал, опкод 0AB0 позволяет избавить от проверки отпущена клавиша.
Опкод 0AAB нужно записывать как условия.
Спасибо Вам огромное за скрипт.
Есть вопросы.
Вот опкод 0A9A нашел описание к нему, может новичкам поможет.
Код: Javascript
  1.  0A9A: 0@ = openfile "CLEO/coordinate.ini" mode 0x77  // IF and SET
  2.  
  3. Открывает файл для чтения и записи. Этот код операции может использоваться как условие: если файл не был открыт, он возвращает False, иначе True.
  4.  
  5. Параметры:
  6. 1 = переменная для хранения дескриптора файла
  7. 2 = имя файла. Если путь относительный, файл открыт в соответствии с текущим каталогом (код операции 0A99).
  8. 3 = режим открытия файла:
  9. 0x6272 - открывает двоичный файл для чтения
  10. 0x72 - открывает текстовый файл для чтения
  11. 0x6277 - открывает двоичный файл для записи
  12. 0x77 - открывает текстовый файл для записи
  13.  
Насчет опкода 0AD9: write_formatted_text "XYZ: %f %f %f" in_file 0@ 1@ 2@ 3@
Почему пишется %f %f %f? Что это дает и почему именно так?
Вот переписал миссию, она работает, проверил десятки раз.
Помогло избавиться от вылетов при подбирание денег 004E: end_thread // Завершение потока, но при провале или выполнении миссии, приходится перезагружать сэйв. Думаю решить эту проблему перезагрузкой из другого файла, методом  0A9A.
Также интересное наблюдение, если создать более двух врагов, игра вылетает с ошибкой http://pixs.ru/showimage/net1JPG_8268775_28118726.jpg поэтому их закомментировал. 
 
Код: Javascript
  1. {$CLEO}
  2. 0000:        
  3. const
  4. x = -1150.94 // Координаты значка миссии
  5. y = -1418.94 // Координаты значка миссии
  6. z = 11.5395 // Координаты значка миссии
  7. a = -1101.47 // Координаты пикапа
  8. b = -1330.97 // Координаты пикапа
  9. c = 11.3695 // Координаты пикапа  
  10. d = -1064.83 // Координаты педа
  11. e = -1445.94 // Координаты педа
  12. f = 11.7444 // Координаты педа
  13. m = 1000 // Кол-во денег педа  
  14. h = 200 // Количество жизни актера  
  15. g = 169.2093 // Задать угол актеру  
  16. end
  17. :MISSION_1    
  18. wait 0                                    
  19. if 0256: player $player_char defined
  20. jf @MISSION_1                                                    
  21. Thread 'TEST'  
  22. if and
  23. 0038: $onmission == 0 // integer values
  24. 0ADC: test_cheat "BLK" // включить миссию  
  25. jf @MISSION_1    
  26. :MISSION_START // Старт миссии          
  27. 03CB: load_scene d e f // быстрая прогрузка местности, чтобы не видеть мерзкие LODы
  28. fade 0 300 // Затемнение экрана      
  29. gosub @begin // Начало      
  30. gosub @pickup // Запрос модели кейса                  
  31. 0AB1: call_scm_func @fun 3 #HMOCA 4 #MINIGUN 1@      
  32. 0AB1: call_scm_func @fun 3 #VICE4 4 #M60 2@          
  33. //0AB1: call_scm_func @fun 3 #VICE3 4 #M60 3@
  34. //0AB1: call_scm_func @fun 3 #VICE2 4 #M60 4@        
  35. 0213: 14@ = create_pickup 335 type 1 at a b c // Создать пикап кейса  
  36. 03DC: 15@ = create_marker_above_pickup 14@ // Создать маркер над пикапом кейса  
  37. 0055: put_player $player_char at x y z // Поставить игрока на точку    
  38. gosub @delay // Задержка        
  39. fade 1 300 // Убрать затемение экрана          
  40. :player  // Условия провал миссии  
  41. wait 0
  42. if 8256: not player $player_char defined
  43. jf @actor
  44. gosub @MISSION_FAILED // Провал миссии    
  45. :actor // Условия прохождение миссии
  46. if and        
  47. 0118: actor 1@ dead      
  48. 0118: actor 2@ dead
  49. //0118: actor 3@ dead
  50. //0118: actor 4@ dead
  51. pickup.Picked_up(14@)    
  52. jf @player  
  53. gosub @MISSION_COMPLETED // Миссия выполнена  
  54. :MISSION_COMPLETED // Миссия выполнена
  55. 01E3: text_1number_styled 'M_PASS' number 1000 time 3000 style 1  // ˜© ?po¦?? ?ty m?cc?«! $~1~    
  56. 0394: play_music 1                        
  57. Player.Money($PLAYER_CHAR) += 1000            
  58. gosub @MISSION_END // Завершение миссии  
  59. return  
  60. :MISSION_FAILED // Провал миссии
  61. 00BA: text_styled 'M_FAIL' 3000 ms 1 // Надпись провал миссии    
  62. gosub @MISSION_END // Завершение миссии
  63. return  
  64. :MISSION_END // Завершение миссии                
  65. 0164: disable_marker 15@                
  66. 0215: destroy_pickup 14@        
  67. 0249: release_model 355      
  68. 0249: release_model #HMOCA          
  69. 0249: release_model #VICE4        
  70. //0249: release_model #VICE3          
  71. //0249: release_model #VICE2            
  72. 01C2: remove_references_to_actor 1@    
  73. 01C2: remove_references_to_actor 2@  
  74. //01C2: remove_references_to_actor 3@    
  75. //01C2: remove_references_to_actor 4@                
  76. 0004: $onmission = 0 // integer values
  77. 00D8: mission_cleanup    
  78. 004E: end_thread // Завершение потока  
  79. jump @MISSION_1 // Чтобы можно пройти заново    
  80. return            
  81. :begin              
  82. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1  
  83. 0004: $onmission = 1 // мисия запущена                                                        
  84. wait 0
  85. return                                        
  86. :fun
  87. repeat
  88. wait 0
  89. 0247: request_model 0@ // Запрос модели таксиста
  90. 0247: request_model 2@ // Запрос модели минигана    
  91. 038B: load_requested_models          
  92. gosub @delay              
  93. until gosub @load
  94. 5@ = actor.Create(1@, 0@, 0, 0, 0)    
  95. 000E: 2@ -= 257 // Установить номер оружие
  96. 01B2: give_actor 5@ weapon 2@ ammo 9999    
  97. 02E2: set_actor 5@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  98. 000A: 2@ += 257 // Установить модель оружие
  99. actor.Angle(5@) = g // Задать угол актеру  
  100. actor.Health(5@) = h // Установить кол-во здоровье педа                
  101. 03FE: set actor 5@ money m // Кол-во денег педа  
  102. 01CA: actor 5@ kill_player $player_char // Актер хочет убить игрока    
  103. Model.Destroy(0@)      
  104. Model.Destroy(2@)      
  105. actor.PutAt(5@, d, e, f) // Поставить врага на точку      
  106. 0AB2: ret  1 5@
  107. :delay
  108. 16@ = 0
  109. repeat
  110. wait 0                
  111. until 0029: 16@ >= 900 // задержка  
  112. return
  113. :load
  114. if and
  115. Model.Available(0@)
  116. Model.Available(2@)
  117. jf @load
  118. return
  119. :pickup
  120. wait 0
  121. 0247: request_model 335  
  122. 038B: load_requested_models          
  123. if 0248: model 335 available
  124. jf @pickup
  125. return
  126.  

8
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 24, 2017, 09:02:30 am »
Здравствуйте, уважаемый Shagg.
Спасибо Вам за добрые слова, Вы всегда меня поддерживали мудрым советом.
Свой прогрессом недоволен, хочется все и сразу, думал, что на следующий день достигну это уровня, а не через 3 с половиной месяца.
Gta vc, любимая игра, все хотел ее улучшить. Но в жизни много проблем, которые нужно решить. Нельзя бросить работу, все остальное, уйти в программирования с головой.
Годами находить решения, редкий человек, обладает таким терпением.
Вы мне очень помогли, Вам очень благодарен. Без Вас не достиг этого уровня. Как хорошо, что Вы помогайте и вдохновляйте других.
Помогаю в личке в вконтакте одному школьнику, иногда в шоке от его банальных косяков.
Хотел у Вас спросит можно открыт тему по lua скриптам. Это неплохая альтернатива cleo, может привлечь новых людей.
Моя cleo миссия для vc (убить таксиста, взять кейс) работает. Сделал координаты поближе, при 6 прохождении начала вылетать с этой ошибкой странно
http://pixs.ru/uploaded/netJPG_1964327_28025231.jpg/28025231_7909674/
Есть вопрос в чем отличия между этими опкодами 0AB1: call_scm_func @GetSQR 1 10 $result и 05F5: call_scm_func @func params_count 0?  они по своему действию очень схожи.
У Вас форуме есть тема Vice City Plugin SDK. Это круто! Но что это такое? Как пользоваться? Что может? не понятно. Боюсь писать туда, бан получу за тупость еще.
Написал скрипт, который по нажатию клавиши f записывает координаты игрока в ini файл. Может быть полезен. А как записать координаты в одну строчку? Чтобы удобнее копировать их.
Код: Javascript
  1. {$CLEO}
  2. 0000:                    
  3. while player.Defined($PLAYER_ACTOR)
  4. wait 0      
  5. if 80E0: not player $player_char driving
  6. then      
  7. if 0AB0: key_pressed 0x46 // f
  8. then                  
  9. 0AAB: file_exists "cleo\coordinate.ini"
  10. 0054: store_player $PLAYER_CHAR position_to 0@ 1@ 2@
  11. 0AF3: write_float 0@ to_ini_file "cleo\coordinate.ini" section "SectionName" key " x "
  12. 0AF3: write_float 1@ to_ini_file "cleo\coordinate.ini" section "SectionName" key " y "
  13. 0AF3: write_float 2@ to_ini_file "cleo\coordinate.ini" section "SectionName" key " z "
  14. 0acd: show_text_high_priority "~r~coordinates recorded" time 1000    
  15. end
  16. end
  17. end
  18.  

9
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 21, 2017, 02:59:50 pm »
Огромное спасибо уважаемый Shagg_E за возможность общаться с умным человеком.
Да, совершено правы, невнимательность, ведет к совершению ошибок.
Раньше придерживался девиз "Главное, чтоб работало", сейчас с опытом, хочется переписать все скрипты, начиная с первого, теперь вижу все свои недочеты и серьезные огрехи, которые тогда не замечал.
 Вы "середнячок"  ультра класса!
Уверен Ваш светлый ум разобрался с ним в "два счета"
Там нет лимит переменных, есть другие классные фишки, они облегчаю программирование.
Например, написал lua скрипт, При нажатии на клавиши 1 cj дать миниган и 100 патронов.
Представлю, что Вы могли на писать на нем, если с лимитом в 16 переменных, творите настоящую фантастику.
Код: Javascript
  1. script_author("egor")
  2. script_name("weapon")
  3. require "lib.moonloader"
  4.  
  5. function main() -- объявление функции
  6.  while true do -- бесконечный цикл
  7.  local a = 362 -- модель оружие
  8.  local b = 38 -- id оружие или его номер
  9.  local c = 100 -- количество патронов у оружия
  10. wait(0) -- задержка в 0 мс
  11. if isPlayerPlaying (PLAYER_HANDLE) then  -- если игрок найден
  12. if isKeyDown(VK_1)  then -- если клавиша 1 нажата
  13.     requestModel(a) -- запрос модели минигана
  14. if hasModelLoaded(a) then  -- ждём, пока модель не загрузится  
  15.  while isKeyDown(VK_1) do wait(100) end -- и ждём, пока клавиша не будет отпущена
  16.   printString ("GiveWeapon", 1000) -- надпись дано оружие, второй параметр время надписи
  17.  giveWeaponToChar(PLAYER_PED, b, c) -- дать миниган, первый параметр id, количество патронов
  18.  markModelAsNoLongerNeeded (a, b) -- удалить модель и id из памяти
  19.  end
  20.  end
  21.  end
  22.  end
  23.  end
  24.  
  25.  

10
Программирование / Re: Vice City Plugin SDK
« : Октябрь 19, 2017, 04:45:38 pm »
Ура!!!!! Здорово!!!!!!!!!! Вот бы этому научиться.....

11
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 19, 2017, 03:33:15 pm »
Спасибо уважаемый Shagg_E за Ваш совет.
Расстановка может помочь найти ошибку в скрипте, сам еще использую 0acd: show_text_high_priority "ok" time 1000, чтобы где застрял скрипт.
Вы очень много меня научили, дорогой Shagg_E.
В принципе cleo миссия работает, ее можно использовать как шаблон для написание миссии, путем внесения изменений.
Написания даже самым простых миссии очень мутное дело, при этом в cleo нет возможности все сделать компактнее, вместо 10 опкодов писать одну функцию. Это все упростить.
Вы как один из лучших модеров по гта, прекрасно знакомы с языком lua.
Пытаюсь его освоить путем изменение скриптов moonloader, настроил с горем пополам редактор atom, чтобы выводил подсказки при наборе команды, но как это сделать в notepad++ чтобы подсвечивались новые команды, а только стандартные.


12
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 15, 2017, 12:48:23 pm »
Спасибо большое уважаемый kenking за Ваш точный совет! Теперь флаг миссии работает.
Теперь бьюсь с новой проблемой, уже несколько дней провале миссия зависает или маркеры не удаляются.
Помоги, пожалуйста, прошу.
Код: Javascript
  1. {$CLEO}
  2. const
  3. x = 567.389 // Координаты значка миссии
  4. y = 531.035 // Координаты значка миссии
  5. z = 12.0494 // Координаты значка миссии
  6. a = 598.08 // Координаты пикапа
  7. b = 860.784 // Координаты пикапа
  8. c = 22.029  // Координаты пикапа  
  9. d = 569.892 // Координаты педа
  10. e = 801.703 // Координаты педа
  11. f = 11.6737 // Координаты педа
  12. m = 1000 // Кол-во денег педа  
  13. end
  14. 0000:
  15. :MISSION_1    
  16. while 0256: player $PLAYER_CHAR defined
  17. wait 0            
  18. if            
  19. $ONMISSION == 0  // Друга миcсия не запущена
  20. then
  21. if
  22. 0ADC: test_cheat "BL" // включить миссию  
  23. then                          
  24. gosub @MISSION_START // Старт миссии    
  25. jump @MISSION_1 // Чтобы можно пройти заново
  26. end
  27. end
  28. end  
  29. :MISSION_START // Старт миссии        
  30. gosub @load // Загрузить актера                                  
  31. $ONMISSION = 1 // мисия запущена    
  32. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1
  33. gosub @MISSION_BEGIN // Сама миссия
  34. return                                  
  35. :MISSION_END                                        
  36. $ONMISSION = 0        
  37. gosub @del // Удалить врагов                                
  38. return
  39. :MISSION_BEGIN // Тело миссии  
  40. gosub @foe // Враги
  41. 0055: put_player $player_char at x y z  
  42. 0171: set_player $player_char z_angle_to 89.2093 // Задать угол актеру
  43. fade 1 300 // Убрать затемение экрана
  44. gosub @actor
  45. return        
  46. :actor // Условие выполнение миссии
  47. wait 0
  48. if pickup.Picked_up(1@)
  49. then jump @MISSION_COMPLETED // Миссия выполнена
  50. else jump @player
  51. end
  52. return        
  53. :player // Условие провала миссии
  54. wait 0
  55. if 8256: not player $player_char defined
  56. then jump gosub @MISSION_FAILED // Провал миссии
  57. else jump @actor
  58. end          
  59. :MISSION_COMPLETED // Миссия выполнена
  60. 01E3: show_text_1number_styled GXT 'M_PASS' number 1000 time 5000 style 1
  61. 0394: play_music 1 // мелодия выполнение миссии
  62. Player.Money($PLAYER_CHAR) += 1000              
  63. gosub @MISSION_END                
  64. return        
  65. :MISSION_FAILED // Провал миссии
  66. 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // MISSION FAILED
  67. gosub @MISSION_END
  68. return  
  69. :foe // Создать врагов    
  70. 3@ = actor.Create(4, #HMOCA, d, e, f)      
  71. 01B2: give_actor 3@ weapon 33 ammo 9999    
  72. 02E2: set_actor 3@ weapon_accuracy_to 100 // Установка точности стрельбы для актера      
  73. actor.Angle(3@) = 169.2093 // Задать угол актеру          
  74. 03FE: set actor 3@ money m // Кол-во денег педа  
  75. 01CA: actor 3@ kill_player $player_char // Актер хочет убить игрока    
  76. 4@ = actor.Create(4, #HMOCA, d, e, f)      
  77. 01B2: give_actor 4@ weapon 33 ammo 9999    
  78. 02E2: set_actor 4@ weapon_accuracy_to 100 // Установка точности стрельбы для актера    
  79. actor.Angle(4@) = 169.2093 // Задать угол актеру
  80. 01CA: actor 4@ kill_player $player_char // Актер хочет убить игрока                
  81. 0213: 1@ = create_pickup 335 type 1 at a b c // Создать пикап кейса  
  82. 03DC: 2@ = create_marker_above_pickup 1@ // Создать маркер над пикапом кейса  
  83. return      
  84. :del                                          
  85. 0164: disable_marker 2@  // Удалить маркер
  86. 0215: destroy_pickup 1@ // Удалить пикап кейса          
  87. 0249: release_model 335 // Выгрузить из памяти  
  88. 0249: release_model #MINIGUN // Выгрузить из памяти
  89. 0249: release_model #HMOCA // Выгрузить из памяти                
  90. actor.RemoveReferences(3@) // Удалить врага          
  91. actor.RemoveReferences(4@) // Удалить врага
  92. return      
  93. :load // загрузка моделей для миссии    
  94. fade 0 300 // Затемение экрана      
  95. 0247: request_model #HMOCA  
  96. 0247: request_model #MINIGUN
  97. 038B: load_requested_models
  98. gosub @delay // Задержка      
  99. return  
  100. repeat
  101. wait 0
  102. model.Load(335)
  103. 038B: load_requested_models
  104. gosub @delay
  105. until model.Available(335)
  106. return
  107. :delay
  108. 16@ = 0
  109. repeat
  110. wait 0
  111. until 0029: 16@ >= 1100 // задержка
  112. return
  113.  

Все исправил, все работает как надо, за основу взял найденную cleo миссию для vc.
Вот, что получилось.
Код: Javascript
  1. {$CLEO}
  2. 0000:        
  3. const
  4. x = 567.389 // Координаты значка миссии
  5. y = 531.035 // Координаты значка миссии
  6. z = 12.0494 // Координаты значка миссии
  7. a = 598.08 // Координаты пикапа
  8. b = 860.784 // Координаты пикапа
  9. c = 22.029  // Координаты пикапа  
  10. d = 569.892 // Координаты педа
  11. e = 801.703 // Координаты педа
  12. f = 11.6737 // Координаты педа
  13. m = 1000 // Кол-во денег педа  
  14. end
  15. :MISSION_1    
  16. wait 0                                    
  17. if
  18. 0256: player $player_char defined
  19. jf @MISSION_1        
  20. if
  21. 0038: $onmission == 0 // integer values
  22. jf @MISSION_1  
  23. if 0ADC: test_cheat "BL" // включить миссию  
  24. jf @MISSION_1  
  25. jump @MISSION_START // Старт миссии    
  26. jump @MISSION_1  // Чтобы можно пройти заново    
  27. return
  28. :MISSION_START // Старт миссии                        
  29. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1  
  30. 03A4: name_thread 'TEST'
  31. 0004: $onmission = 1 // мисия запущена        
  32. wait 0            
  33. 0247: request_model #HMOCA // Запрос модели таксиста  
  34. 038B: load_requested_models        
  35. 011C: actor $player_actor clear_objective
  36. fade 0 1500 ms  
  37. 01BD: $current_time_in_ms = current_time_in_ms
  38. //0055: put_player $player_char at x y z
  39. 1@ = actor.Create(4, #HMOCA, d, e, f)      
  40. 016A: fade 1 1000 ms                    
  41. :player    
  42. wait 0
  43. if 8256: not player $player_char defined
  44. jf @actor
  45. gosub @MISSION_FAILED // Провал миссии    
  46. gosub @MISSION_END // Завершение миссии
  47. jump @MISSION_1  // Чтобы можно пройти заново    
  48. :actor
  49. if 0118: actor 1@ dead
  50. jf @player
  51. gosub @MISSION_COMPLETED // Миссия выполнена
  52. gosub @MISSION_END // Завершение миссии
  53. jump @MISSION_1  // Чтобы можно пройти заново    
  54. :MISSION_COMPLETED // Миссия выполнена
  55. 01E3: text_1number_styled 'M_PASS' number 15000 time 3000 style 1  // ˜© ?po¦?? ?ty m?cc?«! $~1~    
  56. 0394: play_music 1                        
  57. Player.Money($PLAYER_CHAR) += 1500        
  58. 0318: set_latest_mission_passed 'VSHELI'  
  59. return  
  60. :MISSION_FAILED // Провал миссии
  61. 00BA: text_styled 'M_FAIL' 3000 ms 1  // m?cc?¬ ?po˜a?eha!  
  62. return  
  63. :MISSION_END // Завершение миссии      
  64. 0249: release_model #HMOCA
  65. 01C2: remove_references_to_actor 1@
  66. 0004: $onmission = 0 // integer values
  67. 01BD: $current_time_in_ms = current_time_in_ms
  68. 00D8: mission_cleanup
  69. return  
  70.  

13
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 10, 2017, 12:04:49 pm »
Спасибо громадное уважаемый Shagg_E за Ваш подробный ответ, он много меня научил.
Скрипт и поток равнозначны, благодарю за доходчивое объяснение.
Благодаря Вашему умному совету, поступил следующим образом- введен чит код, ставим $ONMISSION == 1,  миссия активировалась- создаем маркер, делаем проверки стоим на маркере, удаляем его и так далее.
Странно флаг  $ONMISSION == 1 в скрипте не отключает возможность прохождения других миссии, хотя по идеи должен.
Уже понять, что писать миссии в cleo очень сложно, движок на это не рассчитан, в sa можно легко через стартер. Даже у меня криворукого получилось с горем пополам))))))))))
Можно ли для создания миссии написать, что вроде dyom под vc?
В main.scm создавать свои миссии не дорос до ее, там работать сложно.
Почему-то константа ch, что является $player_char  не работает.
Спасибо за разъяснение в const номера моделей, затем закомментировать их, чтобы не запутаться.   
 как ch.

Цитировать
MEDICMODEL = #MEDIC
Теперь стало понятно, как можно записывать имя модели.

Благодарю за совет, много говорят, что писать скрипты нужно высокоуровневый кодом, хотя низкоуровневый удобнее, его легче понять.
Буду изучать Ваш уникальный способ написание более внимательный образом.
Что ж буду учится это полезно для мозга, копаться и разбирать с Ваших гениальных примерах.

Спасибо, за разъяснение как модели  request_model или model.Load() идентичны.
 Изменил свою миссию все работает, только при 6 прохождении вылетает.
Код: Javascript
  1. {$CLEO}
  2. const
  3. x = 567.389 // Координаты значка миссии
  4. y = 531.035 // Координаты значка миссии
  5. z = 12.0494 // Координаты значка миссии
  6. a = 598.08 // Координаты пикапа
  7. b = 860.784 // Координаты пикапа
  8. c = 22.029  // Координаты пикапа  
  9. d = 569.892 // Координаты педа
  10. e = 801.703 // Координаты педа
  11. f = 11.6737 // Координаты педа
  12. end
  13. 0000:
  14. :MISSION_1        
  15. wait 0            
  16. if            
  17. $ONMISSION == 0  // Друга миcсия не запущена
  18. jf @MISSION_1  
  19. if
  20. 0ADC: test_cheat "BL" // включить миссию  
  21. jf @MISSION_1    
  22. $ONMISSION == 1 // мисия запущена
  23. 02A7: 0@ = create_icon_marker_and_sphere 35 at x y z
  24. :2        
  25. wait 0  
  26. if or
  27. 8256: not player $player_char defined // Игрок умер
  28. 0ADC: test_cheat "BL" // выключить миссию    
  29. jf @1      
  30. gosub @MISSION_END
  31. jump @MISSION_1 // Чтобы можно пройти заново
  32. :1  
  33. wait 0  
  34. if
  35. 00F8: player $player_char stopped 0 x y z radius 1.0 1.0 1.5
  36. jf @2            
  37. wait 200
  38. gosub @MISSION_START // Старт миссии    
  39. jump @MISSION_1 // Чтобы можно пройти заново  
  40. :MISSION_START // Старт миссии        
  41. gosub @load // Загрузить актера    
  42. 0164: disable_marker 0@ // Удалить маркер      
  43. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1
  44. gosub @MISSION_BEGIN // Сама миссия
  45. return            
  46. :MISSION_END          
  47. $ONMISSION == 0            
  48. gosub @del // Удалить врагов  
  49. return
  50. :MISSION_BEGIN // Тело миссии
  51. gosub @foe // Враги
  52. 03DC: 2@ = create_marker_above_pickup 1@ // Создать маркер над кейсом
  53. gosub @actor
  54. return        
  55. :actor // Условие выполнение миссии
  56. wait 0
  57. if pickup.Picked_up(1@)
  58. then jump @MISSION_COMPLETED // Миссия выполнена
  59. else jump @player
  60. end
  61. return        
  62. :player // Условие провала миссии
  63. wait 0
  64. if 8256: not player $player_char defined
  65. then jump @MISSION_FAILED // Провал миссии
  66. else jump @actor
  67. end          
  68. :MISSION_COMPLETED // Миссия выполнена
  69. 01E3: show_text_1number_styled GXT 'M_PASS' number 1000 time 5000 style 1
  70. 0394: play_music 1 // мелодия выполнение миссии
  71. Player.Money($PLAYER_CHAR) += 1000              
  72. gosub @MISSION_END      
  73. gosub @reb // Перезагрузка скрипта                    
  74. return        
  75. :MISSION_FAILED // Провал миссии
  76. 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // MISSION FAILED
  77. gosub @MISSION_END  
  78. gosub @reb // Перезагрузка скрипта  
  79. :foe // Создать врагов    
  80. 3@ = actor.Create(4, #HMOCA, d, e, f)      
  81. 01B2: give_actor 3@ weapon 33 ammo 9999    
  82. 02E2: set_actor 3@ weapon_accuracy_to 100 // Установка точности стрельбы для актера      
  83. actor.Angle(3@) = 169.2093 // Задать угол актеру
  84. 01CA: actor 3@ kill_player $player_char // Актер хочет убить игрока    
  85. 4@ = actor.Create(4, #HMOCA, d, e, f)      
  86. 01B2: give_actor 4@ weapon 33 ammo 9999    
  87. 02E2: set_actor 4@ weapon_accuracy_to 100 // Установка точности стрельбы для актера    
  88. actor.Angle(4@) = 169.2093 // Задать угол актеру
  89. 01CA: actor 4@ kill_player $player_char // Актер хочет убить игрока                
  90. 0213: 1@ = create_pickup 335 type 1 at a b c // Создать пикап кейса  
  91. 03DC: 2@ = create_marker_above_pickup 1@ // Создать маркер над пикапом кейса  
  92. return      
  93. :del                                          
  94. 0164: disable_marker 2@  // Удалить маркер
  95. 0215: destroy_pickup 1@ // Удалить пикап кейса          
  96. 0249: release_model 335 // Выгрузить из памяти  
  97. 0249: release_model #MINIGUN // Выгрузить из памяти
  98. 0249: release_model #HMOCA // Выгрузить из памяти                
  99. actor.RemoveReferences(3@) // Удалить врага          
  100. actor.RemoveReferences(4@) // Удалить врага
  101. return      
  102. :load // загрузка моделей для миссии    
  103. fade 0 300 // Затемение экрана      
  104. 0247: request_model #HMOCA  
  105. 0247: request_model #MINIGUN
  106. 038B: load_requested_models
  107. gosub @delay // Задержка      
  108. fade 1 300 // Убрать затемение экрана
  109. return  
  110. repeat
  111. wait 0
  112. model.Load(335)
  113. 038B: load_requested_models
  114. gosub @delay
  115. until model.Available(335)
  116. return
  117. :delay
  118. 16@ = 0
  119. repeat
  120. wait 0
  121. until 0029: 16@ >= 1100 // задержка
  122. return
  123. :reb              
  124. wait 50      
  125. 0ABA: end_custom_thread_named 'Test'
  126. wait 1000
  127. 0A92: create_custom_thread "Test.cs"  //название перезагружаемого потока
  128. wait 50    
  129. return
  130.  
Решил при провале и прохождении миссии сделать перегрузку потока скритпа, по моему сделал неправильно, перестала деактивация миссии.
Помоги, пожалуйста, нубу.
Код: Javascript
  1.  
  2. :reb              
  3. wait 50      
  4. 0ABA: end_custom_thread_named 'Test'
  5. wait 1000
  6. 0A92: create_custom_thread "Test.cs"  //название перезагружаемого потока
  7. wait 50    
  8. return
  9.  

14
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 09, 2017, 07:41:15 am »
Здравствуйте, всем.
Написал вторую тестовую миссию, столкнулся с интересными нюансами.
Если создать в качестве медика и дать оружие, он стрелять по нам из него не будет.
Заменил на таксиста.
Циклом for создаем нужно их количество, так как в vc нет массива.
При установки здоровье 150, вылетать
При подъеме денег с убитых врагов идет вылет, что странно.

Как правильно загружать несколько моделей? Через request_model или model.Load()?
Буду благодарен за Ваши ответы.
Код: Javascript
  1. {$CLEO .cs}
  2. const
  3. ONM = $ONMISSION
  4. x = 567.389 // Координаты
  5. y = 531.035 // Координаты
  6. z = 12.0494 // Координаты  
  7. a = 598.08 // Координаты пикапа
  8. b = 860.784 // Координаты пикапа
  9. c = 22.029  // Координаты  пикапа  
  10. d = 569.892 // Координаты педа
  11. e = 801.703 // Координаты педа
  12. f = 11.6737  // Координаты  педа    
  13. end
  14. 0000:
  15. :MISSION_1        
  16. while player.Defined($PLAYER_ACTOR)
  17. wait 0      
  18. gosub @MISSION_END
  19. if ONM == 0
  20. then 02A7: 0@ = create_icon_marker_and_sphere 35 at x y z
  21. if 00F8: player $player_char stopped 0 x y z radius 1.0 1.0 1.5
  22. then                            
  23. gosub @MISSION_START // Старт миссии
  24. jump @MISSION_1 // Чтобы можно пройти заново
  25. end
  26. end
  27. end
  28. :MISSION_BEGIN // Тело миссии
  29. for 4@ = 1 to 5                
  30. 3@ = actor.Create(4, #HMOCA, d, e, f)  
  31. 03FE: set actor 3@ money 1000                      
  32. 01B2: give_actor 3@ weapon 33 ammo 9999    
  33. 02E2: set_actor 3@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  34. 01CA: actor 3@ kill_player $player_char // Актер хочет убить игрока    
  35. end                                    
  36. 0213: 1@ = create_pickup 335 type 1 at a b c  
  37. 0164: disable_marker 0@ // Удалить маркер    
  38. actor.Angle(3@) = 169.2093 // Задать угол актеру
  39. 03DC: 2@ = create_marker_above_pickup 1@ // Создать маркер над актером
  40. gosub @actor
  41. return        
  42. :actor // Условие выполнение миссии
  43. wait 0
  44. if pickup.Picked_up(1@)
  45. then jump @MISSION_COMPLETED // Миссия выполнена
  46. else jump @player
  47. end
  48. return
  49. :MISSION_START // Старт миссии    
  50. gosub @load // Загрузить актера      
  51. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1
  52. ONM == 1 // мисия запущена
  53. gosub @MISSION_BEGIN // Сама миссия
  54. return
  55. :MISSION_COMPLETED // Миссия выполнена
  56. 01E3: show_text_1number_styled GXT 'M_PASS' number 1000 time 5000 style 1
  57. 0394: play_music 1 // мелодия выполнение миссии
  58. Player.Money($PLAYER_CHAR) += 1000              
  59. gosub @MISSION_END                          
  60. return        
  61. :MISSION_FAILED // Провал миссии
  62. 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // MISSION FAILED
  63. gosub @MISSION_END
  64. :MISSION_END          
  65. ONM == 0                                
  66. actor.RemoveReferences(3@)
  67. 0AC9: free_allocated_memory 3@  
  68. 0249: release_model 335 // Выгрузить из памяти  
  69. 0249: release_model #HMOCA // Выгрузить из памяти  
  70. 0249: release_model #MINIGUN // Выгрузить из памяти
  71. 0164: disable_marker 0@ // Удалить маркер
  72. 0164: disable_marker 2@                  
  73. mission_cleanup // Очистка после миссии
  74. return
  75. :load    
  76. fade 0 300 // Затемение экрана      
  77. 0247: request_model #HMOCA  
  78. 0247: request_model #MINIGUN
  79. 038B: load_requested_models
  80. 0AC8: 3@ = allocate_memory_size 128
  81. gosub @delay // Задержка      
  82. fade 1 300 // Убрать затемение экрана
  83. return  
  84. repeat
  85. wait 0
  86. model.Load(335)
  87. 038B: load_requested_models
  88. gosub @delay
  89. until model.Available(335)
  90. return
  91. :delay
  92. 16@ = 0
  93. repeat
  94. wait 0
  95. until 0029: 16@ >= 1100 // задержка
  96. return
  97. :player // Условие провала миссии
  98. wait 0
  99. if 8256: not player $player_char defined
  100. then jump @MISSION_FAILED // Провал миссии
  101. else jump @actor
  102. end
  103.  
Написал так, только при провале актеры не удаляются, при взятие денег и повторном прохождении зависание. Не знаю, что делать?
Код: Javascript
  1. {$CLEO .cs}
  2. const
  3. ONM = $ONMISSION
  4. x = 567.389 // Координаты значка миссии
  5. y = 531.035 // Координаты значка миссии
  6. z = 12.0494 // Координаты значка миссии
  7. a = 598.08 // Координаты пикапа
  8. b = 860.784 // Координаты пикапа
  9. c = 22.029  // Координаты пикапа  
  10. d = 569.892 // Координаты педа
  11. e = 801.703 // Координаты педа
  12. f = 11.6737 // Координаты педа
  13. end
  14. 0000:
  15. :MISSION_1        
  16. while player.Defined($PLAYER_ACTOR)
  17. wait 0      
  18. gosub @MISSION_END
  19. if ONM == 0
  20. then 02A7: 0@ = create_icon_marker_and_sphere 35 at x y z
  21. if 00F8: player $player_char stopped 0 x y z radius 1.0 1.0 1.5
  22. then                            
  23. gosub @MISSION_START // Старт миссии
  24. jump @MISSION_1 // Чтобы можно пройти заново
  25. end
  26. end
  27. end
  28. :MISSION_BEGIN // Тело миссии
  29. gosub @foe1 // Враги
  30. 0164: disable_marker 0@ // Удалить маркер    
  31. 03DC: 2@ = create_marker_above_pickup 1@ // Создать маркер над актером
  32. gosub @actor
  33. return        
  34. :actor // Условие выполнение миссии
  35. wait 0
  36. if pickup.Picked_up(1@)
  37. then jump @MISSION_COMPLETED // Миссия выполнена
  38. else jump @player
  39. end
  40. return
  41. :MISSION_START // Старт миссии
  42. 0AC8: 3@ = allocate_memory_size 8000    
  43. gosub @load // Загрузить актера      
  44. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1
  45. ONM == 1 // мисия запущена
  46. gosub @MISSION_BEGIN // Сама миссия
  47. return
  48. :MISSION_COMPLETED // Миссия выполнена
  49. 01E3: show_text_1number_styled GXT 'M_PASS' number 1000 time 5000 style 1
  50. 0394: play_music 1 // мелодия выполнение миссии
  51. Player.Money($PLAYER_CHAR) += 1000              
  52. gosub @MISSION_END                          
  53. return        
  54. :MISSION_FAILED // Провал миссии
  55. 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // MISSION FAILED
  56. gosub @MISSION_END
  57. :MISSION_END          
  58. ONM == 0
  59. gosub @del1 // Удалить врагов
  60. 0249: release_model 335 // Выгрузить из памяти  
  61. 0249: release_model #HMOCA // Выгрузить из памяти  
  62. 0249: release_model #MINIGUN // Выгрузить из памяти
  63. 0164: disable_marker 0@ // Удалить маркер
  64. 0164: disable_marker 2@
  65. 0AC9: free_allocated_memory 3@                
  66. return
  67. :foe    
  68. 3@ = actor.Create(4, #HMOCA, d, e, f)      
  69. 01B2: give_actor 3@ weapon 33 ammo 9999    
  70. 02E2: set_actor 3@ weapon_accuracy_to 100 // Установка точности стрельбы для актера      
  71. //03FE: set actor 3@ money 1000 // Кол-во денег педа  
  72. actor.Health(3@) = 200            
  73. actor.Angle(3@) = 169.2093 // Задать угол актеру
  74. 01CA: actor 3@ kill_player $player_char // Актер хочет убить игрока                
  75. 0213: 1@ = create_pickup 335 type 1 at a b c  
  76. return
  77. :load    
  78. fade 0 300 // Затемение экрана      
  79. 0247: request_model #HMOCA  
  80. 0247: request_model #MINIGUN
  81. 038B: load_requested_models
  82. gosub @delay // Задержка      
  83. fade 1 300 // Убрать затемение экрана
  84. return  
  85. repeat
  86. wait 0
  87. model.Load(335)
  88. 038B: load_requested_models
  89. gosub @delay
  90. until model.Available(335)
  91. return
  92. :delay
  93. 16@ = 0
  94. repeat
  95. wait 0
  96. until 0029: 16@ >= 1100 // задержка
  97. return
  98. :player // Условие провала миссии
  99. wait 0
  100. if 8256: not player $player_char defined
  101. then jump @MISSION_FAILED // Провал миссии
  102. else jump @actor
  103. end          
  104. :del                                                
  105. actor.DestroyInstantly(3@)    
  106. actor.RemoveReferences(3@)
  107. return        
  108. :foe1
  109. gosub @foe // 1 враг
  110. gosub @foe // 2 враг
  111. gosub @foe // 3 враг
  112. gosub @foe // 4 враг
  113. gosub @foe // 5 враг
  114. gosub @foe // 6 враг
  115. return      
  116. :del1    
  117. gosub @del // удалить враг 1      
  118. gosub @del // удалить враг 2      
  119. gosub @del // удалить враг 3      
  120. gosub @del // удалить враг 4      
  121. gosub @del // удалить враг 5      
  122. gosub @del // удалить враг 6    
  123. return      
  124.  


15
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 07, 2017, 08:27:46 am »
Здравствуйте, всем.
Вот написал шаблонную миссию, работает стабильно.   
Создавал маркер перед потоком, чтобы избежать вреда сохранениям.
Старался привести код в удобный, читаемым вид.
Возникли вопросы.
При провале, миссия не запускается вновь.
Скажите, пожалуйста, как записать в константы имя модели- медик или $player_char как ch.
У меня не выходит, это нужно для краткости.
Если 1@ = actor.Create(16, #MEDIC, 77.3075, -879.1083, 10.4481) поместить в цикле for, допустим 3, тогда создается 3 актер,
Как цикл For использовать в качестве условие, что актер 1@ убить 3 раза?
Надеюсь, на Ваши мудрые советы.
 
Код: Javascript
  1. {$CLEO .cs}                                      
  2. const
  3. ONM = $ONMISSION
  4. x =  79.8094 // Координаты
  5. y = -880.79  // Координаты
  6. z =  10.445  // Координаты
  7. end          
  8. 0000:
  9. :MISSION_1
  10. while true        
  11. wait 0
  12. if 0256: player $player_char defined
  13. then gosub @MISSION_END      
  14. if ONM == 0
  15. then 02A7: 0@ = create_icon_marker_and_sphere 34 at x y z
  16. if 00F8: player $player_char stopped 0 x y z radius 1.0 1.0 1.5
  17. then      
  18. gosub @MISSION_START // Старт миссии
  19. jump @MISSION_1 // Чтобы можно пройти заново      
  20. end
  21. end
  22. end
  23. end
  24. :MISSION_BEGIN // Тело миссии                    
  25. fade 0 300 // Затемение экрана
  26. gosub @load // Загрузить актера
  27. 1@ = actor.Create(16, #MEDIC, 77.3075, -879.1083, 10.4481)
  28. actor.Angle(1@) = 199.2093 // Задать угол актеру    
  29. gosub @delay // Задержка                                                
  30. 2@ = marker.CreateAboveActor(1@) // Создать маркер над актером  
  31. fade 1 300 // Убрать затемение экрана      
  32. 01CA: actor 1@ kill_player $player_char // Актер хочет убить игрока
  33. gosub @actor
  34. return
  35. :MISSION_START // Старт миссии
  36. gosub @MISSION_END // Завершение миссии
  37. 03A4: name_thread 'MISS'      
  38. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1
  39. ONM == 1 // миссия запущена  
  40. gosub @MISSION_BEGIN // Сама миссия                    
  41. :MISSION_COMPLETED // Миссия выполнена
  42. 01E3: show_text_1number_styled GXT 'M_PASS' number 1000 time 5000 style 1    
  43. 0394: play_music 1 // мелодия выполнение миссии
  44. Player.Money($PLAYER_CHAR) += 1000  
  45. gosub @MISSION_END
  46. :MISSION_FAILED // Провал миссии              
  47. 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // MISSION FAILED
  48. gosub @MISSION_END          
  49. :MISSION_END          
  50. ONM == 0      
  51. 0249: release_model #MEDIC // Выгрузить из памяти    
  52. actor.RemoveReferences(1@)  
  53. 0164: disable_marker 0@  // Удалить маркер    
  54. 0164: disable_marker 2@                
  55. 0ABA: end_custom_thread_named 'MISS'  
  56. return                                    
  57. :load
  58. repeat
  59. wait 0
  60. model.Load(#MEDIC)
  61. 038B: load_requested_models
  62. gosub @delay
  63. until model.Available(#MEDIC)
  64. return
  65. :delay
  66. 16@ = 0
  67. repeat
  68. wait 0                
  69. until 0029: 16@ >= 1100 // задержка
  70. return    
  71. :actor // Условие выполнение миссии    
  72. wait 0
  73. if actor.Dead(1@)
  74. then jump @MISSION_COMPLETED // Миссия выполнена
  75. else jump @player
  76. end
  77. return                  
  78. :player // Условие провала миссии
  79. wait 0
  80. if 8256: not player $player_char defined
  81. then jump @MISSION_FAILED // Провал миссии    
  82. else jump @actor
  83. end                    
  84.  
Все сделал, работает как надо, почти весь день потратил.
Ее можно использовать как шаблон для создания миссии.

Код: Javascript
  1. {$CLEO}
  2. const
  3. ONM = $ONMISSION
  4. x = 79.8094 // Координаты
  5. y = -880.79 // Координаты
  6. z = 10.445 // Координаты
  7. end
  8. 0000:
  9. :MISSION_1
  10. while true
  11. wait 0
  12. if 0256: player $player_char defined
  13. then gosub @MISSION_END
  14. if ONM == 0
  15. then 02A7: 0@ = create_icon_marker_and_sphere 34 at x y z
  16. if 00F8: player $player_char stopped 0 x y z radius 1.0 1.0 1.5
  17. then
  18. gosub @MISSION_START // Старт миссии
  19. jump @MISSION_1 // Чтобы можно пройти заново
  20. end
  21. end
  22. end
  23. end
  24. :MISSION_BEGIN // Тело миссии
  25. fade 0 300 // Затемнение экрана    
  26. gosub @load // Загрузить актера                    
  27. 1@ = actor.Create(16, #MEDIC, 77.3075, -879.1083, 10.4481)    
  28. 0164: disable_marker 0@ // Удалить маркер    
  29. actor.Angle(1@) = 199.2093 // Задать угол актеру
  30. gosub @delay // Задержка
  31. 2@ = marker.CreateAboveActor(1@) // Создать маркер над актером
  32. fade 1 300 // Убрать затемнение экрана
  33. 01CA: actor 1@ kill_player $player_char // Актер хочет убить игрока
  34. gosub @actor
  35. return    
  36. :actor // Условие выполнение миссии
  37. wait 0
  38. if actor.Dead(1@)
  39. then jump @MISSION_COMPLETED // Миссия выполнена
  40. else jump @player
  41. end
  42. return
  43. :MISSION_START // Старт миссии          
  44. 0317: increment_mission_attempts // команда, для того чтобы в статистике к попытке миссий прибавилось 1
  45. ONM == 1 // миссия запущена
  46. gosub @MISSION_BEGIN // Сама миссия
  47. return
  48. :MISSION_COMPLETED // Миссия выполнена
  49. 01E3: show_text_1number_styled GXT 'M_PASS' number 1000 time 5000 style 1
  50. 0394: play_music 1 // мелодия выполнение миссии
  51. Player.Money($PLAYER_CHAR) += 1000                          
  52. mission_cleanup // Очистка после миссии
  53. gosub @MISSION_END                          
  54. return        
  55. :MISSION_FAILED // Провал миссии
  56. 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // MISSION FAILED
  57. gosub @MISSION_END
  58. :MISSION_END          
  59. ONM == 0
  60. 0249: release_model #MEDIC // Выгрузить из памяти
  61. actor.RemoveReferences(1@)
  62. 0164: disable_marker 0@ // Удалить маркер
  63. 0164: disable_marker 2@
  64. return
  65. :load
  66. repeat
  67. wait 0
  68. model.Load(#MEDIC)
  69. 038B: load_requested_models
  70. gosub @delay
  71. until model.Available(#MEDIC)
  72. return
  73. :delay
  74. 16@ = 0
  75. repeat
  76. wait 0
  77. until 0029: 16@ >= 1100 // задержка
  78. return
  79. :player // Условие провала миссии
  80. wait 0
  81. if 8256: not player $player_char defined
  82. then jump @MISSION_FAILED // Провал миссии
  83. else jump @actor
  84. end
  85.  

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