Usando Sscanf -
Mitic0 - 29.07.2018
pawn Код:
CMD:editaremp(playerid, params[])
{
new id = 0,
cmd[12],
valor;
id = IdEmpProxima(playerid);
if (sscanf(params, "s[12]i",cmd, valor)) {
SendClientMessage(playerid, -1, "/editaremp [id] [opcao] [valor]");
SendClientMessage(playerid, -1, "opзoes: stock");
return 1;
}
if (!strcmp(cmd, "stock", true)) {
if(id == 0) return SendClientMessage(playerid, -1, "Vocк nгo estб prуximo a uma empresa.");
Empresa[id][TotalStock] = valor;
return 1;
}
return 1;
}
Alguem me ajuda? nгo estou conseguindo fazer o comando em sscanf, sempre da erro, quando digito /editaremp stock quantia, ele nгo seta.
Re: Usando Sscanf -
SIZET - 29.07.2018
nгo entendi muito bem o seu comando mas tenta assim:
PHP код:
CMD:editaremp(playerid, params[])
{
new id = 0, cmd[12], valor;
id = IdEmpProxima(playerid);
if (sscanf(params, "ds[12]d", id, cmd, valor))
{
SendClientMessage(playerid, -1, "/editaremp [id] [opзгo] [valor]");
SendClientMessage(playerid, -1, "opзoes: stock");
return 1;
}
if (!strcmp(cmd, "stock", true))
{
if(id == 0) return SendClientMessage(playerid, -1, "Vocк nгo estб prуximo a uma empresa.");
Empresa[id][TotalStock] = valor;
return 1;
}
return 1;
}
ou assim:
PHP код:
CMD:editaremp(playerid, params[])
{
new id = 0, cmd[12], valor;
id = IdEmpProxima(playerid);
if (sscanf(params, "s[12]d", cmd, valor))
{
SendClientMessage(playerid, -1, "/editaremp [opзгo] [valor]");
SendClientMessage(playerid, -1, "opзoes: stock");
return 1;
}
if (!strcmp(cmd, "stock", true))
{
if(id == 0) return SendClientMessage(playerid, -1, "Vocк nгo estб prуximo a uma empresa.");
Empresa[id][TotalStock] = valor;
return 1;
}
return 1;
}
Re: Usando Sscanf -
LeViNS - 29.07.2018
Verifique:
PHP код:
CMD:editaremp(playerid, params[]) {
new id = IdEmpProxima(playerid), cmd[12], valor;
if(sscanf(params, "s[12]i", cmd, valor)) {
SendClientMessage(playerid, -1, "/editaremp [opcao] [valor].");
SendClientMessage(playerid, -1, "Opзхes: stock.");
return 1;
}
if(!strcmp(cmd, "stock")) {
if(id == 0) return SendClientMessage(playerid, -1, "Vocк nгo estб prуximo a uma empresa.");
Empresa[id][TotalStock] = valor;
SendClientMessage(playerid, -1, "Comando efetuado com sucesso.");
return 1;
}
SendClientMessage(playerid, -1, "Opзгo invбlida, use: stock.");
return 1;
}
Re: Usando Sscanf -
willttoonn - 29.07.2018
Veja se funciona, nгo testei.
PHP код:
CMD:editaremp(playerid, params[])
{
new id = 0,
cmd[12],
string[128],
valor;
id = IdEmpProxima(playerid);
if(id == 0)
return SendClientMessage(playerid, -1, "Vocк nгo estб prуximo a uma empresa.");
else if (sscanf(params, "s[12]S()[128]", cmd, string))
{
SendClientMessage(playerid, -1, "/editaremp [opзгo]");
SendClientMessage(playerid, -1, "Opзхes: stock");
return 1;
}
else if (!strcmp(cmd, "stock", true))
{
if (sscanf(string, "d", valor))
return SendSyntaxMessage(playerid, "/editaremp stock [valor]");
if(valor < 1)
return SendClientMessage(playerid, -1, "Vocк deve informar um valor acima de 0.");
Empresa[id][TotalStock] = valor;
new str[128];
format(str, 128, "Vocк editou com sucesso o estoque da empresa %d para %d produtos.", id, valor);
SendClientMessage(playerid, -1, str);
return 1;
}
else
SendClientMessage(playerid, "Opзгo invбlida.");
return 1;
}
Re: Usando Sscanf -
JeffSantos2 - 30.07.2018
Creio que deste jeito irб fazer o que vocк precisa...
Код:
CMD:editaremp(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "/editaremp [opcao] [valor]."); //caso o comando tenha sido digitado sem parвmetros retorna mensagem de erro
new id = IdEmpProxima(playerid); //variavel que irб armazenar o id da empresa mais prуxima
if(id == 0) return SendClientMessage(playerid, -1, "Vocк nгo estб prуximo(a) de uma empresa."); //caso IdEmpProxima(playerid) retorne 0, ele da erro
if(!strfind(params, "stock", true))) //caso a procura do texto "stock" nos parametros retorn 0, ou seja, o parametro digitado for stock, cai no if
{
new valor; //variavel que armazena-ra o valor digitado
if(sscanf(params, "' 'd", valor)) return SendClientMessage(playerid, -1, "/editaremp [opcao] [valor]."); //agora usa sscanf para buscar o valor digitado, ele busca esse valor а partir do digito espaзo
//digitando /editaremp stock 0, ele vai armazenar o 0 na variavel valor, pois estб apуs o espaзo.
Empresa[id][TotalStock] = valor; //salva o valor nos dados da empresa
SendClientMessage(playerid, -1, "Comando efetuado com sucesso.");
}
//caso tenha outros tipos de "opзгo", use: else if(!strfind(params, "nome da opзгo", true)))
else //caso nгo seja digitado nenhuma das opзхes, retorna mensagem de erro
{ SendClientMessage(playerid, -1, "/editaremp [opcao] [valor].");
SendClientMessage(playerid, -1, "Opзхes: stock.");
}
return 1;
}