Эксклюзив CLEO hClickMenu

Тема в разделе "Читы", создана пользователем hnnssy, 12 фев 2016.

  1. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    Описание: кликабельный биндер команд. Скрипт принимает клиентские команды (команды сампа, других клео/плагинов). Левая клавиша мыши отправляет команду, правая - вставляет её в чат.
    Настройка: вписывать команды нужно в hClickMenu-commands.txt. Список команд обновляется каждые 10 секунд.
    Активация: по дэфолту клавишей CTRL, настроить можно командой /cmkey. Ввести команду и нажать на нужную клавишу, либо же в файле hClickMenu-settings.ini
    Автор: hnnssy
    Скрины:
    [​IMG]
    Требования: SF 5.3
    Спасибо legend2360 и FYP.
    О найденых багах просьба сообщать здесь.
    Source:
    {$CLEO}
    {$INCLUDE SF}
    0000:
    repeat
    wait 250
    until 0AFA:  is_samp_available
    thread "ClMn"
    msg "* /cs/ ClickMenu loaded %c%c hnnssy" 0xC1C1C1 47 47
    CONST
    CM_FONT = 0@
    CM_XSIZE = 1@
    CM_YSIZE = 2@
    CM_XPOS = 3@
    CM_YPOS = 4@
    CM_COLVO = 5@
    CM_KEY = 6@
    
    CM_CMDLIST = 10@
    CM_CMDBUFF = 11@
    CM_CMDARRAYELEMENT = 12@
    
    CM_CMDFILE = 30@
    
    CM_BACKCOLOR = 0xFF1f1f1f
    CM_BACKBORDERCOLOR = 0xFF141414
    CM_ACTIVETEXTCOLOR = 0xFFC80000                    
    CM_TEXTCOLOR 0xFFFFFFFF
    END
    
    
    if 8AAB:   file_exists "CLEO\hClickMenu.cs"
    then end_thread
    end
    
    if 8AAB:   file_exists "CLEO\hClickMenu-settings.ini"
    then
        0AF1: write_int 17 to_ini_file "CLEO\hClickMenu-settings.ini" section "hCM" key "Key"
    end     
    
    VAR
    29@:int
    CM_COLVO:int
    CM_CMDARRAYELEMENT:int
    CM_XSIZE:int
    END
    
    alloc CM_CMDLIST 800
    memset CM_CMDLIST 0x0 800
    
    alloc CM_CMDBUFF 20
    memset CM_CMDLIST 0x0 20
    
    if 8AAB:   file_exists "CLEO\hClickMenu-commands.txt"
    then                         
        0A9A: CM_CMDFILE = openfile "CLEO\hClickMenu-commands.txt" mode "wt"
        repeat
        wait 0
        until 0AAB:   file_exists "CLEO\hClickMenu-commands.txt"
        0A9B: closefile CM_CMDFILE
    end
    
    reg_cmd "cmkey" @cmkey
    
    CM_FONT = Render.CreateFont("Tahoma", 8, 5)
    
    gosub @refreshPos
    gosub @refreshCMDs    
    gosub @refreshSize
    
    33@ = 0
    
    while true
        wait 0
       
        if 0ADC: "CLMN"
        then
            0A92: create_custom_thread "hClickMenu.cs"
            end_thread
        end        
       
        if and
            33@ >= 10000
            8B21:     samp is_chat_opened
        then
            gosub @refreshCMDs
            gosub @refreshSize
            gosub @refreshXSize
            CM_COLVO--
            33@ = 0
        end
       
        0AF0: CM_KEY = get_int_from_ini_file "CLEO\hClickMenu-settings.ini" section "hCM" key "Key"
       
        if and
        8C7E:    is_console_active
        8B21:     samp is_chat_opened
        key CM_KEY
        then  
            if CM_COLVO > 0
            then
                gosub @refreshPos
                0B5D: samp toggle_cursor 1
                0006: 13@ = CM_XPOS
                000A: 13@ += CM_XSIZE
                0006: 14@ = CM_YSIZE
                0016: 14@ /= 2
                000A: 14@ += CM_YPOS
                call @CursorSetPos 2 13@ 14@
                while key CM_KEY
                wait 0
                0BAF: samp CM_XPOS = get_input_info_ptr
                0C0C: 31@ = struct CM_XPOS offset 8 size 4
                0C0C: CM_XPOS = struct 31@ offset 8 size 4
                0C0C: CM_YPOS = struct 31@ offset 12 size 4
                CM_YPOS += 50
                0B5D: samp toggle_cursor 1
                0B6A: render draw_box_with_border_pos CM_XPOS CM_YPOS size CM_XSIZE CM_YSIZE color CM_BACKCOLOR border_size 2 border_color CM_BACKBORDERCOLOR
                CM_XPOS += 5
                CM_YPOS += 5
                for CM_CMDARRAYELEMENT = 0 to CM_COLVO
                    0C1F: CM_CMDBUFF = string_array CM_CMDLIST element CM_CMDARRAYELEMENT size 20
                    call @renderClickableCMD 5 font CM_FONT cmd CM_CMDBUFF posXY CM_XPOS CM_YPOS color CM_TEXTCOLOR
                    CM_YPOS += 15
                end
                end
                if 8B4C:  samp is_dialog_active -1
                then
                    0B8D: samp set_cursor_mode 0
                end
            end
        end
       
        if 20@ == 1
        then
            wait 100
            while 20@ == 1
            wait 0
                printf "press the any key" 1
                for 21@ = 0 to 230
                if key 21@
                then
                    0AF1: write_int 21@ to_ini_file "CLEO\hClickMenu-settings.ini" section "hCM" key "Key"
                    printf "new key: %d" 1500 21@
                    20@ = 0
                end
                end
            end
        end
       
    end
    
    :cmkey
    20@ = 1
    cmd_ret
    
    :refreshPos
    0B79: samp set_chat_input_enabled 1
    0BAF: samp CM_XPOS = get_input_info_ptr
    0C0C: 31@ = struct CM_XPOS offset 8 size 4
    0C0C: CM_XPOS = struct 31@ offset 8 size 4
    0C0C: CM_YPOS = struct 31@ offset 12 size 4
    CM_YPOS += 50
    0B79: samp set_chat_input_enabled 0
    return
    
    :CursorSetPos         
    { ex: call @CursorSetPos 2 200 240 }                   
    0AA2: 2@ = load_library "user32.dll" 
    0AA4: 3@ = get_proc_address "SetCursorPos" library 2@ 
    0AA5: call 3@ num_params 2 pop 0 1@ 0@
    ret 0
    
    :refreshCMDs
    if
    0A9A: CM_CMDFILE = openfile "CLEO\hClickMenu-commands.txt" mode "rt"
    then
        CM_COLVO = 0
        repeat
        wait 0
            memset CM_CMDBUFF 0x0 20
            if 0AD7: read_string_from_file CM_CMDFILE to CM_CMDBUFF size 20
            then
                if 8AD6:   end_of_file CM_CMDFILE reached
                then
                    call @delete_last_char_from_string 1 CM_CMDBUFF
                end
                0C20: string_array CM_CMDLIST element CM_COLVO size 20 = CM_CMDBUFF
                CM_COLVO += 1
            end
        until 0AD6:   end_of_file CM_CMDFILE reached
        0A9B: closefile CM_CMDFILE
    end
    return
    
    :refreshXSize
    for CM_CMDARRAYELEMENT = 0 to CM_COLVO
        0C1F: CM_CMDBUFF = string_array CM_CMDLIST element CM_CMDARRAYELEMENT size 20
        0C17: 29@ = strlen CM_CMDBUFF
        29@ *= 8
        29@ += 10
        if 29@ > CM_XSIZE
        then CM_XSIZE = 29@
        end     
    end
    return
    
    :refreshSize
    if CM_COLVO > 0
    then
        CM_COLVO--
        0B6C: render CM_YSIZE = font CM_FONT draw_height
        CM_YSIZE += 10   
        CM_XSIZE = 15
        0012: CM_XSIZE *= CM_COLVO
        000A: CM_YSIZE += CM_XSIZE
        CM_COLVO++
        CM_XSIZE = 100
    end
    return
    
    const
        ec_op_process = 1
        ec_op_check = 2
    end
    
    :renderClickableCMD
    // call @renderClickableText 5 font 0@ cmd 1@ posXY 2@ 3@ color 4@
    if 1@ < 0
    then 0AC6: 1@ = label 1@ offset
    end
    Render.DrawText(0@, 1@, 2@, 3@, 4@)
    0B6B: render 20@ = font 0@ draw_text 1@ length
    0B6C: render 21@ = font 0@ draw_height
    if call @is_cursor_here 4 startXY 2@ 3@ offsetXY 20@ 21@
    then                              
        Render.DrawText(0@, 1@, 2@, 3@, CM_ACTIVETEXTCOLOR)
        if call @eventClick2 1 const ec_op_check
        then
            0B79: samp set_chat_input_enabled 1
            0B76: samp set_chat_input_text 1@
        end
        call @eventClick2 1 const ec_op_process
       
        if call @eventClick 1 const ec_op_check
        then
            1@++
            if 0C90: samp is_client_command_defined 1@
            then
                1@--
                0C8F: samp process_chat_input 1@
            else
                1@--
                say "%s" 1@
            end
        end
        call @eventClick 1 const ec_op_process
    end              
    ret 0
    
    :eventClick
    // call @eventClick 1 ec_operation 0@
    if and
        0@ >= ec_op_process
        0@ <= ec_op_check
    then
        0AC6: 1@ = label @var_eventClick offset
        0A8D: 2@ = read_memory 1@ size 1 virtual_protect 0
    
        if 0@ == ec_op_process
        then
            if 2@ == true
            then
                if not key 1
                then
                    0A8C: write_memory 1@ size 1 value false virtual_protect 0
                end
            else
                if key 1
                then
                    0A8C: write_memory 1@ size 1 value true virtual_protect 0
                end
            end
            ret 0
        end
       
        if 0@ == ec_op_check
        then
            if 2@ == false
            then
                if key 1
                then ret 0 1
                end
            end
        end
    end
    ret 0
    
    :var_eventClick
    hex
        00
    end
    
    :eventClick2
    // call @eventClick 1 ec_operation 0@
    if and
        0@ >= ec_op_process
        0@ <= ec_op_check
    then
        0AC6: 1@ = label @var_eventClick2 offset
        0A8D: 2@ = read_memory 1@ size 1 virtual_protect 0
    
        if 0@ == ec_op_process
        then
            if 2@ == true
            then
                if not key 2
                then
                    0A8C: write_memory 1@ size 1 value false virtual_protect 0
                end
            else
                if key 2
                then
                    0A8C: write_memory 1@ size 1 value true virtual_protect 0
                end
            end
            ret 0
        end
       
        if 0@ == ec_op_check
        then
            if 2@ == false
            then
                if key 2
                then ret 0 1
                end
            end
        end
    end
    ret 0
    
    :var_eventClick2
    hex
        00
    end
    
    :is_cursor_here
    // call @is_cursor_here 4 startXY 0@ 1@ endXY 2@ 3@
    0B5E: get_cursor_pos 4@ 5@
    if and
        001D: 4@ > 0@
        001D: 5@ > 1@
    then
        005A: 0@ += 2@
        005A: 1@ += 3@
        if and
            001D: 0@ > 4@
            001D: 1@ > 5@
        then ret 0 1
        end
    end
    ret 0
    
    :delete_last_char_from_string
    var
    0@: int
    1@: int
    end
    0C17: 1@ = strlen 0@
    dec(1@)
    0@ += 1@
    0C11: memset 0@ 0 1
    ret 0
     

    Вложения:

    • hClickMenu.cs
      Размер файла:
      2,6 КБ
      Просмотров:
      563
    #1 hnnssy, 12 фев 2016
    Последнее редактирование: 6 ноя 2017
    Alex_Ravio, Pip64, marik768 и 8 другим нравится это.
  2. Madison1337

    Madison1337 Активный пользователь

    Регистрация:
    1 ноя 2013
    Сообщения:
    38
    Симпатии:
    22
    Ну это уже для совсем ленивых...
     
  3. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    для таких как я
     
    imring, Alvarado и Madison1337 нравится это.
  4. unInstance

    Проверенный

    Регистрация:
    8 дек 2015
    Сообщения:
    321
    Симпатии:
    237
    Ссылку на @legend2360 поменяй, ты там какую-то переписку вставил.
     
    #4 unInstance, 12 фев 2016
    Последнее редактирование: 2 мар 2016
    hnnssy нравится это.
  5. jeka1222

    jeka1222 Активный пользователь

    Регистрация:
    17 апр 2014
    Сообщения:
    26
    Симпатии:
    0
    зажимаю ctrl и ниче не происходит
     
  6. uigun

    uigun Пользователь

    Регистрация:
    18 мар 2015
    Сообщения:
    8
    Симпатии:
    0
    sf 5.3

    сегодня вышла
     
    #6 uigun, 12 фев 2016
    Последнее редактирование модератором: 12 фев 2016
  7. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    Команды в список внеси хоть.
     
  8. bomber!

    bomber! Знаток

    Регистрация:
    11 июл 2013
    Сообщения:
    352
    Симпатии:
    77
    можешь сделать на колесико мышки?
     
  9. Dima_Borsh

    Dima_Borsh Пользователь

    Регистрация:
    5 ноя 2014
    Сообщения:
    20
    Симпатии:
    4
    Всё равно ничего:С

    Добавил больше команд - заработало
     
    #9 Dima_Borsh, 13 фев 2016
    Последнее редактирование: 13 фев 2016
  10. Dron4ez

    Dron4ez Пользователь

    Регистрация:
    31 янв 2014
    Сообщения:
    5
    Симпатии:
    2
    как там на МГ хенеси?
     
  11. Dima_Borsh

    Dima_Borsh Пользователь

    Регистрация:
    5 ноя 2014
    Сообщения:
    20
    Симпатии:
    4
    Кстати, действительно, измени на другую клавишу, т.к. на некоторых серверах кар заводить на Ctrl и на велике прыгать на Ctrl.
     
  12. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    скатился мг на самое дно
     
  13. Tim123

    Tim123 Новичок

    Регистрация:
    7 июн 2015
    Сообщения:
    3
    Симпатии:
    0
    Смени Активацию будет на много лучше.
     
  14. RufoUs

    RufoUs Новичок

    Регистрация:
    16 июл 2015
    Сообщения:
    3
    Симпатии:
    0
    Смени активацию на правый ctrl, пожалуйста)))
     
  15. egorka334

    egorka334 Активный пользователь

    Регистрация:
    24 авг 2014
    Сообщения:
    39
    Симпатии:
    6
    обрисуйте нубу подробнее что это делает?
     
  16. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    собираюсь обновить это говно, что нужно добавить/исправить?
     
  17. RufoUs

    RufoUs Новичок

    Регистрация:
    16 июл 2015
    Сообщения:
    3
    Симпатии:
    0
    По мне, все супер!!!! Просто нужно поменять кнопку активации, на правый ctrl или на колесико мыши (например).
     
  18. TTepcuk

    TTepcuk Активный пользователь

    Регистрация:
    22 янв 2016
    Сообщения:
    36
    Симпатии:
    6
    добавить активацию и деактивацию, замену клавиши, таймер включения (когда логинишся на сервере и меняешь язык, плагин включается), возможность писать большие сообщения (более подробно на скрине)
    [​IMG]
     
  19. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    Скрипт предназначен для удобного использования команд, для всякого шлка по типу наборов есть мой c-binder. В активации/деактивации смысла вообще не вижу, а вот замену клавиши сделаю.
     
  20. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    Обновил.
    Команды перенесите в новый файл "hClickMenu-commands.txt" и удалите старый.
    Теперь можно настроить клавишу командой /cmkey. Нужно ввести команду и нажать нужную клавишу. Так же теперь нажатие Правой кнопкой мыши по команде просто вставляет её в чат.
     
    Pip64, Meny и FYP нравится это.
  21. sobaka123

    Проверенный

    Регистрация:
    11 апр 2013
    Сообщения:
    293
    Симпатии:
    70
    Можешь подсказать в чём может быть проблема?
    Зажимаю клавишу, появляется меню, тыкаю ЛКМ, ничего не происходит, нажимаю ПКМ вставляется в чат и т.к. я держу клавишу N, получается /masknnnnnnnn, а на левую кнопку мыши почему-то не срабатывает
     
  22. San6ka

    San6ka Активный пользователь

    Регистрация:
    2 авг 2014
    Сообщения:
    45
    Симпатии:
    9
    Сделай чтоб несколько команд вводилось по твоей строчке.
     
  23. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    добавил исходник, может надо кому
     
  24. Ded_Fedot

    Ded_Fedot КГБ
    Проверенный

    Регистрация:
    20 апр 2013
    Сообщения:
    1.881
    Симпатии:
    1.274
    Вроде же кидал уже исходник не?
     
  25. hnnssy

    hnnssy t.me/hnnssy
    Друг

    Регистрация:
    23 мар 2013
    Сообщения:
    2.067
    Симпатии:
    1.395
    тему удалил лох какой-то
     
  26. ВРАГ_НАРОДА

    ВРАГ_НАРОДА Знаток

    Регистрация:
    31 мар 2014
    Сообщения:
    132
    Симпатии:
    27
    хорошо бы было если окно можно было перемещать
     
  27. Nel7745

    Nel7745 Новичок

    Регистрация:
    18 ноя 2017
    Сообщения:
    1
    Симпатии:
    0
    как команду вставить, пишу в текстовый документ - "/capture" нажимаю на клавишу которую поставил в /cmkey и не робит