new File:arquivo = fopen("Arquivo.txt", io_append);
fwrite(arquivo, "bla bla bla\n\r");
fclose(arquivo);
new File:arquivo = fopen("Arquivo.txt", io_append), string[100];
while(fread(arquivo, string)) {
// Valor de string, é o texto da linha atual.
print(string);
}
fclose(arquivo);
/*
Gere uma enum ou variáveis para armazenar os dados do jogador. Aconselho usar enum por ser uma
prática melhor e ter um código mais legivel, menos propenso a erros.
*/
enum E_PLAYER_DATA {
PlayerNome[MAX_PLAYER_NAME],
PlayerSenha[20],
PlayerIp[16],
PlayerDinheiro,
PlayerLevel
};
new Player[MAX_PLAYERS][E_PLAYER_DATA];
/*
Carregue os dados dele assim que ele entrar no servidor.
*/
public OnPlayerConnect(playerid) {
GetPlayerName(playerid, Player[playerid][PlayerNome], MAX_PLAYER_NAME);
GetPlayerIp(playerid, Player[playerid][PlayerIp], 16);
format(Player[playerid][PlayerSenha], 20, DOF2_GetString(PlayerFile(playerid), "Senha"));
Player[playerid][PlayerDinheiro] = DOF2_GetInt(PlayerFile(playerid), "Dinheiro");
Player[playerid][PlayerLevel] = DOF2_GetInt(PlayerFile(playerid), "Level");
return 1;
}
/*
Apartir daqui, os dados estão em variáveis. Use-as.
*/
public OnPlayerSpawn(playerid) {
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, Player[playerid][PlayerDinheiro]);
SetPlayerScore(playerid, Player[playerid][PlayerLevel]);
// Perceba que os dados estão todos armazenados nas variáveis.
return 1;
}
/*
Quando precisar salvar os dados dele na conta, aconselho criar uma função separada para poder
salvar os dados com mais facilidade.
*/
public OnPlayerDisconnect(playerid, reason) {
PlayerSave(playerid);
return 1;
}
PlayerSave(playerid) {
DOF2_SetString(PlayerFile(playerid), "Senha", Player[playerid][PlayerSenha]);
DOF2_SetInt(PlayerFile(playerid), "Dinheiro", Player[playerid][PlayerDinheiro]);
DOF2_SetInt(PlayerFile(playerid), "Level", Player[playerid][PlayerLevel]);
DOF2_SaveFile();
return 1;
}
/*
Essa função é apenas para pegar facilmente o arquivo do jogador.
*/
PlayerFile(playerid) {
new file[40];
format(file, sizeof(file), "Contas/%s.ini");
return file;
}
/*
Gere uma enum ou variáveis para armazenar os dados da casa. Aconselho usar enum por ser uma
prática melhor e ter um código mais legivel, menos propenso a erros.
*/
enum E_CASA_DATA {
CasaDono[MAX_PLAYER_NAME],
CasaID,
CasaValor,
};
new Casa[MAX_CASAS][E_CASA_DATA];
/*
Carregue os dados da casa assim que o servidor ligar.
*/
public OnGameModeInit() {
for(new i = 0; i < MAX_CASAS; ++i) {
if(DOF2_FileExists(CasaFile(i))) {
format(Casa[i][CasaDono], MAX_PLAYER_NAME, DOF2_GetString(CasaFile(i), "Dono"));
Casa[i][CasaID] = i;
Casa[i][CasaValor] = DOF_GetInt(CasaFile(i), "Valor");
}
}
return 1;
}
/*
Apartir daqui, use as variáveis para pegar e manipular os valores da casa e depois basta salva-lá quando
precisar. Aconselho novamente criar uma função de save assim como no sistema de contas.
*/

|
--------- Benchmark --------- Include: Bini | Mйtodo: Escrita | Mйdia: 111ms Include: Bini | Mйtodo: Leitura | Mйdia: 1ms Include: Dof2 | Mйtodo: Escrita | Mйdia: 103ms Include: Dof2 | Mйtodo: Leitura | Mйdia: 7ms Include: Dini | Mйtodo: Escrita | Mйdia: 4137ms Include: Dini | Mйtodo: Leitura | Mйdia: 71ms Include: Dini2 | Mйtodo: Escrita | Mйdia: 126ms Include: Dini2 | Mйtodo: Leitura | Mйdia: 2ms Include: bCini | Mйtodo: Escrita | Mйdia: 1877ms Include: bCini | Mйtodo: Leitura | Mйdia: 67ms --------- Fim Benchmark --------- |
print("\n\n\n--------- Benchmark ---------\n");
new
tentat[10],
tempo[2],
media;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
INI_Open("bini.txt");
INI_WriteString("bini.txt", "key_1", "valor1");
INI_WriteString("bini.txt", "key_2", "valor2");
INI_WriteString("bini.txt", "key_3", "valor3");
INI_WriteString("bini.txt", "key_4", "valor4");
INI_WriteString("bini.txt", "key_5", "valor5");
INI_WriteFloat("bini.txt", "key_6", 999.00);
INI_WriteFloat("bini.txt", "key_7", 999.00);
INI_WriteFloat("bini.txt", "key_8", 999.00);
INI_WriteFloat("bini.txt", "key_9", 999.00);
INI_WriteFloat("bini.txt", "key_10", 999.00);
INI_WriteInt("bini.txt", "key_11", 999);
INI_WriteInt("bini.txt", "key_12", 999);
INI_WriteInt("bini.txt", "key_13", 999);
INI_WriteInt("bini.txt", "key_14", 999);
INI_WriteInt("bini.txt", "key_15", 999);
INI_Save();
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Bini | Mйtodo: Escrita | Mйdia: %ims", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
INI_Open("bini.txt");
INI_ReadString("bini.txt", "key_1");
INI_ReadString("bini.txt", "key_2");
INI_ReadString("bini.txt", "key_3");
INI_ReadString("bini.txt", "key_4");
INI_ReadString("bini.txt", "key_5");
INI_ReadFloat("bini.txt", "key_6");
INI_ReadFloat("bini.txt", "key_7");
INI_ReadFloat("bini.txt", "key_8");
INI_ReadFloat("bini.txt", "key_9");
INI_ReadFloat("bini.txt", "key_10");
INI_ReadInt("bini.txt", "key_11");
INI_ReadInt("bini.txt", "key_12");
INI_ReadInt("bini.txt", "key_13");
INI_ReadInt("bini.txt", "key_14");
INI_ReadInt("bini.txt", "key_15");
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Bini | Mйtodo: Leitura | Mйdia: %ims\n", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!DOF2::FileExists("dof2.txt")) DOF2::CreateFile("dof2.txt");
DOF2::SetString("dof2.txt", "key_1", "valor1");
DOF2::SetString("dof2.txt", "key_2", "valor2");
DOF2::SetString("dof2.txt", "key_3", "valor3");
DOF2::SetString("dof2.txt", "key_4", "valor4");
DOF2::SetString("dof2.txt", "key_5", "valor5");
DOF2::SetFloat("dof2.txt", "key_6", 999.00);
DOF2::SetFloat("dof2.txt", "key_7", 999.00);
DOF2::SetFloat("dof2.txt", "key_8", 999.00);
DOF2::SetFloat("dof2.txt", "key_9", 999.00);
DOF2::SetFloat("dof2.txt", "key_10", 999.00);
DOF2::SetInt("dof2.txt", "key_11", 999);
DOF2::SetInt("dof2.txt", "key_12", 999);
DOF2::SetInt("dof2.txt", "key_13", 999);
DOF2::SetInt("dof2.txt", "key_14", 999);
DOF2::SetInt("dof2.txt", "key_15", 999);
DOF2::SaveFile();
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Dof2 | Mйtodo: Escrita | Mйdia: %ims", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!DOF2::FileExists("dof2.txt")) DOF2::CreateFile("dof2.txt");
DOF2::GetString("dof2.txt", "key_1");
DOF2::GetString("dof2.txt", "key_2");
DOF2::GetString("dof2.txt", "key_3");
DOF2::GetString("dof2.txt", "key_4");
DOF2::GetString("dof2.txt", "key_5");
DOF2::GetFloat("dof2.txt", "key_6");
DOF2::GetFloat("dof2.txt", "key_7");
DOF2::GetFloat("dof2.txt", "key_8");
DOF2::GetFloat("dof2.txt", "key_9");
DOF2::GetFloat("dof2.txt", "key_10");
DOF2::GetInt("dof2.txt", "key_11");
DOF2::GetInt("dof2.txt", "key_12");
DOF2::GetInt("dof2.txt", "key_13");
DOF2::GetInt("dof2.txt", "key_14");
DOF2::GetInt("dof2.txt", "key_15");
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Dof2 | Mйtodo: Leitura | Mйdia: %ims\n", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!dini_Exists("dini.txt")) dini_Create("dini.txt");
dini_Set("dini.txt", "key_1", "valor1");
dini_Set("dini.txt", "key_2", "valor2");
dini_Set("dini.txt", "key_3", "valor3");
dini_Set("dini.txt", "key_4", "valor4");
dini_Set("dini.txt", "key_5", "valor5");
dini_FloatSet("dini.txt", "key_6", 999.00);
dini_FloatSet("dini.txt", "key_7", 999.00);
dini_FloatSet("dini.txt", "key_8", 999.00);
dini_FloatSet("dini.txt", "key_9", 999.00);
dini_FloatSet("dini.txt", "key_10", 999.00);
dini_IntSet("dini.txt", "key_11", 999);
dini_IntSet("dini.txt", "key_12", 999);
dini_IntSet("dini.txt", "key_13", 999);
dini_IntSet("dini.txt", "key_14", 999);
dini_IntSet("dini.txt", "key_15", 999);
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Dini | Mйtodo: Escrita | Mйdia: %ims", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!dini_Exists("dini.txt")) dini_Create("dini.txt");
dini_Get("dini.txt", "key_1");
dini_Get("dini.txt", "key_2");
dini_Get("dini.txt", "key_3");
dini_Get("dini.txt", "key_4");
dini_Get("dini.txt", "key_5");
dini_Float("dini.txt", "key_6");
dini_Float("dini.txt", "key_7");
dini_Float("dini.txt", "key_8");
dini_Float("dini.txt", "key_9");
dini_Float("dini.txt", "key_10");
dini_Int("dini.txt", "key_11");
dini_Int("dini.txt", "key_12");
dini_Int("dini.txt", "key_13");
dini_Int("dini.txt", "key_14");
dini_Int("dini.txt", "key_15");
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Dini | Mйtodo: Leitura | Mйdia: %ims\n", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!dini2_Exists("dini2.txt")) dini2_Create("dini2.txt");
dini2_Set("dini2.txt", "key_1", "valor1");
dini2_Set("dini2.txt", "key_2", "valor2");
dini2_Set("dini2.txt", "key_3", "valor3");
dini2_Set("dini2.txt", "key_4", "valor4");
dini2_Set("dini2.txt", "key_5", "valor5");
dini2_FloatSet("dini2.txt", "key_6", 999.00);
dini2_FloatSet("dini2.txt", "key_7", 999.00);
dini2_FloatSet("dini2.txt", "key_8", 999.00);
dini2_FloatSet("dini2.txt", "key_9", 999.00);
dini2_FloatSet("dini2.txt", "key_10", 999.00);
dini2_IntSet("dini2.txt", "key_11", 999);
dini2_IntSet("dini2.txt", "key_12", 999);
dini2_IntSet("dini2.txt", "key_13", 999);
dini2_IntSet("dini2.txt", "key_14", 999);
dini2_IntSet("dini2.txt", "key_15", 999);
dini2_Timeout("dini2.txt");
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Dini2 | Mйtodo: Escrita | Mйdia: %ims", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!dini2_Exists("dini2.txt")) dini2_Create("dini2.txt");
dini2_Get("dini2.txt", "key_1");
dini2_Get("dini2.txt", "key_2");
dini2_Get("dini2.txt", "key_3");
dini2_Get("dini2.txt", "key_4");
dini2_Get("dini2.txt", "key_5");
dini2_Float("dini2.txt", "key_6");
dini2_Float("dini2.txt", "key_7");
dini2_Float("dini2.txt", "key_8");
dini2_Float("dini2.txt", "key_9");
dini2_Float("dini2.txt", "key_10");
dini2_Int("dini2.txt", "key_11");
dini2_Int("dini2.txt", "key_12");
dini2_Int("dini2.txt", "key_13");
dini2_Int("dini2.txt", "key_14");
dini2_Int("dini2.txt", "key_15");
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: Dini2 | Mйtodo: Leitura | Mйdia: %ims\n", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!bCini_Existe("bcini.txt")) bCini_Criar("bcini.txt");
bCini_SetarTexto("bcini.txt", "key_1", "valor1");
bCini_SetarTexto("bcini.txt", "key_2", "valor2");
bCini_SetarTexto("bcini.txt", "key_3", "valor3");
bCini_SetarTexto("bcini.txt", "key_4", "valor4");
bCini_SetarTexto("bcini.txt", "key_5", "valor5");
bCini_SetarFloat("bcini.txt", "key_6", 999.00);
bCini_SetarFloat("bcini.txt", "key_7", 999.00);
bCini_SetarFloat("bcini.txt", "key_8", 999.00);
bCini_SetarFloat("bcini.txt", "key_9", 999.00);
bCini_SetarFloat("bcini.txt", "key_10", 999.00);
bCini_SetarInt("bcini.txt", "key_11", 999);
bCini_SetarInt("bcini.txt", "key_12", 999);
bCini_SetarInt("bcini.txt", "key_13", 999);
bCini_SetarInt("bcini.txt", "key_14", 999);
bCini_SetarInt("bcini.txt", "key_15", 999);
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: bCini | Mйtodo: Escrita | Mйdia: %ims", media / 10);
media = 0;
for(new tentativas = 0; tentativas < 10; tentativas ++)
{
tempo[0] = GetTickCount();
for(new teste = 0; teste < 100; teste ++)
{
if(!bCini_Existe("bcini.txt")) bCini_Criar("dini.txt");
bCini_GetarTexto("bcini.txt", "key_1");
bCini_GetarTexto("bcini.txt", "key_2");
bCini_GetarTexto("bcini.txt", "key_3");
bCini_GetarTexto("bcini.txt", "key_4");
bCini_GetarTexto("bcini.txt", "key_5");
bCini_GetarFloat("bcini.txt", "key_6");
bCini_GetarFloat("bcini.txt", "key_7");
bCini_GetarFloat("bcini.txt", "key_8");
bCini_GetarFloat("bcini.txt", "key_9");
bCini_GetarFloat("bcini.txt", "key_10");
bCini_GetarInt("bcini.txt", "key_11");
bCini_GetarInt("bcini.txt", "key_12");
bCini_GetarInt("bcini.txt", "key_13");
bCini_GetarInt("bcini.txt", "key_14");
bCini_GetarInt("bcini.txt", "key_15");
}
tempo[1] = GetTickCount();
tentat[tentativas] = tempo[1] - tempo[0];
}
for(new tentativas = 0; tentativas < 10; tentativas ++)
media += tentat[tentativas];
printf("Include: bCini | Mйtodo: Leitura | Mйdia: %ims\n", media / 10);
print("\n--------- Fim Benchmark ---------\n\n\n");