SA-MP Forums Archive
[Tutorial] Usando y_commands e sscanf - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Usando y_commands e sscanf (/showthread.php?tid=460056)

Pages: 1 2 3


Usando y_commands e sscanf - PT - 26.08.2013

Digo desde ja que este e o meu primeiro tutorial aqui no forum, e irei vos mostrar juntamente com o SmiT como criar comandos com y_commands e sscanf.
Eu ja tinha ca visto sobre ZCMD, Bcmd, etc... mas nгo ainda sobre y_command por isso decidi tentar fazer 1 tutorial, e aqui estб o resultado.

O que й?

Bem y_commands e o processador de comandos mais rapido e flexivel existente ate ao momento e sscanf й a melhor alternativa para uso substituindo a velha Strtok, ambos foram criados por ******.

Requesitos e onde colocar

Bom primeiramente terб de fazer download da biblioteca YSI e da sscanf e sua plugin, aqui tem:
Apуs o download copie/corte a pasta "YSI" e coloque na pasta "..pawno/include" e a "sscanf2.inc" tambйm copie/corte e coloque na pasta "..pawno/include".

Quanto ao plugin

No Windows
  • Tera de copiar ou cortar a "sscanf.dll" e colocar na pasta "plugins". Se nao existir esta pasta, tera de criar-la.
  • Depois abra o "server.cfg" e adicione "sscanf.dll" na linha "plugins", se nao tiver tera de criar-la assim:
Код:
plugins sscanf.dll
No Linux
  • Tera de copiar ou cortar a "sscanf.so" e colocar na pasta "plugins". Se nao existir esta pasta, tera de criar-la.
  • Depois abra o "server.cfg" e adicione "sscanf.so" na linha "plugins", se nao tiver tera de criar-la assim:
Код:
plugins sscanf.so
Adicionando ao GameMode

Bem agora temos de carregar o y_commands e a sscanf. Para isso no topo do seu script tera de os incluir (include).

Assim:
pawn Код:
#include <YSI\y_commands>
#include <sscanf2>
Isto ira carregar os Codes da pasta "..pawno/include/YSI/y_commands.inc" e "..pawno/include/sscanf2.inc" para o seu script.

Nota
  • Os comandos que criarem nao poderao estar dentro de qualquer Callback, tem de ser criados fora.

E ja agora uma Callback й uma funзгo cуdigo que jб existe no seu script ou seja e uma funзгo nativa, exemplo;

pawn Код:
public OnGameModeInit()
{
    return 1;
}
  • Se colocar os seus comandos dentro destas Callback's irгo ocorrer erros, e com isso poderemos ficar aborrecidos e desistir de criar comandos.

Adicionando um comando
  • Para adicionar um comando basta estar fora de qualquer Callback e seguir as funзхes
pawn Код:
YCMD:teste(playerid, params[], help)
{
    return 1;
}
  • params e o parametro string, playerid e o ID do player que executa o comando.
  • y_commands tem um sistema help imbutido.
Nota


Em vez de usar "params" podemos usar "o".
Ficara assim:

pawn Код:
YCMD:teste(playerid, o[], help)
{
    return 1;
}
Sistema help do y_commands

Analise o comando abaixo:

pawn Код:
YCMD:oi(playerid, params[], help)
{
    if(help)
        return SendClientMessage(playerid, -1, "fixe");
    SendClientMessage(playerid, -1, "oi");
    return 1;
}
Como podem verificar ele possui o parametro 'help' preenchido, agora como ler-lo?

Para ler-lo й preciso criar um comando que leia esses parametros, por exemplo esse abaixo:

pawn Код:
YCMD:help(playerid, params[], help)
{
    if (isnull(params)) return SendClientMessage(playerid, -1, "uso: /help [comando]");
    Command_ReProcess(playerid, params, true);
    // isto ira ler o parametro 'help' do comando que colocarmos
    return 1;
}
Com o comando acima sempre que escrever /help [nome do comando] ele ira mostrar o que contem o paramentro 'help' desse comando que quer ver.
Criando comandos sem sscanf
pawn Код:
YCMD:ola(playerid, params[], help)
{
    SendClientMessage(playerid, -1, "PT o comando funciona!");
    return 1;
}
Код:
warning 203: symbol is never used "params"
warning 203: symbol is never used "help"
Podemos dizer ao script que nao queremos usar os paramentros "params" e "help" usando a diretiva "#pragma unused symbol" no comando, assim:

pawn Код:
YCMD:ola(playerid, params[], help)
{
    #pragma unused params, help
    SendClientMessage(playerid, -1, "PT o comando funciona!");
    return 1;
}

Outro Exemplo
pawn Код:
YCMD:adm(playerid, params[], help)
{
    new string[ 128 ];
    new pname[ MAX_PLAYER_NAME ];
   
    if( !IsPlayerAdmin(playerid) ) return SendClientMessage(playerid, -1, "Este comando nao podes usar");
    if( help ) return SendClientMessage(playerid, -1, "Este e um comando de admin RCON");
    if( isnull( params ) ) return SendClientMessage(playerid, -1, "Erro: /adm [texto]");
    GetPlayerName( playerid, pname, sizeof( pname ) );
    format( string, sizeof( string ),"(RCON) %s: %s", pname, params);
    SendClientMessageToAll(-1, string);
    return 1;
}

StringpnameNota

Em vez de:
pawn Код:
new string[ 128 ];
new pname[ MAX_PLAYER_NAME ];
Pode fazer assim:
pawn Код:
new string[ 128 ], pname[ MAX_PLAYER_NAME ];
so fiz daquela forma para ser mais facil explicar.

Sistema HelpIsnullArraysObtendo o nome do playerFormatPlaceholdersSendClientMessageToAll Examplo de uso
resultado:

Код:
(RCON) PT: testando
Placeholders

Код:
% b Insere um nъmero nesta posiзгo em base binбria
% c Insere um ъnico caracter.
% d Insere um (inteiro) nъmero inteiro
% f Insere um nъmero de ponto flutuante (float).
% i Insere um nъmero inteiro.
% s Insere uma string. (usamos este a pouco)
% x Insere um nъmero em notaзгo hexadecimal.
%% Insere o caracter '%'
Criando comandos com sscanf
pawn Код:
YCMD:vida(playerid, params[], help)
{
    new ID;
    if( help ) return SendClientMessage(playerid, -1, "Este comando dara vida a 1 player!");
    if( sscanf( params, "u", ID ) ) return SendClientMessage(playerid, -1, "Uso: /vida [PlayerName / ID]");
    if( PlayerID == INVALID_PLAYER_ID ) return SendClientMessage(playerid, -1, "[ERRO] Este playes esta OFFLINE");
    SetPlayerHealth(ID, 100);
    return 1;
}
Declarando
Sistema help
Sscanf
INVALID_PLAYER_ID
SetPlayerHealth
A formula da Sscanf no comando
pawn Код:
if(sscanf( params, "Especificacoes", Nossas variaveis ) )  // Se o player introduziu os parametros incorretos
{
 // mensagem para avisar o player
}
Especificacoes

Usamos-las conforme o fim que queremos obter

Код:
a - se for um caracter.
f - se for um nъmero de ponto flutuante (float).
i ou d - se for um nъmero inteiro.
s - se for uma string. 
x ou h - Insere um nъmero em notaзгo hexadecimal.
z - se for um texto opcional
px - se for um delimitador adicional, onde X em outro player.
'' - para localizar uma string ( texto ).
u - parte de um nome ou um id
Comandos

Mensagem: UNKNOWN COMMAND
Mas podemos colocar uma mensagem para ficar mais agradavel de ser ver, para isso usamos assim:
Resultado final

Creditos



Re: Usando y_commands e sscanf - Diogo123 - 26.08.2013

Cara seu tuto e 100% incrнvel meu deus eu li ele por inteiro ;p isso vai ajudar muitas pessoas cara parabйns


Re: Usando y_commands e sscanf - PT - 26.08.2013

Quote:
Originally Posted by Diogo123
Посмотреть сообщение
Cara seu tuto e 100% incrнvel meu deus eu li ele por inteiro ;p isso vai ajudar muitas pessoas cara parabйns
vlw tou pensando fazer y_ini agora mas ainda tenho de aprender umas coisinhas direito.

Biblioteca YSI e muito boa pra se usar no samp


Re: Usando y_commands e sscanf - darkxdll - 26.08.2013

Уtimo tutorial , apesar de ter umas horas ali que vocк se enrolou kkk mais ficou legal.
Parabйns , isto sim й tutorial de qualidade , ganho meu REP



Re: Usando y_commands e sscanf - Juninho_Oakley - 26.08.2013

Otimo pelo tutorial, Parabens!


Re: Usando y_commands e sscanf - PT - 26.08.2013

Quote:
Originally Posted by darkxdll
Посмотреть сообщение
Уtimo tutorial , apesar de ter umas horas ali que vocк se enrolou kkk mais ficou legal.
Parabйns , isto sim й tutorial de qualidade , ganho meu REP
olha a hora da ultima vez que editei, fiquei noite toda nisso rsrsrs eram quase 6 da manha, mas acho que da pra entender bem

Quote:
Originally Posted by Juninho_Oakley
Посмотреть сообщение
Otimo pelo tutorial, Parabens!
Muito Obrigado


Re: Usando y_commands e sscanf - smiiir - 26.08.2013

niCE


Reput


Re: Usando y_commands e sscanf - WLSF - 26.08.2013

Very good, visualmente o tуpico ficou atй parecido com os do ******, haja paciкncia pra mexer com esse tipo de organizaзгo, mas o resultado й уtimo.

Nгo cheguei a ler tudo, mas mesmo assim parabйns ! +2 rep


Re: Usando y_commands e sscanf - PT - 26.08.2013

Quote:
Originally Posted by iSmirnoff
Посмотреть сообщение
niCE


Reput
muito obrigado

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Very good, visualmente o tуpico ficou atй parecido com os do Y_Less, haja paciкncia pra mexer com esse tipo de organizaзгo, mas o resultado й уtimo.

Nгo cheguei a ler tudo, mas mesmo assim parabйns ! +2 rep
sim da muito trabalho mas o resultado e agradavel de se ler, ja agora muito obrigado

Quote:
Originally Posted by JesterAnkes
Посмотреть сообщение
Bom tutorial, uso ele e realmente й muito bom!
muito obrigado

Quote:
Originally Posted by StrondA_
Посмотреть сообщение
Bom tutorial, mais ainda prefiro ZCMD.
existe muita parecencia entre zcmd e y_commands ja pra n falar que a biblioteca YSI tem o master que le os comandos zcmd na mesma


Re: Usando y_commands e sscanf - Juniiro3 - 26.08.2013

Gostei bastante do tutorial, mas ainda prefiro zcmd kk

+Rep


Re: Usando y_commands e sscanf - PT - 26.08.2013

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Gostei bastante do tutorial, mas ainda prefiro zcmd kk

+Rep
muito obrigado, sim muitos preferem, mas a YSI tem 1 vasta gama de recursos disponнveis e isso e algo incrнvel desde seguranзa ate diversгo basta ter imaginaзao


Re: Usando y_commands e sscanf - Juniiro3 - 26.08.2013

@OFF: Com esse post, vocк atingiu 666 posts '-'


Re: Usando y_commands e sscanf - PT - 27.08.2013

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
@OFF: Com esse post, vocк atingiu 666 posts '-'
o que tem? nao tendi xD


Re: Usando y_commands e sscanf - Juniiro3 - 27.08.2013

666 = nъmero do kapiroto ...


Re: Usando y_commands e sscanf - PT - 27.08.2013

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
666 = nъmero do kapiroto ...
ok melhor esqueзer continuo sem perceber kkkk que isso?


Re: Usando y_commands e sscanf - mau.tito - 27.08.2013

So uma pergunta este help da pra usar ele como um id ou uma string ??
# vo perguntar pq nao uso este estilo de cmd.


Re: Usando y_commands e sscanf - PT - 27.08.2013

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
So uma pergunta este help da pra usar ele como um id ou uma string ??
# vo perguntar pq nao uso este estilo de cmd.
nao tendi a sua pergunta se explique melhor por favor..


Re: Usando y_commands e sscanf - Renancito10 - 01.09.2013

Bom fiz tudo certinho dei o f5 mas quando vai dar spawn no server fica tudo branco porque?


Re: Usando y_commands e sscanf - PT - 01.09.2013

como assim?


Re: Usando y_commands e sscanf - Schocc - 01.09.2013

Quote:

Strtok, ambos foram criados por Y_Less.

strtok nгo foi feito por DracoBlue?
Gostei do tutorial, quando puder expandir mais sobre o assunto.