[AJUDA] Usar SSCANF
#1

Boa Noite galera, estou editando aqui uma GM muito boa, mas estava adaptando um sistema de atendimento nela (SISTEMA DE /senha), e entao me lembrei que na minha outra GM que eu tbm estava editando eu ja havia colocado um, mas bem basico, onde nao mostrava a senha que o jogador havia pegado, e com isso as vezes vc atendia um que pegou a senha depois do outro e rola a maior confusгo. Ai eu tive a ideia de "FUNDIR" o sistema do Shadoww5 com o meu, pois nao queria usar o dele pois ODEIOOOOOO sscanf. Mas ai vem o problema, estava dando TUDOOOO certo, mas quando eu fui adaptar o comando de /irsenha eu nao consegui e como nao entendo nada de SSCANF e tambem nao consigo aprender de maneira nenhuma, vim aqui pedir a ajuda de vocкs para retirar do comando o sistema de SSCANF!

Bom, estes sao os comandos que eu adaptei e que funcionam perfeitamente:

pawn Код:
if(strcmp(cmd, "/senha", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
                if (PlayerInfo[playerid][pAdmin] >= 1)
                    return SendClientMessage(playerid, VERMELHO, "Administradores nгo podem pegar senha.");
                else if(Senha[playerid] != 0)
                    return SendClientMessage(playerid, VERMELHO, "Vocк jб estб na fila de atendimento.");
                Senha[playerid] = Fila;
                Fila++;
                SendClientMessage(playerid, 0x408080AA, "[SENHA] Vocк entrou na fila de atendimento. Aguarde um Admin atender.");
                SendClientMessage(playerid, 0x408080AA, "[SENHA] Caso deseje sair da fila digite /devolversenha.");
                SendClientMessage(playerid, 0x408080AA, "[SENHA] E caso queira ver a fila de atendimento digite /fila!");
                format(string, sizeof(string), "[SENHA] %s(%d) entrou na fila de atendimento!", sendername, playerid);
                ABroadCast(0xFFFFFFAA,string,1);
        }
    }
    if(strcmp(cmd, "/devolversenha", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(Senha[playerid] == 0)
                return SendClientMessage(playerid, VERMELHO, "Vocк nгo estб na fila de atendimento.");
            Senha[playerid] = 0;
            SendClientMessage(playerid, LARANJA, "Vocк saiu da fila de atendimento.");

        }
    }
    if (strcmp(cmd, "/fila", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            new found, name[24];
            for(new i = 0; i < MAX_PLAYERS; i ++)
            {
                if(Senha[i] != 0) { found++; }
                if(found > 1) { break; }
            }
            if(!found)
                return SendClientMessage(playerid, VERMELHO, "Nгo hб nenhum jogador na fila de atendimento.");
            SendClientMessage(playerid, AMARELO, "======= {FFFFFF}[ Fila de Atendimento ] {F7E200}=======");
            for(new s = 1; s < (Fila+1); s++)
            {
                for(new i = 0; i < MAX_PLAYERS; i ++)
                {
                    if(!IsPlayerConnected(i)) continue;
                    if(Senha[i] != s) continue;
                    GetPlayerName(i, name, 24);
                    format(string, sizeof(string), "  » [ID %d] %s - Senha: %d", i, name, Senha[i]);
                    SendClientMessage(playerid, AMARELO, string);
                }
            }
        }
        return 1;
    }
Entretanto, este e o sistema que esta em SSCANF e nao faзo a menor ideia de como tirar ele de SSCANF:

pawn Код:
if (strcmp(cmd, "/irsenha", true) == 0)
 {
    new senha;
    if (!PlayerInfo[playerid][pAdmin] >= 1)
        return SendClientMessage(playerid, VERMELHO, "Vocк nгo estб autorizado a usar este comando.");
    else if(sscanf(params, "d", senha))
        return SendClientMessage(playerid, CINZA, "USO: /irsenha [numero da senha]");
    else if(senha < 1)
        return SendClientMessage(playerid, VERMELHO, "Nгo hб ninguйm no servidor com esta senha.");
    new bool:found;
    for(new i = 0; i < MAX_PLAYERS; i ++)
    {
        if(Senha[i] == senha)
        {
            new Float:Pos[3];
            GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
            SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
            SetPlayerInterior(playerid, GetPlayerInterior(i));
            Senha[i] = 0;
            GetPlayerName(playerid, string, 24);
            format(string, sizeof(string), "O administrador %s [ID %d] veio te ajudar.", string, playerid);
            SendClientMessage(i, AMARELO, string);
            GetPlayerName(i, string, 24);
            format(string, sizeof(string), "Vocк veio atender o jogador %s [ID %d].", string, i);
            SendClientMessage(playerid, AMARELO, string);
            found = true;
            break;
        }
    }
    if(!found) { SendClientMessage(playerid, VERMELHO, "Nгo hб ninguйm no servidor com esta senha."); }
    return 1;
}
Se alguem me ajudar eu agradeceria muito!!
Reply
#2

Tirar o sscanf? Se nгo sabe utilizб-lo, apenas instale-o e use neste comando. Nгo й mais fбcil?
Reply
#3

Nao porque todas as vezes que eu coloquei algum CODE em SSCANF na minha GM ela bugava e nem para logar dava! Entao eu acharia melhor tirar mesmo porque eu tenho certeza que tirando dara menos dor de cabeзa!
Reply
#4

Desculpe pelo Double Post mas preciso de ajudaaa urgente, ja tentei de tudo e nгo consegui resolver.
Reply
#5

https://sampwiki.blast.hk/wiki/Strtok
quando vc aprender a usar isso vc vai saber tirar 'do sscanf'
toma sem sscanf kkk
pawn Код:
if (strcmp(cmd, "/irsenha", true) == 0)
 {
    new senha;
    if (!PlayerInfo[playerid][pAdmin] >= 1)
        return SendClientMessage(playerid, VERMELHO, "Vocк nгo estб autorizado a usar este comando.");
        return SendClientMessage(playerid, CINZA, "USO: /irsenha [numero da senha]");
    else if(senha < 1)
        return SendClientMessage(playerid, VERMELHO, "Nгo hб ninguйm no servidor com esta senha.");
    new bool:found;
    for(new i = 0; i < MAX_PLAYERS; i ++)
    {
        if(Senha[i] == senha)
        {
            new Float:Pos[3];
            GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
            SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
            SetPlayerInterior(playerid, GetPlayerInterior(i));
            Senha[i] = 0;
            GetPlayerName(playerid, string, 24);
            format(string, sizeof(string), "O administrador %s [ID %d] veio te ajudar.", string, playerid);
            SendClientMessage(i, AMARELO, string);
            GetPlayerName(i, string, 24);
            format(string, sizeof(string), "Vocк veio atender o jogador %s [ID %d].", string, i);
            SendClientMessage(playerid, AMARELO, string);
            found = true;
            break;
        }
    }
    if(!found) { SendClientMessage(playerid, VERMELHO, "Nгo hб ninguйm no servidor com esta senha."); }
    return 1;
}
Reply
#6

Vai Besta, usei o seu code porem deu varios erros, consegui resolver quase todos, so sobrou um, o famoso Unreachable Code, segue o Code com a linha do erro:

pawn Код:
if (strcmp(cmd, "/irsenha", true) == 0)
    {
        new senha;
        if (PlayerInfo[playerid][pAdmin] < 1)
            return SendClientMessage(playerid, VERMELHO, "Vocк nгo estб autorizado a usar este comando.");
            return SendClientMessage(playerid, CINZA, "USO: /irsenha [numero da senha]");
        if(senha < 1)//Aqui que esta dando o Unreachable Code.
            return SendClientMessage(playerid, VERMELHO, "Nгo hб ninguйm no servidor com esta senha.");
        new bool:found;
        for(new i = 0; i < MAX_PLAYERS; i ++)
        {
            if(Senha[i] == senha)
            {
                new Float:Pos[3];
                GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
                SetPlayerPos(playerid, Pos[0]+1, Pos[1], Pos[2]+0.5);
                SetPlayerInterior(playerid, GetPlayerInterior(i));
                Senha[i] = 0;
                GetPlayerName(playerid, string, 24);
                format(string, sizeof(string), "O administrador %s [ID %d] veio te ajudar.", string, playerid);
                SendClientMessage(i, AMARELO, string);
                GetPlayerName(i, string, 24);
                format(string, sizeof(string), "Vocк veio atender o jogador %s [ID %d].", string, i);
                SendClientMessage(playerid, AMARELO, string);
                found = true;
                break;
            }
        }
        if(!found) { SendClientMessage(playerid, VERMELHO, "Nгo hб ninguйm no servidor com esta senha."); }
        return 1;
    }
@EDIT

Vlw Vai Besta, consegui resolver o problema, ja te dei reputation, qualquer coisa estamos ai!!

@EDIT denovo

Engano meu, eu consegui retirar os erros, entretanto o /irsenha nao funciona, sempre aparece a mesma coisa, aparece "Nгo hб ninguйm no servidor com esta senha.".
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)