Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
В этой короткой теме я расскажу о такой полезной функции, как clamp. Что делает данная функция - возвращает число в заданных пределах. Данная функция по умолчанию есть в "ядре" языка Pawn. Находится в inlcude core.inc
clamp(value, min=cellmin, max=cellmax)
value | Число, либо переменная |
min | Нижняя граница |
max | Верхняя граница |
Возвращаемые значения: функция вернет само число в неизменном виде, если оно находится между заданными пределами. Нижнюю границу, если число меньше нижней границы, и соответственно верхнюю, если наоборот.
Пока что ничего не понятно, давайте разберем на примере.
И так, представим что у нас есть команда для создания автомобиля, /car. И нам необходимо сделать проверку на ID автомобиля (400 - 611).
Мы можем сделать это при помощи обычной проверки:
C-like:
cmd:car(playerid, params[])
{
new vehicleid;
if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, -1, "Введите /car ID (400 - 611)");
if(vehicleid < 400 || vehicleid > 611) return SendClientMessage(playerid, -1, "ID авто может быть в пределах от 400 до 611");
CreateVehicle(vehicleid...
А можем при помощи функции clamp:
C-like:
cmd:car(playerid, params[])
{
new vehicleid;
if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, -1, "Введите /car ID (400 - 611)");
vehicleid = clamp(vehicleid, 400, 611);
CreateVehicle(vehicleid...
Если в vehicleid будет, например, 201 - функция вернет нижнюю границу, то есть 400.
Если в vehicleid будет число 700 - функция вернет верхнюю границу, то есть 611.
Еще пример в виде кода:
C-like:
new integer = 5;
printf("%i", clamp(integer, 1, 10)); // 5 - в пределах от 1 до 10, функция вернет 5
printf("%i", clamp(integer, 10, 20)); // 5 - ниже минимальной границы, которая равна 10. Функция вернет 10
printf("%i", clamp(integer, 1, 4)); // 5 - выше максимальной границы, которая равна 4. Функция вернет 4
Последнее редактирование: