[Tutorial] ZCMD+SSCANF e Foreach.
#1

Bom, fiz este breve tutorial para aprender como criar comandos zcmd+sscanf e usar o foreach.
pawn Код:
/*Este й um breve tutorial sobre SSCANF+ZCMD e FOREACH.*/
/*Primeiramente vamos aprender sobre FOREACH:*/
/*A Include 'Foreach' que й um pequena imitaзгo do foreach do PHP Serve para deixar os loops mais leves.*/
/*O Que sгo loops?*/
/*Loops sгo aquelas famosas linhas igual a do exemplo:*/
/*for(new i = 0; i < sizeof(MAX_PLAYERS); i++)*/
/*Mas claro que nгo sу existe este tipo de loop..*/
/*Para subistituir o loop acima por um em foreach ficaria assim:*/
/*foreach(new i : Player) - Simples! Tanta que nem preciso explicar muito..*/
/**/
/*SSCANF+ZCMD:*/
/*ZCMD - Um dos melhores processadores de comandos por que й rapido e facil para aprender.*/
/*SSCANF - Uma include que melhora o processamento do ZCMD.(Nгo sei a exata funзгo dela mas vou ensinar a usa-la em zcmd.*/
/*Modo de Uso:*/
/*Vou criar um comando /exemplo explicando linhar por linha:*/
CMD:exemplo(playerid,params[]) // Params = Parametros do Comando. Aqui ele cria o comando..
{ // Abre as chaves para por a funзгo do comando.
    new Text[128];   // Variavel que nуs usaremos para definir o texto que iremos digitar. (EX: /exemplo oi.)
    new String[128]; // Variavel String.
    new Snd[MAX_PLAYER_NAME]; // Variavel para pegar o nome do player.
    GetPlayerName(playerid,Snd,sizeof Snd); // Funзгo para pegar o nome do player.
    if(sscanf(params,"s",Text)) return SendClientMessage(playerid,-1,"Use: /exemplo [text]");
    //Caso vocк nгo digite o texto na frente do comando ele retorna a mensagem.
    //o "s" que definimos ali й o parametro para texto, mas existe varios por exemplo:
   
    //u - Player ID.
    //f - Float.
    //i - Numero.
    //s - Texto.
   
    //Existe varios outros sу que nгo lembro kk.
    //Acho que isso deu para entender como chamar o sscanf em um zcmd.
    format(String,sizeof String,"%s diz: %s",Snd,Text);
    //Snd e o primeiro %s - Foi para substituir o %s pelo nome do player.
    //Text e o segundo %s - O Texto que digitamos atraves do sscanf.
    SendClientMessageToAll(-1,String);
    //SendClientMessageToAll - Mensagem para todos os players do server.
    //-1 - Cor Branca.
    //String - Chama a format que criamos logo acima.
    return true; // Em ZCMD nunca pode ser false.
} // Fechando as chaves do cmd.
//Pronto! Vocк criou seu comando com ZCMD+SSCANF.
//PS: Nгo se esqueзa de chamar no topo do gamemode todas as includes que usamos.
Desculpa por ser muito pequeno, mas em breve irei atualizar o mesmo adicionando tutorial sobre sistema de login/registro e sistema de administraзгo.
Reply
#2

Jб tem vбrios tutoriais iguais a esse. !
falto vocк ensinar como usar foreach =)
ta bem fraco o tutorial.
Abraзos !
Reply
#3

Eu que nгo percebo nada de ZCMD passei a perceber mais um pouco, acho fraco nгo, 7/10, + Rep

@Edit

Dб um erro qualquer, por isso nгo posso dar, malz
Reply
#4

Achei muito bagunзado/confuso.
Reply
#5

isso й um tutorial ?

cada coisa viu.
Reply
#6

essas letrinhas verdes doe meus Olhos !

dava para melhorar mais eu que nem sabia desse foreach
vo da uma estudada!
Reply
#7

ficou bom zin, o que vale й a intenзгo de ajudar. =P
Reply
#8

Quote:
Originally Posted by AmericanStyle'™
Посмотреть сообщение
Jб tem vбrios tutoriais iguais a esse. !
falto vocк ensinar como usar foreach =)
ta bem fraco o tutorial.
Abraзos !
Quote:
Originally Posted by ViictorDaay-
Посмотреть сообщение
Achei muito bagunзado/confuso.
Quote:
Originally Posted by Q.I
Посмотреть сообщение
isso й um tutorial ?

cada coisa viu.
Quote:
Originally Posted by Sky_.
Посмотреть сообщение
essas letrinhas verdes doe meus Olhos !
Tudo que ia falar acima -.-
Reply
#9

Definitivamente isto nгo й um tutorial.
Reply
#10

1:
Quote:
Originally Posted by leonardo1434
Посмотреть сообщение
Definitivamente isto nгo й um tutorial.
2:
Quote:

ZCMD foi criado hб 3 anos atrбs, por que vocкs insistem em usar isto ?

3:
Quote:

Pelo exemplo do sscanf tens que especificar o tamanho da string:
pawn Код:
if(sscanf(params, "s[128]", String))
Pois, caso ao contrбrio irб returnar erro.

Para quem estб tentando buscar otimizaзгo, faзa testes, nгo use sу porque
alguйm estб usando/indicando, se vocк pensasse um pouco o foreach poderia
ser um sistema bбsico como esse:

pawn Код:
#define Players::(%0)                                                                   for(new %0; %0 != gPlayersCounting; ++%0) if(IsPlayerConnected(%0))

new gPlayersCounting;


public OnPlayerConnect(playerid) return gPlayersCounting ++;
public OnPlayerDisconnect(playerid, reason) return gPlayersCounting --;
Isto й um sistema parecido com o for each, nгo sei te dizer sobre a velocidade, mais sem
dъvida ultrapassa dos loopings normais:
pawn Код:
for(new i; i != MAX_PLAYERS; ++i)
for(new i, e = GetMaxPlayers(); i != e; ++i)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)