[Pedido] Sistema de /agendarcadeia
#1

Olб galerinha! Eu queria pedir vocкs para me ajudar a implementar a funзгo de agendar os avisos pelo /agendarcadeia, exemplo: /agendarcadeia [NOME] [TEMPO] [AVISOS] [MOTIVO] !

Meu sistema de /agendarcadeia:

Код:
    if(strcmp(cmd, "/agendarcadeia",true) == 0 || strcmp(cmd, "/agendar",true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            new tmpo[20];
            if(PlayerInfo[playerid][pAdmin] < 1)
            {
                SendClientMessage(playerid, COLOR_GREY, "   Vocк nгo esta autorizado para usar este comando!");
                return true;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /agendarcadeia [NOME_CORRETO] [Tempo] [Motivo]");
                return true;
            }
            tmpo = strtok(cmdtext, idx);
            if(!strlen(tmpo))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /agendarcadeia [NOME_CORRETO] [Tempo] [Motivo]");
                return true;
            }
            new tempo2 = strval(tmpo);
            
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' '))
			{
				idx++;
			}
			new offset = idx;
			new result[64];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USE: /agendarcadeia [NOME_CORRETO] [Tempo] [Motivo]");
				return true;
			}
            GetPlayerName(playerid, sendername, sizeof(sendername));
           	new arquivo[128];
			format(arquivo, sizeof(arquivo), "Contas/%s.ini",tmp);
			if(!DOF2_FileExists(arquivo))
			{
			    SendClientMessage(playerid, COLOR_WHITE, "[ERRO] Este nick nгo estб registrado no Brasil PlayMoon!");
			    return true;
			}
   			format(string, sizeof(string), "O Admin %s agendou o nick %s para %d minutos de cadeia, Motivo: %s",PlayerName(playerid), tmp, tempo2, (result));
            SendClientMessageToAll(COLOR_LIGHTRED, string);
            AgendarLog(string);
			DOF2_SetInt(arquivo,"Jailed",9);
			DOF2_SetInt(arquivo,"JailTime",tempo2 * 60);
		    strmid(AgendouInfo[playerid][cAdminAgendou], sendername, 0, strlen(sendername), MAX_PLAYER_NAME);
			DOF2_SetString(arquivo,"AdminAgendou",sendername);
 		    strmid(AgendouInfo[playerid][cMotivoAgendou], result, 0, strlen(result), MAX_PLAYER_NAME);
			DOF2_SetString(arquivo,"MotivoAgendou",result);
			DOF2_SetInt(arquivo,"Agendado",1);
			DOF2_SetInt(arquivo,"TempoAgendado",tempo2);
			DOF2_SaveFile();
        }
        return true;
    }
Meu sistema de /aviso:
Код:
    if(strcmp(cmd, "/aviso", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	    	tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USE: /aviso [id] [motivo]");
				return true;
			}
			giveplayerid = ReturnUser(tmp);
			if (PlayerInfo[playerid][pAdmin] >= 1)
			{
   				if(giveplayerid != INVALID_PLAYER_ID)
			    {
				    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
					GetPlayerName(playerid, sendername, sizeof(sendername));
					new length = strlen(cmdtext);
					if(strcmp(giveplayer,"Storm_Front",true)==0)
					{
					    SendClientMessage(playerid, COLOR_WHITE, "Vocк nгo pode avisar este Admin");
					    format(string, sizeof(string), "[Aviso] %s [ID: %d] tentou usar /aviso em vocк!",PlayerName(playerid), playerid);
						SendClientMessage(giveplayerid, COLOR_YELLOW, string);
						return true;
					}
					while ((idx < length) && (cmdtext[idx] <= ' '))
					{
						idx++;
					}
					new offset = idx;
					new result[64];
					while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
					{
						result[idx - offset] = cmdtext[idx];
						idx++;
					}
					result[idx - offset] = EOS;
					if(!strlen(result))
					{
						SendClientMessage(playerid, COLOR_GRAD2, "USE: /aviso [id] [motivo]");
						return true;
					}
					PlayerInfo[giveplayerid][pWarns] += 1;
					if(PlayerInfo[giveplayerid][pWarns] >= 3)
					{
						format(string, sizeof(string), "AdmCmd: %s foi automaticamente banido temporariamente (3 dias), Motivo: Passou de 3 avisos (%d-%d-%d)", giveplayer);
						BanLog(string);
						format(string, sizeof(string), "AdmCmd: %s foi avisado por %s, Motivo: %s", giveplayer, sendername, (result));
						SendClientMessageToAll(COLOR_LIGHTRED, string);
						format(string, sizeof(string), "AdmCmd: %s foi banido temporariamente por 3 dias (Passou de 3 avisos)", giveplayer);
						SendClientMessageToAll(COLOR_LIGHTRED, string);
						getdate(Ano, Mes, Dia);
						PlayerInfo[giveplayerid][pDiaBanTemp] = Dia+3;
						PlayerInfo[giveplayerid][pMesBanTemp] = Mes;
						PlayerInfo[giveplayerid][pAnoBanTemp] = Ano;
						if(PlayerInfo[giveplayerid][pMesBanTemp] == 1 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 2 && PlayerInfo[giveplayerid][pDiaBanTemp] > 28)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 28;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
 						if(PlayerInfo[giveplayerid][pMesBanTemp] == 3 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
 						if(PlayerInfo[giveplayerid][pMesBanTemp] == 4 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 5 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 6 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 7 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 8 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 9 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 10 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 11 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] == 12 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
						{
							PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
							PlayerInfo[giveplayerid][pMesBanTemp]++;
						}
      					if(PlayerInfo[giveplayerid][pMesBanTemp] > 12)
						{
							PlayerInfo[giveplayerid][pMesBanTemp] -= 12;
							PlayerInfo[giveplayerid][pAnoBanTemp]++;
						}
						OnPlayerSave(giveplayerid);
						BanTemp(giveplayerid, "Terceiro aviso", PlayerName(playerid));
						return true;
					}
					format(string, sizeof(string), "AdmCmd: %s foi avisado por %s, Motivo: %s", giveplayer, sendername, (result));
					SendClientMessageToAll(COLOR_LIGHTRED, string);
					return true;
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "   Esse nгo й um jogador ativo.");
			}
		}
		return true;
	}
Reply
#2

Usa esse filter script do Link abaixo pegou de boas no meu GM

LINK:
4shared.com/rar/4uUVX5VU/Sis
Reply
#3

Quote:
Originally Posted by iTakelot
Посмотреть сообщение
Usa esse filter script do Link abaixo pegou de boas no meu GM

LINK:
4shared.com/rar/4uUVX5VU/Sis
Cara, eu jб tenho o sistema, oque й quero й implementar neste comando й agendar os avisos ! Tipo: /agendarcadeia [NOME] [TEMPO] [AVISOS] [MOTIVO]
Daн quando agendo: O admin %s agendou a cadeia de %s por %s minutos com %s avisos, Motivo: %s

E quando o player loga e estб agendado com 3+ avisos ele й banido automaticamente, de acordo com meu sistema de /aviso !
Reply
#4

Cria um novo parвmetro no comando ou entгo usa sscanf.
Reply
#5

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Cria um novo parвmetro no comando ou entгo usa sscanf.
E como se cria um novo parвmetro ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)