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

Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #15 : Июль 17, 2017, 06:59:31 am »
Вопрос чем разница между ими?.
0214: pickup 3@ picked_up
И
pickup.Picked_up
В санни билдере есть такие полезные штуки как кейворды и классы. Они дают возможность не запоминать номера опкодов, а использовать ключевые слова. Например, вместо 0001: wait 0 ms можно написать wait 0, pickup.Picked_up вместо 0214: pickup 3@ picked_up. Классы содержат кейворды объединенные одним объектом (Actor, Car, Object, Model, Camera, Pickup).     

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #16 : Июль 17, 2017, 08:43:02 am »
Сразу читай справку SannyBuilder, раздел Кодинг.
Особенно статьи Условия и Циклы.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #17 : Июль 20, 2017, 03:30:13 pm »
также думаю, может быть этот опкод на коробку передач.
0428: set_car $4226 avoid_level_transitions 1
Нет, этот опкод запрещает тачке кататься по всей карте, заставляя её колесить по одному району(не точно, но как-то так)

Написал скрипт добавление новой недвижимости  со сохранением. Конечно, много ошибок.
Опять создание пикапа без проверок нахождения игрока в определенном радиусе. Этот пикап сохранится в файле сохранения и его потом оттуда не выковыришь.

Далее есть проверка
Код: Text
  1. Model.Available(1277)
Но опять нет jump_if_false на случай, если модель не доступна. Тем более - выше не написано
Код: Text
  1. 038B: load_requested_models
, чтобы загрузить модели(читай мой предыдущий пост с примерами и комментами к опкодам).


В остальном согласен с GeniusZ и DK

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #18 : Июль 20, 2017, 05:24:26 pm »
Спасибо всем за Ваши ответы, очень приятно.
Прошу прощение, что не сразу Вам ответил, дела- работа, кредиты, семья.
GeniusZ, кейворды очень удобная и полезная вещь при написания скрипта.
DK, читаю, изучаю. Так интересно, жаль всегда есть свободного время. Более широкие возможности дает работа с памятью.
Shagg_E спасибо за Ваш ответ, к сожалению не все опкоды имеют понятно описания.
Прошу прощения за мою оплошность, его создал до прочтения Вашего мудрого совет.
Скажите, пожалуйста, как создать пикап, только на один раз? Взял и больше не появляется.
Сегодня написал скрипт блокировка дверей авто. Если зайти двери блокируются, выйдешь они разблокируется сами,
в машине также это можно сделать нажатием клавишей F. Конечно, есть ошибки. Вам виднее сделать его лучше.
Код: Javascript
  1. {$CLEO .cs}
  2. //-------------MAIN---------------
  3. 0000: NOP
  4. :BLOCK_1                          
  5. 0001: wait 0 ms
  6. 00D6: if
  7. 0256: player $PLAYER_CHAR defined
  8. 004D: jump_if_false @BLOCK_1
  9. 00D6: if
  10. 00E0: player $PLAYER_CHAR driving
  11. 004D: jump_if_false @BLOCK_1
  12. :1
  13. 03C1: 10@ = player $PLAYER_CHAR car
  14. 020A: set_car 10@ door_status_to 2
  15. :3
  16. wait 1
  17. 00D6: if  
  18. 05EE: key_pressed 66 //VK_...
  19. 004D: jump_if_false @2
  20. :4
  21. wait 1
  22. 00D6: if  
  23. 85EE: not key_pressed 66 //VK_...
  24. 004D: jump_if_false @3
  25. :5
  26. 020A: set_car 10@ door_status_to 1
  27. 01E5: text_1number_highpriority 'NUMBER' 1 flag 1000 time 1  // ~1~
  28. wait 500
  29. 00BE: text_clear_all
  30. :6
  31. wait 1
  32. 00D6: if  
  33. 05EE: key_pressed 66 //VK_...
  34. 004D: jump_if_false @6
  35. :7
  36. wait 1
  37. 00D6: if  
  38. 85EE: not key_pressed 66 //VK_...
  39. 004D: jump_if_false @6
  40. :8
  41. 020A: set_car 10@ door_status_to 2
  42. 01E5: text_1number_highpriority 'NUMBER' 2 flag 1000 time 1  // ~1~
  43. wait 500
  44. 00BE: text_clear_all
  45. :2
  46. 00D6: if
  47. 8443: NOT player $PLAYER_CHAR in_a_car
  48. 004D: jump_if_false @BLOCK_1
  49. 020A: set_car 10@ door_status_to 1
  50. 01E5: text_1number_highpriority 'NUMBER' 1 flag 1000 time 1  // ~1~
  51. jump @BLOCK_1
  52.  
« Последнее редактирование: Декабрь 08, 2017, 01:56:55 pm от egor230 »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #19 : Июль 20, 2017, 07:40:22 pm »
Скажите, пожалуйста, как создать пикап, только на один раз? Взял и больше не появляется.

Абсолютно точно также, как в примере из этого поста, только заменить
Код: Text
  1. jump @PICKU01_03
на
Код: Text
  1. 0215: destroy_pickup 0@
  2. 0A93: end_custom_thread

Т.е. финальный вариант будет выглядеть так:
Код: Text
  1. {$CLEO}
  2. 0000:
  3. thread 'PICKU01'
  4.  
  5. :PICKU01_01
  6. wait 0
  7. if
  8. 00F5:   player $player_char in_sphere 0 near_point 109.39 -808.28 10.46 radius 30.0 30.0 30.0   // проверяется нахождение игрока в радиусе 30 метров
  9. jf @PICKU01_01
  10. model.Load(337) // ставим в очередь на загрузку модель денег под номером 337(см. в Vice City\data\maps\generic.ide)
  11. 038B: load_requested_models // принудительная загрузка всех моделей, стоящих в очереди на загрузку
  12.  
  13. :PICKU01_02
  14. wait 0
  15. if
  16. Model.Available(337) // на всякий пожарный проверяем, загрузилась ли модель
  17. jf @PICKU01_02
  18. 0@ = Pickup.Create(337,8,109.39, -808.28, 10.46) // создаем пикап денег, автоматически исчезающий через 30 секунд
  19. 0249: release_model 337 // обязательно выгружаем модель из памяти игры, ведь пикап мы уже создали, и модель нам не нужна
  20.  
  21. :PICKU01_03
  22. wait 0
  23. if
  24. 00F5:   player $player_char in_sphere 0 near_point 109.39 -808.28 10.46 radius 30.0 30.0 30.0   // проверяется нахождение игрока в радиусе 30 метров
  25. jf @PICKU01_04 // если игрок покинул этот радиус - переход на метку "3", где удаляется пикап
  26. if
  27. pickup.Picked_up(0@) // если пикап был подобран
  28. jf @PICKU01_03
  29. 0109: player $player_char money += 10000 // даем игроку 10000 долларов
  30. 0215: destroy_pickup 0@
  31. 0A93: end_custom_thread
  32. //jump @PICKU01_03
  33.  
  34. :PICKU01_04
  35. 0215: destroy_pickup 0@
  36. jump @PICKU01_01



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


Код: Text
  1. {$CLEO .cs}
  2. //-------------MAIN---------------
  3. 0000: NOP
  4.  
  5. :BLOCK_1 // первый цикл                          
  6. wait 0
  7. if
  8. 0256: player $PLAYER_CHAR defined  // если игрок существует
  9. jf @BLOCK_1
  10. if
  11. 00E0: player $PLAYER_CHAR driving  // если игрок водит авто
  12. jf @BLOCK_1
  13. 03C1: 0@ = player $PLAYER_CHAR car  // записываем хэндл авто в переменную 0@
  14. 020A: set_car 0@ door_status_to 2   // блокируем двери
  15.  
  16. :BLOCK_2  // далее начинает работать второй цикл
  17. wait 0
  18. if
  19. 8443: NOT player $PLAYER_CHAR in_a_car  // если игрок покинул авто
  20. jf @BLOCK_2
  21. if
  22. 8039:   NOT 0@ == -1 // если авто существует(хэндл этого авто не равен -1)
  23. jf @BLOCK_1
  24. 020A: set_car 0@ door_status_to 1  // разблокируем двери
  25. jump @BLOCK_1

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #20 : Июль 22, 2017, 09:04:31 pm »
 Shagg_E
Благодарю за Ваш ответ. По Вашим советам, учусь скриптингу, конечно, не все всегда получается. Опираясь на ответы в теме, написал скрипт.
Огромное Вам спасибо за ответ по блокировке дверей, теперь скрипт благодаря совету эксперту стал лучше!!!!!!!!!
Заезжайте на маркер, сигналите, за деньги получайте непробиваемые шины.
Единственная проблема, значок маркер с радара не пропадает, когда покидаешь радиус. Подскажите, пожалуйста, где ошибка?
Ищу также опкод или адрес памяти, который отвечает за включения\отк фар авто. Ну люблю vice city?, хоть и 28 лет, скоро отцом стану.
Код: Javascript
  1. {$CLEO .cs}
  2.  
  3. //-------------MAIN---------------
  4. 0000: NOP
  5.  
  6. :car_tuning_1
  7. 00D6: if
  8. 0256:   player $PLAYER_CHAR defined
  9. 004D: jump_if_false @car_tuning_1
  10.  
  11. :car_tuning_2
  12. 0001: wait 0 ms
  13. 00D6: if
  14. 00E0:   player $PLAYER_CHAR driving
  15. 004D: jump_if_false @car_tuning_2
  16. 00D6: if
  17. 00F5:   player $player_char in_sphere 0 near_point -1107.25 -517.35 11.20 radius 30.0 30.0 30.0
  18. 004D: jump_if_false @car_tuning_2
  19. 02A7: 13@ = create_icon_marker_and_sphere 31 at -1107.25 -517.35 11.20
  20. 0103:   actor $PLAYER_ACTOR stopped_near_point_in_car -1107.25 -517.35 11.20 radius 3.0 3.0 3.0 sphere 0 // never used in VC
  21. 004D: jump_if_false @car_tuning_2
  22. if
  23. 0122:   player $PLAYER_CHAR pressing_horn
  24. 004D: jump_if_false @car_tuning_2
  25. if
  26. 010A:   player $PLAYER_CHAR money > 10000
  27. 004D: jump_if_false @car_tuning_2
  28. 0109: player $PLAYER_CHAR money += -10000
  29. 016A: fade 0 1000 ms
  30. 0001: wait 1500 ms  
  31. 03C0: $PLAYER_CAR = actor $PLAYER_ACTOR car
  32. 053F: set_car $PLAYER_CAR tires_vulnerable 0
  33. 016A: fade 1 1000 ms
  34. 0001: wait 1500 ms
  35. 0394: play_music 1
  36. 00D6: if
  37. 00F5:  player $player_char in_sphere 0 near_point -1107.25 -517.35 11.20 radius 30.0 30.0 30.0
  38. jf @car_tuning_3
  39. :car_tuning_3
  40. 0164: disable_marker 13@
  41. 0002: jump @car_tuning_1
  42.  
« Последнее редактирование: Декабрь 08, 2017, 01:58:23 pm от egor230 »

Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #21 : Июль 23, 2017, 08:24:20 am »
Судя по коду, Вы декомпилируете свой же скрипт. Это делать не стоит, когда у вас есть исходники. Просто открываете .txt файл с кодом и продолжаете работать, иначе при декомпиляции вы теряете часть информации и получаете плохочитабельный код.

Что касается маркера на карте, то используйте вместо опкода:
02A7: 13@ = create_icon_marker_and_sphere 31 at -1107.25 -517.35 11.20вот эти:
0570: 13@ = create_asset_radar_marker_with_icon 31 at -1107.25 -517.35 11.20
03BC: 14@ = create_sphere -1107.25 -517.35 11.20

Только потом не забудьте выключить сферу:
...
:car_tuning_3
0164: disable_marker 13@
03BD: destroy_sphere 14@

Что касается условий: зачем проверять каждое условие отдельно, если можно проверить все разом?
{$CLEO}

0570: 13@ = create_asset_radar_marker_with_icon 31 at -1107.25 -517.35 11.20
03BC: 14@ = create_sphere -1107.25 -517.35 11.20 2.0

:car_tuning_1
wait 0
if and
  0256:   player $PLAYER_CHAR defined
  00E0:   player $PLAYER_CHAR driving
  00F5:   player $player_char in_sphere 0 near_point -1107.25 -517.35 11.20 radius 30.0 30.0 30.0
  0103:   actor $PLAYER_ACTOR stopped_near_point_in_car -1107.25 -517.35 11.20 radius 3.0 3.0 3.0 sphere 0 // never used in VC
  0122:   player $PLAYER_CHAR pressing_horn
  010A:   player $PLAYER_CHAR money > 10000
jf @car_tuning_1
0109: player $PLAYER_CHAR money += -10000
016A: fade 0 1000 ms
0001: wait 1500 ms 
03C0: 0@ = actor $PLAYER_ACTOR car
053F: set_car 0@ tires_vulnerable 0
016A: fade 1 1000 ms
0001: wait 1500 ms
0394: play_music 1
0164: disable_marker 13@
03BD: destroy_sphere 14@
05DC: end_custom_thread

Вообще я мог бы рекомендовать вам сайт ru-script.3dn.ru. Правда там уроки скриптинга по SA, но он мало чем отличается от скриптинга в VC.
« Последнее редактирование: Июль 23, 2017, 08:30:42 am от GeniusZ »

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #22 : Июль 24, 2017, 01:58:32 pm »
Очень Рад вашему ответу, большое спасибо за уделенное мне время.
Да часто что-то меняю в скриптах, учту на будущее.
Благодарю Вас за ясный и понятный ответ по маркера, очень помог мне.
Вы абсолютно Вы, лучше проверить все условия сразу. Теперь благодаря Вам, скрипт работает идеально.
Спасибо за ссылку на сайт, будет полезный. Буду изучать.
Естественно sa очень хорошо изученная, по ней много уроков. Я ее прошел в 2005, но стиль 80 ближе, чем негров из 90.
Жаль по vice нету списка адресов памяти с подробным объяснением каждого значения.
Вот нашел ломанный скрипт, который должен по нажатию клавиши, взрывать все авто, кроме того, в которым находится игрок.
Пока моих знаний не хватает понять его, буду рад любым подсказкам.
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
0002: jump @BIGBANG№ _33
03A4: name_thread 'BIGBANG№ '
0004: '¤ BLOWALL' = 'L' // integer values
hex
 85 68
end
0400: create_coordinate 280580 $64 'Їяяя№ Я  Ї…h' from_object 282372 offset 'Я  ­…h' 282884 'Я  ®…h'
hex
 01 AF 85 68
end
0400: create_coordinate 'Њяяя№ Я  ±…h' 6849969 1 from_object 284676 offset 'Я  °…h' 285700 $64
hex
 04 67
end
0004: 'Я  І…h' = 279812 // integer values
0002: jump @BIGBANG№ _151
04B9: unknown_stuff -704642048
0004: 'а' = 'iяяяБ   ' // integer values
0300: text_3numbers_highpriority // never used in VC or GTA 3
0200:   player // never used in VC
hex
 01 44 FF FF FF B9 04 D6
end
0400: create_coordinate 'Њяяя№ Я  ±…h' 6849969 1 from_object
00E0:   player $PLAYER_CHAR driving
004D: jump_if_false @BIGBANG№ _269
0001: wait 0 ms
00D6: if
05EE:   key_pressed 76 //VK_...
004D: jump_if_false @BIGBANG№ _188
0002: jump @BIGBANG№ _232
04B9: unknown_stuff 'х  '
0801:
hex
 FF FF FF B9
end
0104:   actor
8805:   not
hex
 13 F5
end
0303: text_4numbers_highpriority // never used in VC or GTA 3
0400: create_coordinate 'Њяяя№ Я  ±…h' 6849969 1 from_object 1140916226 offset 'яяя№ Г  '
0200:   player // never used in VC
hex
 01 69 FF FF
end
02FF: show_text_3numbers GXT
hex
 01   

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #23 : Июль 26, 2017, 03:55:23 am »
Вот нашел ломанный скрипт, который должен по нажатию клавиши, взрывать все авто, кроме того, в которым находится игрок.
Пока моих знаний не хватает понять его, буду рад любым подсказкам.
Просто автор этого скрипта поставил на него защиту, из-за которой скрипт неправильно декомпилируется.
К счастью, защита была не сложной, поэтому вот код этого скрипта:
Код: Text
  1. {$CLEO .cs}
  2.  
  3. //-------------MAIN---------------
  4. 05DF: write_memory 6849964 size 1 value 79 virtual_protect 0
  5. 05DF: write_memory 6849965 size 1 value 81 virtual_protect 0
  6. 05DF: write_memory 6849966 size 1 value 72 virtual_protect 0
  7. 05DF: write_memory 6849967 size 1 value 88 virtual_protect 0
  8. 05DF: write_memory 6849968 size 1 value 92 virtual_protect 0
  9. 05DF: write_memory 6849969 size 1 value 103 virtual_protect 0
  10. 05DF: write_memory 6849970 size 1 value 69 virtual_protect 0
  11.  
  12. :Noname_151
  13. wait 0
  14. if
  15. 00E0:   player $player_char driving
  16. jf @Noname_151
  17. 03C1: 0@ = player $player_char car_no_save
  18.  
  19. :Noname_188
  20. if
  21. 00E0:   player $player_char driving
  22. jf @Noname_269
  23. wait 0
  24. if
  25. 05EE:   key_pressed 76 //VK_...
  26. jf @Noname_188
  27. 03F5: set_vehicle 0@ apply_damage_rules 0
  28. wait 5000
  29. 03F5: set_vehicle 0@ apply_damage_rules 1
  30. jump @Noname_188
  31.  
  32. :Noname_269
  33. Car.RemoveReferences(0@)
  34. jump @Noname_151

В первых 6 строках(где идет работа с памятью) происходит замена чит-кода "BIGBANG" на "BLOWALL", а далее - думаю, всё очевидно.

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #24 : Июль 29, 2017, 06:39:35 pm »
Спасибо Shagg_E за Ваш ответ. О Вас много хорошего пишут, что Вы сильно помогайте людям с модами.
Не знал, что защита бывает на скрипте. Жаль, он не работает.
Нашел адреса памяти, отвечающие за свет фар.

0x2B0   byte   light status
•   bit 0/1 = front left lights
•   bit 2/3 = front right lights
•   bit 4/5 = rear left lights
•   bit 6/7 = rear right lights
Решил, написать скрипт, который выкл\вкл фар.
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
0001: wait 0 ms

:NONAME_6
0001: wait 0 ms
00D6: if and
00E0:   player $PLAYER_CHAR driving
05EE:   key_pressed 70 //VK_...
004D: jump_if_false @NONAME_6
03C1: 1@ = player $player_char car_no_save
05E7: 2@ = car 1@ struct
0A8D: 3@ = read_memory 0x2B0 size 1 virtual_protect 1
0A8C: write_memory 3@ size 1 value 0 virtual_protect 1
0002: jump @NONAME_6 
В итоге вылет. Да я нуб, признаю это. Знаний маловато. Помогите, пожалуйста, буду благодарен за совет.

Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #25 : Июль 30, 2017, 05:50:17 am »
В данном случае 0x2B0 означает смещение от структуры машины. То есть, чтобы получить адрес состояния фар определенной машины, нужно получить ее структуру и прибавить к ней это смещение.
Цитировать
0x2B0   byte   light status
•   bit 0/1 = front left lights
•   bit 2/3 = front right lights
•   bit 4/5 = rear left lights
•   bit 6/7 = rear right lights
Судя по этому описанию, это поле структуры в 1 байт, и оно является флагом фар. Я имею в виду, что каждый бит этого байта отвечает за свет каждой фары транспортного средства.
Код: Text
  1. {$CLEO}
  2. 0000:
  3.  
  4. while true //начало бесконечного цикла
  5.     wait 0 //задержка, чтобы игра обработала кадр
  6.    
  7.     if and //если игрок за рулем и нажал клавишу "H"
  8.         Actor.Driving($PLAYER_ACTOR)
  9.         05EE: key_pressed 0x48 // key "H"
  10.     then //тогда
  11.         03C0: 0@ = actor $PLAYER_ACTOR car //находим машину, в которой сидит игрок
  12.         05E7: 0@ = car 0@ struct //получаем структуру этой машины
  13.         0@ += 0x2B0 //прибавляем смещение
  14.         05E0: 1@ = read_memory 0@ size 1 virtual_protect 0 //считыванием состоянием флагов
  15.        
  16.         if //если фары выключены
  17.             1@ == 0
  18.         then //тогда устанавливаем все флаги
  19.             1@ = 0xFF //в двоичном представление это число выглядит так: 11111111
  20.         else //иначе сбрасываем все флаги
  21.             1@ = 0 //в двоичном представление это число выглядит так: 00000000
  22.         end //конец проверки
  23.        
  24.         05DF: write_memory 0@ size 1 value 1@ virtual_protect 0 //записываем получившиеся значение обратно
  25.         wait 250 //маленькая задержка, чтобы фары не переключались мгновенно
  26.     end  //конец первой проверки
  27.    
  28. end //конец бесконечного цикла

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #26 : Июль 31, 2017, 07:17:32 pm »
GeniusZ, спасибо Вам огромное, Вам скрипт работает идеально, чувствует  большой опыт в работе с памятью. Здесь полный ноль.
Благодарю Вам за понятного объяснение.
Можно, с Вашего позволения вопрос, почему мы пишем virtual_protect 0, не virtual_protect 1, чтобы снять защиту с памяти.
Скажите, пожалуйста, есть такой опкод, который записывает  ближайшую машину в переменную.
Хочу провести такой эксперимент, в миссии "водитель" остановить машину хилари, и выкинуть его, что будет?

Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #27 : Июль 31, 2017, 08:39:31 pm »
Вся память программы состоит из кода и данных, и, чтобы программа случайно не натворила что-нибудь с кодом, на него устанавливается защита. Чтобы ее снять, надо писать virtual_protect 1(когда мы, конечно, модифицируем код и знаем что делаем).

Скажите, пожалуйста, есть такой опкод, который записывает  ближайшую машину в переменную.
053E: $Car = get_random_car_with_actors -1 in_area $2556 $2658 $445 $446

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 183
  • Репутация: +7/-0
    • Просмотр профиля
    • Mr
Re: Помощь с CLEO
« Ответ #28 : Август 02, 2017, 08:56:47 am »
 GeniusZ, спасибо Вам огромное, что просвещает своей мудрости меня в этой области. Если бы не было Вашего замечательного форум, люди вроде меня не развивались.
Значит мы пишем 1 только когда модифицируем код памяти.
Благодарю Вас за нужный опкод.
Пытаюсь написать скрипт, чтобы машина рядом заглохла, но получаю лишь вылет. Если у Вас есть время, подскажите, пожалуйста, где мои ошибки?
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
:1   
wait 0   
if   
 05EE: key_pressed 71
jf @1     
:2           
 wait 30   
if   
 85EE: not key_pressed 71
jf @2
04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 60.0 60.0 0.0
04C4: store_coords_to 4@ 5@ 6@ from_actor $PLAYER_ACTOR with_offset -60.0 -60.0 0.0
053E: 10@ = get_random_car_with_actors -1 in_area 1@ 2@ 4@ 5@
jf @1//
02D4: car 10@ turn_off_engine 0     
jump @1 

Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #29 : Август 02, 2017, 01:48:45 pm »
Код: Text
  1. {$CLEO .cs}
  2.  
  3. //-------------MAIN---------------
  4. 0000: NOP
  5. :1    
  6. wait 0    
  7. if    
  8.  05EE: key_pressed 71
  9. jf @1      
  10. :2          
  11.  wait 30    
  12. if    
  13.  85EE: not key_pressed 71
  14. jf @2
  15. 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 60.0 60.0 0.0
  16. 04C4: store_coords_to 4@ 5@ 6@ from_actor $PLAYER_ACTOR with_offset -60.0 -60.0 0.0
  17. 053E: 10@ = get_random_car_with_actors -1 in_area 1@ 2@ 4@ 5@
  18. //jf @1 - не правильно закомментировали
  19. 02D4: car 10@ turn_off_engine 0    
  20. jump @1