09.07.2014, 23:01
A include streamer nгo й para comandos, й para objetos e mais algumas coisas.
Vou dar um exemplo de como fica mais fбcil comandos em zcmd e sscanf, e strcmp e sscanf.
Strcmp e sscanf:
Para usar strcmp e sscanf vocк ainda vai precisar da strtok. E vai ser um pouco diferente de usar zcmd e sscanf.
Comandos:
Em strcmp e sscanf:
Em strcmp e strtok:
Em zcmd e sscanf:
Viu a diferenзa usando sscanf. O comando strcmp e strtok foi tirado de um Game Mode, que eu acabei de baixar para mostrar a diferenзa.
Se for usar, strcmp e sscanf, vocк tem que saber algumas coisas. Existe uns tutoriais na бrea inglesa ensinando a usar strcmp e sscanf.
Vou dar um exemplo de como fica mais fбcil comandos em zcmd e sscanf, e strcmp e sscanf.
Strcmp e sscanf:
Para usar strcmp e sscanf vocк ainda vai precisar da strtok. E vai ser um pouco diferente de usar zcmd e sscanf.
Comandos:
Em strcmp e sscanf:
pawn Код:
if(strcmp(cmd,"/kick",true) == 0)
{
new id, motivo[64],nome1[24],nome2[24],str[128];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo estб logado na RCON.");
if(!sscanf(cmdtext,"s[6]us",cmd,id,motivo)) return SendClientMessage(playerid, -1, "Use: /kick <id> <motivo>");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "O jogador(a) nгo estб online");
GetplayerName(id, nome1, 24);
GetplayerName(playerid, nome2, 24);
format(str, sizeof str,"%s foi kikado por %s - Motivo: %s",nome1, nome2,motivo);
SendClientMessageToAll(-1, str);
Kick(id);
return 1;
}
pawn Код:
if(strcmp(cmd, "/kick", true) == 0) {
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5){
new tmp[256];
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, "Digite: /kick [id] [motivo]");
return 1;
}
plid = strval(tmp);
if(IsPlayerConnected(plid)){
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' ')) {
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, Vermelho, "Uso: /kickar [id] [motivo]");
}else{
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(string, sizeof(string), "{191970}(INFO) O administrador %s kickou o jogador %s (Motivo: %s)", aname,pname,result);
SendClientMessageToAll(tcadm, string);
Kick(plid);
}
}else{
format(string, sizeof(string), "(ERRO) ID invбlido!", plid);
SendClientMessage(playerid, Vermelho, string);
}
}
return 1;
}
pawn Код:
CMD:kick(playerid, params[])
{
new id, motivo[64],nome1[24],nome2[24],str[128];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo estб logado na RCON.");
if(!sscanf(params,"us",id,motivo)) return SendClientMessage(playerid, -1, "Use: /kick <id> <motivo>");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "O jogador(a) nгo estб online");
GetplayerName(id, nome1, 24);
GetplayerName(playerid, nome2, 24);
format(str, sizeof str,"%s foi kikado por %s - Motivo: %s",nome1, nome2,motivo);
SendClientMessageToAll(-1, str);
Kick(id);
return 1;
}
Se for usar, strcmp e sscanf, vocк tem que saber algumas coisas. Existe uns tutoriais na бrea inglesa ensinando a usar strcmp e sscanf.