PDA

Просмотр полной версии : [Вопрос] Необязательные параметры в sscanf.



1lyad
13.09.2016, 08:20
Собственно, вопрос в названии топика. Поясню на простом примере:

CMD:cmd(playerid, params[])
{
if(sscanf(params, "iI(opt_number1)I(opt_number2)", params[0], params[1], params[2]))
return SendClientMessage(playerid, -1, msg[]);
return true;
}

Например, мне нужно, чтобы переменные params[1] и params[2] были необязательными, как показано выше, устанавливается любое значение opt_number1 и opt_number2, НО, если мы вводим два первых значения и пропускаем третье, то есть params[2], то params[1] устанавливается значение opt_number1, вместо введенной игроком. Есть ли какие-либо способы это исправить?

DeimoS
13.09.2016, 09:27
то params[1] устанавливается значение opt_number1, вместо введенной игроком. Есть ли какие-либо способы это исправить?

Это не есть норма для sscanf. Точнее, бага такого там вообще нет (как минимум, в последней версии). Показывайте конкретный код, в котором появляется проблема, и скажите версию sscanf, которая у вас установлена.

1lyad
13.09.2016, 10:30
Прошу прощения, что ввёл в заблуждение, всю ночь не спал, голова не работает уже.
"Баг" был не со стороны плагина от Y_Less, надо было проверить с помощью printf, перед тем как создавать тему, как уже выше написал, голова не работает.
Ошибка заключалась в следующем:



stock n_AddStaticVehicleEx(modelID, Float: spawn_X, Float: spawn_Y, Float: spawn_Z, Float: z_Angle, color1, color2, respawn_Delay, addsiren=0)
{
if(color1 < 0 || color2 < 0)
{
color1 = random(256);
color2 = random(256);
}
modelID = AddStaticVehicleEx(modelID, spawn_X, spawn_Y, spawn_Z, z_Angle, color1, color2, respawn_Delay, addsiren);

new
colorStr[24]
;
format(colorStr, sizeof(colorStr), "%d-%d", color1, color2);
setproperty(_, "", PROPERTY_OFFSET(modelID), colorStr);

return modelID;
}

Так как color2 был равен -1, собсна, и color1 устанавливалось значение рандомное. Можете закрыть тему.