{
static const house_cmd[] = "/house"; // имя команды с правым слэшем
const house_cmd_size = sizeof(house_cmd)-1;
if(strcmp(cmdtext
, house_cmd
, true, house_cmd_size
) == 0) {
new
house_param_sell[] = "sell", // имя параметра "продажа"
house_param_enter[] = "enter", // имя параметра "вход"
house_param_exit[] = "exit"; // имя параметра "выход"
const
// подсчёт длин каждой команды во время компиляции
house_param_sell_size = sizeof(house_param_sell)-1,
house_param_enter_size = sizeof(house_param_enter)-1,
house_param_exit_size = sizeof(house_param_exit)-1;
// расчёт максимальной длины из указанных ранее параметров
#if house_param_sell_size>house_param_enter_size
#define final_size house_param_sell_size
#else
#define final_size house_param_enter_size
#endif
#if house_param_exit_size > final_size
#undef final_size
#define final_size house_param_exit_size+1
#endif
new
param_name[final_size], // массив, содержащий имя параметра
amount, // переменная, хранящая стоимость
fmt_str[] = "s[%i]D(-1)", // массив спецификаторов
spec_str[sizeof(fmt_str) + (-2 + 3)]; // массив, хранящий отформатированную строку со спецификаторами
format(spec_str
, sizeof(spec_str
), fmt_str
, final_size
+1);
#undef final_size
sscanf(cmdtext
[house_cmd_size
], spec_str
, param_name
, amount
); if(isnull(param_name)) // если не указан параметр
{
}
else if(strcmp(param_name
, house_param_sell
, true, house_param_sell_size
) == 0) {
if(amount == -1)
}
else if(strcmp(param_name
, house_param_enter
, true, house_param_enter_size
) == 0) {
}
else if(strcmp(param_name
, house_param_exit
, true, house_param_exit_size
) == 0) {
}
else
{
print("Такой параметр не найден."); }
return true;
}
return true;
}