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

Daim

Новичок
24
2
как сделать активацию на клавишу? з.ы. любую клавишу
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

Repeat
wait 0
Until 0AB0: 50

{0} 0C6A: 25@ = create_custom_thread_at_label @Noname1_776 -807 -608 -936 -959 -1092
{36} 0000: NOP
{38} wait 1750

{58} 0B34: samp register_client_command "reload" to_label @Noname1_565
:Noname1_73
{73} wait 0
{77} if and
{81} 00E1: player 0 pressed_key 6
{87} 31@ == 1
{94} jf @Noname1_280
{101} 0470: 9@ = actor $PLAYER_ACTOR current_weapon
{109} if
{113} not 9@ > 38
{120} jf @Noname1_280
{127} Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
{141} call @Noname1_435 2 9@ $PLAYER_ACTOR 9@
{160} 0AA6: call_method 5327216 struct 11989032 num_params 6 pop 0 3@v 6@v 2@ 1@ 0@ 1.0
{197} 0AA6: call_method 5327216 struct 11989032 num_params 6 pop 0 6@v 10@v 2@ 1@ 0@ 9@
{232} if
{236} 86BD: not no_obstacles_between 3@ 4@ 5@ and 6@ 7@ 8@ solid 0 car 0 actor 1 object 0 particle 0
{266} jf @Noname1_280
{273} SAMP.SetGameKeyState(17, 255)

:Noname1_280
{280} goto @Noname1_73

:Noname1_287
{287} 0B12: 31@ = 31@ XOR 1
{297} if

31@ == 1
jf @Noname1_377

0ACD: show_text_highpriority "TriGBot by On" time 1000

{370} goto @Noname1_433

:Noname1_377
0ACD: show_text_highpriority "TriGBot Off" time 1000

:Noname1_433
{433} SAMP.CmdRet

:Noname1_435
{435} 0A96: 2@ = actor 1@ struct
{443} 2@ += 1836
{451} 0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0
{463} 0085: 1@ = 0@ // (int)
{471} if
{475} 2@ == 2
{482} jf @Noname1_496
{489} 1@ += 25

:Noname1_496
{496} if
{500} 2@ == 3
{507} jf @Noname1_521
{514} 1@ += 36

:Noname1_521
{521} 1@ *= 112
{528} 1@ += 13150904
{538} 1@ += 8
{545} 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
{557} ret 1 1@

kek, активация на кнопку 2, готово))

Ребят, есть у кого клео, показывающее все входящие и исходящие хуки / рпц / пакеты?
p.s. id пакета или его название
 
Последнее редактирование модератором:

Daim

Новичок
24
2
Ребят, учу хуки, вопрос такой:
Можно ли отправленные и сохраненные рпц и пакеты отправить заново в том же виде?
Код:
:oRPC
0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
//0BF8: raknet 0@ = get_rpc_name 0@  
if and
      0ab0: 50
      0ab0: 51   
      0@ ==  RPC_SERVERCOMMAND
then
      0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
      //0AF8: samp add_message_to_chat 0@ color 0xFF0000
      0AF8: samp add_message_to_chat "Ïîõîäó ðîáèò" color 0xFF0000
end
if 
      0ab0: 49
Then
      0BE1: raknet setup_outcoming_rpc_hook 1@ // Какая тут команда нужна для отправки этой переменной, а не 0@
      // Так же и к пакетам нужен опкод))
End
//0B78: log "oRPC: %s" {oRPC}0@
0BE0: raknet hook_ret TRUE

:oPacket
0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
//0BF9: raknet 0@ = get_packet_name 0@
if and
      0ab0: 50
      0ab0: 51
      0@ == PACKET_VEHICLE_SYNC
then
       //0AF8: samp add_message_to_chat 0@ color 0xFF0000
       0BE5: raknet 2@ = get_hook_param {PARAM_PACKETID}1
end
if 
      0ab0: 49
Then
      0BE2: raknet setup_outcoming_packet_hook 2@
End
//0B78: log "oPacket: %s" {oPacket}0@
0BE0: raknet hook_ret TRUE

0a9a: умеет читать .cs файлы?
Вряд ли :\ Только ini, txt файлы вродь
 
Последнее редактирование модератором:

LUCHARE

Известный
Друг
545
688
Ребят, учу хуки, вопрос такой:
Можно ли отправленные и сохраненные рпц и пакеты отправить заново в том же виде?
Код:
:oRPC
0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
//0BF8: raknet 0@ = get_rpc_name 0@ 
if and
      0ab0: 50
      0ab0: 51  
      0@ ==  RPC_SERVERCOMMAND
then
      0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
      //0AF8: samp add_message_to_chat 0@ color 0xFF0000
      0AF8: samp add_message_to_chat "Ïîõîäó ðîáèò" color 0xFF0000
end
if
      0ab0: 49
Then
      0BE1: raknet setup_outcoming_rpc_hook 1@ // Какая тут команда нужна для отправки этой переменной, а не 0@
      // Так же и к пакетам нужен опкод))
End
//0B78: log "oRPC: %s" {oRPC}0@
0BE0: raknet hook_ret TRUE

:oPacket
0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
//0BF9: raknet 0@ = get_packet_name 0@
if and
      0ab0: 50
      0ab0: 51
      0@ == PACKET_VEHICLE_SYNC
then
       //0AF8: samp add_message_to_chat 0@ color 0xFF0000
       0BE5: raknet 2@ = get_hook_param {PARAM_PACKETID}1
end
if
      0ab0: 49
Then
      0BE2: raknet setup_outcoming_packet_hook 2@
End
//0B78: log "oPacket: %s" {oPacket}0@
0BE0: raknet hook_ret TRUE
Можно
CLEO:
0B8A: raknet send_rpc 1@ bit_stream 2@
0BC0: samp send_onfoot_data 0@
0BC1: samp send_incar_data 0@
0BC2: samp send_passenger_data 0@
0BC3: samp send_aim_data 0@
0BC4: samp send_bullet_data 0@
0BC5: samp send_trailer_data 0@
0BC6: samp send_unoccupied_data 0@
0BC7: samp send_spectator_data 0@

Ребят, учу хуки, вопрос такой:
Можно ли отправленные и сохраненные рпц и пакеты отправить заново в том же виде?
Код:
:oRPC
0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
//0BF8: raknet 0@ = get_rpc_name 0@ 
if and
      0ab0: 50
      0ab0: 51  
      0@ ==  RPC_SERVERCOMMAND
then
      0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
      //0AF8: samp add_message_to_chat 0@ color 0xFF0000
      0AF8: samp add_message_to_chat "Ïîõîäó ðîáèò" color 0xFF0000
end
if
      0ab0: 49
Then
      0BE1: raknet setup_outcoming_rpc_hook 1@ // Какая тут команда нужна для отправки этой переменной, а не 0@
      // Так же и к пакетам нужен опкод))
End
//0B78: log "oRPC: %s" {oRPC}0@
0BE0: raknet hook_ret TRUE

:oPacket
0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
//0BF9: raknet 0@ = get_packet_name 0@
if and
      0ab0: 50
      0ab0: 51
      0@ == PACKET_VEHICLE_SYNC
then
       //0AF8: samp add_message_to_chat 0@ color 0xFF0000
       0BE5: raknet 2@ = get_hook_param {PARAM_PACKETID}1
end
if
      0ab0: 49
Then
      0BE2: raknet setup_outcoming_packet_hook 2@
End
//0B78: log "oPacket: %s" {oPacket}0@
0BE0: raknet hook_ret TRUE
И советую посетить эту тему Информация - Гайд - Работа с RakNet хуками с помощью SAMPFUNCS (https://blast.hk/threads/17440/) или посмотреть видео даркпикселя про хуки, а-то в коде бред какой-то
 
Последнее редактирование модератором:

maxim241210

Известный
6
0
А можно ли как-то в опкоде 0AF5 в key использовать переменную? Если ставлю переменную то скрипт ломается.
Допустим мне нужно в key писать от 1 до 100 то как мне это сделать для ini файла
Код:
[Cg]
1=
2=
3=
И ТД.
 

kuleer

Участник
86
13
А можно ли как-то в опкоде 0AF5 в key использовать переменную? Если ставлю переменную то скрипт ломается.
Допустим мне нужно в key писать от 1 до 100 то как мне это сделать для ini файла
Код:
[Cg]
1=
2=
3=
И ТД.
Ини опкоды не принимают обычные переменные, только в таком виде: 1@v 2@v 3@v ... Под неё уже выделено некое кол-во памяти, не помню сколько.
 
  • Нравится
Реакции: maxim241210

BlackKnigga

Известный
BH Team
922
445
Под неё уже выделено некое кол-во памяти, не помню сколько.
1@v это указатель на переменную 1@. Все переменные в клео размером 4 байта, так что если писать больше четырех байт, данные попадают и в следующие переменные (2@,3@...)
 
  • Нравится
Реакции: maxim241210

maxim241210

Известный
6
0
1@v это указатель на переменную 1@. Все переменные в клео размером 4 байта, так что если писать больше четырех байт, данные попадают и в следующие переменные (2@,3@...)
А есть тема про такие переменные 1@v 1@s?
Хочю узнать больше, и как они переходят в другие переменные?
 

BlackKnigga

Известный
BH Team
922
445
  • Нравится
Реакции: maxim241210

Boyenerji

Известный
97
1
При ответе на сервере пишет "не флудите".
Как я понял он отправляет say много раз. Как можно исправить?

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:NOP


0BE3: raknet setup_incoming_rpc_hook @iRPC
0BDE: pause_thread 0

:iRPC
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE // DWORD color, DWORD strLen, char[] msg
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE9: raknet bit_stream 0@ reset_read_pointer
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
        0AC8: 4@ = allocate_memory_size 260
        0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
        0C1E: array 4@ element 3@ el_size 1 = 0
        0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
        0B36: samp 30@ = get_player_nickname 29@
        0AC8: 6@ = allocate_memory_size 30
        0AD3: 6@ = format "для %s[%d]" 30@ 29@
        IF
            0C29: 5@ = stristr string1 4@ string2 6@
        THEN
            for 15@ = 0 to 20
                wait 300
            end
            say "лол"
           
           
    END
    0BE9: raknet bit_stream 0@ reset_read_pointer
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 6@
END
0BE0: raknet hook_ret TRUE
 

kuleer

Участник
86
13
При ответе на сервере пишет "не флудите".
Как я понял он отправляет say много раз. Как можно исправить?

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:NOP


0BE3: raknet setup_incoming_rpc_hook @iRPC
0BDE: pause_thread 0

:iRPC
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE // DWORD color, DWORD strLen, char[] msg
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE9: raknet bit_stream 0@ reset_read_pointer
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
        0AC8: 4@ = allocate_memory_size 260
        0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
        0C1E: array 4@ element 3@ el_size 1 = 0
        0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
        0B36: samp 30@ = get_player_nickname 29@
        0AC8: 6@ = allocate_memory_size 30
        0AD3: 6@ = format "для %s[%d]" 30@ 29@
        IF
            0C29: 5@ = stristr string1 4@ string2 6@
        THEN
            for 15@ = 0 to 20
                wait 300
            end
            say "лол"
          
          
    END
    0BE9: raknet bit_stream 0@ reset_read_pointer
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 6@
END
0BE0: raknet hook_ret TRUE
Задержку после ответа сделай
 

Boyenerji

Известный
97
1
Задержку после ответа сделай

Мне нужно еще и отвечать с задержкой. Поставил цикл - не работает. Обычный wait перед say тоже не работает.

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:NOP


0BE3: raknet setup_incoming_rpc_hook @iRPC
0BDE: pause_thread 0

:iRPC
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE // DWORD color, DWORD strLen, char[] msg
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE9: raknet bit_stream 0@ reset_read_pointer
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
        0AC8: 4@ = allocate_memory_size 260
        0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
        0C1E: array 4@ element 3@ el_size 1 = 0
        0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
        0B36: samp 30@ = get_player_nickname 29@
        0AC8: 6@ = allocate_memory_size 30
        0AD3: 6@ = format "äëÿ %s[%d]" 30@ 29@
        IF
            0C29: 5@ = stristr string1 4@ string2 6@
        THEN
            for 15@ = 0 to 100
                wait 300
            end
            wait 2000
            say "ëîë"
           
           
           
    END
    0BE9: raknet bit_stream 0@ reset_read_pointer
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 6@
END
0BE0: raknet hook_ret TRUE
 

kuleer

Участник
86
13
Мне нужно еще и отвечать с задержкой. Поставил цикл - не работает. Обычный wait перед say тоже не работает.

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:NOP


0BE3: raknet setup_incoming_rpc_hook @iRPC
0BDE: pause_thread 0

:iRPC
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE // DWORD color, DWORD strLen, char[] msg
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE9: raknet bit_stream 0@ reset_read_pointer
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
        0AC8: 4@ = allocate_memory_size 260
        0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
        0C1E: array 4@ element 3@ el_size 1 = 0
        0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
        0B36: samp 30@ = get_player_nickname 29@
        0AC8: 6@ = allocate_memory_size 30
        0AD3: 6@ = format "äëÿ %s[%d]" 30@ 29@
        IF
            0C29: 5@ = stristr string1 4@ string2 6@
        THEN
            for 15@ = 0 to 100
                wait 300
            end
            wait 2000
            say "ëîë"
        
        
        
    END
    0BE9: raknet bit_stream 0@ reset_read_pointer
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 6@
END
0BE0: raknet hook_ret TRUE

Кстати, в хуке не работает задержки, точняк, я тупанул.

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:NOP


0BE3: raknet setup_incoming_rpc_hook @iRPC

while true
wait 0
if 5@ == 227
then
5@ = 0
say "text"
wait 1000
end
end


:iRPC
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE // DWORD color, DWORD strLen, char[] msg
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE9: raknet bit_stream 0@ reset_read_pointer
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
        0AC8: 4@ = allocate_memory_size 260
        0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
        0C1E: array 4@ element 3@ el_size 1 = 0
        0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
        0B36: samp 30@ = get_player_nickname 29@
        0AC8: 6@ = allocate_memory_size 30
        0AD3: 6@ = format "aey %s[%d]" 30@ 29@
        IF
            0C29: 5@ = stristr string1 4@ string2 6@
        THEN
       
            5@ = 227
            end
       
       
       
    END
    0BE9: raknet bit_stream 0@ reset_read_pointer
    0AC9: free_allocated_memory 4@
    0AC9: free_allocated_memory 6@
END
0BE0: raknet hook_ret TRUE
Вот так попробуй
 
Последнее редактирование модератором: