Jump to content

Dúvida com Database


Recommended Posts

Posted

Olá, eu estou desenvolvendo um código e me vi a necessidade de usar uma database, porém não entendo nada do assunto, eu andei dando uma lida no tutorial do @Lord Henry porém não entendi como por cada coisa em pratica;

O que eu quero fazer: Uma Loja de Skins, que a mesma tem um botão de usar, na hora que ele apertar o botão de Comprar, se ele já tiver a Skin comprada, aparece uma mensagem para apertar no outro botão (Botão de usar a Skin), porém estou em dúvidas nessa parte de obter se ele tem a skin... Enfim, na Database em Geral. Se pudessem me ajudar ficaria agradecido :)

function DeltaSCR_Comprar (_, state)
	if DeltaSCR_Painel == true then
		if state == "down" then
			if isCursorOnElement (screenW * 0.5295, screenH * 0.5583, screenW * 0.1094, screenH * 0.0500) then -- //CANCELAR
				DeltaSCR_Abrir ()
			elseif isCursorOnElement (screenW * 0.5295, screenH * 0.4917, screenW * 0.1094, screenH * 0.0500) then -- //USAR
				
			elseif isCursorOnElement (screenW * 0.5295, screenH * 0.4250, screenW * 0.1094, screenH * 0.0500) then -- //COMPRAR
				local rowItem = guiGridListGetSelectedItem (skinsList)
				if rowItem ~= -1 then
					if guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 1" then
						setElementModel (localPlayer, 0)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 2" then
						setElementModel (localPlayer, 1)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 3" then
						setElementModel (localPlayer, 2)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 4" then
						setElementModel (localPlayer, 7)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 5" then
						setElementModel (localPlayer, 9)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 6" then
						setElementModel (localPlayer, 10)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 7" then
						setElementModel (localPlayer, 11)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					elseif guiGridListGetItemText (skinsList, rowItem, 1) == "Skin 8" then
						setElementModel (localPlayer, 12)
						takePlayerMoney (300)
						DeltaSCR_Abrir ()
					end
				end
			end
		end
	end
end
addEventHandler ("onClientClick", getRootElement(), DeltaSCR_Comprar)

 

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted (edited)

Esse código é do lado cliente e o que vai precisar é fazer toda a parte do banco de dados e carregamento no lado server. A consulta na base de dados não precisa ser a todo momento que verificar o que o jogador possui, pra isso tem as tabelas ou element-data que você pode armazenar temporariamente no jogador, e para fazer uma verificação entre UI/jogador local (client) e os dados do jogador (server) você vai precisar da função triggerServerEvent client > server e triggerClientEvent server > client.

Edited by DNL291
  • Like 1

Please do not PM me with scripting related question nor support, use the forums instead.

  • Moderators
Posted
1 hour ago, #DeltaSCR said:

u andei dando uma lida no tutorial do @Lord Henry porém não entendi como por cada coisa em pratica

O que exatamente vc não entendeu? A parte de criar o banco de dados?

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
1 minute ago, Lord Henry said:

O que exatamente vc não entendeu? A parte de criar o banco de dados?

Tipo, eu li o seu tutorial, e entendi mais ou menos o que cada coisa faz, porém não entendi como por em pratica, Por exemplo: Como criar o banco de dados, onde encaixar no código, o que vem antes, e o que vem depois... 

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Lá no final tem um exemplo de cada coisa, além da sintaxe de criar o banco de dados. Está dentro de um spoiler.

Spoiler

Tipo esse.

 

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

Ok, então o primeiro passo, no caso criar o banco de dados seria nesse modelo?

executeSQLQuery ("CREATE TABLE IF NOT EXISTS tabelaLegal (ID INTEGER NOT NULL PRIMARY KEY, PosX REAL, PosY REAL, PosZ REAL, accountName TEXT)")

Tipo, como estou trabalhando com uma Loja de Skins, acha que somente uma coluna (ID) basta? Ou precisa criar algo a mais?

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted (edited)

Dai isso vem com a lógica mano. Vc é quem deve saber quantas colunas deve ter na tabela. Quais dados serão salvos.

Antes de criar uma tabela nova no banco de dados, vc já deve saber quais dados serão armazenados lá.

É o mesmo que tentar criar um painel sem saber quais botões e campos terão nele.

Edited by Lord Henry
  • Thanks 1

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted (edited)

Ah sim... Tipo, qual a diferença entre executeSQLQuery e os as funções db (dbConnect, etc)? Quando eu uso cada um desses?

Edited by #DeltaSCR

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

As funções db criam um banco de dados customizado, enquanto que o executeSQLQuery usa o banco de dados nativo do MTA registry.db

Eu acho mais fácil usar o banco de dados nativo do MTA.

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
9 hours ago, Lord Henry said:

As funções db criam um banco de dados customizado, enquanto que o executeSQLQuery usa o banco de dados nativo do MTA registry.db

Eu acho mais fácil usar o banco de dados nativo do MTA.

Ah sim, eu vou usar funções db, pois quero meio que um sistema independente, aí nesse caso, o que eu usaria para criar a tabela?

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Esse sistema independente ficará fora do servidor? Ou acessível por sites externos?

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
19 hours ago, Lord Henry said:

Esse sistema independente ficará fora do servidor? Ou acessível por sites externos?

Tipo, o que vai acontecer é: O Player abre um painel de Skins, quando ele apertar no botão de usar, vai chegar a database; No caso só um arquivo mesmo de database, que vai ficar somente nos arquivos do Servidor

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Se vai ficar no servidor, pra quê criar um banco de dados novo? É mais fácil usar o banco de dados nativo.

Se vc já está com dificuldade em fazer o mais fácil, pq quer tentar o mais difícil?

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
2 hours ago, Lord Henry said:

Se vai ficar no servidor, pra quê criar um banco de dados novo? É mais fácil usar o banco de dados nativo.

Se vc já está com dificuldade em fazer o mais fácil, pq quer tentar o mais difícil?

Por que como eu te disse, quero produzir o código totalmente independente, pois exemplo, caso o servidor reinicie, se eu tiver o arquivo database, eu não perco nada

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted
1 hour ago, #DeltaSCR said:

Por que como eu te disse, quero produzir o código totalmente independente, pois exemplo, caso o servidor reinicie, se eu tiver o arquivo database, eu não perco nada

Mas não tem como perder, use setAccountData diretamente e não setElementData se não quer arriscar em perder dados caso o servidor de crash por exemplo

  • Moderators
Posted (edited)

Como mencionado pelo nosso colega acima, os bancos de dados nativos do MTA não se perdem ao reiniciar o servidor.

Não sei de onde vc inventou que perde...

Edited by Lord Henry

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

Ta, mas agora fiquei em dúvida, setAccountData tem diferença com usar executeSQLQuery? Se sim, me explique pls

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted (edited)

A diferença está explicada lá naquele meu tópico.

Edited by Lord Henry

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

Ok, sei que é mais difícil, porém ainda sim desejo aprender com a database mesmo, sem ser a do próprio MTA...

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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