Portal SAMP
[Ajuda] Não posso proibir símbolos em negativo - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Não posso proibir símbolos em negativo (/showthread.php?tid=3066)



Não posso proibir símbolos em negativo - Rcon2014 - 08/12/2022

Oi, bom, eu tenho uma pergunta e realmente não sei como fazer, fiquei preso nisso...

Qual é a maneira que um usuário não pode colocar símbolos em um comando? Existe alguma maneira de evitá-lo? Bom, já vi usuários abusando de um bug que está com números negativos. Em outras palavras, digamos que eles coloquem/passem ID de materiais -10000000, isso faz com que o usuário que der o -10000000 seja negativo e o usuário que lançar o comando receba 10000000 mas positivo.

Eu quero proibir isso, como posso fazer isso? Deixo um exemplo.

Código:
    zcmd(pasar, playerid, params[])
    {
        new string[128], item[32];
        if(!sscanf(params, "s[32]ui", item, params[1],params[2]))
        {
            if(!IsPlayerConnected(params[1])) return Message(playerid, COLOR_GRAD2, "¡Jugador no conectado!");
            if(!ProxDetectorS(5.0, playerid, params[1])) return Message(playerid, COLOR_GRAD2, "¡Jugador muy lejos!");
            if(strcmp(item,"materiales",true) == 0)
            {
                if(isnumeric(params))return SendClientMessage(playerid, COLOR_GREY, "* No se puede enviar números por este canal.");
                if(params[2] > PlayerInfo[playerid][pMats]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de materiales!");
                format(string, sizeof(string), "* %s le da materiales a %s.", PlayerName(playerid), PlayerName(params[1]));
                   ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
                   PlayerInfo[params[1]][pMats] += params[2];
                   PlayerInfo[playerid][pMats] -= params[2];
                   format(string, sizeof(string), "* Has recibido %d materiales. Ahora tienes %d", params[2], PlayerInfo[params[1]][pMats]);
                Message(params[1], COLOR_YELLOW, string);
                return 1;
            }
            else if(strcmp(item,"speed",true) == 0)
            {
                if(params[2] > PlayerInfo[playerid][pSpeed]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de speed!");
                format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
                   ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
                PlayerInfo[params[1]][pSpeed] += params[2];
                   PlayerInfo[playerid][pSpeed] -= params[2];
                   format(string, sizeof(string), "* Has recibido %d de speed. Ahora tienes %d", params[2], PlayerInfo[params[1]][pSpeed]);
                Message(params[1], COLOR_YELLOW, string);
                return 1;
            }
            else if(strcmp(item,"ectasy",true) == 0)
            {
                if(params[2] > PlayerInfo[playerid][pEctasy]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de ectasy!");
                format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
                   ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
                PlayerInfo[params[1]][pEctasy] += params[2];
                   PlayerInfo[playerid][pEctasy] -= params[2];
                   format(string, sizeof(string), "* Has recibido %d de ectasy. Ahora tienes %d", params[2], PlayerInfo[params[1]][pEctasy]);
                Message(params[1], COLOR_YELLOW, string);
                return 1;
            }
            else if(strcmp(item,"ritalin",true) == 0)
            {
                if(params[2] > PlayerInfo[playerid][pRitalin]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de ritalin!");
                format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
                   ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
                PlayerInfo[params[1]][pRitalin] += params[2];
                   PlayerInfo[playerid][pRitalin] -= params[2];
                   format(string, sizeof(string), "* Has recibido %d de ritalin. Ahora tienes %d", params[2], PlayerInfo[params[1]][pRitalin]);
                Message(params[1], COLOR_YELLOW, string);
                return 1;
            }
            else if(strcmp(item,"heroina",true) == 0)
            {
                if(params[2] > PlayerInfo[playerid][pHeroina]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de heroina!");
                format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
                   ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
                PlayerInfo[params[1]][pHeroina] += params[2];
                   PlayerInfo[playerid][pHeroina] -= params[2];
                   format(string, sizeof(string), "* Has recibido %d de heroina. Ahora tienes %d", params[2], PlayerInfo[params[1]][pHeroina]);
                Message(params[1], COLOR_YELLOW, string);
                return 1;
            }
            else if(strcmp(item,"marihuana",true) == 0)
            {
                if(params[2] > PlayerInfo[playerid][pMarihuana]) return Message(playerid, COLOR_GRAD2, "¡No tienes esa cantidad de marihuana!");
                format(string, sizeof(string), "* %s le da algo a %s.", PlayerName(playerid), PlayerName(params[1]));
                   ProxDetectorEx(30.0, playerid, string, COLOR_PURPLE);
                PlayerInfo[params[1]][pMarihuana] += params[2];
                   PlayerInfo[playerid][pMarihuana] -= params[2];
                   format(string, sizeof(string), "* Has recibido %d de marihuana. Ahora tienes %d", params[2], PlayerInfo[params[1]][pMarihuana]);
                Message(params[1], COLOR_YELLOW, string);
                return 1;
            }
        } else {
            Message(playerid, COLOR_GRAD2, "Utilize: /pasar <Item> <PlayerID> <Cantidad>");
            Message(playerid, COLOR_GRAD2, "Items: materiales, drogas, speed, ectasy, ritalin, heroina, marihuana");
        }
        return 1;
    }



RE: Não posso proibir símbolos em negativo - Dr Editor - 08/12/2022

O valor já está sendo passado como número, basta verificar se é negativo.
Código:
if(params[2] < 0) return ...



RE: Não posso proibir símbolos em negativo - Rcon2014 - 08/12/2022

(08/12/2022 13:54)Dr Editor Escreveu: O valor já está sendo passado como número, basta verificar se é negativo.
Código:
if(params[2] < 0) return ...

Muito obrigado pela ajuda, pode fechar o tópico


RE: Não posso proibir símbolos em negativo - White_Blue - 09/12/2022

(08/12/2022 23:22)Rcon2014 Escreveu:
(08/12/2022 13:54)Dr Editor Escreveu: O valor já está sendo passado como número, basta verificar se é negativo.
Código:
if(params[2] < 0) return ...

Muito obrigado pela ajuda, pode fechar o tópico

Aqui os tópicos não são fechados. Fica para todo mundo ver, se algum dia alguém precisar de ajuda com a mesma coisa, ela pode reviver o tópico.


RE: Não posso proibir símbolos em negativo - Rcon2014 - 09/12/2022

Ah grande irmão, eu não sabia. É que na maioria dos fóruns eles fecham os tópicos. Acho ótimo que o tópico continue aberto, muito obrigado pela ajuda senhor, saudações!