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

RedBoxWhite

Известный
337
27
Да. Юзай эти опкоды


0BD7: samp get_dialog_text 0@
0AF8: samp add_message_to_chat 1@ color 2@
Собственно сделал вот так:
CLEO:
if 0BD7: samp get_dialog_text "Уровень: %d" 1@
then
0AF8: samp add_message_to_chat "Ваш игровой уровень: %d" 1@ color 0x3366FF
end
Но не работает, как правильно будет?
 

01EG

Известный
Проверенный
639
364
Что я пытаюсь сделать ?
Я пытаюсь поставить RPC_Hook на чат и при получением RPC_Chat , который будет равняться нужной мне строке, я напишу определенную фразу. И так это часть кода, я решил не писать CLEO, а попытался только реализовать функцию хука текста из чата.
CLEO:
const
RPC_CHAT = 101
end

0BE3: raknet setup_incoming_rpc_hook @RPC

:RPC
while true
wait 0
    0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    if 0@ == RPC_CHAT
    then
    0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM
    0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_BYTE
    alloc 3@ 32
    0BE8: raknet bit_stream 1@ read_array 3@ size 2@
    0C1E: array 3@ element 2@ el_size 1 = 0
        if 3@ == "Привет"
        then
        say "И вам"
        else
        free 3@
        end
    end  
end
1) Это пиздец
2) Я даже не могу понять где мне не хватило параметров
3) Я думаю, что, даже, если бы я скомпилировал все это, то меня бы крашнуло.
4) Что не так ?

Вкратце, я хочу научиться хукать определенный текст из чата, как мне это сделать ? Возможно у кого-то есть готовый код ?
 

Vovich

HOT
Проверенный
717
197
Крч чёт я либо очень туплю, либо хер пойми чё за фигня.
При попытке сравнить координаты мои и 3D текста, получается жопа как на скрине:
mRsOvhN2tJg.jpg
Ну и по сути он отображает мне тексты по всей карте, все бы ладно, но пиздец как медленно, раз там в секунд 5 появится какой-то текст, хотя у меня в стриме их 10+ , в чем дело?
Сам код ниже:
Код:
{$CLEO .cs}
0000:
repeat
wait 150
until 0afa:
0BE3: raknet setup_incoming_rpc_hook @DHOOK
0B34: samp register_client_command "test" to_label @cmd
while true
wait 0
end

:cmd
if 23@ == 0
then
23@ = 1
chatmsg "Активирован" -1
else
chatmsg "Деактивирован" -1
23@ = 0
end
SAMP.CmdRet()

:DHOOK
IF 23@ == 1
THEN
 0BE5: raknet 0@ = get_hook_param 1
 IF 0@ == 36
 THEN
 0BE5: raknet 1@ = get_hook_param 0
 0BE7: raknet 4@ = bit_stream_read 1@ type 4 // коорд X
 0BE7: raknet 5@ = bit_stream_read 1@ type 4 // коорд y
 ////////
 00A0: store_actor $PLAYER_ACTOR position_to 12@ 13@ 14@
 0509: 17@ = distance_between_XY 12@ 13@ and_XY 4@ 5@
 chatmsg "%f" -1 17@
 alloc 11@ 1337
 0BF4: raknet bit_stream 1@ decode_string 11@ size 1337
 chatmsg 11@ -1
 free 11@
 end 
end
0BE0: raknet hook_ret TRUE
 

hnnssy

Известный
Друг
2,684
2,768
Что я пытаюсь сделать ?
Я пытаюсь поставить RPC_Hook на чат и при получением RPC_Chat , который будет равняться нужной мне строке, я напишу определенную фразу. И так это часть кода, я решил не писать CLEO, а попытался только реализовать функцию хука текста из чата.
CLEO:
const
RPC_CHAT = 101
end

0BE3: raknet setup_incoming_rpc_hook @RPC

:RPC
while true
wait 0
    0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    if 0@ == RPC_CHAT
    then
    0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM
    0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_BYTE
    alloc 3@ 32
    0BE8: raknet bit_stream 1@ read_array 3@ size 2@
    0C1E: array 3@ element 2@ el_size 1 = 0
        if 3@ == "Привет"
        then
        say "И вам"
        else
        free 3@
        end
    end 
end
1) Это пиздец
2) Я даже не могу понять где мне не хватило параметров
3) Я думаю, что, даже, если бы я скомпилировал все это, то меня бы крашнуло.
4) Что не так ?

Вкратце, я хочу научиться хукать определенный текст из чата, как мне это сделать ? Возможно у кого-то есть готовый код ?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 2000

alloc 4@ 256
memset 4@ 0 256

0BE3: raknet setup_incoming_rpc_hook @ClientMessage

while true
wait 0
end

:ClientMessage
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if
1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT  // color
    0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT  // strLen
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
    0C0F: array 4@ element 3@ = 0x00
    if
    0C18: 7@ = strstr string1 4@ string2 "Привет"
    then
        say "И вам"
    end                                                    
end
0BE0: raknet hook_ret true
 
  • Нравится
Реакции: 01EG