Bug no Sistema de Vip -
lokos45 - 21.09.2013
Olб pessoal, em um sistema de Vip que eu coloquei no GM, nгo estб salvando o nome das pessoas no arquivo Vips.cfg
Olha o code do sistema aqui:
Topo do GM:
Код:
enum pInfo {
pVip
};
new PlayerInfo[MAX_PLAYERS][pInfo];
enum vinfo{vNick[MAX_PLAYER_NAME],vTipo};
new VipInfo[999][vinfo]; //999 No caso й o nъmero de vagas de vip que tem restante no servidor
CallBacks:
Код:
public VipCheck(playerid){
new idx = 0;
while(idx < sizeof(VipInfo)){if(strcmp(VipInfo[idx][vNick],PlayerName(playerid), true ) == 0 ){return true;}idx++;}return 0;}
public VipVaga(){
for(new idx=0; idx<sizeof(VipInfo); idx++){
if(strcmp(VipInfo[idx][vNick],"Ninguem", true ) == 0 ){VagaSobrando = 1;return true;}}VagaSobrando = 0;return 0;}
public SaveVip()
{
new idx;
new File: file2;
while (idx < sizeof(VipInfo))
{
new coordsstring[256];format(coordsstring, sizeof(coordsstring), "%s,%d\n",VipInfo[idx][vNick],VipInfo[idx][vTipo]);
if(idx == 0)
{
file2 = fopen("BrasilGames/Vips.cfg", io_write);
}
else{file2 = fopen("BrasilGames/Vips.cfg", io_append);
}
fwrite(file2, coordsstring);idx++;fclose(file2);
}
return true;
}
public LoadVip()
{
new arrCoords[2][64];
new strFromFile2[256];
new File: file = fopen("BrasilGames/Vips.cfg", io_read);
if (file)
{
new idx = 0;
while(idx < sizeof(VipInfo)){fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
strmid(VipInfo[idx][vNick], arrCoords[0], 0, strlen(arrCoords[0]), 255);
VipInfo[idx][vTipo] = strval(arrCoords[1]);idx++;
}
}
fclose(file);
return true;
}
CallBack OnGameModeInit:
CallBack OnGameModeExit:
Comando /darvip:
Код:
if(strcmp(cmd, "/darvip", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, sendername, 256);
if (PlayerInfo[playerid][pAdmin] >= DONO)
{
VipVaga();
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /darvip [id] [Nivel]");
return true;
}
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /darvip [id] [Nivel]");
return true;
}
level = strval(tmp);
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
format(string, sizeof string, "Vocк deu VIP Nнvel %d para %s", level, giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof string, "Vocк ganhou VIP Nнvel %d do admin %s", level, sendername);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
getdate(year, month, day);
gettime(hour,minute,second);
format(string, sizeof(string), "%s deu vip ao %s nнvel %d (%d/%d/%d - %d:%d)",sendername,giveplayer,level,day, month, year,hour, minute);
VipsLog(string);
PlayerInfo[para1][pVIP] = level;
new var03 = 0;
for(new i = 0; i < sizeof(VipInfo); i++)
{
if(strcmp(giveplayer,VipInfo[i][vNick],true)==0)
{
VipInfo[i][vTipo] = level;
OnPropUpdate();
var03 = 1;
break;
}
}
if(var03 == 0)
{
for(new i = 0; i < sizeof(VipInfo); i++)
{
if(strcmp("Ninguem",VipInfo[i][vNick],true)==0)
{
strmid(VipInfo[i][vNick], giveplayer, 0, strlen(giveplayer), 255);
VipInfo[i][vTipo] = level;
OnPropUpdate();
break;
}
}
}
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Vocк nгo esta autorizado a usar este comando!");
}
}
return true;
}
Eu observei tudo e nгo notei algum possнvel erro, mas quando alguйm recebe Vip, em vez de salvar em Vips.cfg como: Nick,Nнvel , estб salvando assim:
E tem vezes que buga, ai salva assim e os outros passam a perder o Vip quando logam:
Код:
Teste,2[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]Teste,0[]
Fica o nome de uma pessoa sу fixa no arquivo ai todos passam a perder o vip quando logam de volta :/
Queria pedir pra vocкs nгo quero que concertem o erro para mim, e sim me indicar onde estб para eu poder concertar, pois eu quero aprender
Respuesta: Bug no Sistema de Vip -
DartakousLien - 22.09.2013
Cara, eu ajudaria voce, mas isso pra mim й tгo old time ... e nem quando entrei no sa-mp gostava disso
porque й que voce nao usar SQLite ? a_sampdb.inc й super simples, e melhor de uma forma geral ...
Re: Bug no Sistema de Vip -
lokos45 - 22.09.2013
Desculpe a idiotice, mas o que й SQLite? :S
Re: Bug no Sistema de Vip -
PT - 22.09.2013
й um sistema de salvamente usa a mesma linguagem que mysql a linguagem SQL, para mais informacoes sobre SQlite visite
https://sampwiki.blast.hk/wiki/SQLite
Re: Bug no Sistema de Vip -
lokos45 - 22.09.2013
Entгo como eu usaria o SQLite para resolver o meu problema? :S
Re: Bug no Sistema de Vip -
PT - 22.09.2013
criando um sistema de salvamento com ela, em vez de usar a que vc esta usando...
Re: Bug no Sistema de Vip -
lokos45 - 22.09.2013
Ja me aconselharam a usar DOF2, mas essa dai й melhor?
Mostra um exemplo de salvamento ae com a SQLite pra mim por favor...
Re: Bug no Sistema de Vip -
PT - 22.09.2013
tens aqui um exemplo, um sistema de registro que o
Abravanel fez
olha o topico:
https://sampforum.blast.hk/showthread.php?tid=364392