[Ajuda] Comandos bugados
#1

Absolutamente todos os comandos que usam o espaзo nгo estгo funcionando, abaixo tem um vнdeo de demonstraзгo, espero que me ajudem com esse problema.

https://www.youtube.com/watch?v=A-K2YgXBkfI

Exemplos

Comando "/ir"

PHP код:
CMD:ir(playeridparams[])
{
    if(
PlayerInfo[playerid][pAdmin] < 1)                        return SendClientMessage(playeridCorErro"Vocк precisa ser uma Administrador level 1 para usar este comando");
    if(
pJogando[playerid] == true)                                 return SendClientMessage(playeridCorErro"Vocк nгo estб trabalhando!");
    if(
sscanf(params"d"ID))                                    return SendClientMessage(playeridCorErroNeutro"USE: /ir [ID]");
    if(!
IsPlayerConnected(ID))                                    return SendClientMessage(playeridCorErroNeutro"O jogador nгo estб conectado");
    
//
    
GetPlayerPos(IDPos[0], Pos[1], Pos[2]);
    
//
    
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    {
        
SetPlayerPos(playeridPos[0], Pos[1], Pos[2]);
    }
    else
    {
        
SetVehiclePos(GetPlayerVehicleID(playerid), Pos[0], Pos[1], Pos[2]);
    }
    
SetPlayerVirtualWorld(playeridGetPlayerVirtualWorld(ID));
    
SetPlayerInterior(playeridGetPlayerInterior(ID));
    
//
    
format(Str256"AdmCmd: O administrador %s foi atй %s"pNomeOriginal[playerid], pNomeOriginal[ID]);
    
Log("Admin/Logs/Ir.ini"Str);
    return 
1;

Comando: "/kick"

PHP код:
CMD:kick(playeridparams[])
{
    if(
PlayerInfo[playerid][pAdmin] < 1)                        return SendClientMessage(playeridCorErro"Vocк precisa ser uma Administrador level 1 para usar este comando");
    if(
pJogando[playerid] == true)                                 return SendClientMessage(playeridCorErro"Vocк nгo estб trabalhando!");
    if(
sscanf(params"ds[56]"IDMotivo))                    return SendClientMessage(playeridCorErroNeutro"USE: /kick [ID] [MOTIVO]");
    if(!
IsPlayerConnected(ID))                                    return SendClientMessage(playeridCorErroNeutro"O jogador nгo estб conectado");
    
//
     
format(Strsizeof(Str), "AdmCmd: O Player %s foi kickado pelo administrador %s. Motivo: %s"pNomeOriginal[ID], pNomeOriginal[playerid], Motivo);
    
SendClientMessageToAll(VermelhoEscuroStr);
    
Kick(ID);
    
//
    
Log("Admin/Logs/Kick.ini"Str);
    return 
1;

OBS: Nгo й sу esses dois comandos que estгo assim, esses foram os exemplos, todos que usam "espaзo" estгo bugados.

Estou sendo um pouco chato pedindo vбrias e vбrias coisas, mais se puderem me ajudar, fico grato.
Reply
#2

Abaixo estб os dois comandos prontos, espero ter ajudado!

Ajudei? +Rep

° Comando: /ir
PHP код:
CMD:ir(playeridparams[])
{
    new 
Float:xPos[3];
    if(
PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playeridCorErro"Vocк precisa ser uma Administrador level 1 para usar este comando");
    if(
pJogando[playerid] == true) return SendClientMessage(playeridCorErro"Vocк nгo estб trabalhando!");
    if( 
isnull params )) return SendClientMessage(playeridCorErroNeutro"USE: /ir [ID]");
    if(!
IsPlayerConnected(strval(params))) return SendClientMessage(playeridCorErroNeutro"O jogador nгo estб conectado");
    
GetPlayerPos(strval(params), xPos[0], xPos[1], xPos[2]);
    if(
GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    {
        
SetPlayerPos(playeridxPos[0], xPos[1], xPos[2]);
    }
    else
    {
        
SetVehiclePos(GetPlayerVehicleID(playerid), xPos[0], xPos[1], xPos[2]);
    }
    
SetPlayerVirtualWorld(playeridGetPlayerVirtualWorld(strval(params)));
    
SetPlayerInterior(playeridGetPlayerInterior(strval(params)));
    
format(Str256"AdmCmd: O administrador %s foi atй %s"pNomeOriginal[playerid], pNomeOriginal[strval(params)]);
    
Log("Admin/Logs/Ir.ini"Str);
    return 
1;

° Comando: /kick
PHP код:
CMD:kick(playeridparams[]) {
    new 
idplayermensagem[124], aname[MAX_PLAYER_NAME], pname[MAX_PLAYER_NAME], string[124];
    if(
PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playeridCorErro"Vocк precisa ser uma Administrador level 1 para usar este comando");
    if(
pJogando[playerid] == true) return SendClientMessage(playeridCorErro"Vocк nгo estб trabalhando!");
    if(
sscanf(params,"is"idplayermensagem)) return SendClientMessage(playerid, -1"[ ERRO ] Digite: /kick [id do player] [mensagem]");
    if(!
IsPlayerConnected(idplayer)) return SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Este player nгo estб conectado!");
    
GetPlayerName(playeridanamesizeof(aname));
    
GetPlayerName(idplayerpnamesizeof(pname));
    
format(stringsizeof(string), "{00FF00}* O(A) administrador(a) %s kickou o(a) player %s Motivo: %s"anamepnamemensagem);
    
SendClientMessageToAll(-1string);
    
Log("Admin/Logs/Kick.ini"string);
    
format(stringsizeof(string), "{00FF00}* %s vocк foi kickado(a) do servidor pelo(a) administrador(a) %s Motivo: %s"pnameanamemensagem);
    
SendClientMessage(idplayer, -1string);
    
Kick(idplayer);
    return 
1;

° Para vocк resolver os problemas dos seus outros comandos, preste atenзгo no tutorial abaixo:

Quote:
Originally Posted by AlucardSnow
Посмотреть сообщение
[FONT="Courier New"]
pawn Код:
////////////////////////////////////////////////////////////////////////////////////////////////
////                                                                       
////                                                                       
////                                                                       
////                                                                     
////   Usando 1 parametro em comandos [ZCMD]                               
////   Criado por: AlucarDSnow                                         
////   Agradecimentos:                                                   
////   iSmir - Ensinar a usar somente com 1 parametro o ZCMD.                        
////   BlueX - Tutorial sobre ZCMD e SSCANF.                                     
////   Luis Miki - Pela explicaзгo do "params".                                  
////   Zeex - Criaзгo da include ZCMD.                                       
////                                                                 
////       
////   
////                                                         
////   Tutorial sujeito a crнticas construtivas, irei atualiza-lo ao passar do tempo.                
////////////////////////////////////////////////////////////////////////////////////////////////
Olб pessoal, esse й o primeiro tutorial que estou compartilhando meu conhecimento em ZCMD com vocкs, pretendo ensinar a vocкs usar o comando com 1 parametro.
A maiora das pessoas usam ZCMD e SSCANF com 1 parametro, isso nгo й necessбrio, existe a forma mais fбcil que й sу usar o ZCMD, fica muito mais fбcil e rбpido.
Criei esse tutorial com a intensгo de prolongar o ensinamento ъtil do BlueX.

Qualquer erro, melhoramento pode fazer postando um comentбrio nesse tуpico.
Nгo irei tolerar chingamentos.
Faзa uma crнtica construtiva.


Para inicio vocк precisa ter a include ZCMD, caso nгo tenha a include faзa o seguinte:
-> Entre no pastebin.
-> Copie todo o cуdigo.
-> Coloque o cуdigo em algum documento e salve como "zcmd.inc".
-> Jogue o arquivo dentro da pasta "pawno/include".
-> Depois no topo do GM adicionar a include ZCMD.
Include ZCMD, clique aqui.
pawn Код:
#include a_samp
#include zcmd



Vamos direto ao ponto, vou dar um exemplo de comando e explica-lo com 1 parametro e deixar um tutorial do BlueX no final sobre 2 parametros com SSCANF.

pawn Код:
#define     xBranco     0xFFFFFFFF

CMD:dinheiro(playerid, params[])
{
    new frase[128], UsadorDoComando[25];

    if ( isnull ( params ))
        return SendClientMessage(playerid, xBranco, "Use: /dargrana quantia");

    GivePlayerMoney(playerid, params);

    GetPlayerName(playerid, UsadorDoComando, sizeof(UsadorDoComando));

    format(frase, sizeof(frase), "O politico %s desviou %d da obra.", UsadorDoComando, params);
    SendClientMessageToAll(xBranco, frase);

    return 1;
}
O comando acima ele entrega a quantidade de dinheiro que o playerid irб digitar.
Exemplo: "/dinheiro 8994", irб entregar ao player que digitou 8994.
Vamos as explicaзхes:


pawn Код:
new frase[128], UsadorDoComando[25];
Explicaзгo -> Cria as duas variaveis que iremos usar para esse comando.
frase -> Й a nossa string, nela cabe 128 celulas.
UsadorDoComando -> Com ela iremos pegar o nome do playerid e jogar o nome dele no comando.


pawn Код:
if ( isnull strval ( params )) return SendClientMessage...
Explicaзгo -> Caso nгo tenha algo inserido no campo "params" retorna a mensagem "Use /dargrana quantia".
isnull -> Nulo.
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)


pawn Код:
GivePlayerMoney(playerid, strval (params));
Explicaзгo -> Adiciona dinheiro ao jogador que digitou o comando.
params -> Adiciona a quantidade que foi inserida no params.


pawn Код:
GetPlayerName(playerid, UsadorDoComando, sizeof(UsadorDoComando));
Explicaзгo -> Pega o nome do playerid e o armazena na variavel "UsadorDoComando".

pawn Код:
format(frase, sizeof(frase), "O politico %s desviou %d da obra.", UsadorDoComando, params);
SendClientMessageToAll(xBranco, frase);
Explicaзгo -> Envia a mensagem, pegando o nome do player com o %s e mostrando o valor do params em nъmeros "%d".

pawn Код:
if( strval ( params ) == playerid)
    return SendClientMessage(playerid, xBranco, "Vocк nгo pode dar dinheiro a vocк mesmo.");
Explicaзгo -> Irб checar se o valor inserido em "params" й o mesmo que o player que digitou (playerid), ao constatar que й o valor й igual ao playerid, ele retorna a mensagem "Vocк nгo pode dar dinheiro a vocк mesmo.".
------------------------------------- FIM Comando /dinheiro ------------------------------

pawn Код:
CMD:pos(playerid, params[])
{
    new xRL[128], Float:xPos[3];

    if( isnull ( params ))
       return SendClientMessage(playerid, xBranco, "Use: /pos ID");

    if(!IsPlayerConnected( strval (params))
       return SendClientMessage(playerid, xBranco, "Esse ID nгo estб online.");

    GetPlayerPos(strval (params), xPos[0], xPos[1], xPos[2]);

    format(xRL, sizeof(xRL), "X - %f  Y - %f  Z - %f", xPos[0], xPos[1], xPos[2]);
    SendClientMessage(strval (params), xBranco, xRL);

    return 1;
}
Para entender mais um pouco sobre a funзгo: " strval (params) "
Nesse caso quem recebeu a mensagem foi o params ( ID escolhido ).
------------------------------------- FIM Comando /pos -------------------------------------

PS: Quando usar dois parametros vocк pode pegar o valor do id apenas colocando (id).
Mais com 1 parametro й preciso usar "strval (params)".
Veja um exemplo no CODE abaixo, perceba o "strval (params)" e "(id)".


Vamos ver esse exemplo com 2 parametros usando SSCANF.

pawn Код:
#include ZCMD
#include sscanf
pawn Код:
CMD:dargrana(playerid, params[])
{
    static xRL[128], Recebedor[25], Usador[25], id, quantia;

    if(sscanf(params, "ud", id, quantia))
        return SendClientMessage(playerid, xBranco, "Use: /dargrana ID quantia.");

    if(!IsPlayerConnected(id))
        return SendClientMessage(playerid, xBranco, "O ID que digitou nгo estб online.");

    if( strval (id) == playerid ))
        return SendClientMessage(playerid, xBranco, "Vocк nгo pode lhe setar dinheiro.");

    GivePlayerMoney(id, quantia));

    format(xRL, sizeof(xRL), "O Carinha %s deu dinheiro ao player %s, quantia %d.", Usador, Recebedor, quantia);
        SendClientMessageToAll(playerid, xBranco, xRL);
    return 1;
}
Quote:
Originally Posted by BlueX
Посмотреть сообщение


¤Usando sscanf em zcmd¤


Bem comecei a usar zcmd a pouco tempo, mas tenho visto que й muito diferente de strcmp, alem de tudo й mais fбcil de se aprender, neste tutorial vou ensinar como usar sscanf em zcmd, irei ensinar o que aprendi claro, nгo estarei dizendo coisas que nгo sei, por tanto vamos comeзar...

Bem para usar sscanf em zcmd terб que criar o comando zcmd logico, entгo vamos lб.

No topo do GM/Fs adicione
pawn Код:
#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...
pawn Код:
//=====[ARRAYS]======
new texto;
new nome[MAX_PLAYER_NAME];
new Str[128];
new id;
pawn Код:
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.

pawn Код:
if(sscanf(params, "us",id,texto))
if - Primeiramente. Pra 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 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 eu ainda nгo todos....
depois para acabar basta adicionar as arrays, tipo, para o u vocк pode criar uma array chamada id, para o s vocк pode criar uma chamada Texto, por ai a diante...

pawn Код:
SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
↑ isso й aquela mensagem quando vocк sу digita o comando, /mp dai aparece essa mensagem...

pawn Код:
else
↑ irб retornar caso vocк adicione o id e o texto exemplo /mp 1 eae.

Por fim usamos ↓
pawn Код:
format(Str, sizeof(Str), "Mesangem Privada de%s: %s",nome,texto);
Ah mlk mais vc nгo tem que adicionar o id?
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:
pawn Код:
format(Str, sizeof(Str), "Mesangem Privada de %s [ID%d]: %s",nome,playerid,texto);
Bom eu expliquei este comando todo, acho que por agora aprenderam, entгo, vou exemplificar mais outros comandos

/av para admin:
pawn Код:
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)
pawn Код:
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 e pronts, vocк consegue fazer coisas mais rapidas com zcmd e sscanf.
Usando imaginaзгo vocк chega lб. Espero que goste

®Creditos®


®BlueX - Por criaзгo do Tutorial
®Luis Miki - Por explicaзгo de duas coisas que eu nгo sabia
®****** - Pela criaзгo do sscanf
®Zeex - Plea criaзгo do zcmd

↓Download↓


↓ZCMD - Clique Aqui
↓sscanf 2.0 - Clique Aqui
Reply
#3

Nгo й necessбrio usar sscanf no primeiro comando, vocк pode usar isnull.
pawn Код:
CMD:ir(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, CorErro, "Vocк precisa ser uma Administrador level 1 para usar este comando");
    if(pJogando[playerid]) return SendClientMessage(playerid, CorErro, "Vocк nгo estб trabalhando!");
    if(isnull(params)) return SendClientMessage(playerid, CorErroNeutro, "USE: /ir [ID]");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, CorErroNeutro, "O jogador nгo estб conectado");
    new Float: x,
        Float: y,
        Float: z;
    GetPlayerPos(ID, x, y, z);
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    {
        SetPlayerPos(playerid, x, y, z);
    }
    else
    {
        SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
    }
    SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(ID));
    SetPlayerInterior(playerid, GetPlayerInterior(ID));
    new string[89];
    format(string, sizeof(string), "AdmCmd: O administrador %s foi atй %s", pNomeOriginal[playerid], pNomeOriginal[ID]);
    Log("Admin/Logs/Ir.ini", string);
    return 1;
}
Vocк tambйm pode usar os comandos de [BOPE]Seu._.Madruga, que aparenta ser funcional.
verifique tambйm se o seu sscanf estб atualizado.
Reply
#4

@[BOPE]Seu._.Madruga: To sem REP, sу daqui 24 hrs, valeu cara.

Nгo consegui desbugar os comandos, vou ver se acho outra FS de administraзгo boa para colocar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)