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

01EG

Известный
Проверенный
631
345
CLEO:
{$CLEO .cs}
0000: NOP

repeat
wait 0
until Samp.Available()

0B34: samp register_client_command "rra" to_label @1

:1
if 0AFF: samp 0@ = car_handle_by_samp_vehicle_id 503
then
    0ACD: show_text_highpriority "car 503 spizhen" time 2500
    0B43: samp cmd_ret
end
Крашит с кучей варнингов
1) После регистрации команды нужен бесконечный цикл или пауза.
2) 0AFF: не применяется в условии, ты получаешь хендл автомобиля по айди машины, а потом проверяешь существует ли машина
Короче, скажи хотя бы что ты хочешь сделать
Помогите, пишу самый простой скрипт, в итоге: при загрузке сампа зависает на самом экране загрузки и дальше вылет....
CLEO:
{$CLEO}
0000:

:label
wait 0
if
0AB0:   key_pressed 49
jf @Label
0AF9: samp say_msg "lol"
jump @Label
1) опкоды сф добавь в Санибилдер
2) Когда используешь опкоды из СФ, нужно проверять самп на инизиалицию
repeat
wait 500
until Samp.Available()
 

клешь рояль

Известный
1,255
551
1) После регистрации команды нужен бесконечный цикл или пауза.
2) 0AFF: не применяется в условии, ты получаешь хендл автомобиля по айди машины, а потом проверяешь существует ли машина
Короче, скажи хотя бы что ты хочешь сделать

1) опкоды сф добавь в Санибилдер
2) Когда используешь опкоды из СФ, нужно проверять самп на инизиалицию
repeat
wait 500
until Samp.Available()
Когда я пишу команду /rra то скрипт ищет в зоне стрима машину с 503id и прописывает команду /rr 503
 

Freym

Известный
487
203
Самое интересное, что такой вопрос задавали уже сотню тысяч раз. Поиском пользоваться не учили?
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
597
Когда я пишу команду /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

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

Вложения

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

iTheHacker

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

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

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

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

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

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

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

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

Ma[x].

Известный
184
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
Помогите код работает хорошо только кикает при смерти и как появляюсь на спавне кикает нахуй с сервера анти-читом
В чём вообще суть скрипта?