SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 16/08/2012, 02:44 PM   #1
Rick_DR
Huge Clucker
 
Rick_DR's Avatar
 
Join Date: Mar 2010
Posts: 403
Reputation: 9
Default Dar valores em offline

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 !
__________________
Hostname: [PB] Patos-Tugas V2 Host 24 H
Rick_DR is offline   Reply With Quote
Old 16/08/2012, 06:57 PM   #2
Rick_DR
Huge Clucker
 
Rick_DR's Avatar
 
Join Date: Mar 2010
Posts: 403
Reputation: 9
Default Re: Dar valores em offline

Alguem sabe me ajudar ?
__________________
Hostname: [PB] Patos-Tugas V2 Host 24 H
Rick_DR is offline   Reply With Quote
Old 16/08/2012, 08:11 PM   #3
Kmatsu
Huge Clucker
 
Join Date: Aug 2011
Location: C:\Windows
Posts: 461
Reputation: 28
Default Re: Dar valores em offline

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
Kmatsu is offline   Reply With Quote
Old 16/08/2012, 10:01 PM   #4
DartakousLien
High-roller
 
DartakousLien's Avatar
 
Join Date: Jan 2010
Location: Portugal
Posts: 1,149
Reputation: 87
Default Re: Dar valores em offline

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.
__________________
Github : Procurando interessados em participar em projetos comigo.
Visite também o meu portfólio
DartakousLien is offline   Reply With Quote
Old 17/08/2012, 01:39 PM   #5
rjjj
Guest
 
Posts: n/a
Default Re: Dar valores em offline

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 With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Contar valores CorTheZ_OwneeD Português/Portuguese 20 25/07/2012 09:18 PM
[Ajuda]Como usar valores do GM no FS? Colgate Português/Portuguese 9 02/10/2011 06:02 PM
[Ajuda] SQLite - pegar valores jhemerson Português/Portuguese 3 15/06/2011 08:22 PM
[Tutorial] [TUT] Salvar Valores Opcionais ipsBruno Português/Portuguese 4 30/05/2010 12:48 AM


All times are GMT. The time now is 06:26 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.