Banco de Dados online fácil de configurar

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade Banco de Dados online fácil de configurar

Mensagem por TRFN em Sex 28 Fev 2014, 16:21

Criado por: Tulio R. F. Nascimento

Então, pensando em facilitar a tarefa de criar bancos de dados online, eu fiz dois scripts que fazem algo simples, mas funcional. Eu batizei um de ini_ftp_open() e o outro de ini_ftp_close(). O funcionamento e uso é bem intuitivo: Você altera um valor, busca um valor ou até mesmo cria um banco de dados online como se estivesse editando um arquivo de configuração INI. Esses Scripts são mais recomendados para Game Maker 8.

Sem mais delongas, os scripts :

ini_ftp_open :
Código:
file = string( argument3 );
ftp = string( argument0 );
pass = string( argument2 );
user = string( argument1 );
execute = '
set "comm=%temp%%random%%random%%random%%random%%random%.ftp"

@(
echo open ' + ftp + '
echo ' + user + '
echo ' + pass + '
echo hash
echo asc
echo get ' + file + '
echo bye
) > %comm%

ftp -s:%comm%
del %comm% /q /s

';

hide = '
set objshell = createobject ("wscript.shell")
objshell.run "atualiza.cmd" , vbhide, true
';

a = file_text_open_write( "atualiza.cmd" );
file_text_write_string( a, execute );  
file_text_close( a );

a = file_text_open_write( "init.vbs" );
file_text_write_string( a, hide );  
file_text_close( a );
        
_filename = "";
filename = "";
_dir = "";
dir = "";
init_reg = false;
for( i = string_length( file ); i > 0; i -= 1 ){
     if( string_char_at( file, i ) == "/" )then break;
     _filename += string_char_at( file, i );
     }

for( i = string_length( _filename ); i > 0; i -= 1 ){
     filename += string_char_at( _filename, i );
     }
    
for( i = string_length( file ); i > 0; i -= 1 ){
     if( string_char_at( file, i ) == "/" )then init_reg = true;
     if( init_reg )then _dir += string_char_at( file, i );
     }

for( i = string_length( _dir ); i > 0; i -= 1 ){
     dir += string_char_at( _dir, i );
     }

    
execute_program( 'wscript.exe /nologo "' + working_directory + '\init.vbs"', "", true );

file_delete( "init.vbs" );
file_delete( "atualiza.cmd" );
CLOSEFTP_filename = filename;
CLOSEFTP_dir = dir;
CLOSEFTP_ftp = ftp;
CLOSEFTP_user = user;
CLOSEFTP_pass = pass;
ini_open( filename );

ini_ftp_close :
Código:
ini_close();
if( CLOSEFTP_dir != "" )then CLOSEFTP_dir = 'echo cd' + CLOSEFTP_dir;
execute = '
set "comm=%temp%%random%%random%%random%%random%%random%.ftp"

@(
echo open ' + CLOSEFTP_ftp + '
echo ' + CLOSEFTP_user + '
echo ' + CLOSEFTP_pass + '
echo hash
echo asc
' + CLOSEFTP_dir + '
echo put ' + CLOSEFTP_filename + '
echo bye
) > %comm%

ftp -s:%comm%
del %comm% /q /s

';

hide = '
set objshell = createobject ("wscript.shell")
objshell.run "atualiza.cmd" , vbhide, true
';

a = file_text_open_write( "atualiza.cmd" );
file_text_write_string( a, execute );  
file_text_close( a );

a = file_text_open_write( "init.vbs" );
file_text_write_string( a, hide );  
file_text_close( a );

dir = working_directory;
    
execute_program( 'wscript.exe /nologo "' + dir + '\init.vbs"', "", true );

file_delete( "init.vbs" );
file_delete( "atualiza.cmd" );
file_delete( CLOSEFTP_filename );

Para usar é muito fácil, use esta sintaxe, apos criar os scripts ( óbvio ) :

Código:

ini_ftp_open( "host", "usuário", "senha", "arquivo" );
// Manipule o arquivo ini como quiser //
ini_ftp_close();

E o arquivo INI será alterado online, ou seja, um banco de dados online.
Se o arquivo que ele tenta acessar no servidor não existir ele tenta cria-lo.

Exemplo:

Código:

ini_ftp_open( // Acessa o FTP
          "ftp.servidordojogo.com.br" // FTP Server
          "joaocarlos" // Usuário
          "carlos1996" // Senha
          "lendas_da_vovo_mafalda.ini" // Arquivo INI para DB
          );
ini_write_string( "personagens", "p1", "mafalda" ); // Exemplo de alteração nativa do GM
ini_ftp_close(); // Salva o arquivo online

Vantagens:

  1. Usa funções nativas do próprio GM para alterar o banco de dados, facilitando o uso e melhorando a performace.
  2. Não faz uso de DLLs

Contra:

  1. Não é tão rápido assim e a velocidade de execução depende do tamanho do banco de dados.


Para fins técnicos: Para o desenvolvimento foi usado o Batch-Script, Visual Basic Script e GML para criação.

Quem não souber o que é um Script, ou como se cria funções no GM basta pesquisar no fórum sobre. Quem não souber o que é FTP faça uma breve pesquisa no Google para saber mais sobre este recurso.

Espero que façam bom uso. Até logo!

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por PedroX em Sex 28 Fev 2014, 16:27

Muito bom TRFN! Parabéns pelo bom domínio em Batch e VB Script. Para quem usa o GM:8, é uma ótima ferramenta.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por Tedi Ripper em Sex 28 Fev 2014, 17:18

Legal cara, eu tava usando um sistema interessante pra uma especie de Rede social que eu tava fazendo, o ruim é que se alguém burla seu jogo, consegue abrir seu FTP e alterar tudo =/

Para qualquer caso, gostei do script, deixou muito mais organizado haha Recebeu meu like (+1)

Flw flw

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por theguitarmester em Sab 01 Mar 2014, 15:27

(tinha escrito outro comentário ontem mas o celular desligou quando fui postar).

Eu tava precisando disto, mas só que para o GMS e que fosse exclusivo a windows, para o meu projeto atual, mas pode ser de grande ajuda em algum projeto menor(ou maior) que venha fazer para windows no GM8.

continue postando bons scripts, caso saiba, poste scripts para recursos online pelo gms.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por TRFN em Qua 05 Mar 2014, 15:30

Valeu gente pela opinião. Fiz esse sistema mais porque as vezes vejo muitos que ficam perdidos na hora de fazer um sistema online de atualização e então, decidi simplificar um pouco para ajudar. Esse sistema foi a evolução desse tutorial que eu fiz a um bom tempo atrás : http://gmbr.forumeiros.com/t17430-

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por Lighter em Qui 06 Mar 2014, 07:50

Parabéns túlio, a partitr desse tutorial eu consegui manusear um sistema de highscore online.. com
 certeza seu nome estará nos créditos, caso eu finalize meu projeto..

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Qualidade GRANDE FERA!!

Mensagem por ekuhnen em Seg 08 Jun 2015, 15:35

TRFN teu script me economizou muito tempo de desenvolvimento e o resultado foi fantástico.
Pra você entender o que faço, pela dificuldade em conectar o GMS a um BD eu criei um webserver que gera arquivos ini com o padrão de tags do GMS e grava em ftp, com teu script eu carrego tais arquivos para o jogo assim que o usuário autentica com login e senha. Depois as evoluções do jogador são gravadas novamente em arquivo e o webserver grava em BD. Consigo fazer atualizações do jogo em tempo real.

GMS + TRFN + PHP + MySQL = Flawless victory

ekuhnen

Número de Mensagens : 47
Idade : 33
Data de inscrição : 05/10/2012
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por Pai véi em Sex 21 Ago 2015, 11:47

Muito legal, Túlio. É uma boa jogada aproveitar ferramentas do sistema e implementar um recurso improvisado, porém prático.

Se estiver aberto a uma modesta sugestão, você poderia executar os comandos do ftp através de um pipe em vez de um arquivo (-s:script).

Código:

@echo off
rem Script atualiza.cmd
(
echo open 193.43.36.131
echo !echo Exemplo: user='%~1' password='%~2'
echo user %1 %2
echo cd Radio/MP3/
echo dir
echo bye
) | ftp -n

Código:

atualiza.cmd usuário senha
atualiza anonymous guest

Eu imagino que o único empecilho em repassar o usuário e a senha como parte do comando é que algum monitor de processos poderia enxergar essa string e descobrir ambos.

Nesse caso, seria interessante manter os dados no arquivo, mas garantir que ele "se limpe" mesmo que o Game Maker não consiga apagá-lo.

Por ex.: (ao final do script):
Código:

type nul > "%~0"

Grande abraço! Gostei demais.

Pai véi

Número de Mensagens : 14
Data de inscrição : 27/02/2014
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: Banco de Dados online fácil de configurar

Mensagem por Conteúdo patrocinado Hoje à(s) 02:06


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum