SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 02/10/2017, 06:08 AM   #1
ZaturN
Huge Clucker
 
ZaturN's Avatar
 
Join Date: Dec 2013
Location: Vinewood
Posts: 417
Reputation: 4
Default pequeno problema no /pm

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?"


Code:
	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;
	}
__________________
Ganhe $10.000 Em Qualquer Server, Aperte "ALT+ENTER"
ZaturN is offline   Reply With Quote
Old 02/10/2017, 12:33 PM   #2
NathanT
Big Clucker
 
Join Date: Jul 2016
Posts: 154
Reputation: 17
Default Re: pequeno problema no /pm

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.
Code:
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;
}
NathanT is offline   Reply With Quote
Old 02/10/2017, 01:01 PM   #3
ZaturN
Huge Clucker
 
ZaturN's Avatar
 
Join Date: Dec 2013
Location: Vinewood
Posts: 417
Reputation: 4
Default Re: pequeno problema no /pm

Quote:
Originally Posted by NathanT View Post
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.
Code:
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
__________________
Ganhe $10.000 Em Qualquer Server, Aperte "ALT+ENTER"
ZaturN is offline   Reply With Quote
Old 02/10/2017, 04:12 PM   #4
ViniBorn
Godfather
 
ViniBorn's Avatar
 
Join Date: Aug 2010
Location: Brasília
Posts: 5,315
Reputation: 720
Default Re: pequeno problema no /pm

Ao digitar /pm, você quer utilizar qual destas opções?

1 - /pm 0 Teste

2 - /pm ViniBorn Teste

3 - As duas
__________________



CONTATO: F A C E B O O K: @vinibornpawn

ViniBorn is offline   Reply With Quote
Old 02/10/2017, 04:17 PM   #5
RodrigoMSR
High-roller
 
RodrigoMSR's Avatar
 
Join Date: Mar 2015
Location: Brazil
Posts: 1,075
Reputation: 140
Default Re: pequeno problema no /pm

PHP Code:
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;

__________________
sttserver.net

RodrigoMSR is offline   Reply With Quote
Old 02/10/2017, 04:30 PM   #6
ViniBorn
Godfather
 
ViniBorn's Avatar
 
Join Date: Aug 2010
Location: Brasília
Posts: 5,315
Reputation: 720
Default Re: pequeno problema no /pm

Quote:
Originally Posted by Cycle View Post
Pela visualização de parâmetros do sscanf, acredito que seja a primeira.
Pela visualização seria a segunda. Mas vai saber né...
__________________



CONTATO: F A C E B O O K: @vinibornpawn

ViniBorn is offline   Reply With Quote
Old 02/10/2017, 04:40 PM   #7
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Posts: 2,726
Reputation: 260
Default Re: pequeno problema no /pm

Quote:
Originally Posted by Cycle View Post
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.
F1N4L is offline   Reply With Quote
Old 02/10/2017, 04:55 PM   #8
ZaturN
Huge Clucker
 
ZaturN's Avatar
 
Join Date: Dec 2013
Location: Vinewood
Posts: 417
Reputation: 4
Default Re: pequeno problema no /pm

Quote:
Originally Posted by RodrigoMSR View Post
PHP Code:
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
__________________
Ganhe $10.000 Em Qualquer Server, Aperte "ALT+ENTER"
ZaturN is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Pequeno problema feliphemort Português/Portuguese 6 12/04/2013 11:34 PM
Pequeno problema. Pedro Pawno Português/Portuguese 10 24/03/2013 10:03 PM
[Ajuda] Pequeno problema !!! hard_dalzot Português/Portuguese 5 07/10/2012 06:40 PM
[Ajuda] Pequeno problema com sql Rodrigo. Português/Portuguese 2 27/09/2012 11:40 PM


All times are GMT. The time now is 05:53 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.