Jump to content

Ajuda Em SaveSystem


Recommended Posts

Eu sou iniciante em SQLite.. Faz umas semanas que tou praticando, fiz uma savesystem com sqlite.. mais quando eu vou iniciar o script ele dar erro em muitas linhas.. na print não dar pra mostrar.. mais dar pra saber mais ou menos como fica.. eu também fiz outro mod com sqlite mais também tá com erro do mesmo tipo, mais o problema está no dbPoll é dbQuery porque esses não sei usar muito bem, se alguém pode ajudar ficarei muito agradecido

 

function ResourceStart()
	local db = dbConnect("sqlite", "Contas.db")
	dbExec(db, "CREATE TABLE IF NOT EXISTS Dados (Login, Money, Skin, Vida, Colete, Tag, Posicao, Interior, Dimensao, Procurado, Armas)")
	if db then
		print("DataBase: SaveSystem Conectado!")
		for i, v in ipairs(getElementsByType("player")) do
            local acc = getPlayerAccount(v)
            if not isGuestAccount(acc) then
                CarregarDados(v)
            end
        end
	else
		print("DataBase: SaveSystem Falhou!")
	end
end
addEventHandler("onResourceStart", resourceRoot, ResourceStart)

Armas = {}

function SalvarDados(source)
	local conta = getAccountName(getPlayerAccount(source))
	local money = getPlayerMoney(source)
	local roupa = getElementModel(source)
	local vida = getElementHealth(source)
	local colete = getPedArmor(source)
	local r,g,b = getPlayerNametagColor(source)
	local x,y,z = getElementPosition(source)
	local dimensao = getElementDimension(source)
	local interior = getElementInterior(source)
	local procurado = getPlayerWantedLevel(source)
	local tableTag = toJSON(r,g,b)
	local tablePos = toJSON(x,y,z)

	for i = 0,12 do
		local arma = getPedWeapon(source, i)
		local muni = getPedTotalAmmo(source, i)
		if arma > 0 then
			table.insert(Armas,{arma,muni})
		end
	end
	local tableArmas = toJSON(Armas)
	local result = dbPoll(dbQuery(db, "SELECT * FROM Dados WHERE Login = ?", conta), -1)
	if result ~= 0 then
		dbExec(db, "UPDATE Dados SET Money = ?, Dinheiro = ?, Skin = ?, Vida = ?, Colete = ?, Tag = ?, Posicao = ?, Interior = ?, Dimensao = ?, Procurado = ?, Armas = ?, WHERE Login = ?", money, roupa, vida, colete, tableTag, tablePos, dimensao, interior, procurado, tableArmas, conta)
	else
		dbExec(db, "INSERT INTO Dados VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", money, roupa, vida, colete, tableTag, tablePos, dimensao, interior, procurado, tableArmas)
	end
end

function CarregarDados(source)
	local accName = getAccountName(getPlayerAccount(source))
    local result = dbPoll(dbQuery(db, "SELECT * FROM Dados WHERE Login = ?",accName),-1)
	if #result ~= 0 then
		local Money = result[1]["Money"]
		local Skin = result[1]["Skin"]
		local Vida = result[1]["Vida"]
		local Colete = result[1]["Colete"]
		local Tag = fromJSON(result[1]["Tag"])
		local r,g,b  = Tag[1],Tag[2],Tag[3]
		local Pos = fromJSON(result[1]["Posicao"])
		local x,y,z = Pos[1],Pos[2],Pos[3]
		local interior = result[1]["Interior"]
		local dimensao = result[1]["Dimensao"]
		local procurado = result[1]["Procurado"]
		local weapons = fromJSON(result[1]["Armas"])
		spawnPlayer(source, x, y, z, 0, Skin, interior, dimensao, nil)
		setPlayerMoney(source, Money)
		setElementHealth(source, Vida)
		setPedArmor(source, Colete)
		setPlayerNametagColor(source, r,g,b)
		setPlayerWantedLevel(source, procurado)
		fadeCamera(source, true, 5)
		setCameraTarget(source, source)
		if #weapons ~= 0 then
			for i,v in ipairs(weapons) do
				giveWeapon(source, v[1], v[2])
			end
		end
	else
		ComecarDados(source)
		SalvarDados(source)
	end
end

function ComecarDados(source)
	local Dinheiro = 5000
	local x1, y1, z1 = 1177.95886, -1323.29858, 14.09641

	spawnPlayer(source, x1, y1, z1, 0)
	setPlayerMoney(source, Dinheiro)
	fadeCamera(source)
	setCameraTarget(source, source)
end

function MorrerDados(source)
	local RMoney = 200
	local x2, y2, z2 = 1480.93555, -1768.83215, 18.79576

	setTimer(spawnPlayer, 3000, 1, source, x2, y2, z2, 0)
	setCameraTarget(source, source)
	takeAllWeapons(source)
	takePlayerMoney(source, RMoney)
end

function EntrarDados(_, acc)
	local player = getAccountPlayer(acc)

	outputChatBox("#FF0000SaveSystem #FFFFFFFeito Por UserMs!", acc, 255, 255, 255, true)
	CarregarDados(player)
end
addEventHandler("onPlayerLogin", root, EntrarDados)

function SairDados()
	local acc = getPlayerAccount(source)
	if not isGuestAccount(acc) then
		SalvarDados(source)
	end
end
addEventHandler("onPlayerQuit", root, SairDados)

function ResourceStop()
	for i,v in ipairs(getElementsByType("player")) do
        local acc = getPlayerAccount(v)
        if not isGuestAccount(acc) then
        	SalvarDados(v)
        end
    end
end
addEventHandler("onResourceStop", resourceRoot, ResourceStop)

spacer.pngspacer.pngbspacer.png

Link to comment
58 minutes ago, UserMs said:

Eu sou iniciante em SQLite.. Faz umas semanas que tou praticando, fiz uma savesystem com sqlite.. mais quando eu vou iniciar o script ele dar erro em muitas linhas.. na print não dar pra mostrar.. mais dar pra saber mais ou menos como fica.. eu também fiz outro mod com sqlite mais também tá com erro do mesmo tipo, mais o problema está no dbPoll é dbQuery porque esses não sei usar muito bem, se alguém pode ajudar ficarei muito agradecido

 

function ResourceStart()
	local db = dbConnect("sqlite", "Contas.db")
	dbExec(db, "CREATE TABLE IF NOT EXISTS Dados (Login, Money, Skin, Vida, Colete, Tag, Posicao, Interior, Dimensao, Procurado, Armas)")
	if db then
		print("DataBase: SaveSystem Conectado!")
		for i, v in ipairs(getElementsByType("player")) do
            local acc = getPlayerAccount(v)
            if not isGuestAccount(acc) then
                CarregarDados(v)
            end
        end
	else
		print("DataBase: SaveSystem Falhou!")
	end
end
addEventHandler("onResourceStart", resourceRoot, ResourceStart)

Armas = {}

function SalvarDados(source)
	local conta = getAccountName(getPlayerAccount(source))
	local money = getPlayerMoney(source)
	local roupa = getElementModel(source)
	local vida = getElementHealth(source)
	local colete = getPedArmor(source)
	local r,g,b = getPlayerNametagColor(source)
	local x,y,z = getElementPosition(source)
	local dimensao = getElementDimension(source)
	local interior = getElementInterior(source)
	local procurado = getPlayerWantedLevel(source)
	local tableTag = toJSON(r,g,b)
	local tablePos = toJSON(x,y,z)

	for i = 0,12 do
		local arma = getPedWeapon(source, i)
		local muni = getPedTotalAmmo(source, i)
		if arma > 0 then
			table.insert(Armas,{arma,muni})
		end
	end
	local tableArmas = toJSON(Armas)
	local result = dbPoll(dbQuery(db, "SELECT * FROM Dados WHERE Login = ?", conta), -1)
	if result ~= 0 then
		dbExec(db, "UPDATE Dados SET Money = ?, Dinheiro = ?, Skin = ?, Vida = ?, Colete = ?, Tag = ?, Posicao = ?, Interior = ?, Dimensao = ?, Procurado = ?, Armas = ?, WHERE Login = ?", money, roupa, vida, colete, tableTag, tablePos, dimensao, interior, procurado, tableArmas, conta)
	else
		dbExec(db, "INSERT INTO Dados VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", money, roupa, vida, colete, tableTag, tablePos, dimensao, interior, procurado, tableArmas)
	end
end

function CarregarDados(source)
	local accName = getAccountName(getPlayerAccount(source))
    local result = dbPoll(dbQuery(db, "SELECT * FROM Dados WHERE Login = ?",accName),-1)
	if #result ~= 0 then
		local Money = result[1]["Money"]
		local Skin = result[1]["Skin"]
		local Vida = result[1]["Vida"]
		local Colete = result[1]["Colete"]
		local Tag = fromJSON(result[1]["Tag"])
		local r,g,b  = Tag[1],Tag[2],Tag[3]
		local Pos = fromJSON(result[1]["Posicao"])
		local x,y,z = Pos[1],Pos[2],Pos[3]
		local interior = result[1]["Interior"]
		local dimensao = result[1]["Dimensao"]
		local procurado = result[1]["Procurado"]
		local weapons = fromJSON(result[1]["Armas"])
		spawnPlayer(source, x, y, z, 0, Skin, interior, dimensao, nil)
		setPlayerMoney(source, Money)
		setElementHealth(source, Vida)
		setPedArmor(source, Colete)
		setPlayerNametagColor(source, r,g,b)
		setPlayerWantedLevel(source, procurado)
		fadeCamera(source, true, 5)
		setCameraTarget(source, source)
		if #weapons ~= 0 then
			for i,v in ipairs(weapons) do
				giveWeapon(source, v[1], v[2])
			end
		end
	else
		ComecarDados(source)
		SalvarDados(source)
	end
end

function ComecarDados(source)
	local Dinheiro = 5000
	local x1, y1, z1 = 1177.95886, -1323.29858, 14.09641

	spawnPlayer(source, x1, y1, z1, 0)
	setPlayerMoney(source, Dinheiro)
	fadeCamera(source)
	setCameraTarget(source, source)
end

function MorrerDados(source)
	local RMoney = 200
	local x2, y2, z2 = 1480.93555, -1768.83215, 18.79576

	setTimer(spawnPlayer, 3000, 1, source, x2, y2, z2, 0)
	setCameraTarget(source, source)
	takeAllWeapons(source)
	takePlayerMoney(source, RMoney)
end

function EntrarDados(_, acc)
	local player = getAccountPlayer(acc)

	outputChatBox("#FF0000SaveSystem #FFFFFFFeito Por UserMs!", acc, 255, 255, 255, true)
	CarregarDados(player)
end
addEventHandler("onPlayerLogin", root, EntrarDados)

function SairDados()
	local acc = getPlayerAccount(source)
	if not isGuestAccount(acc) then
		SalvarDados(source)
	end
end
addEventHandler("onPlayerQuit", root, SairDados)

function ResourceStop()
	for i,v in ipairs(getElementsByType("player")) do
        local acc = getPlayerAccount(v)
        if not isGuestAccount(acc) then
        	SalvarDados(v)
        end
    end
end
addEventHandler("onResourceStop", resourceRoot, ResourceStop)

spacer.pngspacer.pngbspacer.png

Resolvido!

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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