[Ajuda] /setarvip por dias repete mensagem e nгo seta
#1

Bom, queria uma ajuda com o comando /setarvip, que apenas repete a mensagem "Use: /setarvip (id) (dias)" e nгo seta.
Onde estб o erro? Quem resolver, por gentileza poderia me explicar?

Agradeзo a atenзгo!

P.S: O comando й bem extenso, e nгo й meu. kkk

Код:
CMD:setarvip(playerid, params[])
{
	new ID,
		Dias,
		y,
		m,
		d,
		h,
		mi,
		s,
		bx,
		ca;
	if(PlayerDados[playerid][Admin] < 4) return 0;
    if(sscanf(params, "ud", ID, Dias)) return SendClientMessage(playerid, VERMELHO, "Use: /SetarVip (id) (Dias)");
    if(Dias > 30) return SendClientMessage(playerid, VERMELHO, "Mбximo de dias permitido й '{FFFFFF}30{FF0000}'");
	SendClientFormat(playerid, AZUL_SISTEMA, "Vocк setou VIP de %d dias ao jogador %s[%d]", Dias, PlayerName(ID), ID);
	SendClientFormat(ID, VERDE, "O(A) Staff %s setou %d dias de VIP para vocк", PlayerName(playerid), Dias);
	format(StringVIP, sizeof(StringVIP), "VIPs/%s.ini", PlayerName(ID));
	if(DOF2_FileExists(StringVIP))
	{
	    d = DOF2_GetInt(StringVIP, "DiaExp");
		m = DOF2_GetInt(StringVIP, "Mкs");
		y = DOF2_GetInt(StringVIP, "Ano");
		bx=d+Dias;
		if(m==12 && bx>31)
		{ca=bx-31;bx=ca;y++;m=1;}
		if(bx>30 && m==4 || bx>30 && m==6 || bx>30 && m==9 || bx>30 && m==11)
		{ca=bx-30;m++; }
		else if(bx>31 && m==1 || bx>31 && m==3 || bx>31 && m==5 || bx>31 && m==7 || bx>31 && m==8 || bx>31 && m==10 || bx>31 && m==12)
		{ca=bx-31;m++;}
		else if(m==2 && bx>29 && y%4==0)
		{ca=bx-29;m++;}
		else if(m==2 && bx>28 && y%4!=0)
		{ca=bx-28;m++;}
		else ca=bx;
		DOF2_SetInt(StringVIP, "DiaExp", ca);
	    DOF2_SetInt(StringVIP, "Mкs", m);
	    DOF2_SetInt(StringVIP, "Ano", y);
	    DOF2_SetInt(StringVIP, "Hora", h);
	    DOF2_SetInt(StringVIP, "Minuto", mi);
	    DOF2_SetInt(StringVIP, "Segundo", s);
		DOF2_SaveFile();
		PlayerDados[ID][VIP] = true;
	}
	else
	{
		getdate(y,m,d);
		gettime(h,mi,s);
		bx=d+Dias;
		if(m==12 && bx>31)
		{y++;m++;}
		if(bx>30 && m==4 || bx>30 && m==6 || bx>30 && m==9 || bx>30 && m==11)
		{ca=bx-30;m++; }
		else if(bx>31 && m==1 || bx>31 && m==3 || bx>31 && m==5 || bx>31 && m==7 || bx>31 && m==8 || bx>31 && m==10 || bx>31 && m==12)
		{ca=bx-31;m++;}
		else if(m==2 && bx>29 && y%4==0)
		{ca=bx-29;m++;}
		else if(m==2 && bx>28 && y%4!=0)
		{ca=bx-28;m++;}
		else ca=bx;
		DOF2_CreateFile(StringVIP);
		DOF2_SetInt(StringVIP, "DiaExp", ca);
	    DOF2_SetInt(StringVIP, "Mкs", m);
	    DOF2_SetInt(StringVIP, "Ano", y);
	    DOF2_SetInt(StringVIP, "Hora", h);
	    DOF2_SetInt(StringVIP, "Minuto", mi);
	    DOF2_SetInt(StringVIP, "Segundo", s);
		DOF2_SetInt(StringVIP, "CorTag", 1);
		DOF2_SaveFile();
		PlayerDados[ID][VIP] = true;
	}
	return 1;
}
Reply
#2

Quote:
Originally Posted by Psicotico
Посмотреть сообщение
Bom, queria uma ajuda com o comando /setarvip, que apenas repete a mensagem "Use: /setarvip (id) (dias)" e nгo seta.
Onde estб o erro? Quem resolver, por gentileza poderia me explicar?

Agradeзo a atenзгo!

P.S: O comando й bem extenso, e nгo й meu. kkk

Код:
CMD:setarvip(playerid, params[])
{
	new ID,
		Dias,
		y,
		m,
		d,
		h,
		mi,
		s,
		bx,
		ca;
	if(PlayerDados[playerid][Admin] < 4) return 0;
    if(sscanf(params, "ud", ID, Dias)) return SendClientMessage(playerid, VERMELHO, "Use: /SetarVip (id) (Dias)");
    if(Dias > 30) return SendClientMessage(playerid, VERMELHO, "Mбximo de dias permitido й '{FFFFFF}30{FF0000}'");
	SendClientFormat(playerid, AZUL_SISTEMA, "Vocк setou VIP de %d dias ao jogador %s[%d]", Dias, PlayerName(ID), ID);
	SendClientFormat(ID, VERDE, "O(A) Staff %s setou %d dias de VIP para vocк", PlayerName(playerid), Dias);
	format(StringVIP, sizeof(StringVIP), "VIPs/%s.ini", PlayerName(ID));
	if(DOF2_FileExists(StringVIP))
	{
	    d = DOF2_GetInt(StringVIP, "DiaExp");
		m = DOF2_GetInt(StringVIP, "Mкs");
		y = DOF2_GetInt(StringVIP, "Ano");
		bx=d+Dias;
		if(m==12 && bx>31)
		{ca=bx-31;bx=ca;y++;m=1;}
		if(bx>30 && m==4 || bx>30 && m==6 || bx>30 && m==9 || bx>30 && m==11)
		{ca=bx-30;m++; }
		else if(bx>31 && m==1 || bx>31 && m==3 || bx>31 && m==5 || bx>31 && m==7 || bx>31 && m==8 || bx>31 && m==10 || bx>31 && m==12)
		{ca=bx-31;m++;}
		else if(m==2 && bx>29 && y%4==0)
		{ca=bx-29;m++;}
		else if(m==2 && bx>28 && y%4!=0)
		{ca=bx-28;m++;}
		else ca=bx;
		DOF2_SetInt(StringVIP, "DiaExp", ca);
	    DOF2_SetInt(StringVIP, "Mкs", m);
	    DOF2_SetInt(StringVIP, "Ano", y);
	    DOF2_SetInt(StringVIP, "Hora", h);
	    DOF2_SetInt(StringVIP, "Minuto", mi);
	    DOF2_SetInt(StringVIP, "Segundo", s);
		DOF2_SaveFile();
		PlayerDados[ID][VIP] = true;
	}
	else
	{
		getdate(y,m,d);
		gettime(h,mi,s);
		bx=d+Dias;
		if(m==12 && bx>31)
		{y++;m++;}
		if(bx>30 && m==4 || bx>30 && m==6 || bx>30 && m==9 || bx>30 && m==11)
		{ca=bx-30;m++; }
		else if(bx>31 && m==1 || bx>31 && m==3 || bx>31 && m==5 || bx>31 && m==7 || bx>31 && m==8 || bx>31 && m==10 || bx>31 && m==12)
		{ca=bx-31;m++;}
		else if(m==2 && bx>29 && y%4==0)
		{ca=bx-29;m++;}
		else if(m==2 && bx>28 && y%4!=0)
		{ca=bx-28;m++;}
		else ca=bx;
		DOF2_CreateFile(StringVIP);
		DOF2_SetInt(StringVIP, "DiaExp", ca);
	    DOF2_SetInt(StringVIP, "Mкs", m);
	    DOF2_SetInt(StringVIP, "Ano", y);
	    DOF2_SetInt(StringVIP, "Hora", h);
	    DOF2_SetInt(StringVIP, "Minuto", mi);
	    DOF2_SetInt(StringVIP, "Segundo", s);
		DOF2_SetInt(StringVIP, "CorTag", 1);
		DOF2_SaveFile();
		PlayerDados[ID][VIP] = true;
	}
	return 1;
}
yes replace the sscanf line with this
Quote:

if(sscanf(params, "ii", ID, Dias)) return SendClientMessage(playerid, VERMELHO, "Use: /SetarVip (id) (Dias)");

+REP if I helped you
Reply
#3

Quote:
Originally Posted by Eoussama
Посмотреть сообщение
yes replace the sscanf line with this


+REP if I helped you
Nгo deu certo. Compila corretamente, porйm o erro in-game permanece.
OBS: Notei agora que o samp-server.exe aparece a mensagem "sscanf error: System not initialised.". E nгo uso a include sscanf. Serб isso?

@edit
funcionou. Falta de atenзгo minha. Apenas coloquei a #include <sscanf2> no topo e funcionou o comando.
Thx .
Reply
#4

Quote:
Originally Posted by Eoussama
Посмотреть сообщение
yes replace the sscanf line with this


+REP if I helped you
Ae cara.
aprende + 1 pouco o sscanf...
u = numero
d = numero
i = numero
s = texto
Reply
#5

Quote:
Originally Posted by SmokiieGamer
Посмотреть сообщение
Ae cara.
aprende + 1 pouco o sscanf...
u = numero
d = numero
i = numero
s = texto
Код:
%i - nъmeros inteiros
%d - nъmeros inteiros
%f - nъmeros decimais
%s - string
Reply
#6

Valeu, jб resolvi.
Thx.
Reply
#7

Quote:
Originally Posted by SmokiieGamer
Посмотреть сообщение
Ae cara.
aprende + 1 pouco o sscanf...
u = numero
d = numero
i = numero
s = texto
Tecnicamente, o especificador u aceita tanto inteiro quanto string.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)