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

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
701
Ребят, учу хуки, вопрос такой:
Можно ли отправленные и сохраненные рпц и пакеты отправить заново в том же виде?
Код:
: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
447
Под неё уже выделено некое кол-во памяти, не помню сколько.
1@v это указатель на переменную 1@. Все переменные в клео размером 4 байта, так что если писать больше четырех байт, данные попадают и в следующие переменные (2@,3@...)
 
  • Нравится
Реакции: maxim241210

maxim241210

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

BlackKnigga

Известный
BH Team
922
447
  • Нравится
Реакции: 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
Вот так попробуй
 
Последнее редактирование модератором: