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

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #120 : Май 13, 2018, 01:57:40 pm »
Третий вариант неправильный, кстати. Там некорректное использование глобальной переменной.
А первые два - вроде норм

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #121 : Май 15, 2018, 12:48:17 pm »
Здравствуйте уважаемый Shagg_E.  Мне помог вариант номер 2.  Переделал, конечно его. Чтобы бы русские названия миссии.
Сейчас бьюсь над решением следующей проблемы вывод звуков через функцию.
Например.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:                          
  3. :1
  4. wait 0
  5. if 0AB0: key_pressed 0x46 // f
  6. jf @1                        
  7. 03CF: load_wav 'FIN_1a' as 1
  8. wait 0
  9. if 03D0:  wav 1 loaded
  10. then 03D1: play_wav 1
  11. if 03D2:  wav 1 ended
  12. then 040D: unload_wav 1        
  13. end
  14. end                
  15. jump @1                
  16.  


 Так вроде всё работает, но я хочу просто название звука передать в функцию. Мне всегда нравилась краткость.
Так вы же красивее и понятнее.

Код: Javascript
  1. {$CLEO .cs}
  2. 0000:                          
  3. :1
  4. wait 0
  5. if 0AB0: key_pressed 0x46 // f
  6. jf @1                                  
  7. 0AB1: call_scm_func @fun 1 "FIN_1a"
  8. jump @1          
  9. :fun
  10. 0AC8: 0@ = allocate_memory_size 64
  11. 0AD3: 0@ = format 0@      
  12. 0AD4: 0@ = scan_string 0@ format "%S"
  13. 03CF: load_wav 0@ as 1
  14. wait 0
  15. if 03D0:  wav 1 loaded
  16. then 03D1: play_wav 1
  17. if 03D2:  wav 1 ended
  18. then 040D: unload_wav 1        
  19. end
  20. end                                    
  21. 0AC9: free_allocated_memory 0@
  22. 0AB2: ret 0      
  23.  

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #122 : Май 15, 2018, 11:44:14 pm »
В опкод 03CF нельзя передать указатель на строку.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #123 : Май 17, 2018, 03:30:14 pm »
Спасибо вам большое уважаемый DK за ваш ответ.  Как жаль, что нельзя этого сделать. Скажите пожалуйста, вот  адрес памяти, который отвечает за газ на машине, 0x1F0.  Когда машина стоит Значение 0, когда машина едет значение следующее 1065353216.
 При попытке  установить это значение  для машины, она не едет вперед, а игра вылетает.  Подскажите мне пожалуйста.

Код: Javascript
  1.  
  2. {$CLEO .cs}
  3. 0000:  
  4. :1
  5. wait 0      
  6. 80E0:  player $player_char driving // не в атво
  7. jf @1
  8. if 0AB0: key_pressed 0x46 // f
  9. jf @1      
  10. 0054: store_player $player_char position_to 0@ 1@ 2@
  11. :2
  12. 05F0: 3@ = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 0 pass_wrecked 0 //IF and SET
  13. jf @1  
  14. 0186: 4@ = create_marker_above_car 3@
  15. :3
  16. wait 0    
  17. if 0AB0: key_pressed 0x4a // j
  18. jf @3
  19. 05E7: 0@ = car 3@ struct //получаем структуру этой машины
  20. 0@ += 0x1F0  //прибавляем смещение
  21. 05E0: 1@ = read_memory 0@ size 4 virtual_protect 0 //считыванием состоянием
  22. 0ACF: show_formatted_styled_text "%d" time 1000  style 3 1@      
  23. :4
  24. wait 0
  25. 05DF: write_memory 1@ size 4 value 1065353216 virtual_protect 0
  26. jump @1    
  27.  

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #124 : Май 18, 2018, 09:44:25 am »
Смещение 0x1F0 - это m_fGasPedal значение float https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_vc/game_vc/CVehicle.h
показывает нажата ли педаль газа на транспорте. Перезаписью этого значения не заставишь двигаться транспорт.

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #125 : Май 18, 2018, 03:44:50 pm »
Спасибо большое уважаемый kenking за ваш ответ. Теперь стало понятно почему вылетает. Буду продолжать искать адрес  памяти, который отвечает  за движения вперед. Жаль, нету видео как писать  плагины  для  GTA vice city.

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #126 : Май 21, 2018, 12:31:16 am »
Вылет - из-за того, что ты попутал переменные 0@ и 1@.
И значение там float, а не int (форматировать как %f, и вместо 1065353216 - 1.0).
В общем, написание скриптов, особенно в SB, где у переменных нету названий - это то ещё мучение.
« Последнее редактирование: Май 21, 2018, 12:33:56 am от DK »
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #127 : Май 30, 2018, 06:06:48 am »
Спасибо большое за ваш ответ Уважаемый DK. Но к большому сожалению, что только не делал происходит вылет.  Написание скриптов на sb,  немного отличается от других языков программирования. А подскажите, пожалуйста, как заставить актера стрелять в определенную точку?
« Последнее редактирование: Май 30, 2018, 06:58:49 am от egor230 »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #128 : Июнь 02, 2018, 10:49:11 pm »
к большому сожалению, что только не делал происходит вылет.

Я уже приводил пример работы с выводом переменных на экран. Для float вроде нужно писать %.1f
как заставить актера стрелять в определенную точку?

Хз, пока сам не разобрался... Думаю, где-то в исходниках VCMP лежит ответ...

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #129 : Июнь 02, 2018, 10:57:59 pm »
Спасибо большое за ваш ответ уважаемый Shagg_E.  очень  его   ждал.
Просто у меня появилась идея, чтобы  актер в режиме турели  стрелял  в определенные координаты.
 Вот небольшая  заготовка.
 
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:
  3. :1
  4. wait 0
  5. 80E0: player $player_char driving // не в авто
  6. jf @1
  7. 0ADC: test_cheat "xc"
  8. jf @1
  9. 04C4: create_coordinate 0@ 1@ 2@ from_actor $PLAYER_ACTOR offset 0.0 6.2 0.0
  10. 05F5: call_scm_func @fun params_count 3 0@ 1@ 2@ 3@ 4@
  11. :2
  12. wait 0
  13. if 0AB0: key_pressed 0x46 // f
  14. jf @2
  15. 0407: create_coordinate 0@ 1@ 2@ from_car 3@ offset 0.0 20.0 1.50 // коор цели
  16. опкод чтоб стрелял в координаты
  17.  
  18. 0acd: show_text_high_priority "time" time 1000
  19. jump @1
  20. :fun
  21. repeat
  22. wait 0
  23. 0247: request_model #SENTXS
  24. 0247: request_model #WMOST
  25. 0247: request_model #ROCKETLA
  26. 038B: load_requested_models
  27. gosub @delay
  28. until gosub @available
  29. 00A5: 3@ = create_car #SENTXS at 0@ 1@ 2@
  30. 000B: 2@ += 4.0 // floating-point values
  31. 009A: 4@ = create_actor_pedtype 4 model #WMOST at 0@ 1@ 2@
  32. 01B2: give_actor 4@ weapon 30 ammo 9999 // Load the weapon model before using this
  33. 0464: put_actor 4@ into_turret_on_car 3@ at_car_offset 0.4242 -0.0679 1.1322 position 0 angle 360.0 with_weapon 30
  34. 0249: release_model #SENTXS
  35. 0249: release_model #WMOST
  36. 0249: release_model #ROCKETLA
  37. 0AB2: ret 2 3@ 4@
  38. :delay
  39. 16@ = 0
  40. repeat
  41. wait 0
  42. until 0029: 16@ >= 3 // задержка
  43. return
  44. :available
  45. wait 0
  46. if and
  47. 0248: model #SENTXS available
  48. 0248: model #WMOST available
  49. 0248: model #ROCKETLA available
  50. jf @available
  51. return
  52.  

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #130 : Июнь 02, 2018, 11:45:22 pm »
Я планировал сделать свой режим стрельбы(в т.ч. - с выбором 3d точки цели для актера), но это будет еще очень не скоро... Пока же ничем с этим помочь не могу  :(

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #131 : Июнь 03, 2018, 01:25:03 am »
Здравствуйте, уважаемый Shagg_E.  Вы меня направили на верный путь.
 Всё-таки  добился,  чтобы  актер стрелял из машины.  Конечно я тебя только прототип скрипта.
 вот   смотрите https://www.youtube.com/watch?v=Riejcb3uVo0&feature=youtu.be
Только почему он стреляет одиночными выстрелами, а ни очередью? Погулять любовь подсказке.
Код: Javascript
  1. {$CLEO .cs}
  2. 0000:  
  3. :1
  4. wait 0      
  5. 80E0:  player $player_char driving // не в авто
  6. jf @1
  7. 0ADC: test_cheat "xc"
  8. jf @1      
  9. 04C4: create_coordinate 0@ 1@ 2@ from_actor $PLAYER_ACTOR offset 0.0 6.2 0.0
  10. 05F5: call_scm_func @fun params_count 3 0@ 1@ 2@ 3@ 4@        
  11. 0407: create_coordinate 0@ 1@ 2@ from_car 3@ offset 0.0 20.0 1.50 // коор цели
  12. 0107: 5@ = create_object 350 at 0@ 1@ 2@            
  13. 02E2: set_actor 4@ weapon_accuracy_to 10
  14. :2
  15. wait 0
  16. if 8AB0: not key_pressed 0x46 // f
  17. jf @1                                    
  18. 01D8: unknown_actor 4@ unknown_fire_at_target 5@
  19. jump @2                                      
  20. :fun
  21. repeat                        
  22. wait 0
  23. 0247: request_model #SENTXS  
  24. 0247: request_model #WMOST  
  25. 0247: request_model #m4    
  26. 0247: request_model 350                                      
  27. 038B: load_requested_models            
  28. gosub @delay
  29. until gosub @available
  30. 00A5: 3@ = create_car #SENTXS at 0@ 1@ 2@    
  31. 000B: 2@ += 4.0  // floating-point values
  32. 009A: 4@ = create_actor_pedtype 4 model #WMOST at 0@ 1@ 2@        
  33. 01B2: give_actor 4@ weapon 26 ammo 9999 // Load the weapon model before using this    
  34. 0464: put_actor 4@ into_turret_on_car 3@ at_car_offset 0.4242 -0.0679 1.1322 position 0 angle 360.0 with_weapon 26  
  35. 0249: release_model #SENTXS
  36. 0249: release_model #WMOST
  37. 0249: release_model #m4
  38. 0AB2: ret 2 3@ 4@
  39. :delay
  40. 16@ = 0
  41. repeat
  42. wait 0                
  43. until 0029: 16@ >= 3 // задержка
  44. return    
  45. :available
  46. wait 0                
  47. if and
  48. 0248: model #SENTXS available
  49. 0248: model #WMOST available
  50. 0248: model #m4 available    
  51. 0248: model 350 available
  52. jf @available
  53. return                  
  54.  

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #132 : Июнь 03, 2018, 02:10:03 am »
Попробуй при создании актера заменить 4 pedtype на другой(от полицейского или члена банды). Либо сделать "цель" не объектом, а актером.
Если второе сработает - сделай актера-цель невидимым, затем помести этого невидимого актера в невидимый(модель #NULL) или маленький(модель кастета) объект и отключи у этого объекта коллизию, чтобы этот летающий невидимый актер никому не мешал.

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #133 : Октябрь 30, 2018, 07:58:21 am »
Спасибо за ваш ответ. Стрельбу  так и не получилось   реализовать, там много было багов. Потом писал lua скрипты для GTA San Andreas. Там достаточно удобно писать миссии. Например, сделал  функцию, которая проверяет ли запущена, далее  игрок находится в машине, тогда создается маркер,  если нет маркер удаляется, если игрок встал на маркер, его  перемещают  из машины, запускают проверку  в отдельном потоке, который постоянно проверяется жив и игрок или нет? Если игрок умер, запускается функция провала  и выхода из миссии.  Функция возвращает правду.  Конечно на словах всё выглядит запутанно. Всего около 40 строчек кода против около 100 на cleo. Что гораздо удобнее. Сейчас меня очень заинтересовали c++. Он не такой сложный, как я думал, это  не ассемблер))))
 Ещё раз Большое спасибо, чтобы вы мне очень помогли с cleo, сейчас мои вопросы кажутся такими глупыми, краснею когда читаю сообщения годовой давности)))))

https://libertycity.ru/files/gta-san-andreas/119508-prostaja-missija.html

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #134 : Октябрь 30, 2018, 07:12:25 pm »
egor230> Так оно всегда и бывает. Меня тоже частенько смущает то, что писал раньше)) Успехов в моддинге! И не бойся задавать вопросы, даже если кто-то на это будет возмущаться.