25.08.2012, 02:23
Boa noite.
Compareзo hoje aqui pois meu sistema de salvamento de armas nгo estб funcionando 100%... O player quando desloga do servidor, tem em mйdia 55% de perda de armas.
E eu queria pelo menos saber o motivo disto, observem o cуdigo;
A define;
E as stock:
Estб em modo dini, eu passei para DOF2, porйm nгo sei se vai dar jeito... Alguйm ajuda?
Compareзo hoje aqui pois meu sistema de salvamento de armas nгo estб funcionando 100%... O player quando desloga do servidor, tem em mйdia 55% de perda de armas.
E eu queria pelo menos saber o motivo disto, observem o cуdigo;
pawn Код:
case 1:
{
if(GetPlayerMoneyEx(playerid) < 21000)
{
SendClientMessage(playerid, COR_VERMELHO, "(ERRO) Vocк precisa ter R$21000 para comprar uma M4A1!");
TogglePlayerControllable(playerid, 1);
return 1;
}
if(GetPlayerWeapon(playerid) == 31)
{
SendClientMessage(playerid, COR_VERMELHO, "(ERRO) Vocк jб possui uma AK47!");
TogglePlayerControllable(playerid, 1);
return 1;
}
SendClientMessage(playerid, -1, str);
SendClientMessage(playerid, 0xF7D395AA, "(INFO) Vocк comprou uma M4A1 [R$21000]");
GivePlayerWeapon(playerid, 31, 1500);
GivePlayerMoneyEx(playerid, -21000);
TogglePlayerControllable(playerid, 1);
}
pawn Код:
#define WEAPON_FILE "armas.cfg"
pawn Код:
stock LoadWeapons(playerid)
{
new File:arquivo, tmp[256], fname[30], pname[30], arma[13], municao[13];
arquivo = fopen(WEAPON_FILE, io_read);
GetPlayerName(playerid, pname, sizeof pname);
while(fread(arquivo, tmp, sizeof tmp, false))
{
new off[256], index;
off = strtok(tmp, index);
strmid(fname, off, 0, strlen(off));
if(strcmp(pname, fname, false) != 0)continue;
for(new a; a < 12; a++)arma[a] = strval(strtok(tmp, index));
for(new m; m < 12; m++)municao[m] = strval(strtok(tmp, index));
for(new i; i < 12; i++)
{
if(arma[i] > 0 && arma[i] < 47 && municao[i] > 0)GivePlayerWeapon(playerid, arma[i], municao[i]);
}
}
fclose(arquivo);
return 1;
}
stock SaveWeapons(playerid)
{
new File:arquivo, File:ftmp, tmp[256], fname[30], pname[30], arma[13], municao[13];
arquivo = fopen(WEAPON_FILE, io_readwrite);
ftmp = fopen(WEAPON_FILE#.tmp, io_write);
GetPlayerName(playerid, pname, sizeof pname);
while(fread(arquivo, tmp, sizeof tmp, false))
{
new off[256], index;
off = strtok(tmp, index);
strmid(fname, off, 0, strlen(off));
if(!strcmp(pname, fname, false))continue;
format(tmp, sizeof tmp, "%s", tmp);
fwrite(ftmp, tmp);
}
fclose(arquivo);
fclose(ftmp);
fremove(WEAPON_FILE);
arquivo = fopen(WEAPON_FILE, io_write);
ftmp = fopen(WEAPON_FILE#.tmp, io_read);
while(fread(ftmp, tmp))
{
format(tmp, sizeof tmp, "%s", tmp);
fwrite(arquivo, tmp);
}
fclose(ftmp);
fremove(WEAPON_FILE#.tmp);
for(new i; i < 12; i++)GetPlayerWeaponData(playerid, i+1, arma[i+1], municao[i+1]);
format(tmp, sizeof tmp, "%s ", pname);
for(new a; a < 24; a++)
{
new s[10];
if(a < 12)
{
format(s, sizeof s, "%d ", arma[a]);
strcat(tmp, s);
} else {
format(s, sizeof s, "%d ", municao[a-12]);
strcat(tmp, s);
}
}
strcat(tmp, "\r\n");
fwrite(arquivo, tmp);
fclose(arquivo);
return 1;
}