[size=48]T[/size][size=48]utorial[/size]
Oi pessoal! Aqui й o SrAlface007, bom. Hoje, vou ensinar a utilizar o ZCMD + sscanf. Entгo, prossigamos.
Primeiro, colocaremos no topo do seu FS ou GM os includes.
Код:
(a include string, nгo baixem. Pois ela jб vem no server SA-MP!)
Agora se lembre: Todos os comandos ZCMD, nгo podem estar em qualquer callback!! apenas fora da callback, bom. Eu sempre coloco no final do FS ou GM.
Para criar um comando colocamos:
Код:
Primeiro, vocк precisa entender sobre variбveis.
Sу o mнnimo! Poderб encontrar tutoriais no fуrum. Pela equipe do Fуrum!
Criaremos as variбveis que precisaremos:
Код:
new skin; // Coloque o nome do comando que serб executado, eu colocarei skin. Pois trocarei a skin, mas pode ser //qualquer outro nome, por exemplo. Criarei vida, para dar vida ao jogador. Entгo posso colocar qualquer nome de //variбvel.
new str[128]; // Й ai que usaremos a include String. Ela servirб para dizer ao jogador, o que foi executado nele.
new aName [MAX_PLAYER_NAME]; // Serб o administrador que executarб o comando no jogador.
Agora colocaremos
Код:
Para sу os administradores usarem, usaremos o IsPlayerAdmin.
Код:
Код:
i
usaremos Params = Parвmetro, para dizer como o comando serб usado. Entгo colocaremos "ddd", id, nomedavariavel)) Caso ele coloque errado, o return serб ocorrido e avisarб como o comando deve ser usado. Ou seja, ai entra o SendClientMessage, que jб expliquei.
Usaremos agora IsPlayerConnected.
Код:
i
Agora colocaremos, o comando. Que poderб ser encontrado na WIKI do SA-MP, como eu usei a skin. Usarei o comando da skin.
Код:
o comando que vocк colocarб que deseja executar, pode colocar-se qualquer outro que seja vбlido. EU coloquei SetPlayerSkin pois й o comando que usarei, nos parкnteses, coloque as variбveis. Ou seja. id = Id do jogador se serб executado o comando, Skin = Coloque a variбvel que vocк criou para utilizar o comando. No meu caso, coloquei SKIN.
Agora, usaremos a string!
Код:
Код:
Код:
[size=48]AVISO!!!!!!!!!: OS COMANDOS SУ PODERГO SER USADOS CASO VOCК ESTEJA LOGADO NA RCON!! SE NГO USAR O aNAME PODERБ USAR OS COMANDOS COMO PLAYER!![/size]
COMANDO INTEIRO (skin)
Код:
[size=48]E[/size][size=48]xemplo[/size]
Aqui usarei um sistema administrativo, que ainda estб em processo. Bom, ainda nгo terminei. (Nгo use o comando /kick ou /ban!)
Код:
[size=32]Se eu ajudei, falem. Caso nгo, avisem. Se deu algum erro inesperado no compiler. Me avisem, e direi como resolver. Obrigado, e adeus.[/size]
Oi pessoal! Aqui й o SrAlface007, bom. Hoje, vou ensinar a utilizar o ZCMD + sscanf. Entгo, prossigamos.
Primeiro, colocaremos no topo do seu FS ou GM os includes.
Код:
- Código:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <string>
(a include string, nгo baixem. Pois ela jб vem no server SA-MP!)
Agora se lembre: Todos os comandos ZCMD, nгo podem estar em qualquer callback!! apenas fora da callback, bom. Eu sempre coloco no final do FS ou GM.
Para criar um comando colocamos:
Код:
- Código:
CMD:NomeDoComandoSemBarra(playerid, params[] {
// CMD: = comando, PlayerId = Player que executarб o comando, params = paramкtro //
Primeiro, vocк precisa entender sobre variбveis.
Sу o mнnimo! Poderб encontrar tutoriais no fуrum. Pela equipe do Fуrum!
Criaremos as variбveis que precisaremos:
Код:
- Código:
new id; // Id do jogador que receberб o comando, caso nгo seja para um jogador. E sim para vocк, nгo crie pelo // //ZCMD.
new skin; // Coloque o nome do comando que serб executado, eu colocarei skin. Pois trocarei a skin, mas pode ser //qualquer outro nome, por exemplo. Criarei vida, para dar vida ao jogador. Entгo posso colocar qualquer nome de //variбvel.
new str[128]; // Й ai que usaremos a include String. Ela servirб para dizer ao jogador, o que foi executado nele.
new aName [MAX_PLAYER_NAME]; // Serб o administrador que executarб o comando no jogador.
Agora colocaremos
Код:
- Código:
GetPlayerName(playerid, aName, MAX_PLAYER_NAME); // Ele servirб para getar o id do jogador que o comando serб executado e o nome do Administrador que usarб o comando.
Para sу os administradores usarem, usaremos o IsPlayerAdmin.
Код:
- Código:
[size=14][size=13]if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!"); // If = Se, !IsPlayerAdmin = Usamos quando se o jogador for admin ele nгo usarб o comando, isso serб feito. Apуs o Return. PlayerID = Identificar qual jogador estб usando esse comando, return = para voltar o comando, ou seja. Se nгo for admin, o comando nгo serб executado. E apуs isso algo serб executado. // SendClientMessage = Para enviarmos uma mensagem ao jogador que estarб usando o comando. 0xFF0000FF (cor vermelha) = Cor da mensagem que serб transmitida ao jogador. E apуs as aspas, use o texto que serб dito ao jogador. Que tentarб usar um comando que sу й restrito aos administradores.[/size][/size]
[size=14]Agora usaremos o SSCANF.[/size]
Код:
i
- Código:
f(sscanf(params, "ddd", id, skin)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarskin [id] [id da skin]"); // IF = se, sscanf = serб o include usado para dizer ao administrador que o seu comando estб sendo digitado errado, caso ele digite sу /setarskin ou /setarskin id. Apуs isso
usaremos Params = Parвmetro, para dizer como o comando serб usado. Entгo colocaremos "ddd", id, nomedavariavel)) Caso ele coloque errado, o return serб ocorrido e avisarб como o comando deve ser usado. Ou seja, ai entra o SendClientMessage, que jб expliquei.
Usaremos agora IsPlayerConnected.
Код:
i
- Código:
f(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado."); // If = se, !IsPlayrerConnected(id)) = vai verificar se o id digitado estб conectado, caso nгo. Serб executado o return, que o SendClientMessage falarб o que aconteceu.
Agora colocaremos, o comando. Que poderб ser encontrado na WIKI do SA-MP, como eu usei a skin. Usarei o comando da skin.
Код:
- Código:
SetPlayerSkin(id, skin); // SetPlayerSkin = Serб
o comando que vocк colocarб que deseja executar, pode colocar-se qualquer outro que seja vбlido. EU coloquei SetPlayerSkin pois й o comando que usarei, nos parкnteses, coloque as variбveis. Ou seja. id = Id do jogador se serб executado o comando, Skin = Coloque a variбvel que vocк criou para utilizar o comando. No meu caso, coloquei SKIN.
Agora, usaremos a string!
Код:
- Código:
[size=14][size=13]format(str, sizeof(str), "[x] O Administrador(a) %s setou sua skin para a ID: %d", aName, skin); // Format = Vai dizer ao player, o modo que foi executado. O comando que vai ser executado. Str ou String ( vocк pode colocar um desses dois, ou str ou String) = Serб o que dizerб os nomes. Ou seja %s. Apуs isso, usaremos entre as aspas. O Administrador(a) %s. %s = String, usamos para idenficar Nomes, palavras, letras ou frases. setou sua skin para a ID: %d, %d = Usamos para nъmeros inteiros, exemplo: 2, 3, 109, 180000. Apуs as aspas, colocaremos de acordo com a ordem usada. Usamos o nome do administrador primeiro, usando a %s. Entгo colocaremos primeiro o. Aname, apуs o aName. Colocamos o nome da variбvel usada. Assim a variбvel dizerб o valor do que foi mudado no jogador.[/size][/size]
[size=14]Apуs isso, colocaremos o SendClientMessage. Para identificar a cor do erro.[/size]
Код:
- Código:
[size=14][size=13]SendClientMessage(id, 0xFF0000FF, str); // Essa nem preciso explicar, acabei de explicar na mensagem acima.[/size][/size]
[size=14]Quando o comando for terminado usaremos, return.[/size]
Код:
- Código:
return 1;
}
[size=48]AVISO!!!!!!!!!: OS COMANDOS SУ PODERГO SER USADOS CASO VOCК ESTEJA LOGADO NA RCON!! SE NГO USAR O aNAME PODERБ USAR OS COMANDOS COMO PLAYER!![/size]
COMANDO INTEIRO (skin)
Код:
- Código:
CMD:setarskin(playerid, params[]) {
new id;
new skin;
new str[128];
new aName [MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
if(sscanf(params, "ddd", id, skin)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarskin [id] [skin]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
SetPlayerSkin(id, skin);
format(str, sizeof(str), "[x] O Administrador(a) %s setou sua skin para a ID: %d", aName, skin);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
[size=48]E[/size][size=48]xemplo[/size]
Aqui usarei um sistema administrativo, que ainda estб em processo. Bom, ainda nгo terminei. (Nгo use o comando /kick ou /ban!)
Код:
- Código:
#include <a_samp>
#include <ZCMD>
#include <string>
#include <sscanf2>
#if defined FILTERSCRIPT
#define red 0xFF0000AA
#define str String
- Código:
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Sistema Administrativo (ZCMD) By: SrAlface007"); // Para usar os comandos, й necessбrio estar logado na rcon!
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
- Código:
#endif
- Código:
// Comandos ZCMD // Nгo mecha em nada desse script, pois qualquer coisa que vocк fizer errado, o sistema pode parar de funcionar!
CMD:setarvida(playerid, params[]) {
new id;
new str[128];
new vida;
new aName [MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] Vocк nгo й um administrador(a)!"); // O que darб se o player nгo for administrador.
if(sscanf(params, "ddd", id, vida)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] Digite: /setarvida [id] [quantidade]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] O player nгo estб conectado.");
SetPlayerHealth(id, vida);
format(str, sizeof(str), "[x] O Administrador(a) %s lhe deu vida, quantidade: %d .", aName, vida);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
- Código:
CMD:dararma(playerid, params[]) {
new id;
new str[128];
new arma;
new municao;
new aName [MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF00000FF, "[ERRO] Vocк nгo й um administrador(a)!");
if(sscanf(params, "ddd", id, arma, municao)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /dararma [id] [arma] [muniзгo]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
GivePlayerWeapon(id, arma, municao);
format(str, sizeof(str), "[x] O Administrador(a) %s lhe deu a arma ID: %d com %d de muniзгo(хes)", aName, arma, municao);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
- Código:
CMD:setarcolete(playerid, params[]) {
new id;
new str[128];
new colete;
new aName [MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[Erro] Vocк nгo й um administrador(a)!");
if(sscanf(params, "ddd", id, colete)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarcolete [id] [colete]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
SetPlayerArmour(id, colete);
format(str, sizeof(str), "[x] O Administrador(a) %s lhe deu colete, quantidade: %d .", aName, colete);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
- Código:
CMD:comandosadmin(playerid, params[]) {
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
SendClientMessage(playerid, 0xFF0000FF, " /setarcolete /setarvida /dararma /comandosadmin");
SendClientMessage(playerid, 0xFF0000FF, " /setarscore /trazer /ir /kick /ban /lchat /setarskin");
return 1;
}
- Código:
CMD:setarscore(playerid, params[]) {
new id;
new score;
new str[128];
new aName [MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
if(sscanf(params, "ddd", id, score)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarscore [id] [score]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
SetPlayerScore(id, score);
format(str, sizeof(str), "[x] O Administrador(a) %s lhe setou %d de score(s)", aName, score);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
- Código:
CMD:setarskin(playerid, params[]) {
new id;
new skin;
new str[128];
new aName [MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
if(sscanf(params, "ddd", id, skin)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Digite: /setarskin [id] [skin]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
SetPlayerSkin(id, skin);
format(str, sizeof(str), "[x] O Administrador(a) %s setou sua skin para a ID: %d", aName, skin);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
- Código:
CMD:kick(playerid, params[]) {
new id;
new kick;
new aName [MAX_PLAYER_NAME];
new str[128];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й um administrador(a)!");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] O player nгo estб conectado.");
Kick(id);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
[size=32]Se eu ajudei, falem. Caso nгo, avisem. Se deu algum erro inesperado no compiler. Me avisem, e direi como resolver. Obrigado, e adeus.[/size]