[AJUDA] Banco de Dados
#1

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 Код:
#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:

Код:
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...
Reply
#2

Ninguem?
Reply
#3

Manolo ta muito complicado essa forma que vocк ta usando sem contar as string seu GM vai explodir assim ._.
Reply
#4

Mas alguem?
Reply
#5

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
#6

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...
Reply
#7

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

pawn Код:
format(nome, 100, "%s", inputtext);
Nunca use isto. Nгo vale a pena com format. Procure uma funзгo chamada strcpy do ******.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)