[Tutorial] Como Criar o comando "/asay"
#1

Bom, sou Iniciante em Pawn, mas quero ajudar vocкs, vim estudando e desenvolvendo este comando, e por fim, consegui!
Caso minha explicaзгo nгo esteja boa ou entendнvel pelo pъblico, me desculpem, Pois й o meu primeiro tutorial. Aceito Crнticas e Sugestхes!

Explicaзгo:


Incluir no topo do seu GameMode:
PHP код:
#include <a_samp>    
#include <zcmd>
#include <sscanf> 
Explicaзгo da aзгo:

As includes no pawn, sгo chamadas de diretivas.
Nуs incluнmos a biblioteca da a_samp(essencial para todo o seu gamemode), zcmd(uma fуrmula diferente de produзгo de comandos), sscanf(quebra a linha das strings nas quais o remetente deseje usar).



Prosseguindo...
PHP код:
CMD:asay(playeridparams[])
{
    new 
falar[128];
    new 
string[128];
        new 
nome[MAX_PLAYER_NAME];
        
GetPlayerName(playeridnomeMAX_PLAYER_NAME);
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"[CORRETOR]: Use /asay [texto]");
    
format(stringsizeof(string),"[GLOBAL MESSENGER]: %s - %s"Nome(playerid), falar);
    
SendClientMessageToAll(-1string);
    return 
1;

Explicaзгo da aзгo:

Criamos o comando, dando inicializaзгo a sua primeira parte. na qual й dita pela biblioteca da include zcmd.
PHP код:
CMD:asay(playeridparams[]) 
⇧ O Nome CMD pode ser substituido por COMMAND;

PHP код:
playerid 
⇧ refere-se ao player que digitar o comando.

PHP код:
params[] 
⇧ utilizaremos os parвmetros, entгo iremos acrescentб-lo na callback do comando.

PHP код:

⇧ Abri a chave primбria do comando!

PHP код:
new falar[128]; 
⇧ new й uma variбvel, e falar й o nome que damos a variбvel, [128] й o nъmero de caracteres que queremos na variбvel.

PHP код:
new string[128]; 
⇧ new й uma variбvel, e string й o nome que damos a variбvel, [128] й o nъmero de caracteres que queremos na variбvel.

PHP код:
new nome[MAX_PLAYER_NAME]; 
⇧ Criei a variбvel que significa o nome do player. O "MAX_PLAYER_NAME" й um complemento para o player.


PHP код:
GetPlayerName(playeridnomeMAX_PLAYER_NAME); 
⇧ GetPlayerName й para adicionar o nome do player atй esta variбvel, playerid й o player que digita o comando. "nome" й o nome da variбvel que damos(new nome[MAX_PLAYER_NAME]). MAX_PLAYER_NAME й o nъmero de caracteres que podem conter o nome.

PHP код:
if(sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"{FF0000}ERRO: Utilize /asay [mensagem]"); 
⇧ if й verificaзгo. sscanf й a include que irб quebrar a string. o nosso comando vai utilizar os parвmetros, entгo vamos acrescentб-lo. "s" й como se fosse a quebra da linha, pular a linha no caso. falar й a variбvel que nуs criamos, ou seja, estamos utilizando a variбvel falar para ser a fala do player. fechamos todos os parenteses que foram abertos. demos um retorno caso o player digite somente "/asay". Colocamos para enviar uma mensagem ao cliente. playerid й a mesma coisa o player que estб praticando o comando. -1 й a cor branca do pawn. abrimos as aspas de palavras chave. colocamos o nosso texto dentro das aspas e fechamos.
Obs.: Esse {FF0000} й a cor vermelha em HTML. Caso queiram checar -
http://www.flextool.com.br/tabela_cores.html


PHP код:
format(stringsizeof(string), "[GLOBAL MESSENGER] - %s: %s"nomefalar); 
⇧ Format й a formataзгo da string, ou seja vocк estб formatando o valor da string. string й o nome da variбvel que vamos formatar. sizeof й o tamanho que vamos usar, que sгo os caracteres que colocamos do lado. string й o nome da variбvel que vamos formatar. Abrimos as aspas de palavras chave. E colocamos as variбveis que definimos para fazer parte da formataзгo da variбvel. Fechamos os parenteses e finalizamos com o ponto e vнrgula.
Obs.: O Que sгo esses "%s"? Isso sгo formatos de strings ou coeficientes nъmeros.
Aconselho estudar o tуpico da Wiki-Samp -
https://sampwiki.blast.hk/wiki/Format


PHP код:
SendClientMessageToAll(-1string); 
⇧ SendClientMessageToAll й para mandar uma mensagem para todos do servidor. Definimos a cor da mensagem em -1 (branco do pawn). Colocamos a formataзгo da string para ser a mensagem, no caso: Administraзгo Global - %s: %s.

PHP код:
return 1
⇧ Retornamos atй o final do comando.

PHP код:

⇧ Fechamos a chave do comando!

Por fim, a conclusгo serб essa:

PHP код:
#include <a_samp>
#include <zcmd>
#include <sscanf>
CMD:asay(playeridparams[])
{
    new 
falar[128];
    new 
string[128];
    new 
nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomeMAX_PLAYER_NAME);
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"[CORRETOR]: Use /asay [texto]");
    
format(stringsizeof(string),"[GLOBAL MESSENGER]: %s - %s"Nome(playerid), falar);
    
SendClientMessageToAll(-1string);
    return 
1;

Obrigado!
Reply
#2

Otimo Tutorial.

Dica
Код:
  new falar[128]; 
  new string[128];
por

Код:
new falar[128], string[128];
Quando for utilizar um parвmetro use o proprio ZCMD
https://sampforum.blast.hk/showthread.php?tid=437499


poderia ter adicionado o ID

PHP код:
CMD:asay(playeridparams[]) 

    new 
falar[128],new string[128], new id;
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"{FFA500}[CORRETOR]{FFFFFF}: Use /asay [texto]"); 
    
format(stringsizeof(string),"[GLOBAL ADMINISTRAЗГO]: %s[%d] - %s"Nome(playerid), id,falar); 
    
SendClientMessageToAll(-1string); 
    return 
1

Reply
#3

Quote:

Re: Como Criar o comando "/asay"
Otimo Tutorial.

Dica
Code:
new falar[128];
new string[128];
por

Code:
new falar[128], string[128];

Acredito que essa seja uma forma de otimizaзгo do GameMode, mas faзo separadamente para ficar mais visнvel e nгo ocorrer atrapalhaзхes.
Reply
#4

Quote:
Originally Posted by fxckshzt
Посмотреть сообщение
Acredito que essa seja uma forma de otimizaзгo do GameMode, mas faзo separadamente para ficar mais visнvel e nгo ocorrer atrapalhaзхes.
Sim mas nгo atrapalha nгo rs eu dei REP
Reply
#5

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
Otimo Tutorial.

Dica
Код:
  new falar[128]; 
  new string[128];
por

Код:
new falar[128], string[128];
Quando for utilizar um parвmetro use o proprio ZCMD
https://sampforum.blast.hk/showthread.php?tid=437499


poderia ter adicionado o ID

PHP код:
CMD:asay(playeridparams[]) 

    new 
falar[128],new string[128], new id;
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"{FFA500}[CORRETOR]{FFFFFF}: Use /asay [texto]"); 
    
format(stringsizeof(string),"[GLOBAL ADMINISTRAЗГO]: %s[%d] - %s"Nome(playerid), id,falar); 
    
SendClientMessageToAll(-1string); 
    return 
1

Algumas vezes me atrapalho, eu crio definiзхes que nem uso muito kkk
Reply
#6

Уtimo Tutorial mano +REP
Reply
#7

Quote:
Originally Posted by GuilhermeNunes
Посмотреть сообщение
Уtimo Tutorial mano +REP
Obrigado!
Reply
#8

e um asay dependendo da org seria assim

PHP код:
#include <a_samp> 
#include <zcmd> 
#include <sscanf> 
CMD:asay(playeridparams[]) 

new 
falar[128]; 
    new 
string[128]; 
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"[CORRETOR]: Use /asay [texto]"); 
    if(
JogadorFoAdmin){
    
format(stringsizeof(string),"[GLOBAL ADMINISTRAЗГO]: %s - %s"Nome(playerid), falar); 
    
SendClientMessageToAll(-1string); 
    }
    if(
SePlayerforSomenteJogador){
    
format(stringsizeof(string),"[GLOBAL MESSENGER]: %s - %s"Nome(playerid), falar); 
    
SendClientMessageToAll(-1string); 
    }
    return 
1

Reply
#9

Quote:
Originally Posted by Jonorusc
Посмотреть сообщение
e um asay dependendo da org seria assim

PHP код:
#include <a_samp> 
#include <zcmd> 
#include <sscanf> 
CMD:asay(playeridparams[]) 

new 
falar[128]; 
    new 
string[128]; 
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"[CORRETOR]: Use /asay [texto]"); 
    if(
JogadorFoAdmin){
    
format(stringsizeof(string),"[GLOBAL ADMINISTRAЗГO]: %s - %s"Nome(playerid), falar); 
    
SendClientMessageToAll(-1string); 
    }
    if(
SePlayerforSomenteJogador){
    
format(stringsizeof(string),"[GLOBAL MESSENGER]: %s - %s"Nome(playerid), falar); 
    
SendClientMessageToAll(-1string); 
    }
    return 
1

Caso alguйm queira utilizar este tуpico para alguma dъvida, aconselho a vocк corrigir-se.

PHP код:
CMD:asay(playeridparams[])
{
    new 
falar[128];
    new 
string[128];
    new 
nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomeMAX_PLAYER_NAME);
    if(
sscanf(params"s"falar)) return SendClientMessage(playerid, -1,"[CORRETOR]: Use /asay [texto]");
    if(!
IsPlayerAdmin(playerid))
    {
        
format(stringsizeof(string),"[GLOBAL MESSENGER]: %s - %s"nomefalar);
        
SendClientMessageToAll(-1string);
    }
    if(!
IsPlayerAdmin(playerid) == false)
    {
        
format(stringsizeof(string),"[GLOBAL ADMINISTRAЗГO]: %s - %s"nomefalar);
        
SendClientMessageToAll(-1string);
    }
    return 
1;

Reply
#10

Quote:
Originally Posted by fxckshzt
Посмотреть сообщение
..
Minha sugestгo...

PHP код:
CMD:asay(playeridparams[])
{
    
//como o parametro й sу texto, use a propiб variбvel do zcmd!
    
if(isnull(param)) return SendClientMessage(playerid, -1,"[CORRETOR]: Use /asay [texto]");
    
    if(
IsPlayerAdmin(playerid))  //se for admin [trocar pelo seu sistema admin ou vip]
        
SendClientMessageToAllf(-1"[GLOBAL ADMINISTRAЗГO]: %s - %s"GetPlayerNameEx(playerid), param);
    else                                
//player normal
        
SendClientMessageToAllf(-1"[GLOBAL MESSENGER]: %s - %s"GetPlayerNameEx(playerid), param);
    return 
1;

Inclusхes:
PHP код:
//-------------------------------------------------------------------------------------------------------------------
//SendClientMessageToAllf eu aconcelho usar o do Plugin YSF, porque й mais rapido!
//mas tambem tem este macro:
static str[128];
#define SendClientMessagef(%0,%1,%2,%3) format(str, sizeof(str),%2,%3) && SendClientMessage(%0, %1, str)
#define SendClientMessageToAllf(%1,%2,%3) format(str, sizeof(str),%2,%3) && SendClientMessageToAll(%1, str)
//-------------------------------------------------------------------------------------------------------------------
stock GetPlayerNameEx(playerid)
{
    new 
nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomeMAX_PLAYER_NAME);
    return 
nome;
}
//------------------------------------------------------------------------------------------------------------------- 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)