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

Freym

Известный
488
204
Самое интересное, что такой вопрос задавали уже сотню тысяч раз. Поиском пользоваться не учили?
1) Вот вариант через хук, если нужен МОМЕНТАЛЬНЫЙ ответ и чтоб 100 процентно среагировало
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

repeat
wait 500
until Samp.Available()

alloc 4@ 256
0c11: memset 4@ 0 256

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

:ClientMessage
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if and
29@ == 1
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: 8@ = strstr string1 4@ string2 "Привет"
    then
    0AF9: samp say_msg "И тебе привет"
    end                                            
end
0BE0: raknet hook_ret true
2) Еще как вариант получать последнюю строку из чата и сравнивать тоже через 0с18, но тут может быть косяк, если в один момент вылетит много строк чата в одну секунду и скрипт может не успеть прочитать, сам чаще юзаю второй способ, потому что лень ебаться с хуками, но если надо какое-то действие моментальное на строку, то лучше через рцп ее получать
CLEO:
SAMP.GetChatString(99, 7@, 0, 0, 0)

Спасибо)
 

astap_

Известный
Всефорумный модератор
626
601
Когда я пишу команду /rra то скрипт ищет в зоне стрима машину с 503id и прописывает команду /rr 503
CLEO может отправлять команды только на сервер. А /rr - это не серверная команда (как я понял, тебе для андровиры надо)
И если ты пишешь на метках, то then и end использовать не нужно

CLEO:
{$CLEO}
0000:

thread "astap"

:SAMPAVILABLE
wait 0
if
0AFA:  is_samp_available
jf @SAMPAVILABLE
0B34: samp register_client_command "rra" to_label @RRA
0BDE: pause_thread 0

:RRA
wait 0
0AFF: samp 1@ = car_handle_by_samp_vehicle_id 503 // получаем хендл кара по его ИД
if
0039:   1@ == 0 // если хендл равен 0, значит машины нет в зоне стрэма
jf @Car0 // а если НЕ равен 0, значит машины есть в зоне стрэма
0AF8: samp add_message_to_chat "Машина с ID 503 не найдена в зоне стрима" color 0xFFFFFF 
0B43: samp cmd_ret

:Car0
wait 0
0AF8: samp add_message_to_chat "Машина с ID 503 найдена в зоне стрима. Введите /rr 503 , чтобы взаимодействовать." color 0xFFFFFF
0B43: samp cmd_ret

Как проверить, есть ли на экране тексдрав с указанным ID?
Способ ниже не работает
CLEO:
:Label
wait 0
0@ = 420
if
0C5D: samp textdraw 0@ is_exists
jf @Label
0BCA: samp send_click_textdraw 0@
jump @Label
 
Последнее редактирование модератором:
  • Нравится
Реакции: клешь рояль

iTheHacker

Участник
46
13
ребят, как заменить диалог командой? то есть чтобы не открывать диалог, а просто сделать его командой и вбивать данные например /hajk id число ?
 

Freym

Известный
488
204
Как можно так сделать?
 

Вложения

  • cleo.png
    cleo.png
    250 KB · Просмотры: 100

iTheHacker

Участник
46
13
Всем привет, кто может помочь с тем написанием скрипта. Вообщем сам вопрос:

Как сделать чтобы вместо вбивания в диалог значения можно было через команду вбивать не открывая диалог? Я вообще в клео не шарю, начинаю ток

Вот например есть диалог который надо открыть через меню какое-либо и потом вводить данные, мне бы просто заменить это все на простую команду.

Диалог:
[ввод данных]

заменить на комманду в чат

/команда [данные которые надо вбить в диалог]

то есть команда без открытия диалога будет вбивать в него данные, напрямую отправляя данные...

Я конечно могу сам попробовать, но решил попросить помощи у экспертов...
 

Ma[x].

Известный
185
13
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

repeat
wait 0
until Samp.Available()
0BE1: raknet setup_outcoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
if 0@ == RPC_DEATH
then
say "text"
end
0BE0: raknet hook_ret true
Помогите код работает хорошо только кикает при смерти и как появляюсь на спавне кикает нахуй с сервера анти-читом
 
Последнее редактирование модератором:

dUnKiK

Участник
43
18
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

repeat
wait 0
until Samp.Available()
0BE1: raknet setup_outcoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
if 0@ == RPC_DEATH
then
say "text"
end
0BE0: raknet hook_ret true
Помогите код работает хорошо только кикает при смерти и как появляюсь на спавне кикает нахуй с сервера анти-читом
В чём вообще суть скрипта?
 

Ma[x].

Известный
185
13
Ты там хук неправильно установил, посмотри вроде 2 и 3 уроки, можешь просто исходник чекнуть, он есть в описании под видео.
Наверн вместо outcoming нужно поставить incoming не?

Код:
0BE3: raknet setup_incoming_rpc_hook @iRPC

Вот этот поставить вместо 8 строки в коде моем