21.09.2013, 23:50
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:
CallBacks:
CallBack OnGameModeInit:
CallBack OnGameModeExit:
Comando /darvip:
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:
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
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
Код:
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; }
Код:
LoadVip();
Код:
SaveVip();
Код:
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; }
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[]
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