[Ajuda] Dar valores em offline
#1

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.

pawn Code:
new Saude[MAX_PLAYERS];

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 !
Reply
#2

Alguem sabe me ajudar ?
Reply
#3

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)