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

4el0ve4ik

Известный
Всефорумный модератор
1,548
1,339
Воть так!

CLEO:
{$CLEO}

repeat
wait 0
until samp.Available()
0AC6: 0@ = label @Main offset

repeat
wait 0
    if 0ADC:   test_cheat "d"
    then
    0B3B: samp show_dialog id 0 caption "Оки-токи" text 0@ button_1 "OK" button_2 "ВИХАД!!!1" style 2
        if 0B3C:  samp is_dialog_responded id 0 button 1@ list_item 2@ input_text 0
        then
            if 1@ == 1
            then
                if 2@ == 0
                then
                chatmsg "Ура сука!"
                end
            
                if 2@ == 1
                chatmsg "Все работает спасибо Jerry!"
                end
            end
        end
    end
until false

:Main
hex
    "ПУНКТ АДИН!" A // Перенос на новою строку
    "АДМЕН ПИТУХ" 0 // Заканчиваем!
end // hex
:D:D:D мне понравилось действие при условии 2"собака" == 1)))
 

Perojek)0

Известный
205
3
Для опокода 018C, где можно посмотреть список звуков?
Или с какого по какой идут номера звуков?
Ибо крашит часто
018C: play_sound 0@ at 0.0 0.0 0.0
 

iTz_WEEZY

Известный
298
85
Для опокода 018C, где можно посмотреть список звуков?
Или с какого по какой идут номера звуков?
Ибо крашит часто
018C: play_sound 0@ at 0.0 0.0 0.0
Нашел где-то я как то раз программку, со списком звуков и возможностью их воспроизведения.
Но ее у меня не осталось и не помню где ее нашел.
 

Perojek)0

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

repeat
    wait 2000
until 0AFA:  is_samp_available

0B34: samp register_client_command "sound" to_label @sound

while true
wait 0
end

:sound
0AC8: 5@ = allocate_memory_size 260
0B35: samp 5@ = get_last_command_params
0AD4: 6@ = scan_string 5@ format "%d" 7@
018C: play_sound 7@ at 0.0 0.0 0.0
0AC9: free_allocated_memory 5@
0B43: samp cmd_ret
Ввожу /sound 17000 и крашит
что не так?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Потому что опкод 0B35 не читает значение переменной, а присваивает ей указатель на память где хранится параметры введенной команды. Смысл того, что ты выделил память до этого опкода?
 

Trashmas

Новичок
40
0
Что бы при вводе команды читало 3 строки из ini и выводило в чат.
Сначала проверка переменной 10@, т.е. флаг скрипта, включается от команды. Потом проверка есть ли файл nfile.ini, потом читает строку LEAD=, если там on, идет дальше, проверка что введено после команды, если 1 или invite то начинается основная часть скрипта, где и проблемы. Первую строку читает и выводит правильно, а вторую не хочет, зависает. После отправки каждой строки идет цикл с проверкой есть ли эта строка в чате, если есть - цикл прерывается и скритп идет дальше.
Не пойму в чем проблема:

CLEO:
:BINDER
thread "BINDER"

0B34: samp register_client_command "mq" to_label @GOVERNMENT_STRINGS

repeat
wait 0

//-------------LEADER STRINGS---------------
if 10@ == true
then
    if 0AAB:   file_exists "CLEO\nfile.ini"
    then
    0AF4: 2@s = read_string_from_ini_file "CLEO\nfile.ini" section "BINDER" key "LEAD"
        if 0C18: 3@ = strstr string1 2@s string2 "on"
        then
        SAMP.IsCommandTyped(1@)
        0AD4: 2@ = scan_string 1@ format "%d" 3@
            if or
            3@ == 1
            0C21: stricmp string1 1@ string2 "invite"
            then
            alloc 2@ 256
            0AF4: 2@ = read_string_from_ini_file "CLEO\nfile.ini" section "BINDER" key "GSTR_1"
                repeat
                wait 100
                chatmsg "%s" -1 2@

                0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
                until 0C18: 5@ = strstr string1 4@ string2 2@

            0AF4: 2@ = read_string_from_ini_file "CLEO\nfile.ini" section "BINDER" key "GSTR_2"
                repeat
                wait 100
                chatmsg "%s" -1 2@

                0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
                until 0C18: 5@ = strstr string1 4@ string2 2@

            0AF4: 2@ = read_string_from_ini_file "CLEO\nfile.ini" section "BINDER" key "GSTR_3"
                repeat
                wait 100
                chatmsg "%s" -1 2@

                0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
                until 0C18: 5@ = strstr string1 4@ string2 2@

            free 2@
            jump @LEADER_STRINGS_END
            end
        end
    else
    chatmsg "Îøèáêà. Ôàéë íå íàéäåí. {FFFFFF}(nfile.ini)" 0xed2711
    jump @LEADER_STRINGS_END
    end
else
jump @LEADER_STRINGS_SKIP
end

:GOVERNMENT_STRINGS
10@ = true
SAMP.CmdRet()

:LEADER_STRINGS_END
10@ = false

:LEADER_STRINGS_SKIP


until false

После первой строки зависает, хотя задержки в циклах есть.[/code]

Проблема актуальна.
 

Atikin

Новичок
3
0
Подскажите пожалуйста.
Есть скрипт,работающий по нажатию на клавишу,и отключающийся после отпускания клавиши.
Как сделать так,чтобы некоторое время (я ещё не знаю какое >:o),после того как отпустить эту клавишу,скрипт продолжал работать?
 

01EG

Известный
Проверенный
631
346
Подскажите пожалуйста.
Есть скрипт,работающий по нажатию на клавишу,и отключающийся после отпускания клавиши.
Как сделать так,чтобы некоторое время (я ещё не знаю какое >:o),после того как отпустить эту клавишу,скрипт продолжал работать?
Все очень просто, здесь игра циклов. Подумай сам

Здесь код работает, пока ты держишь клавишу 1

CLEO:
while true
wait 0
  if 0ab0: 49
  then
  print "1" 1
  end
end
Объяснение к первому:
b89f7d238c7a6a1ed67128e7b2f67e5c.png


Здесь код работает, пока ты не нажмешь один раз клавишу "1", а потом для деактивация еще раз клавишу "1"
CLEO:
while true
wait 0
    if 0ab0: 49
    then
      wait 500
        repeat
        wait 0
        print "1" 1
        until 0ab0: 49
    wait 500
    end
end

Обьяснение ко второму:
42ba592d72af6d79bec943dbfef36585.png


P.s. вообще есть еще несколько вариаций активации, но упустим их. Например через другие циклы или через низкоуровневые циклы(конструкции, точнее метки)
185c1e4f2828710ee652030773550f5b
 
Последнее редактирование модератором:

hnnssy

Известный
Друг
2,684
2,754
Подскажите пожалуйста.
Есть скрипт,работающий по нажатию на клавишу,и отключающийся после отпускания клавиши.
Как сделать так,чтобы некоторое время (я ещё не знаю какое >:o),после того как отпустить эту клавишу,скрипт продолжал работать?
это зависит от сути самого скрипта
если он циклически выполняет какое-то действие, то реализация примерно такова:
CLEO:
while true
wait 0
    if key 1
    then
        while key 1
        wait 0
        // code
        end
        33@ = 0
        repeat
        wait 0
        // code
        until 33@ >= 3000 // 3000 - 3 sec
    end
end
 

Garrus

Известный
159
20
Такой вопросик. Почему такая конструкция на клео версии 4.1 вызывает краш, а на 4.3 все в порядке? Получается, в клео 4.1 нужно обязательно возвращать результат (ожидаемый параметр)?
Код:
if 0AB1: call_scm_func @test 0 return_ 0@
then
...
end

:test
1@ = 1
if 1@ == 0
then
0AC8: 0@ = allocate_memory_size 10
0C11: memset destination 0@ value 0x0 size 10
0485:  return_true
ret 1 0@
else
059A:  return_false
ret 0
end