Olá estou criando um sistema de inventario que está funcionando bem, player pega o item do lado do server, e faço um trigger evento para o lado do client, entao coloco ele em uma gridlist que pode ser aberta pelo player logicamente e ver seu inventario, o problema está quando ele sai do server, queria poder pegar o item da grid list, e salvar no setAccountData, entao quando player entrar, usar um getAccountData e transferir informações para o client, e do lado do client refazer o inventario dele! não sei se isso ta certo, porem eu acredito que isso seja a solução, por enquanto parte do codigo está assim!
function SalvarInv()
item1 = guiGridListGetItemText(coluna,1,1)
item2 = guiGridListGetItemText(coluna,2,1)
item3 = guiGridListGetItemText(coluna,3,1)
item4 = guiGridListGetItemText(coluna,4,1)...
...
item40 = guiGridListGetItemText(coluna,40,1)
triggerServerEvent("SalvarInventario1",localPlayer)
end
addEventHandler("onClientPlayerQuit",getRootElement(),SalvarInv)
tentei pegar os items da grid list e mandei para o server
addEvent("SalvarInventario1",true)
function saveAccountData(localPlayer)
if isGuestAccount (localPlayer) then
return
end
setAccountData(localPlayer,"Item1",item1)
setAccountData(localPlayer,"Item2",item2)...
... setAccountData(localPlayer,"Item39",item39)
setAccountData(localPlayer,"Item40",item40)
end
addEventHandler("SalvarInventario1",getRootElement(),saveAccountData)
tentei isso, entao quando o player entrar pegar o elemento e mandar a informação para o client refazer sua gridlist, porem acredito que aqui esta o problema, pois fazendo alguns testes vi que nao esta conseguindo pegar os itens (talvez nem tenha salvado)
function SetandoItem( _,localPlayer )
if isGuestAccount ( localPlayer ) then
return
end
local accountData = getAccountData (localPlayer, "Item1")
if (accountData) then
item1 = getAccountData(localPlayer,"Item1")
item2 =getAccountData(localPlayer,"Item2")...
... item38=getAccountData(localPlayer,"Item38")
item39=getAccountData(localPlayer,"Item39")
item40=getAccountData(localPlayer,"Item40")
triggerClientEvent(localPlayer,"ItensCarregadosDataBase",localPlayer)
else
setElementData(source,"Mochila","Lancheira Escolar")--ele ta pulando para essa parte, fiz o teste com a linha de baixo
setElementData(source,"Tamanho",10)
end
end
addEventHandler ( 'onPlayerLogin', root,SetandoItem)
apos isso tento por ele no lado do client e colocalo na gridlist
addEventHandler("ItensCarregadosDataBase",true)
function Adicionandoitem()
row = guiGridListAddRow(coluna)--coluna é o nome da gridlist
guiGridListSetItemText(coluna,row,citem,tostring(item1),false,false)
guiGridListSetItemText(coluna,row,qitem,1,false,false)
row2 = guiGridListAddRow(coluna)
guiGridListSetItemText(coluna,row2,citem,tostring(item2),false,false)
guiGridListSetItemText(coluna,row2,qitem,1,false,false)...
... row40 = guiGridListAddRow(coluna)
guiGridListSetItemText(coluna,row40,citem,tostring(item40),false,false)
guiGridListSetItemText(coluna,row40,qitem,1,false,false)
end
addEventHandler("ItensCarregadosDataBase",getRootElement(),Adicionandoitem)
É a primeira vez que to usando o AccountData, não sei bem como funciona então o codigo tem erros, porem nao sei como consertar!