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

D3.Pheonix

🎹
Модератор
2,867
1,643
Как получить все id игроков с определённым цветом клиста?
Перебираешь все id через for, проверяешь на цвет , если совпадает - записываешь id например в файл, смотря, что тебе надо

Перебирать - цикл for
Получить цвет - 0B37
Запись в файл - 0A9A, 0AD9
 
  • Нравится
Реакции: клешь рояль

Buhani4

Новичок
26
0
Проблема с написанием клео, в котором способ активации - команда. Пишу скрипт с активацией команды, и когда ставлю wait 0 в цикле while true игру крашит варнингами при загрузке, вылетает около 10-12 варнингов за мс., а если поставлю не wait 0, а выше, то варнинги идут с указанной задержкой и все равно крашит, когда загрузятся 10-12 варнингов.
Так со всеми скриптами этого типа. Укажите на ошибку.

Код:
{$CLEO}
0000:

repeat
wait 0
until samp.Available()

0B34: samp register_client_command "noname_2" to_label @noname_2

:noname_3
while true
wait 0
if
33@ = true
then
jump @noname_1
else_jump @noname_3
samp.CmdRet()


:noname_1
wait 0
if and
actor.Driving($PLAYER_ACTOR)
key_down 82
else_jump @noname_3
03C0: 2@ = actor $PLAYER_ACTOR car
00AA: store_car 2@ position_to 3@ 4@ 5@
wait 50
00AB: put_car 2@ at 3@ 4@ 5@ 0.0
wait 1500
jump @noname_1


:noname_2
wait 0
if
33@ = false
then
33@ = true
printf "activated" 1000
else
33@ = false
"deactivated" 1000
jump @noname_4
end
end
 

ehxqu

Известный
Проверенный
177
155
Проблема с написанием клео, в котором способ активации - команда. Пишу скрипт с активацией команды, и когда ставлю wait 0 в цикле while true игру крашит варнингами при загрузке, вылетает около 10-12 варнингов за мс., а если поставлю не wait 0, а выше, то варнинги идут с указанной задержкой и все равно крашит, когда загрузятся 10-12 варнингов.
Так со всеми скриптами этого типа. Укажите на ошибку.

CLEO:
{$CLEO}
0000:

repeat
wait 0
until samp.Available()

0B34: samp register_client_command "noname_2" to_label @noname_2

:noname_3
while true
wait 0
if
33@ = true
then
jump @noname_1
else_jump @noname_3
samp.CmdRet()


:noname_1
wait 0
if and
actor.Driving($PLAYER_ACTOR)
key_down 82
else_jump @noname_3
03C0: 2@ = actor $PLAYER_ACTOR car
00AA: store_car 2@ position_to 3@ 4@ 5@
wait 50
00AB: put_car 2@ at 3@ 4@ 5@ 0.0
wait 1500
jump @noname_1


:noname_2
wait 0
if
33@ = false
then
33@ = true
printf "activated" 1000
else
33@ = false
"deactivated" 1000
jump @noname_4
end
end

а ни че что у тебя таймер в 33@ и через опкод 00AB: put_car 2@ at 3@ 4@ 5@ 0.0 ты выводишь 5 значений, а там 4?

на
CLEO:
{$CLEO .cs}
0000:

repeat
    wait 0
until 0AFA: is_samp_available

0B34: samp register_client_command "activate" to_label @activate

while true
    wait 0
    if 31@ == 1
    then
        if and
        0AB0: key_pressed 82 //key "R"
        00DF: actor $PLAYER_ACTOR driving
        then
            //Действие
            03C0: 0@ = actor $PLAYER_ACTOR car
            00AA: store_car 0@ position_to 1@ 2@ 3@
            00AB: put_car 0@ at 1@ 2@ 0.0
            wait 1000
        end
    end
end

:activate
0B12: 31@ = 31@ XOR 1
if 31@ == 1
then printf "activated" 1000
end
if 31@ == 0
then printf "deactivated" 1000
end
0B43: samp cmd_ret
 
  • Нравится
Реакции: hnnssy

Buhani4

Новичок
26
0
0B12: 31@ = 31@ XOR 1 - опкод меняет значение 31@ с 1 на 0? Как работает вообще опкод 0B12: 2@ = 0@ XOR 1@
 

хуесос)

Известный
263
64
Как сделать такое диалоговое меню?
 

Вложения

  • пвапово.PNG
    пвапово.PNG
    4.5 KB · Просмотры: 261

Buhani4

Новичок
26
0
Небольшая проблема. Закомментировав эту часть кода у меня перестала крашить игра:
Код:
:check
wait 0
    if 0AAB:   file_exists "CLEO\settings_221.ini"
    then
    0AF0: 4@ = get_int_from_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"
        else
        0AF1: write_int "82" to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"
    end

P.S. Помогите, хотел сделать так: идёт проверка на присутствие ini файла, если же он есть, то из строки в 4@ берется цифра (номер клавиши), если же нету, то создается ini файл с цифрой (номер клавиши) 82, тем самым я хотел сделать смену клавиши для скрипта через ini, использовав потом key_down 4@

Небольшая проблема. Закомментировав эту часть кода у меня перестала крашить игра:
Код:
:check
wait 0
    if 0AAB:   file_exists "CLEO\settings_221.ini"
    then
    0AF0: 4@ = get_int_from_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"
        else
        0AF1: write_int "82" to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"
    end

P.S. Помогите, хотел сделать так: идёт проверка на присутствие ini файла, если же он есть, то из строки в 4@ берется цифра (номер клавиши), если же нету, то создается ini файл с цифрой (номер клавиши) 82, тем самым я хотел сделать смену клавиши для скрипта через ini, использовав потом key_down 4@

Понял свою ошибку...

0AF1: write_int "82" to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY" - 82 (ид клавиши) не надо было брать в " "
т.е. правильный вариант: 0AF1: write_int 82 to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"



Как разделить текст на строчки в диалоге? Где-то вычитал, мол использовать \t, 0x9 - куда не ставил, не выходит.
Код:
0B3B: samp show_dialog id 420 caption "dialog" text "text 1 text 2 text 3" button_1 "CLOSE" button_2 "CLOSE" style 0

И как сделать одну кнопку в диалоге, а не 2?
 

клешь рояль

Известный
1,255
550
Небольшая проблема. Закомментировав эту часть кода у меня перестала крашить игра:
Код:
:check
wait 0
    if 0AAB:   file_exists "CLEO\settings_221.ini"
    then
    0AF0: 4@ = get_int_from_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"
        else
        0AF1: write_int "82" to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"
    end

P.S. Помогите, хотел сделать так: идёт проверка на присутствие ini файла, если же он есть, то из строки в 4@ берется цифра (номер клавиши), если же нету, то создается ini файл с цифрой (номер клавиши) 82, тем самым я хотел сделать смену клавиши для скрипта через ini, использовав потом key_down 4@



Понял свою ошибку...

0AF1: write_int "82" to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY" - 82 (ид клавиши) не надо было брать в " "
т.е. правильный вариант: 0AF1: write_int 82 to_ini_file "cleo\settings_221.ini" section "KEY_SETTINGS" key "KEY"



Как разделить текст на строчки в диалоге? Где-то вычитал, мол использовать \t, 0x9 - куда не ставил, не выходит.
Код:
0B3B: samp show_dialog id 420 caption "dialog" text "text 1 text 2 text 3" button_1 "CLOSE" button_2 "CLOSE" style 0

И как сделать одну кнопку в диалоге, а не 2?
0B3B: samp show_dialog id 420 caption "dialog" text "text 1 text 2 text 3" button_1 "CLOSE" style 0
А перенос строки вроде /n
Dialog Styles - SA-MP Wiki(https://sampwiki.blast.hk/wiki/Dialog_Styles)