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

Ranto

Участник
45
1
Приветствую, кто сможет объяснить скрипт "wh", просто использую его, и хочется понять что в этом скрипте сделали, особенно надо объяснить если не трудно что делают в ":wh_on" и в "wh_off" , буду очень благодарен
CLEO:
{$CLEO}
0000:
while not Samp.Available()
    wait 0
end

while true
    wait 0
    if and
    8B21: not samp is_chat_opened
    0ADC:   test_cheat "wh"
        then
        0B12: 0@ = 0@ XOR 1
        if 0@ == 1
            then
            call @WH_ON 0
            0AD1: show_formatted_text_highpriority "WH ~g~ON" time 1000
            wait 2500
        end
               
        if 0@ == 0
            then
            call @WH_OFF 0
            0AD1: show_formatted_text_highpriority "WH ~r~OFF" time 1000
            wait 2500
        end
    end 
end 

:WH_ON
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@
0AB2: ret 0

:WH_OFF
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@
0AB2: ret 0
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Приветствую, кто сможет объяснить скрипт "wh", просто использую его, и хочется понять что в этом скрипте сделали, особенно надо объяснить если не трудно что делают в ":wh_on" и в "wh_off" , буду очень благодарен
CLEO:
{$CLEO}
0000:
while not Samp.Available()
    wait 0
end

while true
    wait 0
    if and
    8B21: not samp is_chat_opened
    0ADC:   test_cheat "wh"
        then
        0B12: 0@ = 0@ XOR 1
        if 0@ == 1
            then
            call @WH_ON 0
            0AD1: show_formatted_text_highpriority "WH ~g~ON" time 1000
            wait 2500
        end
               
        if 0@ == 0
            then
            call @WH_OFF 0
            0AD1: show_formatted_text_highpriority "WH ~r~OFF" time 1000
            wait 2500
        end
    end 
end 

:WH_ON
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@
0AB2: ret 0

:WH_OFF
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@
0AB2: ret 0
просто меняют значения в структурах сампа 037
 

D3.Pheonix

🎹
Модератор
2,817
1,597
CLEO:
//code
0AC8: 16@ = allocate_memory_size 550
0AC8: 25@ = allocate_memory_size 550
03C0: 20@ = actor $PLAYER_ACTOR car
0441: 14@ = car 20@ model
0ADB: 25@ = car_model 14@ name
0AD3: 16@ = format "VEH: %s" 25@
//code

Короче название может обрезать, если больше 6-7 символов, иногда может хуету какую то показать
CLEO:
0ADB: 25@ = car_model 14@ name
Например:
INFERNU(infernus), MOONBM(moonbeam) и т.д

Или всё правильно, и model names являются таковыми ?
Мне нужно получать полные названия
 
Последнее редактирование:

BlackKnigga

Известный
BH Team
922
445
CLEO:
//code
0AC8: 16@ = allocate_memory_size 550
0AC8: 25@ = allocate_memory_size 550
03C0: 20@ = actor $PLAYER_ACTOR car
0441: 14@ = car 20@ model
0ADB: 25@ = car_model 14@ name
0AD3: 16@ = format "VEH: %s" 25@
//code

Короче название может обрезать, если больше 6-7 символов, иногда может хуету какую то показать
CLEO:
0ADB: 25@ = car_model 14@ name
Например:
INFERNU(infernus), MOONBM(moonbeam) и т.д

Или всё правильно, и model names являются таковыми ?
Мне нужно получать полные названия
Этот опкод возвращает название длиной не больше 7 символов.
GTAG :: OpcodeDB - Opcode 0ADB(https://gtagmodding.com/opcode-database/opcode/0ADB/)
Тут же описан способ получения полного имени.
 
  • Нравится
Реакции: D3.Pheonix

_JeT_

Новичок
24
0
не могу понять, что не так. Нажимаю X - диалог открывается. Нажимаю на "Closed" - он закрывается и больше не открывается на X.
CLEO:
{$CLEO}
0000:

const
    EVENT_BUTTON_CLICKED = 257
end

while true
    wait 0
    if
    0AB0: key_pressed 88
    then
        0B80: dialog 0@ = create "DXUT dialog"
        0B84: dialog 0@ set_pos_XY 490 500 size 300 100
        0B82: dialog 0@ add_button id 1 text "Enter" pos_XY 0 50 size 100 30
        0B82: dialog 0@ add_button id 2 text "Closed" pos_XY 120 50 size 100 30
        0B8D: samp set_cursor_mode 2
        while true
        wait 0
            if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
            then
                if 1@ == EVENT_BUTTON_CLICKED
                then
                    if 2@ == 1
                    then
                        0AD1: show_formatted_text_highpriority "+" time 2000
                    end
                end

                if 1@ == EVENT_BUTTON_CLICKED
                then
                    if 2@ == 2
                    then
                        0B86: dialog 0@ set_visible 0
                        0B8D: samp set_cursor_mode 0
                    end
                end
            end
        end
    end
end
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не могу понять, что не так. Нажимаю X - диалог открывается. Нажимаю на "Closed" - он закрывается и больше не открывается на X.
CLEO:
{$CLEO}
0000:

const
    EVENT_BUTTON_CLICKED = 257
end

while true
    wait 0
    if
    0AB0: key_pressed 88
    then
        0B80: dialog 0@ = create "DXUT dialog"
        0B84: dialog 0@ set_pos_XY 490 500 size 300 100
        0B82: dialog 0@ add_button id 1 text "Enter" pos_XY 0 50 size 100 30
        0B82: dialog 0@ add_button id 2 text "Closed" pos_XY 120 50 size 100 30
        0B8D: samp set_cursor_mode 2
        while true
        wait 0
            if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
            then
                if 1@ == EVENT_BUTTON_CLICKED
                then
                    if 2@ == 1
                    then
                        0AD1: show_formatted_text_highpriority "+" time 2000
                    end
                end

                if 1@ == EVENT_BUTTON_CLICKED
                then
                    if 2@ == 2
                    then
                        0B86: dialog 0@ set_visible 0
                        0B8D: samp set_cursor_mode 0
                    end
                end
            end
        end
    end
end
после 0AD1: show_formatted_text_highpriority "+" time 2000
выходи из цикла
 
1,417
1,029
не могу понять, что не так. Нажимаю X - диалог открывается. Нажимаю на "Closed" - он закрывается и больше не открывается на X.
CLEO:
{$CLEO}
0000:

const
    EVENT_BUTTON_CLICKED = 257
end

while true
    wait 0
    if
    0AB0: key_pressed 88
    then
        0B80: dialog 0@ = create "DXUT dialog"
        0B84: dialog 0@ set_pos_XY 490 500 size 300 100
        0B82: dialog 0@ add_button id 1 text "Enter" pos_XY 0 50 size 100 30
        0B82: dialog 0@ add_button id 2 text "Closed" pos_XY 120 50 size 100 30
        0B8D: samp set_cursor_mode 2
        while true
        wait 0
            if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
            then
                if 1@ == EVENT_BUTTON_CLICKED
                then
                    if 2@ == 1
                    then
                        0AD1: show_formatted_text_highpriority "+" time 2000
                    end
                end

                if 1@ == EVENT_BUTTON_CLICKED
                then
                    if 2@ == 2
                    then
                        0B86: dialog 0@ set_visible 0
                        0B8D: samp set_cursor_mode 0
                    end
                end
            end
        end
    end
end
потому что у тебя скрипт из второго цикла не выходит
 
У

Удалённый пользователь 126687

Гость
Собственно сам код:
Код:
0B34: samp register_client_command "bike" to_label @bikecmd
Опкод верный, об этом говорит и wiki.
В чём проблема?
 

Clarence

Известный
76
5
Ребят, каким опкодом можно записать в переменную кол-во Денег у игрока?
Переискал уже. Не могу найти.
 
1,417
1,029
Почему это крашит?
Код:
        0AF0: 1@ = get_int_from_ini_file "cleo\C-HUD.ini" section "Settings" key "X"
        0AF0: 2@ = get_int_from_ini_file "cleo\C-HUD.ini" section "Settings" key "Y"
        0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
        0AB1: call_scm_func @convert_X_size_G_to_W 1 9.0 3@
        005A: 1@ += 3@  // (int) 
        0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 1@ 2@
        038D: draw_texture 50 position 1@ 2@ size 9.0 9.0 RGBA 255 255 255 255 {6}
        0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
        005A: 1@ += 3@  // (int) 
        0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 1@ 2@
        038D: draw_texture 50 position 1@ 2@ size 9.0 9.0 RGBA 255 255 255 255 {5}
        0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
        005A: 1@ += 3@  // (int) 
        0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 1@ 2@
        038D: draw_texture 50 position 1@ 2@ size 9.0 9.0 RGBA 255 255 255 255 {4}
        0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
        005A: 1@ += 3@  // (int) 
        0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 1@ 2@
        038D: draw_texture 50 position 1@ 2@ size 9.0 9.0 RGBA 255 255 255 255 {3}
        0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
        005A: 1@ += 3@  // (int) 
        0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 1@ 2@
        038D: draw_texture 50 position 1@ 2@ size 9.0 9.0 RGBA 255 255 255 255 {2}
        0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 1@ 2@
        005A: 1@ += 3@  // (int) 
        0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 1@ 2@
        038D: draw_texture 50 position 1@ 2@ size 9.0 9.0 RGBA 255 255 255 255 {1}
координаты во float, а ты считываешь и прибавляешь в int