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

astap_

Известный
Всефорумный модератор
626
601
как закрепить игрока на водительском месте? чтобы например на дрп на 1 лвле садился в мопед и меня с него не викидывало
сервер может выкидывать тебя из тачки по разному, поэтому нужно игнорировать все эти рпс:
4BfT8QU.png
 

Magov1733

Новичок
20
0
Привет, есть скрипт с кодом:
Код:
{$CLEO .cs}

{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0B34: samp register_client_command "fn" to_label @fn
0B34: samp register_client_command "rn" to_label @rn
0B34: samp register_client_command "bkn" to_label @bkn
while true
wait 0
end

:fn
0B35: samp 0@ = get_last_command_params
0AD4: 3@ = scan_string 0@ format "%s" 5@s
if 3@ > 0
then
say "/f (( %s ))" 0@
else
chatmsg "Используйте: /fn [нон-рп сообщение]" color 0xD6CFD6
end
SAMP.CmdRet()

:rn
0B35: samp 1@ = get_last_command_params
0AD4: 4@ = scan_string 1@ format "%s" 6@s
if 4@ > 0
then
say "/r (( %s ))" 1@
else
chatmsg "Используйте: /rn [нон-рп сообщение]" color 0xD6CFD6
end
SAMP.CmdRet()

:bkn
0B35: samp 1@ = get_last_command_params
0AD4: 4@ = scan_string 1@ format "%s" 6@s
if 4@ > 0
then
say "/bk (( %s ))" 1@
else
chatmsg "Используйте: /bkn [нон-рп сообщение]" color 0xD6CFD6
end
SAMP.CmdRet()
Надо поменять bkn на psn.
Пробовал сам, но в итоге когда компилирую и захожу в ГТА, получается такое:
OfA_xVDkduU.jpg
 

astap_

Известный
Всефорумный модератор
626
601
Привет, есть скрипт с кодом:
Код:
{$CLEO .cs}

{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0B34: samp register_client_command "fn" to_label @fn
0B34: samp register_client_command "rn" to_label @rn
0B34: samp register_client_command "bkn" to_label @bkn
while true
wait 0
end

:fn
0B35: samp 0@ = get_last_command_params
0AD4: 3@ = scan_string 0@ format "%s" 5@s
if 3@ > 0
then
say "/f (( %s ))" 0@
else
chatmsg "Используйте: /fn [нон-рп сообщение]" color 0xD6CFD6
end
SAMP.CmdRet()

:rn
0B35: samp 1@ = get_last_command_params
0AD4: 4@ = scan_string 1@ format "%s" 6@s
if 4@ > 0
then
say "/r (( %s ))" 1@
else
chatmsg "Используйте: /rn [нон-рп сообщение]" color 0xD6CFD6
end
SAMP.CmdRet()

:bkn
0B35: samp 1@ = get_last_command_params
0AD4: 4@ = scan_string 1@ format "%s" 6@s
if 4@ > 0
then
say "/bk (( %s ))" 1@
else
chatmsg "Используйте: /bkn [нон-рп сообщение]" color 0xD6CFD6
end
SAMP.CmdRet()
Надо поменять bkn на psn.
Пробовал сам, но в итоге когда компилирую и захожу в ГТА, получается такое:
OfA_xVDkduU.jpg
настройки SB > Форматирование > Регистр букв > "как есть"
Ребят, не пойму в чём проблема. Не работает задержка(т.е. wait ? и 0001: wait ? ms) У меня есть 3 переменные, 1-ая - она отвечает за регистрацию команды, а затем переход на следующую переменную, 2-ую - там скрипт должен писать в чат слова, которые я указал заранее, а потом уже включать 3-ую переменную, которая будет активироваться только после написания слов, но у меня всё иначе, сначала активируется 2-ая переменная, а потом 1-ая. Пытался ставить задержку, то же самое, помогите пожалуйста, если можно покажите примерный код решения проблемы.
код. мы не экстрасенсы
 

astap_

Известный
Всефорумный модератор
626
601
CLEO:
<{$CLEO}

0000: NOP


:startuem
0001: wait 0 ms
0AFA: is_samp_available
004D: jump_if_false @startuem
0B34: samp_register_client_command "(Тут типо активация)" to_label @func1
0AF8: samp add_message_to_chat "(тут текст)" color R G B 0xFFA500
0BDE: pause_thread 0

:func1
0AF9: samp say_msg "(команда с рп отыгровкой)"
jump @func2

:func2
0001: wait 1000 ms (тут я пробовал задержку поставить, не робит)
0AF8: samp add_message_to_chat "privet" color R G B 0xFFA500
0B43: samp cmd_ret>
Тоесть сначала выполняется func2, а потом уже func1, а должно получиться наоборот.
в теле команды задержки игнорируются.
решение:
CLEO:
0b34: "cmd" @cmd
// в данном случае ставить поток на паузу не нужно!

while true
    wait 0
    if 31@ == true
    then
        say "привет"
        wait 1000
        say "я пидорас"
        31@ = false
    end
end

:cmd
31@ = true
cmdret
если понимаешь только на метках, просто декомпилируй скрипт
 

|| NN - NoName ||

Известный
1,049
633
Сорри за тупой вопрос, ну какой я, такой и вопрос, как сделать проверку на то что тебя ударили кулаком.
 

astap_

Известный
Всефорумный модератор
626
601
Сорри за тупой вопрос, ну какой я, такой и вопрос, как сделать проверку на то что тебя ударили кулаком.
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:
thread "astap"

WHILE NOT SAMP.Available()
    0001: 0
END
0BE1: raknet setup_outcoming_rpc_hook @HOOK
0BDE: pause_thread 0

:HOOK
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_GIVETAKEDAMAGE
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM  
        0BE7: raknet 1@ = bit_stream_read 0@ type 1 // give/take
        IF 1@ == TRUE
        THEN
            0BE7: raknet 2@ = bit_stream_read 0@ type 2 // id
            0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
            IF 003B:   3@ == 2@  // (int)
            THEN
                0BE7: raknet 4@ = bit_stream_read 0@ type 3 // damage
                0BE7: raknet 5@ = bit_stream_read 0@ type 2 // weapID
                IF 003B:   5@ == 0 // fist
                THEN
                    SAY "меня ударили кулаком :("
                END
            END                      
        END
    END                          
0BE0: raknet hook_ret TRUE
 

|| NN - NoName ||

Известный
1,049
633
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:
thread "astap"

WHILE NOT SAMP.Available()
    0001: 0
END
0BE1: raknet setup_outcoming_rpc_hook @HOOK
0BDE: pause_thread 0

:HOOK
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_GIVETAKEDAMAGE
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM 
        0BE7: raknet 1@ = bit_stream_read 0@ type 1 // give/take
        IF 1@ == TRUE
        THEN
            0BE7: raknet 2@ = bit_stream_read 0@ type 2 // id
            0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
            IF 003B:   3@ == 2@  // (int)
            THEN
                0BE7: raknet 4@ = bit_stream_read 0@ type 3 // damage
                0BE7: raknet 5@ = bit_stream_read 0@ type 2 // weapID
                IF 003B:   5@ == 0 // fist
                THEN
                    SAY "меня ударили кулаком :("
                END
            END                     
        END
    END                         
0BE0: raknet hook_ret TRUE
upload_2019-3-5_20-53-2.png
 

astap_

Известный
Всефорумный модератор
626
601
Окей, но у меня ещё, когда я пишу /rn || /fn || /psn "Text" - выводится сообщение с пустыми скобками.
/rn (( )) || /fn (( )) || /ps (( ))
он выводится пустым из-за хуевого форматирования, перекомпилируй и все будет норм
у тебя не установлены константы сампфункса
 
  • Нравится
Реакции: Magov1733

|| NN - NoName ||

Известный
1,049
633
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:
thread "as"

WHILE NOT SAMP.Available()
    0001: 0
END
0BE1: raknet setup_outcoming_rpc_hook @HOOK
0BDE: pause_thread 0

:HOOK
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_GIVETAKEDAMAGE
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM 
        0BE7: raknet 1@ = bit_stream_read 0@ type 1 // give/take
        IF 1@ == TRUE
        THEN
            0BE7: raknet 4@ = bit_stream_read 0@ type 3 // damage
            0BE7: raknet 5@ = bit_stream_read 0@ type 2 // weapID
            IF 003B:   5@ == 0 // fist
            THEN
                0AF9: samp say_msg "Только не на кулак."
               
            END                     
        END
    END                         
0BE0: raknet hook_ret TRUE
Почему крашит?
 

astap_

Известный
Всефорумный модератор
626
601
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:
thread "as"

WHILE NOT SAMP.Available()
    0001: 0
END
0BE1: raknet setup_outcoming_rpc_hook @HOOK
0BDE: pause_thread 0

:HOOK
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_GIVETAKEDAMAGE
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE7: raknet 1@ = bit_stream_read 0@ type 1 // give/take
        IF 1@ == TRUE
        THEN
            0BE7: raknet 4@ = bit_stream_read 0@ type 3 // damage
            0BE7: raknet 5@ = bit_stream_read 0@ type 2 // weapID
            IF 003B:   5@ == 0 // fist
            THEN
                0AF9: samp say_msg "Только не на кулак."
              
            END                    
        END
    END                        
0BE0: raknet hook_ret TRUE
Почему крашит?
я кое-что напутал. вот это точно работает:
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:
thread "astap"

WHILE NOT SAMP.Available()
    0001: 0
END
0BE1: raknet setup_outcoming_rpc_hook @HOOK
0BDE: pause_thread 0

:HOOK
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_GIVETAKEDAMAGE
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM 
        0BE7: raknet 1@ = bit_stream_read 0@ type 1 // give/take
        IF 1@ == TRUE
        THEN
            0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_SHORT
            0BE7: raknet 4@ = bit_stream_read 0@ type BS_TYPE_FLOAT 
            0BE7: raknet 5@ = bit_stream_read 0@ type BS_TYPE_SHORT 
            IF 5@ == 0
            THEN
                chatmsg "кулак" -1
            END               
        END
    END                         
0BE0: raknet hook_ret TRUE
 

D[a]Ni

Участник
63
3
Такая проблема, есть например строка с текстом "Привет, тут живёт BlastHack?" есть ли такая функция или опкод что бы заменить слово из строки например на "Привет, тут обитает BlastHack?" И должно быть не важно в каком месте находится это слово
 

borya

Новичок
1
0
Поменять кнопку активации на F5
Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
thread "SPRINGFIELD"
wait 5000
call @SPRINGFIELD_634 0
31@ = 0

:SPRINGFIELD_39
wait 0
if and
key_down 18
key_down 114
else_jump @SPRINGFIELD_190
0B12: 31@ = 31@ XOR 1
if
  31@ == 1
else_jump @SPRINGFIELD_134
call @SPRINGFIELD_255 0
printf "" 1337
wait 200
goto @SPRINGFIELD_190

:SPRINGFIELD_134
if
  31@ == 0
else_jump @SPRINGFIELD_190
call @SPRINGFIELD_415 0
printf "" 1337
wait 200

:SPRINGFIELD_190
if
  31@ == 1
else_jump @SPRINGFIELD_248
if
key_down 119
else_jump @SPRINGFIELD_248
call @SPRINGFIELD_415 0
wait 1000
call @SPRINGFIELD_255 0

:SPRINGFIELD_248
goto @SPRINGFIELD_39

:SPRINGFIELD_255
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 6 value -1869574000 virtual_protect 1
0A8E: 2@ = 30@ + 458004 // int
0A8C: write_memory 2@ size 6 value -1869574000 virtual_protect 1
0A8E: 3@ = 30@ + 458280 // int
0A8C: write_memory 3@ size 2 value 37008 virtual_protect 1
0A8E: 4@ = 30@ + 462648 // int
0A8C: write_memory 4@ size 2 value 37008 virtual_protect 1
0A8E: 5@ = 30@ + 462372 // int
0A8C: write_memory 5@ size 6 value -1869574000 virtual_protect 1
0AA3: free_library 30@
ret 0

:SPRINGFIELD_415
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 4 value 24216591 virtual_protect 1
0A8E: 2@ = 1@ + 4 // int
0A8C: write_memory 2@ size 2 value 0 virtual_protect 1
0A8E: 3@ = 30@ + 458004 // int
0A8C: write_memory 3@ size 4 value 22053903 virtual_protect 1
0A8E: 4@ = 3@ + 4 // int
0A8C: write_memory 4@ size 2 value 0 virtual_protect 1
0A8E: 5@ = 30@ + 458280 // int
0A8C: write_memory 5@ size 2 value 16500 virtual_protect 1
0A8E: 6@ = 30@ + 462648 // int
0A8C: write_memory 6@ size 2 value 24948 virtual_protect 1
0A8E: 7@ = 30@ + 462372 // int
0A8C: write_memory 7@ size 4 value 24218127 virtual_protect 1
0A8E: 8@ = 7@ + 4 // int
0A8C: write_memory 8@ size 2 value 0 virtual_protect 1
0AA3: free_library 30@
ret 0

:SPRINGFIELD_634
0AA2: 0@ = load_library "samp.dll" // IF and SET
0085: 1@ = 0@ // (int)
1@ += 2203876
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 1
0085: 2@ = 0@ // (int)
2@ += 409616 
ret 0
 

astap_

Известный
Всефорумный модератор
626
601
Ребята, как сравнить TextDraw с нужным мне текстом? Вот строки в чате можно сравнивать при помощи опкодов 0c14, 0c18, а мне надо именно TextDraw, help me pls!
получаешь строку текстдрава и так же сравниваешь
CLEO:
0C5A: samp textdraw 0@ get_string_to 1@
Поменять кнопку активации на F5
Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
thread "SPRINGFIELD"
wait 5000
call @SPRINGFIELD_634 0
31@ = 0

:SPRINGFIELD_39
wait 0
if and
key_down 18
key_down 114
else_jump @SPRINGFIELD_190
0B12: 31@ = 31@ XOR 1
if
  31@ == 1
else_jump @SPRINGFIELD_134
call @SPRINGFIELD_255 0
printf "" 1337
wait 200
goto @SPRINGFIELD_190

:SPRINGFIELD_134
if
  31@ == 0
else_jump @SPRINGFIELD_190
call @SPRINGFIELD_415 0
printf "" 1337
wait 200

:SPRINGFIELD_190
if
  31@ == 1
else_jump @SPRINGFIELD_248
if
key_down 119
else_jump @SPRINGFIELD_248
call @SPRINGFIELD_415 0
wait 1000
call @SPRINGFIELD_255 0

:SPRINGFIELD_248
goto @SPRINGFIELD_39

:SPRINGFIELD_255
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 6 value -1869574000 virtual_protect 1
0A8E: 2@ = 30@ + 458004 // int
0A8C: write_memory 2@ size 6 value -1869574000 virtual_protect 1
0A8E: 3@ = 30@ + 458280 // int
0A8C: write_memory 3@ size 2 value 37008 virtual_protect 1
0A8E: 4@ = 30@ + 462648 // int
0A8C: write_memory 4@ size 2 value 37008 virtual_protect 1
0A8E: 5@ = 30@ + 462372 // int
0A8C: write_memory 5@ size 6 value -1869574000 virtual_protect 1
0AA3: free_library 30@
ret 0

:SPRINGFIELD_415
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 4 value 24216591 virtual_protect 1
0A8E: 2@ = 1@ + 4 // int
0A8C: write_memory 2@ size 2 value 0 virtual_protect 1
0A8E: 3@ = 30@ + 458004 // int
0A8C: write_memory 3@ size 4 value 22053903 virtual_protect 1
0A8E: 4@ = 3@ + 4 // int
0A8C: write_memory 4@ size 2 value 0 virtual_protect 1
0A8E: 5@ = 30@ + 458280 // int
0A8C: write_memory 5@ size 2 value 16500 virtual_protect 1
0A8E: 6@ = 30@ + 462648 // int
0A8C: write_memory 6@ size 2 value 24948 virtual_protect 1
0A8E: 7@ = 30@ + 462372 // int
0A8C: write_memory 7@ size 4 value 24218127 virtual_protect 1
0A8E: 8@ = 7@ + 4 // int
0A8C: write_memory 8@ size 2 value 0 virtual_protect 1
0AA3: free_library 30@
ret 0

:SPRINGFIELD_634
0AA2: 0@ = load_library "samp.dll" // IF and SET
0085: 1@ = 0@ // (int)
1@ += 2203876
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 1
0085: 2@ = 0@ // (int)
2@ += 409616
ret 0
это не стол заказов
 
  • Нравится
Реакции: 1fs1