Jump to content

gui scroll


Tekken

Recommended Posts

Salut, de curand m-am apucat sa refac un inventory pentru DayZ « dinala jmeker » cu imagini, si cum eu sut umpic cam nul in dx l-am facut in gui, toate bune si frumoase totul merge ca planuit mai putin scrollul, eu am incercat ceva de genu’ cu bindkey mouse_well_up si down si o iterare in getElementsByType("gui-staticimage ") si gen sa le adaug sau sa le scat din height, merge, dar de fiecare data cand dau scroll in sus sau in jos pierd sau eventual castig in dimensiuni cea ce imi face imaginile sa se suprapuna cand revin la pozitia initiala , si nu inteleg de ce, poate cineva mai experimentat in dx sau gui ma poate ajuta, o sa pun un exemplu mai tarziu ca acum is pe telefon.

 

O intrebate serioasa pe ro sa vedem daca gasim si solutie. 
Sunt dispus sa raspund la intrebari de genul, daca bineinteles se si formuleaza sa avem umpic de activitate pe forum, zic.

Link to post

Hai ca de mult n-am mai dat prin lua si si-asa nu-s eu expert in scripting, dar am zis sa ma ambitionez putin.

Problema e urmatoarea, nu inteleg daca folosesti un GUI custom sau un ScrollPanel din Gui.

Daca folosesti scroll panel ma gandesc ca daca imaginile statice le pui ca child al ScrollPanel-ului, se misca automat, iar daca vrei sa faci un bind pentru scroll pui la bindKey cv de genul:

guiScrollPaneSetVerticalScroll(guiScrollPaneGetVerticalScroll +/- o_valoare_numerica)

 

Nu inteleg exact cum vrei sa arate inventarul tau si ce vrei sa folosesti, dx sau GUI. Daca ne dai un exemplu si de preferat o poza chiar o sa incerc sa-mi sparg capul sa vedem daca reusim ceva

Link to post

Oups nu m-am exprimat bine, folosesc o imagine ca fundal deci fara scrollpanel, nu sunt sigur dar parca scrollpanel nu este transparent nu? Ideea e ca nu vreau sa se vada gen sa fie ca in dx. 

Link to post

Un mic exemplu umpic simplificat.

 

local sX, sY = guiGetScreenSize();
local bgW, bgH = 260, 470;
local bgX, bgY = (sX-bgW)/2, (sY-bgH)/2;
local lW = (bgW-15)/2;
local sW = (bgW-25)/4;
local row = 0;

function drawInventory()
	if isInvOpen then
		inventar = guiCreateStaticImage(bgX+(bgW/2), bgY-15, bgW, bgH, "images/bg.png", false); -- Fundalul
		local loot = isPlayerInLoot();
		if loot then
			guix, guiy = bgX+(bgW/1.25), bgY-15;
		else
			guix, guiy = bgX, bgY-15; 
		end
		guiSetPosition(inventar, guix, guiy, false); --Pozitia fundalului
		local offsetX, offsetY = 5, 5;
		width = 0;
		row = 1;
		for i = 1, 7 do
			if i < 3 then width = lW; else width = sW; end
			for _,v in ipairs(inventoryItems[i]) do
				local q = getElementData(localPlayer, v[1]) or 0;
				if (q > 0) then
					if bgW-offsetX < width then
						offsetX = 5;
						offsetY = offsetY+(sW+5);
						row = row + 1;
					end
					local bgImage = guiCreateStaticImage(offsetX, offsetY, width, sW, "images/scoreboard.png", false, inventar); --Imaginea fundalului itemului
					guiSetAlpha(bgImage, 0.1);
					local theItem = guiCreateStaticImage(offsetX, offsetY, width, sW, "images/items/"..v[1]..".png", false, inventar); --Imaginea itemului
					local theLabel = guiCreateLabel(0, 0, 1, 1, "1", true, theItem);
					guiSetFont(theLabel, "default-bold-small");
					alphaTable[theLabel] = bgImage;
					imgDataTable[theLabel] = {npath, width, 1, v[1]};
					offsetX = offsetX + width + 5;
				end
			end
		end
	end
end

-- tentativa de scroll

bindKey("mouse_wheel_up", "down", function()
	if isInvOpen then
		if getMousePosition() == "inventar" then
			if row <= 7 then return; end
			if rowsMoved == 0 then return; end
			local toadd = sW+5;
			rowsMoved = rowsMoved - 1;
			for _,v in ipairs(getElementsByType("gui-staticimage")) do
				if getElementParent(v) == inventar then
					local x, y = guiGetPosition(v, false);
					guiSetPosition(v, x, y+toadd, false);
				end
			end
		end
	end
end);

bindKey("mouse_wheel_down", "down", function()
	if isInvOpen then
		if getMousePosition() == "inventar" then
			if rowsMoved + 7 >= row then return; end
			if rowsMoved == row then return; end
			local toadd = sW+5;
			rowsMoved = rowsMoved + 1;
			for _,v in ipairs(getElementsByType("gui-staticimage")) do
				if getElementParent(v) == inventar then
					local x, y = guiGetPosition(v, false);
					guiSetPosition(v, x, y-toadd, false);
				end
			end
		end
	end
end);

Arata asa: https://imgur.com/a/FegFWat

Dar dupa cateva scrolluri arata asa: https://imgur.com/WqbtGxv

 

N-am incercat inca scrollpane.

Link to post

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...