Jump to content

[AJUDA]Preciso de ajuda com GridList


Recommended Posts

Olá, To aki denovo com mais uma duvida de novato em .LUA, bem vamos la:

Tenho um servidor RPG ('-') e estou criando uma agencia de emprego, ja fiz o painel todo bunitinho e os markers todo corretos,3

Porem usei GUI* pra fazer o painel, no painel terá uma gridlist com a lista de empregos

*Gostaria de saber como fazer para que ao player dar DoubleClick na Gridlist criar um Blip no mapa  onde o jogador teria que ir para pegar o emprego.

 

 

OBS: Os empregos ja estao feitos

OBS2: Ja li tudo sobre gridlist no forum mas n consegui entender =\ Alguem ajuda ai

Link to comment
4 hours ago, Lord Henry said:

Leia mais a Wiki além do fórum.

Use este evento: OnClientGUIDoubleClick

Procurei em outros foruns e mesmo assim nao consegui entender '-' (Sou uma merda mermao)

 

Esse é o meu codigo:

 


local dentro = createMarker (363.2766418457,173.5816192627,1008.3828125 -1, "cylinder", 1.3, 255,255, 224) -- Marker
setElementInterior (dentro,3)
setElementDimension (dentro,0)

function painelteste(hitEle)
        if (localPlayer == hitEle) then
        Janela = guiCreateWindow(506, 206, 275, 398, "AGÊNCIA DE EMPREGOS", false)
        guiWindowSetSizable(Janela, false)
        guiSetProperty(Janela, "CaptionColour", "FF1C31F7")
        lista = guiCreateGridList(9, 43, 256, 345, false, Janela)
        guiGridListAddColumn(lista, "Emprego", 0.3)
        guiGridListAddColumn(lista, "", 0.3)
        guiGridListAddColumn(lista, "Level", 0.3)
        guiGridListAddRow(lista)
        Mecanico = guiGridListSetItemText(lista, 0, 1, "Mecanico", false, false)
        guiGridListSetItemText(lista, 0, 3, "-", false, false)    
        clos = guiCreateButton(185, 28, 75, 22, "Fechar", false, Janela)
        guiSetFont(clos, "default-bold-small")
        guiSetProperty(clos, "NormalTextColour", "FFFF0000")   
        msg2 = guiCreateLabel(10, 533, 117, 58, "BY: #TEUS", false, janela)
        guiSetFont(msg2, "default-bold-small")
        guiLabelSetColor(msg2, 62, 39, 39)
        guiLabelSetHorizontalAlign(msg2, "center", false)
        guiLabelSetVerticalAlign(msg2, "center")
        guiGridListGetSelectedItem(lista, 1)
		
		showCursor (true)
		addEventHandler ("onClientGUIClick", clos, fecharpainel, false)
	end
end
addEventHandler ( "onClientMarkerHit", dentro, painelteste )

function fecharpainel(LeaveEle)
if (localPlayer == LeaveEle) then
showCursor (false)
guiSetVisible( Janela, false)
guiSetVisible( msg2, false)
	end
end
addEventHandler ( "onClientMarkerLeave", dentro, fecharpainel )

Oque preciso fazer pra que quando clicar na opçao mecanico ela criar o blip no mapa? (E mandar uma msg dx que ja sei fazer...)

 

Link to comment
  • Other Languages Moderators

As listas são elementos GUI comuns. Assim como as janelas, botões, memos, caixas de edição, caixas de seleção, textos, etc. Só você anexar o evento de clique na lista e executar uma função específica.

  • Like 1
Link to comment
10 minutes ago, Lord Henry said:

As listas são elementos GUI comuns. Assim como as janelas, botões, memos, caixas de edição, caixas de seleção, textos, etc. Só você anexar o evento de clique na lista e executar uma função específica.

Ok, Obrigado pela ajuda!

 

Link to comment
  • Other Languages Moderators

Seu painel estava cheio de erros com elementos em posições nada a ver.
Além disso você não deve criar o painel ao ativá-lo, crie direto ao iniciar o resource e logo em seguida oculte a janela principal.

Ao colidir no marker ativador, apenas mostre a janela principal ao jogador e o cursor.

A função para fechar o painel com o botão "FECHAR" apenas oculta a janela principal e o cursor novamente.

Obs: A parte de destruir o blip depois que o jogador chega no emprego dai é com você.

dentro = createMarker (363.27, 173.58, 1007.4, "cylinder", 1.3, 255, 255, 224) -- Marker
setElementInterior (dentro, 3)
setElementDimension (dentro, 1) -- Se for usar na dimensão 0, então nem precisa desta linha.

blip = {} -- declarei a variável fora da função para que ela possa ser lida por todas as funções.

local x, y = guiGetScreenSize ()
janela = guiCreateWindow (x/2 - 140, y/2 - 200, 280, 400, "AGÊNCIA DE EMPREGOS", false)
guiWindowSetSizable (janela, false)
guiSetProperty (janela, "CaptionColour", "FF1C31F7")
lista = guiCreateGridList (10, 20, 260, 330, false, janela)
guiGridListAddColumn (lista, "Emprego", 0.5)
guiGridListAddColumn (lista, "Level", 0.3)
itemMecanico = guiGridListAddRow (lista, "Mecânico", "-") 
clos = guiCreateButton (280/2 - 40, 360, 80, 30, "FECHAR", false, janela)
guiSetFont (clos, "default-bold-small")
guiSetProperty (clos, "NormalTextColour", "FFFF0000")   
msg2 = guiCreateLabel (10, 365, 90, 20, "BY: #TEUS", false, janela)
guiSetFont (msg2, "default-bold-small")
guiLabelSetColor (msg2, 62, 39, 39)
guiLabelSetHorizontalAlign (msg2, "center", false)
guiLabelSetVerticalAlign (msg2, "center")
guiSetVisible (janela, false)

function abrirpainel (hitElement)
	if (localPlayer == hitElement) then
		showCursor (true)
		guiSetVisible (janela, true)
	end
end
addEventHandler ("onClientMarkerHit", dentro, abrirpainel)

function fecharpainel ()
	if guiGetVisible (janela) then
		showCursor (false)
		guiSetVisible (janela, false)
	end
end
addEventHandler ("onClientGUIClick", clos, fecharpainel)

function selectionItem (button, state)
	if button == "left" and state == "up" then
		local linha, coluna = guiGridListGetSelectedItem (lista)
		if linha == 0 then -- Se o item selecionado for o primeiro da lista, então:
			guiSetVisible (janela, false)
			showCursor (false)
			blip[localPlayer] = createBlip (0, 0, 4, 41) -- (mude para a coordenada do emprego de Mecânico.)
			outputChatBox ("Emprego marcado: "..guiGridListGetItemText (lista, linha, coluna), 255, 255, 0)
		elseif linha == 1 then -- Se o item selecionado for o segundo da lista, então:
			guiSetVisible (janela, false)
			showCursor (false)
			blip[localPlayer] = createBlip (10, 10, 4, 41)
			outputChatBox ("Emprego marcado: "..guiGridListGetItemText (lista, linha, coluna), 255, 255, 0)
		end
	end
end
addEventHandler ("onClientGUIDoubleClick", lista, selectionItem)

Dica para destruir o blip: Crie outro marker no lugar de chegada e ao colidir neste marker, delete o blip do seu hitElement, se existir um.

  • Thanks 1
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...