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

NookieONE

Участник
128
1
Не работает. Помогите.
CLEO:
{$CLEO .cs}

0000:

0C6A: 25@ = create_custom_thread_at_label @tpp

while not SAMP.Available()
wait 100
end   
0B34: samp register_client_command "tp" to_label @tp

while true
    wait 0
end

:tp
        IF 0AB6: store_target_marker_coords_to 1@ 2@ 3@
        THEN   
        04E4: refresh_game_renderer_at 1@ 2@ 3@
        03CB: set_rendering_origin_at 1@ 2@ 3@
        Camera.SetAtPos(1@, 2@, 3@)
        02CE: 3@ = ground_z_at 1@ 2@ 999.0
        Actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
        ELSE
        chatmsg "Íå ïîñòàâëåíà ìåòêà íà êàðòå" -1
        END
SAMP.CmdRet


:tpp

if and
    0AB0:   key_pressed 109
    8B21:   not samp is_chat_opened
    8B4C:   not samp is_dialog_active -1
    then
        IF 0AB6: store_target_marker_coords_to 1@ 2@ 3@
        THEN   
        04E4: refresh_game_renderer_at 1@ 2@ 3@
        03CB: set_rendering_origin_at 1@ 2@ 3@
        Camera.SetAtPos(1@, 2@, 3@)
        02CE: 3@ = ground_z_at 1@ 2@ 999.0
        Actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
        ELSE
        chatmsg "Íå ïîñòàâëåíà ìåòêà íà êàðòå" -1
        END
    end
 

san0

Известный
Друг
411
267
Не работает. Помогите.
CLEO:
{$CLEO .cs}

0000:

while not SAMP.Available()
    wait 100
end 
0B34: samp register_client_command "tp" to_label @tp

while true
    wait 0
    if and
    0C89:  key_just_pressed 109
    8B21:   not samp is_chat_opened
    8B4C:   not samp is_dialog_active -1
    then
        gosub @PerformTeleport
    end
end

:tp
gosub @PerformTeleport
0B43: samp cmd_ret
  
:PerformTeleport
IF 0AB6: store_target_marker_coords_to 1@ 2@ 3@
THEN 
    04E4: refresh_game_renderer_at 1@ 2@ 3@
    03CB: set_rendering_origin_at 1@ 2@ 3@
    Camera.SetAtPos(1@, 2@, 3@)
    02CE: 3@ = ground_z_at 1@ 2@ 999.0
    Actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
ELSE
    chatmsg "Не поставлена метка на карте" -1
END
return
 

NookieONE

Участник
128
1
CLEO:
{$CLEO .cs}

0000:

while not SAMP.Available()
    wait 100
end
0B34: samp register_client_command "tp" to_label @tp

while true
    wait 0
    if and
    0C89:  key_just_pressed 109
    8B21:   not samp is_chat_opened
    8B4C:   not samp is_dialog_active -1
    then
        gosub @PerformTeleport
    end
end

:tp
gosub @PerformTeleport
0B43: samp cmd_ret
 
:PerformTeleport
IF 0AB6: store_target_marker_coords_to 1@ 2@ 3@
THEN
    04E4: refresh_game_renderer_at 1@ 2@ 3@
    03CB: set_rendering_origin_at 1@ 2@ 3@
    Camera.SetAtPos(1@, 2@, 3@)
    02CE: 3@ = ground_z_at 1@ 2@ 999.0
    Actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
ELSE
    chatmsg "Не поставлена метка на карте" -1
END
return
Спасибо, а можешь сказать почему мой не работал.
Добавляю новый поток и игра не запускается
 

Kristyan

Известный
165
16
Как мне решить проблему? Подскажите пожалуйста.

v1wDMvt.png
 

jasd241

Новичок
29
1
как сделать систему рандома, чтоб к примеру бежал к определенным координатам из их перечня
 

jasd241

Новичок
29
1
CLEO:
:TextDrawClicker
0C72: set_virtual_key 13 down true
wait 500
0C72: set_virtual_key 13 down false
04D7: set_actor $PLAYER_ACTOR locked true
repeat
wait 0
0C72: set_virtual_key 13 down true
wait 500
0C72: set_virtual_key 13 down false
0BCA: samp send_click_textdraw 19576
wait 3000
until 0C5D: samp textdraw 19576 is_exists
04D7: set_actor $PLAYER_ACTOR locked false
0BCA: samp send_click_textdraw 0
ret 0
должен кликать по текстдраву, пока он существует, но когда он нажимает enter, и появляется меню, с кнопкой текстдрава, то он на нее не жмет, а просто стоит
 

Dark_Knight

Me, me and me.
Друг
4,070
2,086
Во первых. У тебя тут не верный ид текстдрава.
CLEO:
0BCA: samp send_click_textdraw 19576
Количество тексдравов всего 2304(2048 глобальных и 256 чисто для игрока). Тебе надо передавать ид от 0 до 255. Нажатие виртуальных клавиш тебе здесь не нужно.
 

NookieONE

Участник
128
1
Если уровень игрока 0-4 -- скрипт пытается выполнить сразу две команды
Если уровень 5+ -- скрипт выполняет только вторую команду
Как пофиксить первую часть?
CLEO:
:test
Samp.IsCommandTyped(0@)
if
0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if
        Samp.IsPlayerConnected(2@)
    then
        3@ = Samp.GetPlayerScore(2@)
            if 3@ <= 4
            then
                say "/Êîìàíäà1 %d" 2@
            end
           
            if 3@ >= 5
            then
                say "/Êîìàíäà2 %d" 2@
            end
            else
                chatmsg "Èãðîê ñ ID: %d íå íàéäåí" -1 2@
            end     
end   
Samp.CmdRet()
 

jasd241

Новичок
29
1
Во первых. У тебя тут не верный ид текстдрава.
CLEO:
0BCA: samp send_click_textdraw 19576
Количество тексдравов всего 2304(2048 глобальных и 256 чисто для игрока). Тебе надо передавать ид от 0 до 255. Нажатие виртуальных клавиш тебе здесь не нужно.
а где можно посмотреть их список, а то я нигде не нашел?
 

jasd241

Новичок
29
1
Во первых. У тебя тут не верный ид текстдрава.
CLEO:
0BCA: samp send_click_textdraw 19576
Количество тексдравов всего 2304(2048 глобальных и 256 чисто для игрока). Тебе надо передавать ид от 0 до 255. Нажатие виртуальных клавиш тебе здесь не нужно.
мне нужно, чтоб он зашел в меню с текст дравом, а потом нажал на нем кнопку и потом вышел из меню
 

Kristyan

Известный
165
16
есть ли способ распознать ид текстдрава?
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0afa:
0B6D: render 5@ = create_font "Arial" height 6 flags 5


WHILE TRUE
wait 0
    FOR 0@ = 0 to 3048
        IF 0C5D: samp textdraw 0@ is_exists
        THEN
            0C5B: samp textdraw 0@ get_pos 1@ 2@
            0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
            alloc 3@ 128
            alloc 4@ 130
            0C5A: samp textdraw 0@ get_string_to 3@ 
            format 4@ "[%d] %s" 0@ 3@
            0B6F: render font 5@ draw_text 4@ pos 1@ 2@ color -1
            free 3@
            free 4@
        END
    END
END
 

NookieONE

Участник
128
1
Если уровень игрока 0-4 -- скрипт пытается выполнить сразу две команды
Если уровень 5+ -- скрипт выполняет только вторую команду
Как пофиксить первую часть?
CLEO:
:test
Samp.IsCommandTyped(0@)
if
0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if
        Samp.IsPlayerConnected(2@)
    then
        3@ = Samp.GetPlayerScore(2@)
            if 3@ <= 4
            then
                say "/Êîìàíäà1 %d" 2@
            end
          
            if 3@ >= 5
            then
                say "/Êîìàíäà2 %d" 2@
            end
            else
                chatmsg "Èãðîê ñ ID: %d íå íàéäåí" -1 2@
            end    
end  
Samp.CmdRet()