11.10.2011, 01:13
Bom
Ainda lembro na primeira vez que fui usar Fini, passei umas 7hrs atй a lуgica + a galera do forum me convencerem de que Fini era realmente bugadгo. Alguns atй hoje discordam, porйm nunca foram capazes de explicar qual era o erro daquele cуdigo...
Espero que o mesmo nгo aconteзa com bIni
jб gastei algumas horas aqui e definitivamente nгo encontro nenhum erro na minha lуgica...
Tenho esperanзa que alguйm aqui seja capaz de encontrar para mim
ou concluir novamente que o sistema de cache tem bug ;(
Espero que nгo seja esta ъltima opзгo!!
bom, vamos lб
cуdigo simples:
ao usar o comando /daradmin, ele chama esta funзгo, com:
string[] = nick de qm usou o comando
playerid = id de qm recebeu admin
nivel = nivel de admin
Entгo a funзгo se encarrega de criar 2 arquivos
Admins/Nome_Sobrenome.ini e
Admins/IDs/id.ini
com o mesmo conteъdo.. Apenas informaзхes de quem promoveu, quando promoveu e o nнvel que foi promovido.
Abre, Escreve, Salva, Fecha.
Porйm...
na primeira vez que a funзгo й chamada, tudo ocorre perfeitamente
na segunda vez, tudo ocorre perfeitamente
na terceira vez, tudo ocorre perfeitamente
na quarta vez, o servidor crasha
podem ver que coloquei os "printf(arquivo)" pois tentei descobrir exatamente em qual momento dava-se o crash
e descobri que o crash ocorre na hora do INI_Open(arquivo);
porйm o valor da string "arquivo" й exatamente o mesmo em todos os casos!
mas apenas na quarta vez que a funзгo й chamada, dб-se o crash!!!
serб que alguйm sabe!?
Ainda lembro na primeira vez que fui usar Fini, passei umas 7hrs atй a lуgica + a galera do forum me convencerem de que Fini era realmente bugadгo. Alguns atй hoje discordam, porйm nunca foram capazes de explicar qual era o erro daquele cуdigo...
Espero que o mesmo nгo aconteзa com bIni
jб gastei algumas horas aqui e definitivamente nгo encontro nenhum erro na minha lуgica...
Tenho esperanзa que alguйm aqui seja capaz de encontrar para mim
ou concluir novamente que o sistema de cache tem bug ;(
Espero que nгo seja esta ъltima opзгo!!
bom, vamos lб
cуdigo simples:
ao usar o comando /daradmin, ele chama esta funзгo, com:
string[] = nick de qm usou o comando
playerid = id de qm recebeu admin
nivel = nivel de admin
Entгo a funзгo se encarrega de criar 2 arquivos
Admins/Nome_Sobrenome.ini e
Admins/IDs/id.ini
com o mesmo conteъdo.. Apenas informaзхes de quem promoveu, quando promoveu e o nнvel que foi promovido.
Abre, Escreve, Salva, Fecha.
PHP код:
stock DarAdmin(string[],playerid,nivel)
{
new arquivo[50], nome[24],texto[128];
GetPlayerName(playerid,nome,24);
format(arquivo,50,"Admins/%s.ini",nome);
new a22, m22, d22;
new h22,mi22,s22;
getdate(a22,m22,d22);
gettime(h22,mi22,s22);
new i;
if(nivel>0)
{
if(!dini_Exists(arquivo))
{
INI_Create(arquivo);
INI_Open(arquivo);
INI_WriteString("Nome",nome);
INI_WriteInt("ID",IDAdmin());
format(texto,128,"Data: (%d/%d/%d) Hora: (%d:%d:%d)",d22,m22,a22,h22,mi22,s22)
INI_WriteString("UltimoLogin",texto);
INI_WriteString("Promocao0",texto);
INI_WriteInt("Level0",nivel);
INI_WriteString("AdicionadoPor",string);
INI_Save();
INI_Close();
INI_Open("Admins/Lista.ini");
for(i=0 ; i<MAX_ADMINS; i++)
{
format(arquivo,50, "Admin%d",i);
if(!strcmp(INI_ReadString(arquivo),"0",true)) break;
}
INI_WriteString(arquivo,nome);
format(arquivo,50,"Nivel%d",i);
INI_WriteInt(arquivo,nivel);
INI_Save();
INI_Close();
format(arquivo,50,"Admins/IDs/%d.ini",IDAdmin());
INI_Create(arquivo);
INI_Open(arquivo);
INI_WriteString("Nome",nome);
INI_WriteInt("ID",IDAdmin());
format(texto,128,"Data: (%d/%d/%d) Hora: (%d:%d:%d)",d22,m22,a22,h22,mi22,s22)
INI_WriteString("UltimoLogin",texto);
INI_WriteString("Promocao0",texto);
INI_WriteInt("Level0",nivel);
INI_WriteString("AdicionadoPor",string);
INI_Save();
INI_Close();
}
else
{
printf(arquivo);
new ID,texto2[20],texto3[20],texto4[30];
printf(arquivo);
INI_Open(arquivo);
printf(arquivo);
for( i =0; i<MAX_PROMOCOES; i++)
{
format(texto2,20,"Promocao%d",i);
if(!strcmp(INI_ReadString(texto2),"0",true)) break
}
format(texto3,20,"Level%d",i);
format(texto4,30,"PromovidoPor%d",i);
format(texto,128,"Data: (%d/%d/%d) Hora: (%d:%d:%d)",d22,m22,a22,h22,mi22,s22)
INI_WriteString(texto2,texto);
INI_WriteInt(texto3,nivel);
INI_WriteString(texto4,string);
ID = INI_ReadInt("ID");
INI_Save();
INI_Close();
INI_Open("Admins/Lista.ini");
for( i=0; i<MAX_ADMINS; i++)
{
format(arquivo,50, "Admin%d",i);
if(!strcmp(INI_ReadString(arquivo),nome,true)) break;
}
INI_WriteString(arquivo,nome);
format(arquivo,50,"Nivel%d",i);
INI_WriteInt(arquivo,nivel);
INI_Save();
INI_Close();
format(arquivo,50,"Admins/IDs/%d.ini",ID);
INI_Open(arquivo);
INI_WriteString(texto2,texto);
INI_WriteInt(texto3,nivel);
INI_WriteString(texto4,string);
INI_Save();
INI_Close();
}
}
}
Porйm...
na primeira vez que a funзгo й chamada, tudo ocorre perfeitamente
na segunda vez, tudo ocorre perfeitamente
na terceira vez, tudo ocorre perfeitamente
na quarta vez, o servidor crasha
podem ver que coloquei os "printf(arquivo)" pois tentei descobrir exatamente em qual momento dava-se o crash
e descobri que o crash ocorre na hora do INI_Open(arquivo);
porйm o valor da string "arquivo" й exatamente o mesmo em todos os casos!
mas apenas na quarta vez que a funзгo й chamada, dб-se o crash!!!
serб que alguйm sabe!?