Хочу рассказать вам, как можно передвигать мышкой новые диалоги sampfuncs. Подразумевается, что вы уже умеете создавать диалоги и вам требуется прикрутить перемещение к уже готовому диалогу.
[HIDE=80]
[/HIDE]
[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@