17/05/2024 18:37
(16/05/2024 20:25)BitSain Escreveu: Eu testei diferentes formas, e a única coisa que achei mais simples foi criar uma variável pra usar no sscanf na parte do nome do item.
Eu levantei uma hipótese, mas não sei se faz sentido pois nunca vi nada parecido.
Como você está acessando o conteúdo do params[1], eu acho que qnd você tá acessando a matriz 1 o 2⁰ caractere está sendo deletado, pois a posição 1 é o caractere 2...
Não faz muito sentido isso, mas só fiz criar a variável 'item' e funcionou.
Código PHP:CMD:daritem(playerid, params[]){
new item[30];
if(sscanf(params, "us[30]d", params[0], item, params[2])) return SendClientMessage(playerid, -1, "Uso: /daritem [playerid] [item] [quantidade]");
printf("Debug [1]");
if(!IsPlayerConnected(params[0])) return 1;
printf("Debug [2]");
printf("playerid: %d | item: %s | quantidade: %d", params[0], item, params[2]);
new itemName[30];
for(new i = 0; i < sizeof(ItensArray); i++){
if(strcmp(item, ItensArray[i][item_name]) == 0){
format(itemName, sizeof(itemName), "%s", ItensArray[i][item_name]);
break;
}
}
if(isnull(itemName)){
SendClientMessage(playerid, -1, "{FFFFFF}* Item nao encontrado.");
return 1;
}
SendClientMessagef(playerid, -1, "{FFFFFF}* Voce deu {E84F33}%d{FFFFFF} unidades do item {E84F33}%s{FFFFFF} para o(a) {E84F33}%s(%d)", params[2], itemName, PegarNome(params[0]), params[0]);
givePlayerItem(params[0], itemName, params[2]);
return 1;
}
A única coisa que fiz foi substituir o "params[1]" por "item".
Deu certinho! obrigado.