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

Spectrata

Новичок
27
0
Не работают логи. Хз в чем проблема. В файл тоже ничего не пишет.
Код:
{$CLEO}

0000:

:start
wait 0 ms
0AFA: is_samp_available
jf @start
0BE3: raknet setup_incoming_rpc_hook @hooked_data_dialog
0BDE: pause_thread 0

:hooked_data_dialog
0AC8: 2@ = allocate_memory_size 4096
0C11: memset destination 2@ value 0x0 size 4096
0BE5: raknet 0@ = get_hook_param 1 //  Packet ID
if  0@ == 61 // RPC_ShowDialog
then
    0BE5: raknet 0@ = get_hook_param 0 // get Bitstream
    0BF2: raknet 1@ = bit_stream 0@ get_read_offset
    0BED: raknet bit_stream 0@ set_read_offset 48 // we skip int16, int8, string8, button1, button2;
    0BF4: raknet bit_stream 0@ decode_string 2@ size 4096
    0BED: raknet bit_stream 0@ set_read_offset 1@ // 0@ current offset; 1@ safe offset
    0B78: log 2@
end
0AC9: free_allocated_memory 2@
0BE0: raknet hook_ret TRUE

В общем. Нашел код, сделал пасту. Проверил. Реализация опкода 0B5B без сампфанкса работает так как нужно.

Осталось научиться делать так же)

 
Последнее редактирование:

DANIIL XPC

Известный
81
5
Не могу собрать, может кто поможет?
CLEO:
{$CLEO .cs}
0000:


REPEAT
    WAIT 0
UNTIL 0AFA:  SAMP_IS_READY

0B6D: 31@ CREATE_FONT "Arial Black" HEIGHT 10 FLAGS 0x5
0BFC: set_global_var "font" = 31@

0B34: "VehicleRecording" @VehicleRecording
0B34: "VehicleRecordingLoop" @VehicleRecordingLoop

0AF8: "{FF0000}/VehicleRecording:{FFFFFF} to get help!" -1





WHILE TRUE
    WAIT 0
    IF
    00DF:   actor $PLAYER_ACTOR driving
    THEN
        IF AND
        8B21: NOT_CHAT_OPEN
        0AB0: 79 {O}
        THEN
            REPEAT
                WAIT 0
            UNTIL  8AB0: 79 {O}
            32@ = 0
            IF
            0AAB:   file_exists "CLEO\VehicleRecording.path"
            THEN
                0B00: delete_file "CLEO\VehicleRecording.path"
            END           
            0AF8: "{FF0000}Vehicle Recording:{FFFFFF} recording a new path!!" -1 
            03C0: 0@ = actor $PLAYER_ACTOR car
            0407: 1@ 2@ 3@ CAR 0@ w_OFFSET 0.0 0.0 0.0 
            018A: 29@ = create_checkpoint_at 1@ 2@ 3@
 

            0A9A: 31@ = openfile "CLEO\VehicleRecording.path" mode "wb+"
            
            
            REPEAT
                WAIT 0
                IF
                80DF:   actor $PLAYER_ACTOR driving
                THEN
                    0AF8: "{FF0000}Vehicle Recording:{FFFFFF} just saved ur ass from a crash. Recording failed." -1
                    BREAK
                END
                0AB1: @DRAW_TEXT_RECORDING 0
                IF
                32@ > 200
                THEN
                    32@ = 0
                    03C0: 0@ = actor $PLAYER_ACTOR car
                    0407: 1@ 2@ 3@ CAR 0@ w_OFFSET 0.0 0.0 0.0 
                    02E3: 4@ = car 0@ speed
                    0A9E: writefile 31@ size 16 from 1@
                    018C: play_sound 1052 at 0.0 0.0 0.0
                END   
            UNTIL 0AB0: 79

            0164: disable_marker 29@

            0A9B: closefile 31@
            0AF8: "{FF0000}Vehicle Recording:{FFFFFF} recording has been stopped." -1
            REPEAT
                WAIT 0
            UNTIL  8AB0: 79 {O}               
        END   
    
        IF
        8B21: NOT_CHAT_OPEN
        THEN
            IF OR
            30@ == TRUE
            0AB0: 80 {P}
            THEN
                REPEAT
                    WAIT 0
                UNTIL  8AB0: 80 {p}
                IF
                0AAB:   file_exists "CLEO\VehicleRecording.path"
                THEN
                    0AF8: "{FF0000}Vehicle Recording:{FFFFFF} playing the path now!" -1
                    
                    0A9A: 31@ = openfile "CLEO\VehicleRecording.path" mode "rb"
                    
                    REPEAT
                    WAIT 0
                        IF
                        80DF:   actor $PLAYER_ACTOR driving
                        THEN
                            0AF8: "{FF0000}Vehicle Recording:{FFFFFF} just saved ur ass from a crash." -1
                            BREAK
                        END     
                        IF AND
                        8B21: NOT_CHAT_OPEN
                        0AB0: 80 {p}
                        THEN
                            BREAK
                        END                     
    
                        03C0: 0@ = actor $PLAYER_ACTOR car
    
                        0A9D: readfile 31@ size 4 to 1@
                        0A9D: readfile 31@ size 4 to 2@
                        0A9D: readfile 31@ size 4 to 3@
                        0A9D: readfile 31@ size 4 to 4@
                        0A9D: readfile 31@ size 4 to 1@
                        0A9D: readfile 31@ size 4 to 2@
                        0A9D: readfile 31@ size 4 to 3@
                        0A9D: readfile 31@ size 4 to 4@
                                                
                        REPEAT
                        WAIT 0
                            IF
                            80DF:   actor $PLAYER_ACTOR driving
                            THEN
                                0AF8: "{FF0000}Vehicle Recording:{FFFFFF} just saved ur ass from a crash." -1
                                30@ = FALSE
                                0AF8: "{FF0000}Vehicle Recording:{FFFFFF} disabled looping." -1
                                BREAK
                            END     
                            IF
                            0AB0: 80 {p}
                            THEN
                                30@ = FALSE
                                0AF8: "{FF0000}Vehicle Recording:{FFFFFF} disabled looping." -1
                                BREAK
                            END           
                            0AB1: @DRAW_TEXT_PLAYING 0         
                            0407: 6@ 7@ 8@ CAR 0@ w_OFFSET 0.0 0.0 0.0 
                            0AB1: call_scm_func @turning_mechanism 4 1@ 2@ 6@ 7@ 
                            02E3: 5@ = car 0@ speed
                            IF
                            0025:   5@ > 4@  // (float)
                            THEN
                                0AB1: @BRAKE 0
                                ELSE
                                0AB1: @GAS 0
                            END
                            0B55: convert_3D_coords 1@ 2@ 3@ to_screen 9@ 10@
                            0B55: convert_3D_coords 6@ 7@ 8@ to_screen 11@ 12@
                            if
                            00C2:   sphere_onscreen 1@ 2@ 3@ radius 5.0
                            then
                                0B68: render draw_line_point1 11@ 12@ point2 9@ 10@ width 2 color 0xFFFF0000
                                0B70: render draw_polygon_pos 9@ 10@ size 10 10 corners 14 rotation 0 color 0xFF000000
                                0B70: render draw_polygon_pos 11@ 12@ size 10 10 corners 14 rotation 0 color 0xFF000000
                            end
                        UNTIL 0100:   actor $PLAYER_ACTOR in_sphere 1@ 2@ 3@ radius 5.0 5.0 5.0 sphere 0 in_car
                        
                    UNTIL 0AD6:   end_of_file 31@ reached               
        
                    0AF8: "{FF0000}Vehicle Recording:{FFFFFF} playing has been stopped!" -1               
                    0A9B: closefile 31@
                    REPEAT
                        WAIT 0
                    UNTIL  8AB0: 80 {p}           
                    
                END
            END   
        END
    
    
        

        
    END
END






//0AB1: call_scm_func @turning_mechanism 4 XY XY
:turning_mechanism
0AB1: @getZAngleBetweenPoints 4 from_XY 0@ 1@ and_XY 2@ 3@ store_to 31@       
0172: 30@ = actor $PLAYER_ACTOR Z_angle
30@ -= 360.0
0097: make 30@ absolute_float
005B: 31@ += 30@
02F6: 30@ = sine 31@
02F7: 31@ = cosine 31@
0604: get_Z_angle_for_point 30@ 31@ store_to 31@
    if and
    0021:   31@ > 180.0
    0023:   355.0 > 31@
    then //press left
    0B56: set_game_key 0 state -255
    //0B56: set_game_key 16 state 255
        if
        0023:   200.0 > 31@
        then
        0B56: set_game_key 6 state 255
        else
        0B56: set_game_key 6 state 0
        end                           
    else
        if and
        0021:   31@ > 5.0
        0033:   180.0 >= 31@ //lower or equal 
        then //press right 
        0B56: set_game_key 0 state 255
        //0B56: set_game_key 16 state 255
            if
            0021:   31@ > 160.0
            then
            0B56: set_game_key 6 state 255
            else
            0B56: set_game_key 6 state 0
            end
        else
        0B56: set_game_key 0 state 0
        0B56: set_game_key 6 state 0
        //0B56: set_game_key 16 state 255
        end
    end
0AB2: ret 0

:getZAngleBetweenPoints
0063: 0@ -= 2@
0063: 1@ -= 3@
0604: get_Z_angle_for_point 0@ 1@ store_to 4@
0AB2: 1 4@

:DRAW_TEXT_PLAYING
if
00DF:   actor $PLAYER_ACTOR driving
then
    03C0: 0@ = actor $PLAYER_ACTOR car
    0407: 1@ 2@ 3@ CAR 0@ w_OFFSET 0.0 0.0 0.0   
    0BFD: 31@ = get_global_var "font"
    0B55: convert_3D_coords 1@ 2@ 3@ to_screen 4@ 5@
    0B6B: 6@ = FONT 31@ TEXT "PLAYING" LENGTH
    6@ /= 2
    0062: 4@ -= 6@
    0B6F: FONT 31@ DRAW_TEXT "PLAYING" POS 4@ 5@ COLOR 0xFFFF0000
end
0AB2: 0

:DRAW_TEXT_RECORDING
if
00DF:   actor $PLAYER_ACTOR driving
then
    03C0: 0@ = actor $PLAYER_ACTOR car
    0407: 1@ 2@ 3@ CAR 0@ w_OFFSET 0.0 0.0 0.0   
    0BFD: 31@ = get_global_var "font"
    0B55: convert_3D_coords 1@ 2@ 3@ to_screen 4@ 5@
    0B6B: 6@ = FONT 31@ TEXT "RECORDING" LENGTH
    6@ /= 2
    0062: 4@ -= 6@
    0B6F: FONT 31@ DRAW_TEXT "RECORDING" POS 4@ 5@ COLOR 0xFFFF0000
end
0AB2: 0

:BRAKE
0@ = 0xB73458
0@ += 0xC
0A8C: write_memory 0@ size 1 value 255 virtual_protect 0
0AB2: 0

:GAS
0@ = 0xB73458
0@ += 0x20
0A8C: write_memory 0@ size 1 value 255 virtual_protect 0
0AB2: 0

:VehicleRecordingLoop
IF
30@ == TRUE
THEN
    30@ = FALSE
    0AF8: "{FF0000}Vehicle Recording:{FFFFFF} disabled looping." -1
ELSE
    30@ = TRUE
     0AF8: "{FF0000}Vehicle Recording:{FFFFFF} enabled looping." -1
END
0B43:











:VehicleRecording
0AF8: "{FF0000}Vehicle Recording:{FFFFFF} made by Opcode.eXe ;)" -1
0AF8: "{FF0000}Vehicle Recording:{FFFFFF} use O to start/stop recording." -1
0AF8: "{FF0000}Vehicle Recording:{FFFFFF} press P to play/stop the recorded path." -1
0AF8: "{FF0000}Vehicle Recording:{FFFFFF} write /VehicleRecordingLoop play it without stopping." -1

0B43:
 

XauIIoBbIu_KoIIIaK

Новичок
22
16
Крашит при вводе команды, что это может быть?

CLEO:
{$CLEO}
0000:

:1
wait 0
0AFA:  is_samp_available
jf @1
0B34: samp register_client_command "mycmd" to_label @rpcshka
0BDE: pause_thread 0@

:rpcshka
0AB1: call_scm_func @RPC_SetPlayerPos 2 3@ pos
0B43: samp cmd_ret


:RPC_SetPlayerPos
0AB6: store_target_marker_coords_to 0@ 1@ 2@ // IF and SET
0B3D: raknet 4@ = new_bit_stream
0B40: raknet bit_stream 4@ write 0@ type 6 size 4
0B40: raknet bit_stream 4@ write 1@ type 6 size 4
0B40: raknet bit_stream 4@ write 2@ type 6 size 4
0BF6: raknet emul_rpc_receive 12 bit_stream 4@
0B3E: raknet delete_bit_stream 4@
0AB2: ret 0
 

New_J3rs3y1337

Известный
148
102
Крашит при вводе команды, что это может быть?

CLEO:
{$CLEO}
0000:

:1
wait 0
0AFA:  is_samp_available
jf @1
0B34: samp register_client_command "mycmd" to_label @rpcshka
0BDE: pause_thread 0@

:rpcshka
0AB1: call_scm_func @RPC_SetPlayerPos 2 3@ pos
0B43: samp cmd_ret


:RPC_SetPlayerPos
0AB6: store_target_marker_coords_to 0@ 1@ 2@ // IF and SET
0B3D: raknet 4@ = new_bit_stream
0B40: raknet bit_stream 4@ write 0@ type 6 size 4
0B40: raknet bit_stream 4@ write 1@ type 6 size 4
0B40: raknet bit_stream 4@ write 2@ type 6 size 4
0BF6: raknet emul_rpc_receive 12 bit_stream 4@
0B3E: raknet delete_bit_stream 4@
0AB2: ret 0
Откуда взялось в 12 строке "3@" и почему там "pos"?
 

New_J3rs3y1337

Известный
148
102
пытался отправить синхру setplayerpos
CLEO:
{$CLEO}
0000:

:1
wait 0
0AFA:  is_samp_available
jf @1
0B34: samp register_client_command "mycmd" to_label @rpcshka
0BDE: pause_thread 0

:rpcshka
0AB6: store_target_marker_coords_to 0@ 1@ 2@
0B3D: raknet 4@ = new_bit_stream
0B40: raknet bit_stream 4@ write 0@ type 4 size 4
0B40: raknet bit_stream 4@ write 1@ type 4 size 4
0B40: raknet bit_stream 4@ write 2@ type 4 size 4
0BF6: raknet emul_rpc_receive 12 bit_stream 4@
0B3E: raknet delete_bit_stream 4@
0B43: samp cmd_ret

Держи рабочий вариант.
(В 9 строке, "0" означает "текущий", такое много где можно встретить; в 14, 15, 16 строках type нужно ставить 4, т.к в 0@, 1@, 2@ записано float). Вот тебе небольшая шпаргалочка:

BitStream типы (type)

BS_TYPE_BYTE = 0 (целое, один байт)
BS_TYPE_BOOL = 1 (логическое, один бит)
BS_TYPE_SHORT = 2 (целое, два байта)
BS_TYPE_INT = 3 (целое, четыре байта)
BS_TYPE_FLOAT = 4 (дробное, четыре байта)
BS_TYPE_ARRAY = 5 (указатель на строку или массив, неопределенный размер)
BS_TYPE_BITSTREAM = 6 (указатель на битстрим, неопределенный размер)


Размеры типов данных

uint16_t ---> 2 bytes.
uint8_t ---> 1 bytes.
char ---> 1 bytes.
bool ---> 1 bytes.
int ---> 4 bytes.
short int ---> 2 bytes.
unsigned int ---> 4 bytes.
unsigned short int ---> 2 bytes.
uint32_t ---> 4 bytes.
float ---> 4 bytes.
uint16_t somevariable[2] ---> 2*2 = 4 bytes.
void ---> = 4 bytes.
DWORD ---> = 4 bytes.
float asomevariable[3] ---> 3*4 = 12 bytes.
 
Последнее редактирование:
  • Нравится
Реакции: XauIIoBbIu_KoIIIaK

Foxy01

Известный
283
125
Здраствуйте, решил написать свой скрипт который проверяет в радиусе все объекты и если есть нужный то выполняется код, как основа был использован этот код.
Основа:
{$CLEO}
{$NOSOURCE}
const
VK_F3 = 0x72
end
 
if
not 29@ = samp.Base()
then
end_thread
else
    while not samp.Available()
    wait 100
    end
end
 
0B67: render a 255 r 255 g 255 b 255 to_argb 12@
0B6D: render 11@ = create_font "Arial" height 10 flags 0x0C
 
 
while true
wait 0
    if 0ab0: VK_F3
    then
        0af8: "Поиск оружия {00FF00}активирован" -1
        while 0ab0: VK_F3
        wait 0
        end
        repeat
        wait 0
        actor.StorePos($player_actor, 0@, 1@, 2@)
        0AE3: 4@ = random_object_near_point 0@ 1@ 2@ in_radius 40.0 find_next 1 //IF and SET
        0984: 5@ = object 4@ model
            if 5@ == #AK47
            then
            0400: store_coords_to 6@ 7@ 8@ from_object 4@ with_offset 0.0 0.0 0.0
            0B55: convert_3D_coords 6@ 7@ 8@ to_screen 9@ 10@
            0B6F: render font 11@ draw_text "AK-47" pos 9@ 10@ color 12@
            end
        until 0ab0: VK_F3
        0af8: "Поиск оружия {FF0000}деактивирован" -1
    end
end
Но он вызывал краши после нажатия F3 (выводило в чат текст, что он включен, и после этого краш).
Я решил его переписать под себя, но учесть та-же, когда идет анализ объектов в зоне, то выскакивают варнинги и по итогу краш.
Мой код:
{$CLEO}
wait 5000
while true
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AE3: 4@ = random_object_near_point 0@ 1@ 2@ in_radius 100.0 find_next 0
0984: 5@ = object 4@ model
wait 2500
if 5@ == 355
then
    08B1: set_night_vision state 1 // как проверка что нашелся объект
    end
end
Можете подсказать как исправить краши?
 

Bili Djin

Активный
137
67
Здраствуйте, решил написать свой скрипт который проверяет в радиусе все объекты и если есть нужный то выполняется код, как основа был использован этот код.
Основа:
{$CLEO}
{$NOSOURCE}
const
VK_F3 = 0x72
end
 
if
not 29@ = samp.Base()
then
end_thread
else
    while not samp.Available()
    wait 100
    end
end
 
0B67: render a 255 r 255 g 255 b 255 to_argb 12@
0B6D: render 11@ = create_font "Arial" height 10 flags 0x0C
 
 
while true
wait 0
    if 0ab0: VK_F3
    then
        0af8: "Поиск оружия {00FF00}активирован" -1
        while 0ab0: VK_F3
        wait 0
        end
        repeat
        wait 0
        actor.StorePos($player_actor, 0@, 1@, 2@)
        0AE3: 4@ = random_object_near_point 0@ 1@ 2@ in_radius 40.0 find_next 1 //IF and SET
        0984: 5@ = object 4@ model
            if 5@ == #AK47
            then
            0400: store_coords_to 6@ 7@ 8@ from_object 4@ with_offset 0.0 0.0 0.0
            0B55: convert_3D_coords 6@ 7@ 8@ to_screen 9@ 10@
            0B6F: render font 11@ draw_text "AK-47" pos 9@ 10@ color 12@
            end
        until 0ab0: VK_F3
        0af8: "Поиск оружия {FF0000}деактивирован" -1
    end
end
Но он вызывал краши после нажатия F3 (выводило в чат текст, что он включен, и после этого краш).
Я решил его переписать под себя, но учесть та-же, когда идет анализ объектов в зоне, то выскакивают варнинги и по итогу краш.
Мой код:
{$CLEO}
wait 5000
while true
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AE3: 4@ = random_object_near_point 0@ 1@ 2@ in_radius 100.0 find_next 0
0984: 5@ = object 4@ model
wait 2500
if 5@ == 355
then
    08B1: set_night_vision state 1 // как проверка что нашелся объект
    end
end
Можете подсказать как исправить краши?
Память выдели под переменные
 
  • Нравится
Реакции: Foxy01

Foxy01

Известный
283
125
Лучше дай мне свой вк, потому что это надолго(
(или другую соц. сеть)

Теперь:
{$CLEO}
wait 5000
// первые 3 это float, поэтому не включал сюда
0ac8: alloc 3@ size 100024
0ac8: alloc 4@ size 100024 // цифры такие поставил для эксперемента)
while true
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AE3: 3@ = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 0
0984: 4@ = object 3@ model
wait 2500
if 5@ == 355
then
    08B1: set_night_vision state 1
    end
end

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x4789F9

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x486DDF

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x486DDF

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x571A00

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x0

краш
 

Bili Djin

Активный
137
67
Лучше дай мне свой вк, потому что это надолго(
(или другую соц. сеть)

Теперь:
{$CLEO}
wait 5000
// первые 3 это float, поэтому не включал сюда
0ac8: alloc 3@ size 100024
0ac8: alloc 4@ size 100024 // цифры такие поставил для эксперемента)
while true
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AE3: 3@ = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 0
0984: 4@ = object 3@ model
wait 2500
if 5@ == 355
then
    08B1: set_night_vision state 1
    end
end

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x4789F9

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x486DDF

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x486DDF

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:13] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x571A00

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x0

[21:48:14] Warning(s007): Exception 0xC0000005 at 0x0

краш
 
  • Нравится
Реакции: Foxy01

KievStar

Участник
142
13
Объясните как сделать чтобы скрипт сам выставлял тариф на арз, я уже час понять не могу как это реализовать