Jump to content

Guardar rows de una gridlist


Anzo

Recommended Posts

Quiero guardar las row que tiene una gridlist aunque me salga del servidor, mi pregunta es, si tendría que usar algo como esto: 

setElementData(player, "setText",guiGridListSetItemText(gridlist,row,column,"Finalizada",false,false) 

junto con un (y de evento onPlayerQuit/onPlayerLogout, claro): 

setAccountData(account, "getText", setElementData(player, "setText")

Yo intente así pero no me guarda las row:

--Client (2 lineas donde pongo el texto a la grid, y la elementData)
guiGridListSetItemText(gridlist,0,estado,"Finalizada",false,false)
setElementData(localPlayer, "setText", guiGridListSetItemText(gridlist,0,estado,"Finalizada",false,false))

--Server
function saveDatas()
	local account = getPlayerAccount(source)
	if (account) then
        setAccountData(account, "finalizada", getElementData(source,"setText"))
	end
end
addEventHandler("onPlayerQuit", root, saveDatas)
addEventHandler("onPlayerLogout", root, saveDatas)

function loadDatas()
	local account = getPlayerAccount(source)
    if (isGuestAccount(account) == false) then
        local count = getAccountData(account,"finalizada")
		if count then
			setElementData(localPlayer, "setText", count)
		else
			setElementData(localPlayer, "setText", "Error")
		end
	end
end
addEventHandler("onPlayerLogin", root, loadDatas)

Esta es la única forma que sé de guardar elementData's pero con rows no funciona e_E

Link to comment

Deberías explicar un poco mejor lo que quieres hacer y compartir un poco más de código, que, sinceramente, no creo que alguien te quiera robar.

local data = { }

function saveDatas()
	local account = getPlayerAccount(source)
	if (account) then
		local setText = data[ player ]
        setAccountData(account, "finalizada", setText )
	end
end
addEventHandler("onPlayerQuit", root, saveDatas)
addEventHandler("onPlayerLogout", root, saveDatas)

function loadDatas()
	local account = getPlayerAccount(source)
    if (isGuestAccount(account) == false) then
        local count = getAccountData(account,"finalizada")
		if count then
			data[ player ] = { }
			data[ player ] = count
		else
			data[ player ] = { }
			data[ player ] = "Error"
		end
	end
end
addEventHandler("onPlayerLogin", root, loadDatas)

 

Link to comment

Lo que estoy haciendo es un panel de misiones. Tengo una columna que se llama 'estado', y cuando aceptas una cambia a 'En curso', y cuando terminas la misión se pone en 'Finalizada'. Lo que yo quiero es que se guarde ese 'Finalizada' en la cuenta del jugador, tal que si se sale del servidor esa row se guarde, y cuando entre y se registre, le aparezcan las misiones que estaban finalizadas.

Estoy usando variables para saber cuando termino/empezó la misión, y que así no puedan volver a jugar la misión o elegir otra mientras están en una.

La parte donde se pone en 'Finalizada' la row es esta: 

function misionCurs(tipo, dim)
	if not marker then
		if (tipo == localPlayer) then
			if (source == mmker ) then
				if (vent) then
					return
				end
        			--Los addEventHandler y removeEventHandler son solo para que aparezca el texto de misión completada y eso
					removeEventHandler("onClientRender", root, infomision1)
					addEventHandler("onClientRender", root, infomision1)
					showCursor(true,true)
				setTimer(function ()
					removeEventHandler("onClientRender", root, infomision1)
					addEventHandler("onClientRender", root, infomision2)
				end,6000,1)
				setTimer(function ()
					removeEventHandler("onClientRender", root, infomision2)
					removeEventHandler("onClientRender", root, mision1)
				addEventHandler("onClientRender", root, mision1complete)
					vent = true
					start = getTickCount()
					destroyElement(mmker)
					destroyElement(pds)
					destroyElement(bblip)
					setElementDimension(localPlayer, 0)
					guiGridListSetItemText(gridlist,0,estado,"Finalizada",false,false)
					setElementData(localPlayer,"setText", guiGridListSetItemText(gridlist,0,estado,"Finalizada",false,false))
					setElementData(localPlayer, "misionesCompletadas", getElementData(localPlayer, "misionesCompletadas") + 1)
					triggerServerEvent("giveMoney",localPlayer)
					showCursor(false,false)
					acti = false --acti es una variable de otra función, que es cuando empieza la misión.
				end,12000,1)
				setTimer(function ()
					removeEventHandler("onClientRender", root, mision1complete)
				end,18000,1)
				marker = true --Marker la tengo para que el marker solo se pise una vez
			end
		end
	end
end
addEventHandler("onClientMarkerHit", root, misionCurs)

La misión te manda a la dimensión 1 cuando la empiezas, y si pisas el marker te manda a la dim 0 de nuevo, aparecerán unos textos en dx, luego se quitaran, y aparecerán otros y así, después se borra el blip,ped,marker de la misión y se pone el texto de 'Finalizada' a la row que decía 'En curso', después se le sube +1 al texto que tengo que dice: misiones completadas 0/40, te da el dinero, se quita el cursor y se quita el texto de 'Mision Completada'.

(El marker llamado 'mmker' está en otra función, se crea cuando aceptas la misión.

3 hours ago, Simple01 said:

Haz uso de tablas y for numericos para almacenar los rows.

No sé hacer eso. gg

Link to comment
  • Recently Browsing   0 members

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