[Ajuda] Sistema de admin
#4

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:
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;
}
Em strcmp e strtok:
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;
}
Em zcmd e sscanf:
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;
}
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.
Reply


Messages In This Thread
Sistema de admin - by AlessandroXPTO - 09.07.2014, 20:28
Re: Sistema de admin - by MultiKill - 09.07.2014, 20:38
Respuesta: Sistema de admin - by AlessandroXPTO - 09.07.2014, 22:38
Re: Sistema de admin - by MultiKill - 09.07.2014, 23:01
Respuesta: Sistema de admin - by AlessandroXPTO - 09.07.2014, 23:39
Re: Respuesta: Sistema de admin - by SkullFire - 09.07.2014, 23:46
Re: Sistema de admin - by MultiKill - 09.07.2014, 23:50
Respuesta: Sistema de admin - by AlessandroXPTO - 10.07.2014, 00:09
Re: Sistema de admin - by MultiKill - 10.07.2014, 00:14

Forum Jump:


Users browsing this thread: 1 Guest(s)