Вопросы по CLEO-скриптингу

Balonboy

Известный
149
2
CLEO:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0662: printstring "SYSTEMAIN.3DN.RU"
thread "$PLAYER_ACTOR"

:$PLAYER_ACTOR_37
wait 0
if
   Player.Defined($PLAYER_CHAR)
jf @$PLAYER_ACTOR_37
if
key_down 113
jf @$PLAYER_ACTOR_37
0@ = 22
0@ += 36
0@ *= 112
0@ += 13150904
0@ += 34
0A8D: 20@ = read_memory 0@ size 2 virtual_protect 0
0A8C: write_memory 0@ size 2 value 15 virtual_protect 0
1@ = 23
1@ += 36
1@ *= 112
1@ += 13150904
1@ += 34
0A8D: 21@ = read_memory 1@ size 2 virtual_protect 0
0A8C: write_memory 1@ size 2 value 20 virtual_protect 0
2@ = 24
2@ += 36
2@ *= 112
2@ += 13150904
2@ += 34
0A8D: 22@ = read_memory 2@ size 2 virtual_protect 0
0A8C: write_memory 2@ size 2 value 90 virtual_protect 0
3@ = 25
3@ += 36
3@ *= 112
3@ += 13150904
3@ += 34
0A8D: 23@ = read_memory 3@ size 2 virtual_protect 0
0A8C: write_memory 3@ size 2 value 5 virtual_protect 0
4@ = 27
4@ += 36
4@ *= 112
4@ += 13150904
4@ += 34
0A8D: 24@ = read_memory 4@ size 2 virtual_protect 0
0A8C: write_memory 4@ size 2 value 7 virtual_protect 0
5@ = 29
5@ *= 112
5@ += 13150904
5@ += 34
0A8D: 25@ = read_memory 5@ size 2 virtual_protect 0
0A8C: write_memory 5@ size 2 value 9 virtual_protect 0
6@ = 30
6@ += 36
6@ *= 112
6@ += 13150904
6@ += 34
0A8D: 26@ = read_memory 6@ size 2 virtual_protect 0
0A8C: write_memory 6@ size 2 value 15 virtual_protect 0
7@ = 31
7@ += 36
7@ *= 112
7@ += 13150904
7@ += 34
0A8D: 27@ = read_memory 7@ size 2 virtual_protect 0
0A8C: write_memory 7@ size 2 value 15 virtual_protect 0
8@ = 33
8@ *= 112
8@ += 13150904
8@ += 34
0A8D: 28@ = read_memory 8@ size 2 virtual_protect 0
0A8C: write_memory 8@ size 2 value 30 virtual_protect 0
9@ = 34
9@ *= 112
9@ += 13150904
9@ += 34
0A8D: 29@ = read_memory 9@ size 2 virtual_protect 0
0A8C: write_memory 9@ size 2 value 50 virtual_protect 0
10@ = 28
10@ += 36
10@ *= 112
10@ += 13150904
10@ += 34
0A8D: 30@ = read_memory 10@ size 2 virtual_protect 0
0A8C: write_memory 10@ size 2 value 10 virtual_protect 0
11@ = 32
11@ += 36
11@ *= 112
11@ += 13150904
11@ += 34
0A8D: 31@ = read_memory 11@ size 2 virtual_protect 0
0A8C: write_memory 11@ size 2 value 10 virtual_protect 0
12@ = 37
12@ *= 112
12@ += 13150904
12@ += 34
0A8D: TIMERA = read_memory 12@ size 2 virtual_protect 0
0A8C: write_memory 12@ size 2 value 25 virtual_protect 0
13@ = 38
13@ += 36
13@ *= 112
13@ += 13150904
13@ += 34
0A8D: TIMERB = read_memory 13@ size 2 virtual_protect 0
0A8C: write_memory 13@ size 2 value 25 virtual_protect 0
14@ = 26
14@ += 36
14@ *= 112
14@ += 13150904
14@ += 34
0A8D: 34@ = read_memory 14@ size 2 virtual_protect 0
0A8C: write_memory 14@ size 2 value 6 virtual_protect 0
018C: play_sound 1085 at 0.0 0.0 0.0
wait 50
018C: play_sound 1085 at 0.0 0.0 0.0
wait 50
018C: play_sound 1085 at 0.0 0.0 0.0
00BC: show_text_highpriority GXT 'CHEAT1' time 1000 flag 1  // Trapaœa Ativada

:$PLAYER_ACTOR_1043
wait 0
if
   not key_down 113
jf @$PLAYER_ACTOR_1043

:$PLAYER_ACTOR_1062
wait 0
if
key_down 113
jf @$PLAYER_ACTOR_1062
0A8C: write_memory 0@ size 2 value 20@ virtual_protect 0
0A8C: write_memory 1@ size 2 value 21@ virtual_protect 0
0A8C: write_memory 2@ size 2 value 22@ virtual_protect 0
0A8C: write_memory 3@ size 2 value 23@ virtual_protect 0
0A8C: write_memory 4@ size 2 value 24@ virtual_protect 0
0A8C: write_memory 5@ size 2 value 25@ virtual_protect 0
0A8C: write_memory 6@ size 2 value 26@ virtual_protect 0
0A8C: write_memory 7@ size 2 value 27@ virtual_protect 0
0A8C: write_memory 8@ size 2 value 28@ virtual_protect 0
0A8C: write_memory 9@ size 2 value 29@ virtual_protect 0
0A8C: write_memory 10@ size 2 value 30@ virtual_protect 0
0A8C: write_memory 11@ size 2 value 31@ virtual_protect 0
0A8C: write_memory 12@ size 2 value TIMERA virtual_protect 0
0A8C: write_memory 13@ size 2 value TIMERB virtual_protect 0
0A8C: write_memory 14@ size 2 value 34@ virtual_protect 0
018C: play_sound 1084 at 0.0 0.0 0.0
wait 50
018C: play_sound 1084 at 0.0 0.0 0.0
wait 50
018C: play_sound 1084 at 0.0 0.0 0.0
00BC: show_text_highpriority GXT 'CHEAT8' time 1000 flag 1  // Trapaœa Desativada

:$PLAYER_ACTOR_1345
wait 0
if
   not key_down 113
jf @$PLAYER_ACTOR_1345
goto @$PLAYER_ACTOR_37

Can you solve the bug of this script that when I disable I die with 1 shot for the enemies?

Можете ли вы решить ошибку этого скрипта, что при отключении я умираю с 1 выстрела по врагам?
 
Последнее редактирование модератором:

New_J3rs3y1337

Известный
148
102
А какой опкод на то, что игрок не находится во всех т/с ?
1658167907465.png

Не совсем тебя понял. Типо этого?
 

F.SKY

Участник
36
9
Наверное да... но не уверен напишу точнее.
Это для скрипта который ты отправлял ранее "проверка двери по команде". Я хотел сделать если игрок находится в авто то писалось как под цифрой 1. Если игрок не в т/с то под цифрой 2. И как сделать чтоб проверка двигателя не работала когда игрок не на водительском месте.


IMG_20220718_222028.jpg

Посмотреть вложение 158095
Не совсем тебя понял. Типо этого?
 

New_J3rs3y1337

Известный
148
102
Я хотел сделать если игрок находится в авто то писалось как под цифрой 1. Если игрок не в т/с то под цифрой 2.
CLEO:
{$CLEO}
0000:

:1
wait 0
0ab0: 49
jf @1
00DF:   actor $PLAYER_ACTOR driving
jf @2
0AD1: show_formatted_text_highpriority "InCar" time 2000
jump @3

:2
wait 0
0AD1: show_formatted_text_highpriority "Onfoot" time 2000

:3
wait 0
8ab0: 49
jf @3
jump @1
Я делал бы как-то вот так.



как сделать чтоб проверка двигателя не работала когда игрок не на водительском месте.
CVehicle + 0x460 = [dword] Указатель на водителя (CPed).
Можно сравнивать это значение с указателем на свою структуру (0xB6F5F0).



Кстати, нашёл ещё вот это:

CVehicle + 0x4F8 = [dword] Статус дверей машины.
  • 1 = Открыты
  • 2 = Закрыты
Не знаю почему мне выводило 0. Люблю самп :)
 
  • Нравится
Реакции: F.SKY

F.SKY

Участник
36
9
CLEO:
{$CLEO}
0000:

:1
wait 0
0ab0: 49
jf @1
00DF:   actor $PLAYER_ACTOR driving
jf @2
0AD1: show_formatted_text_highpriority "InCar" time 2000
jump @3

:2
wait 0
0AD1: show_formatted_text_highpriority "Onfoot" time 2000

:3
wait 0
8ab0: 49
jf @3
jump @1

Привет, можешь проверить в скрипте с дверьми я вроде все нормально сделал но игра крашит при воде команды.

И как совместить эти функции в скрипте?
CVehicle + 0x4F8 = [dword] Статус дверей машины.
CVehicle + 0x460 = [dword] Указатель на водителя (CPed)

CLEO:
{$CLEO}
0000:

:0
wait 0
0afa:
jf @0
0b34: "lock" @1
0BDE: pause_thread 0


:1
wait 0
jf @1
00DF:   actor $PLAYER_ACTOR driving
jf @2
03C0: 0@ = actor $PLAYER_ACTOR car
09B3: get_car 0@ door_status 1@

if
0039:   1@ == 0
then
0AF9: samp say_msg "/c unlock"
else
0AF9: samp say_msg "/c lock"
end
jump @3

:2
wait 0
0AF9: samp say_msg "/c FOOT"

:3
jf @3
jump @1
cmdret

CLEO:
{$CLEO}
0000: NOP

:1
0001: wait 0 ms
00D6: if and
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #BMX
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #BIKE
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #MTBIKE
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
03C0: 0@ = actor $PLAYER_ACTOR car
0441: 1@ = car 0@ model
0AC8: 2@ = allocate_memory_size 128
0ADB: 2@ = car_model 1@ name
0ABE:   vehicle 0@ engine_on
004D: jump_if_false @2

:3
0001: wait 0 ms
0AF9: samp say_msg "/c engin ON %s" 2@
0002: jump @5

:2
0001: wait 0 ms
0AF9: samp say_msg "/c engin OFF %s" 2@
0002: jump @4

:5
0001: wait 0 ms
00D6: if and
8118:   not actor $PLAYER_ACTOR dead
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
8ABE:   not vehicle 0@ engine_on
004D: jump_if_false @5
0002: jump @2

:4
0001: wait 0 ms
00D6: if and
8118:   not actor $PLAYER_ACTOR dead
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
0ABE:   vehicle 0@ engine_on
004D: jump_if_false @4
0002: jump @3
0AB2: 0 ret
 
Последнее редактирование:

New_J3rs3y1337

Известный
148
102
я вроде все нормально сделал
CLEO:
{$CLEO}
0000:

:0
wait 0
0afa:                    //проверка на то что самп загружен
jf @0
0b34: "lock" @1
0BDE: pause_thread 0    //ставим на паузу

:1
00DF:   actor $PLAYER_ACTOR driving                    //если в машине то
jf @2
03C0: 0@ = actor $PLAYER_ACTOR car                  //просто получаем хендл машины и идём проверять двери
jump @3

:2                                                                                 //а если не в машине, смотрим ближайшие кары
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to $NO_USE    //этот опкод покажет ближайший кар в радиусе ~30-35 метров           
not 0@ == -1
jf @5
00AA: store_car 0@ position_to 2@ 3@ 4@
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@                  //получаем дистанцию, чтоб проверяло только те машины,
8@ < 4.0                                                                    //которые в радиусе 4 метров от игрока
jf @5

:3
09B3: get_car 0@ door_status 1@
1@ == 2
jf @4
0AD1: show_formatted_text_highpriority "unlock~n~%d" time 2000 0@
jump @5

:4
0AD1: show_formatted_text_highpriority "lock~n~%d" time 2000 0@

:5
cmdret

У тебя крашило из-за того что cmdret в конце не вызывался вообще. Бесконечный цикл внутри тела команды делать запрещается.

И как совместить эти функции в скрипте?
CLEO:
{$CLEO}
0000: NOP

:1
0001: wait 0 ms
00D6: if and
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #BMX
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #BIKE
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #MTBIKE
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1

03C0: 0@ = actor $PLAYER_ACTOR car
0A8D: 3@ = read_memory 0xB6F5F0 size 4 virtual_protect 0
0A97: 4@ = car 0@ struct
4@ += 0x460
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
003B:   4@ == 3@
jf @1

03C0: 0@ = actor $PLAYER_ACTOR car
0441: 1@ = car 0@ model
0AC8: 2@ = allocate_memory_size 128
0ADB: 2@ = car_model 1@ name
0ABE:   vehicle 0@ engine_on
004D: jump_if_false @2

:3
0001: wait 0 ms
0AF9: samp say_msg "/c engin ON %s" 2@
0002: jump @5

:2
0001: wait 0 ms
0AF9: samp say_msg "/c engin OFF %s" 2@
0002: jump @4

:5
0001: wait 0 ms
00D6: if and
8118:   not actor $PLAYER_ACTOR dead
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
8ABE:   not vehicle 0@ engine_on
004D: jump_if_false @5
0002: jump @2

:4
0001: wait 0 ms
00D6: if and
8118:   not actor $PLAYER_ACTOR dead
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
0ABE:   vehicle 0@ engine_on
004D: jump_if_false @4
0002: jump @3
0AB2: 0 ret

Теперь скрипт ENGINE будет реагировать только если ты на водительском месте.
По крайней мере я на это надеюсь :)
 
Последнее редактирование:
  • Нравится
Реакции: F.SKY

Balonboy

Известный
149
2
CLEO:
{$CLEO}
     
0000:

REPEAT
WAIT 1500
0A8D: 31@ = Read_Memory 0xC8D4C0 Size 4 Virtual_Protect 0
IF NOT 31@ == 9
THEN 0A93: end_custom_thread
END
UNTIL 31@ == 9 // GAME LOADED

31@ = 0
WHILE TRUE
WAIT 0

IF 0256:   player $PLAYER_CHAR defined
THEN
    IF 30@ == FALSE // SAVE DEFAULT VALUE
    THEN
        0@ = 22 // Weapon ID
        0@ += 0x24
        0@ *= 0x70
        0@ += 0xC8AAB8
        0@ += 0x22
        0A8D: 15@ = read_memory 0@ size 1 virtual_protect 0
       
        1@ = 23 // Weapon ID
        1@ += 0x24
        1@ *= 0x70
        1@ += 0xC8AAB8
        1@ += 0x22
        0A8D: 16@ = read_memory 1@ size 1 virtual_protect 0
       
        2@ = 24 // Weapon ID
        2@ += 0x24
        2@ *= 0x70
        2@ += 0xC8AAB8
        2@ += 0x22
        0A8D: 17@ = read_memory 2@ size 1 virtual_protect 0
       
        3@ = 25 // Weapon ID
        3@ += 0x24
        3@ *= 0x70
        3@ += 0xC8AAB8
        3@ += 0x22
        0A8D: 18@ = read_memory 3@ size 1 virtual_protect 0
       
        4@ = 27 // Weapon ID
        4@ += 0x24
        4@ *= 0x70
        4@ += 0xC8AAB8
        4@ += 0x22
        0A8D: 19@ = read_memory 4@ size 1 virtual_protect 0
       
        5@ = 29 // Weapon ID
        5@ *= 0x70
        5@ += 0xC8AAB8
        5@ += 0x22
        0A8D: 20@ = read_memory 5@ size 1 virtual_protect 0
       
        6@ = 30 // Weapon ID
        6@ += 0x24
        6@ *= 0x70
        6@ += 0xC8AAB8
        6@ += 0x22
        0A8D: 21@ = read_memory 6@ size 1 virtual_protect 0
       
        7@ = 31 // Weapon ID
        7@ += 0x24
        7@ *= 0x70
        7@ += 0xC8AAB8
        7@ += 0x22
        0A8D: 22@ = read_memory 7@ size 1 virtual_protect 0
       
        8@ = 33 // Weapon ID
        8@ *= 0x70
        8@ += 0xC8AAB8
        8@ += 0x22
        0A8D: 23@ = read_memory 8@ size 1 virtual_protect 0
       
        9@ = 34 // Weapon ID
        9@ *= 0x70
        9@ += 0xC8AAB8
        9@ += 0x22
        0A8D: 24@ = read_memory 9@ size 1 virtual_protect 0
       
        10@ = 28 // Weapon ID
        10@ += 0x24
        10@ *= 0x70
        10@ += 0xC8AAB8
        10@ += 0x22
        0A8D: 25@ = read_memory 10@ size 1 virtual_protect 0
       
        11@ = 32 // Weapon ID
        11@ += 0x24
        11@ *= 0x70
        11@ += 0xC8AAB8
        11@ += 0x22
        0A8D: 26@ = read_memory 11@ size 1 virtual_protect 0
       
        12@ = 37 // Weapon ID
        12@ *= 0x70
        12@ += 0xC8AAB8
        12@ += 0x22
        0A8D: 27@ = read_memory 12@ size 1 virtual_protect 0
       
        13@ = 38 // Weapon ID
        13@ += 0x24
        13@ *= 0x70
        13@ += 0xC8AAB8
        13@ += 0x22
        0A8D: 28@ = read_memory 13@ size 1 virtual_protect 0
       
        14@ = 26 // Weapon ID
        14@ += 0x24
        14@ *= 0x70
        14@ += 0xC8AAB8
        14@ += 0x22
        0A8D: 29@ = read_memory 14@ size 1 virtual_protect 0
        30@ = TRUE
    END
   
    IF 0AB0: 113 // F2 - KEY CHECK
    THEN
        IF 31@ == FALSE
        THEN
            31@ = TRUE
            018C: play_sound 1085 at 0.0 0.0 0.0
            wait 50
            018C: play_sound 1085 at 0.0 0.0 0.0
            wait 50
            018C: play_sound 1085 at 0.0 0.0 0.0
            00BC: show_text_highpriority GXT 'CHEAT1' time 1000 flag 1  // Cheat activated
        ELSE
            31@ = FALSE
            018C: play_sound 1084 at 0.0 0.0 0.0
            wait 50
            018C: play_sound 1084 at 0.0 0.0 0.0
            wait 50
            018C: play_sound 1084 at 0.0 0.0 0.0
            00BC: show_text_highpriority GXT 'CHEAT8' time 1000 flag 1  // Cheat deactivated
        END
    END
   
    IF 30@ == TRUE
    THEN
        IF 31@ == FALSE
        THEN
            0@ = 22 // Weapon ID
            0@ += 0x24
            0@ *= 0x70
            0@ += 0xC8AAB8
            0@ += 0x22
            0A8C: write_memory 0@ size 1 value 15 virtual_protect 0
           
            1@ = 23 // Weapon ID
            1@ += 0x24
            1@ *= 0x70
            1@ += 0xC8AAB8
            1@ += 0x22
            0A8C: write_memory 1@ size 1 value 20 virtual_protect 0
           
            2@ = 24 // Weapon ID
            2@ += 0x24
            2@ *= 0x70
            2@ += 0xC8AAB8
            2@ += 0x22
            0A8C: write_memory 2@ size 1 value 90 virtual_protect 0
           
            3@ = 25 // Weapon ID
            3@ += 0x24
            3@ *= 0x70
            3@ += 0xC8AAB8
            3@ += 0x22
            0A8C: write_memory 3@ size 1 value 5 virtual_protect 0
           
            4@ = 27 // Weapon ID
            4@ += 0x24
            4@ *= 0x70
            4@ += 0xC8AAB8
            4@ += 0x22
            0A8C: write_memory 4@ size 1 value 7 virtual_protect 0
           
            5@ = 29 // Weapon ID
            5@ *= 0x70
            5@ += 0xC8AAB8
            5@ += 0x22
            0A8C: write_memory 5@ size 1 value 9 virtual_protect 0
           
            6@ = 30 // Weapon ID
            6@ += 0x24
            6@ *= 0x70
            6@ += 0xC8AAB8
            6@ += 0x22
            0A8C: write_memory 6@ size 1 value 15 virtual_protect 0
           
            7@ = 31 // Weapon ID
            7@ += 0x24
            7@ *= 0x70
            7@ += 0xC8AAB8
            7@ += 0x22
            0A8C: write_memory 7@ size 1 value 15 virtual_protect 0
           
            8@ = 33 // Weapon ID
            8@ *= 0x70
            8@ += 0xC8AAB8
            8@ += 0x22
            0A8C: write_memory 8@ size 1 value 30 virtual_protect 0
           
            9@ = 34 // Weapon ID
            9@ *= 0x70
            9@ += 0xC8AAB8
            9@ += 0x22
            0A8C: write_memory 9@ size 1 value 50 virtual_protect 0
           
            10@ = 28 // Weapon ID
            10@ += 0x24
            10@ *= 0x70
            10@ += 0xC8AAB8
            10@ += 0x22
            0A8C: write_memory 10@ size 1 value 10 virtual_protect 0
           
            11@ = 32 // Weapon ID
            11@ += 0x24
            11@ *= 0x70
            11@ += 0xC8AAB8
            11@ += 0x22
            0A8C: write_memory 11@ size 1 value 10 virtual_protect 0
           
            12@ = 37 // Weapon ID
            12@ *= 0x70
            12@ += 0xC8AAB8
            12@ += 0x22
            0A8C: write_memory 12@ size 1 value 25 virtual_protect 0
           
            13@ = 38 // Weapon ID
            13@ += 0x24
            13@ *= 0x70
            13@ += 0xC8AAB8
            13@ += 0x22
            0A8C: write_memory 13@ size 1 value 25 virtual_protect 0
           
            14@ = 26 // Weapon ID
            14@ += 0x24
            14@ *= 0x70
            14@ += 0xC8AAB8
            14@ += 0x22
            0A8C: write_memory 14@ size 1 value 6 virtual_protect 0
           
            /*018C: play_sound 1085 at 0.0 0.0 0.0
            WAIT 50
            018C: play_sound 1085 at 0.0 0.0 0.0
            WAIT 50
            018C: play_sound 1085 at 0.0 0.0 0.0
            00BC: show_text_highpriority GXT 'CHEAT1' time 1000 flag 1  // Cheat activated */
        ELSE
            0@ = 22 // Weapon ID
            0@ += 0x24
            0@ *= 0x70
            0@ += 0xC8AAB8
            0@ += 0x22
            0A8C: write_memory 0@ size 1 value 15@ virtual_protect 0
           
            1@ = 23 // Weapon ID
            1@ += 0x24
            1@ *= 0x70
            1@ += 0xC8AAB8
            1@ += 0x22
            0A8C: write_memory 1@ size 1 value 16@ virtual_protect 0
           
            2@ = 24 // Weapon ID
            2@ += 0x24
            2@ *= 0x70
            2@ += 0xC8AAB8
            2@ += 0x22
            0A8C: write_memory 2@ size 1 value 17@ virtual_protect 0
           
            3@ = 25 // Weapon ID
            3@ += 0x24
            3@ *= 0x70
            3@ += 0xC8AAB8
            3@ += 0x22
            0A8C: write_memory 3@ size 1 value 18@ virtual_protect 0
           
            4@ = 27 // Weapon ID
            4@ += 0x24
            4@ *= 0x70
            4@ += 0xC8AAB8
            4@ += 0x22
            0A8C: write_memory 4@ size 1 value 19@ virtual_protect 0
           
            5@ = 29 // Weapon ID
            5@ *= 0x70
            5@ += 0xC8AAB8
            5@ += 0x22
            0A8C: write_memory 5@ size 1 value 20@ virtual_protect 0
           
            6@ = 30 // Weapon ID
            6@ += 0x24
            6@ *= 0x70
            6@ += 0xC8AAB8
            6@ += 0x22
            0A8C: write_memory 6@ size 1 value 21@ virtual_protect 0
           
            7@ = 31 // Weapon ID
            7@ += 0x24
            7@ *= 0x70
            7@ += 0xC8AAB8
            7@ += 0x22
            0A8C: write_memory 7@ size 1 value 22@ virtual_protect 0
           
            8@ = 33 // Weapon ID
            8@ *= 0x70
            8@ += 0xC8AAB8
            8@ += 0x22
            0A8C: write_memory 8@ size 1 value 23@ virtual_protect 0
           
            9@ = 34 // Weapon ID
            9@ *= 0x70
            9@ += 0xC8AAB8
            9@ += 0x22
            0A8C: write_memory 9@ size 1 value 24@ virtual_protect 0
           
            10@ = 28 // Weapon ID
            10@ += 0x24
            10@ *= 0x70
            10@ += 0xC8AAB8
            10@ += 0x22
            0A8C: write_memory 10@ size 1 value 25@ virtual_protect 0
           
            11@ = 32 // Weapon ID
            11@ += 0x24
            11@ *= 0x70
            11@ += 0xC8AAB8
            11@ += 0x22
            0A8C: write_memory 11@ size 1 value 26@ virtual_protect 0
           
            12@ = 37 // Weapon ID
            12@ *= 0x70
            12@ += 0xC8AAB8
            12@ += 0x22
            0A8C: write_memory 12@ size 1 value 27@ virtual_protect 0
           
            13@ = 38 // Weapon ID
            13@ += 0x24
            13@ *= 0x70
            13@ += 0xC8AAB8
            13@ += 0x22
            0A8C: write_memory 13@ size 1 value 28@ virtual_protect 0
           
            14@ = 26 // Weapon ID
            14@ += 0x24
            14@ *= 0x70
            14@ += 0xC8AAB8
            14@ += 0x22
            0A8C: write_memory 14@ size 1 value 29@ virtual_protect 0
        END
    END
END

END

:ActivationCheck
// 0AB0: @ActivationCheck 0 _Returned: State 31@
IF 0AB0: 113 // F2 - KEY CHECK
THEN
    IF 31@ == FALSE
    THEN
        31@ = TRUE
        018C: play_sound 1085 at 0.0 0.0 0.0
        wait 50
        018C: play_sound 1085 at 0.0 0.0 0.0
        wait 50
        018C: play_sound 1085 at 0.0 0.0 0.0
        00BC: show_text_highpriority GXT 'CHEAT1' time 1000 flag 1  // Cheat activated
    ELSE
        31@ = FALSE
        018C: play_sound 1084 at 0.0 0.0 0.0
        wait 50
        018C: play_sound 1084 at 0.0 0.0 0.0
        wait 50
        018C: play_sound 1084 at 0.0 0.0 0.0
        00BC: show_text_highpriority GXT 'CHEAT8' time 1000 flag 1  // Cheat deactivated
    END
END
0AB2: ret 1 31@

Can anyone correct the error of the scope being reduced in some weapons like micro uzi silenced pistol mp5 m4

Может ли кто-нибудь исправить ошибку уменьшения прицела в некоторых видах оружия, таких как пистолет с глушителем micro uzi mp5 m4
 
Последнее редактирование модератором:

F.SKY

Участник
36
9
CLEO:
{$CLEO}
0000:

:0
wait 0
0afa:                    //проверка на то что самп загружен
jf @0
0b34: "lock" @1
0BDE: pause_thread 0    //ставим на паузу

:1
00DF:   actor $PLAYER_ACTOR driving                    //если в машине то
jf @2
03C0: 0@ = actor $PLAYER_ACTOR car                  //просто получаем хендл машины и идём проверять двери
jump @3

:2                                                                                 //а если не в машине, смотрим ближайшие кары
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to $NO_USE    //этот опкод покажет ближайший кар в радиусе ~30-35 метров        
not 0@ == -1
jf @5
00AA: store_car 0@ position_to 2@ 3@ 4@
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@                  //получаем дистанцию, чтоб проверяло только те машины,
8@ < 4.0                                                                    //которые в радиусе 4 метров от игрока
jf @5

:3
09B3: get_car 0@ door_status 1@
1@ == 2
jf @4
0AD1: show_formatted_text_highpriority "unlock~n~%d" time 2000 0@
jump @5

:4
0AD1: show_formatted_text_highpriority "lock~n~%d" time 2000 0@

:5
cmdret

У тебя крашило из-за того что cmdret в конце не вызывался вообще. Бесконечный цикл внутри тела команды делать запрещается.


CLEO:
{$CLEO}
0000: NOP

:1
0001: wait 0 ms
00D6: if and
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #BMX
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #BIKE
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #MTBIKE
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1

03C0: 0@ = actor $PLAYER_ACTOR car
0A8D: 3@ = read_memory 0xB6F5F0 size 4 virtual_protect 0
0A97: 4@ = car 0@ struct
4@ += 0x460
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
003B:   4@ == 3@
jf @1

03C0: 0@ = actor $PLAYER_ACTOR car
0441: 1@ = car 0@ model
0AC8: 2@ = allocate_memory_size 128
0ADB: 2@ = car_model 1@ name
0ABE:   vehicle 0@ engine_on
004D: jump_if_false @2

:3
0001: wait 0 ms
0AF9: samp say_msg "/c engin ON %s" 2@
0002: jump @5

:2
0001: wait 0 ms
0AF9: samp say_msg "/c engin OFF %s" 2@
0002: jump @4

:5
0001: wait 0 ms
00D6: if and
8118:   not actor $PLAYER_ACTOR dead
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
8ABE:   not vehicle 0@ engine_on
004D: jump_if_false @5
0002: jump @2

:4
0001: wait 0 ms
00D6: if and
8118:   not actor $PLAYER_ACTOR dead
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @1
0ABE:   vehicle 0@ engine_on
004D: jump_if_false @4
0002: jump @3
0AB2: 0 ret

Теперь скрипт ENGINE будет реагировать только если ты на водительском месте.
По крайней мере я на это надеюсь :)

ENGINE работает отлично, но я не как не могу вывести надпись на экран то что игрок находится рядом с т/с.
И как сделать чтоб команда запускала скрипт и отправлялась эту же команду с изменяющемся параметром на сервер.
Пример: пишешь команду в чат /lock 1-8 и скрипт реагировал на /lock, а серверу отправлял /lock и цифру указанную после. Думаю понятно объяснил.
 
Последнее редактирование:

New_J3rs3y1337

Известный
148
102
не как не могу вывести надпись на экран то что игрок находится рядом с т/с
CLEO:
:1
wait 0
80DF:   actor $PLAYER_ACTOR driving
jf @1
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to $NO_USE
not 0@ == -1
jf @1
00AA: store_car 0@ position_to 2@ 3@ 4@
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@             
8@ < 4.0                                                               
jf @1
0AF8: samp add_message_to_chat "Игрок находится рядом с т/с" color 0xFFFFFFFF
jump @1

Типо вот этого?



как сделать чтоб команда запускала скрипт и отправлялась эту же команду с изменяющемся параметром на сервер
В приоритете команды, которые зарегистрированы у тебя локально, насколько знаю. Поэтому можно использовать:
0C8F: samp process_chat_input "/save";
0AF9: samp say_msg "lol";
Ну или на крайняк отправлять RPC SendChatMessage с нужной командой на сервер.
 

D3.Pheonix

🎹
Модератор
2,867
1,644
ENGINE работает отлично, но я не как не могу вывести надпись на экран то что игрок находится рядом с т/с.
И как сделать чтоб команда запускала скрипт и отправлялась эту же команду с изменяющемся параметром на сервер.
Пример: пишешь команду в чат /lock 1-8 и скрипт реагировал на /lock, а серверу отправлял /lock и цифру указанную после. Думаю понятно объяснил.
Закажи уже скрипт, тебе его сделают. Дом 2 какой то, построй свой скрипт...
Так тебе его ещё на метках делают, от этого ещё печальнее (не в обиду, ты молодец что помогаешь ему)
 
  • Ха-ха
Реакции: New_J3rs3y1337

D3.Pheonix

🎹
Модератор
2,867
1,644
Чего метки так хейтят вообще? Никак не пойму. Лично мне на них куда удобнее 🤔
Потому что ты не познал конструкции, и не писал больших скриптов. Да и в чужом коде намного проще разобраться, если есть есть исходник с нормальным кодом и табуляцией, и не придётся туда сюда рыскать, куда же происходит jump. В какой то степени даже будешь немного лучше соображать что происходит, например в js или lua скрипте. Можно еще в добавок писать на классах, но это уже вкусовщина, т.к. будет смесь из опкодов и классов.
 
  • Нравится
Реакции: New_J3rs3y1337

F.SKY

Участник
36
9
CLEO:
:1
wait 0
80DF:   actor $PLAYER_ACTOR driving
jf @1
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to $NO_USE
not 0@ == -1
jf @1
00AA: store_car 0@ position_to 2@ 3@ 4@
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@             
8@ < 4.0                                                               
jf @1
0AF8: samp add_message_to_chat "Игрок находится рядом с т/с" color 0xFFFFFFFF
jump @1

Типо вот этого?
Не работает. Из-за 6 строчки если убрать "not" поменять знак и число, то спамит при входе в игру, а если оставить то вообще ничего не происходит.
 

New_J3rs3y1337

Известный
148
102
Странно. В чат действительно должно было спамить, мой косяк, но не при входе в игру. Да и с шестой строкой проблем возникнуть не должно было. Я скомпилировал этот же скрипт у себя, всё работает. Возможно дело в твоём компиляторе и версии сани билдера 🤔
Попробуй мой билд закинуть, там открыт исходник. На всякий случай ещё сюда приложу:
1658393212955.png

Если будет работать, будем думать как правильно реализовать однократную отправку сообщений в чат, т.к там тоже есть нюансы которые по-хорошему нужно учитывать.
 

Вложения

  • test21.cs
    137 байт · Просмотры: 7
Последнее редактирование: