[AJUDA] Convertendo uns comandos e erros
#1

Me desculpem por estar flodando tуpicos com dъvidas sobre comandos, prometo que essa й o ultima, pelomenos de hoje й a ultima <>

Resolvendo esse problema eu ja consigo resolver o resto dos outros comandos 90%.

To convertendo os comandos strcmp para dcmd
Quando eu vou compilar da erro

(421) : error 017: undefined symbol "strtok"
(421) : error 033: array must be indexed (variable "cmd")
(425) : error 017: undefined symbol "strtok"
(425) : error 033: array must be indexed (variable "tmp")
(430) : error 017: undefined symbol "strtok"
(430) : error 033: array must be indexed (variable "tmp")
(416) : warning 203: symbol is never used: "idx"

pawn Код:
dcmd_daradmin(playerid, params[])
{
      #pragma unused params
    new cmd[256];
    new idx; // LINHA 416
    new string[256];
    new tmp[256];
    new NomeDado[128];
    new NomeDado1[128];
    cmd = strtok(cmdtext, idx); // LINHA 421
        if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, COR_CINZA, "Vocк nгo estб conetado!");
        if(LevelInfo[playerid][Admin] < 4) return SendClientMessage(playerid, COR_MARROMCLARO, "[ERRO] Vocк nгo tem permissгo para executar este comando.");
        if(AdminTrabalhando[playerid] < 1) return SendClientMessage(playerid, COR_MARROMCLARO, "[AVISO] Vocк nгo estб trabalhando USE /trampar");
        tmp = strtok(cmdtext, idx); // LINHA 425
        if(!strlen(tmp)) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
        new para1;
        new level;
        para1 = ReturnUser(tmp);
        tmp = strtok(cmdtext, idx); //LINHA 430
        if(!strlen(tmp)) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
        level = strval(tmp);
        GetPlayerName(para1, NomeDado, sizeof(NomeDado));
        GetPlayerName(playerid, NomeDado1, sizeof(NomeDado1));
        if(para1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, COR_BRANCO, "Player nгo conetado!");
        if(level == 0) return SendClientMessage(playerid, COR_BRANCO, "Para tirar admin a alguem use: /tiraradmin");
        if(level > 5) return SendClientMessage(playerid, COR_BRANCO, "Vocк nгo pode dar admin level 5+ a ninguem!");
        format(string, sizeof string, "Vocк promoveu um cargo administrativo level %d para o laranja %s", level, NomeDado);
        SendClientMessage(playerid, 0xABCDEF01, string);
        format(string, sizeof string, "Vocк foi promovido ao cargo administrativo level  %d do administrador  %s. Parabйns.", level, NomeDado1);
        SendClientMessage(para1, COLOR_LIGHTBLUE, string);
        LevelInfo[para1][Admin] = level;
        return 1;
    }
Eu tentei resolver mais fica dando mais erro, agora eu nгo sei c to resolvendo da forma certa....
Reply
#2

coloca no final do GM:
pawn Код:
static stock strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply
#3

Tente isto:
OBS: SO O ADM RCON CONSEGUE DAR ADM!

pawn Код:
if(strcmp(cmd,"/daradmin", true)==0){
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
if(IsPlayerAdmin(playerid)){
new tmp[256];
new plid, skin;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, Vermelho, "** Digite: /daradmin [id] [Level]");
return 1;
}
plid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, "** Digite: /daradmin [id] [Level]");
return 1;
}
skin = strval(tmp);
if(skin>=7){
SendClientMessage(playerid, Vermelho, "** O level Permitido para ADM й de 0 б 6! **");
return 1;
}
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
if(IsPlayerConnected(plid)){
if(skin>=1){
pAdmin[plid] = skin;
SpawnPlayer(plid);
format(string, sizeof(string), "* %s (%d) (») Promoveu: %s (%d) administrador (») Level: %d", aname,playerid,pname,plid,skin);
SendClientMessageToAll(outraadm, string);
if(skin>1){
SetPlayerAttachedObject( plid, 1, 18749, 1, 0.800000, 0.000000, 0.000000, 156.986312, 100.000000, 20.000000, 1.332795, 2.000000, 1.486337 ); // SAMPLogoSmall - esseaqui
}
}
if(skin == 0){
pAdmin[plid] = 0;
SpawnPlayer(plid);
format(string, sizeof(string), "O Adminstrador %s (%d) (») retirou admin do jogador: %s (ID: %d)", aname,playerid,pname,plid);
SendClientMessageToAll(outraadm, string);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
}
return 1;
}else{
SendClientMessage(playerid, Vermelho, "** Jogador nгo conectado.");
return 1;
}
}
}
Reply
#4

Nem rola esse ai
Reply
#5

pawn Код:
dcmd_daradmin(playerid, params[])
{
      #pragma unused params
    new string[256];
    new tmp[256];
    new NomeDado[128];
    new NomeDado1[128];
        if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, COR_CINZA, "Vocк nгo estб conetado!");
        if(LevelInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COR_MARROMCLARO, "[ERRO] Vocк nгo tem permissгo para executar este comando.");
        if(AdminTrabalhando[playerid] < 1) return SendClientMessage(playerid, COR_MARROMCLARO, "[AVISO] Vocк nгo estб trabalhando USE /trampar");
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
        new para1;
        new level;
        para1 = ReturnUser(tmp);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
        level = strval(tmp);
        GetPlayerName(para1, NomeDado, sizeof(NomeDado));
        GetPlayerName(playerid, NomeDado1, sizeof(NomeDado1));
        if(para1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, COR_BRANCO, "Player nгo conetado!");
        if(level == 0) return SendClientMessage(playerid, COR_BRANCO, "Para tirar admin a alguem use: /tiraradmin");
        if(level > 5) return SendClientMessage(playerid, COR_BRANCO, "Vocк nгo pode dar admin level 5+ a ninguem!");
        format(string, sizeof string, "Vocк promoveu um cargo administrativo level %d para o laranja %s", level, NomeDado);
        SendClientMessage(playerid, 0xABCDEF01, string);
        format(string, sizeof string, "Vocк foi promovido ao cargo administrativo level  %d do administrador  %s. Parabйns.", level, NomeDado1);
        SendClientMessage(para1, COLOR_LIGHTBLUE, string);
        LevelInfo[para1][Admin] = level;
        return 1;
    }
Reply
#6

Ja fiz isso ai, tive que acrescentar new cmdtext, idx

ai fica nesses erro aqui

(42 : error 035: argument type mismatch (argument 2)
(433) : error 035: argument type mismatch (argument 2)

tmp = strtok(cmdtext, idx);
tmp = strtok(cmdtext, idx);

Se eu retiro o new cmdtext, idx e essa linha 428, 433, vai continuar a mesma coisa
Reply
#7

Define o new cmd[256]
nгo new cmdtext..
e o idx;
la depois do on playercommandtext ex:
pawn Код:
public OnPlayerCommandText(playerid,cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);
return 0;
}
Reply
#8

Problema que nгo to fazendo os comandos dentro do public
Se eu por dentro da public nгo funciona
estб tudo no final do GM
Reply
#9

Tenta
pawn Код:
dcmd_daradmin(playerid, params[])
{
    new string[100],NomeDado[24],NomeDado1[24],para1,level;

    if(!IsPlayerConnected(playerid))    return SendClientMessage(playerid, COR_CINZA, "Vocк nгo estб conetado!");
    if(LevelInfo[playerid][Admin] < 1)  return SendClientMessage(playerid, COR_MARROMCLARO, "[ERRO] Vocк nгo tem permissгo para executar este comando.");
    if(AdminTrabalhando[playerid] < 1)  return SendClientMessage(playerid, COR_MARROMCLARO, "[AVISO] Vocк nгo estб trabalhando USE /trampar");

    if(!params[0]) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
    para1 = params[0];

    if(!params[1]) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
    level = params[1];

    GetPlayerName(para1, NomeDado, sizeof(NomeDado));
    GetPlayerName(playerid, NomeDado1, sizeof(NomeDado1));

    if(para1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, COR_BRANCO, "Player nгo conetado!");
    if(level == 0) return SendClientMessage(playerid, COR_BRANCO, "Para tirar admin a alguem use: /tiraradmin");
    if(level > 5) return SendClientMessage(playerid, COR_BRANCO, "Vocк nгo pode dar admin level 5+ a ninguem!");

    format(string, sizeof string, "Vocк promoveu um cargo administrativo level %d para o laranja %s", level, NomeDado);
    SendClientMessage(playerid, 0xABCDEF01, string);

    format(string, sizeof string, "Vocк foi promovido ao cargo administrativo level  %d do administrador  %s. Parabйns.", level, NomeDado1);
    SendClientMessage(para1, COLOR_LIGHTBLUE, string);

    LevelInfo[para1][Admin] = level;

    return 1;
}
Nгo sei se vai dar certo, nгo sei muito de dcmd.

Se nгo der tenta trocar:
pawn Код:
if(!params[0]) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
para1 = params[0];

if(!params[1]) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
level = params[1];

// Por

if(!params[1]) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
para1 = params[1];

if(!params[2]) return SendClientMessage(playerid, COR_CINZA, "USE: /daradmin [id] [Nivel]");
level = params[2];
Reply
#10

Santa paciencia
nгo deu

Qual й o MELHOR COMANDO mais utilizado que tem?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)