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

Thomas_Johnson

Известный
Проверенный
183
21
Как сделать, чтобы при вводе команды /cmd (пример) TAWER.
И в чат выводило "Ты TAWER"?
PHP:
{$CLEO .cs}
0000: NOP
while not SAMP.Available
wait 10
end
0B34: samp register_client_command "cmd" to_label @ccl

0BDE: 0
:ccl
0B35: samp 0@ = get_last_command_params
if
0AD4: 2@ = scan_string 0@ forma "%s" 1@ //IF and SET
then
    say "Ti %s" 1@
end
samp.CmdRet()
 
Последнее редактирование:
  • Нравится
Реакции: RedBoxWhite

DarkP1xel

Сила воли наше всё.
BH Team
3,637
5,024
1) Перед тем как используешь Samp Opcodes нужно проверить загружен ли SAMP (0AFA:)
Не всегда.


3) Зачем здесь 0b20 ?
Чтобы работать только с игроками которые в зоне стрима.


Еще 1 вопрос.
как получить id всех игроков вне зоны стрима?


CLEO:
{$CLEO}
0000:

REPEAT
0001: 0
UNTIL 0AFA:

WHILE TRUE
0001: 0
    FOR 0@ = 0 TO 1000 [STEP = 1]
        IF 0B23:  samp is_player_connected 0@
        THEN
            IF 8B20: NOT samp 1@ = actor_handle_by_samp_player_id 0@
            THEN 0B78: log "Player %d out of stream." {ID}0@
            END
        END 
    END
END
 
  • Нравится
Реакции: LeJohn

LeJohn

Новичок
3
0
Не всегда.



Чтобы работать только с игроками которые в зоне стрима.





CLEO:
{$CLEO}
0000:

REPEAT
0001: 0
UNTIL 0AFA:

WHILE TRUE
0001: 0
    FOR 0@ = 0 TO 1000 [STEP = 1]
        IF 0B23:  samp is_player_connected 0@
        THEN
            IF 8B20: NOT samp 1@ = actor_handle_by_samp_player_id 0@
            THEN 0B78: log "Player %d out of stream." {ID}0@
            END
        END
    END
END


Спасибо большое! Я твой подписчик кстати)
 

RedBoxWhite

Известный
337
27
Хорошо, а как сделать в команде /cmd 2 параметра, то есть пишу /cmd sda 123
И в 1-ую строку выдаёт "sda", а втоорую "123"
Вот так пробовал:
CLEO:
{$CLEO}
0000:           
wait 2000
0B34: samp register_client_command "cmd" to_label @jopa

while true
    wait 0
end

:jopa
0B35: samp 2@ 3@ = get_last_command_params
0AF8: "TEST: %s" color -1 2@
0AF8: "TEST: %i" color -1 3@
0B43: samp cmd_ret
 
Последнее редактирование:

BlackKnigga

Известный
BH Team
922
447
Хорошо, а как сделать в команде /cmd 2 параметра, то есть пишу /cmd sda 123
И в 1-ую строку выдаёт "sda", а втоорую "123"
Вот так пробовал:
CLEO:
{$CLEO}
0000:        
wait 2000
0B34: samp register_client_command "cmd" to_label @jopa

while true
    wait 0
end

:jopa
0B35: samp 2@ 3@ = get_last_command_params
0AF8: "TEST: %s" color -1 2@
0AF8: "TEST: %i" color -1 3@
0B43: samp cmd_ret
CLEO:
:jopa
0B35: samp 0@ = get_last_command_params
if
0AD4: 10@ = scan_string 0@ forma "%s %d" 1@ 2@ //IF and SET
then
    say "Ti %s" -1 1@
    say "Ti %d" -1 2@
end
samp.CmdRet()
 

DarkP1xel

Сила воли наше всё.
BH Team
3,637
5,024
Хорошо, а как сделать в команде /cmd 2 параметра, то есть пишу /cmd sda 123
И в 1-ую строку выдаёт "sda", а втоорую "123"
Вот так пробовал:
CLEO:
{$CLEO}
0000:          
wait 2000
0B34: samp register_client_command "cmd" to_label @jopa

while true
    wait 0
end

:jopa
0B35: samp 2@ 3@ = get_last_command_params
0AF8: "TEST: %s" color -1 2@
0AF8: "TEST: %i" color -1 3@
0B43: samp cmd_ret
В CLEO нельзя так делать
0B35: samp 2@3@ = get_last_command_params


CLEO:
:jopa
0B35: samp 0@ = get_last_command_params
if
0AD4: 10@ = scan_string 0@ forma "%s %d" 1@ 2@ //IF and SET
then
    say "Ti %s" -1 1@
    say "Ti %d" -1 2@
end
samp.CmdRet()
Нельзя сканировать строку на строку.
 

BlackKnigga

Известный
BH Team
922
447
В CLEO нельзя так делать
0B35: samp 2@3@ = get_last_command_params



Нельзя сканировать строку на строку.
Так в 0@ не строка же. И еще косяк в том что нужно было строку в 1@v закинуть. Буфер то нельзя. И еще в say я зачем то цвет вставил.. :monkey:
Вот рабочий код:
CLEO:
{$CLEO .cs}

0000: NOP
0001: wait 2000 ms
0B34: samp register_client_command "cmd" to_label @Noname_30

:Noname_19
0001: wait 0 ms
0002: jump @Noname_19

:Noname_30
0B35: samp 0@ = get_last_command_params

0AD4: 10@ = scan_string 0@ format "%s %d" 1@v 2@ 
0AF9: samp say_msg "Ti %s" 1@v
0AF9: samp say_msg "Ti %d" 2@ 
0B43: samp cmd_ret
 

RedBoxWhite

Известный
337
27
Вот рабочий код:
Не крашит* Я случайно 2 скрипт забыл удалить) Но в этом скрипте в конце закорючку какую-то выдаёт.
UPD: Когда ввожу /cmd TEEEEEST, то выдаёт всё нормально, но просто рандомное число выдаёт (ну это норма, но мне надо чтобы моё число было (окей,вводим)). Вводим /cmd TEEEEEST 228 (Выводм TEEE*закорючка*, а потом уже число). То есть если более 4 символов в 1 строке, то выдаёт на 5 закорючку...
 
Последнее редактирование:

Thomas_Johnson

Известный
Проверенный
183
21
Не крашит* Я случайно 2 скрипт забыл удалить) Но в этом скрипте в конце закорючку какую-то выдаёт.
UPD: Когда ввожу /cmd TEEEEEST, то выдаёт всё нормально, но просто рандомное число выдаёт (ну это норма, но мне надо чтобы моё число было (окей,вводим)). Вводим /cmd TEEEEEST 228 (Выводм TEEE*закорючка*, а потом уже число). То есть если более 4 символов в 1 строке, то выдаёт на 5 закорючку...
Память надо освобождать потому что
alloc 228@ 64 на 64 символа