AlfaMTA Posted March 31, 2014 Posted March 31, 2014 Olá a todos! Gostaria que me ajudassem a usar o setAccountData e getAccountData string getAccountData ( account theAccount, string key ) setAccountData ( account theAccount, string key, string value ) O string key é oque? Para que serve? Tenho que criar? Como eu criou? Podem me dar uns exemplos para ajudar a entender melhor ??? Agradeço mais uma vez a todos! - C#|VB|Pascal Programmer - Lua Script Beginner
manawydan Posted April 1, 2014 Posted April 1, 2014 um exemplo que fiz(n tenho certeza se vai funfa). addEventHandler("onPlayerQuit",root, function() local conta = getPlayerAccount(source) if (conta) then local vida = getElementHealth(source) setAccountData(conta,"vida",vida) end end) addEventHandler("onPlayerLogin",root, function() local conta = getPlayerAccount(source) if (conta) then local Valor = getAccountData (conta,"vida") if (Valor) then setElementHealth(source,tonumber(Valor)) end end end) Quando o jogador sair do server, se ele tiver uma conta vamos pegar a vida dele e salva na sua conta, com a string "vida". Entao quando este logar vai receber a vida de acordo com o numero que foi salvo quando ele saiu. È quase a mesma coisa q set/get ElementData. Espero ter ajudado! "Querer não é poder, mas tentar é avançar"!
AlfaMTA Posted April 5, 2014 Author Posted April 5, 2014 um exemplo que fiz(n tenho certeza se vai funfa). addEventHandler("onPlayerQuit",root, function() local conta = getPlayerAccount(source) if (conta) then local vida = getElementHealth(source) setAccountData(conta,"vida",vida) end end) addEventHandler("onPlayerLogin",root, function() local conta = getPlayerAccount(source) if (conta) then local Valor = getAccountData (conta,"vida") if (Valor) then setElementHealth(source,tonumber(Valor)) end end end) Quando o jogador sair do server, se ele tiver uma conta vamos pegar a vida dele e salva na sua conta, com a string "vida". Entao quando este logar vai receber a vida de acordo com o numero que foi salvo quando ele saiu. È quase a mesma coisa q set/get ElementData. Espero ter ajudado! Muito interessante, ajudou bastante e já fiz vários testes com essa função! Gostaria também se tem como eu buscar os valores via getAccountData quando o jogar estiver "Offline" e gostaria de pedir uma mãozinha Eu estou querendo criar um sistema de gang e queria saber se é possível usar o getAccountData e o setAccountData para fazer esse sistema ou se eu preciso usar XML para salvar a lista das gangs e no caso do XML , se puder, me recomendar algum tutorial ou tópico que me possa ajudar a entender como trabalhar com o XML no lua do MTA Fico muito! Mas muito grato a você! Valeu - C#|VB|Pascal Programmer - Lua Script Beginner
manawydan Posted April 5, 2014 Posted April 5, 2014 acho que voce pode usar xml ou sql pra salvar dados quando o jogador estiver ofline. xml: https://wiki.multitheftauto.com/wiki/Se ... _functions sql: https://wiki.multitheftauto.com/wiki/Se ... _functions Na minha opinião sql é melhor, entretanto um pouco mais dificil de mecher. "Querer não é poder, mas tentar é avançar"!
AlfaMTA Posted April 5, 2014 Author Posted April 5, 2014 E tipo se eu usar o SQL eu tenho que ter 2 servidores rodando então?? Tipo o do MTA e o do Base de dados? Ou tem como por tudo no MTA ?? Obrigadão - C#|VB|Pascal Programmer - Lua Script Beginner
manawydan Posted April 5, 2014 Posted April 5, 2014 Então, no sql vc pode tanto usa o banco de dados do mta e ir criando tabelas, colocando dados... ou voce pode criar um banco de dados do zero e colocar no mta, não necessita ter 2 server pra isso. "Querer não é poder, mas tentar é avançar"!
manawydan Posted April 5, 2014 Posted April 5, 2014 eu fiz esse mod pra salvar item do inventario do meu server: executeSQLQuery( 'CREATE TABLE IF NOT EXISTS ItensInventarioChao ( model,x,y,z,itemid,id)' ) addCommandHandler("item", function(p,cm,model,itemid) local acc = getPlayerAccount(p) if isObjectInACLGroup( 'user.'..getAccountName(acc), aclGetGroup ( 'Admin' ) ) then local x,y,z = getElementPosition(p) --local rx,ry,rz = getElementRotation(p) z =z-0.8 local allLo = executeSQLQuery( "SELECT * FROM ItensInventarioChao" ) id = #allLo+ 1 executeSQLQuery( "INSERT INTO ItensInventarioChao ( model,x,y,z,itemid,id ) VALUES ( "..model..","..x..", "..y..", "..z..", "..itemid..", "..id..")" ) print("Criando") end end) addCommandHandler("criar", function(p) local acc = getPlayerAccount(p) if isObjectInACLGroup( 'user.'..getAccountName(acc), aclGetGroup ( 'Admin' ) ) then local GetAllLom = executeSQLQuery( "SELECT * FROM ItensInventarioChao" ) if ( type ( GetAllLom ) == "table" and #GetAllLom > 0 ) then for i = 1, #GetAllLom do local n = {GetAllLom[i]["model"],GetAllLom[i]["x"], GetAllLom[i]["y"], GetAllLom[i]["z"], GetAllLom[i]["itemid"]} for ii = 1, #n do n[ ii ] = tonumber( n[ ii ] ) end local item = createInventoryObject(n[1],n[2],n[3],n[4],n[5]) end end end end) a função createInventoryObject é uma funcao que fiz q cria o objeto nas cordenadas e adiciona data a ele. Com esse script eu n precisei criar nenhum banco de dados nem nada apenas fiz as coisas por script.No caso esses dados sql ficam salvos no mta. "Querer não é poder, mas tentar é avançar"!
AlfaMTA Posted April 6, 2014 Author Posted April 6, 2014 eu fiz esse mod pra salvar item do inventario do meu server: executeSQLQuery( 'CREATE TABLE IF NOT EXISTS ItensInventarioChao ( model,x,y,z,itemid,id)' ) addCommandHandler("item", function(p,cm,model,itemid) local acc = getPlayerAccount(p) if isObjectInACLGroup( 'user.'..getAccountName(acc), aclGetGroup ( 'Admin' ) ) then local x,y,z = getElementPosition(p) --local rx,ry,rz = getElementRotation(p) z =z-0.8 local allLo = executeSQLQuery( "SELECT * FROM ItensInventarioChao" ) id = #allLo+ 1 executeSQLQuery( "INSERT INTO ItensInventarioChao ( model,x,y,z,itemid,id ) VALUES ( "..model..","..x..", "..y..", "..z..", "..itemid..", "..id..")" ) print("Criando") end end) addCommandHandler("criar", function(p) local acc = getPlayerAccount(p) if isObjectInACLGroup( 'user.'..getAccountName(acc), aclGetGroup ( 'Admin' ) ) then local GetAllLom = executeSQLQuery( "SELECT * FROM ItensInventarioChao" ) if ( type ( GetAllLom ) == "table" and #GetAllLom > 0 ) then for i = 1, #GetAllLom do local n = {GetAllLom[i]["model"],GetAllLom[i]["x"], GetAllLom[i]["y"], GetAllLom[i]["z"], GetAllLom[i]["itemid"]} for ii = 1, #n do n[ ii ] = tonumber( n[ ii ] ) end local item = createInventoryObject(n[1],n[2],n[3],n[4],n[5]) end end end end) a função createInventoryObject é uma funcao que fiz q cria o objeto nas cordenadas e adiciona data a ele. Com esse script eu n precisei criar nenhum banco de dados nem nada apenas fiz as coisas por script.No caso esses dados sql ficam salvos no mta. Nossa brigadão mesmo! Só tenho uma duvida id = #allLo+ 1 Esse # faz oque?? Valeu pela força! - C#|VB|Pascal Programmer - Lua Script Beginner
manawydan Posted April 7, 2014 Posted April 7, 2014 retorna o "tamanho" de uma tabela. ex: local t ={"a",x,9,"foo"} local tamanho = #t print(tamanho) o print sera 4 porque nossa tabelas apresenta 4 valores. "Querer não é poder, mas tentar é avançar"!
Stanley Sathler Posted May 10, 2014 Posted May 10, 2014 O primeiro argumento da função getAccountData() é a conta do jogador. A conta se obtém por getPlayerAccount() e, para uso desta última, o jogador precisa estar online. Logo, acredito que o getAccountData() também só possa ser usado dessa maneira. Essa função utiliza a base de dados SQLite, nativa do Multi Theft Auto. Software Engineer & Entrepreneur • Running Lustrel and VilarikA • Highly engaged on open source community
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now