#1 26-10-2020 12:22

Remca12
Registered: 30-06-2019
Posts: 32

Как добавить код из клео-скрипта в main.scm ?

Здравствуйте, помогите пожалуйста ибо я не понимаю rolleyes . Я добавил оба кода (1й даёт копам дробовик если у игрока больше 3х звезд, а 2й код проверяет какое оружие носит игрок, и даёт 1 звезду) переименовав метки (в самый конец main.scm), и оба кода не работают.

03A4: name_thread 'ONAME'  
0001: wait 100 ms 
05E5: 0@ = game_version 
00D6: if 
0039:   0@ == 0 // @ == int 
004D: jump_if_false @ONAME_54 
0006: 1@ = 4985344 // @ = int 
0006: 2@ = 4988569 // @ = int 
0002: jump @ONAME_145 


:ONAME_54
0001: wait 0 ms 
00D6: if 
0039:   0@ == 1 // @ == int 
004D: jump_if_false @ONAME_103 


0006: 1@ = 4985584 // @ = int 
0006: 2@ = 4988729 // @ = int 
0002: jump @ONAME_145 

:ONAME_103
0001: wait 0 ms 
00D6: if 
0039:   0@ == 2 // @ == int 
004D: jump_if_false @ONAME_54 
0006: 1@ = 4985472 // @ = int 
0006: 2@ = 4988617 // @ = int 

:ONAME_145
0001: wait 0 ms 
01C0: 0@ = player $PLAYER_CHAR wanted_level 
00D6: if 
0019:   0@ > 2 // @ > int 
004D: jump_if_false @ONAME_249 
05DF: write_memory 1@ size 1 value 4 virtual_protect 1 
05DF: write_memory 2@ size 1 value 4 virtual_protect 1 

:ONAME_197
0001: wait 0 ms 
01C0: 0@ = player $PLAYER_CHAR wanted_level 
00D6: if 
8019:   not  0@ > 2 // @ > int 
004D: jump_if_false @ONAME_256 
05DF: write_memory 1@ size 1 value 2 virtual_protect 1 
05DF: write_memory 2@ size 1 value 2 virtual_protect 1 

:ONAME_249
0002: jump @ONAME_145 

:ONAME_256
0002: jump @ONAME_197 
end_thread

03A4: name_thread 'MONAME'
0001: wait 300 ms 

:MONAME_5
0001: wait 0 ms 
00D6: if 
80E0:   not player $PLAYER_CHAR in_any_car 
004D: jump_if_false @MONAME_231 
00D6: if and
82D7:   not player $PLAYER_CHAR current_weapon == 0 
82D7:   not player $PLAYER_CHAR current_weapon == 1 
004D: jump_if_false @MONAME_231 
0054: store_player $PLAYER_CHAR position_to 1@ 2@ 3@ 
00D6: if 
05EF: 8@ = random_actor_near_point 1@ 2@ 3@ in_radius 10.0 find_next 0 pass_deads 1 // IF and SET 
004D: jump_if_false @MONAME_231 

:MONAME_96
05E6: 7@ = actor 8@ struct 
000A: 7@ += 92 // @ += int 
05E0: 9@ = read_memory 7@ size 2 virtual_protect 1 
00D6: if or
0039:   9@ == 1 // @ == int 
0039:   9@ == 2 // @ == int 
0039:   9@ == 3 // @ == int 
004D: jump_if_false @MONAME_199 
00D6: if 
0123:   actor 8@ spotted_player $PLAYER_CHAR 
004D: jump_if_false @MONAME_199 
00D6: if 
810F:   not player $PLAYER_CHAR wanted_level > 0 
004D: jump_if_false @MONAME_199 
010D: set_player $PLAYER_CHAR wanted_level_to 1 

:MONAME_199
00D6: if 
85EF:   not 8@ = random_actor_near_point 1@ 2@ 3@ in_radius 10.0 find_next 1 pass_deads 1 // IF and SET 
004D: jump_if_false @MONAME_96 

:MONAME_231
0002: jump @MONAME_5
end_thread 

//специально отделил
Я также пытаюсь запустить потоки ONAME и MONAME, но игра крашится с ошибкой (на картинке)
lUFfakAuuN0.jpg
004F: create_thread @ONAME_54
004F: create_thread @MONAME_5

Offline

#2 27-10-2020 16:43

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Как добавить код из клео-скрипта в main.scm ?

отличие клео скриптов от main.scm в том, что библиотека CLEO автоматически запускает скрипт. В main.scm это нужно делать вручную командой create_thread. Но метка запуска скрипта должна стоять перед самой первой командой, иначе игра просто пропустит часть кода. Например, ты делаешь

004F: create_thread @ONAME_54

но перед ONAME_54 написан кусок инициализации

03A4: name_thread 'ONAME' 
0001: wait 100 ms 
05E5: 0@ = game_version 
00D6: if
0039:   0@ == 0 // @ == int 
004D: jump_if_false @ONAME_54
0006: 1@ = 4985344 // @ = int 
0006: 2@ = 4988569 // @ = int 
0002: jump @ONAME_145

:ONAME_54

который теперь просто пропущен. правильно будет добавить новую метку (например, :ONAME) и стартовать скрипт с нее:

create_thread @ONAME // где-то рядом с остальными create_thread
.....

:ONAME
03A4: name_thread 'ONAME' 
0001: wait 100 ms 
05E5: 0@ = game_version 
00D6: if
0039:   0@ == 0 // @ == int 
004D: jump_if_false @ONAME_54
0006: 1@ = 4985344 // @ = int 
0006: 2@ = 4988569 // @ = int 
0002: jump @ONAME_145
...

тоже самое и для второго скрипта

Offline

Board footer

Powered by FluxBB