[Ajuda] Comando dar admin
#1

Bom, criei um comando para dar admin in-game, mas nгo estб a funcionar, poderiam me dar auxilio no mesmo?

Segue o cуdigo:

PHP код:
if(strcmp(cmdtext"/daradmin"true) == 0)
    {
        new 
string[MAX_PLAYERS], tmp[50], NomeDoNovoAdm[MAX_PLAYERS];
        if(
Player[playerid][pAdmin] < 10) return SendClientMessage(playerid0xFFFFFFAA"Vocк nгo estб autorizado a usar este comando !");
        if(!
strlen(tmp)) return SendClientMessage(playeridCOLOR_WHITE"USAGE: /daradmin [playerid] [AdminLNivel]");
        
Player[playerid][pAdmin] = strval(AdminNivel);
        
format(stringsizeof(string), "Vocк foi promovido para level %d de Admin - Por %s",NomeAdminAdminNivel);
        
SendClientMessage(playerid0x33AA33AAstring);
        
format(stringsizeof(string), "Vocк promoveu %s para o level %d de Admin."NomeDoNovoAdmPlayer[playerid][pAdmin]);
        
SendClientMessage(playerid0x33CCFFAAstring);
           return 
1;
    } 
Obrigado!
Reply
#2

Tem muita coisa errada ai...

Use sscanf (https://sampforum.blast.hk/showthread.php?tid=570927) e zcmd (https://sampforum.blast.hk/showthread.php?tid=91354) que й bem simples fazer comandos com parвmetros.

Exemplo

Код:
new id, level;
	
if(sscanf(params, "ud", id, level))
       return SendClientMessage(playerid, -1, "/setadmin <id ou nick> <level>");

Player[id][pAdmin] = level;
Reply
#3

Erros:
O que й tmp, voce nao atribui valor algum a ela.
O que й AdminNivel, voce nao atribui valor, nem mesmo cria ela no omando.
new string[MAX_PLAYERS], LOL oq foi isto?
Player[playerid][pAdmin] =, no caso seria o ID de quem esta setando, provavelmente tmp(Apos atribuir um valor a ela claro


Agora ja que voce esta omecando deixo lhe uma dica.
Sscanf й uma das melhores coisas que foram feitas para o SA-MP.
Use sscanf + processador de comandos. Zcmd, i-zcmd. Nao importa so use.
Reply
#4

As variбveis estгo certas no GM, algumas sгo Globais, ai nгo pus aqui, nгo estudei sscanf ainda mas vou estudar, obrigado pela dica!

Sennior
Reply
#5

Bom, nгo consegui editar a mensagem, pфs bem, poderiam passar um tutorial de sscanf? Achei esse: https://sampforum.blast.hk/showthread.php?tid=277842 mas nгo me pareceu muito claro, se tiverem mais alguns, agradeзo!

Abs.
Reply
#6

No propip topico tem.

https://sampforum.blast.hk/showthread.php?tid=570927
Reply
#7

Obrigado Day, estou no trabalho ai nгo posso ficar muito no pc mas, da pra estudar um pouco, mas estou com dificuldade nisso:

if (sscanf(params, "u", id))

if = se certo?
params = ?
"u" = % acho certo?
id - variбvel, mas por que usar essa variбvel ali?
Reply
#8

Quote:
Originally Posted by Sennior
Посмотреть сообщение
Obrigado Day, estou no trabalho ai nгo posso ficar muito no pc mas, da pra estudar um pouco, mas estou com dificuldade nisso:

if (sscanf(params, "u", id))

if = se certo?
params = ?
"u" = % acho certo?
id - variбvel, mas por que usar essa variбvel ali?
A noite quando eu voltar do servico vou escrever um tito pra voce, quando eu aprendi tambem os tutos portugueses me deixaram confuso so consegui seguinso uma wiki do ****** que hoje esta offline
Reply
#9

Quote:
Originally Posted by Sennior
Посмотреть сообщение
Obrigado Day, estou no trabalho ai nгo posso ficar muito no pc mas, da pra estudar um pouco, mas estou com dificuldade nisso:

if (sscanf(params, "u", id))

if = se certo?
params = ?
"u" = % acho certo?
id - variбvel, mas por que usar essa variбvel ali?
n entendi mto bem sua dъvida nisso mas vou explicar o que entendi....

Vocк estб com dъvida nisso: "id - variбvel, mas por que usar essa variбvel ali?" digamos que vocк esteja utilizando ZCMD(claro) no comando ficaria assim:

pawn Код:
CMD:daradmin(playerid, params[])//Aqui o params do zcmd deverб ser indicado para chamar a funзгo desejada dentro do sscanf
{
if(sscanf(params,"ui", id, nivel) return SendClientMessage(playerid, -1, "USO: /daradmin < id - nick > < nivel >");
//De grosso modo dizendo o "U" indica nomes/id's dos player e o "I" significa Interager que serve para valores com alteraзгo constante...
PlayerInfo[id][pAdmin] = nivel;//Aqui vocк chamou a funзгo PlayerInfo indicando o pAdmin = nivel adm do player a partir do comando
//e estarб modificando o valor do mesmo a partir de "nivel" que serб o valor a ser digitado no comando....
    return 1;
}
n sei se ficou claro ou se deu para entender bem mas й isso '-' me corrijam qq coisa uahsauhs
Reply
#10

Aн estб, tudo comentado para que vocк entenda.
PHP код:
// Verificamos se o comando digitado й igual a /daradmin
// note que devemos especificar o tamanho de caracteres do comando, nesse caso 9 (contando com o "/")
if(strcmp(cmdtext"/daradmin"true9) == 0) {
    
// Aqui verifica se o jogador que fez o comando й admin menor que 10, se for manda uma mensagem
    
if(Player[playerid][pAdmin] < 10) return SendClientMessage(playerid0xFFFFFFAA"Vocк nгo estб autorizado a usar este comando !");
    
    
// Aqui criamos variбveis para armazenar o ID do jogador que ele digitou e o nнvel que ele quer dar
    
new outrojogadornivel;
    
    
// Aqui introduzimos o sscanf, e usamos especificadores para especificar nosso comando
    // existem vбrios
    // u й usado para ID/nome do jogador ex: /daradmin 1 ou /daradmin HardWar
    // i ou d sгo usados para nъmeros inteiros
    // s й usado para textos
    // existem muitos outros, veja o tуpico do sscanf
    // usamos "ui" pois queremos um ID e logo em seguido o nнvel
    // assim armazenamos esses 2 valores nas variбveis criadas anteriormente
    // NOTA: usamos cmdtext[10] pois queremos pegar apenas os parвmetros digitados
    // se usassemos apenas cmdtext, ele pegaria o comando todo /daradmin id nome e nгo apenas o id e o nome
    
if(sscanf(cmdtext[10], "ui"outrojogadornivel)) return SendClientMessage(playerid0xFFFFFFAA"USAGE: /daradmin [playerid] [AdminLNivel]");
    
    
// Aqui checamos se o id que o jogador digitou й vбlido, caso contrбrio manda uma mensagem
    
if(outrojogador == INVALID_PLAYER_ID) return SendClientMessage(playerid0xFFFFFFAA"Jogador invбlido!");
    
    
// Setamos o nнvel do admin para o nivel especificado
    
Player[outrojogador][pAdmin] = nivel;
    
    
// Criamos uma variбvel para formatar mensagens e outra para pegar o nome dos jogadores
    
new string[128], nome[MAX_PLAYER_NAME+1];
    
    
// Pegamos o nome do jogador que fez o comando
    
GetPlayerName(playeridnomeMAX_PLAYER_NAME);
    
// Formatamos para uma mensagem
    
format(stringsizeof(string), "Vocк foi promovido para level %d de Admin - Por %s"nivelnome);
    
// Enviamos ela
    
SendClientMessage(outrojogador0x33AA33AAstring);
    
    
// Pegamos o nome do jogador que terб um novo nнvel de admin
    
GetPlayerName(outrojogadornomeMAX_PLAYER_NAME);
    
// Formatamos para uma mensagem
    
format(stringsizeof(string), "Vocк promoveu %s para o level %d de Admin."nomenivel);
    
// Enviamos ela
    
SendClientMessage(playerid0x33CCFFAAstring);
    
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)