SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 12/12/2011, 04:32 PM   #1
Mattos
Gangsta
 
Mattos's Avatar
 
Join Date: Aug 2011
Posts: 559
Reputation: 11
Default [AJUDA] Banco de Dados

Olá galera... To com um problema aqui no "Banco de dados" da próxima versão do meu MusicDialog v1.1

Bom a idéia é que as músicas fiquem armazenadas em um arquivo "musicas.reg" no scriptfiles, e obedeçam a seguinte ordem: "Nome,Genero,URL"

Ai eu fiz um sistema aqui para inserir novas linhas ao arquivo "/addmusic" e um "leitor" dos dados que la estão... ai o código ta da seguinte forma até agora:

pawn Code:
#include <a_samp>
#include  <dini>

#pragma unused ret_memcpy

#define MENUMUSICS  800
#define MAX_MUSICS  100

new MusicsAmount;
enum musicinfo              
{
    MusicName[100],
    MusicGenre[100],    
    MusicURL[1800] 
};
new MusicInfo[MAX_MUSICS][musicinfo];

public OnFilterScriptInit()
{
    LoadMusics();
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext,"/addmusic",true) == 0)
    {
        ShowPlayerDialog(playerid, MENUMUSICS, DIALOG_STYLE_MSGBOX , "ADD MUSIC", "Para adicionar uma nova musica ao dialog\npreencha todos os dados pedidos a seguir.", "Continuar", "Cancelar");
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0); return 1;
    }    
    if(strcmp(cmdtext, "/musicas", true) == 0)
    {
        new str[2000];
        for(new musicid; musicid< MusicsAmount; musicid++)
        {
            format(str, 2000, "\"%s\"   Genero: %s  url: %s\n%s", MusicInfo[musicid][MusicName],MusicInfo[musicid][MusicGenre],MusicInfo[musicid][MusicURL],str);
        }
        ShowPlayerDialog(playerid, MENUMUSICS+4, DIALOG_STYLE_LIST, "WarZone - Musicas", str, "Fechar", "");
        return 1;        
    }
       
    return 0;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{      
    static musica[2000], genero[100], nome[100], url[1800];
    if(dialogid == MENUMUSICS)
    {
        if (response)        
        {
            ShowPlayerDialog(playerid, MENUMUSICS+1, DIALOG_STYLE_INPUT, "ADD MUSIC", "Digite o gênero da música.", "Continuar", "Cancelar");        
        }
    }    
    if(dialogid == MENUMUSICS+1)
    {
        if (response)        
        {
            format(genero, 100, "%s", inputtext);
            ShowPlayerDialog(playerid, MENUMUSICS+2, DIALOG_STYLE_INPUT, "ADD MUSIC", "Digite o nome da música.", "Continuar", "Cancelar");        
        }
    }    
    if(dialogid == MENUMUSICS+2)
    {
        if (response)        
        {
            format(nome, 100, "%s", inputtext);
            ShowPlayerDialog(playerid, MENUMUSICS+3, DIALOG_STYLE_INPUT, "ADD MUSIC", "Digite a URL da musica", "Finalizar", "Cancelar");        
        }
    }    
    if(dialogid == MENUMUSICS+3)
    {
        if (response)        
        {
            format(url, 1800, "%s", inputtext);
            SendClientMessage(playerid, -1, "Música adicionada com sucesso!");
           
            format (musica, sizeof(musica), "%s,%s,%s", nome, genero, url);
            new File:ArqMusica; ArqMusica = fopen("musicas.reg", io_append);
            fwrite(ArqMusica, musica); fwrite(ArqMusica, "\r\n"); fclose(ArqMusica);        
        }
    }
    if(dialogid == MENUMUSICS+4)
    {
        if(response) return 1;
    }
    return 0;
}

stock LoadMusics()
{
    if(fexist("musicas.reg"))
    {
        CountMusics();
        new Argument[3][1800];
        new entry[2000];
        new File: musicfile = fopen("musicas.reg", io_read);
        if (musicfile)
        {
            for(new id; id<MusicsAmount; id++)
            {
                fread(musicfile, entry);
                split(entry, Argument, ',');
                format(MusicInfo[id][MusicName], 100, "%s", Argument[0]);
                format(MusicInfo[id][MusicGenre], 100, "%s", Argument[1]);
                format(MusicInfo[id][MusicURL], 1800, "%s", Argument[2]);                              
            }
            fclose(musicfile);         
        }
    }
}

forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 1800);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

stock CountMusics()
{
    new entry[2000];
    new File: musicfile = fopen("musicas.reg", io_read);
    while(fread(musicfile, entry, 2000))
    {
        MusicsAmount++;
    }
    fclose(musicfile);
}

Bom... O problema é que os dados lá contidos não estão sendo lidos por algum motivo... Sendo que por enquanto eu só to pondo para os dados serem lidos... tudo em itens de um dialog list...

Ai la no musicas.reg ta assim por exemplo:

Code:
Exemplo,Exemplar,http://exemplo.mp3
Ai quando eu uso o /musicas la no servidor os dados não tao sendo lidos, fica assim: "" Genero: Url:
Ou seja ná hora de carregar os dados que estão contidos no arquivo, eles não tao sendo carregados... pq

OBS: Ta tudo certinho com o sistema de adicionar novas musicas...
Mattos is offline   Reply With Quote
Old 12/12/2011, 08:34 PM   #2
Mattos
Gangsta
 
Mattos's Avatar
 
Join Date: Aug 2011
Posts: 559
Reputation: 11
Default Re: [AJUDA] Banco de Dados

Ninguem?
Mattos is offline   Reply With Quote
Old 12/12/2011, 10:11 PM   #3
[NWD]Jim._.Carrey
Gangsta
 
[NWD]Jim._.Carrey's Avatar
 
Join Date: Sep 2010
Posts: 720
Reputation: 35
Default Respuesta: [AJUDA] Banco de Dados

Manolo ta muito complicado essa forma que você ta usando sem contar as string seu GM vai explodir assim ._.
__________________

NWD Games
IP: rpg.nwdgames.com:6666
[NWD]Jim._.Carrey is offline   Reply With Quote
Old 12/12/2011, 10:58 PM   #4
Mattos
Gangsta
 
Mattos's Avatar
 
Join Date: Aug 2011
Posts: 559
Reputation: 11
Default Re: [AJUDA] Banco de Dados

Mas alguem?
Mattos is offline   Reply With Quote
Old 13/12/2011, 12:25 AM   #5
[S]trong
Guest
 
Posts: n/a
Default Re: [AJUDA] Banco de Dados

Para você ler line by line você precisa usar um laço.

Chame a função direto no laço se não acredito que ele leia o arquivo inteiro de uma vez...
  Reply With Quote
Old 13/12/2011, 01:41 AM   #6
Mattos
Gangsta
 
Mattos's Avatar
 
Join Date: Aug 2011
Posts: 559
Reputation: 11
Default Re: [AJUDA] Banco de Dados

Tipo eu fiz igual o sistema de props da Sandra que vc ja deve ter visto... Nao mudei nada (eu acho) do sistema de leitura, ele so tem maais argimemtos, que ai eu reduzi...
Mattos is offline   Reply With Quote
Old 13/12/2011, 11:08 AM   #7
steki.
High-roller
 
steki.'s Avatar
 
Join Date: Nov 2010
Location: São Paulo, Brasil
Posts: 2,557
Reputation: 315
Default Re: [AJUDA] Banco de Dados

Não to muito afim de ajudar, mas vou dar uma dica.

pawn Code:
format(nome, 100, "%s", inputtext);

Nunca use isto. Não vale a pena com format. Procure uma função chamada strcpy do ******.
__________________
Rio
steki. is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[AJUDA] Organização de dados em Dialog Mattos Português/Portuguese 5 12/12/2011 12:54 AM
[Ajuda] Salvamento de Dados gabrielbnv Português/Portuguese 17 30/09/2011 08:29 PM
[AJUDA]Ler Dados TiagoPS Português/Portuguese 2 07/10/2010 06:44 PM
[AJUDA]Salvar dados ManoLexuS Português/Portuguese 5 18/09/2010 05:07 AM
[ajuda]Banco de dados xolp25 Português/Portuguese 10 04/05/2010 04:17 PM


All times are GMT. The time now is 12:51 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.