Jump to content

DxScroll


Recommended Posts

Привет всем!

Решил сделать DxScroll, ну вроде получилось не плохо.

Но проблема в том что не как не могу ограничить видимость вещей внутри Rectangle.

Скриншоты

3HJ7tin.png

MygXAhl.png

YLi1td7.png

T9thMLX.png

Код

  
local sW, sH = guiGetScreenSize() 
local bW, bH = (sW/2), (sH/2) 
local offset = 0 
-- 
addEventHandler('onClientRender', root, 
    function () 
        if (isLogged(localPlayer)) then 
                dxDrawRectangle(bW+190, bH-300, 320, 20, tocolor(0, 0, 0, 255)) 
                dxDrawText('INVENTORY', bW+195, bH-300, bW+510, bH-280, tocolor(160, 160, 160, 255), 1, 'default', 'left', 'center', false, false, true, false, false) 
                --Box 
                dxDrawLine(bW+190, bH-281, bW+190, bH+280, tocolor(200, 200, 200, 100), 1) 
                dxDrawLine(bW+510, bH-281, bW+190, bH-281, tocolor(200, 200, 200, 100), 1) 
                dxDrawLine(bW+190, bH+280, bW+510, bH+280, tocolor(200, 200, 200, 100), 1) 
                dxDrawLine(bW+510, bH+280, bW+510, bH-281, tocolor(200, 200, 200, 100), 1) 
                dxDrawRectangle(bW+191, bH-280, 319, 560, tocolor(0, 0, 0, 70)) 
                dxDrawLine(bW+500, bH-280, bW+500, bH+279, tocolor(200, 200, 200, 100), 1) 
                --Scrollbar 
                dxDrawLine(bW+502, bH-280+offset, bW+502, bH-109+offset, tocolor(200, 200, 200, 100), 1) 
                dxDrawLine(bW+508, bH-280+offset, bW+502, bH-280+offset, tocolor(200, 200, 200, 100), 1) 
                dxDrawLine(bW+502, bH-109+offset, bW+508, bH-109+offset, tocolor(200, 200, 200, 100), 1) 
                dxDrawLine(bW+508, bH-109+offset, bW+508, bH-280+offset, tocolor(200, 200, 200, 100), 1) 
                dxDrawRectangle(bW+503, bH-279+offset, 5, 170, tocolor(0, 0, 0, 0)) 
                --Items 
                for i = 1, 10 do 
                    dxDrawRectangle(bW+191, bH-345+65*i-offset, 309, 60, tocolor(100, 100, 100, 200)) 
                    dxDrawImage(bW+191, bH-345+65*i-offset, 60, 60, ':guieditor/images/plus.png', 0, 0, 0, tocolor(255, 255, 255, 255)) 
                    dxDrawText('Backpack '..i, bW+261, bH-326+65*i-offset, bW+499, bH-306+65*i-offset, tocolor(255, 255, 255, 255), 1, 'default-bold', 'left', 'center', false, false, true, false, false) 
                    dxDrawText('0/'..i, bW+451, bH-346+65*i-offset, bW+499, bH-326+65*i-offset, tocolor(255, 255, 255, 255), 1, 'default-bold', 'right', 'center', false, false, true, false, false) 
                end 
            end 
        end 
    end 
) 
-- 
function Scroll(key, state) 
    if (isLogged(localPlayer)) then 
        if (state == 'down') then 
            if (key == 'mouse_wheel_up') then 
                if (offset > 0) then 
                    offset = offset-97 
                else 
                    offset = 0 
                end 
            elseif (key == 'mouse_wheel_down') then 
                if (offset < 388) then 
                    offset = offset+97 
                else 
                    offset = 388 
                end 
            end 
        end 
    end 
end 
bindKey('mouse_wheel_up', 'down', Scroll) 
bindKey('mouse_wheel_down', 'down', Scroll) 
  

Конечно можно ограничить видимость с помощью offset и Y координат, но не у всех одинаковый монитор

Помогите решить проблему

Link to comment
dxCreateRenderTarget 
dxSetRenderTarget 

Спасибо помогло.

  
dxSetRenderTarget(rBox, true) 
                for i = 1, 10 do 
                    dxDrawRectangle(0, mX-224+65*i-offset, 309, 60, tocolor(50, 50, 50, 235)) 
                    dxDrawImage(0, mX-224+65*i-offset, 60, 60, ':guieditor/images/plus.png') 
                    dxDrawText('Backpack '..i, mX-89.5, mX-203+65*i-offset) 
                    dxDrawText(i..'/35', mX+115.5, mX-224+65*i-offset) 
                end 
                dxSetRenderTarget() 
                dxDrawRectangle(bW+191, bH-280, 319, 560, tocolor(0, 0, 0, 70)) 
                dxDrawImage(bW+191, bH-280, 319, 560, rBox) 
                dxDrawLine(bW+500, bH-280, bW+500, bH+279, tocolor(200, 200, 200, 100), 1) 
  

Можете помочь сделать scrollbar так чтобы его размер менялся смотря на количество объектов внутри, заранее благодарен

  
--Scrollbar 
dxDrawLine(bW+502, bH-280+offset, bW+502, bH-109+offset, tocolor(200, 200, 200, 100), 1) 
dxDrawLine(bW+508, bH-280+offset, bW+502, bH-280+offset, tocolor(200, 200, 200, 100), 1) 
dxDrawLine(bW+502, bH-109+offset, bW+508, bH-109+offset, tocolor(200, 200, 200, 100), 1) 
dxDrawLine(bW+508, bH-109+offset, bW+508, bH-280+offset, tocolor(200, 200, 200, 100), 1) 
  

Ну как в браузере

Link to comment

А в чем проблема? Ты знаешь координаты курсора, знаешь где рисуется RT по X и Y. Прими эти координаты за 0, тобишь положение отрисовки минус текущие координаты. Вот и все.

Link to comment
А в чем проблема? Ты знаешь координаты курсора, знаешь где рисуется RT по X и Y. Прими эти координаты за 0, тобишь положение отрисовки минус текущие координаты. Вот и все.

:fadein: Можно пример?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...