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

LokoLoyKoo

Новичок
103
8
Как сделать, чтобы при вводе команды(Пример: /id 45), в чат писало ник и ид игрока(Пример: lox[45]).
Часть кода желательно бы.
 

hnnssy

Известный
Друг
2,684
2,752
Как сделать, чтобы при вводе команды(Пример: /id 45), в чат писало ник и ид игрока(Пример: lox[45]).
Часть кода желательно бы.
CLEO:
{$CLEO}
0000:

wait 2000

0B34: reg_cmd "id" @cmd

while true
wait 0
end

:cmd
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if 0B23:  samp is_player_connected 2@
    then
        0B36: samp 3@ = get_player_nickname 2@
        0Af8: msg_to_chat "%s[%d]" 0xFFCC00 3@ 2@
    end
end
0B43: cmd_ret
 

enziweee

Участник
28
32
короче ребят, нужна очень важная штучка)
дайте опкоды или уже готовые строчки чтоб актёр смог нажимать виртуальные клавиши в свёрнутом режиме игры, хотя бы в окне
расцелую того, кто даст ответ
 
1,417
1,030
короче ребят, нужна очень важная штучка)
дайте опкоды или уже готовые строчки чтоб актёр смог нажимать виртуальные клавиши в свёрнутом режиме игры, хотя бы в окне
расцелую того, кто даст ответ
смотря какие клавиши надо нажимать, можно через 0b56, можно напрямую через синхру, вот например отправка пробела через синхру, вызывается через 0ab1, но не все клавиши отправляются так.
CLEO:
:key
0AC8: 29@ = allocate_memory_size 68
0C11: memset destination 29@ value 0 size 68
0B2B: samp 10@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0BBA: samp store_player 10@ onfoot_data 29@
0C0D: struct 29@ offset 4 size 2 = 8
0BC0: samp send_onfoot_data 29@
0AC9: free_allocated_memory 29@
ret 0
 

enziweee

Участник
28
32
смотря какие клавиши надо нажимать, можно через 0b56, можно напрямую через синхру, вот например отправка пробела через синхру, вызывается через 0ab1, но не все клавиши отправляются так.
CLEO:
:key
0AC8: 29@ = allocate_memory_size 68
0C11: memset destination 29@ value 0 size 68
0B2B: samp 10@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0BBA: samp store_player 10@ onfoot_data 29@
0C0D: struct 29@ offset 4 size 2 = 8
0BC0: samp send_onfoot_data 29@
0AC9: free_allocated_memory 29@
ret 0
мне нужно чтобы с интервалами в 1000 мс нажимались w,a,s,d
 
1,417
1,030
мне нужно чтобы с интервалами в 1000 мс нажимались w,a,s,d
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:

0B34: samp register_client_command "cmd" to_label @cmd


WHILE TRUE
wait 0
    IF 0@ == 1
    THEN
        0373: set_camera_directly_behind_player
        0B56: set_game_key 1 state -128
        wait 0
        0B56: set_game_key 1 state 128
        wait 0
        0B56: set_game_key 0 state -128
        wait 0
        0B56: set_game_key 0 state 128
        wait 1000
    END
END

:cmd
0B12: 0@ = 0@ XOR 1
IF 0@ == 1
THEN
    printf "~g~ON" 700
ELSE
    printf "~r~OFF" 700
END
0B43: samp cmd_ret
 

enziweee

Участник
28
32
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:

0B34: samp register_client_command "cmd" to_label @cmd


WHILE TRUE
wait 0
    IF 0@ == 1
    THEN
        0373: set_camera_directly_behind_player
        0B56: set_game_key 1 state -128
        wait 0
        0B56: set_game_key 1 state 128
        wait 0
        0B56: set_game_key 0 state -128
        wait 0
        0B56: set_game_key 0 state 128
        wait 1000
    END
END

:cmd
0B12: 0@ = 0@ XOR 1
IF 0@ == 1
THEN
    printf "~g~ON" 700
ELSE
    printf "~r~OFF" 700
END
0B43: samp cmd_ret


работает в свёрнутом режиме?
 

D3.Pheonix

🎹
Модератор
2,821
1,600
Зачем строку форматируешь ещё раз? А со stristr вроде все нормально, юзаешь мб неправильно
CLEO:
alloc 11@ 150
alloc 19@ 60
0AF4: 19@ = read_string_from_ini_file "cleo\config.ini" section "sad" key "asd"
0C29: 11@ = stristr string1 2@ string2 19@
free 19@
free 11@
Суть не меняется. Если я в ini напишу капсом, то и искать будет только капс, иначе не реагирует
 

romanblinov2013

RB_PRO
Проверенный
212
196

CLEO:
0B34: samp register_client_command "fl1" to_label @Noname_222 // Команда
// ***************
:Noname_222 // Сама функция
0AC8: 7@ = allocate_memory_size 128
0B35: samp 7@ = get_last_command_params
0AF5: write_string 7@ to_ini_file "cleo\FLooder1.ini" section "RB_PRO" key "1"
0AF8: samp add_message_to_chat "[FLooder1]: Вы установили новое флуд-значение: %s" color -1 7@
0AC9: free_allocated_memory 7@
0B43: samp cmd_ret
CLEO:
0AC8: 1@ = allocate_memory_size 128
0AF4: 1@ = read_string_from_ini_file "cleo\FLooder1.ini" section "RB_PRO" key "1"
0AF9: samp say_msg "%s" 1@
IN - Ввод
out - вывод[/SPOILER]

Можно сделать секундомер по убыванию, типа таймер, если таймер равен 0, то появляется другой текст. Несколько вещей набросал, может поможет. Посмотрите примеры *фотки*
CLEO:
{$CLEO cs.}
0000: NOP
wait 2000

Samp.Available()

0B6D: render 0@ = create_font "Arial" height 18 flags 13

:MainLoop
0001: wait 0 ms
0AD3: 3@ = format "Осталось: %.1f" @ // 
0B6F: render font 0@ draw_text 3@ pos 50 400 color 0xFFFFFFFF //
Тут я удаляю и снова создаю текстдрав, однако можно реализовать через обновление текст текстдрава
CLEO:
for 1@ = 10 to 0 step 1
0C48: samp textdraw 0@ create 1@ pos 3.0 150.0
0C52: samp textdraw 0@ set_letter_size 1.0 3.5 color 0xFF6666FF // Доп-опкод
0C4A: samp textdraw 0@ set_align 1
0001: wait 1000 ms
0C5E: samp textdraw 0@ delete
end
 
Последнее редактирование модератором:

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У меня без выделения памяти умирает gta_sa.exe.......
 
  • Нравится
Реакции: romanblinov2013

romanblinov2013

RB_PRO
Проверенный
212
196
Без 0AC8: тоже норм. Выделять память под 0B35 тоже самое что выделять память под 0B36 - глупо. Сампфункс сам выделяет память под эти опкоды
Для надёжности всегда выделяю)
МБ я педант.