Anzo Posted September 9, 2016 Share Posted September 9, 2016 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
Simple0x47 Posted September 10, 2016 Share Posted September 10, 2016 Haz uso de tablas y for numericos para almacenar los rows. Link to comment
aka Blue Posted September 10, 2016 Share Posted September 10, 2016 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
Anzo Posted September 10, 2016 Author Share Posted September 10, 2016 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
Recommended Posts