Информация Перенос новых диалогов мышкой [sampfuncs]

Статус
В этой теме нельзя размещать новые ответы.

gcode

нестандартное звание звание звание звание звани...
Автор темы
Друг
789
357
Хочу рассказать вам, как можно передвигать мышкой новые диалоги sampfuncs. Подразумевается, что вы уже умеете создавать диалоги и вам требуется прикрутить перемещение к уже готовому диалогу.


[HIDE=80]
PHP:
while true
if
 
        0AB0: key_pressed 1 // Проверяем, что зажата ЛКМ
then
        0AB1: call @GetCursorPos 0 28@ 27@ // Получаем позицию курсора
        0B85: samp dialog 29@ get_position_to 26@ 25@ size_to 0@ 0@ // Получаем позицию диалога (размеры нам не нужны, т.к они статические)
/* Проверяем что мышка находится в пределах заголовка диалога - старт */
        if and
            001D:  28@ > 26@
            001D:  27@ > 25@
        then
            26@ += 340 // Прибавляем ширину диалога!!!
            25@ += 20
            if and
                001D:  26@ > 28@
                001D:  25@ > 27@
            then
                26@ -= 340 // Вычитаем ширину диалога!!!
                25@ -= 20
/* Проверяем что мышка находится в пределах заголовка диалога - финиш */
                0062: 28@ -= 26@ // Находим смещение мышки на заголовке по координате X
                0062: 27@ -= 25@ // Находим смещение мышки на заголовке по координате Y
                while 0AB0: 1 // Пока зажата ЛКМ передвигаем диалог
                    wait 0
                    0AB1: call @GetCursorPos 0 26@ 25@ // Получаем координаты мышки
                    0062: 26@ -= 28@ // Вычитаем смещение
                    0062: 25@ -= 27@ // Вычитаем смещение
                    0B84: samp dialog 29@ set_pos_XY 26@ 25@ size 340 205 // Передвигаем диалог
                end
            end     
        end
 
    end
end
 
 
:GetCursorPos
// За функцию спасибо legend2360
0AA2: 0@ = load_library "user32.dll"
0AA4: 1@ = get_proc_address "GetCursorPos" library 0@
0AC8: 2@ = allocate_memory_size 8
0AA5: call 1@ num_params 1 pop 0 2@
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
2@ += 4
0A8D: 4@ = read_memory 2@ size 4 virtual_protect 0
0AC9: free_memory 2@
 
0AB2: ret 2 3@ 4@
[/HIDE]
 

Charlatan

Новичок
Друг
290
18
Ну да, любой твой диалог тот что новый, можешь его двигать куда душа захочет;D
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,752
я обкончал твой хайд, ты просто обязан его снизить до -6472
 

MogAika

Известный
Друг
237
444
Нужно 80 сообщений, у меня 81. Азазаза.
Способ отличный!
 

spiceman

GOWNIK <3
104
35
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
(((((((((((((((((((((((((((((((((((((((((((
Узнает позицию курсора и туда ставит диалог, а от него уже другие элементы смещаются?
 

gcode

нестандартное звание звание звание звание звани...
Автор темы
Друг
789
357
(((((((((((((((((((((((((((((((((((((((((((
Узнает позицию курсора и туда ставит диалог, а от него уже другие элементы смещаются?

Почти, только если сделать так, то диалог будет дёрганый, и вряд ли его получится нормально перемещать.
 
Статус
В этой теме нельзя размещать новые ответы.