[Ajuda] SetHelper
#1

Sei que muitos vгo dizer pra passar pra sscanf mas eu preciso entender o porque que isso aconteзe

Comando com os print = http://pastebin.com/XpL0WZXy

logs = http://pastebin.com/pxNQivBL
Reply
#2

Vocк sу pegou o cуdigo e colou sem saber usar strtok, o comando nгo vai funcionar.
Vocк sу pegou e criou uma string chamada cmd, nгo sei se й isso que eu vou dizer agora por eu nгo entender strtok, no topo da callback OnPlayerCommandtext, fica o:
pawn Код:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
Se eu nгo me engano o strtok separa os parвmetros do comando ( se estiver errado me corrijam).

A forma que vocк usou no zcmd estб errada.

Nгo tenha preguiзa e refaзa o comando:
pawn Код:
CMD:sethelp(playerid, params[])
{
    new id, level;
    if(sscanf(params, "ui", id, level)) return SendClientMessage(playerid, 0xD8D8D8FF, "Uso correto: /sethelper [id do player] [level]");
    // Resto do Comando
    return 1;
}
Parece que й difнcil fazer este simples comando.

EDIT
O comando nгo executado, por a string cmd, esta sem nenhum caractere, ela que iria armazenar os parвmetros do comando ( me corrijam se eu estiver errado ).
Reply
#3

O que queres que faзa?
Reply
#4

Quote:
Originally Posted by DavidCosta
Посмотреть сообщение
O que queres que faзa?

o comando nгo funciona ele para no print 6

pawn Код:
print("5");
        giveplayerid = strval(tmp);
        print("6");
        if(!strlen(tmp))
        {
                SendClientMessage(playerid, 0xD8D8D8FF, "Uso correto: /sethelper [id do player] [level]");
                return 1;
        }
        print("7");
        tmp = strtok(cmd, idx);
        print("8");
//----------------------------------//
Quote:
Originally Posted by MultiKill
Посмотреть сообщение
Nгo tenha preguiзa e refaзa o comando:
pawn Код:
CMD:sethelp(playerid, params[])
{
    new id, level;
    if(sscanf(params, "ui", id, level)) return SendClientMessage(playerid, 0xD8D8D8FF, "Uso correto: /sethelper [id do player] [level]");
    // Resto do Comando
    return 1;
}
Parece que й difнcil fazer este simples comando.

.
o unico problema que eu me perco com sscanf й ali no "ui" mais eu vou tentar
Reply
#5

Код:
u - й usado para parte do nome ou id
i ou d - й usado para nъmeros inteiros
s - й usado para strings
f - й usado para coordenadas, nъmeros nгo inteiros
Estes sгo os formatos bбsicos.

Olhe este tutorial aqui.
Reply
#6

e como fica essa parte aq eu uso /sethelper

e so fica dando isso aq Este player jб tem esse nнvel 0 de helper!

pawn Код:
new Helper[MAX_PLAYERS];
        Helper[playerid] = strval(tmp);
        if(Helper[playerid] < 0)
        {
            SendClientMessage(playerid, 0xD8D8D8FF, "Level de Helper invбlido!");
            return 1;
        }
        if(Helper[playerid] == Player[giveplayerid][pHelper])
        {
            format(string, sizeof(string), "Este player jб tem esse nнvel %d de helper!", Helper[playerid]);
            SendClientMessage(playerid, 0xD8D8D8FF, string);
            return 1;
        }
obs esstou passando pra sscanf
Reply
#7

Quote:

e como fica essa parte aq eu uso /sethelper

e so fica dando isso aq Este player jб tem esse nнvel 0 de helper!

A parte da verificaзгo de level estб errada. Acredito que vocк esteja tentando se setar e o seu cуdigo estб "perguntando" se o player escolhido tem o mesmo level que vocк, que por sua vez й 0 e retorna ao erro.

Fiz esse comando com linhas bem explicadas, sу analisar os comentбrios com atenзгo e acredito que vc nгo terб mais dъvidas.

pawn Код:
CMD:sethelper(playerid,params[])
{
    //Caso queira por restriзхes para usar o comando
    if(SuaVardeAdmin[playerid] < LevelRequeridoPorVoce) return SendClientMessage(playerid,0xD8D8D8FF,"Vocк nгo pode usar esse comando");
   
    //Variбvel que armazenarб o id que vai ser trabalhado. Obs: ID й diferente de playerid.
    //Pois playerid й o seu id enquanto ID serб o id digitado por vocк no comando, ou seja,
    //representarб o id do jogador escolhido.
    new ID;
   
    //Variбvel que armazenarб o level de helper que vai ser setado.
    new Level;
   
    //Aqui chega na parte da sua dъvida. Note que embaixo tem "dd" isso pq sгo respresentaзхes das variaveis
    //trabalhadas, isto й, ID e Level.
    //Ou seja, se fosse um comando de /report [id] [motivo] ficaria assim: if(sscanf(params,"dds[128]",ID,Level,Motivo))
    //Pois o Motivo seria uma string, ou seja, tem o sнmbolo "s"
    //-------------------------------------------------------
    //Outro exemplo --> /mensagem [mensagem] ficaria assim:
    //      new Mensagem[128];
    //      if(sscanf(params,"s[128]",Mensagem))
    //      {
    //=========================================
    //Espero que tenha entendido essa parte :)
    //=========================================
    if(sscanf(params,"dd",ID,Level))
    {
        SendClientMessage(playerid,0xD8D8D8FF,"Uso correto: /sethelper [id] [level]");
        return 1;
    }
   
    //Verifica se o ID estб conectado.
    if(!IsPlayerConnected(ID))
    {
        SendClientMessage(playerid,0xD8D8D8FF,"Jogador nгo conectado.");
        return 1;
    }
   
    //Se o valor de Level for menor que 1 retorna a este erro
    if(Level < 1) return SendClientMessage(playerid, 0xD8D8D8FF, "Level de Helper invбlido!");
   
    //Aqui a parte que vocк provavelmente se confundiu
    if(Level == SuaVarDeHelp[ID])
    {
        new string[128];
        format(string, sizeof(string), "Este player jб tem esse nнvel %d de helper!", SuaVarDeHelp[ID]);
        SendClientMessage(playerid, 0xD8D8D8FF, string);
        return 1;
    }
   
    //Como nгo tem mais nada impedindo que o jogador ganhe seu merecido level, setamos o player :)
    SuaVarDeHelp[ID]=Level;
    return 1;
}
Caso tenha dъvidas ou algo dк errado, pode contar comigo
Reply
#8

deu um erro aqui
pawn Код:
if(Level == pHelper[ID])

error 028: invalid subscript (not an array or too many subscripts): "pHelper"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
Reply
#9

pawn Код:
if(Level == Player[ID][pHelper])
Reply
#10

aqui tambem ta dando os mesmo erros

format(string, sizeof(string), "Este player jб tem esse nнvel %d de helper!", pHelper[ID]);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)