12.12.2011, 15:32
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:
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:
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...
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);
}
Ai la no musicas.reg ta assim por exemplo:
Код:
Exemplo,Exemplar,http://exemplo.mp3
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...