[Ajuda] Sobre valores solicitados no comando
#1

gostaria de saber como fazer uma verificacao de texto e valor no comando.
E se puderem poderiam verificar se tem como simplificar mais o comando? pois achei muito estranho ter o cmd e tmp no comando.Caso eu utilize um so ocorre alguns bugs dentro do game como aparecer "USE: /setaradmin"
Exemplo:
Код:
	
public OnPlayerCommandText(playerid, cmdtext[])
{

	new string[512 char];
	new sendername[MAX_PLAYER_NAME];
	new cmd[128];
	new tmp[128];
	new giveplayer[MAX_PLAYER_NAME];
	new idx;
	cmd = strtok(cmdtext, idx);
	GetPlayerName(playerid, sendername, sizeof(sendername));

        if (strcmp("/setaradmin", cmdtext, true, 10) == 0)
	{
     	if(IsPlayerConnected(playerid))
	    {
	    	tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USE: /setaradmin [playerid/ParteDoNome] [0-1338]");
				return 1;
			}
			new playa;
			new admin;
			playa = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			admin = strval(tmp);
			if(PlayerInfo[playerid][pAdmin] >= 0)// alterar depois
			{
				if(admin < 0 || admin > 1338) { SendClientMessage(playerid, COLOR_GRAD2, "   Escolha um nivel de admin de 0 a 1338 !"); return 1; }
			    if(IsPlayerConnected(playa))
	   		 	{
		        	if(playa != INVALID_PLAYER_ID)
			        {
						PlayerInfo[playa][pAdmin] = admin;
						GetPlayerName(playa, giveplayer, sizeof(giveplayer));
						format(string, 256, "[ADMIN]: %s Acabou de dar Admin level %d para %s's (%d).", sendername,admin,giveplayer,playa);
						SendClientMessage(playa, COLOR_LIGHTBLUE, string);
						format(string, sizeof(string), "** %s (%d) Setou seu Admin level para %d !",sendername,playerid,admin);
						SendClientMessage(playa, COLOR_LIGHTBLUE, string);
						new y, m, d;
						new h,mi,s;
						getdate(y,m,d);
						gettime(h,mi,s);
						format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s Setou %s's para Admin level %d",d,m,y,h,mi,s,sendername,giveplayer,admin);
						GiveLog(string);
					}
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "** voce nao pode usar este comando!");
				return 1;
			}
		}
		return 1;
	}
	return 1;
}
Reply
#2

Bom nгo entendi muito oque vocк quis dizer, porйm...

Se a variбvel admin obter um valor menor que "0" ou um valor maior que "1338" retornarб no chat estб mensagem: Escolha um nivel de admin de 0 a 1338 !
PHP код:
if(admin || admin 1338) return SendClientMessage(playeridCOLOR_GRAD2"Escolha um nivel de admin de 0 a 1338 !"); 
Se o ID do player que vocк digitou no comando nгo estiver online, ele retornarб estб mensagem no chat: Este player nгo estб conectado no servidor
PHP код:
if(!IsPlayerConnected(playa)) return SendClientMessage(playeridCOLOR_GRAD2"Este player nгo estб conectado no servidor"); 
Reply
#3

Olhe isto:

http://forum.sa-mp.com/showpost.php?...postcount=1141

E olhando tutoriais de como usar sscanf e um processador de comandos, como ycmd, vocк conseque usar sscanf e strcmp.

Olhe este tutorial do PT:
https://sampforum.blast.hk/showthread.php?tid=460056

Recomendo vocк usar um processador de comandos em vez de usar strcmp para fazer comandos.


Fazendo isto o comando vai ficar mais simplificado e melhor de se ver.
Reply
#4

eu vou corrigir essa parte de menor q 0 . Mas gostaria de saber uma coisa . Por que que e criado duas vezes o tmp = strtok(cmdtext, idx); e pq n usar o cmd = strtok(cmdtext, idx);
e como criar uma mensagem quando o cara n digitar nenhum valor de nivel de admin aparecer algo escrito.
Reply
#5

O primeiro й para o espaзo de "/setaradmin e [ID DO PLAYER]"
O segundo й para o espaзo entre "[ID DO PLAYER] e [0-1338 LEVEL ADMIN]"
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)