[Ajuda] pequeno problema no /pm
#1

eu estou com um pequeno problema no meu /pm, por exemplo caso eu mande pm para o id q n esteja conectado, eu quero que mostre q ele n esta conectado, mas isso n esta acontecendo, para mostrar q o jogador n esta conectado, eu tenho q digitar a mensagem, ai sim mostra q ele n esta conectado, resumindo eu qero q mostre q o jogador n esta conectado qndo eu faco /pm 99, e nao qndo eu fazer "/pm 99 eae tudo bem cara?"


Код:
	CMD:pm(playerid, params[])
	{
		new nome[MAX_PLAYER_NAME];
		new nome2[MAX_PLAYER_NAME];
		new texto[128];
		new id;
		new str[128];
	    if(sscanf(params, "us[128]", id, texto)) return SendClientMessage(playerid, -1, "[ERRO] Use: /pm [id] [texto]");
	    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Este jogador nao esta conectado");
	    if(playerid == id) return SendClientMessage(playerid, -1, "[ERRO] Voce nao pode usar este comando com si mesmo");
	    
    	GetPlayerName(playerid, nome, 16);
    	GetPlayerName(id, nome2, 16);
   		format(str, sizeof(str), "Mensagem Privada de %s(%d): %s", nome, playerid, texto);
   		SendClientMessage(id, -1, str);
   		format(str, sizeof(str), "Mensagem Enviada para %s(%d): %s", nome2, id, texto);
   		SendClientMessage(playerid, -1, str);
   		return 1;
	}
Reply
#2

A funзгo IsPlayerConnected nгo funciona corretamente quando usando o especificador "u" no sscanf, portanto vocк deve fazer um teste lуgico comparando a variбvel responsбvel pelo id do jogador com a macro INVALID_PLAYER_ID.
Код:
CMD:pm(playerid, params[])
{
	new nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], texto[128], id, str[128];
        if(sscanf(params, "us[128]", id, texto)) return SendClientMessage(playerid, -1, "[ERRO] Use: /pm [id] [texto]");
        if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Este jogador nao esta conectado");
        if(playerid == id) return SendClientMessage(playerid, -1, "[ERRO] Voce nao pode usar este comando com si mesmo");
	    
    	GetPlayerName(playerid, nome, 16);
    	GetPlayerName(id, nome2, 16);
	format(str, sizeof(str), "Mensagem Privada de %s(%d): %s", nome, playerid, texto);
   	SendClientMessage(id, -1, str);
   	format(str, sizeof(str), "Mensagem Enviada para %s(%d): %s", nome2, id, texto);
   	SendClientMessage(playerid, -1, str);
   	return 1;
}
Reply
#3

Quote:
Originally Posted by NathanT
Посмотреть сообщение
A funзгo IsPlayerConnected nгo funciona corretamente quando usando o especificador "u" no sscanf, portanto vocк deve fazer um teste lуgico comparando a variбvel responsбvel pelo id do jogador com a macro INVALID_PLAYER_ID.
Код:
CMD:pm(playerid, params[])
{
	new nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], texto[128], id, str[128];
        if(sscanf(params, "us[128]", id, texto)) return SendClientMessage(playerid, -1, "[ERRO] Use: /pm [id] [texto]");
        if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Este jogador nao esta conectado");
        if(playerid == id) return SendClientMessage(playerid, -1, "[ERRO] Voce nao pode usar este comando com si mesmo");
	    
    	GetPlayerName(playerid, nome, 16);
    	GetPlayerName(id, nome2, 16);
	format(str, sizeof(str), "Mensagem Privada de %s(%d): %s", nome, playerid, texto);
   	SendClientMessage(id, -1, str);
   	format(str, sizeof(str), "Mensagem Enviada para %s(%d): %s", nome2, id, texto);
   	SendClientMessage(playerid, -1, str);
   	return 1;
}
nao funcionou, ainda tenho q digitar a mensagem pra mostrar o erro
Reply
#4

Ao digitar /pm, vocк quer utilizar qual destas opзхes?

1 - /pm 0 Teste

2 - /pm ViniBorn Teste

3 - As duas
Reply
#5

PHP код:
CMD:test(playeridparams[])
{
    new 
id = -1texto[128];
    
sscanf(params"us[128]"idtexto);
    
    if(
id != -1)
    {
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid, -1"Este jogador nao esta conectado");
        if(
playerid == id) return SendClientMessage(playerid, -1"[ERRO] Voce nao pode usar este comando com si mesmo");
        if(
isnull(texto)) return SendClientMessage(playerid, -1"[ERRO] Digite a mensagem");
        
        new 
nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], str[128];
        
GetPlayerName(playeridnome16);
           
GetPlayerName(idnome216);
        
format(strsizeof(str), "Mensagem Privada de %s(%d): %s"nomeplayeridtexto);
           
SendClientMessage(id, -1str);
           
format(strsizeof(str), "Mensagem Enviada para %s(%d): %s"nome2idtexto);
           
SendClientMessage(playerid, -1str);
    }
    else 
SendClientMessage(playerid, -1"[ERRO] Use: /pm [id] [texto]");
    return 
1;

Reply
#6

Quote:
Originally Posted by Cycle
Посмотреть сообщение
Pela visualizaзгo de parвmetros do sscanf, acredito que seja a primeira.
Pela visualizaзгo seria a segunda. Mas vai saber nй...
Reply
#7

Quote:
Originally Posted by Cycle
Посмотреть сообщение
Amigo, eu acho que nгo seria a primeira. Pois ele criou variбvel para armazenar o id, e nгo uma string; ele utilizou a string para o segundo parвmetro.
Especificador u = Nome e/ou ID (string e int)

@edit

Tem uma versгo de sscanf que й bugada ao declarar string no u, mas foi corrigido em uma versгo sucessora.
Reply
#8

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
PHP код:
CMD:test(playeridparams[])
{
    new 
id = -1texto[128];
    
sscanf(params"us[128]"idtexto);
    
    if(
id != -1)
    {
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid, -1"Este jogador nao esta conectado");
        if(
playerid == id) return SendClientMessage(playerid, -1"[ERRO] Voce nao pode usar este comando com si mesmo");
        if(
isnull(texto)) return SendClientMessage(playerid, -1"[ERRO] Digite a mensagem");
        
        new 
nome[MAX_PLAYER_NAME], nome2[MAX_PLAYER_NAME], str[128];
        
GetPlayerName(playeridnome16);
           
GetPlayerName(idnome216);
        
format(strsizeof(str), "Mensagem Privada de %s(%d): %s"nomeplayeridtexto);
           
SendClientMessage(id, -1str);
           
format(strsizeof(str), "Mensagem Enviada para %s(%d): %s"nome2idtexto);
           
SendClientMessage(playerid, -1str);
    }
    else 
SendClientMessage(playerid, -1"[ERRO] Use: /pm [id] [texto]");
    return 
1;

vlw cara funcionou, era bem assim q eu qeria
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)