Dar valores em offline -
Rick_DR - 16.08.2012
Ando a tentar fazer um comando para poder dar reset a todos os jogadores, mesmo os que estгo em off line. vou explicar o sistema:
O sistema й um seguro de saъde, mas depois vou aplicar para outros.
OnGameModeInit
pawn Code:
if(!fexist("Nivel/Saude.ini")) { DOF2_CreateFile("Nivel/Saude.ini");}
OnPlayerConnect
pawn Code:
Saude[playerid] = DOF2_GetInt("Nivel/Saude.ini",PlayerName(playerid));
Quando o jogador morre e tal (nгo muito importante)
pawn Code:
if(Saude[playerid] > 1)
{
Saude[playerid] --;
new s[50];format(s, 50, "Ainda podes morrer mais %i vezes com o seguro!", Saude[playerid]);SendClientMessage(playerid, -1, s);
DOF2_SetInt("Nivel/Saude.ini",PlayerName(playerid),Saude[playerid]); DOF2_SaveFile();
return true;
}
Tenho o comando para o vendedor de seguros vender /darseguro [id] [numero], pronto ate aqui esta tudo a funcionar direito.
Mas queria a vossa ajuda para quando eu (admin) quiser por exemplo dar +1 de saъde para todos os jogadores mesmo os que estгo offline.
Nгo peзo tudo sу mesmo a base para poder trabalhar com os saves offlines !
Re: Dar valores em offline -
Rick_DR - 16.08.2012
Alguem sabe me ajudar ?
Re: Dar valores em offline -
Kmatsu - 16.08.2012
Creio eu que com arquivos nao й possivel, talvez com MySQL.
Pois um loop percorrendo 5000 contas (exemplo), abrindo, setando variavel, salvando... irб ser muito lento
Re: Dar valores em offline -
DartakousLien - 16.08.2012
O que o Kmatsu nao esta errado porem nao esta completamente correto. Й possivel sim, basta ele ter um ficheiro onde tem o nome de todos os players registados...Isso seria como uma base de dados em SQLite ou MySQL. Como й obvio nao podemos comprar velocidade nem a qualidade de uma б outra. SQLite ou MySQL foram criadas para ser bases de dados enquanto voce trabalhando com files serб um pouco mais complicado e lento, mas tambem consegue. Sу fazer como eu disse. Num ficheiro voce tem de ter o nome de todas as contas que estao registadas, ai б medida que vai lendo cada nome que esta no ficheiro, abre o outro ficheiro de registo correspondente бquele nome.
Re: Dar valores em offline - rjjj - 17.08.2012
Montei uma funзгo para vocк

:
pawn Code:
stock AumentarOffline(conta[], incremento)
{
new Linhas[100][25]; //Troque 100 pelo nъmero mбximo possнvel de linhas do arquivo e 25 pelo total de caracteres mбximo possнvel de uma linha somado a 1.
new Numero;
new File:Arquivo = fopen(conta, io_read);
while(fread(Arquivo, Linhas[Numero]))
{
new STR[11];
new Valor;
new Posicao = strfind(Linhas[Numero], " = ");
strmid(STR, Linhas[Numero], Posicao + 3, sizeof(Linhas[]));
strdel(Linhas[Numero], Posicao + 3, sizeof(Linhas[]));
Valor = strval(STR) + incremento;
format(STR, sizeof(STR), "%d", Valor);
strcat(Linhas[Numero], STR);
Numero++;
}
fclose(Arquivo);
fremove(conta);
Arquivo = fopen(conta, io_append);
for(new x = 0; x < Numero; x++)
{
strcat(Linhas[x], "\r\n");
fwrite(Arquivo, Linhas[x]);
}
fclose(Arquivo);
return true;
}
Exemplo de uso:
pawn Code:
AumentarOffline("Nivel/Saude.ini", 1); //Aumentaria em 1 todos os valores de keys do arquivo especificado.
Espero ter ajudado

.