#DeltaSCR Posted April 11, 2019 Share Posted April 11, 2019 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) Link to comment
DNL291 Posted April 12, 2019 Share Posted April 12, 2019 (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 April 12, 2019 by DNL291 1 Link to comment
Other Languages Moderators Lord Henry Posted April 12, 2019 Other Languages Moderators Share Posted April 12, 2019 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? Link to comment
#DeltaSCR Posted April 12, 2019 Author Share Posted April 12, 2019 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... Link to comment
Other Languages Moderators Lord Henry Posted April 12, 2019 Other Languages Moderators Share Posted April 12, 2019 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. Link to comment
#DeltaSCR Posted April 12, 2019 Author Share Posted April 12, 2019 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? Link to comment
Other Languages Moderators Lord Henry Posted April 12, 2019 Other Languages Moderators Share Posted April 12, 2019 (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 April 12, 2019 by Lord Henry 1 Link to comment
#DeltaSCR Posted April 12, 2019 Author Share Posted April 12, 2019 (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 April 12, 2019 by #DeltaSCR Link to comment
Other Languages Moderators Lord Henry Posted April 12, 2019 Other Languages Moderators Share Posted April 12, 2019 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. Link to comment
#DeltaSCR Posted April 12, 2019 Author Share Posted April 12, 2019 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? Link to comment
Other Languages Moderators Lord Henry Posted April 12, 2019 Other Languages Moderators Share Posted April 12, 2019 Esse sistema independente ficará fora do servidor? Ou acessível por sites externos? Link to comment
#DeltaSCR Posted April 13, 2019 Author Share Posted April 13, 2019 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 Link to comment
Other Languages Moderators Lord Henry Posted April 13, 2019 Other Languages Moderators Share Posted April 13, 2019 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? Link to comment
#DeltaSCR Posted April 13, 2019 Author Share Posted April 13, 2019 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 Link to comment
Jonas^ Posted April 13, 2019 Share Posted April 13, 2019 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 Link to comment
Other Languages Moderators Lord Henry Posted April 13, 2019 Other Languages Moderators Share Posted April 13, 2019 (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 April 13, 2019 by Lord Henry Link to comment
#DeltaSCR Posted April 14, 2019 Author Share Posted April 14, 2019 Então se eu usar setAccountData, mesmo que o servidor reinicie eu não perco nada? Link to comment
Jonas^ Posted April 14, 2019 Share Posted April 14, 2019 5 minutes ago, #DeltaSCR said: Então se eu usar setAccountData, mesmo que o servidor reinicie eu não perco nada? é. Link to comment
#DeltaSCR Posted April 14, 2019 Author Share Posted April 14, 2019 Ta, mas agora fiquei em dúvida, setAccountData tem diferença com usar executeSQLQuery? Se sim, me explique pls Link to comment
Other Languages Moderators Lord Henry Posted April 15, 2019 Other Languages Moderators Share Posted April 15, 2019 (edited) A diferença está explicada lá naquele meu tópico. Edited April 15, 2019 by Lord Henry Link to comment
#DeltaSCR Posted April 17, 2019 Author Share Posted April 17, 2019 Ok, sei que é mais difícil, porém ainda sim desejo aprender com a database mesmo, sem ser a do próprio MTA... Link to comment
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