08/12/2022 11:50
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.
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;
}