[Ajuda] Bug no Sistema de Vip
#1

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:

Код:
LoadVip();
CallBack OnGameModeExit:

Код:
SaveVip();
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
Reply
#2

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 ...
Reply
#3

Desculpe a idiotice, mas o que й SQLite? :S
Reply
#4

й 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
Reply
#5

Entгo como eu usaria o SQLite para resolver o meu problema? :S
Reply
#6

criando um sistema de salvamento com ela, em vez de usar a que vc esta usando...
Reply
#7

Ja me aconselharam a usar DOF2, mas essa dai й melhor?
Mostra um exemplo de salvamento ae com a SQLite pra mim por favor...
Reply
#8

tens aqui um exemplo, um sistema de registro que o Abravanel fez

olha o topico: https://sampforum.blast.hk/showthread.php?tid=364392
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)