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

AXE_CAMERON

Участник
66
0
Код:
while samp.Available()
wait 0
if
0AB0:   key_pressed 106
then
0AB1: call_scm_func @1
end
end

:1
wait 0
if
0AB0:  not key_pressed 106
then
wait 5
0C72: set_virtual_key 16 down true
wait 0
0C72: set_virtual_key 16 down false
else
ret 0
end
Что не так, я хочу чтобы при нажатии одной и той же клавиши скрипт активировался/деактивировался
 

astap_

Известный
Всефорумный модератор
626
597
Можно ли как-то сделать в Sanny Builder 3, сделать так, чтобы актёр, например на аризоне, прописал команду в чат /eat и съел чипсы? Может быть и команду писать не надо, главное чтобы он их съел. Возможно ли это?
конечно
CLEO:
say "/eat"
если тебе для простоя в афк, то я уже делал такое (хавает рыбу) - https://blast.hk/threads/26876/#post-274904
Код:
while samp.Available()
wait 0
if
0AB0:   key_pressed 106
then
0AB1: call_scm_func @1
end
end

:1
wait 0
if
0AB0:  not key_pressed 106
then
wait 5
0C72: set_virtual_key 16 down true
wait 0
0C72: set_virtual_key 16 down false
else
ret 0
end
Что не так, я хочу чтобы при нажатии одной и той же клавиши скрипт активировался/деактивировался
не в обиду, но это дичь просто.
Цикл while у тебя сразу же будет скипнут, потому что клео работает ещё до загрузки сампа. Делай проверку так:
CLEO:
while not SAMP.Available() {1 ВАРИАНТ} // цикл работает, пока САМП не загружен
    wait 0
end

repeat {2 ВАРИАНТ}  // цикл работает, пока САМП не загрузится
    wait 0
until SAMP.Available()

while true {3 ВАРИАНТ}  // цикл работает всегда, но если самп загрузится, мы выходим из цикла.
    wait 0
    if SAMP.Available()
    then
        break
    end
end
Активацию/деактивацию проще всего делать таким образом:
CLEO:
while true
    wait 0
    if 0c89: 49 // 1
    then
        chatmsg "Скрипт был активирован!" -1
      
        repeat
            wait 0
            print "working" 20
            // code
        until 0c98: 49 // цикл будет работать, пока мы снова не нажмём клавишу "1"
      
        chatmsg "Скрипт был {ff0000}деактивирован!" -1
    end
end
 
Последнее редактирование:

хуесос)

Известный
263
63
@astap_
Помоги, в scanff не шарю надо достать из диалога время, можешь помочь?
 

Вложения

  • sa-mp-802.png
    sa-mp-802.png
    6.6 KB · Просмотры: 220

Jonathan_Griffin

Новичок
2
0
Парни, помогите как сделать так что бы клео после того как ты его активировал командой клацал за тебя кнопку например пробел, а если написать команду ещё раз то кнопка переставала клацаться
 

хуесос)

Известный
263
63
Парни, помогите как сделать так что бы клео после того как ты его активировал командой клацал за тебя кнопку например пробел, а если написать команду ещё раз то кнопка переставала клацаться
CLEO:
{$CLEO}
0000: NOP

repeat
wait 0
until 0AFA:

0b34: "beg" @cmd


while true
wait 0
if 0@ == 1
then
0C72: set_virtual_key 32 down true
wait 30
0C72: set_virtual_key 32 down false
end
end


:cmd
if 0@ == 0
then
0@ = 1
chatmsg "Скрипт активирован" -1
else
0@ = 0
chatmsg "Скрипт деактивирован" -1
end
cmdret
 

madim

Новичок
7
0
Парни, подскажите пожалуйста мне, что я опустил в коде или что я написал лишнего. При запуске игры, выполняется сразу label :Noname_21, несмотря на то, что у меня активация скрипта идёт через команду /gojrat. Заранее спасибо парни!
CLEO:
{$CLEO}
0000: NOP
0B34: samp register_client_command "gojrat" to_label @Noname_175 

:Noname_21
0001: wait 0 ms
0AF9: samp say_msg "/eat" 
0C72: set_virtual_key 13 true 
0001: wait 30 ms
0C72: set_virtual_key 13 false
0001: wait 3000 ms
0C72: set_virtual_key 27 true
0001: wait 30 ms
0C72: set_virtual_key 27 false 
0001: wait 6500 ms
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Жратва каждые 30 минут! Не пропускай момент!" color -1
wait 1800000
0002: jump @Noname_21

:Noname_175
0B12: 1@ = 1@ XOR 1
00D6: if
0039:   1@ == 1
004D: jump_if_false @Noname_282
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{4C903E} активирован{FFFFFF}!" color -1 
0002: jump @Noname_21

:Noname_282
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{DC4545} деактивирован{FFFFFF}!" color -1 
0B43: samp cmd_ret
 

хуесос)

Известный
263
63
Провр
Парни, подскажите пожалуйста мне, что я опустил в коде или что я написал лишнего. При запуске игры, выполняется сразу label :Noname_21, несмотря на то, что у меня активация скрипта идёт через команду /gojrat. Заранее спасибо парни!
CLEO:
{$CLEO}
0000: NOP
0B34: samp register_client_command "gojrat" to_label @Noname_175

:Noname_21
0001: wait 0 ms
0AF9: samp say_msg "/eat"
0C72: set_virtual_key 13 true
0001: wait 30 ms
0C72: set_virtual_key 13 false
0001: wait 3000 ms
0C72: set_virtual_key 27 true
0001: wait 30 ms
0C72: set_virtual_key 27 false
0001: wait 6500 ms
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Жратва каждые 30 минут! Не пропускай момент!" color -1
wait 1800000
0002: jump @Noname_21

:Noname_175
0B12: 1@ = 1@ XOR 1
00D6: if
0039:   1@ == 1
004D: jump_if_false @Noname_282
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{4C903E} активирован{FFFFFF}!" color -1
0002: jump @Noname_21

:Noname_282
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{DC4545} деактивирован{FFFFFF}!" color -1
0B43: samp cmd_ret
Проверку поставь что кмд использавана.
 

astap_

Известный
Всефорумный модератор
626
597
Спасибо!

Как сделать так, чтобы скрипт нажал левой кнопкой мышы по координатам x = 735 y = 465, а потом x = 854 y =464. Помогите пж!
тебе нужен клик по текстдраву? юзай samp send_click_textdraw id
@astap_
Помоги, в scanff не шарю надо достать из диалога время, можешь помочь?
получай текст диалога через 0bd7, а дальше через sscanf доставай то что тебе нужно. поройся в моих постах, я человеку кидал расписанный исходних с этой штукой.
я отъехал до 11 января, поэтому кодом помочь не могу тебе.
Парни, подскажите пожалуйста мне, что я опустил в коде или что я написал лишнего. При запуске игры, выполняется сразу label :Noname_21, несмотря на то, что у меня активация скрипта идёт через команду /gojrat. Заранее спасибо парни!
CLEO:
{$CLEO}
0000: NOP
0B34: samp register_client_command "gojrat" to_label @Noname_175

:Noname_21
0001: wait 0 ms
0AF9: samp say_msg "/eat"
0C72: set_virtual_key 13 true
0001: wait 30 ms
0C72: set_virtual_key 13 false
0001: wait 3000 ms
0C72: set_virtual_key 27 true
0001: wait 30 ms
0C72: set_virtual_key 27 false
0001: wait 6500 ms
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Жратва каждые 30 минут! Не пропускай момент!" color -1
wait 1800000
0002: jump @Noname_21

:Noname_175
0B12: 1@ = 1@ XOR 1
00D6: if
0039:   1@ == 1
004D: jump_if_false @Noname_282
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{4C903E} активирован{FFFFFF}!" color -1
0002: jump @Noname_21

:Noname_282
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{DC4545} деактивирован{FFFFFF}!" color -1
0B43: samp cmd_ret
после регистрации команды ставь поток на паузу, но это не единственная ошибка. в теле команды нельзя юзать бесконечные циклы и задержки.
 
  • Нравится
Реакции: хуесос)

AXE_CAMERON

Участник
66
0
конечно
CLEO:
say "/eat"
если тебе для простоя в афк, то я уже делал такое (хавает рыбу) - https://blast.hk/threads/26876/#post-274904

не в обиду, но это дичь просто.
Цикл while у тебя сразу же будет скипнут, потому что клео работает ещё до загрузки сампа. Делай проверку так:
CLEO:
while not SAMP.Available() {1 ВАРИАНТ} // цикл работает, пока САМП не загружен
    wait 0
end

repeat {2 ВАРИАНТ}  // цикл работает, пока САМП не загрузится
    wait 0
until SAMP.Available()

while true {3 ВАРИАНТ}  // цикл работает всегда, но если самп загрузится, мы выходим из цикла.
    wait 0
    if SAMP.Available()
    then
        break
    end
end
Активацию/деактивацию проще всего делать таким образом:
CLEO:
while true
    wait 0
    if 0c89: 49 // 1
    then
        chatmsg "Скрипт был активирован!" -1
     
        repeat
            wait 0
            print "working" 20
            // code
        until 0c98: 49 // цикл будет работать, пока мы снова не нажмём клавишу "1"
     
        chatmsg "Скрипт был {ff0000}деактивирован!" -1
    end
end
У меня там сначала был while для проверки на загрузку сампа, я просто отрывок кода без этого цилка кинул, а за активацию/деактивацию спасибо))
 

Jonathan_Griffin

Новичок
2
0
Всем привет! Помогите пожалуйста как узнать цифру в конце этого опкода 0BCA: samp send_click_textdraw 2192
 

хуесос)

Известный
263
63
Пишу я скрипт, сохраняю, но весь код меняется вообще на другой. Пишу конструкцией, меняется на метки. Как исправить?

1) ДО сохранения (тоесть я её сохранил именно в таком виде)
Скрин

CLEO:
{$CLEO}
0000:

while not SAMP.Available()
    wait 0
end

while true
wait 0
    if and
    0ab0: 16
    0ab0: 56
    then
    0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{4C903E} активирован{FFFFFF}!" color -1
    end
end


2) После сохранение ( вообще другие значения)
Скрин

CLEO:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:Noname_2
8AFA:   not is_samp_available
004D: jump_if_false @Noname_22
0001: wait 0 ms
0002: jump @Noname_2

:Noname_22
0001: wait 0 ms
00D6: if and
0AB0:   key_pressed 16
0AB0:   key_pressed 56
004D: jump_if_false @Noname_117
0AF8: samp add_message_to_chat "{CA8D31}[Objiralovka]{FFFFFF} Скрипт{4C903E} активирован{FFFFFF}!" color -1

:Noname_117 // Note: a jump to this label will crash the game
Когда запускаешь скрит в сб выбирай показать без изменений, тоесть - да