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

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
CLEO:
model.Load(#NRG500)   // загрузили модель мопеда
actor.StorePos($player_actor, 1@, 2@, 3@) // получили свою позицию
00A5: 0@ = create_car #NRG500 at 1@ 2@ 3@ // создали мопед
036A: put_actor $player_actor in_car 0@   // тпхнулись в нево
car.PutAt(0@, 0.0, 0.0, 0.0)              // тпхнулись куда надо
actor.PutAt($player_actor, 1@, 2@, 3@)    // вышли с нево
00A6: destroy_car 0@                      // удалили
model.Destroy(#NRG500)                    // выгрузили

хуй знает мб работает не проверял
 
  • Нравится
Реакции: romanblinov2013

D3.Pheonix

🎹
Модератор
2,867
1,641
Помогите, что не так с кодом? Я хотел чтоб когда я поставил метку на карту и прописал /tpa то создавался визуальный мопед и меня тп-хало ,а потом я просто вставал с мопеда и все. Это как бы обход анти air break на нубо рп но не суть! Как только я ввожу /tpa мой персонаж тп-хается на грува с бутылкой и походкой сиджея!
CLEO:
{$CLEO .cs}
0000: NOP

repeat
wait 0
until Samp.Available()
0B34: samp register_client_command "tpa" to_label @tp

while true
wait 0
    if
        0@ == 1
    then
         0AB6: store_target_marker_coords_to 6@ 7@ 8@
          actor.StorePos($player_actor, 1@, 2@, 3@)
           Model.Load(522)
            038B: load_requested_models
             00A5: 0@ = create_car 522 at 1@ 2@ 3@
               036A: put_actor $player_actor in_car 0@
               car.PutAt(0@, 6@, 7@, 8@)
               wait 300
                actor.StorePos($player_actor, 1@, 2@, 3@)
               0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 1@ 2@ 3@
              02EB: restore_camera_with_jumpcut
             00A6: destroy_car 0@
            model.Destroy(522)
           0@ = 0
        chatmsg "teleport done" 0xff2dba09
    end
end

:tp
0A8D: 31@ = read_memory 0xBA6774 size 4 virtual_protect 0
   if    075C:   marker 31@ enabled
     then
        0@ = 1
     else
        chatmsg "target marker not found" 0xFFFF0000
   end
Samp.CmdRet()
 
Последнее редактирование:

Lord

Новичок
236
42
CLEO:
while true
wait 0
    if 0@ == 1
    then
        for 2@ = 0 to 300 step 1
            if 0B23:  samp is_player_connected 2@
            then
                0B65: samp 3@ = player 2@ score
                if and
                3@ > -1
                3@ < 5
                then
                    say "/cmd %d text." 2@
                end
            end
            0@ = 0
        end
    end
end

Почему отправляет текст игроку выше указанного уровня?
Т.е. играет игрок до 5 score, выходит, заходит игрок выше указанного и ему тоже отправляется сообщение?
 

T1cKz

Известный
595
245
Как сделать коллизию машин? Без активации без ничего, мне нужно встроить её в код. Вызывать буду всё равно через 0c6a
 

Kristyan

Известный
165
16
Ну как бы у меня выдаётся краш, а не таймер, может кто-то мне помочь?. Проверка на @show_near_004 работает.
CLEO:
:cmd
    SAMP.IsCommandTyped(20@)
        if
        0AD4: 20@ = scan_string 20@ format "%d" 21@
        then
           if and
           0B20: samp 1@ = actor_handle_by_samp_player_id 21@
           056D: actor 1@ defined
         jf @show_near_004
     gosub @timer_5_sec
    0B36: samp 1@ = get_player_nickname 21@

    0AF9: samp say_msg "%s, blbla." 1@
    0AF9: samp say_msg "blbl"

        print "~r~Type again!" 1000
else
    print "~r~/cmd<id>" 2000
end
SAMP.CmdRet()

:show_near_004
print "~r~Player is not near of you!" 2000
jump @cmd
SAMP.CmdRet


:timer_5_sec
5@ = 4
            0C74: 2@ = create_timer_interval 1000 on_label @timer
            repeat
            wait 0
                0C7C: 4@ = get_timer 2@ time_left
                0016: 4@ /= 100
                0AD1: show_formatted_text_highpriority "Time left: ~r~ %d.%d sec" time 100  5@ 4@
            until 8019: not 5@ > -1
            0C78: set_timer 2@ active false

return

:timer
5@ -= 1
cmdret
 

T1cKz

Известный
595
245
Ну как бы у меня выдаётся краш, а не таймер, может кто-то мне помочь?. Проверка на @show_near_004 работает.
CLEO:
:cmd
    SAMP.IsCommandTyped(20@)
        if
        0AD4: 20@ = scan_string 20@ format "%d" 21@
        then
           if and
           0B20: samp 1@ = actor_handle_by_samp_player_id 21@
           056D: actor 1@ defined
         jf @show_near_004
     gosub @timer_5_sec
    0B36: samp 1@ = get_player_nickname 21@

    0AF9: samp say_msg "%s, blbla." 1@
    0AF9: samp say_msg "blbl"

        print "~r~Type again!" 1000
else
    print "~r~/cmd<id>" 2000
end
SAMP.CmdRet()

:show_near_004
print "~r~Player is not near of you!" 2000
jump @cmd
SAMP.CmdRet


:timer_5_sec
5@ = 4
            0C74: 2@ = create_timer_interval 1000 on_label @timer
            repeat
            wait 0
                0C7C: 4@ = get_timer 2@ time_left
                0016: 4@ /= 100
                0AD1: show_formatted_text_highpriority "Time left: ~r~ %d.%d sec" time 100  5@ 4@
            until 8019: not 5@ > -1
            0C78: set_timer 2@ active false

return

:timer
5@ -= 1
cmdret
Перед "samp.cmdret()" не должно быть прыжков.
То есть, ты прыгаешь на метку в которой выполняешь команду, но с неё, не выполнив samp.cmdret, ты прыгаешь на другую!
Вот пример твоего кода:
Код:
:1 
wait 0
chatmsg "Это покажет в чат" 0xFFFFFFFF
jump @2
chatmsg "А это не покажет!" 0xFFFFFFFF

:2
chatmsg "А это покажет, а то нет, потому что к нему скрипт не дошёл" 0xFFFFFFFF
jump @1
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Kristyan

Известный
165
16
Перед "samp.cmdret()" не должно быть прыжков.
То есть, ты прыгаешь на метку в которой выполняешь команду, но с неё, не выполнив samp.cmdret, ты прыгаешь на другую!
Вот пример твоего кода:
Код:
:1
wait 0
chatmsg "Это покажет в чат" 0xFFFFFFFF
jump @2
chatmsg "А это не покажет!" 0xFFFFFFFF

:2
chatmsg "А это покажет, а то нет, потому что к нему скрипт не дошёл" 0xFFFFFFFF
jump @1

Не понял ничего... какие прыжки перед SAMP.cmdret() ??? gosub?, вот без прыжков создал, тоже вылетает
CLEO:
{$CLEO}
0000:
0B34: samp register_client_command "timer" to_label @cmd
0BDE: pause_thread 0@
:cmd
 SAMP.IsCommandTyped(20@)
    IF 0B61:  samp is_local_player_spawned
    THEN
        IF 0AD4: 20@ = scan_string 20@ format "%d" 21@
        THEN
         chatmsg "Wait 5 seconds!" -1     
5@ = 4 // ????? ???????
            0C74: 2@ = create_timer_interval 1000 on_label @timer
            repeat
            wait 0
                0C7C: 4@ = get_timer 2@ time_left
                0016: 4@ /= 100
                0AD1: show_formatted_text_highpriority "Time left: %d.%d sec" time 100  5@ 4@
            until 8019: not 5@ > -1
            0AD1: show_formatted_text_highpriority "Type again!" time 100
             say "%d" 21@
            0C78: set_timer 2@ active false   
        END  
    END
cmdret


:timer
5@ -= 1
cmdret

[/cleo]
 

T1cKz

Известный
595
245
Не понял ничего... какие прыжки перед SAMP.cmdret() ??? gosub?, вот без прыжков создал, тоже вылетает
CLEO:
{$CLEO}
0000:
0B34: samp register_client_command "timer" to_label @cmd
0BDE: pause_thread 0@
:cmd
 SAMP.IsCommandTyped(20@)
    IF 0B61:  samp is_local_player_spawned
    THEN
        IF 0AD4: 20@ = scan_string 20@ format "%d" 21@
        THEN
         chatmsg "Wait 5 seconds!" -1    
5@ = 4 // ????? ???????
            0C74: 2@ = create_timer_interval 1000 on_label @timer
            repeat
            wait 0
                0C7C: 4@ = get_timer 2@ time_left
                0016: 4@ /= 100
                0AD1: show_formatted_text_highpriority "Time left: %d.%d sec" time 100  5@ 4@
            until 8019: not 5@ > -1
            0AD1: show_formatted_text_highpriority "Type again!" time 100
             say "%d" 21@
            0C78: set_timer 2@ active false  
        END 
    END
cmdret


:timer
5@ -= 1
cmdret

[/cleo]
Сложно...
Просто делай по типу
Код:
{$CLEO}
0000:
//Начало нубо-быдло-тупого кода
0B34: samp register_client_command "timer" to_label @active
1@ = 0
repeat
wait 0
if 0@ == true
then
jump @1
end
until false

:active
wait 0
if 0@ == true
then
0@ = false
else
0@ = true
end
samp.cmdret()

:1
wait 1000
1@ += 1
printf "Timer: %d" 1000 1@
jump @1
Пусть это тупой код, но он работает
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как получить координаты 3D текста ? Пытался получить через опкод какие-то левые координаты получаю
CLEO:
0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 2@ position 3@ 4@ 5@ view_distance 6@ show_behind_walls 7@ attached_t
 

D3.Pheonix

🎹
Модератор
2,867
1,641
Как получить координаты 3D текста ?

CLEO:
while true
    for 0@ = 0 to 2048
    0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 2@ position 3@ 4@ 5@ view_distance 6@ show_behind_walls 7@ attached_to_player 8@ attached_to_vehicle 9@
        if
        0C29: 31@ = stristr string1 1@ string2 "text"
        then
            log "X%f Y%f Z%f" 3@ 4@ 5@
        end
    end
end

Так пробовал ? )
Эт если ты id не знаешь
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
CLEO:
while true
    for 0@ = 0 to 2048
    0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 2@ position 3@ 4@ 5@ view_distance 6@ show_behind_walls 7@ attached_to_player 8@ attached_to_vehicle 9@
        if
        0C29: 31@ = stristr string1 1@ string2 "text"
        then
            log "X%f Y%f Z%f" 3@ 4@ 5@
        end
    end
end

Так пробовал ? )
Эт если ты id не знаешь
Все получилось =) Косяк был в том что я забыл проверить что 3D текст в зоне стрима
 

Vlad Horii

Известный
Проверенный
310
172
Help me
CLEO:
:vc
0B35: samp 0@ = get_last_command_params
if 0AD4: 0@ = scan_string 0@ format "%d" 1@  
then
    if and     
    0029: 1@ >= 400
    8029: not 1@ >= 611
    then
    0AF8: "id is correct" -1
    while true
        wait 0
        if 0AFF: samp 2@ = car_handle_by_samp_vehicle_id 1@
            then
            0AF8: "good" -1    
            end 
        end
    end 
end  
0AC9: free_allocated_memory 0@       
samp.CmdRet()