¤Usando sscanf em zcmd¤
ZCMD é muito diferente de STRCMP, além de tudo é mais fácil de se aprender.
Neste tutorial vamos ensinar como usar sscanf em zcmd.
Para usar sscanf em zcmd terá que criar o comando zcmd logico, então vamos lá.
No topo do GM/Fs adicione
#include zcmd #include sscanf2
Então agora vamos criar um comando de mp
Não se esqueça de adicionar as arrays como logico, claro que pode mudar o nome, não é preciso chamar-se new Texto, pode ser new frase, o que quiser, só tem que saber colocar...
//=====[ARRAYS]====== new texto; new nome[MAX_PLAYER_NAME]; new Str[128]; new id;
CMD:mp(playerid, params[]) { if(sscanf(params, "us",id,texto)) { SendClientMessage(playerid,-1,"Use: /mp [id] [texto]"); } else { if(IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Este jogador não está conectado"); GetPlayerName(playerid,nome,sizeof(nome)); format(Str, sizeof(Str), "Mesangem Privada de %s: %s",nome,texto); SendClientMessage(id,-1,Str); } return true; }
Bem vamos falar agora um pouco sobre o comando
if(sscanf(params, "us",id,texto))
if - Primeiramente. Para quê if? Simples. sscanf, quando consegue cumprir sua função, retorna 0 (O que é um costume desconhecido em pawn). Ou seja, quando ele separa a string corretamente e todas as variávels são preenchidas, retorna 0, caso contrário 1, o que mostraria a ajuda do comando. (Créditos Luís Miki)
params - Como você já sabe, no zcmd, params é o que vem depois do /comando. Ou seja, seu objetivo é quebrar a string 'params' para poder pegar a hora para setar o servidor. (Créditos Luís Miki)
us - Bem essa parte é o que torna sscanf facil de usar em zcmd, vc sabe quando usa mensagem que tenha que pegar o nome do player? ou o id, que usa %s, %d aqui é mesma coisa só que sem %, então vamos ver alguns dos que eu sei..
d ou i - usado quando você usa números, exemplo numero do seu celular... s - é o string usado quando você usa letras, exemplo "Meu nome é BlueX" u - usado para aquele famoso [Id do Player]... f - usado para coordenadas... Existem mais, mas nós ainda não estamos usando-os....
SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
↓sscanf 2.0 - Clique Aquielse
Por fim usamos:
format(Str, sizeof(Str), "Mesangem Privada de%s: %s",nome,texto);
~> Não precisa adicionar o ID?
R= Não pois você irá mandar para o player não será necessário, mas caso você queira que mostre o id basta colocar assim:
format(Str, sizeof(Str), "Mesangem Privada de %s [ID%d]: %s",nome,playerid,texto);
Explicamos este comando todo, acho que agora aprenderam, então, vou exemplificar mais outros comandos
/av para admin:
CMD:av(playerid, params[]) { if(IsPlayerAdmin(playerid)) { if(sscanf(params, "s",texto)) { SendClientMessage(playerid,-1,"Use: /av [texto]"); } else { GetPlayerName(playerid,nome,sizeof(nome)); format(Str, sizeof(Str),"Admin %s [ID:%d]: %s",nome,playerid,texto); SendClientMessageToAll(-1,Str); } } else SendClientMessage(playerid,-1,"Você não esta logado na rcon"); return true; }
/a (chat de admins)
CMD:a(playerid, params[]) { for( new i; i < MAX_PLAYERS; i++ ) { if(IsPlayerAdmin(playerid)) { if(sscanf(params, "s",texto)) { SendClientMessage(playerid,-1,"Use: /a [texto]"); } else { GetPlayerName(playerid,nome,sizeof(nome)); format(Str, sizeof(Str),"%s: %s",nome,texto); SendClientMessage(i,-1,Str); } } else SendClientMessage(playerid,-1,"Você não é adminRcon"); } return true; }
Bem agora basta usar imaginação, você consegue fazer coisas mais rapidas com zcmd e sscanf.
Usando imaginação você chega lá. Espero que goste.
®Creditos®
®Luis Miki - Por explicação de duas coisas que eu não sabia
®Y_Less - Pela criação do sscanf
®Zeex - Pela criação do zcmd
↓Download↓
[INC]zcmd .:> Clique aqui
[INC]sscanf2.0 .:> Clique aqui